Skip to content

Latest commit

 

History

History
180 lines (121 loc) · 14 KB

reference-implementation.md

File metadata and controls

180 lines (121 loc) · 14 KB

📝 EUDI Wallet Reference ImplementationFAQ 💻 Repositories 🔧How to UseDisclaimer ℹ️About the project

EUDI Wallet Reference Implementation

Overview

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:

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.

Functional Scope

The current scope of the EUDI Wallet Reference Implementation includes first iterations of key functionalities: Issuing, Sharing and Presenting Personal Identification Data (PID) and Mobile Driving License (mDL) in Remote and Proximity scenarios. Based on these functionalities, a broad set of Use Cases are supported as a minimum, such as:

  • 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.
Functional Scope Remarks

As of February 2024, the following remarks shall be considered in relation to the provided functionalities.

Remote Presentation

  • Same-device and cross-device flows for online authentication and authorization (OpenID4VP transferring mDoc for remote authentication and authorisation)
  • Applicable platforms: Android, iOS

Proximity Sharing

  • Using QR/BLE proximity protocols
  • NFC tag for device engagement support (static hand-over)
  • Applicable platforms: Android, iOS

Issuing

  • An implementation of a credential issuing service, according to OpenId4VCI - draft12 (provides test PID and mDL issuing service in mDoc and soon in SD-JWT-VC format)

Frequently Asked Questions

Frequently Asked Questions about the EUDI Wallet Reference Implementation.

Repositories

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.

Libraries

Wallet Core (Android) and Wallet Kit (iOS) Coordinator Libraries

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.

Proximity Sharing iOS 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.

Proximity Sharing Android Libraries

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.

Remote Presentation iOS Libraries

Repository Description
Presentation Exchange (iOS) Implementation of DIF Presentation Exchange v2 specification in Swift.
SIOPv2 & OpenID4VP protocols (iOS) Implementation of SIOPv2 and OpenID4VP protocols (wallet's role) in Swift.
SD-JWT (iOS) SD-JWT library for creating and verifying SD-JWT in JVM Swift.

Remote Presentation Android Libraries

Repository Description
Presentation Exchange (Android) Implementation of DIF Presentation Exchange v2 specification in Kotlin.
SIOPv2 & OpenID4VP protocols (Android) Implementation of SIOPv2 and OpenID4VP protocols (wallet's role) in Kotlin.
SD-JWT (Android) SD-JWT library for creating and verifying SD-JWT in JVM Kotlin.

Ιssuing iOS Libraries

Repository Description
OpenId4VCI (iOS) Implementation of credential management supporting the OpenId4VCI (draft 12) protocol.

Ιssuing Android Libraries

Repository Description
OpenId4VCI (Android) Implementation of credential management supporting the OpenId4VCI (draft 12) protocol.

Wallet Data Storage and Cryptographic Management iOS Libraries

Repository Description
mDoc Document Storage (iOS) Storage for keys and wallet documents

Wallet Data Storage and Cryptographic Management Android Libraries

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.

Wallet UI App and demo App for Android and iOS

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.

Verifier Apps and Services

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.

Issuing Apps and Services

Repository Description
OpenId4VCI issuer (Python) An implementation of a credential issuing service, according to OpenId4VCI - draft12, in Python. Available at https://issuer.eudiw.dev/
OpenId4VCI issuer (Kotlin) An implementation of a credential issuing service, according to OpenId4VCI - draft12, in JVM Kotlin. Available at https://issuer-backend.eudiw.dev/

How to use

Instructions for installing and using the applicable applications/libraries can be found in the corresponding 'ReadMe' files, i.e.:

Disclaimer

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

About the project

Links for additional information: