diff options
Diffstat (limited to 'tests/primitives/test_nist.py')
-rw-r--r-- | tests/primitives/test_nist.py | 63 |
1 files changed, 50 insertions, 13 deletions
diff --git a/tests/primitives/test_nist.py b/tests/primitives/test_nist.py index d68cd27b..88090f9a 100644 --- a/tests/primitives/test_nist.py +++ b/tests/primitives/test_nist.py @@ -11,7 +11,7 @@ from cryptography.primitives.block import BlockCipher, ciphers, modes, padding from ..utils import load_nist_vectors_from_file -def parameterize_encrypt(fname): +def parameterize_kat_encrypt(fname): return pytest.mark.parametrize(("key", "iv", "plaintext", "ciphertext"), load_nist_vectors_from_file( os.path.join("AES/KAT/", fname), @@ -21,8 +21,18 @@ def parameterize_encrypt(fname): ) +def paramterize_mmt_encrypt(fname): + return pytest.mark.parametrize(("key", "iv", "plaintext", "ciphertext"), + load_nist_vectors_from_file( + os.path.join("AES/MMT", fname), + "ENCRYPT", + ["key", "iv", "plaintext", "ciphertext"], + ) + ) + + class TestAES_CBC(object): - @parameterize_encrypt("CBCGFSbox128.rsp") + @parameterize_kat_encrypt("CBCGFSbox128.rsp") def test_KAT_GFSbox_128_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -31,7 +41,7 @@ class TestAES_CBC(object): actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @parameterize_encrypt("CBCGFSbox192.rsp") + @parameterize_kat_encrypt("CBCGFSbox192.rsp") def test_KAT_GFSbox_192_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -40,7 +50,7 @@ class TestAES_CBC(object): actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @parameterize_encrypt("CBCGFSbox256.rsp") + @parameterize_kat_encrypt("CBCGFSbox256.rsp") def test_KAT_GFSbox_256_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -49,7 +59,7 @@ class TestAES_CBC(object): actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @parameterize_encrypt("CBCKeySbox128.rsp") + @parameterize_kat_encrypt("CBCKeySbox128.rsp") def test_KAT_KeySbox_128_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -58,7 +68,7 @@ class TestAES_CBC(object): actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @parameterize_encrypt("CBCKeySbox192.rsp") + @parameterize_kat_encrypt("CBCKeySbox192.rsp") def test_KAT_KeySbox_192_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -67,7 +77,7 @@ class TestAES_CBC(object): actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @parameterize_encrypt("CBCKeySbox256.rsp") + @parameterize_kat_encrypt("CBCKeySbox256.rsp") def test_KAT_KeySbox_256_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -76,7 +86,7 @@ class TestAES_CBC(object): actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @parameterize_encrypt("CBCVarKey128.rsp") + @parameterize_kat_encrypt("CBCVarKey128.rsp") def test_KAT_VarKey_128_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -85,7 +95,7 @@ class TestAES_CBC(object): actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @parameterize_encrypt("CBCVarKey192.rsp") + @parameterize_kat_encrypt("CBCVarKey192.rsp") def test_KAT_VarKey_192_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -94,7 +104,7 @@ class TestAES_CBC(object): actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @parameterize_encrypt("CBCVarKey256.rsp") + @parameterize_kat_encrypt("CBCVarKey256.rsp") def test_KAT_VarKey_256_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -103,7 +113,7 @@ class TestAES_CBC(object): actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @parameterize_encrypt("CBCVarTxt128.rsp") + @parameterize_kat_encrypt("CBCVarTxt128.rsp") def test_KAT_VarTxt_128_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -112,7 +122,7 @@ class TestAES_CBC(object): actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @parameterize_encrypt("CBCVarTxt192.rsp") + @parameterize_kat_encrypt("CBCVarTxt192.rsp") def test_KAT_VarTxt_192_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -121,7 +131,7 @@ class TestAES_CBC(object): actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @parameterize_encrypt("CBCVarTxt256.rsp") + @parameterize_kat_encrypt("CBCVarTxt256.rsp") def test_KAT_VarTxt_256_encrypt(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), @@ -129,3 +139,30 @@ class TestAES_CBC(object): ) actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext + + @paramterize_mmt_encrypt("CBCMMT128.rsp") + def test_MMT_128_encrypt(self, key, iv, plaintext, ciphertext): + cipher = BlockCipher( + ciphers.AES(binascii.unhexlify(key)), + modes.CBC(binascii.unhexlify(iv), padding.NoPadding()) + ) + actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() + assert binascii.hexlify(actual_ciphertext) == ciphertext + + @paramterize_mmt_encrypt("CBCMMT192.rsp") + def test_MMT_192_encrypt(self, key, iv, plaintext, ciphertext): + cipher = BlockCipher( + ciphers.AES(binascii.unhexlify(key)), + modes.CBC(binascii.unhexlify(iv), padding.NoPadding()) + ) + actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() + assert binascii.hexlify(actual_ciphertext) == ciphertext + + @paramterize_mmt_encrypt("CBCMMT256.rsp") + def test_MMT_256_encrypt(self, key, iv, plaintext, ciphertext): + cipher = BlockCipher( + ciphers.AES(binascii.unhexlify(key)), + modes.CBC(binascii.unhexlify(iv), padding.NoPadding()) + ) + actual_ciphertext = cipher.encrypt(plaintext) + cipher.finalize() + assert binascii.hexlify(actual_ciphertext) == ciphertext |