blob: 923c1d4d6b0ae5b67d4283ed5cf120237ac0676e [file] [log] [blame]
diff --git a/third_party/tlslite/tlslite/utils/compat.py b/third_party/tlslite/tlslite/utils/compat.py
index 2bcaede..db95ac1 100755
--- a/third_party/tlslite/tlslite/utils/compat.py
+++ b/third_party/tlslite/tlslite/utils/compat.py
@@ -51,6 +51,9 @@ if sys.version_info >= (3,0):
def readStdinBinary():
return sys.stdin.buffer.read()
+ def long(n):
+ return n
+
else:
# Python 2.6 requires strings instead of bytearrays in a couple places,
# so we define this function so it does the conversion if needed.
diff --git a/third_party/tlslite/tlslite/utils/cryptomath.py b/third_party/tlslite/tlslite/utils/cryptomath.py
index ce56b4b..30354b2 100755
--- a/third_party/tlslite/tlslite/utils/cryptomath.py
+++ b/third_party/tlslite/tlslite/utils/cryptomath.py
@@ -94,7 +94,9 @@ def bytesToNumber(b):
byte = b[count]
total += multiplier * byte
multiplier *= 256
- return total
+ # Force-cast to long to appease PyCrypto.
+ # https://github.com/trevp/tlslite/issues/15
+ return long(total)
def numberToByteArray(n, howManyBytes=None):
"""Convert an integer into a bytearray, zero-pad to howManyBytes.
diff --git a/third_party/tlslite/tlslite/utils/pycrypto_rsakey.py b/third_party/tlslite/tlslite/utils/pycrypto_rsakey.py
index 3d56228..4de5436 100755
--- a/third_party/tlslite/tlslite/utils/pycrypto_rsakey.py
+++ b/third_party/tlslite/tlslite/utils/pycrypto_rsakey.py
@@ -26,13 +26,13 @@ if pycryptoLoaded:
return self.rsa.has_private()
def _rawPrivateKeyOp(self, m):
- s = numberToString(m, numBytes(self.n))
- c = stringToNumber(self.rsa.decrypt((s,)))
+ s = bytes(numberToByteArray(m, numBytes(self.n)))
+ c = bytesToNumber(bytearray(self.rsa.decrypt((s,))))
return c
def _rawPublicKeyOp(self, c):
- s = numberToString(c, numBytes(self.n))
- m = stringToNumber(self.rsa.encrypt(s, None)[0])
+ s = bytes(numberToByteArray(c, numBytes(self.n)))
+ m = bytesToNumber(bytearray(self.rsa.encrypt(s, None)[0]))
return m
def generate(bits):