This use case describes the steps, which are required to register a DID on the EBSI blockchain.
Key generation (type ECDSA Secp256k1, which is required for signing ETH transactions)
Generation of the DID document
EBSI/ESSIF Onboarding flow.
As prerequisite, the bearer token (validity of 15 min) from https://app-pilot.ebsi.eu/users-onboarding/v2 must be placed in file
data/ebsi/bearer-token.txt
After successfully completing the onboarding process, the Verifiable Authorization (validity of 6 months) from the Ebsi Onboarding Service is placed in data/ebsi/verifiable-authorization.json
EBSI/ESSIF Auth API flow
After successfully completing the Auth API flow, the decrypted EBSI Access Token (validity of 15min) can be accessed in file: /home/pp/dev/walt/data/ebsi/ebsi_access_token.json
EBSI/ESSIF DID registration
DID Resolution (only to check if the DID was correctly anchored with the EBSI blockchain)
The resulting DID document from the EBSI blockchain:
First pull the latest container
Starting the container as RESTful service
Key generation (type ECDSA Secp256k1, which is required for signing ETH transactions)
Generation of the DID document
EBSI/ESSIF Onboarding flow
EBSI/ESSIF Auth flow
EBSI/ESSIF DID registration
DID Resolution (only to check if the DID was correctly anchored with the EBSI blockchain)
The did:ebsi example shows how to register an EBSI DID in Java.
This is a holistic SSI use case, which demonstrates the setup of two identities for an Issuer and a Holder on the EBSI blockchain. It also shows the steps to issue two diploma credentials to the Holder (e.g student), which then creates a Verifiable Presentation including both credentials in order to be verified. The Verifier then resolves the DIDs from the EBSI ledger and uses the corresponding public keys to verify the signatures from the issued credentials.
Creating a work-dir for all three parties of the trust triangle (Issuer, Holder & Verifier)
Setting up the Issuer (generating a key, EBSI DID and registering it on the EBSI ledger)
Setting up the Holder (generating a key, EBSI DID and registering it on the EBSI ledger)
Setting up the Verifier (only run ssikit in order to initialize the work-dir)
Issuing two credentials, one Bachelor & one Master degree (values are defined by running the interactive shell). Both credentials are based on the VerifiableDiploma Template
Creating the Verifiable Presentation containing both - the Master and the Bachelor credential
Verifying the Verifiable Presentation by resolving DIDs (public keys) from the EBSI ledger and verifying the signatures from each VC (Bachelor & Master degree credential) and from the VP itself.
Note that the order of the policies does matter. The TrustedIssuerDidPolicy & TrustedSubjectDidPolicy are verifying the presents of the DIDs on the EBSI ledger, and if they are, the keys are imported to the key-store. Once the keys are available, the SignaturePolicy can be applied in order to verify each signature.