Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
ACA-Py Plugin with cheqd support
Aries Cloud Agent Python (ACA-Py) serves as a foundational tool for developing Verifiable Credential (VC) ecosystems. It functions at the second and third layers of the Trust Over IP framework and supports multiple credential formats and protocols. As part of the Open Wallet Foundation, ACA-Py's capabilities can be expanded with runtime-loaded plug-ins. Explore a diverse range of plug-ins in the ACA-Py Plugins repository.
ACA-Py now includes support for the Cheqd DID method, facilitating integration with Cheqd's decentralized identity ecosystem. Developers can utilize Cheqd for DID creation, resolution, and operations like issuing and verifying AnonCreds credentials. This offers an easy transition from the decommissioned Sovrin network to a modern, scalable alternative without disrupting existing workflows. Cheqd is fully supported in ACA-Py for issuing Verifiable Credentials, creating Credential Schemas, and Credential Definitions.
AnonCreds using cheqd are facilitated using the cheqd AnonCreds Object Method.
cheqd Agent Setup
Setup the ACA-Py agent with cheqd plugin.
Create cheqd DIDs
Use the agent to create cheqd DIDs.
Issue a Credential
Issue a verifiable credential using ACA-Py agent.
Before you begin, ensure you have a DID registrar and resolver running.
For testnet, you can use the cheqd DID registrar and resolver.
For mainnet, you can run your own cheqd DID registrar with the correct mnemonic configuration. For details check here.
The DID Registrar and the DID Resolver URL can be passed via a plugin-config.yml
.
The plugin works only with askar-anoncreds
wallet type.
Using a Postgres DB as wallet storage type is also recommended.
Build the ACA-Py Agent docker image with the plugin, and then deploy on your choice of infrastructure.
Example Dockerfile:
Sample configs are available here.
Now that your ACA-Py agent is successfully set up to work with cheqd, try following our tutorials for creating a new DID or issuing Verifiable Credentials.
Create a DID
Create an Issuer DID using the did:cheqd DID method.
Issue a Verifiable Credential
Issue a Verifiable Credential using ACA-Py signed by a cheqd DID.
"DID-Linked Resources" are identified with a did:cheqd
Decentralized Identifier with a Universally Unique Identifier (UUID) that acts as a permanently-accessible link to fetch the resources from the cheqd ledger. We refer to this as the "resource ID". Through the "resource ID" or a set of DID URL query parameters, applications are able to persistently access a digital resource on the cheqd network.
To issue Verifiable Credentials, the issuer will have to first create a Schema and then a Credential Definition.
The request body must contain the schema
object, which defines the attributes, name and version of the Schema. This will create a DID-Linked Resource of type anonCredsSchema
.
Deactivate a did:cheqd from ACA-Py Agent
Follow these instructions to deactivate a did:cheqd DID from ACA-Py Agent.
⚠️ Important...
Your wallet must have the key(s) which were generated when the DID was created, without them signing will fail.
To deactivate an active DID, pass the did
id in the request body, with any additional options
that you may have configured.
Understanding DLRs
More details about DID-Linked Resources on Cheqd.
Understanding AnonCreds
More details about AnonCreds Object Method.
Create Schema
Create an AnonCreds Schema.
Create Credential Definition
Create an AnonCreds Credential Definition
A Decentralized Identifier "DID" is a globally unique identifier that does not require a centralized registration authority because it is registered with distributed ledger technology or other form of decentralized network.
Learn about DIDs If you want to learn about what DIDs are, please go over to our learning site here.
Below are a list of alternatives for creating cheqd DIDs.
Learn about Verifiable Credentials and Presentations
If you want to learn more about what Verifiable Credentials and Presentations are, please go over to our learning site here.
Below are a list of alternatives for using Credentials with cheqd support. Each offers a different set of protocols and underlying technical capabilities.
The request body must contain the credential_definition
object with the Issuer DID and the Schema ID created in the previous steps.
To enable revocation, the options
must contain the revocation flag, and the size of the revocation registry. Also, ensure that a Tails Server is configured for the issuer.
Create DID
Create an Issuer DID using the did:cheqd DID method.
Update DID
Update a did:cheqd DID.
Deactivate DID
Deactivate a did:cheqd DID.
cheqd Studio
Our API product enables users to use cheqd's functionality with minimal complexity and easily integrate APIs into existing apps.
DID Registrar
Simple setup for building cheqd DIDs into existing applications using REST APIs, building into the Universal Registrar.
Credo
Credo is an SDK which supports the European Architecture and Reference Framework (ARF) standards as well as AnonCreds with full cheqd support for DIDs.
Veramo
The Veramo SDK plugin supports JSON, JSON-LD credentials as well as cheqd Credential Payments in an SDK.
Walt.id SSI Kit
Walt.id SSI Kit is an SDK that supports the European Architecture and Reference Framework (ARF) standards for identity, with full cheqd support.
cheqd Cosmos CLI
Cosmos CLI which directly communicates with the cheqd network. This should only be used for testing environments.
Setup ACA-Py Agent
Before you get started, you need to setup your ACA-Py Agent.
Issue Credentials
Issue Verifiable Credentials signed by cheqd DIDs using ACA-Py .
Present Credentials
Present Verifiable Credentials using ACA-Py.
cheqd Studio
Our API product enables users to use cheqd's functionality with minimal complexity and easily integrate APIs into existing apps.
Credo
Credo is an SDK which supports the European Architecture and Reference Framework (ARF) standards as well as AnonCreds with full cheqd support for DIDs.
Veramo
The Veramo SDK plugin supports JSON, JSON-LD credentials as well as cheqd Credential Payments in an SDK.
Walt.id SSI Kit
Walt.id SSI Kit is an SDK that supports the European Architecture and Reference Framework (ARF) standards for identity, with full cheqd support.
Using the /issue-credential-2.0
API endpoints, it is possible to issue Verifiable Credentials, signed by a cheqd DID, in a few clicks or lines of code. By following the following steps, you can effectively issue verifiable credentials using ACA-Py integrated with the cheqd ecosystem.
Use any supported method to create a connection with the Holder of the credential. Automated out-of-band protocol is recommended.
The Issuer agent will create a new connection invite for the Holder. This is needed to securely communicate between the Issuer and the Holder agents.
For automated acceptance, pass the following parameters:
A simple request body is below:
The above request will have an invitation
in the response. Holder will have to copy that inivitation and pass in the body of the following API call.
The request body should be the invitation
value from the /create-invitation
call by the Issuer.
Generate a credential offer using the /issue-credential-2.0/send-offer
API. This offer is sent to the holder, informing them about the available credential and its attributes.
The Holder has to retrieve the credential exchange id, and call this API to accept the offer.
Once the credential request is received and validated, issue the credential using the /issue-credential-2.0/records/<exchange-id>/issue
API endpoint.
The Holder has to store the issued credential into their wallet using the following API.
Create a DID using the did:cheqd method from ACA-Py Agent
Follow these instructions to create a new DID from ACA-Py Agent and publish the associated DID Document on cheqd ledger.
⚠️ Before you begin...
Make sure you've correctly for ACA-Py.
For wallet storage, utilise a Postgres database to ensure key persistence, enabling future updates to the DID.
Populate the various options
and features
in the JSON request body and call the API to create the DID.
These are the variables that can be passed in the Body:
After creating a DID or multiple DIDs, users can list all the created DIDs associated with their wallet. Using the /wallet/did
API.
Update a did:cheqd DID from ACA-Py Agent
Follow these instructions to update a did:cheqd DID from ACA-Py Agent.
⚠️ Important...
Your wallet must have the key(s) which were generated when the DID was created, without them signing will fail.
To update an existing DID, you must pass the did
id and the complete didDocument
in the request body. The main field that is updated using this method os the service
object of the DID.
Revoking credentials is crucial for maintaining control over issued credentials and preventing misuse in the cheqd ecosystem. To revoke credentials within the ACA-Py framework, follow these steps:
The Issuer must determine the credential that needs to be revoked by getting the list of issued credentials and the connection id.
Initiate the credential revocation process by supplying the necessary credential identifiers like the connection id and the credential exchange id.
Follow the steps to Present a Verifiable Credential to verify that the credential has been successfully revoked. The response should have verified: false
.
Using the /present-proof-2.0
API endpoints, it is possible to present Verifiable Credentials, signed by a cheqd DID, in a few clicks or lines of code. This process enables secure and trustworthy sharing of verifiable credentials within the ACA-Py framework and cheqd ecosystem.
Use any supported method to create a connection with the Holder. Automated out-of-band protocol is recommended. You can follow the same steps as described in Issue a Verifiable Credential.
After connection is established, the Verifier can send a proof request to the Holder.
The request body will depend on the credential, but here is a sample.
Holder can get the stored credentials from own wallet and format a proof to send to the Verifier.
Verifier receives the presentation via the connection, and can use the following API to verify. The response must have verified: true
.