aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2019-04-12 23:36:20 -0400
committerPaul Kehrer <paul.l.kehrer@gmail.com>2019-04-13 11:36:20 +0800
commit19db013fa66fb4eb38e105e7fd46599aad51bf30 (patch)
tree21a736a289ef16e66470f0eb9dc60cff72e00ada /src
parent020caf99a704e84217a61a99f15245edc7406239 (diff)
downloadcryptography-19db013fa66fb4eb38e105e7fd46599aad51bf30.tar.gz
cryptography-19db013fa66fb4eb38e105e7fd46599aad51bf30.tar.bz2
cryptography-19db013fa66fb4eb38e105e7fd46599aad51bf30.zip
Fixes #4830 -- handle negative serial numbers (#4843)
Diffstat (limited to 'src')
-rw-r--r--src/cryptography/hazmat/backends/openssl/backend.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py
index 74dedbe0..ee864137 100644
--- a/src/cryptography/hazmat/backends/openssl/backend.py
+++ b/src/cryptography/hazmat/backends/openssl/backend.py
@@ -334,7 +334,10 @@ class Backend(object):
bin_len = self._lib.BN_bn2bin(bn, bin_ptr)
# A zero length means the BN has value 0
self.openssl_assert(bin_len >= 0)
- return int.from_bytes(self._ffi.buffer(bin_ptr)[:bin_len], "big")
+ val = int.from_bytes(self._ffi.buffer(bin_ptr)[:bin_len], "big")
+ if self._lib.BN_is_negative(bn):
+ val = -val
+ return val
else:
# Under Python 2 the best we can do is hex()
hex_cdata = self._lib.BN_bn2hex(bn)