From 1fe70b12b24f1180b2c4fde1764e309bc0cb338d Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Wed, 16 Oct 2013 11:59:17 -0700 Subject: Start of the great refactoring --- tests/primitives/test_nist.py | 189 ++++++++++++++---------------------------- 1 file changed, 63 insertions(+), 126 deletions(-) (limited to 'tests/primitives/test_nist.py') diff --git a/tests/primitives/test_nist.py b/tests/primitives/test_nist.py index 261bbd1d..0c9569f1 100644 --- a/tests/primitives/test_nist.py +++ b/tests/primitives/test_nist.py @@ -18,33 +18,18 @@ Test using the NIST Test Vectors from __future__ import absolute_import, division, print_function import binascii -import itertools -import os -import pytest - -from cryptography.primitives.block import BlockCipher, ciphers, modes +from cryptography.primitives.block import ciphers, modes +from .utils import generate_encrypt_test from ..utils import load_nist_vectors_from_file -def parameterize_encrypt_test(cipher, vector_type, params, fnames): - return pytest.mark.parametrize(params, - list(itertools.chain.from_iterable( - load_nist_vectors_from_file( - os.path.join(cipher, vector_type, fname), - "ENCRYPT", - params - ) - for fname in fnames - )) - ) - - class TestAES_CBC(object): - @parameterize_encrypt_test( - "AES", "KAT", - ("key", "iv", "plaintext", "ciphertext"), + test_KAT = generate_encrypt_test( + lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), + "AES", + "KAT", [ "CBCGFSbox128.rsp", "CBCGFSbox192.rsp", @@ -58,42 +43,30 @@ class TestAES_CBC(object): "CBCVarTxt128.rsp", "CBCVarTxt192.rsp", "CBCVarTxt256.rsp", - ] + ], + lambda key, iv: ciphers.AES(binascii.unhexlify(key)), + lambda key, iv: modes.CBC(binascii.unhexlify(iv)), ) - def test_KAT(self, key, iv, plaintext, ciphertext, api): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - api - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_encrypt_test( - "AES", "MMT", - ("key", "iv", "plaintext", "ciphertext"), + + test_MMT = generate_encrypt_test( + lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), + "AES", + "MMT", [ "CBCMMT128.rsp", "CBCMMT192.rsp", "CBCMMT256.rsp", - ] + ], + lambda key, iv: ciphers.AES(binascii.unhexlify(key)), + lambda key, iv: modes.CBC(binascii.unhexlify(iv)), ) - def test_MMT(self, key, iv, plaintext, ciphertext, api): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CBC(binascii.unhexlify(iv)), - api - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext class TestAES_ECB(object): - @parameterize_encrypt_test( - "AES", "KAT", - ("key", "plaintext", "ciphertext"), + test_KAT = generate_encrypt_test( + lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), + "AES", + "KAT", [ "ECBGFSbox128.rsp", "ECBGFSbox192.rsp", @@ -107,42 +80,30 @@ class TestAES_ECB(object): "ECBVarTxt128.rsp", "ECBVarTxt192.rsp", "ECBVarTxt256.rsp", - ] + ], + lambda key: ciphers.AES(binascii.unhexlify(key)), + lambda key: modes.ECB(), ) - def test_KAT(self, key, plaintext, ciphertext, api): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.ECB(), - api - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_encrypt_test( - "AES", "MMT", - ("key", "plaintext", "ciphertext"), + + test_MMT = generate_encrypt_test( + lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), + "AES", + "MMT", [ "ECBMMT128.rsp", "ECBMMT192.rsp", "ECBMMT256.rsp", - ] + ], + lambda key: ciphers.AES(binascii.unhexlify(key)), + lambda key: modes.ECB(), ) - def test_MMT(self, key, plaintext, ciphertext, api): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.ECB(), - api - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext class TestAES_OFB(object): - @parameterize_encrypt_test( - "AES", "KAT", - ("key", "iv", "plaintext", "ciphertext"), + test_KAT = generate_encrypt_test( + lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), + "AES", + "KAT", [ "OFBGFSbox128.rsp", "OFBGFSbox192.rsp", @@ -156,42 +117,30 @@ class TestAES_OFB(object): "OFBVarTxt128.rsp", "OFBVarTxt192.rsp", "OFBVarTxt256.rsp", - ] + ], + lambda key, iv: ciphers.AES(binascii.unhexlify(key)), + lambda key, iv: modes.OFB(binascii.unhexlify(iv)), ) - def test_KAT(self, key, iv, plaintext, ciphertext, api): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.OFB(binascii.unhexlify(iv)), - api - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_encrypt_test( - "AES", "MMT", - ("key", "iv", "plaintext", "ciphertext"), + + test_MMT = generate_encrypt_test( + lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), + "AES", + "MMT", [ "OFBMMT128.rsp", "OFBMMT192.rsp", "OFBMMT256.rsp", - ] + ], + lambda key, iv: ciphers.AES(binascii.unhexlify(key)), + lambda key, iv: modes.OFB(binascii.unhexlify(iv)), ) - def test_MMT(self, key, iv, plaintext, ciphertext, api): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.OFB(binascii.unhexlify(iv)), - api - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext class TestAES_CFB(object): - @parameterize_encrypt_test( - "AES", "KAT", - ("key", "iv", "plaintext", "ciphertext"), + test_KAT = generate_encrypt_test( + lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), + "AES", + "KAT", [ "CFB128GFSbox128.rsp", "CFB128GFSbox192.rsp", @@ -205,33 +154,21 @@ class TestAES_CFB(object): "CFB128VarTxt128.rsp", "CFB128VarTxt192.rsp", "CFB128VarTxt256.rsp", - ] + ], + lambda key, iv: ciphers.AES(binascii.unhexlify(key)), + lambda key, iv: modes.CFB(binascii.unhexlify(iv)), ) - def test_KAT(self, key, iv, plaintext, ciphertext, api): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CFB(binascii.unhexlify(iv)), - api - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext - - @parameterize_encrypt_test( - "AES", "MMT", - ("key", "iv", "plaintext", "ciphertext"), + + + test_MMT = generate_encrypt_test( + lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), + "AES", + "MMT", [ "CFB128MMT128.rsp", "CFB128MMT192.rsp", "CFB128MMT256.rsp", - ] + ], + lambda key, iv: ciphers.AES(binascii.unhexlify(key)), + lambda key, iv: modes.CFB(binascii.unhexlify(iv)), ) - def test_MMT(self, key, iv, plaintext, ciphertext, api): - cipher = BlockCipher( - ciphers.AES(binascii.unhexlify(key)), - modes.CFB(binascii.unhexlify(iv)), - api - ) - actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) - actual_ciphertext += cipher.finalize() - assert binascii.hexlify(actual_ciphertext) == ciphertext -- cgit v1.2.3 From 016eed1cc1cc26ff404ac31ed3858de362ca37f2 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Wed, 16 Oct 2013 14:16:04 -0700 Subject: Ported openssl vector tests --- tests/primitives/test_nist.py | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) (limited to 'tests/primitives/test_nist.py') diff --git a/tests/primitives/test_nist.py b/tests/primitives/test_nist.py index 0c9569f1..e7778f1f 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 os from cryptography.primitives.block import ciphers, modes @@ -28,8 +29,7 @@ from ..utils import load_nist_vectors_from_file class TestAES_CBC(object): test_KAT = generate_encrypt_test( lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), - "AES", - "KAT", + os.path.join("AES", "KAT"), [ "CBCGFSbox128.rsp", "CBCGFSbox192.rsp", @@ -50,8 +50,7 @@ class TestAES_CBC(object): test_MMT = generate_encrypt_test( lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), - "AES", - "MMT", + os.path.join("AES", "MMT"), [ "CBCMMT128.rsp", "CBCMMT192.rsp", @@ -65,8 +64,7 @@ class TestAES_CBC(object): class TestAES_ECB(object): test_KAT = generate_encrypt_test( lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), - "AES", - "KAT", + os.path.join("AES", "KAT"), [ "ECBGFSbox128.rsp", "ECBGFSbox192.rsp", @@ -87,8 +85,7 @@ class TestAES_ECB(object): test_MMT = generate_encrypt_test( lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), - "AES", - "MMT", + os.path.join("AES", "MMT"), [ "ECBMMT128.rsp", "ECBMMT192.rsp", @@ -102,8 +99,7 @@ class TestAES_ECB(object): class TestAES_OFB(object): test_KAT = generate_encrypt_test( lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), - "AES", - "KAT", + os.path.join("AES", "KAT"), [ "OFBGFSbox128.rsp", "OFBGFSbox192.rsp", @@ -124,8 +120,7 @@ class TestAES_OFB(object): test_MMT = generate_encrypt_test( lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), - "AES", - "MMT", + os.path.join("AES", "MMT"), [ "OFBMMT128.rsp", "OFBMMT192.rsp", @@ -139,8 +134,7 @@ class TestAES_OFB(object): class TestAES_CFB(object): test_KAT = generate_encrypt_test( lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), - "AES", - "KAT", + os.path.join("AES", "KAT"), [ "CFB128GFSbox128.rsp", "CFB128GFSbox192.rsp", @@ -162,8 +156,7 @@ class TestAES_CFB(object): test_MMT = generate_encrypt_test( lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), - "AES", - "MMT", + os.path.join("AES", "MMT"), [ "CFB128MMT128.rsp", "CFB128MMT192.rsp", -- cgit v1.2.3 From 745c95c75cc6588ecd9b927e5974bf00426125a2 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Wed, 16 Oct 2013 14:41:35 -0700 Subject: flake8 fixes --- tests/primitives/test_nist.py | 1 - 1 file changed, 1 deletion(-) (limited to 'tests/primitives/test_nist.py') diff --git a/tests/primitives/test_nist.py b/tests/primitives/test_nist.py index e7778f1f..d97b207b 100644 --- a/tests/primitives/test_nist.py +++ b/tests/primitives/test_nist.py @@ -153,7 +153,6 @@ class TestAES_CFB(object): lambda key, iv: modes.CFB(binascii.unhexlify(iv)), ) - test_MMT = generate_encrypt_test( lambda path: load_nist_vectors_from_file(path, "ENCRYPT"), os.path.join("AES", "MMT"), -- cgit v1.2.3