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] = {0};
94 secp256k1_gej_set_ge(&ctx->
initial, &secp256k1_ge_const_g);
96 secp256k1_scalar_set_int(&ctx->
blind, 1);
99 secp256k1_scalar_get_b32(nonce32, &ctx->
blind);
104 memcpy(keydata, nonce32, 32);
105 if (seed32 != NULL) {
106 memcpy(keydata + 32, seed32, 32);
108 secp256k1_rfc6979_hmac_sha256_initialize(&rng, keydata, seed32 ? 64 : 32);
109 memset(keydata, 0,
sizeof(keydata));
111 secp256k1_rfc6979_hmac_sha256_generate(&rng, nonce32, 32);
112 overflow = !secp256k1_fe_set_b32(&
s, nonce32);
114 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);
124 secp256k1_ecmult_gen(ctx, &gb, &b);
125 secp256k1_scalar_negate(&b, &b);
128 secp256k1_scalar_clear(&b);
129 secp256k1_gej_clear(&gb);
#define ECMULT_GEN_PREC_G(bits)
#define ECMULT_GEN_PREC_N(bits)
#define ECMULT_GEN_PREC_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)]
memset(pInfo->slotDescription, ' ', 64)
memcpy((char *) pInfo->slotDescription, s, l)