
Library suite and tools for issuing, presenting, and verifying mDL/VC credentials using ISO mdoc, SD‑JWT, W3C Digital Credentials, OpenID4VP, and zero-knowledge proof integration.
This repository contains libraries and applications for working with real-world identity. The initial focus for this work was mdoc/mDL according to ISO/IEC 18013-5:2021 and related standards but the current scope also include other credential formats and presentment protocols.
The project provides libraries written in Kotlin Multiplatform:
multipaz provides the core building blocks it works on Android,
iOS, and in server-side environments. The library includes support
for ISO mdoc and IETF SD-JWT VC credential formats and also implements
proximity presentment using ISO/IEC 18013-5:2021 (for ISO mdoc credentials)
and presentment to applications using the W3C Digital Credentials API
according to ISO/IEC 18013-7:2025 and OpenID4VP 1.0.multipaz-compose provides rich UI elements to be used in Compose
applications.multipaz-doctypes contains known credential document types (for example
ISO/IEC 18013-5:2021 mDL and EU PID) along with human-readable descriptions
of claims / data elements, sample data, and sample requests. This is
packaged separately from the core multipaz library because its size is
non-negligible and not all applications need this or they may bring their
own.multipaz-longfellow bundles the Google Longfellow-ZK library
and integrates with the core multipaz for Zero-Knowledge Proofs
according to latest available ISO/IEC 18013-5 Second Edition draft.multipaz-swift contains Swift and SwiftUI
functionality to easier use Multipaz in Swift applications on iOS.A command-line tool multipazctl is also included which can be used to generate
ISO/IEC 18013-5:2021 IACA certificates among other things. Use
./gradlew --quiet runMultipazCtl --args "help" for documentation on supported
verbs and options. To set up a wrapper, first build the fat jar
$ ./gradlew multipazctl:buildFatJarthen create a wrapper like this
#!/bin/sh
MAIN_CLASS="org.multipaz.multipazctl.MultipazCtl"
CLASSPATH="/Users/davidz/StudioProjects/identity-credential/multipazctl/build/libs/multipazctl-all.jar"
JVM_OPTS="-Xms256m -Xmx512m"
exec java $JVM_OPTS -cp "$CLASSPATH" "$MAIN_CLASS" "$@"in e.g. ~/bin/multipazctl adjusting paths as needed. With this you can now
invoke multipazctl like any other system tool.
Libraries are released on Maven Central usually every 4-8 weeks. Releases up until and including 0.97.0 can be found on GMaven. Semantic Versioning is used. At this time we're in pre-1.0 territory but we expect to hit 1.0 around late 2026 or early 2027.
We are also making Multipaz available as a Swift package
which includes an the multipaz, multipaz-doctypes, multipaz-doctypes,
multipaz-longfellow, and multipaz-swift libraries. This is built using
SKIE. Be careful relying on this as Swift/Kotlin
interop technology might change in the near future.
The Swift package exposes two products:
Multipaz includes the higher-level multipaz-swift wrapper APIs.MultipazCore exposes the core binary target directly for applications that
build their own UI and only need the lower-level APIs. When using this
product, the module import remains import Multipaz.At this point both API interfaces and data stored on disk is subject to change
but we expect to provide stability guarantees post 1.0. We only expect minor changes
for example conversion from ByteArray to ByteString and similar things.
We have resources for people already involved and people wishing to contribute to the Multipaz project
multipaz-compose (AI-assisted translation and validation).Note: If you're just looking to use the Multipaz libraries you do not need to build the entire Multipaz project from source. Instead, just use our released libraries, see the next section for an example of this.
For a fully-fledged mDL wallet, our current answer is to use the samples/testapp
module which works on both Android and iOS. This application is intended for
developers and as such has a lot of options and settings. It's intended to
exercise all code in the libraries. Prebuilt APKs are available from
https://apps.multipaz.org.
For a fully-featured proximity reader app using Multipaz, see MpzIdentityReader. Prebuilt APKs are available from https://apps.multipaz.org.
For an over-the-Internet verifier supporting OpenID4VP (both W3C DC API and URI schemes) and ISO/IEC 18013-7 Annex C see https://verifier.multipaz.org.
To see how to use the Multipaz in a 3rd party project, see https://github.com/openwallet-foundation/multipaz-samples/ which includes a number of samples for different platforms.
developer.multipaz.org is a comprehensive resource for developers. The entire developer website is open source and contributions are welcome!
This is not an official or supported Google product.
This repository contains libraries and applications for working with real-world identity. The initial focus for this work was mdoc/mDL according to ISO/IEC 18013-5:2021 and related standards but the current scope also include other credential formats and presentment protocols.
The project provides libraries written in Kotlin Multiplatform:
multipaz provides the core building blocks it works on Android,
iOS, and in server-side environments. The library includes support
for ISO mdoc and IETF SD-JWT VC credential formats and also implements
proximity presentment using ISO/IEC 18013-5:2021 (for ISO mdoc credentials)
and presentment to applications using the W3C Digital Credentials API
according to ISO/IEC 18013-7:2025 and OpenID4VP 1.0.multipaz-compose provides rich UI elements to be used in Compose
applications.multipaz-doctypes contains known credential document types (for example
ISO/IEC 18013-5:2021 mDL and EU PID) along with human-readable descriptions
of claims / data elements, sample data, and sample requests. This is
packaged separately from the core multipaz library because its size is
non-negligible and not all applications need this or they may bring their
own.multipaz-longfellow bundles the Google Longfellow-ZK library
and integrates with the core multipaz for Zero-Knowledge Proofs
according to latest available ISO/IEC 18013-5 Second Edition draft.multipaz-swift contains Swift and SwiftUI
functionality to easier use Multipaz in Swift applications on iOS.A command-line tool multipazctl is also included which can be used to generate
ISO/IEC 18013-5:2021 IACA certificates among other things. Use
./gradlew --quiet runMultipazCtl --args "help" for documentation on supported
verbs and options. To set up a wrapper, first build the fat jar
$ ./gradlew multipazctl:buildFatJarthen create a wrapper like this
#!/bin/sh
MAIN_CLASS="org.multipaz.multipazctl.MultipazCtl"
CLASSPATH="/Users/davidz/StudioProjects/identity-credential/multipazctl/build/libs/multipazctl-all.jar"
JVM_OPTS="-Xms256m -Xmx512m"
exec java $JVM_OPTS -cp "$CLASSPATH" "$MAIN_CLASS" "$@"in e.g. ~/bin/multipazctl adjusting paths as needed. With this you can now
invoke multipazctl like any other system tool.
Libraries are released on Maven Central usually every 4-8 weeks. Releases up until and including 0.97.0 can be found on GMaven. Semantic Versioning is used. At this time we're in pre-1.0 territory but we expect to hit 1.0 around late 2026 or early 2027.
We are also making Multipaz available as a Swift package
which includes an the multipaz, multipaz-doctypes, multipaz-doctypes,
multipaz-longfellow, and multipaz-swift libraries. This is built using
SKIE. Be careful relying on this as Swift/Kotlin
interop technology might change in the near future.
The Swift package exposes two products:
Multipaz includes the higher-level multipaz-swift wrapper APIs.MultipazCore exposes the core binary target directly for applications that
build their own UI and only need the lower-level APIs. When using this
product, the module import remains import Multipaz.At this point both API interfaces and data stored on disk is subject to change
but we expect to provide stability guarantees post 1.0. We only expect minor changes
for example conversion from ByteArray to ByteString and similar things.
We have resources for people already involved and people wishing to contribute to the Multipaz project
multipaz-compose (AI-assisted translation and validation).Note: If you're just looking to use the Multipaz libraries you do not need to build the entire Multipaz project from source. Instead, just use our released libraries, see the next section for an example of this.
For a fully-fledged mDL wallet, our current answer is to use the samples/testapp
module which works on both Android and iOS. This application is intended for
developers and as such has a lot of options and settings. It's intended to
exercise all code in the libraries. Prebuilt APKs are available from
https://apps.multipaz.org.
For a fully-featured proximity reader app using Multipaz, see MpzIdentityReader. Prebuilt APKs are available from https://apps.multipaz.org.
For an over-the-Internet verifier supporting OpenID4VP (both W3C DC API and URI schemes) and ISO/IEC 18013-7 Annex C see https://verifier.multipaz.org.
To see how to use the Multipaz in a 3rd party project, see https://github.com/openwallet-foundation/multipaz-samples/ which includes a number of samples for different platforms.
developer.multipaz.org is a comprehensive resource for developers. The entire developer website is open source and contributions are welcome!
This is not an official or supported Google product.