Aries AIP and RFCs Supported in Aries Cloud Agent Python
This document provides a summary of the adherence of ACA-Py to the Aries Interop
Profiles,
and an overview of the ACA-Py feature set. This document is
manually updated and as such, may not be up to date with the most recent release of
ACA-Py or the repository main
branch. Reminders (and PRs!) to update this page are
welcome! If you have any questions, please contact us on the #aries channel on
Hyperledger Discord or through an issue in this repo.
Last Update: 2021-12-22, Release 0.7.3
The checklist version of this document was created as a joint effort
between Northern Block, Animo Solutions and the Ontario government, on behalf of the Ontario government.
AIP Support and Interoperability
See the Aries Agent Test Harness and the
Aries Interoperability Status for daily interoperability test run results between
ACA-Py and other Aries Frameworks and Agents.
AIP Version |
Supported |
Notes |
AIP 1.0 |
|
Fully supported. |
AIP 2.0 |
|
Largely supported with exceptions highlighted below. |
A summary of the Aries Interop Profiles and Aries RFCs supported in ACA-Py can be found later in this document.
Platform |
Supported |
Notes |
Server |
|
|
Kubernetes |
|
BC Gov has extensive experience running ACA-Py on Red Hat's OpenShift Kubernetes Distribution. |
Docker |
|
BC Gov publishes docker images on Docker Hub |
Desktop |
|
Could be run as a local service on the computer |
iOS |
|
|
Android |
|
|
Browser |
|
|
Agent Types
Role |
Supported |
Notes |
Issuer |
|
|
Holder |
|
|
Verifier |
|
|
Mediator Service |
|
See the aries-mediator-service, a pre-configured, production ready Aries Mediator Service based on a released version of ACA-Py. |
Mediator Client |
|
|
Indy Transaction Author |
|
|
Indy Transaction Endorser |
|
|
Indy Endorser Service |
|
Help Wanted! See the aries-endorser-service, an under-construction, pre-configured, production ready Aries Endorser Service based on a released version of ACA-Py. On completion, we expect this repository to be moved into the Hyperledger GitHub organization. |
Credential Types
Credential Type |
Supported |
Notes |
Indy AnonCreds |
|
Includes full issue VC, present proof, and revoke VC support. |
W3C Standard Verifiable Credentials |
|
Supports only JSON-LD Credentials using the Ed25519Signature2018 , BbsBlsSignature2020 and BbsBlsSignatureProof2020 signature suites.
Supports the DIF Presentation Exchange data format for presentation requests and presentation submissions. |
DID Methods
Method |
Supported |
Notes |
did:sov |
|
|
did:web |
|
Resolution only |
did:key |
|
|
did:peer |
|
AIP 1.0-based did:peer DIDs are used, meaning the DIDs are not prefixed with did:peer and are not following the conventions of AIP 2.0's RFC 0627: Static Peer DIDs |
Universal Resolver |
|
A plug in from SICPA is available that can be added to an ACA-Py installation to support a universal resolver capability, providing support for most DID methods in the W3C DID Method Registry. |
Secure Storage Types
Secure Storage Types |
Supported |
Notes |
Aries Askar |
|
Recommended - Aries Askar provides equivalent/evolved secure storage and cryptography support to the "indy-wallet" part of the Indy SDK. When using Askar (via the --wallet-type askar startup parameter), other Indy SDK functionality is handled by Indy Shared RS (AnonCreds) and Indy VDR (Indy ledger interactions). |
Indy SDK "indy-wallet" |
|
Full support for the features of the "indy-wallet" secure storage capabilities found in the Indy SDK. |
Miscellaneous Features
Feature |
Supported |
Notes |
Multi use invitations |
|
|
Invitations using public did |
|
|
Implicit pickup of messages in role of mediator |
|
|
Revocable Indy Credentials |
|
|
Multi-Tenancy |
|
Documentation |
Connection-less (non OOB protocol / AIP 1.0) |
|
Only for issue credential and present proof |
Connection-less (OOB protocol / AIP 2.0) |
|
Only for present proof |
Signed Attachments |
|
Used for OOB |
Multi Indy ledger support (with automatic detection) |
|
Support added in the 0.7.3 Release. |
Persistence of mediated messages |
|
Work is mostly complete to add external, persistent queue handling, including support for multiple external queue implementations (notably, plugins for Redis and Kafka). Documentation for that is being worked on. Without persistent queue support, messages are stored in an in-memory queue and so are subject to loss in the case of a sudden termination of an ACA-Py process. The in-memory queue is properly handled in the case of a graceful shutdown of an ACA-Py process (e.g. processing of the queue completes and no new messages are accepted). |
Storage Import & Export |
|
Supported by directly interacting with the indy-sdk or Aries Askar (e.g., no Admin API endpoint available for wallet import & export). Aries Askar support includes the ability to import storage exported from the Indy SDK's "indy-wallet" component. However, a full migration approach from a production ACA-Py using the Indy-SDK storage to use Aries Askar storage has not been implemeted and documented. |
Supported RFCs
AIP 1.0
All RFCs listed in AIP 1.0 are fully supported in ACA-Py. The following table
provides notes about the implementation of specific RFCs.
RFC |
Supported |
Notes |
0025-didcomm-transports |
|
ACA-Py currently supports HTTP and WebSockets for both inbound and outbound messaging. Transports are pluggable and an agent instance can use multiple inbound and outbound transports. |
0160-connection-protocol |
|
The agent supports Connection/DID exchange initiated from both plaintext invitations and public DIDs that enable bypassing the invitation message. |
AIP 2.0
All RFCs listed in AIP 2.0 (including the sub-targets)
are fully supported in ACA-Py EXCEPT as noted in the table below.
Other Supported RFCs