diff options
author | Alex Stapleton <alexs@prol.etari.at> | 2015-03-25 15:38:55 +0000 |
---|---|---|
committer | Alex Stapleton <alexs@prol.etari.at> | 2015-03-25 15:38:55 +0000 |
commit | 44a838ce65f79d6432640ab32e12cd8781c94912 (patch) | |
tree | 1d9773f42cf67ea089c53c0d4fe4f1bedb1fd62c | |
parent | 92dd70b2c21dd0392f01438488a833221d16a611 (diff) | |
parent | 51924aa151e03d8c2adcb40c08ca5a39b566e7c5 (diff) | |
download | cryptography-44a838ce65f79d6432640ab32e12cd8781c94912.tar.gz cryptography-44a838ce65f79d6432640ab32e12cd8781c94912.tar.bz2 cryptography-44a838ce65f79d6432640ab32e12cd8781c94912.zip |
Merge pull request #1780 from reaperhulk/allow-zero-bn
allow zero value bn using _bn_to_int in the openssl backend
-rw-r--r-- | src/cryptography/hazmat/backends/openssl/backend.py | 3 | ||||
-rw-r--r-- | tests/hazmat/backends/test_openssl.py | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py index 59503bd9..60aa4531 100644 --- a/src/cryptography/hazmat/backends/openssl/backend.py +++ b/src/cryptography/hazmat/backends/openssl/backend.py @@ -327,7 +327,8 @@ class Backend(object): bn_num_bytes = (self._lib.BN_num_bits(bn) + 7) // 8 bin_ptr = self._ffi.new("unsigned char[]", bn_num_bytes) bin_len = self._lib.BN_bn2bin(bn, bin_ptr) - assert bin_len > 0 + # A zero length means the BN has value 0 + assert bin_len >= 0 assert bin_ptr != self._ffi.NULL return int.from_bytes(self._ffi.buffer(bin_ptr)[:bin_len], "big") diff --git a/tests/hazmat/backends/test_openssl.py b/tests/hazmat/backends/test_openssl.py index 73316f8a..867c5dd6 100644 --- a/tests/hazmat/backends/test_openssl.py +++ b/tests/hazmat/backends/test_openssl.py @@ -210,6 +210,10 @@ class TestOpenSSL(object): assert bn == bn_ptr assert backend._bn_to_int(bn_ptr) == value + def test_bn_to_int(self): + bn = backend._int_to_bn(0) + assert backend._bn_to_int(bn) == 0 + class TestOpenSSLRandomEngine(object): def teardown_method(self, method): |