diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2018-07-17 19:33:05 +0800 |
---|---|---|
committer | Alex Gaynor <alex.gaynor@gmail.com> | 2018-07-17 07:33:05 -0400 |
commit | d1c73fd7827ea05505b033a0b126c35749430ea9 (patch) | |
tree | 46fb21d2e4b4b1e645bcab7ab3e711ae134d8da0 /tests | |
parent | 5d187402775bcb7bc8b0da1d972d36bf9ad9dbff (diff) | |
download | cryptography-d1c73fd7827ea05505b033a0b126c35749430ea9.tar.gz cryptography-d1c73fd7827ea05505b033a0b126c35749430ea9.tar.bz2 cryptography-d1c73fd7827ea05505b033a0b126c35749430ea9.zip |
add DSA wycheproof tests (#4346)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/wycheproof/test_dsa.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/wycheproof/test_dsa.py b/tests/wycheproof/test_dsa.py new file mode 100644 index 00000000..3dc3056e --- /dev/null +++ b/tests/wycheproof/test_dsa.py @@ -0,0 +1,49 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import absolute_import, division, print_function + +import binascii + +import pytest + +from cryptography.exceptions import InvalidSignature +from cryptography.hazmat.backends.interfaces import DSABackend +from cryptography.hazmat.primitives import hashes, serialization + + +_DIGESTS = { + "SHA-1": hashes.SHA1(), + "SHA-224": hashes.SHA224(), + "SHA-256": hashes.SHA256(), +} + + +@pytest.mark.requires_backend_interface(interface=DSABackend) +@pytest.mark.wycheproof_tests( + "dsa_test.json", +) +def test_dsa_signature(backend, wycheproof): + key = serialization.load_der_public_key( + binascii.unhexlify(wycheproof.testgroup["keyDer"]), backend + ) + digest = _DIGESTS[wycheproof.testgroup["sha"]] + + if ( + wycheproof.valid or ( + wycheproof.acceptable and not wycheproof.has_flag("NoLeadingZero") + ) + ): + key.verify( + binascii.unhexlify(wycheproof.testcase["sig"]), + binascii.unhexlify(wycheproof.testcase["msg"]), + digest, + ) + else: + with pytest.raises(InvalidSignature): + key.verify( + binascii.unhexlify(wycheproof.testcase["sig"]), + binascii.unhexlify(wycheproof.testcase["msg"]), + digest, + ) |