📝 EUDI Wallet Reference Implementation 💻 Repositories 🔧How to Use❗Disclaimer ℹ️About the project
The EUDI Wallet Reference Implementation is built based on the Architecture Reference Framework and aims at showcasing a robust and interoperable platform for digital identification, authentication and electronic signatures based on common standards across the European Union.
The EUDI Wallet Reference Implementation is based on a modular architecture composed of a set of business agnostic, re-usable components which will be evolved in incremental steps and can be re-used across multiple projects. Specifically, as part of the EUDI Wallet Reference Implementation, the following set of components are being delivered:
- Libraries and other software components needed to the framework
- Demo EUDI Wallet mobile native applications for issuing, proximity and remote flows
- Verifier mobile native applications and web-services for proximity and remote flows
- Issuer applications and web-services
Please refer to our documentation and repositories listed in the following sections for more detailed information on how to get started, contribute, and engage with the EUDI Wallet Reference Implementation.
The scope of the EUDI Wallet Reference Implementation is released in an iterative approach focusing on key functionalities which enable the support for a broad set of Use Cases, indicatively:
- Mobile Driving License
- Accessing online public and private services
- Opening a bank account
- SIM registration
- Payment authorisation
- Authenticating a third-party service to sign documents
- Etc.
The following remarks shall be considered in relation to the provided functionalities.
- Same-device and cross-device flows for online authentication and authorization (OpenID4VP (draft 20) transferring mDoc for remote authentication and authorisation)
- Applicable platforms: Android, iOS
- Using QR/BLE proximity protocols
- NFC tag for device engagement support (static hand-over)
- Applicable platforms: Android, iOS
- An implementation of a credential issuing service, according to OpenId4VCI (draft 13) (provides test PID and mDL issuing service in mDoc and SD-JWT-VC format)
The roadmap of the EUDI Wallet reference implementation provides a transparent view of the features and enhancements that are currently being developed or planned to the future. Its purpose is to promote open communication and collaboration in our community.
You can view further details in EUDI Wallet Reference Implementation Roadmap.
We encourage you to contribute or provide your feedback/suggestion for the EUDI Wallet Reference Implementation. Depending on the type of feedback you wish to provide, you may utilise one of the following channels:
Code contributions
Comments and contributions on the codebase of the EUDI Wallet Reference Implementation are welcomed through the corresponding Github space.Roadmap suggestions
If you have any questions or comments about the features listed on the roadmap or wish to suggest new features, please reach out via the Discussions forum.Other feedback
A designated mailbox [email protected] is available where any queries related to the Wallet Reference Implementation can be addressed.This section provides an overview of the key repositories of the EUDI Reference Implementation. The table below acts as navigation aid to find the information you are looking for.
Repository | Description |
---|---|
Wallet Core (Android) | Implementation of the EUDI Wallet Core library for Android that serves as a coordinator layer between the UI app and the Wallet libraries. Currently, coordinates issuing, proximity and remote presentation libraries. |
Wallet Kit (iOS) | Implementation of the EUDI Wallet Kit library for iOS that serves as a coordinator layer between the UI app and the Wallet libraries. Currently coordinates issuing, proximity and remote presentation libraries. |
Repository | Description |
---|---|
mDoc Security (iOS) | Implementation of mDoc security mechanisms according to ISO/IEC 18013-5. |
mDoc Data Transfer (iOS) | Implementation of the mDoc data-transfer library according to ISO/IEC 18013-5. |
mDoc Data Model (iOS) | Implementation of the mDoc data-model according to ISO/IEC 18013-5. |
Repository | Description |
---|---|
mDoc Data Transfer (Android) | This library provides a set of classes to manage the transfer of documents in an EUDI ISO 18013-5 Android Wallet. |
Repository | Description |
---|---|
Presentation Exchange (iOS) | Implementation of DIF Presentation Exchange v2 specification in Swift. |
SIOPv2 & OpenID4VP protocols (iOS) | Implementation of SIOPv2 and OpenID4VP (draft 20) protocols (wallet's role) in Swift. |
SD-JWT (iOS) | SD-JWT library for creating and verifying SD-JWT in JVM Swift. |
Repository | Description |
---|---|
Presentation Exchange (Android) | Implementation of DIF Presentation Exchange v2 specification in Kotlin. |
SIOPv2 & OpenID4VP protocols (Android) | Implementation of SIOPv2 and OpenID4VP (draft 20) protocols (wallet's role) in Kotlin. |
SD-JWT (Android) | SD-JWT library for creating and verifying SD-JWT in JVM Kotlin. |
Repository | Description |
---|---|
OpenId4VCI (iOS) | Implementation of credential management supporting the OpenId4VCI (draft 13) protocol. |
Repository | Description |
---|---|
OpenId4VCI (Android) | Implementation of credential management supporting the OpenId4VCI (draft 13) protocol. |
Repository | Description |
---|---|
mDoc Document Storage (iOS) | Storage for keys and wallet documents |
Repository | Description |
---|---|
mDoc Document Storage (Android) | This library provides a set of classes to manage documents and their cryptographic keys in an EUDI Android Wallet. |
Repository | Description |
---|---|
UI / Demo App (Android) | Implementation of wallet UI app for Android. Currently, it also includes Demo App, demonstrating the following capabilities: Proximity presentation, Same Device Online Authentication and issuing of PID and mDL. |
UI / Demo App (iOS) | Implementation of wallet UI app for iOS. Currently, it also includes Demo App, demonstrating the following capabilities: Proximity presentation, and Same Device Online Presentation and issuing of PID and mDL. |
Repository | Description |
---|---|
Web Verifier | Demo Web Verifier UI application (Frontend) that acts as a Verifier/RP trusted end-point. Available at https://verifier.eudiw.dev |
Restful API (web-services) | Demo Web Verifier application (Backend Restful service) that acts as a Verifier/RP trusted end-point. |
Repository | Description |
---|---|
OpenId4VCI issuer (Python) | An implementation of a credential issuing service, according to OpenId4VCI (draft 13), in Python. Available at https://issuer.eudiw.dev/ |
OpenId4VCI issuer (Kotlin) | An implementation of a credential issuing service, according to OpenId4VCI (draft 13), in JVM Kotlin. Available at https://issuer-backend.eudiw.dev/ |
Repository | Description |
---|---|
Trust Provider Signer | Trust Provider Signer is a remote signing service provider and client in Java |
A list of Frequently Asked Questions about the EUDI Wallet Reference Implementation are consolidated.
Instructions for installing and using the applicable applications/libraries can be found in the corresponding 'ReadMe' files, i.e.:
- Build your Demo App (Android)
- Build your Demo App (iOS)
- Verifier for Remote Presentation
- Note: external link to web verifier app
- App Verifier for Proximity (Android)
- Note: external link to APK download
The released software is a initial development release version:
- The initial development release is an early endeavor reflecting the efforts of a short timeboxed period, and by no means can be considered as the final product.
- The initial development release may be changed substantially over time, might introduce new features but also may change or remove existing ones, potentially breaking compatibility with your existing code.
- The initial development release is limited in functional scope.
- The initial development release may contain errors or design flaws and other problems that could cause system or other failures and data loss.
- The initial development release has reduced security, privacy, availability, and reliability standards relative to future releases. This could make the software slower, less reliable, or more vulnerable to attacks than mature software.
- The initial development release is not yet comprehensively documented.
- Users of the software must perform sufficient engineering and additional testing in order to properly evaluate their application and determine whether any of the open-sourced components is suitable for use in that application.
- We strongly recommend not putting this version of the software into production use.
- Only the latest version of the software will be supported