From bde6fb52129909cf319157dba95d65fb557d5013 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Fri, 18 Oct 2013 18:08:49 -0500 Subject: Hash Saga Part 3 - API changes + SHA1 support + tests --- tests/primitives/test_hashes.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tests/primitives/test_hashes.py (limited to 'tests/primitives/test_hashes.py') diff --git a/tests/primitives/test_hashes.py b/tests/primitives/test_hashes.py new file mode 100644 index 00000000..3419b14d --- /dev/null +++ b/tests/primitives/test_hashes.py @@ -0,0 +1,28 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import, division, print_function + +from cryptography.primitives import hashes + +from .utils import generate_base_hash_test + + +class TestSHA1(object): + test_SHA1 = generate_base_hash_test( + lambda api: hashes.SHA1(api=api), + digest_size=20, + block_size=64, + only_if=lambda api: api.supports_hash("sha1"), + skip_message="Does not support SHA1", + ) -- cgit v1.2.3 From bb069c2fee6460185ee435ea848d80bab2ccec6c Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Fri, 18 Oct 2013 19:51:01 -0500 Subject: remove unneeded lambdas from tests --- tests/primitives/test_hashes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/primitives/test_hashes.py') diff --git a/tests/primitives/test_hashes.py b/tests/primitives/test_hashes.py index 3419b14d..1bc2e9e9 100644 --- a/tests/primitives/test_hashes.py +++ b/tests/primitives/test_hashes.py @@ -20,7 +20,7 @@ from .utils import generate_base_hash_test class TestSHA1(object): test_SHA1 = generate_base_hash_test( - lambda api: hashes.SHA1(api=api), + hashes.SHA1, digest_size=20, block_size=64, only_if=lambda api: api.supports_hash("sha1"), -- cgit v1.2.3 From ba3b471e4b0f56e65acdb9d5daf64eb726d9c371 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Fri, 18 Oct 2013 20:53:04 -0500 Subject: change api.supports_hash to take a hash class rather than a str * This change means hash class names will be byte strings and we no longer need to encode to ascii on hashobject.name in create_hash_context --- tests/primitives/test_hashes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/primitives/test_hashes.py') diff --git a/tests/primitives/test_hashes.py b/tests/primitives/test_hashes.py index 1bc2e9e9..4ad5c89a 100644 --- a/tests/primitives/test_hashes.py +++ b/tests/primitives/test_hashes.py @@ -23,6 +23,6 @@ class TestSHA1(object): hashes.SHA1, digest_size=20, block_size=64, - only_if=lambda api: api.supports_hash("sha1"), + only_if=lambda api: api.supports_hash(hashes.SHA1), skip_message="Does not support SHA1", ) -- cgit v1.2.3 From 7e5697c6f597ac6b0550ae3dbcc19482d10f3efe Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Fri, 18 Oct 2013 21:07:36 -0500 Subject: SHA-2 family support --- tests/primitives/test_hashes.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'tests/primitives/test_hashes.py') 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", + ) -- cgit v1.2.3 From c179407406f0ef5c2b7b5b6316521408ba3803b3 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Fri, 18 Oct 2013 21:42:57 -0500 Subject: ripemd160 support + long string hash test * Note that the long string hash test for RIPEMD160 adds a vector in the test. You can verify this vector (for b"a" * 1000000) on the RIPE homepage: http://homes.esat.kuleuven.be/~bosselae/ripemd160.html --- tests/primitives/test_hashes.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'tests/primitives/test_hashes.py') diff --git a/tests/primitives/test_hashes.py b/tests/primitives/test_hashes.py index 2f2dd1c7..bfb45037 100644 --- a/tests/primitives/test_hashes.py +++ b/tests/primitives/test_hashes.py @@ -66,3 +66,13 @@ class TestSHA512(object): only_if=lambda api: api.supports_hash(hashes.SHA512), skip_message="Does not support SHA512", ) + + +class TestRIPEMD160(object): + test_RIPEMD160 = generate_base_hash_test( + hashes.RIPEMD160, + digest_size=20, + block_size=64, + only_if=lambda api: api.supports_hash(hashes.RIPEMD160), + skip_message="Does not support RIPEMD160", + ) -- cgit v1.2.3 From 79ff8bf91838e0e98ec75b467c0650968bf4f626 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Fri, 18 Oct 2013 22:07:29 -0500 Subject: Whirlpool support --- tests/primitives/test_hashes.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'tests/primitives/test_hashes.py') diff --git a/tests/primitives/test_hashes.py b/tests/primitives/test_hashes.py index bfb45037..982fc7cd 100644 --- a/tests/primitives/test_hashes.py +++ b/tests/primitives/test_hashes.py @@ -76,3 +76,13 @@ class TestRIPEMD160(object): only_if=lambda api: api.supports_hash(hashes.RIPEMD160), skip_message="Does not support RIPEMD160", ) + + +class TestWhirlpool(object): + test_Whirlpool = generate_base_hash_test( + hashes.Whirlpool, + digest_size=64, + block_size=64, + only_if=lambda api: api.supports_hash(hashes.Whirlpool), + skip_message="Does not support Whirlpool", + ) -- cgit v1.2.3 From 36e7d0df315dca887f5b073e17209ee3eeb5a576 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Fri, 18 Oct 2013 18:54:40 -0500 Subject: MD5 support + documentation for all hashes --- tests/primitives/test_hashes.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'tests/primitives/test_hashes.py') diff --git a/tests/primitives/test_hashes.py b/tests/primitives/test_hashes.py index 982fc7cd..901ddabb 100644 --- a/tests/primitives/test_hashes.py +++ b/tests/primitives/test_hashes.py @@ -86,3 +86,13 @@ class TestWhirlpool(object): only_if=lambda api: api.supports_hash(hashes.Whirlpool), skip_message="Does not support Whirlpool", ) + + +class TestMD5(object): + test_MD5 = generate_base_hash_test( + hashes.MD5, + digest_size=16, + block_size=64, + only_if=lambda api: api.supports_hash(hashes.MD5), + skip_message="Does not support MD5", + ) -- cgit v1.2.3