:heavy_exclamation_mark: Important! Before you proceed, please read the EUDI Wallet Reference Implementation project description
The EUDI Wallet Reference Implementation is built based on the Architecture Reference Framework and aims to showcase 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 business-agnostic, reusable components that will evolve in incremental steps and can be re-used across multiple projects.
The EUDI Wallet Reference Implementation is the application that allows users to:
The EUDIW project provides through this repository an iOS app. Please refer to the 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 app consumes the SDK called EUDIW Wallet core Wallet kit and a list of available libraries to facilitate remote presentation, proximity, and issuing test/demo functionality following specification of the ARF including:
OpenID4VP - draft 19 (remote presentation), presentation exchange v2.0,
ISO18013-5 (proximity presentation),
OpenID4VCI draft 13 (issuing)
Issuer functionality, to support development and testing, one can access an OID4VCI test/demo service for issuing at:
Relying Party functionality:
To support development and testing, one can access a test/demo service for remote presentation at:
To support proximity an Android Proximity Verifier is available as an app that can request PID and mDL with reader authentication available here
The issuer, verifier service, and verifier app authentication are based on the EUDIW development IACA
The main purpose of the reference implementation is to showcase the ecosystem and act as a technical example of how to integrate and use all of the available components.
If you're planning to use this application in production, we recommend reviewing the following steps:
We welcome contributions to this project. To ensure that the process is smooth for everyone involved, follow the guidelines found in CONTRIBUTING.md.
(NOTE: These videos are from the Android version)
Issuance
Presentation
Proximity
Minimum device requirements
To complete the flows described below you need to build and run the application with xcode. Alternatively, you can directly download the Android app onto your device.
App center download method (Android app)
In addition to building the app from the source, you can also use the Android app which you can download here
Run the app from the source (xcode build)
Clone this repo and make sure you have access to the dependencies below:
You will also need to download the Android Verifier app. More information can be found here
While on the "Dashboard" screen you can tap "Add doc" and issue a new document, e.g. "Driving License".
If you want to re-issue a document, you must delete it first by tapping on it in the "Dashboard" screen and tapping the delete icon in the "Document details" view.
This document describes how you can build the application and deploy the issuing and verification services locally.
You can find instructions on how to configure the application here
The released software is an initial development release version:
logic-resources: All app resources reside here (images, etc.)
logic-core: Wallet core logic.
logic-analytics: Access to analytics providers. Capabilities for test monitoring analytics (i.e. crashes) can be added here (no functionality right now)
logic-business: App business logic.
logic-authentication: PinStorage and System Biometrics Logic.
logic-ui: Common UI components.
feature-common: Code that is common to all features.
feature-login: Login feature.
feature-dashboard: The application's main screen.
feature-startup: The initial screen of the app.
feature-presentation: Online authentication feature.
feature-issuance: Document issuance feature.
feature-proximity: Proximity scenarios feature.
logic-assembly: This module has access to all the above modules and assembles navigation and DI graphs.
graph TD;
logic-business --> logic-authentication
logic-core --> logic-authentication
logic-analytics --> logic-authentication
logic-resources --> logic-authentication
feature-common --> logic-assembly
feature-startup --> logic-assembly
feature-login --> logic-assembly
feature-dashboard --> logic-assembly
feature-presentation --> logic-assembly
feature-issuance --> logic-assembly
feature-proximity --> logic-assembly
logic-business --> logic-core
logic-resources --> logic-core
logic-business --> logic-analytics
feature-common --> feature-issuance
feature-common --> feature-proximity
feature-common --> feature-presentation
feature-common --> feature-dashboard
feature-common --> feature-login
logic-core --> feature-common
logic-business --> feature-common
logic-analytics --> feature-common
logic-ui --> feature-common
logic-api --> feature-common
logic-authentication --> feature-common
feature-common --> feature-startup
logic-core --> logic-api
logic-business --> logic-api
logic-analytics --> logic-api
logic-resources --> logic-business
logic-business --> logic-ui
logic-analytics --> logic-ui
logic-resources --> logic-ui
logic-core --> logic-ui
Copyright (c) 2023 European Commission
Licensed under the EUPL, Version 1.2 or - as soon they will be approved by the European Commission - subsequent versions of the EUPL (the "Licence"); You may not use this work except in compliance with the Licence.
You may obtain a copy of the Licence at: https://joinup.ec.europa.eu/software/page/eupl
Unless required by applicable law or agreed to in writing, software distributed under the Licence is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Licence for the specific language governing permissions and limitations under the Licence.