Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/src/secp256k1.c
Show First 20 Lines • Show All 285 Lines • ▼ Show 20 Lines | |||||
int secp256k1_ec_pubkey_serialize(const secp256k1_context* ctx, unsigned char *output, size_t *outputlen, const secp256k1_pubkey* pubkey, unsigned int flags) { | int secp256k1_ec_pubkey_serialize(const secp256k1_context* ctx, unsigned char *output, size_t *outputlen, const secp256k1_pubkey* pubkey, unsigned int flags) { | ||||
secp256k1_ge Q; | secp256k1_ge Q; | ||||
size_t len; | size_t len; | ||||
int ret = 0; | int ret = 0; | ||||
VERIFY_CHECK(ctx != NULL); | VERIFY_CHECK(ctx != NULL); | ||||
ARG_CHECK(outputlen != NULL); | ARG_CHECK(outputlen != NULL); | ||||
ARG_CHECK(*outputlen >= ((flags & SECP256K1_FLAGS_BIT_COMPRESSION) ? 33 : 65)); | ARG_CHECK(*outputlen >= ((flags & SECP256K1_FLAGS_BIT_COMPRESSION) ? 33u : 65u)); | ||||
len = *outputlen; | len = *outputlen; | ||||
*outputlen = 0; | *outputlen = 0; | ||||
ARG_CHECK(output != NULL); | ARG_CHECK(output != NULL); | ||||
memset(output, 0, len); | memset(output, 0, len); | ||||
ARG_CHECK(pubkey != NULL); | ARG_CHECK(pubkey != NULL); | ||||
ARG_CHECK((flags & SECP256K1_FLAGS_TYPE_MASK) == SECP256K1_FLAGS_TYPE_COMPRESSION); | ARG_CHECK((flags & SECP256K1_FLAGS_TYPE_MASK) == SECP256K1_FLAGS_TYPE_COMPRESSION); | ||||
if (secp256k1_pubkey_load(ctx, &Q, pubkey)) { | if (secp256k1_pubkey_load(ctx, &Q, pubkey)) { | ||||
ret = secp256k1_eckey_pubkey_serialize(&Q, output, &len, flags & SECP256K1_FLAGS_BIT_COMPRESSION); | ret = secp256k1_eckey_pubkey_serialize(&Q, output, &len, flags & SECP256K1_FLAGS_BIT_COMPRESSION); | ||||
▲ Show 20 Lines • Show All 434 Lines • Show Last 20 Lines |