diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-03-25 00:15:09 -0500 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-03-25 09:02:28 -0500 |
commit | 51924aa151e03d8c2adcb40c08ca5a39b566e7c5 (patch) | |
tree | ffd09a419556671eabb5ebe6f1d783ff9b63c5ed | |
parent | b6e094d475cc8456adac9e10b3095e2883dcc3ee (diff) | |
download | cryptography-51924aa151e03d8c2adcb40c08ca5a39b566e7c5.tar.gz cryptography-51924aa151e03d8c2adcb40c08ca5a39b566e7c5.tar.bz2 cryptography-51924aa151e03d8c2adcb40c08ca5a39b566e7c5.zip |
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): |