EUDI Wallet Python toolchain is a suite of Python libraries designed to make it easy the implementation of an EUDI Wallet Relying Party according to the Italian specification.
Please note: the scope of this project is giving tools and helpers to build a EUDI Wallet compliant to the national specs. All the components listed below are tailored to this scope.
The toolchain contains the following components:
Name | Description |
---|---|
tools.jwk | Creation of JSON Web Key (JWK) according to RFC7517. |
tools.jwt | Creation of signed or encrypted JSON Web Token (JWT) according to RFC7519, RFC7515 and RFC7516 |
tools.ui.qrcode | Creation of QRCodes |
oauth2.dpop | Tools for issuing and parsing DPoP artifacts, according to OAuth 2.0 Demonstrating Proof-of-Possession at the Application Layer (DPoP) |
oauth2.par | Tools for issuing and parsing Pushed Authorization Requests, according to OAuth 2.0 Pushed Authorization Requests |
openid4vp.request | Tools for issuing OpenID4VP requests objects |
openid4vp.redirect | Tools for parsing OpenID4VP responses |
openid4vp.federation | OpenID Connect Federation Wallet Relying Party Entities and Trust Mechanisms |
dif.presentation_exchange | DiF Presentation Exchange 2.0 |
satosa.openid4vp.backend | SATOSA Openid4VP Relying Party backend |
Install enviroment and dependencies
apt install python3-dev python3-pip git
python3 -m pip install --upgrade pip
sudo pip install virtualenv
Activate the environment. It's optional and up to you if you want to install in a separate env or system wide
virtualenv -p python3 env
source env/bin/activate
Install using pip
pip install eudi-wallet-python
Install using github
pip install git+https://github.com/italia/eudi-wallet-it-python
The example project is a docker-compose that runs a demo composed by the following component:
- Wordpress with SAML2 support and Bootstrap Italia template preregistered to the IAM Proxy.
- Satosa-Saml2Spid IAM Proxy with a preconfigured OpenID4VP backend
See README-SATOSA.md.
Your contribution is welcome, no question is useless and no answer is obvious, we need you.
Please open an issue if you've found a bug or if you want to ask some features.
Please open your Pull Requests on the dev branch. Please consider the following branches:
- main: where we merge the code before tag a new stable release.
- dev: where we push our code during development.
- other-custom-name: where a new feature/contribution/bugfix will be handled, revisioned and then merged to dev branch.
- Giuseppe De Marco
- Pasquale De Rose
- Alessio Amurri
- Nicola ...
- ...