From 72657270d8e4d6ef193878f1e743301edfae0e31 Mon Sep 17 00:00:00 2001 From: Tim Ruffing Date: Tue, 17 Mar 2020 02:30:39 +0100 Subject: [PATCH] When checking test vectors, handle RuntimeException in signing This is better for playing around with the code. Now these these exceptions can really be raised when the verification during signing fails. --- bip-0340/reference.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/bip-0340/reference.py b/bip-0340/reference.py index da1e689c..6b1645cc 100644 --- a/bip-0340/reference.py +++ b/bip-0340/reference.py @@ -122,7 +122,7 @@ def schnorr_sign(msg, seckey, aux_rand): sig = bytes_from_point(R) + bytes_from_int((k + e * d) % n) debug_print_vars() if not schnorr_verify(msg, bytes_from_point(P), sig): - raise RuntimeError('The signature does not pass verification.') + raise RuntimeError('The created signature does not pass verification.') return sig def schnorr_verify(msg, pubkey, sig): @@ -173,13 +173,17 @@ def test_vectors(): print(' Expected key:', pubkey.hex().upper()) print(' Actual key:', pubkey_actual.hex().upper()) aux_rand = bytes.fromhex(aux_rand) - sig_actual = schnorr_sign(msg, seckey, aux_rand) - if sig == sig_actual: - print(' * Passed signing test.') - else: - print(' * Failed signing test.') - print(' Expected signature:', sig.hex().upper()) - print(' Actual signature:', sig_actual.hex().upper()) + try: + sig_actual = schnorr_sign(msg, seckey, aux_rand) + if sig == sig_actual: + print(' * Passed signing test.') + else: + print(' * Failed signing test.') + print(' Expected signature:', sig.hex().upper()) + print(' Actual signature:', sig_actual.hex().upper()) + all_passed = False + except RuntimeError as e: + print(' * Signing test raised exception:', e) all_passed = False result_actual = schnorr_verify(msg, pubkey, sig) if result == result_actual: