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  }