- From: Arnab Ghose <arnab@hypermine.in>
- Date: Wed, 27 Sep 2023 11:01:57 +0530
- To: public-credentials@w3.org
- Cc: Vishwas Anand <vishwas@hypermine.in>
- Message-ID: <04ae04b42be22683622b351474339b9a@hypermine.in>
Hi, I have few questions related to `StatusList2021Entry` and `StatusList2021Credential`, and I would like to first present a scenario of credential issuance based on my understanding of the Specification's Public Draft, as this will help me in explaining my queries better. - When an issuer (did:issuer) issues a Verifiable Credential (say `VC-1`) to holder (did:subject), it attaches `credentialStatus` attribute in that Verifiable Credential (VC-1). VC-1 would look something like following: `VC-1`: ```json { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/vc/status-list/2021/v1", "https://json-ld.org/contexts/person.jsonld" ], "id": "VC-1", "type": ["VerifiableCredential"], "issuer": "did:issuer", "issued": "2021-04-05T14:27:42Z", "credentialStatus": { "id": "https://<VDR-API-URL>/<recovation-registry-endpoint>/<id-1>#0", "type": "StatusList2021Entry", "statusPurpose": "suspension", "statusListIndex": "0", "statusListCredential": "https://<VDR-API-URL>/<recovation-registry-endpoint>/<id-1>" }, "credentialSubject": { "id": "did:subject", "type": "Person" }, proof: { ... } } ``` In the above VC-1: - Focusing on the `credentialStatus` attribute: - `statusListIndex`: A postion reserved for tracking VC-1's status - `statusListCredential`: An URL which points towards the location of the `StatusList2021Credential` VC document - `id`: The id of credentialStatus which is formed by concatenating `statusListCredential` and `statusListIndex` - After VC-1 is issued to the holder, a new Verifiable Credential document is also issued of type `StatusList2021Credential`. Let name it VC-SL. Here's what it would look like: `VC-SL`: ```json { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/vc/status-list/2021/v1" ], "id": "https://<VDR-API-URL>/<recovation-registry-endpoint>/<id-1>", "type": ["VerifiableCredential", "StatusList2021Credential"], "issuer": "did:issuer", "issued": "2021-04-05T14:27:40Z", "credentialSubject": { "id": "https://<VDR-API-URL>/<recovation-registry-endpoint>/<id-1>#list", "type": "StatusList2021", "statusPurpose": "suspension", "encodedList": "H4sIAAAAAAAAA-3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAIC3AYbSVKsAQAAA" }, "proof": { ... } } ``` Following are my queries: 1. The specification mentions about two primary statuses: `revocation` and `suspension`, both of them indicates the VC being unusable. Now, if I am trying to issue a credential, it won't make sense to attach credentialStatus having either `revocation` or `suspension` in the VC document. In this situation, if we want to track the status of the document, do we only attach the `credentialStatus` attribute only when we want to render the VC unusable? If no, then should `statusPurpose` attribute carry some string value other than `revocation` or `suspension` which would imply that the credential is active? 2. In the first paragraph of [Conceptual Framework](https://www.w3.org/TR/vc-status-list/#conceptual-framework), it is mentioned that a credential isn't revoked if the value of a bit is 0, else 1. As there are two primary statuses "revocation" and "suspension", does the value 0 implies "suspension"? If yes, then in implementations where there are more than two statuses, does the value 0 represents all those values, except "revocation"? 3. How an update of `credentialStatus` would be like? In above VC Document (VC-1), attribute `statusPurpose` is "suspension". If the VC document's status has to change from "suspension" to "revocation", apart with the change in "statusIndex" bit in `StatusList2021Credential` document (VC-SL) at index "0" from `0` to `1`, would there also be an in-place update of `VC-1` document, where the `statusPurpose` attribute value changes from "suspension" to "revocation"? 4. Since, the `credentialSubject` property of VC-SL doesn't carry any sensetive PII, can it be stored on a VDR, for e.g., in a Public Blockchain as part of its Revocation Registry? 5. The `statusPurpose` property of `credentialStatus` present in the `StatusList2021Entry` (VC-1) tells us about the status of the credential its located in. I am not able to understand the role of `statusPurpose` of VC-SL. The VC-SL document has a list of bits, each indicating a status of one Verifiable Credential, so why would need to know about status of bitstring? -- Regards, Arnab Ghose Blockchain Engineer Hypermine Website: https://hypermine.co
Received on Wednesday, 27 September 2023 08:04:58 UTC