- From: Orie Steele <orie@transmute.industries>
- Date: Wed, 27 Sep 2023 08:26:23 -0500
- To: Arnab Ghose <arnab@hypermine.in>
- Cc: public-credentials@w3.org, Vishwas Anand <vishwas@hypermine.in>
- Message-ID: <CAN8C-_JZtxzwr82Wb3i0h7BE+auB4jVzx2xRyRdFoQ4c4T+Wtw@mail.gmail.com>
inline: On Wed, Sep 27, 2023 at 3:06 AM Arnab Ghose <arnab@hypermine.in> wrote: > 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: > Technically the status list comes first, it needs to be allocated before a credential can be issued. > `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? > For documents that have statuses that change, you attache each possible status at the time of issuance, and after that point a verifier can check the statuses, and the issuer can update them without communicating to the holder. > 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"? > The working group is discussing enum statuses vs bit statuses... IMO its not been going very well, and the only 2 statuses that are likely to be reliable are suspension and 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"? > No update to the credential with the status is required. The status list credential needs to update its bitstring every time a status for one of the allocated credentials changes. > 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? > Yes, people have already put Status List credentials in blockchains, and the holder can also disclose them to verifiers who have no network access. > 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? > You want to make sure that status labels are not mixed, where a list claims to be for revocation, but a credential claims that list is used for suspension. > -- > Regards, > Arnab Ghose > Blockchain Engineer > Hypermine > Website: https://hypermine.co > -- ORIE STEELE Chief Technology Officer www.transmute.industries <https://transmute.industries>
Received on Wednesday, 27 September 2023 13:26:41 UTC