aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cryptography/primitives/hashes.py24
-rw-r--r--tests/primitives/test_hash_vectors.py56
-rw-r--r--tests/primitives/test_hashes.py40
3 files changed, 120 insertions, 0 deletions
diff --git a/cryptography/primitives/hashes.py b/cryptography/primitives/hashes.py
index d74287f9..d004c45c 100644
--- a/cryptography/primitives/hashes.py
+++ b/cryptography/primitives/hashes.py
@@ -46,3 +46,27 @@ class SHA1(BaseHash):
name = "sha1"
digest_size = 20
block_size = 64
+
+
+class SHA224(BaseHash):
+ name = "sha224"
+ digest_size = 28
+ block_size = 64
+
+
+class SHA256(BaseHash):
+ name = "sha256"
+ digest_size = 32
+ block_size = 64
+
+
+class SHA384(BaseHash):
+ name = "sha384"
+ digest_size = 48
+ block_size = 128
+
+
+class SHA512(BaseHash):
+ name = "sha512"
+ digest_size = 64
+ block_size = 128
diff --git a/tests/primitives/test_hash_vectors.py b/tests/primitives/test_hash_vectors.py
index 9a925e27..d0fe46d1 100644
--- a/tests/primitives/test_hash_vectors.py
+++ b/tests/primitives/test_hash_vectors.py
@@ -33,3 +33,59 @@ class TestSHA1(object):
only_if=lambda api: api.supports_hash(hashes.SHA1),
skip_message="Does not support SHA1",
)
+
+
+class TestSHA224(object):
+ test_SHA224 = generate_hash_test(
+ load_hash_vectors_from_file,
+ os.path.join("NIST", "SHABYTE"),
+ [
+ "SHA224LongMsg.rsp",
+ "SHA224ShortMsg.rsp",
+ ],
+ hashes.SHA224,
+ only_if=lambda api: api.supports_hash(hashes.SHA224),
+ skip_message="Does not support SHA224",
+ )
+
+
+class TestSHA256(object):
+ test_SHA256 = generate_hash_test(
+ load_hash_vectors_from_file,
+ os.path.join("NIST", "SHABYTE"),
+ [
+ "SHA256LongMsg.rsp",
+ "SHA256ShortMsg.rsp",
+ ],
+ hashes.SHA256,
+ only_if=lambda api: api.supports_hash(hashes.SHA256),
+ skip_message="Does not support SHA256",
+ )
+
+
+class TestSHA384(object):
+ test_SHA384 = generate_hash_test(
+ load_hash_vectors_from_file,
+ os.path.join("NIST", "SHABYTE"),
+ [
+ "SHA384LongMsg.rsp",
+ "SHA384ShortMsg.rsp",
+ ],
+ hashes.SHA384,
+ only_if=lambda api: api.supports_hash(hashes.SHA384),
+ skip_message="Does not support SHA384",
+ )
+
+
+class TestSHA512(object):
+ test_SHA512 = generate_hash_test(
+ load_hash_vectors_from_file,
+ os.path.join("NIST", "SHABYTE"),
+ [
+ "SHA512LongMsg.rsp",
+ "SHA512ShortMsg.rsp",
+ ],
+ hashes.SHA512,
+ only_if=lambda api: api.supports_hash(hashes.SHA512),
+ skip_message="Does not support SHA512",
+ )
diff --git a/tests/primitives/test_hashes.py b/tests/primitives/test_hashes.py
index 4ad5c89a..2f2dd1c7 100644
--- a/tests/primitives/test_hashes.py
+++ b/tests/primitives/test_hashes.py
@@ -26,3 +26,43 @@ class TestSHA1(object):
only_if=lambda api: api.supports_hash(hashes.SHA1),
skip_message="Does not support SHA1",
)
+
+
+class TestSHA224(object):
+ test_SHA224 = generate_base_hash_test(
+ hashes.SHA224,
+ digest_size=28,
+ block_size=64,
+ only_if=lambda api: api.supports_hash(hashes.SHA224),
+ skip_message="Does not support SHA224",
+ )
+
+
+class TestSHA256(object):
+ test_SHA256 = generate_base_hash_test(
+ hashes.SHA256,
+ digest_size=32,
+ block_size=64,
+ only_if=lambda api: api.supports_hash(hashes.SHA256),
+ skip_message="Does not support SHA256",
+ )
+
+
+class TestSHA384(object):
+ test_SHA384 = generate_base_hash_test(
+ hashes.SHA384,
+ digest_size=48,
+ block_size=128,
+ only_if=lambda api: api.supports_hash(hashes.SHA384),
+ skip_message="Does not support SHA384",
+ )
+
+
+class TestSHA512(object):
+ test_SHA512 = generate_base_hash_test(
+ hashes.SHA512,
+ digest_size=64,
+ block_size=128,
+ only_if=lambda api: api.supports_hash(hashes.SHA512),
+ skip_message="Does not support SHA512",
+ )