CredentialInfo
The IOTA DIDComm Specification is in the RFC phase and may undergo changes. Suggestions are welcome at GitHub #464.
- Status:
IN-PROGRESS
- Last Updated: 2021-10-29
CredentialInfo
objects allow parties to negotiate which kinds of verifiable credentials they want to issue or exchange. Verifiable credential kinds can be described by different attributes such as the type
and @context
fields or the structure of the data in the payload. CredentialInfo
provides methods to specify the identifying characteristics of a credential.
Currently, only CredentialType2021
is prescribed but additional CredentialInfo
methods may be introduced in the future, e.g. to account for selective disclosure of particular fields. If full schema negotiation of credentials is required, refer to the external Presentation Exchange 1.0 specification.
CredentialType2021
- Type:
CredentialType2021
Negotiates verifiable credentials using their type
and optional JSON-LD @context
. The issuer
field may also be included depending on the protocol and usage.
{
"credentialInfoType": string, // REQUIRED
"@context": [string], // OPTIONAL
"type": [string], // REQUIRED
"issuer": [string], // OPTIONAL
}
Field | Description | Required |
---|---|---|
credentialInfoType | String indicating the CredentialInfo method, MUST be "CredentialType2021" . | ✔ |
@context | Array of [JSON-LD][contexts]context referenced in the credential. | ✖ |
type | Array of credential types specifying the kind of credential offered.1 | ✔ |
issuer | Array of credential issuer DIDs or URIs.2 | ✖ |
1 The type
MAY be under-specified depending on the protocol but SHOULD always include the most general types. For example, a credential with the types ["VerifiableCredential", "DriversLicence", "EUDriversLicence", "GermanDriversLicence"]
could be specified as ["VerifiableCredential", "DriversLicence"]
.
2 The issuer
field MAY either be the single issuer of an existing credential, one or more issuers that a verifier would trust during a presentation, or one or more trusted issuers that a holder requests to sign their credential during an issuance. The issuer
field is OPTIONAL as the holder may not want to reveal too much information up-front about the exact credentials they possess during a presentation; they may want a non-repudiable signed request from the verifier first.
Examples
- Indicate a "UniversityDegreeCredential" from a specific issuer:
{
"credentialInfoType": "CredentialType2021",
"type": ["VerifiableCredential", "UniversityDegreeCredential"],
"issuer": ["did:example:76e12ec712ebc6f1c221ebfeb1f"]
}
Unresolved Questions
- Should we implement https://w3c-ccg.github.io/vp-request-spec/ as a
CredentialInfo
? - Should we implement https://identity.foundation/presentation-exchange/spec/v1.0.0/ as a
CredentialInfo
?