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

Revocation section update #56

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

rogulati
Copy link

Update to revocation section

Update to revocation section
@quartzjer
Copy link
Collaborator

@rogulati Is this ready for review? Most of the json-tagged markdown sections contain invalid JSON yet :)

@dwight-holman
Copy link
Contributor

Most of the included language and steps are also given in the referenced standards. The bits that aren't seem to be included in the examples, which are non-normative. If this was intended to address #22 , we need information about the message type and request headers (which are absent from the id-hub standard, but necessary to resolve revocation)

"statusListIndex": "94567",
"statusListCredential": 'did:ion:123?service=IdentityHub&relativeRef=?messages=[{ type: "CollectionsQuery", statement: { id: "Qmdfr32sdf32546..." }}]'
"id": " https://example.com/credentials/status/3#234243",
"type": " RevocationList2021Status",
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 RevocationList2021Status? This doesn't appear in the referenced spec: https://w3c-ccg.github.io/vc-status-list-2021/

Copy link
Contributor

Choose a reason for hiding this comment

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

Underlying Status List 2021 spec was changed in this commit: w3c-ccg/vc-status-list-2021@a37a833

From RevocationList2021Status to StatusList2021Entry

Copy link
Collaborator

Choose a reason for hiding this comment

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

Copy link
Collaborator

Choose a reason for hiding this comment

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

see issue #19

Copy link
Collaborator

Choose a reason for hiding this comment

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

```json
"credentialStatus": {
"id": "Qmdfr32sdf32546...",
"type": "StatusList2021",
Copy link

@sudeshrshetty sudeshrshetty Sep 1, 2022

Choose a reason for hiding this comment

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

Shouldn't it be StatusList2021Entry according to https://w3c-ccg.github.io/vc-status-list-2021/#statuslist2021entry ?

Copy link
Collaborator

Choose a reason for hiding this comment

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

I think we agreed to use this commit ver of StatusList2021 in v0.01 of this profile: https://github.com/w3c-ccg/vc-status-list-2021/tree/343b8b59cddba4525e1ef355356ae760fc75904e

so it should be RevocationList2021Status:
https://github.com/w3c-ccg/vc-status-list-2021/blob/343b8b59cddba4525e1ef355356ae760fc75904e/index.html#L252

when we move to final StatusList2021 in v1 of this profile, it will be StatusList2021Entry

```json
"credentialStatus": {
"id": "Qmdfr32sdf32546...",
"type": "StatusList2021",
Copy link
Collaborator

@Sakurann Sakurann Oct 17, 2022

Choose a reason for hiding this comment

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

Suggested change
"type": "StatusList2021",
"type": "RevocationList2021Status",

StatusList2021 MUST be used for revocation of VCs, as defined in [[ref: Status List 2021]].

#### credentialStatus
The profile utilizes [[ref: Status List 2021]] specification and outlines the status information of VCs as binary values.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
The profile utilizes [[ref: Status List 2021]] specification and outlines the status information of VCs as binary values.
The profile utilizes predraft version 0.0.1 of [[ref: Status List 2021]] specification and outlines the status information of VCs as binary values.

Copy link
Collaborator

Choose a reason for hiding this comment

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

@rogulati Throughout the text and in the reference section, can you please update references to Status List 2021 to

[[def: Status List 2021 (0.01 Predraft)]]
~ Status List 2021 0.01 Predraft. Manu Sporny, Dave Longley, Orie Steele, Mike Prorock, Mahmoud Alkhraishi. 2022.01. Status: Draft Community Group Report v0.0.1.


#### credentialStatus
The profile utilizes [[ref: Status List 2021]] specification and outlines the status information of VCs as binary values.
When an issuer desires to enable status information for a verifiable credential, they MAY add a status property that uses the data model described in this specification. Credential status (credentialStatus) property in the Verifiable Credential provides the information on the current status of the credential. The issued VC may include a credentialStatus property, as defined in section 2.1 of [[ref: Status List 2021]]. An Issuer of a VC must use the HTTPS URL Structure or the DID Relative URLs stored in an ID Hub to host the status list as outlined in the specification. The issuer keeps a bitstring list of all verifiable credentials it has issued. Each verifiable credential is associated with a position in the list. If the binary value of the position in the list is 1 (one), the verifiable credential is revoked, if it is 0 (zero) it is not revoked.
Copy link
Collaborator

@Sakurann Sakurann Oct 17, 2022

Choose a reason for hiding this comment

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

Suggested change
When an issuer desires to enable status information for a verifiable credential, they MAY add a status property that uses the data model described in this specification. Credential status (credentialStatus) property in the Verifiable Credential provides the information on the current status of the credential. The issued VC may include a credentialStatus property, as defined in section 2.1 of [[ref: Status List 2021]]. An Issuer of a VC must use the HTTPS URL Structure or the DID Relative URLs stored in an ID Hub to host the status list as outlined in the specification. The issuer keeps a bitstring list of all verifiable credentials it has issued. Each verifiable credential is associated with a position in the list. If the binary value of the position in the list is 1 (one), the verifiable credential is revoked, if it is 0 (zero) it is not revoked.
To provide status information, the Issuer MUST add a status (credentialStatus) property to a W3C Verifiable Credential as defined in section 2.1 of [[ref: Status List 2021]]. An Issuer of a VC MUST use one of the following mechanisms to host the status list:
- the DID Relative URLs stored in an ID Hub
- the HTTPS URL structure
The issuer keeps a bitstring list of all verifiable credentials it has issued. Each verifiable credential is associated with a position in the list. If the binary value of the position in the list is 1 (one), the verifiable credential is revoked, if it is 0 (zero) it is not revoked.

The profile utilizes [[ref: Status List 2021]] specification and outlines the status information of VCs as binary values.
When an issuer desires to enable status information for a verifiable credential, they MAY add a status property that uses the data model described in this specification. Credential status (credentialStatus) property in the Verifiable Credential provides the information on the current status of the credential. The issued VC may include a credentialStatus property, as defined in section 2.1 of [[ref: Status List 2021]]. An Issuer of a VC must use the HTTPS URL Structure or the DID Relative URLs stored in an ID Hub to host the status list as outlined in the specification. The issuer keeps a bitstring list of all verifiable credentials it has issued. Each verifiable credential is associated with a position in the list. If the binary value of the position in the list is 1 (one), the verifiable credential is revoked, if it is 0 (zero) it is not revoked.

#### DID-Relative URL Structure
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
#### DID-Relative URL Structure
#### Hosting a Status List in a the DID Relative URLs stored in an ID Hub

```

#### HTTPS URL Structure
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
#### HTTPS URL Structure
#### Hosting a Status List using an HTTPS URL structure


#### credentialStatus
The profile utilizes [[ref: Status List 2021]] specification and outlines the status information of VCs as binary values.
When an issuer desires to enable status information for a verifiable credential, they MAY add a status property that uses the data model described in this specification. Credential status (credentialStatus) property in the Verifiable Credential provides the information on the current status of the credential. The issued VC may include a credentialStatus property, as defined in section 2.1 of [[ref: Status List 2021]]. An Issuer of a VC must use the HTTPS URL Structure or the DID Relative URLs stored in an ID Hub to host the status list as outlined in the specification. The issuer keeps a bitstring list of all verifiable credentials it has issued. Each verifiable credential is associated with a position in the list. If the binary value of the position in the list is 1 (one), the verifiable credential is revoked, if it is 0 (zero) it is not revoked.
Copy link
Collaborator

Choose a reason for hiding this comment

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

what is an HTTPS URL Structure? should it be HTTPS URL?

The profile utilizes [[ref: Status List 2021]] specification and outlines the status information of VCs as binary values.
When an issuer desires to enable status information for a verifiable credential, they MAY add a status property that uses the data model described in this specification. Credential status (credentialStatus) property in the Verifiable Credential provides the information on the current status of the credential. The issued VC may include a credentialStatus property, as defined in section 2.1 of [[ref: Status List 2021]]. An Issuer of a VC must use the HTTPS URL Structure or the DID Relative URLs stored in an ID Hub to host the status list as outlined in the specification. The issuer keeps a bitstring list of all verifiable credentials it has issued. Each verifiable credential is associated with a position in the list. If the binary value of the position in the list is 1 (one), the verifiable credential is revoked, if it is 0 (zero) it is not revoked.

#### DID-Relative URL Structure
Copy link
Collaborator

Choose a reason for hiding this comment

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

looking at DID-Core spec, looks like the convention is to say relative DID URL as opposed to DID-Relative URL. suggest to make a replacement throughout the PR text.


#### DID-Relative URL Structure
An Issuer of a VC may have an “IdentityHub” node serviceEndpoint in the Issuer's DID Document. Identity Hub nodes are the single endpoint to look up objects associated with a DID, as defined in [[def: Identity Hub (0.0.1 Predraft)]] (Decentralized Web Node v0.0.1 predraft)).
The following process defines how a DID-Relative URL is composed:
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is there a source for this process? if yes, suggest referencing it, if not, this should be super useful.


#### DID-Relative URL Structure
An Issuer of a VC may have an “IdentityHub” node serviceEndpoint in the Issuer's DID Document. Identity Hub nodes are the single endpoint to look up objects associated with a DID, as defined in [[def: Identity Hub (0.0.1 Predraft)]] (Decentralized Web Node v0.0.1 predraft)).
The following process defines how a DID-Relative URL is composed:
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
The following process defines how a DID-Relative URL is composed:
##### Constructing a Relative DID URL
The following process defines how a DID-Relative URL is composed:

4. JSON stringify the array of Message Descriptor objects from Step 3, then Base64Url encode the stringified output.
5. Append a queries parameter to the DID URL string with the value set to the JSON stringified, Base64Url encoded output of Step 4.

##### DID-relative URLs are composed of the following segments
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
##### DID-relative URLs are composed of the following segments

Copy link
Collaborator

Choose a reason for hiding this comment

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

I think it's pretty natural to show a code to construct a relative DID URL following steps defined above without a new section

Comment on lines +532 to +535
```json
did:example:123 + ?service=IdentityHub + &queries= + toBase64Url( JSON.stringify( [{ DESCRIPTOR_1 }, { DESCRIPTOR_N }] ) )
did:example:123?service=IdentityHub&queries=W3sgTUVTU0FHRV8xIH0sIHsgTUVTU0FHRV9OIH1d..
```
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
```json
did:example:123 + ?service=IdentityHub + &queries= + toBase64Url( JSON.stringify( [{ DESCRIPTOR_1 }, { DESCRIPTOR_N }] ) )
did:example:123?service=IdentityHub&queries=W3sgTUVTU0FHRV8xIH0sIHsgTUVTU0FHRV9OIH1d..
```
```json
did:example:123 + ?service=IdentityHub + &queries= + toBase64Url( JSON.stringify( [{ DESCRIPTOR_1 }, { DESCRIPTOR_N }] ) )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants