aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndre Caron <andre.l.caron@gmail.com>2015-05-31 23:06:53 -0400
committerIan Cordasco <graffatcolmingov@gmail.com>2015-06-24 13:35:49 -0500
commitce02de706e4ec0a3945240096d4fd4d92478effe (patch)
treeb63667569bbbdda255c208deadfd10fce5d99981 /src
parentdafd5c28b9d512547be1018db08b2d3a815a76b4 (diff)
downloadcryptography-ce02de706e4ec0a3945240096d4fd4d92478effe.tar.gz
cryptography-ce02de706e4ec0a3945240096d4fd4d92478effe.tar.bz2
cryptography-ce02de706e4ec0a3945240096d4fd4d92478effe.zip
Extends supported range for integer conversion,
Diffstat (limited to 'src')
-rw-r--r--src/cryptography/hazmat/backends/openssl/backend.py11
1 files 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