PID & attestations
OpenID4VCI pre-authorized flow with PAR + WIA client_assertion. All four credential formats: mDoc (ISO 18013-5), SD-JWT VC, JWT VC, BBS+ unlinkable. Schema-driven catalogue.
Issue PID and EAA credentials, accept verified presentations from any EUDI wallet, manage trust and revocation — all from a single, open backend you can deploy and integrate in days.
Business cases
Under Regulation (EU) 2024/1183 + the DSA, accepting the European Wallet becomes a legal requirement across several sectors from 2026. Click any case for the full flow, the European Commission's official wording, and the mandatory dates.
KYC, account opening, credit applications — no ID-card photocopies.
Read case →
Hospital, hotel, event — offline presentation, no account, no booking.
Read case →
18+ content, alcohol delivery, gambling — Zero-Knowledge Proof, no PII.
Read case →
Ticket in wallet, gate scan in 2 seconds, in-event cashless without a wristband.
Read case →
Gym access — no plastic card, no account, no queue. Wallet pass + reception tap.
Read case →
TV subscription verified — no e-mail, no card, no new account. Just scan the on-screen QR.
Read case →Citizen identity, attribute attestations, presentation, trust management — modular, not a closed product. You ship features, not protocol code.
OpenID4VCI pre-authorized flow with PAR + WIA client_assertion. All four credential formats: mDoc (ISO 18013-5), SD-JWT VC, JWT VC, BBS+ unlinkable. Schema-driven catalogue.
Online cross-device QR (ISO 18013-7) or in-person ISO 18013-5 BLE proximity. DCQL processor, transaction_data binding, audit cross-flow correlation. SIOP v2 bridge for legacy OIDC apps. Validated against the OpenID Foundation's OID4VP conformance suite.
One wallet requests attributes from another over the same presentation interface. Full OpenID4VP / EUDI § 6.6.4 implementation — consent, device-auth, intermediary chains.
End-to-end SCA flow for electronic payments per EUDI § 2.6.4 — initiate / respond / settle-from-presentation / receipt. Strict-mode enforced, transaction_data signed.
WiFi, mobility, telecom — RP requests scope=network_access, server applies policy on PID claims, the wallet auto-connects via a signed network config QR.
Trust anchor + RP + Issuer registry with separated registration / access certs. Bitstring StatusList per RFC 9596. Offline-friendly wallet revocation check.
All four EUDI § 2.5 pseudonym use cases — anonymous auth, attribute registration, rate-limited participation, linkable cross-RP. WebAuthn ES256, ZKP scheme registry, BBS+ derived proofs.
A native holder wallet on iOS and Android, plus a field validator — built end-to-end at ForTrust. White-label ready, commercial licence per agreement. Hardware-backed holder binding via AndroidKeyStore (Android) and the Secure Enclave (iOS).
Right to erasure, right to portability, DPA complaints — all wired as services with operator workflows. Tamper-evident audit chain on both server and validator.
The holder wallet runs native on iOS and Android; the field validator on Android. Both are built end-to-end inside ForTrust — no SDK fork, no third-party black boxes. Available commercially: hosted, dedicated deployment, or white-label, as needed.
The user's EUDI wallet. Enrols PID and EAA credentials, signs presentations on the device, talks to verifiers over BLE proximity or cross-device QR.
The relying-party reader. Used at counters, kiosks, in the field — anywhere a verifier needs to read a wallet's PID or attestation and decide on the spot.
The ForTrust wallet and issuer are validated against the OpenID Foundation's official OID4VP 1.0 Final and OID4VCI conformance suites, under the HAIP profile (the EU High-Assurance Interoperability Profile), with ISO mDL credentials. Coverage goes beyond the happy path to DCQL query handling (selective disclosure, optional credential sets) and negative security cases (invalid nonce, missing or malformed key-binding proofs). Verified on iOS and Android.
Every protocol layer in the stack — mDoc CBOR, COSE_Sign1,
OpenID4VCI, OpenID4VP, DCQL, status-list revocation, trust
verification, BBS+ — is implemented in-house. No
eudi-lib-*, no third-party EUDI SDK in the dependency
tree. Three things that buys you:
Every byte of the implementation is auditable in your own security review. No black-box library that your CISO has to accept on trust.
Ship features, patch CVEs, evolve trust policy on your own schedule. Not coupled to upstream consortium release windows or to deprecation cycles you didn't choose.
Wallet, server, and validator talk to each other strictly through published RFCs and EUDI protocols. Each piece is replaceable; no vendor lock-in even between our own components.
The "fully compliant" claim refers to functional code coverage of the EU Digital Identity Wallet specification. Production deployment for real citizens still requires the operational artefacts every EUDI Wallet Provider needs: ICAO PKD subscription, accredited certification, EUDIW Reference Verifier interop runs, and ANC accreditation as a Wallet Provider. We support our customers through that path.
Your app keeps speaking standard OpenID Connect. The user's wallet handles the cryptography. You receive verified claims as JSON.
GET /oidc/authorize/
with client_id, redirect_uri, scope. Receive a session id and a
wallet URI to render as a QR.
scope=openid+eudi_pid
The wallet scans the QR (or uses BLE in proximity flows), the user reviews the request and consents. Verification is performed server-side under your trust policy.
mdoc-openid4vp://…
Poll /oidc/userinfo/<sid>/
— 202 while pending, 200 with verified JSON when done. No COSE,
no certificate plumbing on your side.
{"given_name": "…", "age_over_18": true}
Implementation aligned with the European framework and the underlying RFCs. No fabricated certifications — every standard listed here is one we actually implement and test against.
We'll demo the backend on your scenario — onboarding, KYC, payment SCA, mobility, telecom — and walk you through what shipping it with real citizens looks like.
suport@fortrust.ro