diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2013-10-18 21:07:36 -0500 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2013-10-18 21:24:05 -0500 |
commit | 7e5697c6f597ac6b0550ae3dbcc19482d10f3efe (patch) | |
tree | d73f154b93e3a20a976ec9bb166a5e52e49469e6 | |
parent | a3011beae965fde326d4977d850b2aaa9c7b216e (diff) | |
download | cryptography-7e5697c6f597ac6b0550ae3dbcc19482d10f3efe.tar.gz cryptography-7e5697c6f597ac6b0550ae3dbcc19482d10f3efe.tar.bz2 cryptography-7e5697c6f597ac6b0550ae3dbcc19482d10f3efe.zip |
SHA-2 family support
-rw-r--r-- | cryptography/primitives/hashes.py | 24 | ||||
-rw-r--r-- | tests/primitives/test_hash_vectors.py | 56 | ||||
-rw-r--r-- | tests/primitives/test_hashes.py | 40 |
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", + ) |