aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonald Stufft <donald@stufft.io>2013-10-18 19:38:04 -0700
committerDonald Stufft <donald@stufft.io>2013-10-18 19:38:04 -0700
commit3069921d3f1fe201f86e69bc50bf270708f2272a (patch)
treed73f154b93e3a20a976ec9bb166a5e52e49469e6
parenta3011beae965fde326d4977d850b2aaa9c7b216e (diff)
parent7e5697c6f597ac6b0550ae3dbcc19482d10f3efe (diff)
downloadcryptography-3069921d3f1fe201f86e69bc50bf270708f2272a.tar.gz
cryptography-3069921d3f1fe201f86e69bc50bf270708f2272a.tar.bz2
cryptography-3069921d3f1fe201f86e69bc50bf270708f2272a.zip
Merge pull request #124 from reaperhulk/hash-saga-sha2
Hash Saga Part 4 (SHA2 support)
-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",
+ )