- package privval
-
- import (
- "fmt"
-
- "github.com/tendermint/tendermint/crypto"
- "github.com/tendermint/tendermint/types"
- )
-
- func DefaultValidationRequestHandler(
- privVal types.PrivValidator,
- req SignerMessage,
- chainID string,
- ) (SignerMessage, error) {
- var res SignerMessage
- var err error
-
- switch r := req.(type) {
- case *PubKeyRequest:
- var pubKey crypto.PubKey
- pubKey, err = privVal.GetPubKey()
- if err != nil {
- res = &PubKeyResponse{nil, &RemoteSignerError{0, err.Error()}}
- } else {
- res = &PubKeyResponse{pubKey, nil}
- }
-
- case *SignVoteRequest:
- err = privVal.SignVote(chainID, r.Vote)
- if err != nil {
- res = &SignedVoteResponse{nil, &RemoteSignerError{0, err.Error()}}
- } else {
- res = &SignedVoteResponse{r.Vote, nil}
- }
-
- case *SignProposalRequest:
- err = privVal.SignProposal(chainID, r.Proposal)
- if err != nil {
- res = &SignedProposalResponse{nil, &RemoteSignerError{0, err.Error()}}
- } else {
- res = &SignedProposalResponse{r.Proposal, nil}
- }
-
- case *PingRequest:
- err, res = nil, &PingResponse{}
-
- default:
- err = fmt.Errorf("unknown msg: %v", r)
- }
-
- return res, err
- }
|