From be1368f3748b00f17c1f4e4009a5eadaae9acbaa Mon Sep 17 00:00:00 2001 From: William Grant Date: Sat, 19 Mar 2011 18:52:35 +1100 Subject: [PATCH] Make str2int/int2str work with bytes. --- dkim/crypto.py | 9 +++++---- dkim/tests/test_crypto.py | 6 +++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/dkim/crypto.py b/dkim/crypto.py index 53d0f33..9c00a6a 100644 --- a/dkim/crypto.py +++ b/dkim/crypto.py @@ -180,9 +180,10 @@ def str2int(s): @param s: byte string representing a positive integer to convert @return: converted integer """ + s = bytearray(s) r = 0 for c in s: - r = (r << 8) | ord(c) + r = (r << 8) | c return r @@ -195,15 +196,15 @@ def int2str(n, length=-1): specified """ assert n >= 0 - r = [] + r = bytearray() while length < 0 or len(r) < length: - r.append(chr(n & 0xff)) + r.append(n & 0xff) n >>= 8 if length < 0 and n == 0: break r.reverse() assert length < 0 or len(r) == length - return ''.join(r) + return r def perform_rsa(message, exponent, modulus, mlen): diff --git a/dkim/tests/test_crypto.py b/dkim/tests/test_crypto.py index 6a5d093..e5686ec 100644 --- a/dkim/tests/test_crypto.py +++ b/dkim/tests/test_crypto.py @@ -55,13 +55,13 @@ TEST_KEY_PRIVATE_EXPONENT = int( class TestStrIntConversion(unittest.TestCase): def test_str2int(self): - self.assertEquals(1234, str2int('\x04\xd2')) + self.assertEquals(1234, str2int(b'\x04\xd2')) def test_int2str(self): - self.assertEquals('\x04\xd2', int2str(1234)) + self.assertEquals(b'\x04\xd2', int2str(1234)) def test_int2str_with_length(self): - self.assertEquals('\x00\x00\x04\xd2', int2str(1234, 4)) + self.assertEquals(b'\x00\x00\x04\xd2', int2str(1234, 4)) def test_int2str_fails_on_negative(self): self.assertRaises(AssertionError, int2str, -1)