From bb81b34c675e0bbf2b768ca408c7aeb0fa90a7da Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Sat, 27 Jun 2015 22:28:53 -0500 Subject: move int_from_bytes so we can use it elsewhere --- src/cryptography/utils.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/cryptography/utils.py') diff --git a/src/cryptography/utils.py b/src/cryptography/utils.py index 0bf8c0ea1..24afe612d 100644 --- a/src/cryptography/utils.py +++ b/src/cryptography/utils.py @@ -6,6 +6,7 @@ from __future__ import absolute_import, division, print_function import abc import inspect +import struct import sys import warnings @@ -25,6 +26,26 @@ def register_interface(iface): 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 -- cgit v1.2.1