EUDI message verifier · Proof of concept
From a message
to a wallet check.
A small, working implementation of a larger question: how can someone present identity evidence during a remote conversation, with a clear request and an explicit choice?
The operator starts the request.
The browser console creates a single-use verification link with an expiry. For the current hosted name check, the operator can also supply the name they expect to receive.
The service includes copy-link and messaging adapters for Telegram, WhatsApp, SMS and email. Each provider needs its own configuration; unavailable channels stay disabled. Links can be cancelled or resent, and the console distinguishes pending, declined, expired and completed requests.
The holder chooses to open their wallet.
On a phone, the holder prepares the request and explicitly taps Open wallet. On a computer, the same request is shown as a QR code for the wallet's scanner. There is no automatic wallet launch.
The wallet presents the request for the holder to review. The hosted service delegates OpenID4VP request creation and presentation validation to the official EUDI sandbox verifier. In the wallet, the requester appears as “Web Verifier (PROD)”, the name of that verifier's registration. That label does not make this a production Krnali identity service.
The result returns to the operator.
The console receives the verifier's result and shows the requested name evidence when a presentation succeeds. Agent and supervisor roles control the operator experience. Activity can be exported without claim values, and results clear after their configured retention period.
The hosted registration currently supports the name check. Age requests are disabled. A custom requester identity and the age preset require a dedicated relying-party registration.
What has been exercised
- Signed request creation and QR display.
- Explicit wallet launch and the browser handoff.
- Invalid-credential rejection.
- The real decline and callback flow.
Still pending: a successful presentation from an installed phone wallet. The documented iPhone TestFlight option is a candidate, not confirmed compatible. Browser fixtures and synthetic demonstrations are kept separate from live credential verification.
Explore the work.
The setup guide is public. The operator console is access-controlled. The source includes the implementation, test coverage and current acceptance notes.
Have a process we should test?
Talk to us about the conversation, the evidence you need and the decision it should support.
Talk to us