move int_from_bytes so we can use it elsewhere
diff --git a/src/cryptography/hazmat/primitives/serialization.py b/src/cryptography/hazmat/primitives/serialization.py
index 9fbc32b..098b31d 100644
--- a/src/cryptography/hazmat/primitives/serialization.py
+++ b/src/cryptography/hazmat/primitives/serialization.py
@@ -122,8 +122,12 @@
     if len(data) != 1 + 2 * ((curve.key_size + 7) // 8):
         raise ValueError("Malformed key bytes")
 
-    x = _int_from_bytes(data[1:1 + (curve.key_size + 7) // 8], byteorder='big')
-    y = _int_from_bytes(data[1 + (curve.key_size + 7) // 8:], byteorder='big')
+    x = utils.int_from_bytes(
+        data[1:1 + (curve.key_size + 7) // 8], byteorder='big'
+    )
+    y = utils.int_from_bytes(
+        data[1 + (curve.key_size + 7) // 8:], byteorder='big'
+    )
     return ec.EllipticCurvePublicNumbers(x, y, curve).public_key(backend)
 
 
@@ -145,27 +149,9 @@
     """
     mpint_data, rest = _read_next_string(data)
 
-    return _int_from_bytes(mpint_data, byteorder='big', signed=False), rest
-
-
-if hasattr(int, "from_bytes"):
-    _int_from_bytes = int.from_bytes
-else:
-    def _int_from_bytes(data, byteorder, signed=False):
-        assert byteorder == 'big'
-        assert not signed
-
-        if len(data) % 4 != 0:
-            data = (b'\x00' * (4 - (len(data) % 4))) + data
-
-        result = 0
-
-        while len(data) > 0:
-            digit, = struct.unpack('>I', data[:4])
-            result = (result << 32) + digit
-            data = data[4:]
-
-        return result
+    return (
+        utils.int_from_bytes(mpint_data, byteorder='big', signed=False), rest
+    )
 
 
 class Encoding(Enum):
diff --git a/src/cryptography/utils.py b/src/cryptography/utils.py
index 0bf8c0e..24afe61 100644
--- a/src/cryptography/utils.py
+++ b/src/cryptography/utils.py
@@ -6,6 +6,7 @@
 
 import abc
 import inspect
+import struct
 import sys
 import warnings
 
@@ -25,6 +26,26 @@
     return register_decorator
 
 
+if hasattr(int, "from_bytes"):
+    int_from_bytes = int.from_bytes
+else:
+    def int_from_bytes(data, byteorder, signed=False):
+        assert byteorder == 'big'
+        assert not signed
+
+        if len(data) % 4 != 0:
+            data = (b'\x00' * (4 - (len(data) % 4))) + data
+
+        result = 0
+
+        while len(data) > 0:
+            digit, = struct.unpack('>I', data[:4])
+            result = (result << 32) + digit
+            data = data[4:]
+
+        return result
+
+
 class InterfaceNotImplemented(Exception):
     pass