diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2013-08-08 22:04:21 -0700 |
---|---|---|
committer | Alex Gaynor <alex.gaynor@gmail.com> | 2013-08-08 22:04:21 -0700 |
commit | 80bb237b06ce5cf5180e4a44874685e3571e813c (patch) | |
tree | 3f0a2f33d0ee6230b8a23812f3add9f47f62adc5 /tests/test_utils.py | |
parent | 4bc451924ce0f98c0300aa13463ea8e995ea8c93 (diff) | |
parent | 9e1a48b84cd3525f3469ca4c46a413d27f1aba78 (diff) | |
download | cryptography-80bb237b06ce5cf5180e4a44874685e3571e813c.tar.gz cryptography-80bb237b06ce5cf5180e4a44874685e3571e813c.tar.bz2 cryptography-80bb237b06ce5cf5180e4a44874685e3571e813c.zip |
Merge pull request #29 from dstufft/nist-vector-file-utilities
Add a test utility functions to read & process NIST vector files
Diffstat (limited to 'tests/test_utils.py')
-rw-r--r-- | tests/test_utils.py | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/tests/test_utils.py b/tests/test_utils.py new file mode 100644 index 00000000..acb36d4c --- /dev/null +++ b/tests/test_utils.py @@ -0,0 +1,193 @@ +import textwrap + +from .utils import load_nist_vectors, load_nist_vectors_from_file + + +def test_load_nist_vectors_encrypt(): + vector_data = textwrap.dedent(""" + # CAVS 11.1 + # Config info for aes_values + # AESVS GFSbox test data for CBC + # State : Encrypt and Decrypt + # Key Length : 128 + # Generated on Fri Apr 22 15:11:33 2011 + + [ENCRYPT] + + COUNT = 0 + KEY = 00000000000000000000000000000000 + IV = 00000000000000000000000000000000 + PLAINTEXT = f34481ec3cc627bacd5dc3fb08f273e6 + CIPHERTEXT = 0336763e966d92595a567cc9ce537f5e + + COUNT = 1 + KEY = 00000000000000000000000000000000 + IV = 00000000000000000000000000000000 + PLAINTEXT = 9798c4640bad75c7c3227db910174e72 + CIPHERTEXT = a9a1631bf4996954ebc093957b234589 + + [DECRYPT] + + COUNT = 0 + KEY = 00000000000000000000000000000000 + IV = 00000000000000000000000000000000 + CIPHERTEXT = 0336763e966d92595a567cc9ce537f5e + PLAINTEXT = f34481ec3cc627bacd5dc3fb08f273e6 + + COUNT = 1 + KEY = 00000000000000000000000000000000 + IV = 00000000000000000000000000000000 + CIPHERTEXT = a9a1631bf4996954ebc093957b234589 + PLAINTEXT = 9798c4640bad75c7c3227db910174e72 + """).splitlines() + + assert load_nist_vectors(vector_data, "ENCRYPT", + ["key", "iv", "plaintext", "ciphertext"], + ) == [ + ( + "00000000000000000000000000000000", + "00000000000000000000000000000000", + "f34481ec3cc627bacd5dc3fb08f273e6", + "0336763e966d92595a567cc9ce537f5e", + ), + ( + "00000000000000000000000000000000", + "00000000000000000000000000000000", + "9798c4640bad75c7c3227db910174e72", + "a9a1631bf4996954ebc093957b234589", + ), + ] + + +def test_load_nist_vectors_decrypt(): + vector_data = textwrap.dedent(""" + # CAVS 11.1 + # Config info for aes_values + # AESVS GFSbox test data for CBC + # State : Encrypt and Decrypt + # Key Length : 128 + # Generated on Fri Apr 22 15:11:33 2011 + + [ENCRYPT] + + COUNT = 0 + KEY = 00000000000000000000000000000000 + IV = 00000000000000000000000000000000 + PLAINTEXT = f34481ec3cc627bacd5dc3fb08f273e6 + CIPHERTEXT = 0336763e966d92595a567cc9ce537f5e + + COUNT = 1 + KEY = 00000000000000000000000000000000 + IV = 00000000000000000000000000000000 + PLAINTEXT = 9798c4640bad75c7c3227db910174e72 + CIPHERTEXT = a9a1631bf4996954ebc093957b234589 + + [DECRYPT] + + COUNT = 0 + KEY = 00000000000000000000000000000000 + IV = 00000000000000000000000000000000 + CIPHERTEXT = 0336763e966d92595a567cc9ce537f5e + PLAINTEXT = f34481ec3cc627bacd5dc3fb08f273e6 + + COUNT = 1 + KEY = 00000000000000000000000000000000 + IV = 00000000000000000000000000000000 + CIPHERTEXT = a9a1631bf4996954ebc093957b234589 + PLAINTEXT = 9798c4640bad75c7c3227db910174e72 + """).splitlines() + + assert load_nist_vectors(vector_data, "DECRYPT", + ["key", "iv", "ciphertext", "plaintext"], + ) == [ + ( + "00000000000000000000000000000000", + "00000000000000000000000000000000", + "0336763e966d92595a567cc9ce537f5e", + "f34481ec3cc627bacd5dc3fb08f273e6", + ), + ( + "00000000000000000000000000000000", + "00000000000000000000000000000000", + "a9a1631bf4996954ebc093957b234589", + "9798c4640bad75c7c3227db910174e72", + ), + ] + + +def test_load_nist_vectors_from_file_encrypt(): + assert load_nist_vectors_from_file( + "AES/KAT/CBCGFSbox256.rsp", + "ENCRYPT", + ["key", "iv", "plaintext", "ciphertext"], + ) == [ + ( + "0000000000000000000000000000000000000000000000000000000000000000", + "00000000000000000000000000000000", + "014730f80ac625fe84f026c60bfd547d", + "5c9d844ed46f9885085e5d6a4f94c7d7", + ), + ( + "0000000000000000000000000000000000000000000000000000000000000000", + "00000000000000000000000000000000", + "0b24af36193ce4665f2825d7b4749c98", + "a9ff75bd7cf6613d3731c77c3b6d0c04", + ), + ( + "0000000000000000000000000000000000000000000000000000000000000000", + "00000000000000000000000000000000", + "761c1fe41a18acf20d241650611d90f1", + "623a52fcea5d443e48d9181ab32c7421", + ), + ( + "0000000000000000000000000000000000000000000000000000000000000000", + "00000000000000000000000000000000", + "8a560769d605868ad80d819bdba03771", + "38f2c7ae10612415d27ca190d27da8b4", + ), + ( + "0000000000000000000000000000000000000000000000000000000000000000", + "00000000000000000000000000000000", + "91fbef2d15a97816060bee1feaa49afe", + "1bc704f1bce135ceb810341b216d7abe", + ), + ] + + +def test_load_nist_vectors_from_file_decypt(): + assert load_nist_vectors_from_file( + "AES/KAT/CBCGFSbox256.rsp", + "DECRYPT", + ["key", "iv", "ciphertext", "plaintext"], + ) == [ + ( + "0000000000000000000000000000000000000000000000000000000000000000", + "00000000000000000000000000000000", + "5c9d844ed46f9885085e5d6a4f94c7d7", + "014730f80ac625fe84f026c60bfd547d", + ), + ( + "0000000000000000000000000000000000000000000000000000000000000000", + "00000000000000000000000000000000", + "a9ff75bd7cf6613d3731c77c3b6d0c04", + "0b24af36193ce4665f2825d7b4749c98", + ), + ( + "0000000000000000000000000000000000000000000000000000000000000000", + "00000000000000000000000000000000", + "623a52fcea5d443e48d9181ab32c7421", + "761c1fe41a18acf20d241650611d90f1", + ), + ( + "0000000000000000000000000000000000000000000000000000000000000000", + "00000000000000000000000000000000", + "38f2c7ae10612415d27ca190d27da8b4", + "8a560769d605868ad80d819bdba03771", + ), + ( + "0000000000000000000000000000000000000000000000000000000000000000", + "00000000000000000000000000000000", + "1bc704f1bce135ceb810341b216d7abe", + "91fbef2d15a97816060bee1feaa49afe", + ), + ] |