mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-09-08 05:08:13 +02:00
Merge pull request #6502 from bhandras/musig-fix
signer: fix crash in `MuSig2Combine` when the final signature isn't ready
This commit is contained in:
@@ -86,6 +86,8 @@ to Bitcoin nodes that advertise a Tor v3 onion service address.
|
|||||||
arbitrator relying on htlcswitch to be started
|
arbitrator relying on htlcswitch to be started
|
||||||
first](https://github.com/lightningnetwork/lnd/pull/6214).
|
first](https://github.com/lightningnetwork/lnd/pull/6214).
|
||||||
|
|
||||||
|
* [Fixed crash in MuSig2Combine](https://github.com/lightningnetwork/lnd/pull/6502)
|
||||||
|
|
||||||
## Neutrino
|
## Neutrino
|
||||||
|
|
||||||
* [New neutrino sub-server](https://github.com/lightningnetwork/lnd/pull/5652)
|
* [New neutrino sub-server](https://github.com/lightningnetwork/lnd/pull/5652)
|
||||||
|
@@ -938,10 +938,15 @@ func (s *Server) MuSig2CombineSig(_ context.Context,
|
|||||||
return nil, fmt.Errorf("error combining signatures: %v", err)
|
return nil, fmt.Errorf("error combining signatures: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &MuSig2CombineSigResponse{
|
resp := &MuSig2CombineSigResponse{
|
||||||
HaveAllSignatures: haveAllSigs,
|
HaveAllSignatures: haveAllSigs,
|
||||||
FinalSignature: finalSig.Serialize(),
|
}
|
||||||
}, nil
|
|
||||||
|
if haveAllSigs {
|
||||||
|
resp.FinalSignature = finalSig.Serialize()
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// MuSig2Cleanup removes a session from memory to free up resources.
|
// MuSig2Cleanup removes a session from memory to free up resources.
|
||||||
|
@@ -902,6 +902,20 @@ func testTaprootMuSig2CombinedLeafKeySpend(ctxt context.Context, t *harnessTest,
|
|||||||
)
|
)
|
||||||
require.NoError(t.t, err)
|
require.NoError(t.t, err)
|
||||||
|
|
||||||
|
// Before we have all partial signatures, we shouldn't get a final
|
||||||
|
// signature back.
|
||||||
|
combineSigResp, err := alice.SignerClient.MuSig2CombineSig(
|
||||||
|
ctxt, &signrpc.MuSig2CombineSigRequest{
|
||||||
|
SessionId: sessResp1.SessionId,
|
||||||
|
OtherPartialSignatures: [][]byte{
|
||||||
|
signResp2.LocalPartialSignature,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
require.NoError(t.t, err)
|
||||||
|
require.False(t.t, combineSigResp.HaveAllSignatures)
|
||||||
|
require.Empty(t.t, combineSigResp.FinalSignature)
|
||||||
|
|
||||||
signResp3, err := alice.SignerClient.MuSig2Sign(
|
signResp3, err := alice.SignerClient.MuSig2Sign(
|
||||||
ctxt, &signrpc.MuSig2SignRequest{
|
ctxt, &signrpc.MuSig2SignRequest{
|
||||||
SessionId: sessResp3.SessionId,
|
SessionId: sessResp3.SessionId,
|
||||||
@@ -935,7 +949,6 @@ func testTaprootMuSig2CombinedLeafKeySpend(ctxt context.Context, t *harnessTest,
|
|||||||
ctxt, &signrpc.MuSig2CombineSigRequest{
|
ctxt, &signrpc.MuSig2CombineSigRequest{
|
||||||
SessionId: sessResp1.SessionId,
|
SessionId: sessResp1.SessionId,
|
||||||
OtherPartialSignatures: [][]byte{
|
OtherPartialSignatures: [][]byte{
|
||||||
signResp2.LocalPartialSignature,
|
|
||||||
signResp3.LocalPartialSignature,
|
signResp3.LocalPartialSignature,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user