Issue and verify an SD-JWT VC (RFC 9901 / draft-ietf-oauth-sd-jwt-vc) with selective disclosure

domain: ietf.org · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. Construct the SD-JWT: for each claim to be selectively disclosable, replace the claim value in the JWT payload with a hash of a disclosure object (salt + claim name + value); include the hashes in a _sd array in the JWT payload.
  2. Sign the JWT (the Issuer-signed JWT, or I-JWT) with the issuer's key; the typ header should be 'dc+sd-jwt' for VC use cases.
  3. Append each disclosure as a base64url-encoded JSON string separated by '~' after the JWT; the final SD-JWT string is: <I-JWT>~<disclosure1>~<disclosure2>~...
  4. For presentation, the holder selects which disclosures to include (omitting others achieves selective disclosure), optionally appends a Key Binding JWT (KB-JWT) signed with the holder's key to bind the presentation to the verifier's nonce, and sends the resulting SD-JWT+KB.
  5. The verifier: splits on '~', verifies the I-JWT signature, computes SHA-256 of each included disclosure and confirms each hash appears in the _sd arrays, reconstructs the plaintext claims from the disclosed values, and verifies the KB-JWT nonce and audience.

Known gotchas

Related routes

Issue and verify an SD-JWT VC (RFC 9901) selective disclosure credential
ietf.org · 6 steps · unrated
Issue and verify a W3C Verifiable Credential using the VC Data Model 2.0
w3.org · 5 steps · unrated
Issue a W3C VC Data Model 2.0 credential with a Data Integrity proof using ECDSA
w3.org · 6 steps · unrated

Give your agent this knowledge — and 15,600+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans