const unixProtocol … const kmsapiVersion … const versionErrorf … type gRPCService … // NewGRPCService returns an envelope.Service which use gRPC to communicate the remote KMS provider. func NewGRPCService(ctx context.Context, endpoint string, callTimeout time.Duration) (Service, error) { … } func (g *gRPCService) checkAPIVersion(ctx context.Context) error { … } // Decrypt a given data string to obtain the original byte data. func (g *gRPCService) Decrypt(cipher []byte) ([]byte, error) { … } // Encrypt bytes to a string ciphertext. func (g *gRPCService) Encrypt(plain []byte) ([]byte, error) { … } func (g *gRPCService) interceptor( ctx context.Context, method string, req interface{ … }