Skip to content

Commit

Permalink
separated normative/informative, updated references, for whois section (
Browse files Browse the repository at this point in the history
#132)

* separated normative/informative, updated references, for whois section
* updates to wording per review feedback
---------

Signed-off-by: 2byrds <[email protected]>
  • Loading branch information
2byrds authored Feb 7, 2024
1 parent 881ec8b commit 6362d8f
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 90 deletions.
9 changes: 3 additions & 6 deletions spec/informative_references.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
### Informative References

[[def: StatusList2021]]
~ See https://w3c.github.io/vc-status-list-2021/
~ See https://w3c.github.io/vc-status-list-2021/.

[[def: Hyperledger AnonCreds]]
~ See https://www.hyperledger.org/projects/anoncreds. And [Setting up to publish AnonCreds verifiable credential](https://hyperledger.github.io/anoncreds-spec/#anoncreds-setup-data-flow)
~ See https://www.hyperledger.org/projects/anoncreds. And [Setting up to publish AnonCreds verifiable credential](https://hyperledger.github.io/anoncreds-spec/#anoncreds-setup-data-flow).

[[def: W3C VC Rendering Methods specification]]
~ See https://w3c-ccg.github.io/vc-render-method/.

[[def: Overlay Capture Architecture, OCA]]
~ See [Aries RFC](https://github.com/hyperledger/aries-rfcs/blob/main/features/0755-oca-for-aries/README.md)



~ See [Aries RFC](https://github.com/hyperledger/aries-rfcs/blob/main/features/0755-oca-for-aries/README.md).
13 changes: 11 additions & 2 deletions spec/normative_references.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@

### Normative References

[[def: Data Integrity Proof]]
~ The data integrity proof defined in the [[ref: Verifiable Credential Data Model]] spec. See https://www.w3.org/TR/vc-data-model/#data-integrity-proofs.

[[def: JSON Serialization]]
~ See https://datatracker.ietf.org/doc/html/rfc7515#section-3.2

Expand Down Expand Up @@ -33,5 +36,11 @@
[[def: W3C - DID URL path, DID URL path, DID URL path specification]]
~ See https://www.w3.org/TR/did-core/#path.

[[def: W3C - Verifiable Credentials Data Model (VCDM), vcdm specification]]
~ The [W3C - Verifiable Credentials Data Model (VCDM)](https://www.w3.org/TR/vc-data-model/) details the the core Verifiable Credentials Data Model (VCDM) specification.
[[def: W3C - Verifiable Credentials Data Model (VCDM), vcdm specification, verifiable credential data model]]
~ The [W3C - Verifiable Credentials Data Model (VCDM)](https://www.w3.org/TR/vc-data-model/) details the the core Verifiable Credentials Data Model (VCDM) specification.

[[def: W3C - verifiable presentation, verifiable presentation, verifiable presentations]]
~ See (https://www.w3.org/TR/vc-data-model/#presentations-0).

[[def: ACDC IPEX, IPEX]]
~ ACDC Verifiable Credential Issuance and Presentation Excchange as defined in the KERI ACDC spec https://trustoverip.github.io/tswg-acdc-specification/#ipex-validation.
107 changes: 25 additions & 82 deletions spec/whois.md
Original file line number Diff line number Diff line change
@@ -1,90 +1,33 @@
## The `whois` DID URL

The `did:webs` method defines that a controller MAY publish a [W3C verifiable presentation](https://www.w3.org/TR/vc-data-model/#presentations-0) in addition to the DID
Doc (`did.json`). The verifiable presentation is referenced using the [[ref: DID
URL]] `<did>/whois` and can be resolved using the HTTPS DID path `<DID
URL>/whois.vp`. The verifiable presentation MUST ONLY contain Verifiable
Credentials where the `did:webs` DID is the subject of the Credential.

This convention enables those that receive the DID to retrieve and verify the
verifiable presentation (and embedded Verifiable Credentials) the DID controller
has decided to publish about itself. The intention is that anyone interested in
a particular `did:webs` DID can see if there is a `whois` Verifiable
Presentation, and if so, if it contains any useful (to the resolver)
Verifiable Credentials that might help in learning more about who is the
controller of the DID.

### `whois` Use Case

The following is a use case for this capability. Consider an example of the
`did:webs` controller being an educational institution that issues "degree"
verifiable credentials to its graduate students. A graduate from the school
submits as part of their job application to a company a [[ref: Verifiable
Presentation]] derived from the verifiable credential they received from the
school. The company receiving the presentation can verify the cryptography of
the presentation, but can they trust the school that issued the verifiable
credential? If the school issued the verifiable credential using its `did:webs`
DID, the company can resolve the DID. It can also resolve the DID's
`whois` DID URL where it might find VCs from issuers it trusts with the
`did:webs` DID as the subject. For example:

- A verifiable credential issued by the Legal Entity Registrar for the
jurisdiction in which the school is headquartered.
- Since the company knows about the Legal Entity Registrar, they can automate
this lookup to get more information about the school from the verifiable
credential -- its legal name, when it was registered, contact information,
etc.
- A verifiable credential issued by the "Association of Colleges and
Universities" for the jurisdiction of the school.
- Perhaps the company does not know about the Association for that
jurisdiction. The company can repeat the `whois` resolution process for the
issuer of _that_ credential. The company might (for example), resolve and
verify the `did:webs` DID for the Association, and then resolve the `whois`
DID URL to find a verifiable credential issued by the government of the
jurisdiction. The company recognizes and trusts that government's authority,
and so can decide to recognize and trust the Association.
- A verifiable credential issued by US News magazine about the school's
placement on the [US News Rankings of Colleges and Universities].

Such checks can all be done with a handful of HTTPS requests and the processing
of the DIDs and verifiable presentations. The result is an efficient, verifiable,
credential-based, decentralized, multi-domain trust registry.

[US News Rankings of Colleges and Universities]: https://www.usnews.com/education/best-global-universities
This convention enables those that receive the DID to retrieve and verify the verifiable presentation (and embedded Verifiable Credentials) the DID controller has decided to publish about itself. The intention is that anyone interested in a particular `did:webs` DID can see if there is a `whois` Verifiable Presentation, and if so, if it contains any useful (to the resolver) Verifiable Credentials that might help in learning more about who is the controller of the DID.

### `whois` DID URL Conventions
1. The `whois` object, if it exists, MUST be directly beside the `did.json` file, the DID Document for the DID.
1. The [[ref: DID URL path]] to `whois` MUST be `<did:webs DID>/whois`.
1. The HTTPS path to the `whois` MUST be like `<HTTPS URL conversion of did:webs identifier>/whois.vp`.
1. If the `whois` is present, the web server that serves the `did:webs` documents MUST respond to a request for the HTTPS `whois` URL with the verifiable presentation published there by the DID controller.
1. If the controller of the `did:webs` DID has not published a `whois` verifiable presentation, the web server MUST respond with an HTTP `404` response ("Not Found").
1. The resolved `whois` DID URL MUST resolve to a verifiable presentation in which the presentation proof is signed by a key or keys from the current `did:webs` DID Document or a valid previous version of the DID Document.
1. All of the verifiable credentials in the verifiable presentation MUST have the `did:webs` DID as the credential subject.
1. The verifiable presentation may be in one of three formats:
1. A W3C Verifiable Credentials Data Model Standard JSON-LD [[ref: Data Integrity Proof]] Verifiable Presentation.
1. A W3C Verifiable Credentials Data Model Standard [[ref: JSON Web Token Verifiable Presentation]].
1. An [[ref: ACDC]] or [[ref: ACDC IPEX]] disclosure.
1. When the verifiable presentation is requested, the resolved object MUST contain the appropriate MIME type of the verifiable presentation format.

> It is up to the DID Controller to decide to publish a verifiable presentation and if so, which Verifiable Credentials to put into the verifiable presentation.
The `whois` object, if it exists, MUST be directly beside the `did.json`
file, the DID Document for the DID. The [DID URL path] to the folder MUST be
`<did:webs DID>/whois`.

The HTTPS path to the `whois` folder MUST be `<HTTPS URL conversion of did:webs
identifier>/whois.vp`. The Web Server that serves the `did:webs` documents
MUST respond to a request for the HTTPS `whois` URL the `Verifiable
Presentation` published there by the DID Controller. If the controller of the
`did:webs` DID has not published a `whois` verifiable presentation, the Web
Server must respond with an HTTP `404` response ("Not Found").

The resolved `whois` DID URL MUST resolve to a verifiable presentation in which
the presentation proof is signed by a key or keys from the current `did:webs`
DID Document or a valid previous version of the DID Document. All of the
Verifiable Credentials in the verifiable presentation MUST have the `did:webs`
DID as the credential subject.

The verifiable presentation may be in one of three formats:
### `whois` Use Case
This section is non-normative.

- A W3C Verifiable Credentials Data Model Standard JSON-LD [Data Integrity Proof
Verifiable Presentation].
- A W3C Verifiable Credentials Data Model Standard [JSON Web Token
Verifiable Presentation].
- [An ACDC Verifiable Presentation].
The following is a use case for this capability. Consider an example of the `did:webs` controller being an educational institution that issues "degree" verifiable credentials to its graduate students. A graduate from the school submits as part of their job application to a company a [[ref: Verifiable Presentation]] derived from the verifiable credential they received from the school. The company receiving the presentation can verify the cryptography of the presentation, but can they trust the school that issued the verifiable credential? If the school issued the verifiable credential using its `did:webs` DID, the company can resolve the DID. It can also resolve the DID's `whois` DID URL where it might find VCs from issuers it trusts with the `did:webs` DID as the subject. For example:

[Data Integrity Proof Verifiable Presentation]: https://www.w3.org/TR/vc-data-model/#data-integrity-proofs
[JSON Web Token Verifiable Presentation]: https://www.w3.org/TR/vc-data-model/#example-verifiable-presentation-using-jwt-compact-serialization-non-normative
[An ACDC Verifiable Presentation]: https://trustoverip.github.io/tswg-acdc-specification/draft-ssmith-acdc.html
* A verifiable credential issued by the Legal Entity Registrar for the jurisdiction in which the school is headquartered.
* Since the company knows about the Legal Entity Registrar, they can automate this lookup to get more information about the school from the verifiable credential -- its legal name, when it was registered, contact information, etc.
* A verifiable credential issued by the "Association of Colleges and Universities" for the jurisdiction of the school.
* Perhaps the company does not know about the Association for that jurisdiction. The company can repeat the `whois` resolution process for the issuer of _that_ credential. The company might (for example), resolve and verify the `did:webs` DID for the Association, and then resolve the `whois` DID URL to find a verifiable credential issued by the government of the jurisdiction. The company recognizes and trusts that government's authority, and so can decide to recognize and trust the Association.
* A verifiable credential issued by US News magazine about the school's placement on th [US News Rankings of Colleges and Universities].

When the verifiable presentation is requested, the resolved object MUST
contain the appropriate MIME type of the verifiable presentation format.
Such checks can all be done with a handful of HTTPS requests and the processing of the DIDs and verifiable presentations. The result is an efficient, verifiable, credential-based, decentralized, multi-domain trust registry.

It is up to the DID Controller to decide to publish a verifiable presentation
and if so, which Verifiable Credentials to put into the verifiable presentation.
[US News Rankings of Colleges and Universities]: https://www.usnews.com/education/best-global-universities

0 comments on commit 6362d8f

Please sign in to comment.