From 456cc09fb39c8a1ec6a6b6f9a51a7fe52fe50952 Mon Sep 17 00:00:00 2001 From: Javad Rajabzadeh Date: Sat, 13 Jul 2024 16:05:16 +0330 Subject: [PATCH] fix(grpc): return error on invalid arguments for VerifyMessage (#1411) --- www/grpc/utils.go | 20 +++++++++----------- www/grpc/utils_test.go | 9 +++++---- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/www/grpc/utils.go b/www/grpc/utils.go index 294a94fc1..76e9734ca 100644 --- a/www/grpc/utils.go +++ b/www/grpc/utils.go @@ -5,6 +5,8 @@ import ( "github.com/pactus-project/pactus/crypto/bls" pactus "github.com/pactus-project/pactus/www/grpc/gen/go" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" ) type utilServer struct { @@ -22,7 +24,7 @@ func (*utilServer) SignMessageWithPrivateKey(_ context.Context, ) (*pactus.SignMessageWithPrivateKeyResponse, error) { prvKey, err := bls.PrivateKeyFromString(req.PrivateKey) if err != nil { - return nil, err + return nil, status.Error(codes.InvalidArgument, "invalid private key") } sig := prvKey.Sign([]byte(req.Message)).String() @@ -37,25 +39,21 @@ func (*utilServer) VerifyMessage(_ context.Context, ) (*pactus.VerifyMessageResponse, error) { sig, err := bls.SignatureFromString(req.Signature) if err != nil { - return &pactus.VerifyMessageResponse{ - IsValid: false, - }, err + return nil, status.Error(codes.InvalidArgument, "signature is invalid") } pub, err := bls.PublicKeyFromString(req.PublicKey) if err != nil { - return &pactus.VerifyMessageResponse{ - IsValid: false, - }, err + return nil, status.Error(codes.InvalidArgument, "public key is invalid") } - if err := pub.Verify([]byte(req.Message), sig); err != nil { + if err := pub.Verify([]byte(req.Message), sig); err == nil { return &pactus.VerifyMessageResponse{ - IsValid: false, - }, err + IsValid: true, + }, nil } return &pactus.VerifyMessageResponse{ - IsValid: true, + IsValid: false, }, nil } diff --git a/www/grpc/utils_test.go b/www/grpc/utils_test.go index 5ab04d777..2060d2893 100644 --- a/www/grpc/utils_test.go +++ b/www/grpc/utils_test.go @@ -55,7 +55,7 @@ func TestVerifyMessage(t *testing.T) { sigStr := "923d67a8624cbb7972b29328e15ec76cc846076ccf00a9e94d991c677846f334ae4ba4551396fbcd6d1cab7593baf3b7" invalidSigStr := "113d67a8624cbb7972b29328e15ec76cc846076ccf00a9e94d991c677846f334ae4ba4551396fbcd6d1cab7593baf3c9" - t.Run("", func(t *testing.T) { + t.Run("valid message", func(t *testing.T) { res, err := client.VerifyMessage(context.Background(), &pactus.VerifyMessageRequest{ Message: msg, @@ -66,15 +66,16 @@ func TestVerifyMessage(t *testing.T) { assert.True(t, res.IsValid) }) - t.Run("", func(t *testing.T) { - _, err := client.VerifyMessage(context.Background(), + t.Run("invalid message", func(t *testing.T) { + res, err := client.VerifyMessage(context.Background(), &pactus.VerifyMessageRequest{ Message: msg, Signature: invalidSigStr, PublicKey: pubStr, }) - assert.NotNil(t, err) + assert.Nil(t, err) + assert.False(t, res.IsValid) }) assert.Nil(t, conn.Close(), "Error closing connection")