summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rsa/parallel.py5
-rw-r--r--rsa/prime.py5
-rw-r--r--rsa/randnum.py13
3 files changed, 15 insertions, 8 deletions
diff --git a/rsa/parallel.py b/rsa/parallel.py
index 0efab11..8534d72 100644
--- a/rsa/parallel.py
+++ b/rsa/parallel.py
@@ -34,10 +34,7 @@ import rsa.randnum
def _find_prime(nbits, pipe):
while True:
- integer = rsa.randnum.read_random_int(nbits)
-
- # Make sure it's odd
- integer |= 1
+ integer = rsa.randnum.read_random_odd_int(nbits)
# Test for primeness
if rsa.prime.is_prime(integer):
diff --git a/rsa/prime.py b/rsa/prime.py
index 4f52b85..85cb048 100644
--- a/rsa/prime.py
+++ b/rsa/prime.py
@@ -129,10 +129,7 @@ def getprime(nbits):
"""
while True:
- integer = rsa.randnum.read_random_int(nbits)
-
- # Make sure it's odd
- integer |= 1
+ integer = rsa.randnum.read_random_odd_int(nbits)
# Test for primeness
if is_prime(integer):
diff --git a/rsa/randnum.py b/rsa/randnum.py
index 12a6757..3c788a5 100644
--- a/rsa/randnum.py
+++ b/rsa/randnum.py
@@ -59,6 +59,19 @@ def read_random_int(nbits):
return value
+def read_random_odd_int(nbits):
+ """Reads a random odd integer of approximately nbits bits.
+
+ >>> read_random_odd_int(512) & 1
+ 1
+ """
+
+ value = read_random_int(nbits)
+
+ # Make sure it's odd
+ return value | 1
+
+
def randint(maxvalue):
"""Returns a random integer x with 1 <= x <= maxvalue