- Authors: Tomislav Markovski, Andrew Whitehead, Stephen Curran
- Status: RETIRED
- Since: 2019-11-12
- Status Note: Deprecated, but in common use in existing deployments of Aries agents. See Implementations
- Supersedes: HackMD Document
- Start Date: 2019-03-13
- Tags: feature, protocol
The 0.1 version of the ZKP Credential Exchange protocol (based on Hyperledger Indy) covering both issuing credentials and presenting proof. These messages were implemented to enable demonstrating credential exchange amongst interoperating agents for IIW 28 in Mountain View, CA. The use of these message types continues to today (November 2019) and so they are being added as an RFC for historical completeness and to enable reference in Aries Interop Profile.
Enables the exchange of Indy ZKP-based verifiable credentials - issuing verifiable credentials and proving claims from issued verifiable credentials.
This RFC defines a minimal credential exchange protocols. For more details of a complete credential exchange protocol, see the Issue Credentials and Present Proof RFCs.
- The issuer sends the holder a Credential Offer
- The holder responds with a Credential Request to the issuer
- The issuer sends a Credential Issue to the holder, issuing the credential
- The verifier sends the holder/prover a Proof Request
- The holder/prover constructs a proof to satisfy the proof requests and sends the proof to the verifier
The following messages are supported in this credential exchange protocol.
The process begins with a credential-offer
. The thread decorator is implied for all messages except the first.
The element is used in most messages and is the string returned from libindy for the given purpose - an escaped JSON string. The agent must process the string if there is a need to extract a data element from the JSON - for example to get the cred-def-id
from the credential-offer
.
Acknowledgments and Errors should be signalled via adopting the standard ack
and problem-report
message types, respectively.
{
"@type": "https://didcomm.org/credential-issuance/0.1/credential-offer",
"@id": "<uuid-offer>",
"comment": "some comment",
"credential_preview": <json-ld object>,
"offer_json": <libindy json string>
}
{
"@type": "https://didcomm.org/credential-issuance/0.1/credential-request",
"@id": "<uuid-request>",
"comment": "some comment",
"request": <libindy json string>
}
{
"@type": "https://didcomm.org/credential-issuance/0.1/credential-issue",
"@id": "<uuid-credential>",
"issue": <libindy json string>
}
The message family to initiate a presentation. The verifier initiates the process. The thread decorator is implied on every message other than the first message. The ack
and problem-report
messages are to be adopted by this message family.
{
"@type": "https://didcomm.org/credential-presentation/0.1/presentation-request",
"@id": "<uuid-request>",
"comment": "some comment",
"request": <libindy json string>
}
{
"@type": "https://didcomm.org/credential-presentation/0.1/credential-presentation",
"@id": "<uuid-presentation>",
"comment": "some comment",
"presentation": <libindy json string>
}
The RFC is not technically needed, but is useful to have as an Archived RFC of a feature in common usage.
N/A
N/A
N/A
The following lists the implementations (if any) of this RFC. Please do a pull request to add your implementation. If the implementation is open source, include a link to the repo or to the implementation within the repo. Please be consistent in the "Name" field so that a mechanical processing of the RFCs can generate a list of all RFCs supported by an Aries implementation.
Name / Link | Implementation Notes |
---|---|
Aries Framework - .NET | .NET framework for building agents of all types; MISSING test results |
Streetcred.id | Commercial mobile and web app built using Aries Framework - .NET; MISSING test results |
Aries Cloud Agent - Python | Contributed by the government of British Columbia.; MISSING test results |
OSMA - Open Source Mobile Agent | Open SOurce mobile app built on Aries Framework - .NET; MISSING test results |