demo · v143 · origin trial

Presentation flow

Issuance is the new bit in v143, but it only makes sense paired with presentation. This page is the relying-party side of the loop: pick a use case (age verification, KYC, education), see the DCQL query the page would build, then call navigator.credentials.get({ digital }) and watch the resolution.

Origin trial / behind a flag: Digital Credentials API is in origin trial through Chrome 143. Enable chrome://flags/#web-identity-digital-credentials for local testing. The page attempts the call and surfaces whatever Chrome returns.

Use case

Generated request

Flow

step 1 — feature detect

navigator.credentials.get({ digital }) available?

step 2 — build DCQL

(idle)

step 3 — invoke API

(idle)

step 4 — receive presentation

(idle)

step 5 — verify (server-side)

(idle)
Pick a use case, click "request credential".

How this maps to real life

  1. Issuance (v143's headline change) gives the user a credential — like a driver's licence or a school diploma — held in their wallet of choice.
  2. Later, a relying party (this page) asks for a presentation — a zero-knowledge or selective-disclosure proof of some subset of that credential.
  3. DCQL (Digital Credentials Query Language) lets the RP describe what it needs without naming a specific issuer. The wallet decides which credential satisfies the query.
  4. Chrome's chooser sheet then lists matching wallets; the user picks one; the wallet runs the presentation flow with the user's chosen disclosures; the RP gets a signed object back.
const response = await navigator.credentials.get({
  digital: {
    requests: [{
      protocol: "openid4vp",
      data: { /* DCQL query */ },
    }],
  },
});
// response.protocol === "openid4vp"
// response.data === presentation object

see also