CVS: crypto/PublicKey RSA.py,1.18,1.19
"A.M. Kuchling" <[email protected]> Fri, 04 Apr 2003 11:42:11 -0800
| Newsgroups | gmane.comp.python.cryptography.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/pycrypto/crypto/PublicKey
In directory sc8-pr-cvs1:/tmp/cvs-serv25762
Modified Files:
RSA.py
Log Message:
Generate RSA primes in a loop until the product is larger enough.
Index: RSA.py
===================================================================
RCS file: /cvsroot/pycrypto/crypto/PublicKey/RSA.py,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- RSA.py 4 Apr 2003 19:03:13 -0000 1.18
+++ RSA.py 4 Apr 2003 19:42:07 -0000 1.19
@@ -31,17 +31,21 @@
the progress of the key generation.
"""
obj=RSAobj()
+
# Generate the prime factors of n
if progress_func:
- progress_func('p\n')
- obj.p = pubkey.getPrime(bits/2+1, randfunc)
- if progress_func:
- progress_func('q\n')
- obj.q = pubkey.getPrime(bits/2+1, randfunc)
+ progress_func('p,q\n')
+ p = q = 1L
+ while number.size(p*q) < bits:
+ p = pubkey.getPrime(bits/2, randfunc)
+ q = pubkey.getPrime(bits/2, randfunc)
# p shall be smaller than q (for calc of u)
- if obj.p > obj.q:
- (obj.p, obj.q)=(obj.q, obj.p)
+ if p > q:
+ (p, q)=(q, p)
+ obj.p = p
+ obj.q = q
+
if progress_func:
progress_func('u\n')
obj.u = pubkey.inverse(obj.p, obj.q)
@@ -52,7 +56,7 @@
progress_func('d\n')
obj.d=pubkey.inverse(obj.e, (obj.p-1)*(obj.q-1))
- assert obj.size() >= bits, "Generated key is too small"
+ assert bits <= 1+obj.size(), "Generated key is too small"
return obj
@@ -206,11 +210,13 @@
def generate_c(bits, randfunc, progress_func = None):
# Generate the prime factors of n
if progress_func:
- progress_func('p\n')
- p=pubkey.getPrime(bits/2 + 1, randfunc)
- if progress_func:
- progress_func('q\n')
- q=pubkey.getPrime(bits/2 + 1, randfunc)
+ progress_func('p,q\n')
+
+ p = q = 1L
+ while number.size(p*q) < bits:
+ p = pubkey.getPrime(bits/2, randfunc)
+ q = pubkey.getPrime(bits/2, randfunc)
+
# p shall be smaller than q (for calc of u)
if p > q:
(p, q)=(q, p)
@@ -230,7 +236,7 @@
## print q
## print number.size(p), number.size(q), number.size(q*p),
## print obj.size(), bits
- assert obj.size() >= bits, "Generated key is too small"
+ assert bits <= 1+obj.size(), "Generated key is too small"
return obj
-------------------------------------------------------
This SF.net email is sponsored by: ValueWeb:
Dedicated Hosting for just $79/mo with 500 GB of bandwidth!
No other company gives more support or power for your dedicated server
http://click.atdmt.com/AFF/go/sdnxxaff00300020aff/direct/01/