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 }