From 150df1c5f0e8a3bbe56c521e77740e888e8bd5ba Mon Sep 17 00:00:00 2001 From: Jayash Satolia Date: Mon, 27 Jan 2025 01:40:50 +0530 Subject: [PATCH] Fix sign auth --- core/client/set.go | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/core/client/set.go b/core/client/set.go index f0ba52ad4..d7fc7482d 100644 --- a/core/client/set.go +++ b/core/client/set.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "fmt" + "github.com/0chain/gosdk/zcncore" "strings" "github.com/0chain/gosdk/core/conf" @@ -55,7 +56,7 @@ type InitSdkOptions struct { func init() { sys.Sign = signHash - sys.SignWithAuth = signHash + sys.SignWithAuth = signHashWithAuth sigC <- struct{}{} @@ -95,6 +96,42 @@ var SignFn = func(hash string) (string, error) { return ss.Sign(hash) } +func signHashWithAuth(hash, signatureScheme string, keys []sys.KeyPair) (string, error) { + sig, err := sys.Sign(hash, signatureScheme, keys) + if err != nil { + return "", fmt.Errorf("failed to sign with split key: %v", err) + } + + data, err := json.Marshal(zcncore.AuthMessage{ + Hash: hash, + Signature: sig, + ClientID: client.wallet.ClientID, + }) + if err != nil { + return "", err + } + + if sys.AuthCommon == nil { + return "", errors.New("authCommon is not set") + } + + rsp, err := sys.AuthCommon(string(data)) + if err != nil { + return "", err + } + + var sigpk struct { + Sig string `json:"sig"` + } + + err = json.Unmarshal([]byte(rsp), &sigpk) + if err != nil { + return "", err + } + + return sigpk.Sig, nil +} + func signHash(hash string, signatureScheme string, keys []sys.KeyPair) (string, error) { retSignature := "" for _, kv := range keys {