From b42af172c463f5ac0e5b36c39b9c8c0f328624ce Mon Sep 17 00:00:00 2001 From: Donald Stufft Date: Sat, 10 Aug 2013 14:32:08 -0400 Subject: Ensure that a BlockCipher can only be used for one operation This prevents trying to call encrypt() and then decrypt() on a block cipher. It also enables finalize() to know what type of finalization to call. --- tests/primitives/test_block.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tests/primitives') diff --git a/tests/primitives/test_block.py b/tests/primitives/test_block.py index f5693431..7dccda4b 100644 --- a/tests/primitives/test_block.py +++ b/tests/primitives/test_block.py @@ -30,3 +30,23 @@ class TestBlockCipher(object): cipher.encrypt(b"b" * 16) with pytest.raises(ValueError): cipher.finalize() + + def test_encrypt_with_invalid_operation(self): + cipher = BlockCipher( + ciphers.AES(binascii.unhexlify(b"0" * 32)), + modes.CBC(binascii.unhexlify(b"0" * 32), padding.NoPadding()) + ) + cipher._operation = "decrypt" + + with pytest.raises(ValueError): + cipher.encrypt(b"b" * 16) + + def test_finalize_with_invalid_operation(self): + cipher = BlockCipher( + ciphers.AES(binascii.unhexlify(b"0" * 32)), + modes.CBC(binascii.unhexlify(b"0" * 32), padding.NoPadding()) + ) + cipher._operation = "wat" + + with pytest.raises(ValueError): + cipher.encrypt(b"b" * 16) -- cgit v1.2.3