❗ Important! Before you proceed, please read the EUDI Wallet Reference Implementation project description
The EUDIW Wallet Tester (for Issuer) allows to test the OID4VCI (draft 13) flow with a Issuer, in a Web GUI.
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
- Enter the wallett folder
cd wallett
- Create .venv to install flask and other libraries
Windows:
python -m venv .venv
Linux:
python3 -m venv .venv
- Activate the environment
windows:
. .venv\Scripts\Activate
Linux:
. .venv/bin/activate
- Install the necessary libraries to run the code
pip install Flask-Cors flask==2.3.3 werkzeug==2.3.7 requests
or
pip install -r requirements.txt
- Run the Project
flask run --debug --cert=certs/cert.pem --key=certs/key.pem
flask --app wallet run --debug --cert=wallet/certs/cert.pem --key=wallet/certs/key.pem
or
gunicorn app:app -b 127.0.0.1:5000 --keyfile=certs/key.pem --certfile=certs/cert.pem
It is worth noting that the project must run on HTTPS. By default, it will already be running on HTTPS, but if the user changes the service_url (discussed in more detail below), they must ensure that it is using HTTPS.
- Url
https:127.0.0.1:5000/
As soon as you access the URL, the V0.5 version presentation page will be displayed. Below, you can see the entire flow and what is possible to do. This test version of the wallet is intended to test considering the OpenID for Verifiable Credential Issuance - draft 13, where it is possible to test using 3 different types of Par options to perform the Push Authorization Request, which are:
- Scope
- Authorization Details
- Both of the other mentioned options, simultaneously (Scope and Authorization Details)
Depending on the combinations selected in the options menu to perform the Push Authorization Request, the Credential or Batch Credential will be used. On the options menu page, it will also display the information of the type of request made (Credential or Batch Credential).
There is a configuration file located at 'wallet/app_config/config.py', where the user can modify some variables to change how the project operates. Here are the most relevant ones:
- service_url
By default, it is set to 'https://127.0.0.1:5000/' As mentioned earlier, the project must run on HTTPS. In case the user changes it to another domain, there is a certificate folder ('wallet/certs') where the certificates are stored. In the 'wallet/run.py' file used to run the project, the path to the certificates is specified. Therefore, if you change the 'service_url', you may need to update this file or the certificates folder.
We welcome contributions to this project. To ensure that the process is smooth for everyone involved, follow the guidelines found in CONTRIBUTING.md.
Copyright (c) 2023 European Commission
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
- Introduction You can use Docker to run the project easily in a containerized environment.
-
Required Files:
- docker-compose.yml → Manages services, images, environment variables, and container orchestration.
-
Setup
A docker-compose.yml file needs to be created with the following content:
services: wallet: image: ghcr.io/niscy-eudiw/eudi-app-web-wallet-tester-py:latest ports: - "5000:5000" environment: - FLASK_RUN_PORT= 5000 - service_url= ...
Key Settings:
ports: - "5000:5000" environment: - FLASK_RUN_PORT= 5000
This maps the internal/external Flask port (default: 5000) to the host machine.
- service_url="" -> Set the URL where the service will be available. For local use http://localhost:5000/
-
Running
In the directory where the created docker-compose.yml file is located, run the following command:
docker-compose up
-
Required Files:
-
Dockerfile → Defines the environment and how the application is built.
-
docker-compose.yml → Manages services, environment variables, and container orchestration.
-
-
Setup
Before running, you must configure the environment variables inside docker-compose.yml.
Key Settings:
ports: - 5000:5000 environment: - FLASK_RUN_PORT= 5000
This maps the internal/external Flask port (default: 5000) to the host machine.
- service_url="" -> Set the URL where the service will be available. For local use http://localhost:5000/
-
Running
To start the service, navigate to the folder containing the files mentioned above and run:
docker-compose up --build