github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/bft/privval/signer_requestHandler.go (about) 1 package privval 2 3 import ( 4 "fmt" 5 6 "github.com/gnolang/gno/tm2/pkg/bft/types" 7 "github.com/gnolang/gno/tm2/pkg/crypto" 8 ) 9 10 func DefaultValidationRequestHandler(privVal types.PrivValidator, req SignerMessage, chainID string) (SignerMessage, error) { 11 var res SignerMessage 12 var err error 13 14 switch r := req.(type) { 15 case *PubKeyRequest: 16 var p crypto.PubKey 17 p = privVal.GetPubKey() 18 res = &PubKeyResponse{p, nil} 19 20 case *SignVoteRequest: 21 err = privVal.SignVote(chainID, r.Vote) 22 if err != nil { 23 res = &SignedVoteResponse{nil, &RemoteSignerError{0, err.Error()}} 24 } else { 25 res = &SignedVoteResponse{r.Vote, nil} 26 } 27 28 case *SignProposalRequest: 29 err = privVal.SignProposal(chainID, r.Proposal) 30 if err != nil { 31 res = &SignedProposalResponse{nil, &RemoteSignerError{0, err.Error()}} 32 } else { 33 res = &SignedProposalResponse{r.Proposal, nil} 34 } 35 36 case *PingRequest: 37 err, res = nil, &PingResponse{} 38 39 default: 40 err = fmt.Errorf("unknown msg: %v", r) 41 } 42 43 return res, err 44 }