From ce02de706e4ec0a3945240096d4fd4d92478effe Mon Sep 17 00:00:00 2001 From: Andre Caron Date: Sun, 31 May 2015 23:06:53 -0400 Subject: Extends supported range for integer conversion, --- src/cryptography/hazmat/backends/openssl/backend.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py index c509ddb3..70ed25d6 100644 --- a/src/cryptography/hazmat/backends/openssl/backend.py +++ b/src/cryptography/hazmat/backends/openssl/backend.py @@ -64,8 +64,15 @@ def _encode_asn1_int(backend, x): discarded after use. """ - i = backend._lib.ASN1_INTEGER_new() - backend._lib.ASN1_INTEGER_set(i, x) + # Convert Python integer to OpenSSL "bignum" in case value exceeds + # machine's native integer limits (note: `int_to_bn` doesn't automatically + # GC). + i = backend._int_to_bn(x) + i = backend._ffi.gc(i, backend._lib.BN_free) + + # Wrap in a ASN.1 integer. Don't GC -- as documented. + i = backend._lib.BN_to_ASN1_INTEGER(i, backend._ffi.NULL) + assert i != backend._ffi.NULL return i -- cgit v1.2.3