aboutsummaryrefslogtreecommitdiffstats
path: root/tests/utils.py
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2013-10-21 14:44:42 -0700
committerAlex Gaynor <alex.gaynor@gmail.com>2013-10-21 14:44:42 -0700
commit6f874ff9279376b6962c514ae0e59b90e7082e15 (patch)
treedcbc2e2491bffc6ad19eea41bbeeba85d65a48b3 /tests/utils.py
parentd6644815913e878462aa51c95c84e6d871406e27 (diff)
parent71ed449ffe7e26e9217b6c44bb27e19996315a64 (diff)
downloadcryptography-6f874ff9279376b6962c514ae0e59b90e7082e15.tar.gz
cryptography-6f874ff9279376b6962c514ae0e59b90e7082e15.tar.bz2
cryptography-6f874ff9279376b6962c514ae0e59b90e7082e15.zip
Merge branch 'master' into refactor-cipher-names
Conflicts: cryptography/bindings/openssl/api.py
Diffstat (limited to 'tests/utils.py')
-rw-r--r--tests/utils.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/utils.py b/tests/utils.py
index 6b1cfd79..fa7cc68d 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -90,6 +90,8 @@ def load_cryptrec_vectors(vector_data):
"plaintext": pt,
"ciphertext": ct
})
+ else:
+ raise ValueError("Invalid line in file '{}'".format(line))
return cryptrec_list
@@ -119,3 +121,38 @@ def load_openssl_vectors(vector_data):
"ciphertext": vector[4].encode("ascii"),
})
return vectors
+
+
+def load_hash_vectors(vector_data):
+ vectors = []
+
+ for line in vector_data:
+ line = line.strip()
+
+ if not line or line.startswith("#") or line.startswith("["):
+ continue
+
+ if line.startswith("Len"):
+ length = int(line.split(" = ")[1])
+ elif line.startswith("Msg"):
+ """
+ In the NIST vectors they have chosen to represent an empty
+ string as hex 00, which is of course not actually an empty
+ string. So we parse the provided length and catch this edge case.
+ """
+ msg = line.split(" = ")[1].encode("ascii") if length > 0 else b""
+ elif line.startswith("MD"):
+ md = line.split(" = ")[1]
+ # after MD is found the Msg+MD tuple is complete
+ vectors.append((msg, md))
+ else:
+ raise ValueError("Unknown line in hash vector")
+ return vectors
+
+
+def load_hash_vectors_from_file(filename):
+ base = os.path.join(
+ os.path.dirname(__file__), "primitives", "vectors"
+ )
+ with open(os.path.join(base, filename), "r") as vector_file:
+ return load_hash_vectors(vector_file)