7 #ifndef SECP256K1_ECMULT_GEN_IMPL_H 8 #define SECP256K1_ECMULT_GEN_IMPL_H 18 secp256k1_ecmult_gen_blind(ctx, NULL);
28 secp256k1_scalar_clear(&ctx->
blind);
29 secp256k1_gej_clear(&ctx->
initial);
55 memset(&adds, 0,
sizeof(adds));
58 secp256k1_scalar_add(&gnb, gn, &ctx->
blind);
60 for (i = 0; i < n; i++) {
61 n_i = secp256k1_scalar_get_bits(&gnb, i *
bits,
bits);
62 for (j = 0; j < g; j++) {
75 secp256k1_ge_from_storage(&add, &adds);
76 secp256k1_gej_add_ge(r, r, &add);
79 secp256k1_ge_clear(&add);
80 secp256k1_scalar_clear(&gnb);
88 unsigned char nonce32[32];
91 unsigned char keydata[64];
94 secp256k1_gej_set_ge(&ctx->
initial, &secp256k1_ge_const_g);
96 secp256k1_scalar_set_int(&ctx->
blind, 1);
100 secp256k1_scalar_get_b32(keydata, &ctx->
blind);
106 memcpy(keydata + 32, seed32, 32);
107 secp256k1_rfc6979_hmac_sha256_initialize(&rng, keydata, 64);
108 memset(keydata, 0,
sizeof(keydata));
110 secp256k1_rfc6979_hmac_sha256_generate(&rng, nonce32, 32);
111 overflow = !secp256k1_fe_set_b32(&s, nonce32);
112 overflow |= secp256k1_fe_is_zero(&s);
113 secp256k1_fe_cmov(&s, &secp256k1_fe_one, overflow);
116 secp256k1_gej_rescale(&ctx->
initial, &s);
117 secp256k1_fe_clear(&s);
118 secp256k1_rfc6979_hmac_sha256_generate(&rng, nonce32, 32);
119 secp256k1_scalar_set_b32(&b, nonce32, NULL);
121 secp256k1_scalar_cmov(&b, &secp256k1_scalar_one, secp256k1_scalar_is_zero(&b));
122 secp256k1_rfc6979_hmac_sha256_finalize(&rng);
123 memset(nonce32, 0, 32);
125 secp256k1_ecmult_gen(ctx, &gb, &b);
126 secp256k1_scalar_negate(&b, &b);
129 secp256k1_scalar_clear(&b);
130 secp256k1_gej_clear(&gb);
#define VERIFY_CHECK(cond)
#define ECMULT_GEN_PREC_G(bits)
const secp256k1_ge_storage secp256k1_ecmult_gen_prec_table[ECMULT_GEN_PREC_N(ECMULT_GEN_PREC_BITS)][ECMULT_GEN_PREC_G(ECMULT_GEN_PREC_BITS)]
#define ECMULT_GEN_PREC_N(bits)
void * memcpy(void *a, const void *b, size_t c)
#define ECMULT_GEN_PREC_BITS