github.com/decred/dcrlnd@v0.7.6/lntest/mock/secretkeyring.go (about) 1 package mock 2 3 import ( 4 "fmt" 5 6 "github.com/decred/dcrd/chaincfg/chainhash" 7 "github.com/decred/dcrd/dcrec/secp256k1/v4" 8 "github.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa" 9 10 "github.com/decred/dcrlnd/keychain" 11 ) 12 13 // SecretKeyRing is a mock implementation of the SecretKeyRing interface. 14 type SecretKeyRing struct { 15 RootKey *secp256k1.PrivateKey 16 } 17 18 // DeriveNextKey currently returns dummy values. 19 func (s *SecretKeyRing) DeriveNextKey( 20 _ keychain.KeyFamily) (keychain.KeyDescriptor, error) { 21 22 return keychain.KeyDescriptor{ 23 PubKey: s.RootKey.PubKey(), 24 }, nil 25 } 26 27 // DeriveKey currently returns dummy values. 28 func (s *SecretKeyRing) DeriveKey( 29 _ keychain.KeyLocator) (keychain.KeyDescriptor, error) { 30 31 return keychain.KeyDescriptor{ 32 PubKey: s.RootKey.PubKey(), 33 }, nil 34 } 35 36 // DerivePrivKey currently returns dummy values. 37 func (s *SecretKeyRing) DerivePrivKey( 38 _ keychain.KeyDescriptor) (*secp256k1.PrivateKey, error) { 39 40 return s.RootKey, nil 41 } 42 43 // ECDH currently returns dummy values. 44 func (s *SecretKeyRing) ECDH(_ keychain.KeyDescriptor, 45 _ *secp256k1.PublicKey) ([32]byte, error) { 46 47 return [32]byte{}, nil 48 } 49 50 // SignMessage signs the passed message and ignores the KeyDescriptor. 51 func (s *SecretKeyRing) SignMessage(_ keychain.KeyLocator, 52 msg []byte, doubleHash bool) (*ecdsa.Signature, error) { 53 54 var digest []byte 55 if doubleHash { 56 return nil, fmt.Errorf("dcrlnd does not do doubleHash signing") 57 } else { 58 digest = chainhash.HashB(msg) 59 } 60 return ecdsa.Sign(s.RootKey, digest), nil 61 } 62 63 // SignMessageCompact signs the passed message. 64 func (s *SecretKeyRing) SignMessageCompact(_ keychain.KeyLocator, 65 msg []byte, doubleHash bool) ([]byte, error) { 66 67 var digest []byte 68 if doubleHash { 69 digest1 := chainhash.HashB(msg) 70 digest = chainhash.HashB(digest1) 71 } else { 72 digest = chainhash.HashB(msg) 73 } 74 return ecdsa.SignCompact(s.RootKey, digest[:], true), nil 75 }