This is a full example flow of a student (holder), getting a Verifiable Credential from an university (issuer), and then using that credential to apply for a job with the company (verifier). The verifier will then authorize the credential, if it trusts the source, and grant approval to the application process.
graph TD
%%{init: {'theme': 'neutral' } }%%
direction LR
Holder[Student]
Verifier[Employer]
Issuer[University]
Issuer -->|Sends credential to holder saying the holder graduated from the university| Holder
Verifier -->|Sends a request to prove the holder graduated from the university| Holder
Holder -->|Sends a claim asserting that they did graduate from the university| Verifier
sequenceDiagram
%%{init: {'theme': 'neutral' } }%%
Issuer->>Holder: Here is a VC with saying you graduated from here
Note right of Holder: Holder stores in wallet
Verifier->>Holder: Sends a Presentation Request showing a claim that they graduated from a trusted university.
Holder->>Verifier: Prepares a Presentation Submission with the claims asserted.
Note left of Verifier: Validates that the claim is from a trusted entity that passes the criteria. If approved, asserts confirmation of approval.
- Holder, Issuer, and Verifier all are granted wallets and they are initialized.
- Issuer sends a VC to the holder saying they graduated from the University. It has additionally information such as the degree they graduated with.
- Holder will store the VC in their wallet, "owning" the VC.
- The Verifier will request to validate the Holder graduated from a university using a Presentation Request.
- The Holder will respond with a Verified Submission, asserting the claim that they graduated from the university.
- If the Verifier trusts the university, they will authorize the next step. If not, they will reject the application.
An example of the output is shown below: