mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-03-13 11:09:23 +01:00
multi: add MuSig2Cleanup method to MuSig2 signer
This commit is contained in:
parent
771d77d875
commit
95ff670c0e
6 changed files with 59 additions and 0 deletions
|
@ -58,6 +58,9 @@ type MuSig2Signer interface {
|
|||
// returned.
|
||||
MuSig2CombineSig(MuSig2SessionID,
|
||||
[]*musig2.PartialSignature) (*schnorr.Signature, bool, error)
|
||||
|
||||
// MuSig2Cleanup removes a session from memory to free up resources.
|
||||
MuSig2Cleanup(MuSig2SessionID) error
|
||||
}
|
||||
|
||||
// MuSig2SessionInfo is a struct for keeping track of a signing session
|
||||
|
|
|
@ -178,6 +178,11 @@ func (m *MockSigner) MuSig2CombineSig(MuSig2SessionID,
|
|||
return nil, false, nil
|
||||
}
|
||||
|
||||
// MuSig2Cleanup removes a session from memory to free up resources.
|
||||
func (m *MockSigner) MuSig2Cleanup(MuSig2SessionID) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// findKey searches through all stored private keys and returns one
|
||||
// corresponding to the hashed pubkey if it can be found. The public key may
|
||||
// either correspond directly to the private key or to the private key with a
|
||||
|
|
|
@ -94,6 +94,11 @@ func (d *DummySigner) MuSig2CombineSig(input.MuSig2SessionID,
|
|||
return nil, false, nil
|
||||
}
|
||||
|
||||
// MuSig2Cleanup removes a session from memory to free up resources.
|
||||
func (d *DummySigner) MuSig2Cleanup(input.MuSig2SessionID) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// SingleSigner is an implementation of the Signer interface that signs
|
||||
// everything with a single private key.
|
||||
type SingleSigner struct {
|
||||
|
@ -227,3 +232,8 @@ func (s *SingleSigner) MuSig2CombineSig(input.MuSig2SessionID,
|
|||
|
||||
return nil, false, nil
|
||||
}
|
||||
|
||||
// MuSig2Cleanup removes a session from memory to free up resources.
|
||||
func (s *SingleSigner) MuSig2Cleanup(input.MuSig2SessionID) error {
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -704,6 +704,24 @@ func (b *BtcWallet) MuSig2CombineSig(sessionID input.MuSig2SessionID,
|
|||
return finalSig, session.HaveAllSigs, nil
|
||||
}
|
||||
|
||||
// MuSig2Cleanup removes a session from memory to free up resources.
|
||||
func (b *BtcWallet) MuSig2Cleanup(sessionID input.MuSig2SessionID) error {
|
||||
// We hold the lock during the whole operation, we don't want any
|
||||
// interference with calls that might come through in parallel for the
|
||||
// same session.
|
||||
b.musig2SessionsMtx.Lock()
|
||||
defer b.musig2SessionsMtx.Unlock()
|
||||
|
||||
_, ok := b.musig2Sessions[sessionID]
|
||||
if !ok {
|
||||
return fmt.Errorf("session with ID %x not found", sessionID[:])
|
||||
}
|
||||
|
||||
delete(b.musig2Sessions, sessionID)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// A compile time check to ensure that BtcWallet implements the Signer
|
||||
// interface.
|
||||
var _ input.Signer = (*BtcWallet)(nil)
|
||||
|
|
|
@ -782,6 +782,24 @@ func (r *RPCKeyRing) MuSig2CombineSig(sessionID input.MuSig2SessionID,
|
|||
return finalSig, resp.HaveAllSignatures, nil
|
||||
}
|
||||
|
||||
// MuSig2Cleanup removes a session from memory to free up resources.
|
||||
func (r *RPCKeyRing) MuSig2Cleanup(sessionID input.MuSig2SessionID) error {
|
||||
req := &signrpc.MuSig2CleanupRequest{
|
||||
SessionId: sessionID[:],
|
||||
}
|
||||
|
||||
ctxt, cancel := context.WithTimeout(context.Background(), r.rpcTimeout)
|
||||
defer cancel()
|
||||
|
||||
_, err := r.signerClient.MuSig2Cleanup(ctxt, req)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error cleaning up MuSig2 session in remote "+
|
||||
"signer instance: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// remoteSign signs the input specified in signDesc of the given transaction tx
|
||||
// using the remote signing instance.
|
||||
func (r *RPCKeyRing) remoteSign(tx *wire.MsgTx, signDesc *input.SignDescriptor,
|
||||
|
|
|
@ -108,6 +108,11 @@ func (s *MockSigner) MuSig2CombineSig(input.MuSig2SessionID,
|
|||
return nil, false, nil
|
||||
}
|
||||
|
||||
// MuSig2Cleanup removes a session from memory to free up resources.
|
||||
func (s *MockSigner) MuSig2Cleanup(input.MuSig2SessionID) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// AddPrivKey records the passed privKey in the MockSigner's registry of keys it
|
||||
// can sign with in the future. A unique key locator is returned, allowing the
|
||||
// caller to sign with this key when presented via an input.SignDescriptor.
|
||||
|
|
Loading…
Add table
Reference in a new issue