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):