Fix wallet connect signature mismatch on mobile and desktop.
Some checks failed
Deploy Explorer Live / deploy (push) Failing after 14s
Validate Explorer / frontend (push) Successful in 1m26s
Validate Explorer / smoke-e2e (push) Failing after 2m19s

Align backend EIP-191 auth message with the DBIS Explorer text the frontend and legacy SPA already sign, instead of the stale SolaceScan string.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
defiQUG
2026-05-22 22:01:11 -07:00
parent 8a61b1bde2
commit 567b4647c0
3 changed files with 41 additions and 1 deletions

View File

@@ -110,6 +110,12 @@ type WalletAuthResponse struct {
InstitutionName string `json:"institution_name,omitempty"`
}
// walletAuthSignMessage returns the EIP-191 plaintext users sign during wallet login.
// Must stay in sync with frontend buildWalletMessage() in access.ts and explorer-spa.js.
func walletAuthSignMessage(nonce string) string {
return fmt.Sprintf("Sign this message to authenticate with DBIS Explorer.\n\nNonce: %s", nonce)
}
// GenerateNonce generates a random nonce for wallet authentication
func (w *WalletAuth) GenerateNonce(ctx context.Context, address string) (*NonceResponse, error) {
// Validate address format
@@ -184,7 +190,7 @@ func (w *WalletAuth) AuthenticateWallet(ctx context.Context, req *WalletAuthRequ
}
// Verify signature
message := fmt.Sprintf("Sign this message to authenticate with SolaceScan.\n\nNonce: %s", req.Nonce)
message := walletAuthSignMessage(req.Nonce)
messageHash := accounts.TextHash([]byte(message))
sigBytes, err := decodeWalletSignature(req.Signature)