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  }