summaryrefslogtreecommitdiff
path: root/pipermail/pycrypto/attachments/20101227/aa13763d/attachment.htm
blob: ef2ea0726318b6c9108993a40706c25befed3d6c (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
<tt>
&lt;!DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;&quot;-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN&quot;&gt;<br>
&lt;html&gt;<br>
&nbsp;&nbsp;&lt;head&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;content=&quot;text/html;&nbsp;charset=ISO-8859-1&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http-equiv=&quot;Content-Type&quot;&gt;<br>
&nbsp;&nbsp;&lt;/head&gt;<br>
&nbsp;&nbsp;&lt;body&nbsp;text=&quot;#330033&quot;&nbsp;bgcolor=&quot;#ffffff&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;12/27/2010&nbsp;9:16&nbsp;PM,&nbsp;Thorsten&nbsp;Behrens&nbsp;wrote:&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;blockquote&nbsp;cite=&quot;mid:4D1972A2.4080305@gmx.li&quot;&nbsp;type=&quot;cite&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;pre&nbsp;wrap=&quot;&quot;&gt;If&nbsp;you&nbsp;can&nbsp;think&nbsp;of&nbsp;a&nbsp;reasonably&nbsp;clean&nbsp;way&nbsp;of&nbsp;handling&nbsp;the&nbsp;&quot;/&quot;&nbsp;vs.&nbsp;&quot;//&quot;&nbsp;<br>
issue&nbsp;-&nbsp;or&nbsp;if&nbsp;anyone&nbsp;else&nbsp;can&nbsp;-&nbsp;please&nbsp;share.<br>
<br>
Barring&nbsp;that,&nbsp;I&nbsp;think&nbsp;my&nbsp;message&nbsp;is:&nbsp;If&nbsp;Python&nbsp;3.x&nbsp;is&nbsp;to&nbsp;be&nbsp;supported&nbsp;<br>
without&nbsp;code&nbsp;duplication,&nbsp;Python&nbsp;2.1&nbsp;support&nbsp;may&nbsp;have&nbsp;to&nbsp;go.<br>
<br>
Yours<br>
<br>
Thorsten<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;if&nbsp;e&nbsp;is&nbsp;given&nbsp;make&nbsp;sure&nbsp;that&nbsp;e&nbsp;and&nbsp;X-1&nbsp;are&nbsp;coprime<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;this&nbsp;is&nbsp;not&nbsp;necessarily&nbsp;a&nbsp;strong&nbsp;prime&nbsp;criterion&nbsp;but&nbsp;useful&nbsp;when<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;creating&nbsp;them&nbsp;for&nbsp;RSA&nbsp;where&nbsp;the&nbsp;p-1&nbsp;and&nbsp;q-1&nbsp;should&nbsp;be&nbsp;coprime&nbsp;to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;the&nbsp;public&nbsp;exponent&nbsp;e<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;e&nbsp;and&nbsp;is_possible_prime:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;e&nbsp;&amp;amp;&nbsp;1:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;GCD&nbsp;(e,&nbsp;X-1)&nbsp;!=&nbsp;1:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_possible_prime&nbsp;=&nbsp;0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Python&nbsp;2.1&nbsp;does&nbsp;not&nbsp;understand&nbsp;//,&nbsp;and&nbsp;3.x&nbsp;returns&nbsp;a&nbsp;<br>
float&nbsp;on&nbsp;/<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Infinite&nbsp;loop,&nbsp;wheee!!!<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;GCD&nbsp;(e,&nbsp;(X-1)//2)&nbsp;!=&nbsp;1:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_possible_prime&nbsp;=&nbsp;0<br>
&lt;/pre&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/blockquote&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;Ugly&nbsp;hack,&nbsp;not&nbsp;sure&nbsp;if&nbsp;it&nbsp;is&nbsp;worthwhile.&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;utils.py:&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;slashslash(&nbsp;a,&nbsp;b&nbsp;):&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&nbsp;return&nbsp;a&nbsp;/&nbsp;b&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;utilsnew.py:&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;slashslash(&nbsp;a,&nbsp;b&nbsp;):&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&nbsp;return&nbsp;a&nbsp;//&nbsp;b&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;numbers.py:&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;sys.version_info[&nbsp;0&nbsp;]&nbsp;&amp;lt;=&nbsp;2&amp;nbsp;&nbsp;and&nbsp;sys.version_info[&nbsp;1&nbsp;]&nbsp;&amp;lt;=&nbsp;1:&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&nbsp;import&nbsp;utils&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;else:&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&nbsp;import&nbsp;utilsnew&nbsp;as&nbsp;utils&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;...&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&nbsp;if&nbsp;GCD&nbsp;(&nbsp;e,<br>
&nbsp;&nbsp;&nbsp;&nbsp;utils.slashslash(X-1,2)&nbsp;!=&nbsp;1:&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Not&nbsp;sure&nbsp;if&nbsp;2.1&nbsp;will&nbsp;ignore&nbsp;&quot;as&quot;&nbsp;if&nbsp;not&nbsp;executed?&amp;nbsp;&nbsp;If&nbsp;not,&nbsp;then<br>
&nbsp;&nbsp;&nbsp;&nbsp;you&nbsp;play&nbsp;the&nbsp;setup.py&nbsp;with&nbsp;a&nbsp;tiny&nbsp;file.&lt;br&gt;<br>
&nbsp;&nbsp;&lt;/body&gt;<br>
&lt;/html&gt;<br>

</tt>