-
Notifications
You must be signed in to change notification settings - Fork 19
Description
We should define more clearly what a credential type (identified by the vct claim) actually means.
The current description is a bit handwavy and that may be a sign that we have not yet defined the concept well.
I think that there is a set of metadata usually associated with each SD-JWT VC type, for example
- Display information for the whole credential
- A schema for the JSON structure (may or may not be defined in JSON schema)
- Information about the claims, including
- Display information
- Type information
- Status information (self-attested vs. verified etc.)
- Maybe: What kind of binding is supported/usually used for this credential type
- Maybe: What issuers are allowed to issue this credential type
Such metadata would help Wallets (e.g., for displaying the credential to the user) and Verifiers (e.g., for determining the status of claims). It would also help developers of Verifiers, as they would get structured information about the credential they can expect.
The need for such metadata has been discussed in Issue #171 and similar approaches have shown up in HAIP.
The metadata may or may not be embedded into the credential itself, or provided externally. Assuming we allow for registered vct values (e.g., UniversityCredential), this metadata could go into the registry. It could also be distributed manually.
But it can also be made discoverable, e.g., by providing it at a .well-known URI derived from the URL in vct.
Here is a completely made-up example of what this metadata could look like:
{
"vct": "https://credentials.example.com/example1",
"display": [
{
"en-US": {
"name": "University Credential",
"logo": {
"url": "https://exampleuniversity.com/public/logo.png",
"alt_text": "a square logo of a university"
},
"background_color": "#12107c",
"text_color": "#FFFFFF"
}
}
],
"claims": // mapping from JSON pointer to information about this claim
{
"/name": {
"display": {
"de-DE": {
"label": "Vor- und Nachname",
"description": "Der Name des Studenten"
},
"en-US": {
"label": "Name",
"description": "The name of the student"
}
},
"status": "verified"
},
"/degree": {
"display": {
"de-DE": {
"label": "Abschluss",
"description": "Der Abschluss des Studenten"
},
"en-US": {
"label": "Degree",
"description": "Degree earned by the student"
}
},
"status": "verified"
},
// ...
"/address": {
"display": {
"de-DE": {
"label": "Adresse",
"description": "Adresse zum Zeitpunkt des Abschlusses"
},
"en-US": {
"label": "Address",
"description": "Address at the time of graduation"
}
},
"status": "self-attested"
},
"/address/street_address": {
"display": {
"de-DE": {
"label": "Straße"
},
"en-US": {
"label": "Street Address"
}
},
"status": "self-attested"
}
}
}Important:
- This mechanism will not be format-agnostic, but defined only for SD-JWT VC for now.
- There are overlaps with mechanisms defined in HAIP, for example, and part of this issue here is to figure out what data should go where and to avoid duplications by getting the concept right. I think that the
claimselement defined for the credential issuer metadata in HAIP could be replaced by just avctidentifier (the metadata could be discovered from there, or retrieved from the registry).