Real signatures. Real verification.
Each authorization below is produced by the SymmetriQ signing service, type-safe under EIP-712, and verified in your browser using the same recovery the on-chain verifier performs. Deploy the verifier contract to Sepolia or Polygon Amoy to close the loop with a public transaction.
Submit a request to see the policy evaluation, the EIP-712 typed data the signing service produced, and an in-browser ecrecover that proves the signature matches the server-declared signer address.
Close the loop on a public testnet
Step 1
Deploy the verifier
Compile
contracts/SymmetriQVerifier.sol(Solidity ^0.8.24) with Foundry or Hardhat. Pass the SymmetriQ signer address shown in any successful response above as the constructor argument. Fund the deployer with Sepolia or Amoy test ETH/MATIC.Step 2
Wire the address
Paste the deployed contract address into the verifier field on this page. The signing service will start producing signatures bound to that exact contract via the EIP-712 domain separator — a signature for the wrong chain or contract will not verify.
Step 3
Submit on-chain
From a Sepolia-funded EOA, call
verifyAndConsume(intent, signature)using the exact values shown in the response. The transaction will succeed, emitTransferAuthorized, and consume the nonce so the same intent cannot be replayed.
// Foundry deploy
forge create contracts/SymmetriQVerifier.sol:SymmetriQVerifier \
--rpc-url $SEPOLIA_RPC_URL --private-key $DEPLOYER_PK \
--constructor-args 0x...<symmetriq-signer-address>
For production, replace the demo signing key with a FIPS 140-2 L3 HSM (AWS CloudHSM, Azure Dedicated HSM, or on-prem Thales/Entrust). The contract code does not change — only the source of signTypedData changes from a software account to an HSM-backed signer.