feat(walletconnect)_: support for auth request

This commit is contained in:
Sale Djenic 2023-12-06 14:53:23 +01:00 committed by saledjenic
parent b8c006843b
commit 12ba1bdf69
2 changed files with 33 additions and 0 deletions

View File

@ -709,3 +709,10 @@ func (api *API) WCSessionRequest(ctx context.Context, sessionRequestJSON string)
return api.s.walletConnect.SessionRequest(request) return api.s.walletConnect.SessionRequest(request)
} }
// WCAuthRequest responds to "auth_request" event
func (api *API) WCAuthRequest(ctx context.Context, address common.Address, authMessage string) (*transfer.TxResponse, error) {
log.Debug("wallet.api.wc.AuthRequest", "address", address, "authMessage", authMessage)
return api.s.walletConnect.AuthRequest(address, authMessage)
}

View File

@ -6,10 +6,13 @@ import (
"strings" "strings"
"time" "time"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/log"
"github.com/status-im/status-go/account" "github.com/status-im/status-go/account"
"github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/multiaccounts/accounts" "github.com/status-im/status-go/multiaccounts/accounts"
"github.com/status-im/status-go/params" "github.com/status-im/status-go/params"
"github.com/status-im/status-go/rpc/network" "github.com/status-im/status-go/rpc/network"
@ -167,3 +170,26 @@ func (s *Service) SessionRequest(request SessionRequest) (response *transfer.TxR
// TODO #12434: respond async // TODO #12434: respond async
return nil, ErrorMethodNotSupported return nil, ErrorMethodNotSupported
} }
func (s *Service) AuthRequest(address common.Address, authMessage string) (*transfer.TxResponse, error) {
account, err := s.accountsDB.GetAccountByAddress(types.Address(address))
if err != nil {
return nil, fmt.Errorf("failed to get active account: %w", err)
}
kp, err := s.accountsDB.GetKeypairByKeyUID(account.KeyUID)
if err != nil {
return nil, err
}
byteArray := []byte(authMessage)
hash := crypto.TextHash(byteArray)
return &transfer.TxResponse{
KeyUID: account.KeyUID,
Address: account.Address,
AddressPath: account.Path,
SignOnKeycard: kp.MigratedToKeycard(),
MessageToSign: types.HexBytes(hash),
}, nil
}