diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2016-01-10 10:45:29 -0500 |
---|---|---|
committer | Alex Gaynor <alex.gaynor@gmail.com> | 2016-01-10 10:45:29 -0500 |
commit | 41777171d35c2935e5d690cd51edf3ad89803bad (patch) | |
tree | 5dad96fb128b5ec68e087ec7f98d7a97553d5d28 /tests/hazmat/primitives | |
parent | caf9cf64b4beeee00491c125a2d067026355196b (diff) | |
download | cryptography-41777171d35c2935e5d690cd51edf3ad89803bad.tar.gz cryptography-41777171d35c2935e5d690cd51edf3ad89803bad.tar.bz2 cryptography-41777171d35c2935e5d690cd51edf3ad89803bad.zip |
Write some tests for skip conditions in tests.
Without this these branches aren't excersised without 0.9.8, but conceptually they are needed.
Diffstat (limited to 'tests/hazmat/primitives')
-rw-r--r-- | tests/hazmat/primitives/test_dsa.py | 47 | ||||
-rw-r--r-- | tests/hazmat/primitives/test_ec.py | 6 | ||||
-rw-r--r-- | tests/hazmat/primitives/test_rsa.py | 35 |
3 files changed, 63 insertions, 25 deletions
diff --git a/tests/hazmat/primitives/test_dsa.py b/tests/hazmat/primitives/test_dsa.py index d1f8f341..fcfda614 100644 --- a/tests/hazmat/primitives/test_dsa.py +++ b/tests/hazmat/primitives/test_dsa.py @@ -35,6 +35,29 @@ class DummyKeyEncryption(object): pass +@utils.register_interface(hashes.HashAlgorithm) +class DummyHashAlgorithm(object): + name = "dummy" + digest_size = 32 + block_size = 64 + + +def _skip_if_dsa_not_supported(backend, algorithm, p, q, g): + if ( + not backend.dsa_parameters_supported(p, q, g) or + not backend.dsa_hash_supported(algorithm) + ): + pytest.skip( + "{0} does not support the provided parameters".format(backend) + ) + + +@pytest.mark.requires_backend_interface(interface=DSABackend) +def test_skip_if_dsa_not_supported(backend): + with pytest.raises(pytest.skip.Exception): + _skip_if_dsa_not_supported(backend, DummyHashAlgorithm(), 1, 1, 1) + + @pytest.mark.requires_backend_interface(interface=DSABackend) class TestDSA(object): def test_generate_dsa_parameters(self, backend): @@ -552,14 +575,10 @@ class TestDSAVerification(object): def test_dsa_verification(self, vector, backend): digest_algorithm = vector['digest_algorithm'].replace("-", "") algorithm = self._algorithms_dict[digest_algorithm] - if ( - not backend.dsa_parameters_supported( - vector['p'], vector['q'], vector['g'] - ) or not backend.dsa_hash_supported(algorithm) - ): - pytest.skip( - "{0} does not support the provided parameters".format(backend) - ) + + _skip_if_dsa_not_supported( + backend, algorithm, vector['p'], vector['q'], vector['g'] + ) public_key = dsa.DSAPublicNumbers( parameter_numbers=dsa.DSAParameterNumbers( @@ -620,14 +639,10 @@ class TestDSASignature(object): def test_dsa_signing(self, vector, backend): digest_algorithm = vector['digest_algorithm'].replace("-", "") algorithm = self._algorithms_dict[digest_algorithm] - if ( - not backend.dsa_parameters_supported( - vector['p'], vector['q'], vector['g'] - ) or not backend.dsa_hash_supported(algorithm) - ): - pytest.skip( - "{0} does not support the provided parameters".format(backend) - ) + + _skip_if_dsa_not_supported( + backend, algorithm, vector['p'], vector['q'], vector['g'] + ) private_key = dsa.DSAPrivateNumbers( public_numbers=dsa.DSAPublicNumbers( diff --git a/tests/hazmat/primitives/test_ec.py b/tests/hazmat/primitives/test_ec.py index 86132678..600ea27f 100644 --- a/tests/hazmat/primitives/test_ec.py +++ b/tests/hazmat/primitives/test_ec.py @@ -98,6 +98,12 @@ def test_skip_exchange_algorithm_unsupported(backend): _skip_exchange_algorithm_unsupported(backend, ec.ECDH(), DummyCurve()) +@pytest.mark.requires_backend_interface(interface=EllipticCurveBackend) +def test_skip_ecdsa_vector(backend): + with pytest.raises(pytest.skip.Exception): + _skip_ecdsa_vector(backend, DummyCurve, hashes.SHA256) + + def test_ec_numbers(): numbers = ec.EllipticCurvePrivateNumbers( 1, diff --git a/tests/hazmat/primitives/test_rsa.py b/tests/hazmat/primitives/test_rsa.py index b6213d6d..c432db82 100644 --- a/tests/hazmat/primitives/test_rsa.py +++ b/tests/hazmat/primitives/test_rsa.py @@ -53,6 +53,13 @@ class DummyKeyEncryption(object): pass +@utils.register_interface(hashes.HashAlgorithm) +class DummyHashAlgorithm(object): + name = "dummy-hash" + digest_size = 32 + block_size = 64 + + def _flatten_pkcs1_examples(vectors): flattened_vectors = [] for vector in vectors: @@ -64,6 +71,24 @@ def _flatten_pkcs1_examples(vectors): return flattened_vectors +def _skip_pss_hash_algorithm_unsupported(backend, hash_alg): + if not backend.rsa_padding_supported( + padding.PSS( + mgf=padding.MGF1(hash_alg), + salt_length=padding.PSS.MAX_LENGTH + ) + ): + pytest.skip( + "Does not support {0} in MGF1 using PSS.".format(hash_alg.name) + ) + + +@pytest.mark.requires_backend_interface(interface=RSABackend) +def test_skip_pss_hash_algorithm_unsupported(backend): + with pytest.raises(pytest.skip.Exception): + _skip_pss_hash_algorithm_unsupported(backend, DummyHashAlgorithm()) + + def test_modular_inverse(): p = int( "d1f9f6c09fd3d38987f7970247b85a6da84907753d42ec52bc23b745093f4fff5cff3" @@ -268,15 +293,7 @@ class TestRSASignature(object): [hashes.SHA224(), hashes.SHA256(), hashes.SHA384(), hashes.SHA512()] ) def test_pss_signing_sha2(self, hash_alg, backend): - if not backend.rsa_padding_supported( - padding.PSS( - mgf=padding.MGF1(hash_alg), - salt_length=padding.PSS.MAX_LENGTH - ) - ): - pytest.skip( - "Does not support {0} in MGF1 using PSS.".format(hash_alg.name) - ) + _skip_pss_hash_algorithm_unsupported(backend, hash_alg) private_key = RSA_KEY_768.private_key(backend) public_key = private_key.public_key() pss = padding.PSS( |