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

updated requirements #106

Merged
merged 5 commits into from Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
65 changes: 63 additions & 2 deletions v2/api/WIP.toip.trustregistry.api.yaml
Expand Up @@ -5,7 +5,15 @@ servers:
url: https://virtserver.swaggerhub.com/darrellodonnell/ToIP.TrustRegistry/0.1.0
info:
description: |
TODO: update description
TODO: update description
# Trust Registry capabilities
* List Assurance levels - TODO:
* List namespaces supported - TODO:
# Registry of Registries (RoR) capabilities.
RoR capabilities include:
* signaling basic acknowledgement of other registries.
* list the acknowledged trust registries that the RoR recognizes and what
that may mean in the context of a particular governance framework.
version: "0.2.0"
title: Trust Over IP Trust Registry Protocol (RESTful API) v2
contact:
Expand Down Expand Up @@ -88,7 +96,9 @@ paths:
get:
tags:
- new-v2-query
summary: Query this Trust Registry about its recognition of another Trust Registry
summary: |
Query this Trust Registry about its recognition of another Trust Registry.
TODO: determine RoR (registry of registry) impacts here.
parameters:
- in: query
name: trustregistryidentifier
Expand Down Expand Up @@ -141,6 +151,35 @@ paths:
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/lookup/namespaces:

get:
tags:
- new-v2-lookup
summary: Get a list of the namespaces that this trust registry supports.
parameters:
- in: query
name: egfURI
required: true
schema:
$ref: '#/components/schemas/Uri'
description: |
The URI-based identifier of a DID or X.509 Issuer. Allows reserved characters per RFC3986.
Do **NOT** escape the URI.
allowReserved: true # allow reserved characters per RFC3986
responses:
'200':
description: search results matching criteria
content:
application/json:
schema:
$ref: '#/components/schemas/PLACEHOLDER'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/lookup/rights:

get:
Expand Down Expand Up @@ -454,6 +493,27 @@ components:
- "en-CA"
- "fr-CA"
# TODO: apply AssuranceLevel to Authorization.
Namespace:
type: object
description: |
Namespace object - formal name, EGF that governs namespace, VC/DIDAuth/etc.
required:
- namespaceDID
- namespace
properties:
namespaceDID:
type: string
format: URI
example: 'did:example:123'
namespace:
type: string
example:
- "ca.issuer.driverlicense"
- "mining.tsm"
egfURI:
type: string


AssuranceLevel:
type: object
description: |
Expand Down Expand Up @@ -491,6 +551,7 @@ components:
description:
type: string
example: "Established on June 14, 1922, Professional Engineers Ontario (PEO) is the licensing and regulating body for professional engineering in the province."

peerType:
type: string
enum:
Expand Down
6 changes: 4 additions & 2 deletions v2/logical/highlevel.plantuml
Expand Up @@ -23,7 +23,7 @@ class RegistryOfRegistries {
}

class Query {
EntityAuthorization(entity, right)
EntityAuthorization(entity, authorization)
RecognizedRegistry(registryDID)
GetResource(resourceDID)
}
Expand All @@ -37,6 +37,7 @@ class Lookup {
' PresentationRequests()
' Overlays()
AssuranceLevels()
Namespaces()
}

class Metadata {
Expand All @@ -45,6 +46,7 @@ class Metadata {
RawAPIEndpoint: URL
AuthorityClaim: string
lastUpdated: datetime
namespaces: string[]


Languages()
Expand All @@ -55,7 +57,7 @@ EGF "1" -- "1" TrustRegistry

TrustRegistry <|-- Query
TrustRegistry <|-- Lookup
ww

package QueryDataObjects {
object EntityAuthorizationResponse {
entityid
Expand Down
43 changes: 25 additions & 18 deletions v2/requirements.md
Expand Up @@ -40,6 +40,7 @@ To comply with the intellectual property rights protections in[ the charter of t

**Editors**

* Darrell O'Donnell, Continuum Loop

**Contributors**

Expand Down Expand Up @@ -67,8 +68,10 @@ All other terms in **bold** will be defined in one or more ToIP glossaries in th
**Governing authorities** compliant with this specification:

1. MUST have exactly one **primary trust registry**.
2. MAY have zero or more **secondary trust registries**. (The **primary trust registry** plus all **secondary trust registries** are collectively the **authorized trust registries**.)
3. MUST publish an **EGF** that meets the **requirements** in:
2. MAY have one or more **secondary trust registries**.

The **primary trust registry** plus all **secondary trust registries** are collectively referred to as the **authorized trust registries**.
3. MUST publish an **EGF** that meets the **requirements** of:
- i. This specification.
- ii. The [ToIP Governance Architecture Specification](https://wiki.trustoverip.org/pages/viewpage.action?pageId=71241). Note that this includes the requirement that the **EGF** and all **governed parties** (which includes **authorized issuers** and **authorized verifiers**) must be identified with a **DID**.
4. MUST publish, in the **DID document** associated with the **DID** identifying its **EGF**, a **service property **specifying the **service endpoint** for its **primary trust registry** that meets the **requirements** in the _[Trust Registry Service Property](#trust-registry-service-property)_ section.
Expand All @@ -79,16 +82,17 @@ All other terms in **bold** will be defined in one or more ToIP glossaries in th
- iii. Operational **requirements**.
- iv. Legal contracts.
7. MUST specify in its **EGF** (or in any referenced **credential governance framework**) **requirements** for:
- i. An **authorized issuer**, including:
- a. The **EGF URI** that MUST be included as a **claim** in any authorized **credential**.
- b. The **credential type URI** that MUST be used for any authorized **credential**.
- ii. An **authorized verifier**, including:
a. The **presentation type URI** that an **authorized verifier** MUST use for any authorized **presentation request**.
- i. all `authorization` values that are used by the trust registry.
- ii. all Assurance Levels, specified with unique names, that are service by the trust registry.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is an Assurance Level?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assurance level for what? We should reference a suitable standard if we're to state this. The assurance level is a tricky one IMO because 'assurance level' may be different for different lifecycle stages or in different use cases. See NIST 800-63-3, section 5.2 has three AL's: Identity, Authenticator, Federation.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@andorsk updating ToIP glosarry with a definition. The PCTF defines it as "In the Pan-Canadian Trust Framework™ (PCTF), a Level of Assurance (LoA) represents the level of confidence an Entity may place in the processes and other conformance criteria defined in any given component of the PCTF. Levels of Assurance are elemental in creating networks of trust."

@a-fox assurance levels would be defined in the EGF and be ecosystem-specific.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the "Assurance Level" concept can be offered as something which can be adopted as is or an equivalent in the jurisdiction is adopted. Reminding the reader that LoA is a critical part of this is necessary.

- iii. all DID Methods that are supported by the ecosystem, and serviced by the trust registry.
- iv. all related resources that are to be serviced by the trust registry.
- v. any metadata required by implementors (e.g. claim name that is mandatory if pointing a credential back to an EGF.) [this is a weak example]
- vi. on which basis the trust registry claims to be authoritative
- vii. means by which others are able to verify the asserted authority
8. SHOULD specify in the **EGF** the following **requirements** for an **authorized trust registry** and any **registered party** (i.e., issuer, verifier, or peer trust registry):
- i. The set of **DID methods** authorized for use in the ecosystem.
- ii. The **requirements** to become authorized.
- iii. How to request registration.
- iv. The **requirements** for assignment of each **status value** for a **registry entry**.
- i. The **requirements** to become authorized.
- ii. How to request registration.
- iii. The **requirements** for assignment of each **authorization** for a **registry entry**.
- v. Access control mechanisms.
- vi. How to request access.

Expand All @@ -102,6 +106,8 @@ The **DID document** for the **DID** that identifies an **EGF** compliant with t
* The value of the `type` property MUST be `TrustRegistry`.
* The value of the `serviceEndpoint` property MUST be exactly one HTTPS URI.

`TODO:` reconcile above with Profiles concept.


# Trust Registry Protocol

Expand All @@ -111,10 +117,8 @@ The authoritative technical specifications for the API calls in the ToIP Trust R

1. MUST maintain the service implementing this protocol at the HTTPS URI specified in the _[Trust Registry Service Property](#trust-registry-service-property)_ section.
2. MUST return responses to queries for the **status value** of a **registry entry** that satisfies one or more of the following sets of query parameters:
- i. **Authorized issuers**: EGF URI, **credential type URI**, issuer URI
- ii. **Authorized verifiers**: EGF URI, **presentation type URI**, verifier URI
- iii. **Trusted peer registries for authorized issuers:** EGF URI, **credential type URI**, EGF URI
- iv. **Trusted peer registries for authorized verifiers:** EGF URI, **presentation type URI**, EGF URI
- i. **Entity Authorization**: entityDID, authorization
- ii. **Recognized Registry:** entityDID
3. MUST return responses using the data model specified in the _[Data Model](#data-model)_ section.
4. MUST return exactly one of the following **status values** for a **registry entry** satisfying the query parameters:
- i. `Not found`
Expand All @@ -138,16 +142,19 @@ The authoritative technical specifications for the API calls in the ToIP Trust R

# Data Model

`TODO:` build out data model pieces - do work on OAS/Swagger, then move here.

# Appendix A: Consolidated Requirements

For ease of reference, the following table consolidates all normative requirements in this specification. Each requirement is linked to the section in which it appears.

`THE FOLLOWING REQUIREMENTS IN THE TABLE ARE JUST EXAMPLES FOR NOW.`

| Req # | Description | Section |
|---------|--------------|-----------|
| | **General ToIP Architecture Requirements**| |
| A.1 | MUST have exactly one **primary trust registry**. | [LINK] |
|A.2 | MAY have zero or more **secondary trust registries**. (The **primary trust registry** plus all **secondary trust registries** are collectively the **authorized trust registries**.) | [LINK]|
|A.3|MUST publish an **EGF** that meets the **requirements** in:
1. This specification.
2. The [ToIP Governance Architecture Specification](https://wiki.trustoverip.org/pages/viewpage.action?pageId=71241). Note that this includes the requirement that the **EGF** and all **governed parties** (which includes **authorized issuers** and **authorized verifiers**) |[LINK]|
|A.3|MUST publish an **EGF** that meets the **requirements** in:
|A.3.1| This specification. | [LINK]
|A.3.2| The [ToIP Governance Architecture Specification](https://wiki.trustoverip.org/pages/viewpage.action?pageId=71241). Note that this includes the requirement that the **EGF** and all **governed parties** (which includes **authorized issuers** and **authorized verifiers**) |[LINK]|