Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doc(pollux): verification policy documentation #384

Merged
merged 2 commits into from
Feb 23, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions pollux/docs/verification-policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Verification Policies [DRAFT]

## Abstract
This document describes the purpose, formats, and technical details of the Verification Policies implementation in the Atala Prism Platform.

## 1. Introduction
Verification Policies define the rules and constraints in the verification process between the Verifier and the Holder and applied to the Verifiable Credentials and Verifiable Presentation.

Different rules and constraints can be defined and used based on the concrete implementation of the Verifiable Credentials.

Verification Policies are the input for the [Presentation Definition](https://identity.foundation/presentation-exchange/spec/v2.0.0/#presentation-definition).

Examples of the rules the Verification Policies can articulate:
- what proofs does the Verifier require
- what issuers the Verifier trust
- what Verifiable Credential format the Verifier requires

## 2. Terminology
#### Verification Policy
The Verification Policy is a template that defines a set of constraints that the Verifier defines as verification rules.

#### Issuer, Holder, Verifier
These are well-known roles in the SSI domain.

#### Party
Party refers to any of the roles: Issuer, Holder, Verifier.

## 3. Verification Policy structure
#### id (UUID)
The unique identifier of the entity

---
#### name (String)
It is a human-readable name for the verification policy.

---
#### description (String)
It is a human-readable description of the verification policy.

---
#### createdAt (DateTime)
It's the date and time stamp of the verification policy creation.

---
#### updatedAt (DateTime)
It's the date and time stamp of the verification policy update.

---
#### constraints (VerificationPolicyConstraint[])
It's the defined set of constraints for the verification policy.

---

## 3. Verification Policy Constraints
### 1. Credential Schema And Trusted Issuers
It defines the credential schema and the list of trusted issuers and is
applied to the JSON and JSON-LD verifiable credentials.
Example:
```
{
"schemaId": "https://atala.io/credential-schemas/did:prism:shortid?id=abcde&version=1.0",
"trustedIssuers": [
"did:prism:trustedissueridentifier"
]
}
```
Given constraint defines the URL of the credential schema of the verifiable credentials a Holder must provide and the list of trusted issuers that issued the verifiable credential.

## 4. Verification Policy Flows
#### The Verifier creates the Verification Policy

#### The Verifier requests the Verifiable Presentation from the Holder that includes the rules from the Verification Policy