---
title: "How to Verify Mobile Driver’s Licenses (ISO/IEC 18013-7 mDL) via OID4VP with walt.id"
description: "Learn to verify ISO/IEC 18013-5 mobile driver’s licenses via OID4VP with the walt.id Verifier API—step-by-step cURL examples, redirects, and results."
stack: "Community Stack (open source) — version 0.21.0"
stack_version: "0.21.0"
stack_comparison: https://docs.walt.id/community-vs-enterprise.md
canonical_url: https://docs.walt.id/community-stack/verifier/credential-verification/mdl-oid4vc
generated: 2026-07-20
---
# How to Verify Mobile Driver's Licenses (ISO/IEC 18013-7 mDL) via OID4VP with walt.id

**TL;DR**

**What you:**

- Create verification requests for mDL credentials with specific claim requirements
- Configure trusted IACA root certificates for mDL verification
- Retrieve verification status, policy results and inspect presented mDL credentials

**Relevant concepts:**

- [Mobile Driver's License (mDL)](https://docs.walt.id/concepts/digital-credentials/mdoc-mdl-iso.md) – ISO/IEC 18013-5/7 standard for mobile driver's licenses
- [OpenID4VP](https://docs.walt.id/concepts/data-exchange-protocols/openid4vp.md) – Protocol for requesting and receiving verifiable presentations

This guide provides a comprehensive walkthrough for verifying an mDL based on
the [ISO/IEC 18103-7 standard](https://www.iso.org/standard/91154.html) using
the walt.id Verifier API. The verification process will utilize the OID4VP protocol.

**mDL**: A digital equivalent of physical driver's license.

**OID4VP**: A protocol specifying how parties can present verifiable credentials in a way that's consistent
and secure across platforms ensuring interoperability.

## Verification Process

1. Set mDL as the credential type to request from a user.
2. Specify the claims from the mDL that are subject to presentation.
3. Optionally provide a success and failure redirect URL, which the user will be redirected to after the verification
   process is completed.

After you have provided the required information, the Verifier API:

1. Generates an appropriate [Presentation Definition](https://identity.foundation/presentation-exchange/#presentation-definition).
2. Returns a URL which can passed to a compliant wallet to fulfill the request.

If you have provided a success or failure redirect URL, the user will be redirected to that URL. You can then access the
verification results by using the id of the verification session, which can be found in the URL generated by the API, as
well as in the query or path parameters of the redirect URL.

### Example Verification Request

**Option: CURL**

```bash
curl -X 'POST' \
  'https://verifier.portal.test.waltid.cloud/openid4vc/verify' \
  -H 'accept: */*' \
  -H 'authorizeBaseUrl: mdoc-openid4vp://' \
  -H 'responseMode: direct_post.jwt' \
  -H 'successRedirectUri: https://example.com/success?id=$id' \
  -H 'errorRedirectUri: https://example.com/error?id=$id' \
  -H 'statusCallbackUri: https://example.com/verificationResult' \
  -H 'statusCallbackApiKey: myAPIKey' \
  -H 'stateId: myUniqueStateValue' \
  -H 'Content-Type: application/json' \
  -d '{
  "request_credentials": [
    {
      "id": "mDL-request",
      "input_descriptor": {
        "id": "org.iso.18013.5.1.mDL",
        "format": {
          "mso_mdoc": {
            "alg": [
              "ES256"
            ]
          }
        },
        "constraints": {
          "fields": [
            {
              "path": [
                "$['org.iso.18013.5.1']['birth_date']"
              ],
              "intent_to_retain": false
            },
            {
              "path": [
                "$['org.iso.18013.5.1']['issue_date']"
              ],
              "intent_to_retain": false
            },
            {
              "path": [
                "$['org.iso.18013.5.1']['expiry_date']"
              ],
              "intent_to_retain": false
            }
          ],
          "limit_disclosure": "required"
        }
      }
    }
  ],
  "trusted_root_cas": [
    "-----BEGIN CERTIFICATE-----\nMIIBtDCCAVmgAwIBAgIUAOXLkeu9penFRno6oDcOBgT1odYwCgYIKoZIzj0EAwIwKDELMAkGA1UEBhMCQVQxGTAXBgNVBAMMEFdhbHRpZCBUZXN0IElBQ0EwHhcNMjUwNjAyMDYzOTQ0WhcNNDAwNTI5MDYzOTQ0WjAoMQswCQYDVQQGEwJBVDEZMBcGA1UEAwwQV2FsdGlkIFRlc3QgSUFDQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAZGrRN7Oeanhn7MOaGU6HhaCt8ZMySk/nRHefLbRq8lChr+PS6JqpCJ503sEvByXzPDgPsp0urKg/y0E+F7q9+jYTBfMB0GA1UdDgQWBBTxCn2nWMrE70qXb614U14BweY2azASBgNVHRMBAf8ECDAGAQH/AgEAMBoGA1UdEgQTMBGGD2h0dHBzOi8vd2FsdC5pZDAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwIDSQAwRgIhAOM37BjC48KhsSlU6mdJwlTLrad9VzlXVKc1GmjoCNm1AiEAkFRJalpz62QCOby9l7Vkq0LAdWVKiFMd0DmSxjsdT2U=\n-----END CERTIFICATE-----\n"
  ],
  "openid_profile": "ISO_18013_7_MDOC"
}'
```

**Header Parameters**

- **authorizeBaseUrl** - should be set `mdoc-openid4vp://`.
- **responseMode** - must be set to `direct_post.jwt`.
- **successRedirectUri** (optional) - is used to redirect the user if verification is successful. You can use the `$id`
  placeholder
  to get access to the id of verification session in your application in order to retrieve the verification results.
  E.g. `/success?id=$id` will be replaced with `/success?id=1234567890`
- **errorRedirectUri** (optional) - is used to redirect the user if verification is unsuccessful. You can use the `$id`
  placeholder
  to get access to the id of verification session in your application in order to retrieve the verification results.
  E.g. `/error?id=$id` will be replaced with `/error?id=1234567890`
- **statusCallbackUri** (optional) - URL that should be called when the presentation request has been fulfilled by a
  wallet. The request
  sent will be a `POST` including the whole presentation
  result. [See Verification Status Policies Response](#verification-status-policies-response)
- **statusCallbackApiKey** (optional) - If the endpoint you provide via `statusCallbackUri` is protected, you can use
  the `statusCallbackApiKey` to authenticate.
  The provided key will be appended as Authorization Header to the request.
- **stateId** (optional) - overwrite the unique `state` value which gets created for each verification request with your
  own.

**Body Parameters**

- **request_credentials** - An array of objects detailing the credentials to be requested from the user. Each object
  varies based on the type of credential being requested.
  <br/>
  <details><summary>Expand To Learn More</summary>

  Below are the possible credential types and their respective object structures:

  1. **mDL Credential (ISO/IEC 18013-5)**
  - **doc_type**: Specifies the type of credential (e.g., org.iso.18013.5.1.mDL). This maps to the doc_type
    attribute of
    the mdoc document.
  - **format**: Describes the format of the credential. For mDL credentials, this would be `mso_mdoc`.
    ```json
    { "doc_type": "org.iso.18013.5.1.mDL", "format": "mso_mdoc" }
    ```
  2. **W3C JWT Credential**
    - **type** Specifies the type of credential (e.g., `VerifiableID`, `VerifiableDiploma`). This maps to the `type`
      attribute in W3C credentials.
    - **format**: Describes the format of the credential. For W3C JWT credentials, this would
      be `jwt_vc_json`.
      ```json
      { "type": "ProofOfResidence", "format": "jwt_vc_json" }
      ```
  3. **SD-JWT VC Credential (IETF Standard)**
    - **vct**: Specifies the type of credential (e.g., https://issuer.com/identity_credential). This maps to
      the `vct`
      attribute in the SD-JWT VC credential.
    - **format**: Describes the format of the credential. For SD-JWT VC credentials, this would be
      vc+sd-jwt.: Describes the format of the credential. For SD-JWT VC credentials, this would be `vc+sd-jwt`.
     ```json
     { "vct": "test.com/identity_credential", "format": "vc+sd-jwt" }
     ```

  **Optional Parameters**
  <br />
  Next to describing the type and format of the credential, the objects also take an optional `policies` and `id`
  attribute

  - **policies**: An array of policies to apply to the specified credential. A list of all policies can be
    found [here](https://docs.walt.id/community-stack/verifier/credential-verification/policies/overview.md).
  - **id**: Used to set a specific id for the
    generated [Presentation Definition](https://identity.foundation/presentation-exchange/spec/v1.0.0/#presentation-definition).
    If not set,
    the verifier API auto-assigns a generated one.

  **Full Examples**
    ```json
     {
      "type": "ProofOfResidence",
      "format": "jwt_vc_json",
      "policies": [
        "schema",
        {
          "policy": "webhook",
          "args": "https://example.org/abc/xyz"
        }
      ],
      "id": "test123"
     } 

    ```

</details>

- **trusted_root_cas** - List of trusted IACA root certificates used to verify the authenticity of the presented mDL 
  credential.
- **openid_profile** - should be set to `ISO_18013_7_MDOC`.

Once the Verifier API receives the presented mDL from the holder, it will apply the following checks: 
1. Validate the certificate of the document signer (credential issuer) included in the MSO header.
2. Validate that the certificate of the document signer is issued by one of the designated trusted IACAs.
3. Perform various other validity checks involving the certificates (e.g., validity period).
4. Verify the digital signature of the `IssuerAuth` structure.
5. Verify the digital signature of the `DeviceAuth` structure.
6. Verify that every `IssuerSignedItem` received from the holder has not been tampered with.
7. Verify the `doc_type`.
8. Validate the elements in the MSO's `ValidityInfo` structure.

## Presenting the mDL via walt.id Wallet

Using the URL returned by the verification request, you can fulfill the request using the
[hosted wallet](https://wallet.demo.walt.id) by walt.id.

To present the mDL via the walt.id Wallet:

1. Open the hosted wallet and click **"Scan to receive or present credentials"** in the top-right corner of the credentials
   overview page.
2. Choose one of the following options:
   - Show the URL as a QR code and scan it with a camera.
   - Paste the URL into the text field below the camera.

## Retrieving the Verification Status

After the user presents the credential(s), you can verify the status by performing the following call with the
`state` value obtained from the URL query params you shared with the user previously.

**Example**

```
openid4vp://authorize?...state=a07bdb17-7d87-4965-9296-1adefcaaddd9...
```

Making the call to receive the verification result

```bash
curl -X 'GET' \
  'https://verifier.portal.test.waltid.cloud/openid4vc/session/$state' \
  -H 'accept: */*'
```

## Verification Status Response

The response will contain, among others, the status of the verification following the submission of the 
presentation from the mDL holder. A sample verification status response (based on the sample presentation request 
introduced above) is as follows:

```json
{
  "id": "6V0d0knr5cEk",
  "presentationDefinition": {
    "id": "2nQOQaPb7bi",
    "input_descriptors": [
      {
        "id": "org.iso.18013.5.1.mDL",
        "format": {
          "mso_mdoc": {
            "alg": [
              "ES256"
            ]
          }
        },
        "constraints": {
          "fields": [
            {
              "path": [
                "$['org.iso.18013.5.1']['birth_date']"
              ],
              "intent_to_retain": false
            },
            {
              "path": [
                "$['org.iso.18013.5.1']['issue_date']"
              ],
              "intent_to_retain": false
            },
            {
              "path": [
                "$['org.iso.18013.5.1']['expiry_date']"
              ],
              "intent_to_retain": false
            }
          ],
          "limit_disclosure": "required"
        }
      }
    ],
    "customParameters": {}
  },
  "tokenResponse": {
    "vp_token": "o2d2ZXJzaW9uYzEuMGlkb2N1bWVudHOBo2dkb2NUeXBldW9yZy5pc28uMTgwMTMuNS4xLm1ETGxpc3N1ZXJTaWduZWSiam5hbWVTcGFjZXOhcW9yZy5pc28uMTgwMTMuNS4xg9gYWFikaGRpZ2VzdElEAmZyYW5kb21Qw62gF77o6MEYazSd6hmS43FlbGVtZW50SWRlbnRpZmllcmpiaXJ0aF9kYXRlbGVsZW1lbnRWYWx1ZWoxOTg2LTAzLTIy2BhYWKRoZGlnZXN0SUQDZnJhbmRvbVBQWS2bHMQpgo6sQEcXyEGhcWVsZW1lbnRJZGVudGlmaWVyamlzc3VlX2RhdGVsZWxlbWVudFZhbHVlajIwMTktMTAtMjDYGFhZpGhkaWdlc3RJRARmcmFuZG9tUNSMY-SYGOzgghW85RIykexxZWxlbWVudElkZW50aWZpZXJrZXhwaXJ5X2RhdGVsZWxlbWVudFZhbHVlajIwMjQtMTAtMjBqaXNzdWVyQXV0aIRDoQEmoRghWQINMIICCTCCAbCgAwIBAgIUfqyiArJZoX7M61_473UAVi2_UpgwCgYIKoZIzj0EAwIwKDELMAkGA1UEBhMCQVQxGTAXBgNVBAMMEFdhbHRpZCBUZXN0IElBQ0EwHhcNMjUwNjAyMDY0MTEzWhcNMjYwOTAyMDY0MTEzWjAzMQswCQYDVQQGEwJBVDEkMCIGA1UEAwwbV2FsdGlkIFRlc3QgRG9jdW1lbnQgU2lnbmVyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPzp6eVSAdXERqAp8q8OuDEhl2ILGAaoaQXTJ2sD2g5Xp3CFQDMrMpR_SQ0jt_jTOqExk1PRzjQ79aKpIsJM1mqOBrDCBqTAfBgNVHSMEGDAWgBTxCn2nWMrE70qXb614U14BweY2azAdBgNVHQ4EFgQUx5qkOLC4lpl1xpYZGmF9HLxtp0gwDgYDVR0PAQH_BAQDAgeAMBoGA1UdEgQTMBGGD2h0dHBzOi8vd2FsdC5pZDAVBgNVHSUBAf8ECzAJBgcogYxdBQECMCQGA1UdHwQdMBswGaAXoBWGE2h0dHBzOi8vd2FsdC5pZC9jcmwwCgYIKoZIzj0EAwIDRwAwRAIgHTap3c6yCUNhDVfZWBPMKj9dCWZbrME03kh9NJTbw1ECIAvVvuGll9O21eR16SkJHHAA1pPcovhcTvF9fz9cc66MWQLb2BhZAtamZ3ZlcnNpb25jMS4wb2RpZ2VzdEFsZ29yaXRobWdTSEEtMjU2bHZhbHVlRGlnZXN0c6Fxb3JnLmlzby4xODAxMy41LjGrAFggNl8eLVqR74wd3QOna5iBSVtgkxUy1evZYyf-kzBAhUIBWCBqENuJTWRajrLgO4G0wCg_zbGVkYYngwbSuCM6pBDPEQJYIDgC-m4uZJFhvUiZqgSyjKZSnEg9xfKnOGiSq3kcH8EcA1ggjFwxgydoUg3FIablekLv1KPHumKUxnjSZDN4h8RgUZQEWCBfdbAm68joDWrtS97zTBSyOHSX6L8LNGycJxiKQWmWnQVYICX7ygfWVlNg5BffKs0oSWNPF1bXTB56p-bGJvo7cYEZBlgg7v7IxOCReToypDwxgg2Q_w7rXrU78o9p5sHajsne0NUHWCDChJxVL8ls1PB_WSUpY0LMGb4MfnaSwXsDQy5_TnKRoghYIJt90wUKMxmz1OctNn-YjFhg02-QomCoSJ2M_IPgh4aSCVggqgkamVdQM2GwLUCu8T-pTWKo9NhiHuMGPco3seU3SnQKWCBJgG1p_b_JO_CcXoi4VpIToNDZCKvO6m88jiMFK_4RJW1kZXZpY2VLZXlJbmZvoWlkZXZpY2VLZXmkAQIgASFYIAGMglQiByggcIffBlQbNiRFfsGh3vmPhekEgmpTsdpqIlggG10cWsZDdmK14nPpItsrs65J-EMMRlbXzDnCERQ2Ut1nZG9jVHlwZXVvcmcuaXNvLjE4MDEzLjUuMS5tRExsdmFsaWRpdHlJbmZvo2ZzaWduZWTAeB4yMDI1LTA2LTAzVDA1OjU0OjQxLjg2MTkwMzM3N1ppdmFsaWRGcm9twHgeMjAyNS0wNi0wM1QwNTo1NDo0MS44NjE5MDM5MThaanZhbGlkVW50aWzAeB4yMDI2LTA2LTAzVDA1OjU0OjQxLjg2MTkwMzk2OFpYQORvhnlGP5xw6xK8T-9fdlgerENfFDjiUwwaCH-AmXGq_kjqAF4LJo8nvkfJ9VzTinkPJO0SZpN7LmoNbL7bIitsZGV2aWNlU2lnbmVkompuYW1lU3BhY2Vz2BhBoGpkZXZpY2VBdXRooW9kZXZpY2VTaWduYXR1cmWEQ6EBJqEYIYD2WEAZqNCCNuDJDUlWUrjRzo9C5UylYEYpcdDmmQwgQetrwRTj14uDyw1jEYOFKdtGj1YPpdw30oM0fewG9StfAPEDZnN0YXR1cwA=",
    "presentation_submission": {
      "id": "2nQOQaPb7bi",
      "definition_id": "2nQOQaPb7bi",
      "descriptor_map": [
        {
          "id": "org.iso.18013.5.1.mDL",
          "format": "mso_mdoc",
          "path": "$",
          "path_nested": {
            "id": "org.iso.18013.5.1.mDL",
            "format": "mso_mdoc",
            "path": "$.documents[0]",
            "customParameters": {}
          }
        }
      ]
    },
    "state": "6V0d0knr5cEk"
  },
  "verificationResult": true
}
```

**Body Parameters**

- **id** - Unique identifier for the presentation session.
- **presentationDefinition** - The requirements that the holder must satisfy (e.g., credential types, fields, 
  algorithms) in the context of this presentation session.
- **vp_token** - The submitted verifiable presentation.
- **presentation_submission** - Metadata showing how the presented credential maps to the expected structure..
- **verificationResult** - Indicates whether the presentation was successfully verified.

The `verificationResult` field will be `true` if all verifications were successful, otherwise it will be `false`.

## Inspecting Presented mDL Claims

After a successful presentation session (`verificationResult` is `true`), you can retrieve a decoded and formatted
view of all mDLs presented by the holder.

Two view modes are available:

- **`simple`** - Go-to choice for most cases.
- **`verbose`** - Useful for debugging, auditing, and other detailed technical information.

**Endpoint:** `/openid4vc/session/{id}/presented-credentials` | [API Reference](https://verifier.demo.walt.id/swagger/index.html#/Credential%20Verification/get_openid4vc_session__id__presented_credentials)

### Request

**Path Parameters**

- **`id`** (required)- The identifier of the presentation session whose credentials should be retrieved.

**Query Parameters**

- **`viewMode`** (optional) - Controls how detailed the response will be. Available values are `simple` and `verbose`
  (defaults to `simple`).

### Response

**Response Body**

- **`viewMode`** - Echoed request value (or the default if it was not specified).

- **`credentialsByFormat`** : A map where each key is a presentation format (`jwt_vc_json`, `sd_jwt_vc`, `mso_mdoc`)
  and the value is an array of decoded presented credentials, formatted as JSON objects and whose properties vary
  according to the value of `viewMode`:
  - For `mso_mdoc` in `simple` view mode:
    - **`version`** - The version of the device response structure.
    - **`status`** - Integer value where a value of `0` corresponds to the `OK` status message.
    - **`documents`** - An array of decoded mDocs (only one entry in this case that contains the mDL) where each entry
    is a JSON object that is composed of the following properties:
      - **`docType`** - The document type of the mDoc, which in this case will have a value of `org.iso.18013.5.1.mDL`.
      - **`nameSpaces`** - An associative array between the requested data elements and the namespaces (identifiers) 
      they belong to.
      - **`certificateChain`** - The `x5chain` element in the header of the `IssuerAuth` Cose_Sign1 structure.
      - **`validityInfo`** - JSON object that contains information related to the validity of the Mobile Security
      Object (MSO) and its signature. It is composed of the following properties:
        - **`signed`** - Timestamp of when the MSO was signed.
        - **`validFrom`** - Timestamp before which the MSO should not be considered valid.
        - **`validUntil`** - Timestamp after which the MSO should not be considered valid.
        - **`expectedUpdate`** - Optionally included timestamp by the document signer (issuer) at which the MSO is
        expected to be re-signed and the data elements will be potentially updated.
      - **`deviceKey`** - JWK-formatted device key.

  - For `mso_mdoc` in `verbose` view mode:
    - **`raw`** - The base64 URL-encoded device response structure.
    - **`version`** - The version of the device response structure.
    - **`status`** - Integer value where a value of `0` corresponds to the `OK` status message. 
    - **`documents`** - An array of verbosely decoded mDocs (only one entry in this case that contains the mDL) where
    each entry is a JSON object that is composed of the following properties:
      - **`docType`** - The document type of the mDoc, which in this case will have a value of `org.iso.18013.5.1.mDL`.
      - **`issuerSigned`** - JSON object that is composed of the following properties:
        - **`nameSpaces`** - An associative array between the requested data elements and the namespaces (identifiers)
          they belong to.
        - **`issuerAuth`** - JSON object that is composed of the following properties:
          - **`x5c`** - The `x5chain` element in the header of the `IssuerAuth` Cose_Sign1 structure.
          - **`algorithm`** - The COSE Algorithm ID.
          - **`protectedHeader`** - The protected header of the `IssuerAuth` Cose_Sign1 structure.
          - **`payload`** - JSON object that provides a verbosely decoded version of the MSO and is composed of the
          following properties:
            - **`docType`** - The document type of the mDoc, which in this case will have a value of `org.iso.18013.5.1.mDL`.
            - **`version`** - The version of the mobile security object structure.
            - **`digestAlgorithm`** - Identifier of the digest algorithm used.
            - **`valueDigests`** - Digests of all data elements per namespace.
            - **`validityInfo`** - JSON object that contains information related to the validity of the Mobile Security
            Object (MSO) and its signature (defined above).
            - **`deviceKeyInfo`** - JSON object that contains information related to the device key and is composed of
            the following properties:
              - **`deviceKey`** - JWK-formatted device key.
              - **`keyInfo`** - Optional structure that may contain extra information about the key.
              - **`keyAuthorizations`** - Contains all the elements the device key may sign or MAC (optional field).
            - **`status`** - Optional structure that may be used to provide MSO revocation information that is compared
            to the information in an externally hosted MSO revocation list. This structure is provided as a JSON
            object.
      - **`deviceSigned`** - JSON object that is composed of the following properties:
        - **`nameSpaces`** - Contains the returned data elements as part of their corresponding namespaces.
        - **`deviceAuth`** - Contains either the device signature or the device MAC element.

### mDL With All Mandatory Claims Requested/Presented

In the following we provide an example that involves the presentation of all mandatory claims of an mDL. 

**Option: Simple**

**Example Request**

```bash
curl -X 'GET' \
  'http://0.0.0.0:7003/openid4vc/session/{id}/presented-credentials' \
  -H 'accept: application/json'
```

**Example Response**

```json
{
  "credentialsByFormat": {
    "mso_mdoc": [
      {
        "type": "mso_mdoc_view_simple",
        "version": "1.0",
        "status": 0,
        "documents": [
          {
            "docType": "org.iso.18013.5.1.mDL",
            "nameSpaces": {
              "org.iso.18013.5.1": {
                "family_name": "Doe",
                "given_name": "John",
                "birth_date": "1986-03-22",
                "issue_date": "2019-10-20",
                "expiry_date": "2024-10-20",
                "issuing_country": "AT",
                "issuing_authority": "AT DMV",
                "document_number": 123456789,
                "portrait": [
                  141,
                  182,
                  121,
                  111,
                  238,
                  50,
                  120,
                  94,
                  54,
                  111,
                  113,
                  13,
                  241,
                  12,
                  12
                ],
                "driving_privileges": [
                  {
                    "vehicle_category_code": "A",
                    "issue_date": "2018-08-09",
                    "expiry_date": "2024-10-20"
                  },
                  {
                    "vehicle_category_code": "B",
                    "issue_date": "2017-02-23",
                    "expiry_date": "2024-10-20"
                  }
                ],
                "un_distinguishing_sign": "AT"
              }
            },
            "certificateChain": [
              "-----BEGIN CERTIFICATE-----\nMIICCTCCAbCgAwIBAgIUfqyiArJZoX7M61/473UAVi2/UpgwCgYIKoZIzj0EAwIwKDELMAkGA1UEBhMCQVQxGTAXBgNVBAMMEFdhbHRpZCBUZXN0IElBQ0EwHhcNMjUwNjAyMDY0MTEzWhcNMjYwOTAyMDY0MTEzWjAzMQswCQYDVQQGEwJBVDEkMCIGA1UEAwwbV2FsdGlkIFRlc3QgRG9jdW1lbnQgU2lnbmVyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPzp6eVSAdXERqAp8q8OuDEhl2ILGAaoaQXTJ2sD2g5Xp3CFQDMrMpR/SQ0jt/jTOqExk1PRzjQ79aKpIsJM1mqOBrDCBqTAfBgNVHSMEGDAWgBTxCn2nWMrE70qXb614U14BweY2azAdBgNVHQ4EFgQUx5qkOLC4lpl1xpYZGmF9HLxtp0gwDgYDVR0PAQH/BAQDAgeAMBoGA1UdEgQTMBGGD2h0dHBzOi8vd2FsdC5pZDAVBgNVHSUBAf8ECzAJBgcogYxdBQECMCQGA1UdHwQdMBswGaAXoBWGE2h0dHBzOi8vd2FsdC5pZC9jcmwwCgYIKoZIzj0EAwIDRwAwRAIgHTap3c6yCUNhDVfZWBPMKj9dCWZbrME03kh9NJTbw1ECIAvVvuGll9O21eR16SkJHHAA1pPcovhcTvF9fz9cc66M\n-----END CERTIFICATE-----"
            ],
            "validityInfo": {
              "signed": "2025-07-16T07:28:10.396597247Z",
              "validFrom": "2025-07-16T07:28:10.396597357Z",
              "validUntil": "2026-07-16T07:28:10.396597407Z"
            },
            "deviceKey": {
              "kty": "EC",
              "crv": "P-256",
              "x": "wDAbXvruEhxgchNp_M-lCaTU-oVbk4iz90wBah3RoN0",
              "y": "WHY287BApRNQkUrNQVEDUZUID5W0D8gi01EZpHG7e6I"
            }
          }
        ]
      }
    ]
  },
  "viewMode": "simple"
}
```

**Option: Verbose**

**Example Request**

```bash
curl -X 'GET' \
  'http://0.0.0.0:7003/openid4vc/session/{id}/presented-credentials?viewMode=verbose' \
  -H 'accept: application/json'
```

**Example Response**

```json
{
  "credentialsByFormat": {
    "mso_mdoc": [
      {
        "type": "mso_mdoc_view_verbose",
        "raw": "o2d2ZXJzaW9uYzEuMGlkb2N1bWVudHOBo2dkb2NUeXBldW9yZy5pc28uMTgwMTMuNS4xLm1ETGxpc3N1ZXJTaWduZWSiam5hbWVTcGFjZXOhcW9yZy5pc28uMTgwMTMuNS4xi9gYWFKkaGRpZ2VzdElEAGZyYW5kb21Q6jtBNq_iT1tw9ackPuQNcHFlbGVtZW50SWRlbnRpZmllcmtmYW1pbHlfbmFtZWxlbGVtZW50VmFsdWVjRG9l2BhYUqRoZGlnZXN0SUQBZnJhbmRvbVAF97buvW0vtdvvyidYa3qQcWVsZW1lbnRJZGVudGlmaWVyamdpdmVuX25hbWVsZWxlbWVudFZhbHVlZEpvaG7YGFhYpGhkaWdlc3RJRAJmcmFuZG9tUIp69etSESKQMr4A3-eNsL9xZWxlbWVudElkZW50aWZpZXJqYmlydGhfZGF0ZWxlbGVtZW50VmFsdWVqMTk4Ni0wMy0yMtgYWFikaGRpZ2VzdElEA2ZyYW5kb21QHo_HvY6nN-lD-4p9Q2BvznFlbGVtZW50SWRlbnRpZmllcmppc3N1ZV9kYXRlbGVsZW1lbnRWYWx1ZWoyMDE5LTEwLTIw2BhYWaRoZGlnZXN0SUQEZnJhbmRvbVC3Us6PvyqxANfy7WZrwR-bcWVsZW1lbnRJZGVudGlmaWVya2V4cGlyeV9kYXRlbGVsZW1lbnRWYWx1ZWoyMDI0LTEwLTIw2BhYVaRoZGlnZXN0SUQFZnJhbmRvbVBQDUUmVFjsYhQcK7WZ4ApycWVsZW1lbnRJZGVudGlmaWVyb2lzc3VpbmdfY291bnRyeWxlbGVtZW50VmFsdWViQVTYGFhbpGhkaWdlc3RJRAZmcmFuZG9tUP1DNM51--gzzLH8I5Bjx7VxZWxlbWVudElkZW50aWZpZXJxaXNzdWluZ19hdXRob3JpdHlsZWxlbWVudFZhbHVlZkFUIERNVtgYWFekaGRpZ2VzdElEB2ZyYW5kb21QFgjaYCngk7V46uUeXTBX-XFlbGVtZW50SWRlbnRpZmllcm9kb2N1bWVudF9udW1iZXJsZWxlbWVudFZhbHVlGgdbzRXYGFhnpGhkaWdlc3RJRAhmcmFuZG9tUA-b-wZHW3ERzIb6hs3HAapxZWxlbWVudElkZW50aWZpZXJocG9ydHJhaXRsZWxlbWVudFZhbHVljxiNGLYYeRhvGO4YMhh4GF4YNhhvGHENGPEMDNgYWOKkaGRpZ2VzdElECWZyYW5kb21QGFSyeNBXnznFVEBHHpqZlXFlbGVtZW50SWRlbnRpZmllcnJkcml2aW5nX3ByaXZpbGVnZXNsZWxlbWVudFZhbHVlgqN1dmVoaWNsZV9jYXRlZ29yeV9jb2RlYUFqaXNzdWVfZGF0ZWoyMDE4LTA4LTA5a2V4cGlyeV9kYXRlajIwMjQtMTAtMjCjdXZlaGljbGVfY2F0ZWdvcnlfY29kZWFCamlzc3VlX2RhdGVqMjAxNy0wMi0yM2tleHBpcnlfZGF0ZWoyMDI0LTEwLTIw2BhYXKRoZGlnZXN0SUQKZnJhbmRvbVC7AKxX3rE-D3-Y0_MtrznwcWVsZW1lbnRJZGVudGlmaWVydnVuX2Rpc3Rpbmd1aXNoaW5nX3NpZ25sZWxlbWVudFZhbHVlYkFUamlzc3VlckF1dGiEQ6EBJqEYIVkCDTCCAgkwggGwoAMCAQICFH6sogKyWaF-zOtf-O91AFYtv1KYMAoGCCqGSM49BAMCMCgxCzAJBgNVBAYTAkFUMRkwFwYDVQQDDBBXYWx0aWQgVGVzdCBJQUNBMB4XDTI1MDYwMjA2NDExM1oXDTI2MDkwMjA2NDExM1owMzELMAkGA1UEBhMCQVQxJDAiBgNVBAMMG1dhbHRpZCBUZXN0IERvY3VtZW50IFNpZ25lcjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD86enlUgHVxEagKfKvDrgxIZdiCxgGqGkF0ydrA9oOV6dwhUAzKzKUf0kNI7f40zqhMZNT0c40O_WiqSLCTNZqjgawwgakwHwYDVR0jBBgwFoAU8Qp9p1jKxO9Kl2-teFNeAcHmNmswHQYDVR0OBBYEFMeapDiwuJaZdcaWGRphfRy8badIMA4GA1UdDwEB_wQEAwIHgDAaBgNVHRIEEzARhg9odHRwczovL3dhbHQuaWQwFQYDVR0lAQH_BAswCQYHKIGMXQUBAjAkBgNVHR8EHTAbMBmgF6AVhhNodHRwczovL3dhbHQuaWQvY3JsMAoGCCqGSM49BAMCA0cAMEQCIB02qd3OsglDYQ1X2VgTzCo_XQlmW6zBNN5IfTSU28NRAiAL1b7hpZfTttXkdekpCRxwANaT3KL4XE7xfX8_XHOujFkC29gYWQLWpmd2ZXJzaW9uYzEuMG9kaWdlc3RBbGdvcml0aG1nU0hBLTI1Nmx2YWx1ZURpZ2VzdHOhcW9yZy5pc28uMTgwMTMuNS4xqwBYIEhnRHmvup8TlsQ9hkEF4kH5KRKVxfjOpdadkGxgAqTUAVgg2PkypU9XEsKInFxUYaLdY95CQuR9WEx_uTKKMSakfDICWCCMWA5TlOdlv9OCYOPsUL7jvPQkOM8g6BQfZv6zcnE8AANYII5xio1q4XtRNUKeD-r3mD4rFVKeXzyJe_QHoDs2HcaPBFgg-Not5xT8jU-MMwi__otHq-A1HwvZto7K6gcNMHFe5NwFWCBXW91nys2OEHiJYr8TKTw0P9idVx0N9Xf384fmGnIKWQZYIBqK5uyNOCXvmTzRbl_SQSRapF5DIRtFxza-RfhKR14lB1ggbgAfyHWnOWRB0SCUFAj9He6XUdoJFYMVm-3cHEX-PjkIWCA-j1UB92LJnlr6BSdC3ZQ2pkzYz1zykCk28Baas-tShglYILn7TvLzLvTAFkS85WVyKnD74IW9CjNgaQn0KGAhfQ_uClggjOrfc9Ue1XVquGt2AUhlJrd1sUwrP2No5UZQi_ti5KBtZGV2aWNlS2V5SW5mb6FpZGV2aWNlS2V5pAECIAEhWCDAMBte-u4SHGByE2n8z6UJpNT6hVuTiLP3TAFqHdGg3SJYIFh2NvOwQKUTUJFKzUFRA1GVCA-VtA_IItNRGaRxu3uiZ2RvY1R5cGV1b3JnLmlzby4xODAxMy41LjEubURMbHZhbGlkaXR5SW5mb6Nmc2lnbmVkwHgeMjAyNS0wNy0xNlQwNzoyODoxMC4zOTY1OTcyNDdaaXZhbGlkRnJvbcB4HjIwMjUtMDctMTZUMDc6Mjg6MTAuMzk2NTk3MzU3Wmp2YWxpZFVudGlswHgeMjAyNi0wNy0xNlQwNzoyODoxMC4zOTY1OTc0MDdaWEDiemZef8Z-tVwEMtNPde_6ySjS37D5VCHm3WqbsnwGi87Y4H1HLrLQdkvonitJqjmP8WT5Vqt-wdAml82wlSmPbGRldmljZVNpZ25lZKJqbmFtZVNwYWNlc9gYQaBqZGV2aWNlQXV0aKFvZGV2aWNlU2lnbmF0dXJlhEOhASahGCGA9lhAU3IJNfF-abBEzwzEH0U1zJinbx_wbxXs0oaI3mPQJ_hWdb4WUO4GN1aLpPQ7McqNIozYxY7bQTmPbArqzSAIEWZzdGF0dXMA",
        "version": "1.0",
        "status": 0,
        "documents": [
          {
            "docType": "org.iso.18013.5.1.mDL",
            "issuerSigned": {
              "nameSpaces": {
                "org.iso.18013.5.1": {
                  "family_name": "Doe",
                  "given_name": "John",
                  "birth_date": "1986-03-22",
                  "issue_date": "2019-10-20",
                  "expiry_date": "2024-10-20",
                  "issuing_country": "AT",
                  "issuing_authority": "AT DMV",
                  "document_number": 123456789,
                  "portrait": [
                    141,
                    182,
                    121,
                    111,
                    238,
                    50,
                    120,
                    94,
                    54,
                    111,
                    113,
                    13,
                    241,
                    12,
                    12
                  ],
                  "driving_privileges": [
                    {
                      "vehicle_category_code": "A",
                      "issue_date": "2018-08-09",
                      "expiry_date": "2024-10-20"
                    },
                    {
                      "vehicle_category_code": "B",
                      "issue_date": "2017-02-23",
                      "expiry_date": "2024-10-20"
                    }
                  ],
                  "un_distinguishing_sign": "AT"
                }
              },
              "issuerAuth": {
                "x5c": [
                  "-----BEGIN CERTIFICATE-----\nMIICCTCCAbCgAwIBAgIUfqyiArJZoX7M61/473UAVi2/UpgwCgYIKoZIzj0EAwIwKDELMAkGA1UEBhMCQVQxGTAXBgNVBAMMEFdhbHRpZCBUZXN0IElBQ0EwHhcNMjUwNjAyMDY0MTEzWhcNMjYwOTAyMDY0MTEzWjAzMQswCQYDVQQGEwJBVDEkMCIGA1UEAwwbV2FsdGlkIFRlc3QgRG9jdW1lbnQgU2lnbmVyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPzp6eVSAdXERqAp8q8OuDEhl2ILGAaoaQXTJ2sD2g5Xp3CFQDMrMpR/SQ0jt/jTOqExk1PRzjQ79aKpIsJM1mqOBrDCBqTAfBgNVHSMEGDAWgBTxCn2nWMrE70qXb614U14BweY2azAdBgNVHQ4EFgQUx5qkOLC4lpl1xpYZGmF9HLxtp0gwDgYDVR0PAQH/BAQDAgeAMBoGA1UdEgQTMBGGD2h0dHBzOi8vd2FsdC5pZDAVBgNVHSUBAf8ECzAJBgcogYxdBQECMCQGA1UdHwQdMBswGaAXoBWGE2h0dHBzOi8vd2FsdC5pZC9jcmwwCgYIKoZIzj0EAwIDRwAwRAIgHTap3c6yCUNhDVfZWBPMKj9dCWZbrME03kh9NJTbw1ECIAvVvuGll9O21eR16SkJHHAA1pPcovhcTvF9fz9cc66M\n-----END CERTIFICATE-----"
                ],
                "algorithm": -7,
                "protectedHeader": {
                  "1": -7
                },
                "payload": {
                  "docType": "org.iso.18013.5.1.mDL",
                  "version": "1.0",
                  "digestAlgorithm": "SHA-256",
                  "valueDigests": {
                    "org.iso.18013.5.1": {
                      "0": [
                        72,
                        103,
                        68,
                        121,
                        -81,
                        -70,
                        -97,
                        19,
                        -106,
                        -60,
                        61,
                        -122,
                        65,
                        5,
                        -30,
                        65,
                        -7,
                        41,
                        18,
                        -107,
                        -59,
                        -8,
                        -50,
                        -91,
                        -42,
                        -99,
                        -112,
                        108,
                        96,
                        2,
                        -92,
                        -44
                      ],
                      "1": [
                        -40,
                        -7,
                        50,
                        -91,
                        79,
                        87,
                        18,
                        -62,
                        -120,
                        -100,
                        92,
                        84,
                        97,
                        -94,
                        -35,
                        99,
                        -34,
                        66,
                        66,
                        -28,
                        125,
                        88,
                        76,
                        127,
                        -71,
                        50,
                        -118,
                        49,
                        38,
                        -92,
                        124,
                        50
                      ],
                      "2": [
                        -116,
                        88,
                        14,
                        83,
                        -108,
                        -25,
                        101,
                        -65,
                        -45,
                        -126,
                        96,
                        -29,
                        -20,
                        80,
                        -66,
                        -29,
                        -68,
                        -12,
                        36,
                        56,
                        -49,
                        32,
                        -24,
                        20,
                        31,
                        102,
                        -2,
                        -77,
                        114,
                        113,
                        60,
                        0
                      ],
                      "3": [
                        -114,
                        113,
                        -118,
                        -115,
                        106,
                        -31,
                        123,
                        81,
                        53,
                        66,
                        -98,
                        15,
                        -22,
                        -9,
                        -104,
                        62,
                        43,
                        21,
                        82,
                        -98,
                        95,
                        60,
                        -119,
                        123,
                        -12,
                        7,
                        -96,
                        59,
                        54,
                        29,
                        -58,
                        -113
                      ],
                      "4": [
                        -8,
                        -38,
                        45,
                        -25,
                        20,
                        -4,
                        -115,
                        79,
                        -116,
                        51,
                        8,
                        -65,
                        -2,
                        -117,
                        71,
                        -85,
                        -32,
                        53,
                        31,
                        11,
                        -39,
                        -74,
                        -114,
                        -54,
                        -22,
                        7,
                        13,
                        48,
                        113,
                        94,
                        -28,
                        -36
                      ],
                      "5": [
                        87,
                        91,
                        -35,
                        103,
                        -54,
                        -51,
                        -114,
                        16,
                        120,
                        -119,
                        98,
                        -65,
                        19,
                        41,
                        60,
                        52,
                        63,
                        -40,
                        -99,
                        87,
                        29,
                        13,
                        -11,
                        119,
                        -9,
                        -13,
                        -121,
                        -26,
                        26,
                        114,
                        10,
                        89
                      ],
                      "6": [
                        26,
                        -118,
                        -26,
                        -20,
                        -115,
                        56,
                        37,
                        -17,
                        -103,
                        60,
                        -47,
                        110,
                        95,
                        -46,
                        65,
                        36,
                        90,
                        -92,
                        94,
                        67,
                        33,
                        27,
                        69,
                        -57,
                        54,
                        -66,
                        69,
                        -8,
                        74,
                        71,
                        94,
                        37
                      ],
                      "7": [
                        110,
                        0,
                        31,
                        -56,
                        117,
                        -89,
                        57,
                        100,
                        65,
                        -47,
                        32,
                        -108,
                        20,
                        8,
                        -3,
                        29,
                        -18,
                        -105,
                        81,
                        -38,
                        9,
                        21,
                        -125,
                        21,
                        -101,
                        -19,
                        -36,
                        28,
                        69,
                        -2,
                        62,
                        57
                      ],
                      "8": [
                        62,
                        -113,
                        85,
                        1,
                        -9,
                        98,
                        -55,
                        -98,
                        90,
                        -6,
                        5,
                        39,
                        66,
                        -35,
                        -108,
                        54,
                        -90,
                        76,
                        -40,
                        -49,
                        92,
                        -14,
                        -112,
                        41,
                        54,
                        -16,
                        22,
                        -102,
                        -77,
                        -21,
                        82,
                        -122
                      ],
                      "9": [
                        -71,
                        -5,
                        78,
                        -14,
                        -13,
                        46,
                        -12,
                        -64,
                        22,
                        68,
                        -68,
                        -27,
                        101,
                        114,
                        42,
                        112,
                        -5,
                        -32,
                        -123,
                        -67,
                        10,
                        51,
                        96,
                        105,
                        9,
                        -12,
                        40,
                        96,
                        33,
                        125,
                        15,
                        -18
                      ],
                      "10": [
                        -116,
                        -22,
                        -33,
                        115,
                        -43,
                        30,
                        -43,
                        117,
                        106,
                        -72,
                        107,
                        118,
                        1,
                        72,
                        101,
                        38,
                        -73,
                        117,
                        -79,
                        76,
                        43,
                        63,
                        99,
                        104,
                        -27,
                        70,
                        80,
                        -117,
                        -5,
                        98,
                        -28,
                        -96
                      ]
                    }
                  },
                  "validityInfo": {
                    "signed": "2025-07-16T07:28:10.396597247Z",
                    "validFrom": "2025-07-16T07:28:10.396597357Z",
                    "validUntil": "2026-07-16T07:28:10.396597407Z"
                  },
                  "deviceKeyInfo": {
                    "deviceKey": {
                      "kty": "EC",
                      "crv": "P-256",
                      "x": "wDAbXvruEhxgchNp_M-lCaTU-oVbk4iz90wBah3RoN0",
                      "y": "WHY287BApRNQkUrNQVEDUZUID5W0D8gi01EZpHG7e6I"
                    }
                  }
                }
              }
            },
            "deviceSigned": {
              "nameSpaces": {},
              "deviceAuth": {
                "deviceSignature": [
                  [
                    -95,
                    1,
                    38
                  ],
                  {
                    "33": []
                  },
                  null,
                  [
                    83,
                    114,
                    9,
                    53,
                    -15,
                    126,
                    105,
                    -80,
                    68,
                    -49,
                    12,
                    -60,
                    31,
                    69,
                    53,
                    -52,
                    -104,
                    -89,
                    111,
                    31,
                    -16,
                    111,
                    21,
                    -20,
                    -46,
                    -122,
                    -120,
                    -34,
                    99,
                    -48,
                    39,
                    -8,
                    86,
                    117,
                    -66,
                    22,
                    80,
                    -18,
                    6,
                    55,
                    86,
                    -117,
                    -92,
                    -12,
                    59,
                    49,
                    -54,
                    -115,
                    34,
                    -116,
                    -40,
                    -59,
                    -114,
                    -37,
                    65,
                    57,
                    -113,
                    108,
                    10,
                    -22,
                    -51,
                    32,
                    8,
                    17
                  ]
                ]
              }
            }
          }
        ]
      }
    ]
  },
  "viewMode": "verbose"
}
```
