github.com/decred/dcrlnd@v0.7.6/netann/sign.go (about) 1 package netann 2 3 import ( 4 "fmt" 5 6 "github.com/decred/dcrlnd/input" 7 "github.com/decred/dcrlnd/keychain" 8 "github.com/decred/dcrlnd/lnwallet" 9 "github.com/decred/dcrlnd/lnwire" 10 ) 11 12 // SignAnnouncement signs any type of gossip message that is announced on the 13 // network. 14 func SignAnnouncement(signer lnwallet.MessageSigner, keyLoc keychain.KeyLocator, 15 msg lnwire.Message) (input.Signature, error) { 16 17 var ( 18 data []byte 19 err error 20 ) 21 22 switch m := msg.(type) { 23 case *lnwire.ChannelAnnouncement: 24 data, err = m.DataToSign() 25 case *lnwire.ChannelUpdate: 26 data, err = m.DataToSign() 27 case *lnwire.NodeAnnouncement: 28 data, err = m.DataToSign() 29 default: 30 return nil, fmt.Errorf("can't sign %T message", m) 31 } 32 if err != nil { 33 return nil, fmt.Errorf("unable to get data to sign: %v", err) 34 } 35 36 return signer.SignMessage(keyLoc, data, false) 37 }