Use the NIST MMT vectors to test AES-CBC w/ no padding
diff --git a/tests/primitives/test_nist.py b/tests/primitives/test_nist.py
index d68cd27..88090f9 100644
--- a/tests/primitives/test_nist.py
+++ b/tests/primitives/test_nist.py
@@ -11,7 +11,7 @@
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 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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
)
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