bindingNonce, audience, and origin
Change one request-bound value and check that the verifier rejects the presentation instead of treating it as a fresh proof.
BADWALLET emits valid and deliberately broken SD-JWT VC and mdoc presentations. Point it at a verifier to see whether bad signatures, stale nonces, tampered disclosures, and untrusted issuers fail for the right reason.
badwallet 0.1.0 · public on npm$ npm install --save-dev badwallet $ npx badwallet list 13 fault families · SD-JWT VC · mdoc $ npx badwallet generate \ --nonce req_7f92 \ --audience https://verify.example \ --origin https://checkout.example wrote valid and broken presentations
A verifier that accepts the happy path can still fail open when one protected value changes. BADWALLET keeps the good presentation and each fault close enough to compare.
bindingChange one request-bound value and check that the verifier rejects the presentation instead of treating it as a fresh proof.
integrityFeed it DER-encoded ES256 signatures, altered disclosures, missing holder binding, and a mismatched SD hash.
trustUse an untrusted issuer or an expired credential and confirm the failure stays distinct from holder and request errors.
protocolTry unsupported algorithms and alternate mdoc handover construction without changing the rest of the fixture.
The catalog is useful on its own. The adapter adds a repeatable comparison against an HTTP verifier and records what the target actually returned.
Create a valid presentation and a single controlled fault from the same request inputs.
Check the fixture independently, then submit it to the selected verifier.
Record acceptance, rejection, and whether the returned failure class matches the fault.
BADWALLET is not a PROOFGATE-only test suite. It is a standalone package with one adapter today and room for more verifier adapters.
Builds synthetic presentations, applies one fault at a time, verifies fixtures independently, and compares a target's response. It does not certify a wallet or verifier.
The first target adapter and the first production verifier hardened with the catalog. See the PROOFGATE product for the service that consumes these checks.
Node 20 or newer. The fixture emitter makes no network calls.