summaryrefslogtreecommitdiff
path: root/paramiko/primes.py
diff options
context:
space:
mode:
authorJeff Forcier <jeff@bitprophet.org>2014-03-05 17:03:37 -0800
committerJeff Forcier <jeff@bitprophet.org>2014-03-05 17:03:37 -0800
commitb2be63ec623b5944f9b84cac8b8f41aeb2b42fb7 (patch)
tree389e17b0c08cd34872a2e3afbc34860ab44fb3ed /paramiko/primes.py
parentbd61c7c0a9a4a2020d0acfb6a01e9ec85bb43b8e (diff)
parentae078f51d622931954e47e78029a889c4e721a05 (diff)
downloadparamiko-b2be63ec623b5944f9b84cac8b8f41aeb2b42fb7.tar.gz
Merge remote-tracking branch 'scottkmaxwell/py3-support-without-py25' into python3
Conflicts: dev-requirements.txt paramiko/__init__.py paramiko/file.py paramiko/hostkeys.py paramiko/message.py paramiko/proxy.py paramiko/server.py paramiko/transport.py paramiko/util.py paramiko/win_pageant.py setup.py
Diffstat (limited to 'paramiko/primes.py')
-rw-r--r--paramiko/primes.py15
1 files changed, 7 insertions, 8 deletions
diff --git a/paramiko/primes.py b/paramiko/primes.py
index 86b9953a..34b9877e 100644
--- a/paramiko/primes.py
+++ b/paramiko/primes.py
@@ -24,6 +24,7 @@ from Crypto.Util import number
from paramiko import util
from paramiko.ssh_exception import SSHException
+from paramiko.common import *
def _generate_prime(bits, rng):
@@ -33,7 +34,7 @@ def _generate_prime(bits, rng):
# loop catches the case where we increment n into a higher bit-range
x = rng.read((bits+7) // 8)
if hbyte_mask > 0:
- x = chr(ord(x[0]) & hbyte_mask) + x[1:]
+ x = byte_mask(x[0], hbyte_mask) + x[1:]
n = util.inflate_long(x, 1)
n |= 1
n |= (1 << (bits - 1))
@@ -46,7 +47,7 @@ def _generate_prime(bits, rng):
def _roll_random(rng, n):
"returns a random # from 0 to N-1"
bits = util.bit_length(n-1)
- bytes = (bits + 7) // 8
+ byte_count = (bits + 7) // 8
hbyte_mask = pow(2, bits % 8) - 1
# so here's the plan:
@@ -56,9 +57,9 @@ def _roll_random(rng, n):
# fits, so i can't guarantee that this loop will ever finish, but the odds
# of it looping forever should be infinitesimal.
while True:
- x = rng.read(bytes)
+ x = rng.read(byte_count)
if hbyte_mask > 0:
- x = chr(ord(x[0]) & hbyte_mask) + x[1:]
+ x = byte_mask(x[0], hbyte_mask) + x[1:]
num = util.inflate_long(x, 1)
if num < n:
break
@@ -112,7 +113,7 @@ class ModulusPack (object):
:raises IOError: passed from any file operations that fail.
"""
self.pack = {}
- f = open(filename, 'r')
+ with open(filename, 'r') as f:
for line in f:
line = line.strip()
if (len(line) == 0) or (line[0] == '#'):
@@ -121,11 +122,9 @@ class ModulusPack (object):
self._parse_modulus(line)
except:
continue
- f.close()
def get_modulus(self, min, prefer, max):
- bitsizes = self.pack.keys()
- bitsizes.sort()
+ bitsizes = sorted(self.pack.keys())
if len(bitsizes) == 0:
raise SSHException('no moduli available')
good = -1