routing: expose VerifyChannelUpdateSignature function
This commit is contained in:
parent
23796d3247
commit
44a01db0ef
@ -2,6 +2,7 @@ package routing
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"github.com/btcsuite/btcd/btcec"
|
"github.com/btcsuite/btcd/btcec"
|
||||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||||
@ -132,20 +133,28 @@ func ValidateChannelUpdateAnn(pubKey *btcec.PublicKey, capacity btcutil.Amount,
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
data, err := a.DataToSign()
|
return VerifyChannelUpdateSignature(a, pubKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
// VerifyChannelUpdateSignature verifies that the channel update message was
|
||||||
|
// signed by the party with the given node public key.
|
||||||
|
func VerifyChannelUpdateSignature(msg *lnwire.ChannelUpdate,
|
||||||
|
pubKey *btcec.PublicKey) error {
|
||||||
|
|
||||||
|
data, err := msg.DataToSign()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Errorf("unable to reconstruct message: %v", err)
|
return fmt.Errorf("unable to reconstruct message data: %v", err)
|
||||||
}
|
}
|
||||||
dataHash := chainhash.DoubleHashB(data)
|
dataHash := chainhash.DoubleHashB(data)
|
||||||
|
|
||||||
nodeSig, err := a.Signature.ToSignature()
|
nodeSig, err := msg.Signature.ToSignature()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if !nodeSig.Verify(dataHash, pubKey) {
|
if !nodeSig.Verify(dataHash, pubKey) {
|
||||||
return errors.Errorf("invalid signature for channel "+
|
return fmt.Errorf("invalid signature for channel update %v",
|
||||||
"update %v", spew.Sdump(a))
|
spew.Sdump(msg))
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
Reference in New Issue
Block a user