Commit graph

13 commits

Author SHA1 Message Date
LesCyber
6aaf65009c refactor: use errors.New to replace fmt.Errorf with no parameters
Signed-off-by: LesCyber <andi4cing@gmail.com>
2025-03-06 10:07:26 +08:00
mattn
3cb9f602e8
fix typos (#2100) 2024-03-25 09:44:25 -04:00
xiaolou86
4171854739 Fix typos 2023-11-20 12:04:31 -05:00
sputn1ck
8f84bb0e9b
musig2: fix early nonce gen option
Previously the early nonce generation option was not being respected
when creating the context, with the WithKnownSigners option being
used. This commit fixes that.
2023-07-11 14:01:36 +02:00
sputn1ck
f6279eabbe
btcec/schnorr/musig2: add pk option to NonceGen
This commit adds the pk option to NonceGen and makes it mandatory.

Reference: a89f8578e1
2022-11-03 23:01:41 +01:00
Olaoluwa Osuntokun
eef9fbc5c9
btcec/schnorr/musig2: always pass in priv key for early nonce gen
This helps mitigate an issue discovered in musig2 under certain
scenarios:
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-October/021000.html.
2022-10-25 16:34:17 -07:00
Olaoluwa Osuntokun
1567f20055
btcec/schnorr/musig2: update to musig 1.0.0
The major change in musig 1.0.0 is that plain public keys are used as
input to key aggregation.
2022-10-20 17:57:46 -07:00
Olaoluwa Osuntokun
ba20c75aaf
btcec/schnorr/musig2: pass in aux info during nonce generation 2022-04-28 16:20:07 -07:00
Olaoluwa Osuntokun
953e2dd94a
btcec/schnorr/musig2: enable early nonce generation w/ a context
In this commit, we enable early nonce generation, allowing callers to
obtain generated nonces before the total set of signers is actually
known. This type of nonce generation is useful for contexts like LN
funding when we want to minimize the round trips and send nonces before
we know the pubkey of the other party.
2022-04-28 16:20:05 -07:00
Olaoluwa Osuntokun
9d0d52708a
btcec/schnorr/musig2: add explicit support for BIP 86 multi-signing
In this commit, we add a series of new functional optinos to make
signing for an aggregated key where the final taproot output key was
derived using BIP 86. This can be used in cases where no script path
shuold be allowed, and only an n-of-n multi-sig should be used.
2022-04-28 16:19:59 -07:00
Olaoluwa Osuntokun
f7168c8663
schnorr/musig2: add native support for taproot output key tweaking
In this commit, we add a series of new options and methods to make it
easier to use the package in the context of a taproot output that
commits to a script root or some other value. Before this series of
changes, the API was hard to use in this context as the taproot tweak
actually includes the internal public key, which in this case is the
aggregated public key. So you actually needed to call that API w/o the
tweak, get that, then recompute the tweak itself.

To make things easier in the taproot context, we've added a series of
new options that'll return the aggregated key before any tweaks (to be
used as the internal key), and also handle computing the BIP 341 tweak
value for the caller.
2022-04-28 16:19:57 -07:00
Olaoluwa Osuntokun
08187eb786
btcec/schnorr/musig2: add support for tweaked aggregated keys
In this commit, we add support for signing with tweaked aggregated keys.
Such signing is required when signing for a taproot output key that
actually commits to a script tree root, or was generated using BIP 86.

A series of new functional arguments (that can likely be de-dup'd using
Go's new type params), have been added to allow callers to optionally
flip on this new behavior.
2022-04-28 16:19:55 -07:00
Olaoluwa Osuntokun
743cbc8403
btcec/schnorr/musig2: add safer signing API with Session+Context
In this commit, we introduce an easier to use API for musig2 signing in
the Session and Context structs.

The Context struct represents a particular musig2 signing context which
is defined by the set of signers. The struct can be serialized to disk
as it contains no volatile information. A given context can be kept for
each signer in the final set.

The Session struct represents an ephemeral musig2 signing session. It
handles nonce generation, key aggregation, nonce combination, signature
combination, and final sig verification all in one API. The API also
protects against nonce generation by not exposing nonces to the end user
and also attempting to catch nonce re-use (assuming no process forking)
across sessions.
2022-04-28 16:19:53 -07:00