đ ī¸ Integrate an SDKđ VeramoCredential Payments Issue Credential with Encrypted Status List Issue Verifiable Credential with Encrypted Status List 2021 and index
Issue Verifiable Credential with Encrypted Status List 2021 Resource
There is a specific transaction type for issuing Verifiable Credentials that reference encrypted Status List Resources.
Step 1: Create an encrypted Status List on-ledger
Follow the tutorial here to create an encrypted Status List 2021 Resource on cheqd.
Step 2: Choose index number for Credential
Each encrypted Status List is a bitstring , where each bit represents a Credential which is either revoked or unrevoked (or suspended or unsuspended).
When issuing a Credential, you have the choice of whether to manually specify an index for the Credential within the bitstring, or randomly generate an index number anywhere in the bitstring, or within a given range.
Step 2: Construct Credential Payload with Status List
As mentioned above, when constructing the payload for your Credential, including the encrypted Resource, you have a choice of how you would like to specify the index.
The following parameters may be included:
"revocation"
or "suspension"
number, or set of numbers
Below are a set of examples of how these parameters may be included in Credential payload files for different purposes:
Example Request Format: Random Bitstring index
Copy {
"issuanceOptions": {
"credential": {
"credentialSubject": {
"name": "tweeddalex",
"id": "did:key:z6MkvG4dpKVpYwYqnwcjRdw8VZ3km4Sisgxm1igaPCFzskxe"
},
"issuer": {
"id": "did:cheqd:testnet:322761ea-587d-454a-a955-745200301b99"
},
"type": [
"VerifiableCredential"
],
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://veramo.io/contexts/profile/v1"
]
}
},
"statusOptions": {
"statusPurpose": "revocation",
"statusListName": "status-list-2021-encrypted"
}
}
Example Request Format: Specified Bitstring index
Copy {
"issuanceOptions": {
"credential": {
"credentialSubject": {
"name": "tweeddalex",
"id": "did:key:z6MkvG4dpKVpYwYqnwcjRdw8VZ3km4Sisgxm1igaPCFzskxe"
},
"issuer": {
"id": "did:cheqd:testnet:322761ea-587d-454a-a955-745200301b99"
},
"type": [
"VerifiableCredential"
],
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://veramo.io/contexts/profile/v1"
]
}
},
"statusOptions": {
"statusPurpose": "revocation",
"statusListName": "status-list-2021-encrypted",
"statusListIndex": 1456
}
}
Example Request Format: Bitstring index within a given range
Copy {
"issuanceOptions": {
"credential": {
"credentialSubject": {
"name": "tweeddalex",
"id": "did:key:z6MkvG4dpKVpYwYqnwcjRdw8VZ3km4Sisgxm1igaPCFzskxe"
},
"issuer": {
"id": "did:cheqd:testnet:322761ea-587d-454a-a955-745200301b99"
},
"type": [
"VerifiableCredential"
],
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://veramo.io/contexts/profile/v1"
]
}
},
"statusOptions": {
"statusPurpose": "revocation",
"statusListName": "status-list-2021-encrypted",
"statusListRangeStart": 2000,
"statusListRangeEnd": 3000
}
}
Example Request Format: Bitstring including omitted bits
Copy {
"issuanceOptions": {
"credential": {
"credentialSubject": {
"name": "tweeddalex",
"id": "did:key:z6MkvG4dpKVpYwYqnwcjRdw8VZ3km4Sisgxm1igaPCFzskxe"
},
"issuer": {
"id": "did:cheqd:testnet:322761ea-587d-454a-a955-745200301b99"
},
"type": [
"VerifiableCredential"
],
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://veramo.io/contexts/profile/v1"
]
}
},
"statusOptions": {
"statusPurpose": "revocation",
"statusListName": "status-list-2021-encrypted",
"statusListRangeStart": 10,
"statusListRangeEnd": 3000,
"indexNotIn": 13, 1807, 2434
}
}
Step 3: Execute the transaction
Once you have constructed your payload file, and have saved it as a JSON file, use the transaction below to issue the Verifiable Credential.
Copy veramo execute -m cheqdIssueRevocableCredentialWithStatusList2021 --argsFile path/to/payload.json
If the transaction is successful, you will get returned a formatted Verifiable Credential, including a populated "credentialStatus"
section.
Example Response Format
Copy Result : {
"credentialSubject": {
"name": "tweeddalex",
"id": "did:key:z6MkvG4dpKVpYwYqnwcjRdw8VZ3km4Sisgxm1igaPCFzskxe"
},
"issuer": {
"id": "did:cheqd:testnet:cc8e5d9f-05f8-4f09-93c5-b9dba4b45404"
},
"type": [
"VerifiableCredential"
],
"credentialStatus": {
"id": "https://resolver.cheqd.net/1.0/identifiers/did:cheqd:testnet:cc8e5d9f-05f8-4f09-93c5-b9dba4b45404?resourceName=testing-payment-rails&resourceType=StatusList2021Revocation#123979",
"type": "StatusList2021Entry",
"statusPurpose": "revocation",
"statusListIndex": "123979"
},
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://veramo.io/contexts/profile/v1",
"https://w3id.org/vc-status-list-2021/v1"
],
"issuanceDate": "2023-08-18T01:39:53.000Z",
"proof": {
"type": "JwtProof2020",
"jwt": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vdmVyYW1vLmlvL2NvbnRleHRzL3Byb2ZpbGUvdjEiLCJodHRwczovL3czaWQub3JnL3ZjLXN0YXR1cy1saXN0LTIwMjEvdjEiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJuYW1lIjoidHdlZWRkYWxleCJ9LCJjcmVkZW50aWFsU3RhdHVzIjp7ImlkIjoiaHR0cHM6Ly9yZXNvbHZlci5jaGVxZC5uZXQvMS4wL2lkZW50aWZpZXJzL2RpZDpjaGVxZDp0ZXN0bmV0OmNjOGU1ZDlmLTA1ZjgtNGYwOS05M2M1LWI5ZGJhNGI0NTQwND9yZXNvdXJjZU5hbWU9dGVzdGluZy1wYXltZW50LXJhaWxzJnJlc291cmNlVHlwZT1TdGF0dXNMaXN0MjAyMVJldm9jYXRpb24jMTIzOTc5IiwidHlwZSI6IlN0YXR1c0xpc3QyMDIxRW50cnkiLCJzdGF0dXNQdXJwb3NlIjoicmV2b2NhdGlvbiIsInN0YXR1c0xpc3RJbmRleCI6IjEyMzk3OSJ9fSwic3ViIjoiZGlkOmtleTp6Nk1rdkc0ZHBLVnBZd1lxbndjalJkdzhWWjNrbTRTaXNneG0xaWdhUENGenNreGUiLCJuYmYiOjE2OTIzMjI3OTMsImlzcyI6ImRpZDpjaGVxZDp0ZXN0bmV0OmNjOGU1ZDlmLTA1ZjgtNGYwOS05M2M1LWI5ZGJhNGI0NTQwNCJ9.RPt5D021S0MzUscptUc0CZtK9a2sEvGYOkJkx0EO8xqQwTIQRfL7-Z-ZTbOo2OiHs-kDrXQ8SbTMf2yk1QR_Ag"
}
}