summaryrefslogtreecommitdiff
path: root/rsa/transform.py
diff options
context:
space:
mode:
authorYesudeep Mangalapilly <yesudeep@gmail.com>2011-08-11 02:38:13 +0530
committerYesudeep Mangalapilly <yesudeep@gmail.com>2011-08-11 02:38:13 +0530
commit2eeea2ca19fdea9f354bbec685e168fee370d19f (patch)
treed780c2c3d49075c3c26ce587c17e5b1c9921f5b0 /rsa/transform.py
parent0a0116f248a79b404be02689498889e21b0b7dde (diff)
downloadrsa-2eeea2ca19fdea9f354bbec685e168fee370d19f.tar.gz
Porting to Python 3 complete. All tests except pyasn1 stuff pass.
Diffstat (limited to 'rsa/transform.py')
-rw-r--r--rsa/transform.py22
1 files changed, 12 insertions, 10 deletions
diff --git a/rsa/transform.py b/rsa/transform.py
index 2778729..57629ec 100644
--- a/rsa/transform.py
+++ b/rsa/transform.py
@@ -19,12 +19,13 @@
From bytes to a number, number to bytes, etc.
'''
-import types
import binascii
from rsa import common
+from rsa._compat import byte, is_integer, b
-def bytes2int(bytes):
+
+def bytes2int(raw_bytes):
r"""Converts a list of bytes or an 8-bit string to an integer.
When using unicode strings, encode it to some encoding like UTF8 first.
@@ -36,7 +37,8 @@ def bytes2int(bytes):
"""
- return int(binascii.hexlify(bytes), 16)
+ return int(binascii.hexlify(raw_bytes), 16)
+
def int2bytes(number, block_size=None):
r'''Converts a number to a string of bytes.
@@ -68,9 +70,9 @@ def int2bytes(number, block_size=None):
'''
# Type checking
- if type(number) not in (types.LongType, types.IntType):
+ if not is_integer(number):
raise TypeError("You must pass an integer for 'number', not %s" %
- number.__class__)
+ type(number).__name__)
if number < 0:
raise ValueError('Negative numbers cannot be used: %i' % number)
@@ -83,18 +85,18 @@ def int2bytes(number, block_size=None):
'is %i' % (needed_bytes, block_size))
# Convert the number to bytes.
- bytes = []
+ raw_bytes = []
while number > 0:
- bytes.insert(0, chr(number & 0xFF))
+ raw_bytes.insert(0, byte(number & 0xFF))
number >>= 8
# Pad with zeroes to fill the block
if block_size is not None:
- padding = (block_size - needed_bytes) * '\x00'
+ padding = (block_size - needed_bytes) * b('\x00')
else:
- padding = ''
+ padding = b('')
- return padding + ''.join(bytes)
+ return padding + b('').join(raw_bytes)
if __name__ == '__main__':