-
Notifications
You must be signed in to change notification settings - Fork 73
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MuSig2 support #294
base: develop
Are you sure you want to change the base?
MuSig2 support #294
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #294 +/- ##
===========================================
- Coverage 84.76% 84.67% -0.10%
===========================================
Files 17 17
Lines 2186 2231 +45
===========================================
+ Hits 1853 1889 +36
- Misses 333 342 +9
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
Quality Gate failedFailed conditions See analysis details on SonarCloud Catch issues before they fail your Quality Gate with our IDE extension SonarLint |
…icies to more general key expressions
…ed some comments. Generalizing to key expressions containing musig() makes it necessary to distinguish the key expressions in the wallet policy from the actual key placeholders that are just indexes to the list of key informations (@num in the descriptor template), whereas the two concepts were often not clearly separated in the code base. Renaming to "key expressions" makes the distinction more clear.
…on type is used; generalized some parts of the code that are not generalized to musig key expressions, and annotated some others.
256f790
to
4616d67
Compare
aae5a24
to
261d7d6
Compare
…l the internal key expressions, instead of only the first
…ies with multiple internal keys
It will be needed in order to enable silently participating to Round 1 of the MuSig2 protocol, which should only happen if no such fields are found (which would indicate that Round 1 was already executed).
int sign_result = sign_transaction(dc, &st, cache, &signing_state, internal_inputs); | ||
|
||
if (!G_swap_state.called_from_swap) { | ||
ui_post_processing_confirm_transaction(dc, sign_result); |
Check warning
Code scanning / CodeQL
Expression has no effect Warning
ui_post_processing_confirm_transaction
…onfirmation. The first round of MuSig does not involve access to the private keys and does not complete authorizing a transaction. Therefore, it is safe to do it without user confirmation, which allows software wallets to possibly do it in background. In cases when the other cosigners are online, this allows to get a single-sig user experience, as the user would only have to plug the device once, and confirm a single action.
…ded_pubkey_from_client
In the past, while the app was deployed on Nano S, we preferred avoiding the use of Nano S in order to reduce the binary size. Now, using qsort makes the code more readable and succinct.
This is redundant with the current implementation. However, the musigsession module is written in such a way that the calling code has no knowledge about its internal working. Therefore, it should not assume that zeroing out is the correct way of initializing it.
5319025
to
b23a9ad
Compare
Add full support for
musig()
in wallet policies.Also improves the signing flow to only sign for spending paths that are filled in in the PSBT (that is, the corresponding
PSBT_IN_BIP32_DERIVATION
orPSBT_IN_TAP_BIP32_DERIVATION
fields are present), optimizing certain use cases for wallet policies with multiple alternative spending paths.Closes: #208
Closes: #177