This reposity will have docs to ease the process of IRMA setup.
IRMA architecture consists of related components:
Check running on docker to prepare your environment.
TL;DR: ./run-docker.sh
a.k.a.: irma_mobile
Mobile client application for IRMA. Users need to install the IRMA app on her mobile device, which users can download from the official Android and iOS app stores. irma_mobile depends on irmago as the business logic is handled entirely within irmago. By implementing the data model and supporting code within irmago, the IRMA project only needs to maintain those in one central place.
irma_mobile is a react native application and more information can be found at repositories README file.
a.k.a. irma_keyhsare_server
The keyshare server has multiple responsibilities. First, it can validate the PIN entered by the user. Only then, the KSS allows the session to continue. Second, it can block a user for a certain amount of time if the user enters the PIN wrong too many times. Third, for users, it is also possible to block their account via the KSS website.
a.k.a. irmago
Irmago is an IRMA implementation in Golang. It contains the data model, business logic to handle requests, generate,
and store credentials. Also, it provides the command-line tool irma
, which amongst others, can start an IRMA server
instance. When running an IRMA server, two endpoints are exposed: /irma
, that is used by the IRMA app during IRMA
sessions. And /sessions
, that is used by requestors, enabling them to initiate a session, monitor them and retrieve
session results.
a.k.a. irma-demo-scheme
The responsibility of the scheme manager is to maintain the information of one ore more IRMA schemes and distribute it to relevant parties. Anyone can start a new scheme, and consequently, become the scheme manager for that scheme.
The PbDF maintains its scheme called "pbdf-schememanager", which the IRMA app uses by default.
a.k.a. irmajs
The irmajs component is essentially a JavaScript client that consumes the RESTful JSON API from the irmago component.
When interacting with either the issuer or verifier, the user browses to a website from that party. Then, the irmajs
component requests the session from the IRMA server. Subsequently, it generates the QR-code or deep-link to communicate
the session to the client and, consequently, the client can directly communicate with the IRMA server via the /irma
endpoint.
The PbDF maintains its irmajs UI.