diff options
author | Donald Stufft <donald@stufft.io> | 2013-09-09 16:53:40 -0700 |
---|---|---|
committer | Donald Stufft <donald@stufft.io> | 2013-09-09 16:53:40 -0700 |
commit | 2ed581ec4ab50db93f8b80a71992a8a6b71eefe8 (patch) | |
tree | 0292fd46f2c236409bfe318467a8225669be2955 | |
parent | 9e1f70a472fc69612b865351fe6d1c77fda651c7 (diff) | |
parent | 735df00592ac6804abcb44c1fd51401a4bdf3f1d (diff) | |
download | cryptography-2ed581ec4ab50db93f8b80a71992a8a6b71eefe8.tar.gz cryptography-2ed581ec4ab50db93f8b80a71992a8a6b71eefe8.tar.bz2 cryptography-2ed581ec4ab50db93f8b80a71992a8a6b71eefe8.zip |
Merge pull request #50 from alex/simplify-nist-tests
Simplified the NIST tests and reduced duplication
-rw-r--r-- | tests/primitives/test_nist.py | 181 |
1 files changed, 31 insertions, 150 deletions
diff --git a/tests/primitives/test_nist.py b/tests/primitives/test_nist.py index db5e0344..65d130ad 100644 --- a/tests/primitives/test_nist.py +++ b/tests/primitives/test_nist.py @@ -18,6 +18,7 @@ Test using the NIST Test Vectors from __future__ import absolute_import, division, print_function import binascii +import itertools import os import pytest @@ -27,159 +28,35 @@ from cryptography.primitives.block import BlockCipher, ciphers, modes from ..utils import load_nist_vectors_from_file -def parameterize_kat_encrypt(fname): +def parameterize_encrypt_test(cipher, vector_type, fnames): return pytest.mark.parametrize(("key", "iv", "plaintext", "ciphertext"), - load_nist_vectors_from_file( - os.path.join("AES/KAT/", fname), - "ENCRYPT", - ["key", "iv", "plaintext", "ciphertext"], - ), - ) - - -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"], - ) + list(itertools.chain.from_iterable( + load_nist_vectors_from_file( + os.path.join(cipher, vector_type, fname), + "ENCRYPT", + ["key", "iv", "plaintext", "ciphertext"], + ) + for fname in fnames + )) ) class TestAES_CBC(object): - @parameterize_kat_encrypt("CBCGFSbox128.rsp") - def test_KAT_GFSbox_128_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_kat_encrypt("CBCGFSbox192.rsp") - def test_KAT_GFSbox_192_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_kat_encrypt("CBCGFSbox256.rsp") - def test_KAT_GFSbox_256_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_kat_encrypt("CBCKeySbox128.rsp") - def test_KAT_KeySbox_128_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_kat_encrypt("CBCKeySbox192.rsp") - def test_KAT_KeySbox_192_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_kat_encrypt("CBCKeySbox256.rsp") - def test_KAT_KeySbox_256_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_kat_encrypt("CBCVarKey128.rsp") - def test_KAT_VarKey_128_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_kat_encrypt("CBCVarKey192.rsp") - def test_KAT_VarKey_192_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_kat_encrypt("CBCVarKey256.rsp") - def test_KAT_VarKey_256_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_kat_encrypt("CBCVarTxt128.rsp") - def test_KAT_VarTxt_128_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_kat_encrypt("CBCVarTxt192.rsp") - def test_KAT_VarTxt_192_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_kat_encrypt("CBCVarTxt256.rsp") - def test_KAT_VarTxt_256_encrypt(self, key, iv, plaintext, ciphertext): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += 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)), - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @paramterize_mmt_encrypt("CBCMMT192.rsp") - def test_MMT_192_encrypt(self, key, iv, plaintext, ciphertext): + @parameterize_encrypt_test("AES", "KAT", [ + "CBCGFSbox128.rsp", + "CBCGFSbox192.rsp", + "CBCGFSbox256.rsp", + "CBCKeySbox128.rsp", + "CBCKeySbox192.rsp", + "CBCKeySbox256.rsp", + "CBCVarKey128.rsp", + "CBCVarKey192.rsp", + "CBCVarKey256.rsp", + "CBCVarTxt128.rsp", + "CBCVarTxt192.rsp", + "CBCVarTxt256.rsp", + ]) + def test_KAT(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), modes.CBC(binascii.unhexlify(iv)), @@ -188,8 +65,12 @@ class TestAES_CBC(object): actual_ciphertext += cipher.finalize() assert binascii.hexlify(actual_ciphertext) == ciphertext - @paramterize_mmt_encrypt("CBCMMT256.rsp") - def test_MMT_256_encrypt(self, key, iv, plaintext, ciphertext): + @parameterize_encrypt_test("AES", "MMT", [ + "CBCMMT128.rsp", + "CBCMMT192.rsp", + "CBCMMT256.rsp", + ]) + def test_MMT(self, key, iv, plaintext, ciphertext): cipher = BlockCipher( ciphers.AES(binascii.unhexlify(key)), modes.CBC(binascii.unhexlify(iv)), |