ISO 18013-5 defines the mDL data model (mdoc format using CBOR encoding) and two proximity presentation protocols: NFC engagement and BLE engagement; the reader (verifier) and the holder device (mDL app) establish a secure session.
Reader engagement begins with either QR code (device engagement) or NFC tap; the reader broadcasts its public key and session transcript commitment using the DeviceEngagement CBOR structure.
A session is established using ECDH key exchange; both parties derive a shared session key for encrypting subsequent messages (SessionEstablishment, SessionData).
The reader sends a DocRequest specifying the namespace (org.iso.18013.5.1) and the data elements it is requesting (e.g. family_name, birth_date, age_over_18); the mdl app responds with a DeviceResponse containing the requested elements and a DeviceSignature proving the mdl private key.
Verify the DeviceSignature using the public key in the MSO (Mobile Security Object) embedded in the mdoc; also verify the MSO signature chain up to the issuing authority certificate (IACA).
Known gotchas
ISO 18013-5 requires the reader to have the issuing authority's root certificate (IACA) pre-loaded or accessible; without it, the reader cannot verify the MSO and must reject the presentation.
Data elements are signed by the issuer in the MSO, not by the device; the device proves possession of the credential via DeviceSignature, while the issuer proves data integrity via IssuerSigned.
Selective disclosure in mdoc is coarser than SD-JWT — the holder can omit requested elements entirely, but cannot disclose partial attributes within a data element value.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp