in pkg/client/reader.go [40:62]
func NewFromReader(reader io.Reader, impl StateInterface, actions ...Action) (Client, error) {
connInfo := &proto.StartUpInfo{}
data, err := io.ReadAll(reader)
if err != nil {
return nil, err
}
err = protobuf.Unmarshal(data, connInfo)
if err != nil {
return nil, err
}
cert, err := tls.X509KeyPair(connInfo.PeerCert, connInfo.PeerKey)
if err != nil {
return nil, err
}
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(connInfo.CaCert)
trans := credentials.NewTLS(&tls.Config{
ServerName: connInfo.ServerName,
Certificates: []tls.Certificate{cert},
RootCAs: caCertPool,
})
return New(connInfo.Addr, connInfo.Token, impl, actions, grpc.WithTransportCredentials(trans)), nil
}