From f903da081b3eac3bc84a2e596591e7e634c3355d Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Tue, 20 Mar 2018 13:33:57 -0400 Subject: fix bug with n % 8 length wrapping on AESKWP (#4160) * fix bug with n % 8 length wrapping on AESKWP * review feedback --- tests/hazmat/primitives/test_keywrap.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'tests/hazmat') diff --git a/tests/hazmat/primitives/test_keywrap.py b/tests/hazmat/primitives/test_keywrap.py index 8311c2a4..9b1e43e4 100644 --- a/tests/hazmat/primitives/test_keywrap.py +++ b/tests/hazmat/primitives/test_keywrap.py @@ -141,6 +141,18 @@ class TestAESKeyWrapWithPadding(object): ) assert params["c"] == binascii.hexlify(wrapped_key) + @pytest.mark.parametrize( + "params", + _load_all_params("keywrap", ["kwp_botan.txt"], load_nist_vectors) + ) + def test_wrap_additional_vectors(self, backend, params): + wrapping_key = binascii.unhexlify(params["key"]) + key_to_wrap = binascii.unhexlify(params["input"]) + wrapped_key = keywrap.aes_key_wrap_with_padding( + wrapping_key, key_to_wrap, backend + ) + assert wrapped_key == binascii.unhexlify(params["output"]) + @pytest.mark.parametrize( "params", _load_all_params( @@ -163,6 +175,18 @@ class TestAESKeyWrapWithPadding(object): ) assert params["p"] == binascii.hexlify(unwrapped_key) + @pytest.mark.parametrize( + "params", + _load_all_params("keywrap", ["kwp_botan.txt"], load_nist_vectors) + ) + def test_unwrap_additional_vectors(self, backend, params): + wrapping_key = binascii.unhexlify(params["key"]) + wrapped_key = binascii.unhexlify(params["output"]) + unwrapped_key = keywrap.aes_key_unwrap_with_padding( + wrapping_key, wrapped_key, backend + ) + assert unwrapped_key == binascii.unhexlify(params["input"]) + def test_unwrap_invalid_wrapped_key_length(self, backend): # Keys to unwrap must be at least 16 bytes with pytest.raises(ValueError, match='Must be at least 16 bytes'): -- cgit v1.2.3