diff options
author | Alex Stapleton <alexs@prol.etari.at> | 2015-05-03 12:15:55 +0100 |
---|---|---|
committer | Alex Stapleton <alexs@prol.etari.at> | 2015-05-03 12:42:10 +0100 |
commit | fddf29ff64919ea6b885469e0bb47045f6ea22b9 (patch) | |
tree | 5d21bb9bf033d65418d8d673a758d67f400f15d5 /docs/development/custom-vectors/secp256k1 | |
parent | 12cc9a4fcbc628b908652c8a47ae9cf9add56fa3 (diff) | |
download | cryptography-fddf29ff64919ea6b885469e0bb47045f6ea22b9.tar.gz cryptography-fddf29ff64919ea6b885469e0bb47045f6ea22b9.tar.bz2 cryptography-fddf29ff64919ea6b885469e0bb47045f6ea22b9.zip |
Verification script
Diffstat (limited to 'docs/development/custom-vectors/secp256k1')
-rw-r--r-- | docs/development/custom-vectors/secp256k1/verify_secp256k1.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/docs/development/custom-vectors/secp256k1/verify_secp256k1.py b/docs/development/custom-vectors/secp256k1/verify_secp256k1.py new file mode 100644 index 00000000..3d2c25b9 --- /dev/null +++ b/docs/development/custom-vectors/secp256k1/verify_secp256k1.py @@ -0,0 +1,59 @@ +from __future__ import absolute_import, print_function + +import os + +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import ec +from cryptography.hazmat.primitives.asymmetric.utils import ( + encode_rfc6979_signature +) + +from tests.utils import ( + load_fips_ecdsa_signing_vectors, load_vectors_from_file +) + +CRYPTOGRAPHY_HASH_TYPES = { + "SHA-1": hashes.SHA1, + "SHA-224": hashes.SHA224, + "SHA-256": hashes.SHA256, + "SHA-384": hashes.SHA384, + "SHA-512": hashes.SHA512, +} + + +def verify_one_vector(vector): + digest_algorithm = vector['digest_algorithm'] + message = vector['message'] + x = vector['x'] + y = vector['y'] + signature = encode_rfc6979_signature(vector['r'], vector['s']) + + numbers = ec.EllipticCurvePublicNumbers( + x, y, + ec.SECP256K1() + ) + + key = numbers.public_key(default_backend()) + + verifier = key.verifier( + signature, + ec.ECDSA(CRYPTOGRAPHY_HASH_TYPES[digest_algorithm]()) + ) + verifier.update(message) + return verifier.verify() + + +def verify_vectors(vectors): + for vector in vectors: + assert verify_one_vector(vector) + + +vector_path = os.path.join("asymmetric", "ECDSA", "SECP256K1", "SigGen.txt") + +secp256k1_vectors = load_vectors_from_file( + vector_path, + load_fips_ecdsa_signing_vectors +) + +verify_vectors(secp256k1_vectors) |