mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 12:02:48 +01:00
Merge #20326: tests: Fix ecdsa_verify in test framework
568a1d72619371a45b14a8356d3f80bd0c0efabc fix ecdsa verify in test framework (Stepan Snigirev) Pull request description: This PR fixes a small bug in the test framework in `verify_ecdsa` function. `r` in ecdsa signature is modulo curve order, so if the point `R` calculated during verification has x-coordinate that is larger than the curve order, the verification will fail in the test framework but pass in libsecp256k1. Example (all in hex): public key: `0289d889551598a0263746c01e5882ccf9b7dc4ca5a37108482c9d80de40e0a8cf` der signature: `3006020104020104` (r = 4, s = 4) message: `3232323232323232323232323232323232323232323232323232323232323232` libsecp256k1 returns `true`, test framework returns `false`. ACKs for top commit: sipa: utACK 568a1d72619371a45b14a8356d3f80bd0c0efabc Tree-SHA512: 9e9c58498f10085d2ad85e95caff6c92793799d2a40696ef43febcd7d313c8c3d5ecec715ca903cbb8432a8a96bd0065d86d060966d4ee651c3871ce16c252bf
This commit is contained in:
parent
8d58fdf1a9
commit
618203e693
@ -318,7 +318,7 @@ class ECPubKey():
|
|||||||
u1 = z*w % SECP256K1_ORDER
|
u1 = z*w % SECP256K1_ORDER
|
||||||
u2 = r*w % SECP256K1_ORDER
|
u2 = r*w % SECP256K1_ORDER
|
||||||
R = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, u1), (self.p, u2)]))
|
R = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, u1), (self.p, u2)]))
|
||||||
if R is None or R[0] != r:
|
if R is None or (R[0] % SECP256K1_ORDER) != r:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user