Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/src/secp256k1.c
Show First 20 Lines • Show All 577 Lines • ▼ Show 20 Lines | int secp256k1_ec_pubkey_create(const secp256k1_context* ctx, secp256k1_pubkey *pubkey, const unsigned char *seckey) { | ||||
VERIFY_CHECK(ctx != NULL); | VERIFY_CHECK(ctx != NULL); | ||||
ARG_CHECK(pubkey != NULL); | ARG_CHECK(pubkey != NULL); | ||||
memset(pubkey, 0, sizeof(*pubkey)); | memset(pubkey, 0, sizeof(*pubkey)); | ||||
ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); | ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); | ||||
ARG_CHECK(seckey != NULL); | ARG_CHECK(seckey != NULL); | ||||
ret = secp256k1_ec_pubkey_create_helper(&ctx->ecmult_gen_ctx, &seckey_scalar, &p, seckey); | ret = secp256k1_ec_pubkey_create_helper(&ctx->ecmult_gen_ctx, &seckey_scalar, &p, seckey); | ||||
secp256k1_pubkey_save(pubkey, &p); | secp256k1_pubkey_save(pubkey, &p); | ||||
memczero(pubkey, sizeof(*pubkey), !ret); | secp256k1_memczero(pubkey, sizeof(*pubkey), !ret); | ||||
secp256k1_scalar_clear(&seckey_scalar); | secp256k1_scalar_clear(&seckey_scalar); | ||||
return ret; | return ret; | ||||
} | } | ||||
int secp256k1_ec_seckey_negate(const secp256k1_context* ctx, unsigned char *seckey) { | int secp256k1_ec_seckey_negate(const secp256k1_context* ctx, unsigned char *seckey) { | ||||
secp256k1_scalar sec; | secp256k1_scalar sec; | ||||
int ret = 0; | int ret = 0; | ||||
▲ Show 20 Lines • Show All 191 Lines • Show Last 20 Lines |