hyperledger-archives / aries-framework-go

Hyperledger Aries Framework Go provides packages for building Agent / DIDComm services.
https://wiki.hyperledger.org/display/ARIES/aries-framework-go
Apache License 2.0
239 stars 160 forks source link

Can not generate a presentation by credential Id #3103

Open adn-misa opened 2 years ago

adn-misa commented 2 years ago

What I'm trying to do

I trying to generate a presentation by credential Id.

Expected result

I should get back a signed verifiable presentation.

Actual result

I Get a presentation generation error with data not found.

I searched for the cause of the issue and I assume it came down to the following behaviour:

During the creation of the diddoc, the validation methods are hardcoded to either #key-1 or #key-2 into the did doc, but the key pair managed by the KMS saves it with its actual kid with the storage interface.

https://github.com/hyperledger/aries-framework-go/blob/main/pkg/didcomm/protocol/didexchange/keys.go#L49 https://github.com/hyperledger/aries-framework-go/blob/main/pkg/didcomm/protocol/didexchange/keys.go#L76

Same behaviour can also implemented in outofband v2

https://github.com/hyperledger/aries-framework-go/blob/main/pkg/didcomm/protocol/outofbandv2/service.go#L419 https://github.com/hyperledger/aries-framework-go/blob/main/pkg/didcomm/protocol/outofbandv2/service.go#L446

Because of the hardcoded key values, later on during the presentation generation by id, the framework can not find kkey-1 nor kkey-2 (i assume the additional k is to represent a key internally).

I made a fix (only for didexchange) that did make the presentation generation work by actually using the generated kid by the KMS instead of the hardcoded values: https://github.com/adn-misa/aries-framework-go/commit/5531c69a60a0020b4a15b15283be9effae108e79

Before doing a pull request, i would like some feedback on the issue to clear my assumption and to be sure that it is an issue and not me using the framework wrong.

sudeshrshetty commented 2 years ago

@adn-misa we had similar discussion in this issue, for now we are treating key IDs in DID Document as actual key IDs to make agent work with all kind of DID methods.

Either you have to create key pair inside aries and use the generated key IDs in did document or manually import key into aries KMS using KID mentioned in DIDDocument.