diff options
-rw-r--r-- | cryptography/hazmat/bindings/openssl/backend.py | 4 | ||||
-rw-r--r-- | tests/hazmat/bindings/test_openssl.py | 23 |
2 files changed, 26 insertions, 1 deletions
diff --git a/cryptography/hazmat/bindings/openssl/backend.py b/cryptography/hazmat/bindings/openssl/backend.py index 7367818a..ea1073b9 100644 --- a/cryptography/hazmat/bindings/openssl/backend.py +++ b/cryptography/hazmat/bindings/openssl/backend.py @@ -147,7 +147,9 @@ class _CipherContext(object): raise UnsupportedAlgorithm evp_cipher = adapter(self._backend, cipher, mode) - assert evp_cipher != self._backend.ffi.NULL + if evp_cipher == self._backend.ffi.NULL: + raise UnsupportedAlgorithm + if isinstance(mode, interfaces.ModeWithInitializationVector): iv_nonce = mode.initialization_vector elif isinstance(mode, interfaces.ModeWithNonce): diff --git a/tests/hazmat/bindings/test_openssl.py b/tests/hazmat/bindings/test_openssl.py index fb01c10a..f283a7dd 100644 --- a/tests/hazmat/bindings/test_openssl.py +++ b/tests/hazmat/bindings/test_openssl.py @@ -13,11 +13,21 @@ import pytest +from cryptography.exceptions import UnsupportedAlgorithm from cryptography.hazmat.bindings.openssl.backend import backend, Backend +from cryptography.hazmat.primitives.block import BlockCipher from cryptography.hazmat.primitives.block.ciphers import AES from cryptography.hazmat.primitives.block.modes import CBC +class FakeMode(object): + pass + + +class FakeCipher(object): + pass + + class TestOpenSSL(object): def test_backend_exists(self): assert backend @@ -44,3 +54,16 @@ class TestOpenSSL(object): b = Backend() assert b.ffi is backend.ffi assert b.lib is backend.lib + + def test_nonexistent_cipher(self): + b = Backend() + b.ciphers.register_cipher_adapter( + FakeCipher, + FakeMode, + lambda backend, cipher, mode: backend.ffi.NULL + ) + cipher = BlockCipher( + FakeCipher(), FakeMode(), backend=b, + ) + with pytest.raises(UnsupportedAlgorithm): + cipher.encryptor() |