1#ifndef SECP256K1_MUSIG2_HPP
2#define SECP256K1_MUSIG2_HPP
37 std::array<std::uint8_t, 32>
Q_x;
56 std::array<std::uint8_t, 33>
R1;
57 std::array<std::uint8_t, 33>
R2;
74 const std::array<std::uint8_t, 32>& pub_key,
75 const std::array<std::uint8_t, 32>& agg_pub_key,
76 const std::array<std::uint8_t, 32>& msg,
77 const std::uint8_t* extra_input =
nullptr);
102 const std::array<std::uint8_t, 32>& msg);
116 std::size_t signer_index);
122 const std::array<std::uint8_t, 32>& pubkey,
125 std::size_t signer_index);
132 const std::vector<fast::Scalar>& partial_sigs,
MuSig2KeyAggCtx musig2_key_agg(const std::vector< std::array< std::uint8_t, 32 > > &pubkeys)
MuSig2AggNonce musig2_nonce_agg(const std::vector< MuSig2PubNonce > &pub_nonces)
fast::Scalar musig2_partial_sign(MuSig2SecNonce &sec_nonce, const fast::Scalar &secret_key, const MuSig2KeyAggCtx &key_agg_ctx, const MuSig2Session &session, std::size_t signer_index)
MuSig2Session musig2_start_sign_session(const MuSig2AggNonce &agg_nonce, const MuSig2KeyAggCtx &key_agg_ctx, const std::array< std::uint8_t, 32 > &msg)
bool musig2_partial_verify(const fast::Scalar &partial_sig, const MuSig2PubNonce &pub_nonce, const std::array< std::uint8_t, 32 > &pubkey, const MuSig2KeyAggCtx &key_agg_ctx, const MuSig2Session &session, std::size_t signer_index)
std::pair< MuSig2SecNonce, MuSig2PubNonce > musig2_nonce_gen(const fast::Scalar &secret_key, const std::array< std::uint8_t, 32 > &pub_key, const std::array< std::uint8_t, 32 > &agg_pub_key, const std::array< std::uint8_t, 32 > &msg, const std::uint8_t *extra_input=nullptr)
std::array< std::uint8_t, 64 > musig2_partial_sig_agg(const std::vector< fast::Scalar > &partial_sigs, const MuSig2Session &session)
std::vector< fast::Scalar > key_coefficients
std::array< std::uint8_t, 32 > Q_x
std::array< std::uint8_t, 33 > R2
std::array< std::uint8_t, 33 > R1
static MuSig2PubNonce deserialize(const std::array< std::uint8_t, 66 > &data)
std::array< std::uint8_t, 66 > serialize() const