musig: update to BIP v0.5.1 "Rename ordinary tweaking to plain"
This commit is contained in:
parent
cbe2815633
commit
060887e9d7
@ -55,13 +55,13 @@ int create_keypair(const secp256k1_context* ctx, struct signer_secrets *signer_s
|
|||||||
* and return the tweaked aggregate pk. */
|
* and return the tweaked aggregate pk. */
|
||||||
int tweak(const secp256k1_context* ctx, secp256k1_xonly_pubkey *agg_pk, secp256k1_musig_keyagg_cache *cache) {
|
int tweak(const secp256k1_context* ctx, secp256k1_xonly_pubkey *agg_pk, secp256k1_musig_keyagg_cache *cache) {
|
||||||
secp256k1_pubkey output_pk;
|
secp256k1_pubkey output_pk;
|
||||||
unsigned char ordinary_tweak[32] = "this could be a BIP32 tweak....";
|
unsigned char plain_tweak[32] = "this could be a BIP32 tweak....";
|
||||||
unsigned char xonly_tweak[32] = "this could be a taproot tweak..";
|
unsigned char xonly_tweak[32] = "this could be a taproot tweak..";
|
||||||
|
|
||||||
|
|
||||||
/* Ordinary tweaking which, for example, allows deriving multiple child
|
/* Plain tweaking which, for example, allows deriving multiple child
|
||||||
* public keys from a single aggregate key using BIP32 */
|
* public keys from a single aggregate key using BIP32 */
|
||||||
if (!secp256k1_musig_pubkey_ec_tweak_add(ctx, NULL, cache, ordinary_tweak)) {
|
if (!secp256k1_musig_pubkey_ec_tweak_add(ctx, NULL, cache, plain_tweak)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* Note that we did not provided an output_pk argument, because the
|
/* Note that we did not provided an output_pk argument, because the
|
||||||
|
@ -226,7 +226,7 @@ SECP256K1_API int secp256k1_musig_pubkey_agg(
|
|||||||
/** Obtain the aggregate public key from a keyagg_cache.
|
/** Obtain the aggregate public key from a keyagg_cache.
|
||||||
*
|
*
|
||||||
* This is only useful if you need the non-xonly public key, in particular for
|
* This is only useful if you need the non-xonly public key, in particular for
|
||||||
* ordinary (non-xonly) tweaking or batch-verifying multiple key aggregations
|
* plain (non-xonly) tweaking or batch-verifying multiple key aggregations
|
||||||
* (not implemented).
|
* (not implemented).
|
||||||
*
|
*
|
||||||
* Returns: 0 if the arguments are invalid, 1 otherwise
|
* Returns: 0 if the arguments are invalid, 1 otherwise
|
||||||
@ -241,7 +241,7 @@ SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_musig_pubkey_get(
|
|||||||
secp256k1_musig_keyagg_cache *keyagg_cache
|
secp256k1_musig_keyagg_cache *keyagg_cache
|
||||||
) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3);
|
) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3);
|
||||||
|
|
||||||
/** Apply ordinary "EC" tweaking to a public key in a given keyagg_cache by
|
/** Apply plain "EC" tweaking to a public key in a given keyagg_cache by
|
||||||
* adding the generator multiplied with `tweak32` to it. This is useful for
|
* adding the generator multiplied with `tweak32` to it. This is useful for
|
||||||
* deriving child keys from an aggregate public key via BIP32.
|
* deriving child keys from an aggregate public key via BIP32.
|
||||||
*
|
*
|
||||||
|
@ -23,7 +23,7 @@ Therefore, users of the musig module must take great care to make sure of the fo
|
|||||||
# Key Aggregation and (Taproot) Tweaking
|
# Key Aggregation and (Taproot) Tweaking
|
||||||
|
|
||||||
Given a set of public keys, the aggregate public key is computed with `secp256k1_musig_pubkey_agg`.
|
Given a set of public keys, the aggregate public key is computed with `secp256k1_musig_pubkey_agg`.
|
||||||
A (Taproot) tweak can be added to the resulting public key with `secp256k1_xonly_pubkey_tweak_add` and an ordinary tweak can be added with `secp256k1_ec_pubkey_tweak_add`.
|
A (Taproot) tweak can be added to the resulting public key with `secp256k1_xonly_pubkey_tweak_add` and a plain tweak can be added with `secp256k1_ec_pubkey_tweak_add`.
|
||||||
|
|
||||||
# Signing
|
# Signing
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ Essentially, the protocol proceeds in the following steps:
|
|||||||
|
|
||||||
1. Generate a keypair with `secp256k1_keypair_create` and obtain the xonly public key with `secp256k1_keypair_xonly_pub`.
|
1. Generate a keypair with `secp256k1_keypair_create` and obtain the xonly public key with `secp256k1_keypair_xonly_pub`.
|
||||||
2. Call `secp256k1_musig_pubkey_agg` with the xonly pubkeys of all participants.
|
2. Call `secp256k1_musig_pubkey_agg` with the xonly pubkeys of all participants.
|
||||||
3. Optionally add a (Taproot) tweak with `secp256k1_musig_pubkey_xonly_tweak_add` and an ordinary tweak with `secp256k1_musig_pubkey_ec_tweak_add`.
|
3. Optionally add a (Taproot) tweak with `secp256k1_musig_pubkey_xonly_tweak_add` and a plain tweak with `secp256k1_musig_pubkey_ec_tweak_add`.
|
||||||
4. Generate a pair of secret and public nonce with `secp256k1_musig_nonce_gen` and send the public nonce to the other signers.
|
4. Generate a pair of secret and public nonce with `secp256k1_musig_nonce_gen` and send the public nonce to the other signers.
|
||||||
5. Someone (not necessarily the signer) aggregates the public nonce with `secp256k1_musig_nonce_agg` and sends it to the signers.
|
5. Someone (not necessarily the signer) aggregates the public nonce with `secp256k1_musig_nonce_agg` and sends it to the signers.
|
||||||
6. Process the aggregate nonce with `secp256k1_musig_nonce_process`.
|
6. Process the aggregate nonce with `secp256k1_musig_nonce_process`.
|
||||||
|
@ -857,7 +857,7 @@ void musig_tweak_test_helper(const secp256k1_xonly_pubkey* agg_pk, const unsigne
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Create aggregate public key P[0], tweak multiple times (using xonly and
|
/* Create aggregate public key P[0], tweak multiple times (using xonly and
|
||||||
* ordinary tweaking) and test signing. */
|
* plain tweaking) and test signing. */
|
||||||
void musig_tweak_test(secp256k1_scratch_space *scratch) {
|
void musig_tweak_test(secp256k1_scratch_space *scratch) {
|
||||||
unsigned char sk[2][32];
|
unsigned char sk[2][32];
|
||||||
secp256k1_xonly_pubkey pk[2];
|
secp256k1_xonly_pubkey pk[2];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user