introduce secp256k1_eckey_pubkey_serialize{33,65} functions
This commit is contained in:
@@ -16,6 +16,10 @@
|
|||||||
|
|
||||||
static int secp256k1_eckey_pubkey_parse(secp256k1_ge *elem, const unsigned char *pub, size_t size);
|
static int secp256k1_eckey_pubkey_parse(secp256k1_ge *elem, const unsigned char *pub, size_t size);
|
||||||
static int secp256k1_eckey_pubkey_serialize(secp256k1_ge *elem, unsigned char *pub, size_t *size, int compressed);
|
static int secp256k1_eckey_pubkey_serialize(secp256k1_ge *elem, unsigned char *pub, size_t *size, int compressed);
|
||||||
|
/** Serialize a group element (that is not allowed to be infinity) to a compressed public key (33 bytes). */
|
||||||
|
static void secp256k1_eckey_pubkey_serialize33(secp256k1_ge *elem, unsigned char *pub33);
|
||||||
|
/** Serialize a group element (that is not allowed to be infinity) to an uncompressed public key (65 bytes). */
|
||||||
|
static void secp256k1_eckey_pubkey_serialize65(secp256k1_ge *elem, unsigned char *pub65);
|
||||||
|
|
||||||
static int secp256k1_eckey_privkey_tweak_add(secp256k1_scalar *key, const secp256k1_scalar *tweak);
|
static int secp256k1_eckey_privkey_tweak_add(secp256k1_scalar *key, const secp256k1_scalar *tweak);
|
||||||
static int secp256k1_eckey_pubkey_tweak_add(secp256k1_ge *key, const secp256k1_scalar *tweak);
|
static int secp256k1_eckey_pubkey_tweak_add(secp256k1_ge *key, const secp256k1_scalar *tweak);
|
||||||
|
|||||||
@@ -55,6 +55,25 @@ static int secp256k1_eckey_pubkey_serialize(secp256k1_ge *elem, unsigned char *p
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void secp256k1_eckey_pubkey_serialize33(secp256k1_ge *elem, unsigned char *pub33) {
|
||||||
|
VERIFY_CHECK(!secp256k1_ge_is_infinity(elem));
|
||||||
|
|
||||||
|
secp256k1_fe_normalize_var(&elem->x);
|
||||||
|
secp256k1_fe_normalize_var(&elem->y);
|
||||||
|
pub33[0] = secp256k1_fe_is_odd(&elem->y) ? SECP256K1_TAG_PUBKEY_ODD : SECP256K1_TAG_PUBKEY_EVEN;
|
||||||
|
secp256k1_fe_get_b32(&pub33[1], &elem->x);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void secp256k1_eckey_pubkey_serialize65(secp256k1_ge *elem, unsigned char *pub65) {
|
||||||
|
VERIFY_CHECK(!secp256k1_ge_is_infinity(elem));
|
||||||
|
|
||||||
|
secp256k1_fe_normalize_var(&elem->x);
|
||||||
|
secp256k1_fe_normalize_var(&elem->y);
|
||||||
|
pub65[0] = SECP256K1_TAG_PUBKEY_UNCOMPRESSED;
|
||||||
|
secp256k1_fe_get_b32(&pub65[1], &elem->x);
|
||||||
|
secp256k1_fe_get_b32(&pub65[33], &elem->y);
|
||||||
|
}
|
||||||
|
|
||||||
static int secp256k1_eckey_privkey_tweak_add(secp256k1_scalar *key, const secp256k1_scalar *tweak) {
|
static int secp256k1_eckey_privkey_tweak_add(secp256k1_scalar *key, const secp256k1_scalar *tweak) {
|
||||||
secp256k1_scalar_add(key, key, tweak);
|
secp256k1_scalar_add(key, key, tweak);
|
||||||
return !secp256k1_scalar_is_zero(key);
|
return !secp256k1_scalar_is_zero(key);
|
||||||
|
|||||||
Reference in New Issue
Block a user