I am looking for any way to do this on google app engine using any python library.  Do you have any ideas on that?<div><br></div><div>-Tim<br><br><div class="gmail_quote">On Tue, Aug 18, 2009 at 8:26 PM, Dwayne C. Litzenberger <span dir="ltr">&lt;<a href="mailto:dlitz@dlitz.net">dlitz@dlitz.net</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On Tue, Aug 18, 2009 at 06:07:53PM -0700, William Heath wrote:<br>
&gt;I generated a private key with:<br>
&gt;<br>
&gt;   openssl.exe req -x509 -nodes -days 365 -newkey rsa:1024 -keyout<br>
&gt;sdgidfedapp11.corp.intuit.net.key -out sdgidfedapp11.corp.intuit.net.crt<br>
&gt;<br>
&gt;I can&#39;t figure out is how to use PyCrypto.RSA.construct with it<br>
&gt;to decrypt something.<br>
</div>[snip]<br>
<div class="im">&gt;I am sure there is a way to do this with PyCrypto, anyone know how to do it?<br>
<br>
</div>I am not aware of any simple way to do what you ask without using a<br>
separate library.  PKCS#1 and X.509 are not implemented in PyCrypto, and as<br>
far as I understand, you would need both to do anything useful with such a<br>
key.<br>
<br>
At this time, PyCrypto&#39;s API for RSA is somewhat confusing: It only<br>
implements textbook RSA, so it&#39;s not really useful for anyone except other<br>
crypto library developers (e.g. Paramiko, Twisted, etc.).  You might be<br>
able to use OpenSSL to generate hex values for each of the parameters, then<br>
parse the results and feed them to RSA.construct yourself using something<br>
like this:<br>
<br>
     openssl rsa -text -in sdgidfedapp11.corp.intuit.net.key<br>
<br>
However, since PyCrypto lacks PKCS#1 support, if you aren&#39;t careful or if<br>
you don&#39;t know exactly what you are doing, you will probably expose your<br>
private key to compromise.<br>
<br>
If you want to do practical public-key work with X.509 today, you might<br>
want to check out other libraries like pycryptopp, Google Key Czar, and<br>
M2Crypto.  Also, Paramiko (which depends on PyCrypto) might support at<br>
least reading those files, since IIRC they&#39;re also used for SSH private<br>
keys.<br>
<br>
Please do remember that PyCrypto&#39;s current RSA functions are insecure if<br>
used directly.  I would like to introduce a simple public key API at some<br>
point, but right now it doesn&#39;t exist.<br>
<br>
If you&#39;re doing any low-level work with RSA, you should at minimum, read<br>
and understand this overview paper:<br>
<br>
     <a href="http://www.cs.bgu.ac.il/~beimel/Courses/crypto/Boneh.pdf" target="_blank">http://www.cs.bgu.ac.il/~beimel/Courses/crypto/Boneh.pdf</a><br>
<br>
Also, as a side note, 1024-bit RSA keys are a little on the short side<br>
today.  I would recommend nothing less than 2048 bits:<br>
<br>
     <a href="http://www.google.com/search?q=1024-bit+RSA" target="_blank">http://www.google.com/search?q=1024-bit+RSA</a><br>
<br>
Hope that helps.<br>
<br>
Cheers,<br>
- Dwayne<br>
<font color="#888888"><br>
--<br>
Dwayne C. Litzenberger &lt;<a href="mailto:dlitz@dlitz.net">dlitz@dlitz.net</a>&gt;<br>
  Key-signing key   - 19E1 1FE8 B3CF F273 ED17  4A24 928C EC13 39C2 5CF7<br>
_______________________________________________<br>
pycrypto mailing list<br>
<a href="mailto:pycrypto@lists.dlitz.net">pycrypto@lists.dlitz.net</a><br>
<a href="http://lists.dlitz.net/cgi-bin/mailman/listinfo/pycrypto" target="_blank">http://lists.dlitz.net/cgi-bin/mailman/listinfo/pycrypto</a><br>
</font></blockquote></div><br></div>