MATTR Pi mDocs Holder SDKs Overview
Overview
The mDocs Holder SDKs are based on the ISO/IEC 18013-5 standard which establishes an interoperable digital representation of mobile-based credentials such as mobile drivers licenses (mDL). However, these SDKs can extend the same technology and architecture to more than just mDLs, but rather any conforming mobile document (mDoc) - a term defined in ISO/IEC 18013-5.
The mDocs Holder SDKs are available for React Native, iOS, and Android. They help developers add mDocs holding features to their apps, allowing users to securely claim and present mDocs in various interoperable workflows.
To get started with any of our mDocs Holder SDKs, please contact us.
SDK Capabilities
The mDocs Holder SDKs offer tools to assist developers integrating the following capabilities into their applications:
-
Claim an mDoc
- Interact with a credential offer and claim an mDoc as per OpenID4VCI (OpenID for Verifiable Credential Issuance). The SDK supports both the Authorization Code and Pre-authorized Code flows.
- Manage a list of trusted issuers which mDoc offers can be validated against.
- Store claimed mDocs and manage access to that storage.
- Manage access to device keys which are bound to issued mDocs.
- Use referenced Status lists to check mDocs' revocation status.
-
Present an mDoc
- Present a claimed mDoc for verification via a proximity presentation workflow as per ISO 18013-5.
- Present a claimed mDoc for verification remotely as per ISO/IEC 18013-7:2025 and OID4VP.
- iOS 26+: Present credentials via the Digital Credentials API for a seamless, OS-native experience without launching your app.
-
Claim an mDoc
- Interact with a credential offer and claim an mDoc as per OpenID4VCI (OpenID for Verifiable Credential Issuance). The SDK supports both the Authorization Code and Pre-authorized Code flows.
- Manage a list of trusted issuers which mDoc offers can be validated against.
- Store claimed mDocs and manage access to that storage.
- Manage access to device keys which are bound to issued mDocs.
- Use referenced Status lists to check mDocs' revocation status.
-
Present an mDoc
- Present a claimed mDoc for verification via a proximity presentation workflow as per ISO 18013-5.
- Present a claimed mDoc for verification remotely as per ISO/IEC 18013-7:2025 and OID4VP.
-
Claim an mDoc
- Interact with a credential offer and claim an mDoc as per OpenID4VCI (OpenID for Verifiable Credential Issuance). The SDK supports the Authorization Code flow.
- Manage a list of trusted issuers which mDoc offers can be validated against.
- Store claimed mDocs and manage access to that storage.
- Manage access to device keys which are bound to issued mDocs.
- Use referenced Status lists to check mDocs' revocation status.
-
Present an mDoc
- Present a claimed mDoc for verification via a proximity presentation workflow as per ISO 18013-5.
- Present a claimed mDoc for verification remotely as per ISO/IEC 18013-7:2025 and OID4VP.
Supported features
ISO/IEC 18013-5
Below is a summary of ISO/IEC 18013-5:2021 features supported by the mDocs Holder SDKs:
| Feature | Supported options | Default |
|---|---|---|
| Device engagement | QR code | QR code |
| Device retrieval data transport | BLE with either mDoc peripheral server or mDoc central client mode | BLE with mDoc central client |
| Ephemeral session key curve | Any NIST P-* keys | P-256 key using secure enclave |
| Device authentication mode | Digital Signature or ECDH-agreed MAC | Digital Signature with a P-256 key using secure enclave |
| Feature | Supported options | Default |
|---|---|---|
| Device engagement | QR code or NFC | No default; explicit selection required |
| Device retrieval data transport | BLE with either mDoc peripheral server or mDoc central client mode | BLE with mDoc central client |
| Ephemeral session key curve | Any NIST P-* keys | P-256 key using Keystore |
| Device authentication mode | Digital Signature or ECDH-agreed MAC | Digital Signature with a P-256 key using Keystore |
| Feature | Supported options | Default |
|---|---|---|
| Device engagement | QR code | QR code |
| Device retrieval data transport | BLE with either mDoc peripheral server or mDoc central client mode | BLE with mDoc peripheral server |
| Ephemeral session key curve | Any NIST P-* keys | P-256 key using secure enclave (iOS) / Keystore (Android) |
| Device authentication mode | Digital Signature or ECDH-agreed MAC | Digital Signature with a P-256 key using secure enclave (iOS) / Keystore (Android) |
ISO/IEC 18013-7
Below is a summary of ISO/IEC 18013-7:2025 features supported by the mDocs Holder SDKs:
| Feature | Options Supported | Default Option Selected |
|---|---|---|
| Data Retrieval methods | OID4VP | OID4VP |
| Wallet Invocation | Custom URL and QR Code-based | Both |
| MDoc Reader validation | Stored verifier certificates, client Metadata retrieval | Both |
| Authorization Response Encryption | ECDH in Direct Key Agreement mode | ECDH in Direct Key Agreement mode |
| Feature | Options Supported | Default Option Selected |
|---|---|---|
| Data Retrieval methods | OID4VP | OID4VP |
| Wallet Invocation | Custom URL and QR Code-based | Both |
| MDoc Reader validation | Stored verifier certificates, client Metadata retrieval | Both |
| Authorization Response Encryption | ECDH in Direct Key Agreement mode | ECDH in Direct Key Agreement mode |
| Feature | Options Supported | Default Option Selected |
|---|---|---|
| Data Retrieval methods | OID4VP | OID4VP |
| Wallet Invocation | Custom URL and QR Code-based | Both |
| MDoc Reader validation | Stored verifier certificates, client Metadata retrieval | Both |
| Authorization Response Encryption | ECDH in Direct Key Agreement mode | ECDH in Direct Key Agreement mode |
System requirements
The iOS mDocs Holder SDK is developed in the Swift programming language and is meant for integration into iOS applications developed in Swift and/or Objective-C. Specifically it currently only supports applications developed in iOS 15 and above.
Digital Credentials API support (iOS 26+): The SDK supports the Digital Credentials API for presenting credentials via an OS-native overlay without launching your app. This feature requires iOS 26 or later.
This SDK is developed in the Kotlin programming language and is meant for integration into Android applications. It currently supports Android 7 (API level 24) and above.
This SDK is meant for integration into React Native applications using React Native 0.78 and above. Supported operating systems are:
- iOS 15 or higher.
- Android 7 or higher.
Dependencies
This section lists all dependencies for using mDocs Holder SDKs.
Third party dependencies
- CBORCoding (MIT license)
- swift-certificates 1.7.0 (Apache-2.0 License)
- swift-asn1 1.3.1 (Apache-2.0 License)
Apple frameworks
- Security
- CryptoKit
- LocalAuthentication
- AuthenticationServices
- CoreBluetooth
- Combine
- OSLog
- UIKit
- AppKit (on macOS)
- IdentityDocumentServices
- IdentityDocumentServicesUI
Toolchain dependencies
- Swift 5.10.
- iOS support: The SDK functionality is only available for devices from iOS 15 onwards.
- Xcode: The SDK requires Xcode 26.0.0 (17A324) or later. Our CI builds use the latest stable Xcode available in GitHub Actions (setup-xcode action with the
latest-stablelabel). Ensure that your development environment and CI pipelines meet or exceed this minimum to avoid build failures. - macOS 15.
Kotlin, AGP, Gradle, and Android Studio
The Android Holder SDK is built using Kotlin 2.0. This adds some intrinsic dependencies into your build tools.
- Kotlin 2.0 is supported from AGP version 8.5.
- AGP 8.5 is supported from Gradle version 8.7 and Android Studio Koala 2024.1.1.
Runtime
A list of runtime dependencies and licenses is generated at build time and packaged in res/raw/dependencies_licenses.html. The majority are Kotlin and Android, the rest are listed below:
Standard libraries
- androidx.activity:activity-ktx:1.9.0
- androidx.annotation:annotation:1.8.1
- androidx.appcompat:appcompat:1.7.0
- androidx.biometric:biometric-ktx:1.2.0-alpha05
- androidx.browser:browser:1.8.0
- androidx.core:core-ktx:1.15.0
- androidx.credentials:credentials-play-services-auth:1.5.0
- androidx.credentials:credentials:1.5.0
- androidx.fragment:fragment:1.5.7
- org.jetbrains.kotlin:kotlin-reflect:1.9.22
- org.jetbrains.kotlin:kotlin-stdlib:2.0.0
- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3
- org.jetbrains.kotlinx:kotlinx-datetime:0.4.0
- org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0
- org.jetbrains.kotlinx:kotlinx-io-core:0.6.0
- org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3
Third-party libraries
- None.
Versions
Below are the available versions of the mDocs Holder SDKs, including the current active version, supported versions, and those that have reached end-of-life (EOL).
| Major version | Status | Latest release | End of Life date | Documentation |
|---|---|---|---|---|
| v8 | Active | 8.1.2 | - | SDK Docs |
| v7 | End of Life | 7.0.0 | 12-12-2025 | - |
| v6 | End of Life | 6.0.0 | 19-11-2025 | - |
Release candidates (RC) are pre-release versions that may contain new features or changes that are not yet fully tested. They are intended for testing purposes, are not subject to our SLA and should not be used in production environments.
How would you rate this page?
Last updated on