aboutsummaryrefslogtreecommitdiffstats
path: root/tests/primitives
diff options
context:
space:
mode:
Diffstat (limited to 'tests/primitives')
-rw-r--r--tests/primitives/test_cryptrec.py4
-rw-r--r--tests/primitives/test_nist.py25
-rw-r--r--tests/primitives/test_openssl_vectors.py78
-rw-r--r--tests/primitives/utils.py9
4 files changed, 34 insertions, 82 deletions
diff --git a/tests/primitives/test_cryptrec.py b/tests/primitives/test_cryptrec.py
index c8e0af0f..59d8b24b 100644
--- a/tests/primitives/test_cryptrec.py
+++ b/tests/primitives/test_cryptrec.py
@@ -18,6 +18,7 @@ Tests using the CRYPTREC (Camellia) 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_cryptrec_vectors_from_file
class TestCamelliaECB(object):
test_NTT = generate_encrypt_test(
load_cryptrec_vectors_from_file,
- "Camellia",
- "NTT",
+ os.path.join("Camellia", "NTT"),
["camellia-128-ecb", "camellia-192-ecb", "camellia-256"],
lambda key: ciphers.Camellia(binascii.unhexlify((key))),
lambda key: modes.EBC(),
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",
diff --git a/tests/primitives/test_openssl_vectors.py b/tests/primitives/test_openssl_vectors.py
index d30efa5c..f9c4e1fa 100644
--- a/tests/primitives/test_openssl_vectors.py
+++ b/tests/primitives/test_openssl_vectors.py
@@ -23,78 +23,40 @@ 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_openssl_vectors_from_file
-def parameterize_encrypt_test(cipher, params, fnames):
- return pytest.mark.parametrize(params,
- list(itertools.chain.from_iterable(
- load_openssl_vectors_from_file(os.path.join(cipher, fname))
- for fname in fnames
- ))
- )
-
-
class TestCamelliaCBC(object):
-
- @parameterize_encrypt_test(
+ test_OpenSSL = generate_encrypt_test(
+ load_openssl_vectors_from_file,
"Camellia",
- ("key", "iv", "plaintext", "ciphertext"),
- [
- "camellia-cbc.txt",
- ]
+ ["camellia-cbc.txt"],
+ lambda key, iv: ciphers.Camellia(binascii.unhexlify(key)),
+ lambda key, iv: modes.CBC(binascii.unhexlify(iv)),
+ only_if=lambda api: api.supports_cipher("camellia-128-cbc")
)
- def test_OpenSSL(self, key, iv, plaintext, ciphertext, api):
- if not api.supports_cipher("camellia-128-cbc"):
- pytest.skip("Does not support Camellia CBC") # pragma: no cover
- cipher = BlockCipher(
- ciphers.Camellia(binascii.unhexlify(key)),
- modes.CBC(binascii.unhexlify(iv)),
- )
- actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
- actual_ciphertext += cipher.finalize()
- assert binascii.hexlify(actual_ciphertext).upper() == ciphertext
class TestCamelliaOFB(object):
-
- @parameterize_encrypt_test(
+ test_OpenSSL = generate_encrypt_test(
+ load_openssl_vectors_from_file,
"Camellia",
- ("key", "iv", "plaintext", "ciphertext"),
- [
- "camellia-ofb.txt",
- ]
+ ["camellia-ofb.txt"],
+ lambda key, iv: ciphers.Camellia(binascii.unhexlify(key)),
+ lambda key, iv: modes.OFB(binascii.unhexlify(iv)),
+ only_if=lambda api: api.supports_cipher("camellia-128-ofb")
)
- def test_OpenSSL(self, key, iv, plaintext, ciphertext, api):
- if not api.supports_cipher("camellia-128-ofb"):
- pytest.skip("Does not support Camellia OFB") # pragma: no cover
- cipher = BlockCipher(
- ciphers.Camellia(binascii.unhexlify(key)),
- modes.OFB(binascii.unhexlify(iv)),
- )
- actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
- actual_ciphertext += cipher.finalize()
- assert binascii.hexlify(actual_ciphertext).upper() == ciphertext
class TestCamelliaCFB(object):
-
- @parameterize_encrypt_test(
+ test_OpenSSL = generate_encrypt_test(
+ load_openssl_vectors_from_file,
"Camellia",
- ("key", "iv", "plaintext", "ciphertext"),
- [
- "camellia-cfb.txt",
- ]
+ ["camellia-cfb.txt"],
+ lambda key, iv: ciphers.Camellia(binascii.unhexlify(key)),
+ lambda key, iv: modes.CFB(binascii.unhexlify(iv)),
+ only_if=lambda api: api.supports_cipher("camellia-128-cfb")
)
- def test_OpenSSL(self, key, iv, plaintext, ciphertext, api):
- if not api.supports_cipher("camellia-128-cfb"):
- pytest.skip("Does not support Camellia CFB") # pragma: no cover
- cipher = BlockCipher(
- ciphers.Camellia(binascii.unhexlify(key)),
- modes.CFB(binascii.unhexlify(iv)),
- )
- actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
- actual_ciphertext += cipher.finalize()
- assert binascii.hexlify(actual_ciphertext).upper() == ciphertext
diff --git a/tests/primitives/utils.py b/tests/primitives/utils.py
index e35c915a..13bf0d89 100644
--- a/tests/primitives/utils.py
+++ b/tests/primitives/utils.py
@@ -7,18 +7,15 @@ from cryptography.bindings import openssl
from cryptography.primitives.block import BlockCipher
-def generate_encrypt_test(param_loader, cipher_name, vector_type, file_names,
- cipher_factory, mode_factory,
- only_if=lambda api: True):
+def generate_encrypt_test(param_loader, path, file_names, cipher_factory,
+ mode_factory, only_if=lambda api: True):
def test_encryption(self):
for api in [openssl.api]:
if not only_if(api):
yield encrypt_skipped
else:
for file_name in file_names:
- for params in param_loader(
- os.path.join(cipher_name, vector_type, file_name)
- ):
+ for params in param_loader(os.path.join(path, file_name)):
yield encrypt_test, api, cipher_factory, mode_factory, params
return test_encryption