summaryrefslogtreecommitdiff
path: root/pipermail/pycrypto/attachments/20090213/d009e7ea/attachment-0001.htm
blob: 1986b9cda47dfa034999507881da640535e5289c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<tt>
Yes,&nbsp;I&nbsp;noticed&nbsp;that,&nbsp;I&amp;#39;m&nbsp;using&nbsp;2048&nbsp;in&nbsp;production,&nbsp;and&nbsp;I&amp;#39;ll&nbsp;start&nbsp;using&nbsp;urandom&nbsp;too.&nbsp;But&nbsp;that&amp;#39;s&nbsp;not&nbsp;my&nbsp;problem,&nbsp;currently&nbsp;I&amp;#39;m&nbsp;focusing&nbsp;on&nbsp;other&nbsp;things,&nbsp;so&nbsp;I&amp;#39;ll&nbsp;just&nbsp;wait,&nbsp;meanwhile&nbsp;if&nbsp;someone&nbsp;find&nbsp;anything,&nbsp;it&amp;#39;s&nbsp;all&nbsp;good,&nbsp;otherwise&nbsp;when&nbsp;I&nbsp;need&nbsp;I&amp;#39;ll&nbsp;ask&nbsp;for&nbsp;that&nbsp;other&nbsp;RSA&nbsp;implementation.&lt;br&gt;<br>
<br>
&lt;br&gt;&lt;div&nbsp;class=&quot;gmail_quote&quot;&gt;On&nbsp;Tue,&nbsp;Feb&nbsp;10,&nbsp;2009&nbsp;at&nbsp;10:32&nbsp;PM,&nbsp;Dwayne&nbsp;C.&nbsp;Litzenberger&nbsp;&lt;span&nbsp;dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a&nbsp;href=&quot;mailto:dlitz@dlitz.net&quot;&nbsp;target=&quot;_blank&quot;&gt;dlitz@dlitz.net&lt;/a&gt;&amp;gt;&lt;/span&gt;&nbsp;wrote:&lt;br&gt;&lt;blockquote&nbsp;class=&quot;gmail_quote&quot;&nbsp;style=&quot;border-left:&nbsp;1px&nbsp;solid&nbsp;rgb(204,&nbsp;204,&nbsp;204);&nbsp;margin:&nbsp;0pt&nbsp;0pt&nbsp;0pt&nbsp;0.8ex;&nbsp;padding-left:&nbsp;1ex;&quot;&gt;<br>
<br>
On&nbsp;Mon,&nbsp;Feb&nbsp;09,&nbsp;2009&nbsp;at&nbsp;10:36:40AM&nbsp;-0200,&nbsp;Mauricio&nbsp;Arozi&nbsp;wrote:&lt;br&gt;<br>
&amp;gt;Am&nbsp;I&nbsp;helpless?&lt;br&gt;<br>
&lt;br&gt;<br>
I&nbsp;think&nbsp;the&nbsp;problem&nbsp;is&nbsp;that&nbsp;you&amp;#39;re&nbsp;asking&nbsp;the&nbsp;mailing&nbsp;list&nbsp;for&nbsp;the&nbsp;*Python*&lt;br&gt;<br>
Cryptography&nbsp;Toolkit&nbsp;about&nbsp;how&nbsp;to&nbsp;use&nbsp;an&nbsp;obscure&nbsp;*PHP*&nbsp;library.&lt;br&gt;<br>
&lt;br&gt;<br>
We&nbsp;can&nbsp;help&nbsp;with&nbsp;the&nbsp;Python&nbsp;side&nbsp;of&nbsp;things.&nbsp;&amp;nbsp;I&nbsp;wouldn&amp;#39;t&nbsp;expect&nbsp;the&nbsp;people&lt;br&gt;<br>
here&nbsp;to&nbsp;know&nbsp;and/or&nbsp;care&nbsp;much&nbsp;about&nbsp;PHP.&lt;br&gt;<br>
&lt;div&gt;&lt;br&gt;<br>
&amp;gt;&nbsp;According&nbsp;to&nbsp;this&nbsp;site:&nbsp;&lt;a&nbsp;href=&quot;http://pajhome.org.uk/crypt/rsa/rsa.html&quot;&nbsp;target=&quot;_blank&quot;&gt;http://pajhome.org.uk/crypt/rsa/rsa.html&lt;/a&gt;,&nbsp;and&lt;br&gt;<br>
&amp;gt;&nbsp;yet&nbsp;others,&nbsp;the&nbsp;e(exponent?)&nbsp;is&nbsp;used&nbsp;for&nbsp;the&nbsp;public&nbsp;key,&nbsp;and&nbsp;d&nbsp;for&nbsp;the&lt;br&gt;<br>
&amp;gt;&nbsp;private&nbsp;key.&lt;br&gt;<br>
&lt;br&gt;<br>
&lt;/div&gt;The&nbsp;notation&nbsp;I&amp;#39;ve&nbsp;seen&nbsp;most&nbsp;often&nbsp;is&nbsp;something&nbsp;like&nbsp;this:&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;n&nbsp;-&nbsp;modulus&nbsp;(public)&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;e&nbsp;-&nbsp;public&nbsp;exponent&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;d&nbsp;-&nbsp;private&nbsp;exponent&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;(n,&nbsp;e)&nbsp;-&nbsp;public&nbsp;key&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;(n,&nbsp;d)&nbsp;-&nbsp;private&nbsp;key&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;(p,&nbsp;q)&nbsp;-&nbsp;the&nbsp;(private)&nbsp;primes&nbsp;from&nbsp;which&nbsp;the&nbsp;keypair&nbsp;is&nbsp;derived.&lt;br&gt;<br>
&lt;br&gt;<br>
PyCrypto&nbsp;uses&nbsp;a&nbsp;similar&nbsp;notation:&lt;br&gt;<br>
&lt;div&gt;&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;from&nbsp;Crypto.PublicKey&nbsp;import&nbsp;RSA&lt;br&gt;<br>
&lt;/div&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;import&nbsp;os&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;#&nbsp;DO&nbsp;NOT&nbsp;USE&nbsp;RandomPool&nbsp;(see&nbsp;below)&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;keypair&nbsp;=&nbsp;RSA.generate(2048,&nbsp;os.urandom)&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;PRIVATE&nbsp;KEYPAIR:&amp;quot;&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;n:&amp;quot;,&nbsp;keypair.n&nbsp;&amp;nbsp;&nbsp;#&nbsp;modulus&nbsp;(public)&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;e:&amp;quot;,&nbsp;keypair.e&nbsp;&amp;nbsp;&nbsp;#&nbsp;public&nbsp;exponent&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;d:&amp;quot;,&nbsp;keypair.d&nbsp;&amp;nbsp;&nbsp;#&nbsp;private&nbsp;exponent&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;p:&amp;quot;,&nbsp;keypair.p&nbsp;&amp;nbsp;&nbsp;#&nbsp;prime&nbsp;(private)&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;q:&amp;quot;,&nbsp;keypair.q&nbsp;&amp;nbsp;&nbsp;#&nbsp;other&nbsp;prime&nbsp;(private)&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;u:&amp;quot;,&nbsp;keypair.u&nbsp;&amp;nbsp;&nbsp;#&nbsp;I&nbsp;forget&nbsp;what&nbsp;this&nbsp;for&nbsp;(but&nbsp;it&amp;#39;s&nbsp;private)&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;pub&nbsp;=&nbsp;keypair.publickey()&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;&amp;quot;&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;PUBLIC&nbsp;KEY:&amp;quot;&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;n&nbsp;(pub):&amp;quot;,&nbsp;pub.n&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;#&nbsp;modulus&nbsp;(public)&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;e&nbsp;(pub):&amp;quot;,&nbsp;pub.e&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;#&nbsp;public&nbsp;exponent&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;d&nbsp;(pub):&amp;quot;,&nbsp;pub.d&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;#&nbsp;raises&nbsp;an&nbsp;exception&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;p&nbsp;(pub):&amp;quot;,&nbsp;pub.p&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;#&nbsp;raises&nbsp;an&nbsp;exception&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;q&nbsp;(pub):&amp;quot;,&nbsp;pub.q&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;#&nbsp;raises&nbsp;an&nbsp;exception&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;u&nbsp;(pub):&amp;quot;,&nbsp;pub.u&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;#&nbsp;raises&nbsp;an&nbsp;exception&lt;br&gt;<br>
&lt;br&gt;<br>
This&nbsp;outputs&nbsp;the&nbsp;following:&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;PRIVATE&nbsp;KEYPAIR:&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;n:&nbsp;277...[truncated]&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;e:&nbsp;65537&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;d:&nbsp;232...[truncated]&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;p:&nbsp;159...[truncated]&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;q:&nbsp;174...[truncated]&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;u:&nbsp;125...[truncated]&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;PUBLIC&nbsp;KEY:&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;n&nbsp;(pub):&nbsp;277...[truncated]&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;e&nbsp;(pub):&nbsp;65537&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;d&nbsp;(pub):&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;Traceback&nbsp;(most&nbsp;recent&nbsp;call&nbsp;last):&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;File&nbsp;&amp;quot;x.py&amp;quot;,&nbsp;line&nbsp;21,&nbsp;in&nbsp;?&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;print&nbsp;&amp;quot;d&nbsp;(pub):&amp;quot;,&nbsp;pub.d&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;File&nbsp;&amp;quot;/usr/lib/python2.4/site-packages/Crypto/PublicKey/RSA.py&amp;quot;,&nbsp;line&nbsp;154,&nbsp;in&nbsp;__getattr__&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;return&nbsp;getattr(self.key,&nbsp;attr)&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;AttributeError:&nbsp;rsaKey&nbsp;instance&nbsp;has&nbsp;no&nbsp;attribute&nbsp;&amp;#39;d&amp;#39;&lt;br&gt;<br>
&lt;div&gt;&lt;br&gt;<br>
&amp;gt;&nbsp;My&nbsp;problem&nbsp;is&nbsp;that&nbsp;while&nbsp;using&nbsp;PyCrypto&nbsp;to&nbsp;generate&nbsp;both&nbsp;public&nbsp;and&lt;br&gt;<br>
&amp;gt;&nbsp;private&nbsp;keys,&nbsp;the&nbsp;e(exponent?)&nbsp;is&nbsp;always&nbsp;the&nbsp;same.&lt;br&gt;<br>
&lt;br&gt;<br>
&lt;/div&gt;Mads&nbsp;Kiilerich&nbsp;already&nbsp;talked&nbsp;a&nbsp;bit&nbsp;about&nbsp;this,&nbsp;but&nbsp;I&nbsp;won&amp;#39;t&nbsp;go&nbsp;into&nbsp;detail.&lt;br&gt;<br>
What&nbsp;you&amp;#39;re&nbsp;describing&nbsp;here&nbsp;is&nbsp;normal,&nbsp;and&nbsp;it&nbsp;really&nbsp;helps&nbsp;improve&nbsp;the&lt;br&gt;<br>
performance&nbsp;of&nbsp;encryption/verification.&lt;br&gt;<br>
&lt;br&gt;<br>
If&nbsp;you&amp;#39;re&nbsp;concerned&nbsp;about&nbsp;the&nbsp;security&nbsp;of&nbsp;using&nbsp;RSA,&nbsp;I&nbsp;suggest&nbsp;reading&nbsp;Dan&lt;br&gt;<br>
Boneh&amp;#39;s&nbsp;1999&nbsp;article,&nbsp;&amp;quot;Twenty&nbsp;years&nbsp;of&nbsp;attacks&nbsp;on&nbsp;the&nbsp;RSA&nbsp;cryptosystem&amp;quot;:&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&lt;a&nbsp;href=&quot;http://crypto.stanford.edu/%7Edabo/abstracts/RSAattack-survey.html&quot;&nbsp;target=&quot;_blank&quot;&gt;http://crypto.stanford.edu/~dabo/abstracts/RSAattack-survey.html&lt;/a&gt;&lt;br&gt;<br>
&lt;div&gt;&lt;br&gt;<br>
&amp;gt;So&nbsp;in&nbsp;simple&nbsp;words,&nbsp;I&nbsp;only&nbsp;need&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;encrypt/decrypt&nbsp;sign&nbsp;and&lt;br&gt;<br>
&amp;gt;verify&nbsp;signs&nbsp;on&nbsp;php&nbsp;and&nbsp;python,&nbsp;simultaneously,&nbsp;if&nbsp;possible,&nbsp;using&nbsp;RSA&lt;br&gt;<br>
&amp;gt;algo.&lt;br&gt;<br>
&lt;br&gt;<br>
&lt;/div&gt;PyCrypto&amp;#39;s&nbsp;PublicKey&nbsp;package&nbsp;is&nbsp;very&nbsp;low-level,&nbsp;so&nbsp;people&nbsp;shouldn&amp;#39;t&nbsp;use&nbsp;it&lt;br&gt;<br>
directly&nbsp;unless&nbsp;they&nbsp;REALLY&nbsp;know&nbsp;what&nbsp;they&nbsp;are&nbsp;doing.&nbsp;&amp;nbsp;Mere&nbsp;mortals&nbsp;should&lt;br&gt;<br>
use&nbsp;a&nbsp;separate&nbsp;library&nbsp;in&nbsp;addition&nbsp;to&nbsp;PyCrypto&nbsp;for&nbsp;that.&nbsp;&amp;nbsp;You&nbsp;should&nbsp;never&lt;br&gt;<br>
do&nbsp;anything&nbsp;like&nbsp;this:&lt;br&gt;<br>
&lt;div&gt;&lt;br&gt;<br>
&amp;gt;privkeyA&nbsp;=&nbsp;RSA.generate(512,&nbsp;rpool.get_bytes)&lt;br&gt;<br>
&amp;gt;pubkeyA&nbsp;=&nbsp;privkeyA.publickey()&lt;br&gt;<br>
&amp;gt;&lt;br&gt;<br>
&amp;gt;msg&nbsp;=&nbsp;&amp;#39;This&nbsp;is&nbsp;the&nbsp;secret&nbsp;phrase&nbsp;testing.&amp;#39;&lt;br&gt;<br>
&amp;gt;msgc&nbsp;=&nbsp;pubkeyA.encrypt(msg,&nbsp;&amp;#39;&amp;#39;)&lt;br&gt;<br>
&lt;br&gt;<br>
&lt;/div&gt;That&nbsp;is&nbsp;called&nbsp;&amp;quot;textbook&nbsp;RSA&amp;quot;,&nbsp;and&nbsp;it&amp;#39;s&nbsp;insecure.&nbsp;&amp;nbsp;(Also,&nbsp;it&nbsp;uses&nbsp;a&nbsp;512-bit&lt;br&gt;<br>
key,&nbsp;which&nbsp;is&nbsp;way&nbsp;too&nbsp;short,&nbsp;but&nbsp;I&nbsp;assume&nbsp;that&amp;#39;s&nbsp;just&nbsp;for&nbsp;demonstration.)&lt;br&gt;<br>
I&nbsp;strongly&nbsp;recommend&nbsp;looking&nbsp;at&nbsp;PKCS#1v2&nbsp;(also&nbsp;known&nbsp;as&nbsp;RSAES-OAEP).&lt;br&gt;<br>
PyCrypto&nbsp;doesn&amp;#39;t&nbsp;include&nbsp;an&nbsp;implementation&nbsp;yet,&nbsp;but&nbsp;Sergey&nbsp;Chernov&lt;br&gt;<br>
mentioned&nbsp;that&nbsp;he&nbsp;is&nbsp;working&nbsp;on&nbsp;one.&lt;br&gt;<br>
&lt;br&gt;<br>
Also,&nbsp;I&nbsp;noticed&nbsp;in&nbsp;your&nbsp;code&nbsp;that&nbsp;you&nbsp;used&nbsp;RandomPool.&nbsp;&amp;nbsp;Don&amp;#39;t.&nbsp;&amp;nbsp;RandomPool&lt;br&gt;<br>
is&nbsp;a&nbsp;security&nbsp;disaster,&nbsp;and&nbsp;it&nbsp;will&nbsp;be&nbsp;removed&nbsp;from&nbsp;future&nbsp;versions.&nbsp;&amp;nbsp;See&lt;br&gt;<br>
the&nbsp;following&nbsp;messages:&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&lt;a&nbsp;href=&quot;http://lists.dlitz.net/pipermail/pycrypto/2008q3/000000.html&quot;&nbsp;target=&quot;_blank&quot;&gt;http://lists.dlitz.net/pipermail/pycrypto/2008q3/000000.html&lt;/a&gt;&lt;br&gt;<br>
&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&lt;a&nbsp;href=&quot;http://lists.dlitz.net/pipermail/pycrypto/2008q3/000020.html&quot;&nbsp;target=&quot;_blank&quot;&gt;http://lists.dlitz.net/pipermail/pycrypto/2008q3/000020.html&lt;/a&gt;&lt;br&gt;<br>
&lt;br&gt;<br>
I&nbsp;hope&nbsp;you&nbsp;find&nbsp;the&nbsp;above&nbsp;information&nbsp;helpful.&lt;br&gt;<br>
&lt;br&gt;<br>
Cheers,&lt;br&gt;<br>
&nbsp;&amp;nbsp;-&nbsp;Dwayne&lt;br&gt;<br>
&lt;font&nbsp;color=&quot;#888888&quot;&gt;&lt;br&gt;<br>
--&lt;br&gt;<br>
Dwayne&nbsp;C.&nbsp;Litzenberger&nbsp;&amp;lt;&lt;a&nbsp;href=&quot;mailto:dlitz@dlitz.net&quot;&nbsp;target=&quot;_blank&quot;&gt;dlitz@dlitz.net&lt;/a&gt;&amp;gt;&lt;br&gt;<br>
&nbsp;&amp;nbsp;Key-signing&nbsp;key&nbsp;&amp;nbsp;&nbsp;-&nbsp;19E1&nbsp;1FE8&nbsp;B3CF&nbsp;F273&nbsp;ED17&nbsp;&amp;nbsp;4A24&nbsp;928C&nbsp;EC13&nbsp;39C2&nbsp;5CF7&lt;br&gt;<br>
&nbsp;&amp;nbsp;Annual&nbsp;key&nbsp;(2008)&nbsp;-&nbsp;4B2A&nbsp;FD82&nbsp;FC7D&nbsp;9E38&nbsp;38D9&nbsp;&amp;nbsp;179F&nbsp;1C11&nbsp;B877&nbsp;E780&nbsp;4B45&lt;br&gt;<br>
&lt;/font&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;_______________________________________________&lt;br&gt;<br>
pycrypto&nbsp;mailing&nbsp;list&lt;br&gt;<br>
&lt;a&nbsp;href=&quot;mailto:pycrypto@lists.dlitz.net&quot;&nbsp;target=&quot;_blank&quot;&gt;pycrypto@lists.dlitz.net&lt;/a&gt;&lt;br&gt;<br>
&lt;a&nbsp;href=&quot;http://lists.dlitz.net/cgi-bin/mailman/listinfo/pycrypto&quot;&nbsp;target=&quot;_blank&quot;&gt;http://lists.dlitz.net/cgi-bin/mailman/listinfo/pycrypto&lt;/a&gt;&lt;br&gt;<br>
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;<br>

</tt>