L IntegrAuth Lab

🎫 Verifiable credentials (SD-JWT)

An issuer signs a credential whose claims are HASHED into a digest array — the values live in separate disclosures. You (the holder) choose which disclosures to reveal in a presentation; anything you leave out is never transmitted, so its value can never leak. This is OID4VP's core idea: prove one fact, hide the rest.

Honest simulation — read this first

given_name is derived from your account email (the Lab is passwordless and collects almost nothing else), and date_of_birth is a fixed synthetic demo value — there's no real DOB anywhere in this system. The optional Key Binding JWT (below) is signed with the Lab's own key rather than a separate holder-controlled keypair a real wallet app would hold. What's fully real: the _sd digest mechanics, the disclosure format, presentation assembly, and every verify check — a genuine, standards-shaped SD-JWT VC you can inspect byte by byte below.

1. Issue a credential

The Lab (issuer) mints a fixed membership credential into your wallet: given_name, email, membership_level, date_of_birth, member_since — each one a separate, salted disclosure.

Your wallet

2. Build a presentation

Tick which claims to reveal. Everything left unticked is simply never included — its disclosure stays in your wallet, and its value never touches the network.

Issue a credential above, then select it.

3. Verify a presentation

Paste any presentation (yours from above, or a tampered copy) to see it checked: issuer signature, then every presented disclosure's digest against _sd.

4. Issue via OpenID4VCI (the real protocol)

Step 1 above is a Lab shortcut — one click, no protocol. This is the STANDARDS-CORRECT round trip a real issuer and wallet run instead: a credential offer carrying a single-use, hashed-at-rest pre-authorized code + PIN, a token exchange for a short-lived access token + c_nonce, and a credential endpoint call that only succeeds once you prove — with a real key minted right here in your browser — that you hold the private half of a keypair. The resulting credential carries a cnf claim binding it to that exact key.