aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDonald Stufft <donald@stufft.io>2013-09-09 16:53:40 -0700
committerDonald Stufft <donald@stufft.io>2013-09-09 16:53:40 -0700
commit2ed581ec4ab50db93f8b80a71992a8a6b71eefe8 (patch)
tree0292fd46f2c236409bfe318467a8225669be2955 /tests
parent9e1f70a472fc69612b865351fe6d1c77fda651c7 (diff)
parent735df00592ac6804abcb44c1fd51401a4bdf3f1d (diff)
downloadcryptography-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
Diffstat (limited to 'tests')
-rw-r--r--tests/primitives/test_nist.py181
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)),