Typed-data signature request vectors
Typed-data signature request vectors
Run from this directory with Node.js 20 or later:
npm ci --ignore-scripts
npm test
Dependencies are pinned in package-lock.json. No keys, RPC endpoint, wallet,
or producer connection are used. The .example endpoints are illustrative and
are never contacted. Permit and order fixtures describe a fictional protocol,
not Aave’s deployed contracts or API.
The runner validates all four new structural schemas, recomputes signing hashes with ethers and viem, independently reconstructs the domain/message commitment, and checks the fixed-order request digest against the committed vectors. It checks the original execution-plan schema and recomputes all original digests. Mutation assertions document which changes affect each identity.
It also exercises request/result/delivery/receipt schema rejection cases and the separation of signing requests from execution plans. Schemas check shape, not all semantics: this fixture runner is not a production parser or a delivery implementation. In particular, duplicate JSON keys, recursive member/type validation, Unicode validity, URL/DNS admission, origin authentication, policy, expiry timing, signature validation, and durable relay idempotency need their own implementation tests in a consuming wallet or producer.
The vectors contain a baseline permit, JSON object reordering, hexadecimal case normalization, domain changes, signer and amount changes, wallet cutoff changes, delivery and request-ID changes, large integers, chainless typed data, and a second-round order containing two concrete approval signature byte strings. The latter bytes are illustrative, not usable authorizations.