hyperledger / aries-cloudagent-python

Hyperledger Aries Cloud Agent Python (ACA-Py) is a foundation for building decentralized identity applications and services running in non-mobile environments.
https://wiki.hyperledger.org/display/aries
Apache License 2.0
402 stars 503 forks source link

Add support in ACA-Py for ledger-agnostic AnonCreds, including support for "did:indy" #1950

Open swcurran opened 1 year ago

swcurran commented 1 year ago

Work is happening to enable the use of ACA-Py on ledgers (or more accurately, VDRs) other than Indy. Such support also enables the use of "did:indy". To do this, enable:

TimoGlastra commented 1 year ago

Adding a document we've been working on for context: https://docs.google.com/document/d/1PtuRc217PhNZLI9xXqvPlMHuBN4g-cm-vJstA3niruA/edit#. Will add a hackmd dedicated to ACA-Py's architecture soon

swcurran commented 1 year ago

Closing previously created issue on this topic #1877. For completeness, adding the description from that task here:

The existing AnonCreds handlers in ACA-Py handle AnonCreds objects that are rooted in Indy. We would like to make the AnonCreds implementation in ACA-Py VDR agnostic -- at least as much as possible. In the ACA-Pug Meeting on 2022.07.26 we talked about the need to abstract this as outlined in the following.

Resolver:

Provide an AnonCreds object resolver that given an ID for an AnonCreds object returns the object regardless of the VDR on which it resides. The resolver should be pluggable and should handle at least:

Existing AnonCred IDs, as implemented in the Indy SDK. did:indy AnonCreds objects, as specified in the did:indy specification Nice to have: Another VDR such did:web or did:cheqd Writer:

Provide an AnonCreds object writer that given an AnonCreds object writes it to a given VDR. Again, this should be pluggable, as although any given instance of ACA-Py will likely only write objects to one VDR, different instances will be writing to different VDRs.

Initially support VDRs should include the same ones as above. Special handling for a given VDR should be supported, but ideally hidden. An example would be the Indy Endorser handling. AFJ is working on a concept called "AnonCredsResourceService" that we should monitor. Nothing in writing on that yet, but we'll update this issue as more information is available.

swcurran commented 1 year ago

Assigning this to @cjhowland as a representative of the Indicio team working on this as part of a BC Gov Code With Us Opportunity.