From eba67506bb813f900c102fe62bb9bc01acfb53d6 Mon Sep 17 00:00:00 2001 From: Ofek Lev Date: Wed, 5 Apr 2017 19:48:04 -0400 Subject: minor int_to_bytes performance increase (#3490) * minor int_to_bytes performance increase * why is Python 2.6 supported anyway... * keep py2k version --- src/cryptography/utils.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/cryptography/utils.py b/src/cryptography/utils.py index ab3c84e1..6d304856 100644 --- a/src/cryptography/utils.py +++ b/src/cryptography/utils.py @@ -51,13 +51,19 @@ else: return int(bytes(data).encode('hex'), 16) -def int_to_bytes(integer, length=None): - hex_string = '%x' % integer - if length is None: - n = len(hex_string) - else: - n = length * 2 - return binascii.unhexlify(hex_string.zfill(n + (n & 1))) +if hasattr(int, "to_bytes"): + def int_to_bytes(integer, length=None): + return integer.to_bytes( + length or (integer.bit_length() + 7) // 8 or 1, 'big' + ) +else: + def int_to_bytes(integer, length=None): + hex_string = '%x' % integer + if length is None: + n = len(hex_string) + else: + n = length * 2 + return binascii.unhexlify(hex_string.zfill(n + (n & 1))) class InterfaceNotImplemented(Exception): -- cgit v1.2.3