openwallet-foundation / credo-ts

Typescript framework for building decentralized identity and verifiable credential solutions
https://credo.js.org
Apache License 2.0
247 stars 185 forks source link

DIDComm V2 integration #1448

Open Artemkaaas opened 1 year ago

Artemkaaas commented 1 year ago

Plan

The related work was already started in the PR but the branch got significantly outdated due to AFJ architecture changes and there are tons of the conflicts which may be difficult to resolve. Also there was architecture concern regarding the provided implementation.

Now we have time and intention to resume and complete the contribution but before the resuming we need to answer important questions and decide on the approach: Q1: Whether DIDComm V2 must be an independent module or it can be integrated directly into the wallet module? Q2: Do we really need DIDComm implementation plug-ability for the wallet? Q3: Do we DIDComm V2 support for Indy wallet?

About DIDComm V1 implementation

Putting DIDComm V2 library (Sicpa) directly into the wallet

Putting DIDComm V2 (Sicpa) library into independent package and make Wallet pluggable?

Desicion?

Will updated this section with selected path.

Simplest developing path from our perspective: Step 1. Put Sicpa DIDComm service into Askar wallet + Mark Indy wallet as not supporting DIDComm V2 + Keer DID-Resolver as is if it's posible. Step 2. Make Sicpa's implementation using as default + Add ability to inject another implementation.

TimoGlastra commented 1 year ago

Hey @Artemkaaas. This is great, do you have time tomorrow to discuss this at the AFJ working group call? I'll make sure it gets discussed either way, and will provide the feedback from the call here if you can't make it

TimoGlastra commented 1 year ago

custom didcomm v2 implementation with askar in ACA-Py: https://github.com/hyperledger/aries-cloudagent-python/blob/964f2c48e825b7bfceffe5bf8914a18314180b1b/aries_cloudagent/askar/didcomm/v2.py#L4

Questions:

Artemkaaas commented 1 year ago

Agree. Option 3 looks like the best choice.
Askar JS packages expose all needed crypto methods. I will work on implementation using this option.

swcurran commented 1 year ago

FYI @andrewwhitehead on this discussion.

swcurran commented 1 month ago

Any updates on DIDComm V2 in Credo? Is there any movement towards that?

FYI @dbluhm -- notably the PR that was started.

TimoGlastra commented 1 month ago

We're 90% there i think so we should be able to get this wrapped up quite quickly. If someone wants to champion it, i'm happy to assist with merging and reviews (but we won't have time in the near future to complete the work)

dbluhm commented 1 month ago

@TimoGlastra I'd like to point out this library that we have been using at Indicio and plan to use in the ACA-Py DIDComm v2 implementation: https://github.com/Indicio-tech/didcomm-messaging-python/blob/main/didcomm_messaging/crypto/backend/askar.py

This implementation was based on the v2 code in ACA-Py you linked to but we corrected bugs and interop issues that were present in that original code.