Nonce usage in ECDSA signing algorithm I'm trying to understand the signing function secp256k1_ecdsa_sig_sign(), and I'm curious about the nonce usage here.   static int secp256k1_ecdsa_sig_sign(const secp256k1_ecmult_gen_context *ctx, secp256k1_scalar *sigr, secp256k1_scalar *sigs, const secp256k1_scalar *seckey, const secp256k1_scalar *message, const secp256k1_scalar *nonce, int *recid) {   unsigned char b[32];   secp256k1_gej rp;   secp256k1_ge r;   secp256k1_scalar n;   int overflow = 0;    secp256k1_ecmult_gen(ctx, &rp, nonce);   secp256k1_ge_set_gej(&r, &rp);   secp256k1_fe_normalize(&r.x);   secp256k1_fe_normalize(&r.y);   secp256k1_fe_get_b32(b, &r.x);   secp256k1_scalar_set_b32(sigr, b, &overflow);   /* These two conditions should be checked before calling */   VERIFY_CHECK(!secp256k1_scalar_is_zero(sigr));   VERIFY_CHECK(overflow == 0);    if (recid) {     /* The overflow condition is cryptographically unreachable as hitting   it requires f...
 
Comments
Post a Comment