1 diff --git a/third_party/tlslite/tlslite/utils/compat.py b/third_party/tlslite/tlslite/utils/compat.py 2 index 2bcaede..db95ac1 100755 3 --- a/third_party/tlslite/tlslite/utils/compat.py 4 +++ b/third_party/tlslite/tlslite/utils/compat.py 5 @@ -51,6 +51,9 @@ if sys.version_info >= (3,0): 6 def readStdinBinary(): 7 return sys.stdin.buffer.read() 8 9 + def long(n): 10 + return n 11 + 12 else: 13 # Python 2.6 requires strings instead of bytearrays in a couple places, 14 # so we define this function so it does the conversion if needed. 15 diff --git a/third_party/tlslite/tlslite/utils/cryptomath.py b/third_party/tlslite/tlslite/utils/cryptomath.py 16 index ce56b4b..30354b2 100755 17 --- a/third_party/tlslite/tlslite/utils/cryptomath.py 18 +++ b/third_party/tlslite/tlslite/utils/cryptomath.py 19 @@ -94,7 +94,9 @@ def bytesToNumber(b): 20 byte = b[count] 21 total += multiplier * byte 22 multiplier *= 256 23 - return total 24 + # Force-cast to long to appease PyCrypto. 25 + # https://github.com/trevp/tlslite/issues/15 26 + return long(total) 27 28 def numberToByteArray(n, howManyBytes=None): 29 """Convert an integer into a bytearray, zero-pad to howManyBytes. 30 diff --git a/third_party/tlslite/tlslite/utils/pycrypto_rsakey.py b/third_party/tlslite/tlslite/utils/pycrypto_rsakey.py 31 index 3d56228..4de5436 100755 32 --- a/third_party/tlslite/tlslite/utils/pycrypto_rsakey.py 33 +++ b/third_party/tlslite/tlslite/utils/pycrypto_rsakey.py 34 @@ -26,13 +26,13 @@ if pycryptoLoaded: 35 return self.rsa.has_private() 36 37 def _rawPrivateKeyOp(self, m): 38 - s = numberToString(m, numBytes(self.n)) 39 - c = stringToNumber(self.rsa.decrypt((s,))) 40 + s = bytes(numberToByteArray(m, numBytes(self.n))) 41 + c = bytesToNumber(bytearray(self.rsa.decrypt((s,)))) 42 return c 43 44 def _rawPublicKeyOp(self, c): 45 - s = numberToString(c, numBytes(self.n)) 46 - m = stringToNumber(self.rsa.encrypt(s, None)[0]) 47 + s = bytes(numberToByteArray(c, numBytes(self.n))) 48 + m = bytesToNumber(bytearray(self.rsa.encrypt(s, None)[0])) 49 return m 50 51 def generate(bits): 52