diff --git a/util/crypto/crypto_test.go b/util/crypto/crypto_test.go index 6f1bc5964..87041d24b 100644 --- a/util/crypto/crypto_test.go +++ b/util/crypto/crypto_test.go @@ -11,11 +11,10 @@ func TestSignMessageWithPrivateKey(t *testing.T) { prvStr := "SECRET1PDRWTLP5PX0FAHDX39GXZJP7FKZFALML0D5U9TT9KVQHDUC99CMGQQJVK67" invalidPrvStr := "INVSECRET1PDRWTLP5PX0FAHDX39GXZJP7FKZFALML0D5U9TT9KVQHDUC99CMGQQJVK67" sigStr := "923d67a8624cbb7972b29328e15ec76cc846076ccf00a9e94d991c677846f334ae4ba4551396fbcd6d1cab7593baf3b7" - + sig, err := SignMessageWithPrivateKey(prvStr, msg) assert.Nil(t, err) assert.Equal(t, sig, sigStr) - sig, err = SignMessageWithPrivateKey(invalidPrvStr, msg) assert.NotNil(t, err) diff --git a/www/grpc/buf/grpc-gateway.config.yaml b/www/grpc/buf/grpc-gateway.config.yaml index 96f12a306..055b64550 100644 --- a/www/grpc/buf/grpc-gateway.config.yaml +++ b/www/grpc/buf/grpc-gateway.config.yaml @@ -87,3 +87,6 @@ http: - selector: pactus.Wallet.GetTotalBalance get: "/pactus/wallet/get_total_balance" + + - selector: pactus.Wallet.SignMessage + get: "/pactus/wallet/sign_message" \ No newline at end of file diff --git a/www/grpc/gen/go/wallet.pb.gw.go b/www/grpc/gen/go/wallet.pb.gw.go index 917982457..67c180ab2 100644 --- a/www/grpc/gen/go/wallet.pb.gw.go +++ b/www/grpc/gen/go/wallet.pb.gw.go @@ -319,6 +319,42 @@ func local_request_Wallet_GetNewAddress_0(ctx context.Context, marshaler runtime } +var ( + filter_Wallet_SignMessage_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Wallet_SignMessage_0(ctx context.Context, marshaler runtime.Marshaler, client WalletClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SignMessageRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Wallet_SignMessage_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.SignMessage(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Wallet_SignMessage_0(ctx context.Context, marshaler runtime.Marshaler, server WalletServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SignMessageRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Wallet_SignMessage_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.SignMessage(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterWalletHandlerServer registers the http handlers for service Wallet to "mux". // UnaryRPC :call WalletServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -525,6 +561,31 @@ func RegisterWalletHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser }) + mux.Handle("GET", pattern_Wallet_SignMessage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pactus.Wallet/SignMessage", runtime.WithHTTPPathPattern("/pactus/wallet/sign_message")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Wallet_SignMessage_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Wallet_SignMessage_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -742,6 +803,28 @@ func RegisterWalletHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli }) + mux.Handle("GET", pattern_Wallet_SignMessage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/pactus.Wallet/SignMessage", runtime.WithHTTPPathPattern("/pactus/wallet/sign_message")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Wallet_SignMessage_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Wallet_SignMessage_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -761,6 +844,8 @@ var ( pattern_Wallet_GetValidatorAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"pactus", "wallet", "get_validator_address"}, "")) pattern_Wallet_GetNewAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"pactus", "wallet", "get_new_address"}, "")) + + pattern_Wallet_SignMessage_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"pactus", "wallet", "sign_message"}, "")) ) var ( @@ -779,4 +864,6 @@ var ( forward_Wallet_GetValidatorAddress_0 = runtime.ForwardResponseMessage forward_Wallet_GetNewAddress_0 = runtime.ForwardResponseMessage + + forward_Wallet_SignMessage_0 = runtime.ForwardResponseMessage ) diff --git a/www/grpc/swagger-ui/pactus.swagger.json b/www/grpc/swagger-ui/pactus.swagger.json index 0f75220c7..4da404409 100644 --- a/www/grpc/swagger-ui/pactus.swagger.json +++ b/www/grpc/swagger-ui/pactus.swagger.json @@ -1049,6 +1049,59 @@ ] } }, + "/pactus/wallet/sign_message": { + "get": { + "summary": "SignMessage signs an arbitrary message.", + "operationId": "Wallet_SignMessage", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/pactusSignMessageResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "walletName", + "description": "The name of the wallet.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "password", + "description": "The password for unlocking the wallet for signing.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "address", + "description": "The account address associated with the private key.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "message", + "description": "The arbitrary message to be signed.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Wallet" + ] + } + }, "/pactus/wallet/sign_raw_transaction": { "get": { "summary": "SignRawTransaction signs a raw transaction for a specified wallet.",