Skip to content

New ECDSA API without prehashed messages #974

@paulmillr

Description

@paulmillr

Hey folks,

ECDSA verify

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) {

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:

  1. u1 = es^−1 mod n and u2 = rs^−1 mod n
  2. R = (xR, yR) = u1 * G + u2 * Q * U
  3. e == 0, then u1 == 0, then u1 * G is invalid because you cannot multiply G by 0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions