CVS: crypto/Util number.py,1.12,1.13

"A.M. Kuchling" <[email protected]> Fri, 04 Apr 2003 10:21:11 -0800
Newsgroups gmane.comp.python.cryptography.cvs
Message-ID <[email protected]>
Update of /cvsroot/pycrypto/crypto/Util
In directory sc8-pr-cvs1:/tmp/cvs-serv24745

Modified Files:
	number.py 
Log Message:
Add size() function; change assertion on output of getRandomNumber

Index: number.py
===================================================================
RCS file: /cvsroot/pycrypto/crypto/Util/number.py,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- number.py	4 Apr 2003 18:04:40 -0000	1.12
+++ number.py	4 Apr 2003 18:21:07 -0000	1.13
@@ -31,6 +31,16 @@
 ##     if type(s)!=types.StringType: return s   # Integers will be left alone
 ##     return reduce(lambda x,y : x*256+ord(y), s, 0L)
 
+def size (N):
+    """size(N:long) : int
+    Returns the size of the number N in bits.
+    """
+    bits, power = 0,1L
+    while N >= power:
+        bits += 1
+        power = power << 1
+    return bits
+
 def getRandomNumber(N, randfunc):
     """getRandomNumber(N:int, randfunc:callable):long
     Return an N-bit random number."""
@@ -42,7 +52,7 @@
         S = chr(char) + S
     value = bytes_to_long(S)
     value |= 2L ** (N-1)                # Ensure high bit is set
-    assert value >= 2L ** (N-1)
+    assert size(value) >= N
     return value
 
 def GCD(x,y):



-------------------------------------------------------
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/