summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Ruffing <crypto@timruffing.de>2020-03-17 02:30:39 +0100
committerTim Ruffing <crypto@timruffing.de>2020-03-17 02:30:39 +0100
commit72657270d8e4d6ef193878f1e743301edfae0e31 (patch)
treea220f40bd9543f26a584197eda9f494e09289806
parent07d938a214475929e08df17e725b3904a3429dbf (diff)
downloadbips-72657270d8e4d6ef193878f1e743301edfae0e31.tar.xz
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.
-rw-r--r--bip-0340/reference.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/bip-0340/reference.py b/bip-0340/reference.py
index da1e689..6b1645c 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: