-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2469392
commit 2f7da2c
Showing
14 changed files
with
169 additions
and
32 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
--- | ||
description: ACA-Py Plugin with cheqd support | ||
--- | ||
|
||
# 🍊 ACA-Py | ||
|
||
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](https://trustoverip.org/wp-content/uploads/2020/05/toip_050520_primer.pdf) and supports multiple credential formats and protocols. As part of the [Open Wallet Foundation](https://openwallet.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](https://plugins.aca-py.org/latest/). | ||
|
||
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](https://docs.cheqd.io/product/advanced/anoncreds). | ||
|
||
## Get started <a href="#get-started" id="get-started"></a> | ||
|
||
<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><mark style="color:blue;"><strong>cheqd Agent Setup</strong></mark></td><td>Setup the ACA-Py agent with cheqd plugin.</td><td></td><td><a href="./#setup-aca-py-agent">#setup-aca-py-agent</a></td></tr><tr><td><mark style="color:blue;"><strong>Create cheqd DIDs</strong></mark></td><td>Use the agent to create cheqd DIDs.</td><td></td><td><a href="decentralized-identifiers-dids/create-a-did.md">create-a-did.md</a></td></tr><tr><td><mark style="color:blue;"><strong>Issue a Credential</strong></mark></td><td>Issue a verifiable credential using ACA-Py agent.</td><td></td><td><a href="verifiable-credentials-and-presentations/issue-a-verifiable-credential.md">issue-a-verifiable-credential.md</a></td></tr></tbody></table> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Decentralized Identifiers (DIDs) | ||
|
||
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. | ||
|
||
{% hint style="info" %} | ||
**Learn about DIDs** If you want to learn about what [DIDs are, please go over to our learning site here.](https://learn.cheqd.io/overview/introduction-to-decentralised-identity/what-is-a-decentralised-identifier-did) | ||
{% endhint %} | ||
|
||
## Get started | ||
|
||
<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><mark style="color:blue;"><strong>Create DID</strong></mark></td><td>Create an Issuer DID using the did:cheqd DID method.</td><td><a href="create-a-did.md">create-a-did.md</a></td></tr></tbody></table> | ||
|
||
## Alternatives | ||
|
||
Below are a list of alternatives for creating cheqd DIDs. | ||
|
||
<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><mark style="color:blue;"><strong>cheqd Studio</strong></mark></td><td>Our API product enables users to <strong>use cheqd's functionality with minimal complexity</strong> and easily integrate APIs into existing apps. </td><td><a href="broken-reference">Broken link</a></td></tr><tr><td><mark style="color:blue;"><strong>DID Registrar</strong></mark></td><td>Simple setup for building cheqd DIDs into existing applications using REST APIs, building into the <a href="https://uniregistrar.io/">Universal Registrar</a>.</td><td><a href="../../../advanced/did-registrar/">did-registrar</a></td></tr><tr><td><mark style="color:blue;"><strong>Credo</strong></mark></td><td>Credo is an SDK which <strong>supports the European Architecture and Reference Framework (ARF)</strong> <strong>standards as well as AnonCreds</strong> with full cheqd support for DIDs. </td><td><a href="../../credo.md">credo.md</a></td></tr><tr><td><mark style="color:blue;"><strong>Veramo</strong></mark></td><td>The Veramo SDK plugin supports JSON, JSON-LD credentials as well as cheqd Credential Payments in an SDK.</td><td><a href="../../veramo-plugin/did-operations/create-did.md">create-did.md</a></td></tr><tr><td><mark style="color:blue;"><strong>Walt.id SSI Kit</strong></mark></td><td>Walt.id SSI Kit is an SDK that supports the <a href="https://digital-strategy.ec.europa.eu/en/library/european-digital-identity-architecture-and-reference-framework-outline"><strong>European Architecture and Reference Framework (ARF)</strong></a> standards for identity, with full cheqd support. </td><td><a href="../../ssi-kit.md">ssi-kit.md</a></td></tr><tr><td><mark style="color:blue;"><strong>cheqd Cosmos CLI</strong></mark></td><td>Cosmos CLI which directly communicates with the cheqd network. This should only be used for testing environments.</td><td><a href="../../../advanced/tooling/cheqd-node-cli/">cheqd-node-cli</a></td></tr></tbody></table> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Create a DID | ||
|
||
The ACA-Py Agent will now have the following new endpoints: | ||
|
||
<figure><img src="../../../.gitbook/assets/Screenshot 2024-12-24 at 14.08.25.png" alt=""><figcaption></figcaption></figure> | ||
|
||
To create a DID using Cheqd, use the `POST /did/cheqd/create` method. For wallet storage, utilise a Postgres database to ensure key persistence, enabling future updates to the DID. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# Setup ACA-Py Agent | ||
|
||
## Pre-requisites | ||
|
||
Before you begin, ensure you have a DID registrar and resolver running.  | ||
|
||
* For testnet, you can use the cheqd [DID registrar](https://did-registrar.cheqd.net) and [resolver](https://resolver.cheqd.net/).  | ||
* For mainnet, you can run your own cheqd DID registrar with the correct mnemonic configuration. For details check [here](https://github.com/cheqd/did-registrar). | ||
|
||
## Configuration | ||
|
||
* 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 Agent and deploy | ||
|
||
Build the ACA-Py Agent docker image with the plugin, and then deploy on your choice of infrastructure.  | ||
|
||
Example Dockerfile: | ||
|
||
```docker | ||
FROM ghcr.io/openwallet-foundation/acapy:py3.12-1.1.0 | ||
USER root | ||
# install plugins as binaries | ||
RUN pip install git+https://github.com/openwallet-foundation/acapy-plugins@main#subdirectory=cheqd | ||
USER $user | ||
COPY ./configs configs | ||
ENTRYPOINT ["aca-py"] | ||
``` | ||
|
||
Sample configs are available [here](https://github.com/openwallet-foundation/acapy-plugins/tree/main/cheqd/docker). | ||
|
||
## Next steps | ||
|
||
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. | ||
|
||
<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><mark style="color:blue;"><strong>Create a DID</strong></mark></td><td>Create an Issuer DID using the did:cheqd DID method.</td><td><a href="decentralized-identifiers-dids/create-a-did.md">create-a-did.md</a></td></tr><tr><td><mark style="color:blue;"><strong>Issue a Verifiable Credential</strong></mark></td><td>Issue a Verifiable Credential using ACA-Py signed by a cheqd DID.</td><td><a href="verifiable-credentials-and-presentations/issue-a-verifiable-credential.md">issue-a-verifiable-credential.md</a></td></tr></tbody></table> | ||
|
17 changes: 17 additions & 0 deletions
17
sdk/aca-py/verifiable-credentials-and-presentations/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Verifiable Credentials and Presentations | ||
|
||
{% hint style="info" %} | ||
:books: **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.](https://learn.cheqd.io/overview/introduction-to-decentralised-identity/what-is-a-verifiable-credential-vc) | ||
{% endhint %} | ||
|
||
## Get started | ||
|
||
<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><mark style="color:blue;"><strong>Setup ACA-Py Agent</strong></mark></td><td>Before you get started, you need to setup your ACA-Py Agent. </td><td><a href="../setup-aca-py-agent.md">setup-aca-py-agent.md</a></td></tr><tr><td><mark style="color:blue;"><strong>Issue Credentials</strong></mark></td><td>Issue Verifiable Credentials signed by cheqd DIDs using ACA-Py .</td><td><a href="issue-a-verifiable-credential.md">issue-a-verifiable-credential.md</a></td></tr><tr><td><mark style="color:blue;"><strong>Present Credentials</strong></mark></td><td>Present Verifiable Credentials using ACA-Py.</td><td><a href="present-a-verifiable-credential.md">present-a-verifiable-credential.md</a></td></tr></tbody></table> | ||
|
||
## Alternatives | ||
|
||
Below are a list of alternatives for using Credentials with cheqd support. Each offers a different set of protocols and underlying technical capabilities. | ||
|
||
<table data-view="cards" data-full-width="false"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><mark style="color:blue;"><strong>cheqd Studio</strong></mark></td><td>Our API product enables users to <strong>use cheqd's functionality with minimal complexity</strong> and easily integrate APIs into existing apps. </td><td><a href="broken-reference">Broken link</a></td></tr><tr><td><mark style="color:blue;"><strong>Credo</strong></mark></td><td>Credo is an SDK which <strong>supports the European Architecture and Reference Framework (ARF)</strong> <strong>standards as well as AnonCreds</strong> with full cheqd support for DIDs. </td><td><a href="../../credo.md">credo.md</a></td></tr><tr><td><mark style="color:blue;"><strong>Veramo</strong></mark></td><td>The Veramo SDK plugin supports JSON, JSON-LD credentials as well as cheqd Credential Payments in an SDK.</td><td><a href="../../veramo-plugin/credentials-and-presentations/issue-credential.md">issue-credential.md</a></td></tr><tr><td><mark style="color:blue;"><strong>Walt.id SSI Kit</strong></mark></td><td>Walt.id SSI Kit is an SDK that supports the <a href="https://digital-strategy.ec.europa.eu/en/library/european-digital-identity-architecture-and-reference-framework-outline"><strong>European Architecture and Reference Framework (ARF)</strong></a> standards for identity, with full cheqd support. </td><td><a href="../../ssi-kit.md">ssi-kit.md</a></td></tr></tbody></table> |
12 changes: 12 additions & 0 deletions
12
...ca-py/verifiable-credentials-and-presentations/issue-a-verifiable-credential.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# Issue a Verifiable Credential | ||
|
||
After creating cheqd DIDs, you can issue verifiable credentials using the ACA-Py agent. Here's how: | ||
|
||
1. **Create a Schema**: Create as Anoncreds Schema with the newly created DID as `issuerId` using the API `POST /anoncreds/schema`. This will create a [DID-Linked Resource](../../veramo-plugin/did-linked-resources/) of type `anonCredsSchema`. | ||
2. **Create a Credential Definition**: Using the Schema ID from the previous step, create an Anoncreds Credential Definition using the API `POST /anoncreds/credential-definition`. Here you can pass the `support_revocation` option. Ensure that a [Tails Server](https://github.com/bcgov/indy-tails-server) is configured for the issuer.  | ||
3. **Create Connection with Holder:** Use any supported method to create the connection with the holder of the credential. Automated [out-of-band protocol](https://identity.foundation/didcomm-messaging/spec/#out-of-band-messages) recommended. | ||
4. **Prepare Credential Offer**: 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. | ||
5. **Receive Credential Request**: Wait for the holder to respond with a credential request, which will include proof of possession of the necessary private keys. | ||
6. **Issue Credential**: Once the credential request is received and validated, issue the credential using the `/issue-credential-2.0/records/<exchange-id>/issue` API endpoint. | ||
|
||
By following these steps, you can effectively issue verifiable credentials using ACA-Py integrated with the cheqd ecosystem. |
11 changes: 11 additions & 0 deletions
11
...-py/verifiable-credentials-and-presentations/present-a-verifiable-credential.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# Present a Verifiable Credential | ||
|
||
To present verifiable credentials, follow these steps: | ||
|
||
1. **Establish a Connection with Verifier**: Initiate a DIDComm connection with the verifier using an out-of-band invitation or pre-existing connection. | ||
2. **Receive Proof Request**: The verifier will request proof by sending a `/present-proof-2.0/send-request` message that outlines the required attributes and predicates. | ||
3. **Create Proof**: Construct a proof presentation with valid credentials using the `/present-proof-2.0/records/<exchange-id>/send-presentation` API. | ||
4. **Send Presentation**: Deliver the proof to the verifier and await their response. | ||
5. **Verifiable Proof**: After the verifier evaluates the presentation, they will respond with either acceptance or rejection. | ||
|
||
This process enables secure and trustworthy sharing of verifiable credentials within the ACA-Py framework and cheqd ecosystem. |
9 changes: 9 additions & 0 deletions
9
...a-py/verifiable-credentials-and-presentations/revoke-a-verifiable-credential.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# Revoke a Verifiable Credential | ||
|
||
To revoke credentials within the ACA-Py framework, follow these steps: | ||
|
||
1. **Identify Credential**: Determine the credential you need to revoke by referencing its unique identifier. | ||
2. **Send Revoke Command**: Utilise the `/anoncreds/credentials/revoke` API endpoint to initiate the revocation process, supplying the necessary credential identifiers like the connection id and the credential exchange id. | ||
3. **Confirm Revocation**: Verify that the credential has been successfully revoked by checking the response from the revocation API and sending a new presentation request (which should fail). | ||
|
||
Revoking credentials is crucial for maintaining control over issued credentials and preventing misuse in the cheqd ecosystem. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.