For the complete documentation index, see llms.txt. This page is also available as Markdown.

Testing the Verification Flow

What We Are Doing:

  • Running through the entire process end to end: issuance, verification, and accessing the dashboard.

Why: To ensure all components work together smoothly, from claiming a credential into the wallet to satisfying a verification request and reaching a protected resource.

Steps:

  1. Start the server:

    node src/index.js
  2. Issue a credential by submitting the form and scanning the issuance QR code with the Empe DID Wallet. The credential is now stored in the wallet.

  3. Click "Authorize with KYC Credential" to create an authorization request and display the verification QR code.

  4. Scan the verification QR code with the wallet. The credential requirement (a [email protected]:sd-jwt credential of the expected type whose age is at least 18) is enforced by the presentationDefinition carried in the authorization request itself — the wallet only offers credentials that satisfy it, so a holder without a matching credential has nothing to present. (If you switch to a dcqlQuery instead, remember it cannot express age >= 18 — your app must then check the disclosed age itself.)

  5. When the wallet sends a matching presentation, the verification session advances to ResponseVerified. Your frontend observes this in real time over the proxied session events stream, exchanges the session for the app session token, stores it, and redirects you to /authorization/dashboard. The dashboard's DID and claim fields show values only if your flow signed them into the token (see Creating a Protected Dashboard).

If everything works, you've successfully completed the end-to-end flow — the credential was issued, presented, verified against your request, and the verified result was delivered through the verification session.

Last updated