-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Description
Hey folks,
ECDSA verify
Line 207 in 1e5d50f
static int secp256k1_ecdsa_sig_verify(const secp256k1_ecmult_context *ctx, const secp256k1_scalar *sigr, const secp256k1_scalar *sigs, const secp256k1_ge *pubkey, const secp256k1_scalar *message) { |
secp256k1/src/scalar_4x64_impl.h
Line 559 in 1e5d50f
static void secp256k1_scalar_mul_512(uint64_t l[8], const secp256k1_scalar *a, const secp256k1_scalar *b) { |
accepts all-zero hash aka (0, 0, 0 ....). Is this a valid behavior? Seems like it could enable fault attacks. The algorithm is as follows, as per https://www.secg.org/sec1-v2.pdf 4.1.4:
u1 = es^−1 mod n
andu2 = rs^−1 mod n
R = (xR, yR) = u1 * G + u2 * Q * U
e == 0
, thenu1 == 0
, thenu1 * G
is invalid because you cannot multiply G by 0
Metadata
Metadata
Assignees
Labels
No labels