verifyMessage
Verifies if a signed message was generated by the provided address
verifyMessage
Verifies that a message was signed by the provided address.
:::warning[Warning]
This utility can only verify a message that was signed by an Externally Owned Account (EOA). To verify messages from Contract Accounts (& EOA), use the Public Client's VerifyMessage action instead.
:::
Import
import "github.com/ChefBingbong/viem-go/utils/signature"Usage
import "github.com/ChefBingbong/viem-go/utils/signature"
// Verify message signaturevalid, err := signature.VerifyMessage( "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", signature.NewSignableMessage("hello world"), "0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c",)if err != nil { log.Fatal(err)}fmt.Printf("Valid: %v", valid)// Valid: trueReturns
- 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 message.
valid, _ := signature.VerifyMessage( "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", signature.NewSignableMessage("hello world"), sig,)message (required)
- Type:
signature.SignableMessage
The message to be verified. Use signature.NewSignableMessage() for string messages or signature.NewSignableMessageHex() for hex data.
// Verify string messagevalid, _ := signature.VerifyMessage( address, signature.NewSignableMessage("hello world"), sig,)
// Verify hex datavalid, _ = signature.VerifyMessage( address, signature.NewSignableMessageHex("0x68656c6c6f20776f726c64"), sig,)signature (required)
- Type:
any(supportsstring,[]byte, or*signature.Signature)
The signature that was generated by signing the message with the address's private key.
// Hex string signaturevalid, _ := signature.VerifyMessage(address, message, "0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c")
// Signature structsig, _ := signature.ParseSignature("0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c")valid, _ = signature.VerifyMessage(address, message, sig)Implementation
This function:
- Recovers the address from the message and signature using
RecoverMessageAddress - Compares the recovered address with the provided address (case-insensitive)
- Returns
trueif they match,falseotherwise