viem-goviem-go

verifyTypedData

Verifies if a signed typed data was generated by the provided address

verifyTypedData

Verifies that typed data was signed by the provided address.

Import

import "github.com/ChefBingbong/viem-go/utils/signature"
import "math/big"

Usage

import "github.com/ChefBingbong/viem-go/utils/signature"
import "math/big"
typedData := signature.TypedDataDefinition{
Domain: signature.TypedDataDomain{
Name: "My App",
Version: "1",
ChainId: big.NewInt(1),
},
Types: map[string][]signature.TypedDataField{
"Message": {
{Name: "content", Type: "string"},
},
},
PrimaryType: "Message",
Message: map[string]any{
"content": "Hello!",
},
}
valid, err := signature.VerifyTypedData(
"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
typedData,
"0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c",
)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Valid: %v
", valid)

Returns

  • Type: (bool, error)

true if the provided address generated the signature, false otherwise.

Parameters

address (required)

  • Type: string

The Ethereum address that signed the original typed data.

valid, _ := signature.VerifyTypedData(
"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
typedData,
sig,
)

typedData (required)

  • Type: signature.TypedDataDefinition

The typed data definition that was signed. Must match exactly what was signed.

typedData := signature.TypedDataDefinition{
Domain: signature.TypedDataDomain{
Name: "My App",
Version: "1",
ChainId: big.NewInt(1),
},
Types: map[string][]signature.TypedDataField{
"Message": {
{Name: "content", Type: "string"},
},
},
PrimaryType: "Message",
Message: map[string]any{
"content": "Hello!",
},
}
valid, _ := signature.VerifyTypedData(address, typedData, sig)

signature (required)

  • Type: any (supports string, []byte, or *signature.Signature)

The signature that was generated by signing the typed data with the address's private key.

valid, _ := signature.VerifyTypedData(address, typedData, "0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c")

Implementation

This function:

  1. Recovers the address from the typed data and signature using RecoverTypedDataAddress
  2. Compares the recovered address with the provided address (case-insensitive)
  3. Returns true if they match, false otherwise