A demonstration environment built to show how OpenID4VP 1.0 can be integrated into a platform for user authentication and claim validation. Do not use it to sign in to anything you care about.
Digital Credentials API · Verifiable presentations
OPENID4VP 1.0
Test an end-to-end OpenID for Verifiable Presentations (OpenID4VP) sign-in and claim-verification flow, including the relying-party user experience. This is the first release of the demo and currently supports one presentation scenario: a Google-verified email credential.
Test tooling
Request configuration
UNSIGNED PROFILE
Verifier request typeopenid4vp-v1-unsigned
Signed verifier requests are not supported yet. Using openid4vp-v1-unsigned.
Backend-generated request payload
Read-only preview of the exact request returned by the backend.
Choose the requested claims, then start sign-in.
Demo fallback
No compatible wallet response?
DEV ONLY
Upload your own captured sample credential to exercise the same cryptographic verification and account flow. Both files stay in this request — the server never stores a sample credential of its own. This is for development only.
These files contain the credential subject’s personal data. Only upload a credential you are authorized to use, and never commit one to this repository.
Relying party
Create your account
HOLDER BINDING OK
We do not recognize this verified email. Review the profile details prefilled from the presentation, add any optional information, and confirm to create your account.
Relying party session
Signed in
VERIFIED
Disclosed claims
OPENID4VP sign-in activity
Test diagnostics
Persistent test diagnostics
No active trace
Raw trace JSON
No response yet.
Event ledger
About this demonstration
Demonstration contextUnderstand the test scenarioThe Google verified-email flow, and what your device needs
The demonstrated use case
Google verified email, presented over OpenID4VP
DC+SD-JWT · USERINFOCREDENTIAL
This release exercises one scenario end to end: a Google-verified email credential, held in Android Credential Manager, presented to a relying party and cryptographically verified before any account is touched. No password exists anywhere in the flow.
01 · BackendMints a nonce and builds the DCQL request.
02 · ChromeHands the request to the W3C Digital Credentials API.
03 · AndroidCredential Manager offers an eligible credential; the holder consents.
04 · BackendVerifies the SD-JWT presentation, then signs the holder in.
An unrecognized email lands on a prefilled account-creation form. A known one gets a welcome-back view with its previous sign-in time and an activity report. The same verified claim drives both paths.
Before you test
Device and software requirements
Android
9 / API 28 or newer
Play services
25.49.x or newer
Browser
Current stable Chrome on Android
Google account
A consumer account. Workspace and supervised accounts cannot present this credential.
Transport
An HTTPS secure context. A LAN http://192.168… origin will not work.
Network
Connectivity is required for the duration of the presentation.
A non-Gmail address was verified when the Google Account was created, but Google gives no long-term freshness guarantee. A production system should add its own OTP challenge.
Specification and sourceKnow the building blocksThe spec, the working repository, and every backend endpoint