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/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/utils.py')
-rw-r--r-- | tests/utils.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/utils.py b/tests/utils.py new file mode 100644 index 00000000..9fe35311 --- /dev/null +++ b/tests/utils.py @@ -0,0 +1,48 @@ +import os.path + + +def load_nist_vectors(vector_data, op, fields): + section, count, data = None, None, {} + + for line in vector_data: + line = line.strip() + + # Blank lines are ignored + if not line: + continue + + # Lines starting with # are comments + if line.startswith("#"): + continue + + # Look for section headers + if line.startswith("[") and line.endswith("]"): + section = line[1:-1] + data[section] = {} + continue + + # Build our data using a simple Key = Value format + name, value = line.split(" = ") + + # COUNT is a special token that indicates a new block of data + if name.upper() == "COUNT": + count = value + data[section][count] = {} + # For all other tokens we simply want the name, value stored in + # the dictionary + else: + data[section][count][name.lower()] = value + + # We want to test only for a particular operation + return [ + tuple(vector[1][f] for f in fields) + for vector in sorted(data[op].items(), key=lambda v: v[0]) + ] + + +def load_nist_vectors_from_file(filename, op, fields): + base = os.path.join( + os.path.dirname(__file__), "primitives", "vectors", "NIST", + ) + with open(os.path.join(base, filename), "r") as vector_file: + return load_nist_vectors(vector_file, op, fields) |