github.com/ava-labs/avalanchego@v1.11.11/vms/platformvm/warp/gwarp/server.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package gwarp
     5  
     6  import (
     7  	"context"
     8  
     9  	"github.com/ava-labs/avalanchego/ids"
    10  	"github.com/ava-labs/avalanchego/vms/platformvm/warp"
    11  
    12  	pb "github.com/ava-labs/avalanchego/proto/pb/warp"
    13  )
    14  
    15  var _ pb.SignerServer = (*Server)(nil)
    16  
    17  type Server struct {
    18  	pb.UnsafeSignerServer
    19  	signer warp.Signer
    20  }
    21  
    22  func NewServer(signer warp.Signer) *Server {
    23  	return &Server{signer: signer}
    24  }
    25  
    26  func (s *Server) Sign(_ context.Context, unsignedMsg *pb.SignRequest) (*pb.SignResponse, error) {
    27  	sourceChainID, err := ids.ToID(unsignedMsg.SourceChainId)
    28  	if err != nil {
    29  		return nil, err
    30  	}
    31  
    32  	msg, err := warp.NewUnsignedMessage(
    33  		unsignedMsg.NetworkId,
    34  		sourceChainID,
    35  		unsignedMsg.Payload,
    36  	)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  
    41  	sig, err := s.signer.Sign(msg)
    42  	return &pb.SignResponse{
    43  		Signature: sig,
    44  	}, err
    45  }