github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/ibc-go/testing/mock/privval.go (about) 1 package mock 2 3 import ( 4 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto" 5 tmtypes "github.com/fibonacci-chain/fbc/libs/tendermint/types" 6 7 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto/ed25519" 8 ) 9 10 var _ tmtypes.PrivValidator = PV{} 11 12 // MockPV implements PrivValidator without any safety or persistence. 13 // Only use it for testing. 14 type PV struct { 15 PrivKey ed25519.PrivKeyEd25519 16 } 17 18 func NewPV() PV { 19 return PV{ed25519.GenPrivKey()} 20 } 21 22 // GetPubKey implements PrivValidator interface 23 func (pv PV) GetPubKey() (crypto.PubKey, error) { 24 //return cryptocodec.ToTmPubKeyInterface(pv.PrivKey.PubKey()) 25 return pv.PrivKey.PubKey(), nil 26 } 27 28 // SignVote implements PrivValidator interface 29 func (pv PV) SignVote(chainID string, vote *tmtypes.Vote) error { 30 signBytes := tmtypes.VoteSignBytes(chainID, vote) 31 sig, err := pv.PrivKey.Sign(signBytes) 32 if err != nil { 33 return err 34 } 35 vote.Signature = sig 36 return nil 37 } 38 39 // SignProposal implements PrivValidator interface 40 func (pv PV) SignProposal(chainID string, proposal *tmtypes.Proposal) error { 41 signBytes := tmtypes.ProposalSignBytes(chainID, proposal) 42 sig, err := pv.PrivKey.Sign(signBytes) 43 if err != nil { 44 return err 45 } 46 proposal.Signature = sig 47 return nil 48 } 49 50 // SignBytes implements PrivValidator interface 51 func (pv PV) SignBytes(bz []byte) ([]byte, error) { 52 return pv.PrivKey.Sign(bz) 53 }