Verifiable Credentials Overview v1.1

W3C Group Note Draft

More details about this document
This version:
https://www.w3.org/TR/2026/DNOTE-vc-overview-1.1-20260916/
Latest published version:
https://www.w3.org/TR/vc-overview-1.1/
Latest editor's draft:
https://w3c.github.io/vc-overview/
History:
https://www.w3.org/standards/history/vc-overview-1.1/
Commit history
Editor:
Ivan Herman (W3C)
Authors:
Mahmoud Alkhraishi (Mavennet)
Joe Andrieu (Legendary Requirements)
Greg Bernstein (Invited Expert)
Denken Chen (Ministry of Digital Affairs, Taiwan)
Gabe Cohen (Invited Expert)
Kayode Ezike (Gobekli)
Ivan Herman (W3C)
Isaac Henderson Johnson Jeyakumar (Fraunhofer IAO)
Michael B. Jones (Invited Expert)
Isaac Koh (Infocomm Media Development Authority of Singapore)
Dave Longley (Digital Bazaar)
Wesley Smith (Digital Bazaar)
Manu Sporny (Digital Bazaar)
Patrick St. Louis (Open Security and Identity)
Hendry Poh (Infocomm Media Development Authority of Singapore)
Michael Prorock (Tradeverifyd)
Ted Thibodeau Jr (OpenLink Software)
Elaine Wooton (Invited Expert)
Dmitri Zagidulin (MIT Digital Credentials Consortium)
Feedback:
GitHub w3c/vc-overview (pull requests, new issue, open issues)
public-vc-wg@w3.org with subject line [vc-overview-1.1] … message topic … (archives)

Abstract

Credentials are a part of our daily lives; driver’s licenses are used to assert that we are capable of operating a motor vehicle, university degrees can be used to assert our level of education, government-issued passports enable us to travel between countries, and trade authorities issue certificates containing various pieces of information concerning products and shipments. The family of W3C Recommendations for verifiable credentials, described in this overview document, provides a mechanism to express these sorts of credentials on the Web in a way that is cryptographically secure, privacy respecting, and machine-verifiable.

Status of This Document

This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C standards and drafts index.

This document was published by the Verifiable Credentials Working Group as a Group Note Draft using the Note track.

Group Note Drafts are not endorsed by W3C nor its Members.

This is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to cite this document as other than a work in progress.

The W3C Patent Policy does not carry any licensing requirements or commitments on this document.

This document is governed by the 18 August 2025 W3C Process Document.

1. Introduction

This document provides a non-normative, high-level overview for W3C’s Verifiable Credential specifications and serves as a roadmap for the documents that define, describe, and secure these credentials. It is not the goal of this document to be very precise, nor does this overview cover all the details. The intention is to provide users, implementers, or anyone interested in the subject, a general understanding of the concepts and how the various specifications, published by the Verifiable Credentials Working Group, fit together.

2. Ecosystem overview

The Verifiable Credential specifications rely on an ecosystem consisting of entities playing different “roles”. The main roles are:

Issuer
An entity that creates a verifiable credential, consisting of a series of statements related to its subject. An example is a university administration that issues credentials for university degrees or certificates for alumni.
Holder
An entity that possesses one or more Credentials, and that can transmit presentations of those verifiable credentials to third parties. An example may be the person who “holds” his/her own educational degrees. Another example may be a digital wallet that contains several Credentials on someone’s behalf.
Verifier
An entity that performs verification on a verifiable credential to check the validity, consistency, etc., of a credential. An example may be an employer’s digital system that checks the validity of a university degree before deciding on the employment of a person.

For a more precise definition of these roles, as well as other roles, see the relevant section in the data model specification.

Diagram showing how credentials flow from issuer to holder, and presentations flow from holder to verifier, where all three parties can use information from a logical verifiable data registry.
Figure 1 The roles and information flows forming the basis for the VC Data Model.

3. High level view of the specifications

Figure 2 provides an overview of the main building blocks for verifiable credentials, including their (normative) dependencies. For more details, see the subsequent sections in this document.

Diagram illustrating the structure of the [=verifiable credential=] (VC) specifications, using boxes labeled with references to the specification. Arrows on the diagram connect some of the boxes to represent (normative) dependencies. The box labeled as the VC Data Model is at the top-center of the diagram. Additional component boxes — such as Render Methods for specify preferred ways tp express a VC to the end user; VC Barcodes to express a VC in the form of a barcode; JSON Schema for structural checking; VC Recognized entities for secure the issuer are part of a specific ecosystem; VCALM for APIs for VC Lifecycle Management; Confidence Methods to specify ways to increase confidence for a verifier in a VC; Bitstring Status List for publishing status information; VC FOrgery Defense to publish an indexed list of compact fingerprints; and Controlled Identifiers for verification methods and relationships — are related to the VC Data Model. The box for securing mechanisms contain separate boxes for embedded proofs, on the left, and enveloping proofs, on the right. The box for embedded proofs contains a box labeled as Data Integrity, which depends both on the VC Data Model and on Controlled Identifiers, as well as boxes for the ECDSA, EdDSA, BBS, and Quantum Resistant Cryptosuites, supporting different elliptic curves and signature schemes; all of these depend on Data Integrity. The enveloping proofs box contains a single box labeled as 'JOSE and COSE ... using JWS, SD-JWT, or CBOR'; as with Data Integrity, this depends both on the VC Data Model and on Controlled Identifiers.
Figure 2 Verifiable Credentials Working Group Recommendations (the figure is also available in SVG).

The Verifiable Credentials Data Model v2.0 [vc-data-model] specification, which defines the core concepts that all other specifications depend on, plays a central role. The model is defined in abstract terms, and applications express their specific credentials using a serialization of the data model. The current specifications use a JSON serialization; the community may develop other serializations in the future.

When verifiable credentials are serialized in JSON, it is important to trust that the structure of a credential may be interpreted in a consistent manner by all participants in the verifiable credential ecosystem. The Verifiable Credentials JSON Schema Specification [vc-json-schema] defines how [json-schema] can be used for that purpose.

The Verifiable Credential Confidence Methods v1.0 [vc-confidence-method] specification defines an extensible mechanism that issuers can use; the goal is to increase the confidence of verifiers in the legitimacy of the presentation of a given credential.

The Verifiable Credential Rendering Methods v1.0 [vc-render-method] specification also defines an extensible mechanism for issuers; the goal is to provide preferred mechanisms for the display of a credential. Rendering may use images, simple cards in a digital wallet, complex visual displays, or HTML, CSS, and JavaScript in a secure execution environment.

Credentials can be secured using two different mechanisms: enveloping proofs or embedded proofs. In both cases, a credential is cryptographically secured by a proof (usually digital signatures). In the enveloping case, the proof wraps around the credential, whereas embedded proofs are included in the serialization alongside the credential itself.

A family of enveloping proofs is defined in the Securing Verifiable Credentials using JOSE and COSE [vc-jose-cose] document, relying on technologies defined by the IETF. Other types of enveloping proofs may be specified by the community.

The general structure for embedded proofs is defined in a separate Verifiable Credential Data Integrity 1.0 [vc-data-integrity] specification. The Working Group also specifies instances of this general structure in the form of “cryptosuites”: Data Integrity EdDSA Cryptosuites v1.0 [vc-di-eddsa], Data Integrity ECDSA Cryptosuites v1.0 [vc-di-ecdsa], Data Integrity BBS Cryptosuites v1.0 [vc-di-bbs], and Quantum-Resistant Cryptosuites v1.0 [vc-di-quantum-resistant]. Other cryptosuites may be specified by the community.

The Controlled Identifiers v1.0 [cid] specification defines some common terms (e.g., verification relationships and methods) that are used not only by other verifiable credential specifications, but also other Recommendations such as Decentralized Identifiers (DIDs) v1.0 [did-core].

The Verifiable Credential Barcodes v1.0 [vc-barcodes] specification defines an efficient way to represent a verifiable credential in the form of an optical barcode.

The Bitstring Status List v1.0 [vc-bitstring-status-list] specification defines a privacy-preserving, space-efficient, and high-performance mechanism for publishing the status of a specific verifiable credential, such as its suspension or revocation, through the use of bitstrings.

The Verifiable Credential Forgery Defense v1.0 [vc-forgery-defense] specification defines a mechanism for issuers of verifiable credentials to publish indexed lists of compact cryptographic witnesses. This is an extra layer of security for credentials that are already issued, but whose signature keys may potentially be compromised, e.g., through future advances in quantum computing.

The verifiable credential ecosystem relies on the ability of verifiers to determine whether a particular issuer is recognized to perform a particular action. The Recognized Entities v1.0 [vc-recognized-entities] specification defines an interoperable mechanism to express and communicate the recognition of entities that perform known actions like issuing or verifying specific types of credential. For example, that an issuer is recognized to assess conformance to a specific standard, that an organization is authorized to issue a specific type of federated identifier, or that a university is recognized as being able to issue undergraduate degrees.

The VCALM v1.0 [vcalm] specification defines HTTP APIs among the active entities corresponding to the main “roles” in the verifiable credential model (i.e., issuer, holder, and verifier, see also 2. Ecosystem overview). The specification provides a reference model for components within these roles, with the corresponding APIs among those components.

Note

In 2025, a number of documents were published as W3C Recommendations, which is the W3C terminology for Web Standards. Although also published at that time, two documents, namely the Verifiable Credentials JSON Schema Specification and the Data Integrity BBS Cryptosuites v1.0 specifications, were not published as Recommendation at the time. Though technically complete, they are still Candidate Recommendations. The reasons are different. The former has not yet been implemented by at least two mutually independent implementations (which is the requirement to be published as a standard) whereas the latter has to wait until the underlying cryptographic technique (i.e., The BBS Signature Scheme) is finalized by the IETF. It is expected that these two documents will be published as Web Standards eventually.

A revision cycle for some of these specifications has started in 2026. Some documents have been re-issued as Working Drafts (marked with a higher minor version number). But, more importantly, a number of new specifications have been added to the family of documents, to be published, eventually, as Recommendations as well.

The official publication list of the Working Group shows the exact status of all the documents.

4. The verifiable credentials data model

4.1 Claims, properties

A core concept is “claims”: statements made about various entities, referred to as “subjects”. Subjects may be a person (e.g., the person holding a university degree), an animal, an abstract concept, another credential, etc. Claims may also be on the enclosing credential itself, such as issuance date, validity periods, etc. (Such claims are also loosely referred to as “credential metadata”.)

Claims are expressed using “properties” referring to “values”. Values may be literals, but may also be other entities referred to, usually, by a [URL]. In that case, that entity may become the subject of another claim; these claims, together, form a graph of claims that represents a credential. (See Figure 6 for an example of such a graph represented graphically. For more complex examples, refer to the Verifiable Credentials Data Model v2.0 specification itself.)

Diagram showing an ellipse on the left labeled as 'Subject', connected by an arrow from left to right labeled as 'Property', to a box on the right labeled as 'Value'.
Figure 3 The basic structure of a claim with (in this case) a literal value.

The Verifiable Credentials Data Model v2.0 document specifies a number of standard properties. These include, for example, credentialSubject, type, issuer, or validFrom. Developers may define their own properties to express specific types of Credentials, like a driving license, a university degree, a marriage certificate, or a Digital Product Passport.

4.2 Core concepts

4.2.1 Credentials

A Credential is a set of one or more claims made by the same entity. Credentials might also include an identifier and metadata to describe properties of the credential, such as a reference to the issuer, the validity date, a representative image, the revocation mechanism, and so on. A verifiable credential is a set of claims and metadata (i.e., a credential) that also includes verification mechanisms that cryptographically prove who issued it, ensures that the data has not been tampered with, etc.

For a more detailed description of abstract verifiable credentials, with examples, see the relevant section in the data model specification.

Diagram showing a lozenge labeled as 'Verifiable Credential' containing three vertically stacked lozenges, labeled as 'Credential Metadata', 'Claim(s)', and 'Proof(s)'.
Figure 4 Basic components of a verifiable credential.
Note

4.2.2 Presentations

Enhancing privacy is a key design feature of Verifiable Credentials. Therefore, it is important for entities using this technology to be able to express only the portions of their persona that are appropriate for a given situation. The expression of a subset of one's persona is called a Verifiable Presentation. Examples of different personas include a person's professional persona, their online gaming persona, their family persona, or an incognito persona.

A Verifiable Presentation is created by a holder, can express data stemming from multiple verifiable credentials, and can contain additional metadata in forms of additional claims. They are used to present claims to a verifier. It is also possible to present verifiable credential directly.

A Verifiable Presentation is usually short-lived, it is not meant to be stored for a longer period.

For a more detailed description of abstract Verifiable Presentations, with examples, see the relevant section in the data model specification.

Diagram showing a lozenge labeled as 'Verifiable Presentation' containing three vertically stacked lozenges, labeled as 'Presentation Metadata', 'Verifiable Credential(s)', and 'Proof(s)'.
Figure 5 Basic components of a verifiable presentation.

4.3 JSON serialization

In the [vc-data-model] specification, as well as in the other documents, verifiable credentials and Presentations are mostly expressed in JSON [rfc7519], more specifically JSON-LD 1.1 [json-ld11]. In this serialization, properties of claims are represented as JSON names, and values as JSON literals or objects. Subjects of claims are either explicitly identified by an id property, or implicitly by appearing as an object of another claim. JSON-LD is useful because it enables the expression of the graph-based data model on which verifiable credentials are based, it has a machine-readable semantics, and is also useful when extending the data model. (See the relevant section in the [vc-data-model] specification.)

Standard properties defined by the [vc-data-model] form a distinct set of JSON names, referred to as a (standard) vocabulary. An important characteristic of verifiable credentials in JSON-LD is that it favors a decentralized and permissionless approach to extend to a new application area through application-specific vocabularies, distributed on the Web. Anyone can “publish” such a vocabulary, following some rules described in the extensibility section of the specification.

The following JSON-LD code is an example for a simple credential. It states that the person named “Pat”, identified by https://www.example.org/persons/pat, is an alumni of the Example University (identified by did:example:c276e12ec21ebfeb1f712ebc6f1). The credential is valid from the 1st of January 2010, and is issued by an entity identified by did:example:university.example:CSSchool. Most of the properties in the credential are from the standard verifiable credentials vocabulary (identified by https://www.w3.org/ns/credentials/v2), but some terms (like alumniOf or AlumniCredential) are added by the application-specific vocabulary referred to by https://www.w3.org/ns/credentials/examples/v2.

Example 1: A simple Alumni Credential
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    }
  }
}

Figure 6 shows the same credential, but represented as a graph of claims, as described in 4.1 Claims, properties.

Diagram showing an example of a Verifiable Credential. At top, there is an ellipse labeled 'https://university.example/Credential123 (Type: VerifiableCredential, ExampleAlumniCredential)'. This ellipse has three arrows going down. One arrow is nearer the right side of the ellipse, is labeled as 'validFrom', angles to the right, and terminates at a box labeled as '2010-01-01T00:00:00Z'. The second arrow is at the middle of the ellipse, is labeled as 'credentialSubject', and ends at an ellipse labeled as 'https://www.example.org/persons/pat'. This ellipse has two more arrows going down. One arrow is nearer the right side of the ellipse, is labeled as 'name', and angles to the right, terminating at a box labeled as 'Pat'. The second arrow is nearer the left side of the ellipse, labeled as 'alumniOf', and ends at another ellipse labeled as 'did:example:c276e12ec21ebfeb1f712ebc6f1'. This ellipse has a final arrow going down, which is labeled as 'name' and ends at a final box labeled as 'Example University'. Finally, the third arrow from the top is nearer to the left side of the top ellipse, angles to the left, and terminates at an ellipse labeled as 'did:example:university.example:CSSchool'.
Figure 6 The credential in Example 1 represented as a collection of claims.
Note

The Alumni Credential in Example 1 is used as a starting point throughout this document to show how to apply additional features defined by the various specifications.

The credential in Example 1, issued by Example University, is stored by a holder (who may be a person, a digital wallet, or any other entity). On request, the holder may “present” the credential to a verifier, encapsulated in a presentation. This is how the presentation looks like in the JSON-LD serialization:

Example 2: Presenting the credential
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": "VerifiablePresentation",
  "id": "urn:uuid:313801ba-24b7-11ee-be02-ff560265cf9b",
  "holder": "did:example:12345678",
  "verifiableCredential": [{
    "@context": [
      "https://www.w3.org/ns/credentials/v2",
      "https://www.w3.org/ns/credentials/examples/v2"
    ],
    "id": "https://university.example/Credential123",
    "type": ["VerifiableCredential", "ExampleAlumniCredential"],
    "issuer": "did:example:university.example:CSSchool",
    "validFrom": "2010-01-01T00:00:00Z",
    "validUntil": "2020-12-31T00:00:00Z",
    "credentialSubject": {
      "id": "https://www.example.org/persons/pat",
      "name": "Pat",
      "alumniOf": {
        "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
        "name": "Example University"
      }
    }
  }]
}

Note that the holder could have presented several credentials within the same presentation, or create a new credential by either combining it with others or removing some claims as irrelevant for the specific context.

4.4 Extensions

This section describes additional (and optional) features that an issuer may choose to use to extend the core credential.

4.4.1 Confidence methods

The Verifiable Credential Confidence Methods v1.0 [vc-confidence-method] specification defines a mechanism that issuers can use to increase the confidence of verifiers in the legitimacy of the presentation of a given credential. An analogy is checking a driving license: when the police officer (the “verifier”) gets hold of the license, they would first compare the photograph on the physical license to compare it with the face of the driver. This raises the confidence of the police officer that the driver is indeed the “subject” of the license (the “credential”).

The specification adds the concept of a Confidence Method to the core model. It defines mechanisms that can be used by the verifier to increase its confidence that a subject of the VC is also the subject of another interaction. For example, the issuer might provide a public key of the subject; the verifier could use a proof-of-use protocol to establish that the current user indeed holds the corresponding secret key by signing cryptographic challenges (see Example 3). A more complex verification method might be based on biometrics, like embedding raw biometric data (photograph, audio recordings, fingerprint data), or biometric vectors, i.e., compact mathematical representations produced by a specific model that can be used for matching. Some of these methods are defined in the specification, but specific communities may extend the model with other, proprietary approaches.

Note

The list of methods in the specification is still to be finalized.

Example 3: The Alumni Credential extended by a confidence method, relying on a public EdDSA key of the subject.
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  }
}

The diagram below shows the confidence setting steps for our simple university alumni case.

The diagram has a number of labelled boxes: 'school of computer science' connected to a box labelled to a box labelled as 'Pat\'s' alumni credential'. The directional connection is labelled as 'issues'. The second box is connected to a box labelled as 'Verifier': one directional connection from the Verifier, labelled as '(1) verifies' and the connection to the Verifier labelled as '(2) subject…publicKeyMultibase'. There is a separate box labelled as 'Holder', connected to the alumni credential with a connection labelles as 'holds'. Finally, the Verifier is also connected to the Holder with a connection label '(3) cryptographic challenge'.
Figure 7 The flow of holder check by the verifier: the subject.confidenceMethod.publicKeyMultibase is retrieved by the verifier, and is used for an extra cryptographic challenge to the holder. The confidence in the credential is increased if that challenge is passed.

4.4.2 Rendering methods

The issuer of a credential may have preferred ways to express a verifiable credential to an observer. For example, an issuer of the university alumni badge might want to include rich imagery of their university logo and specific placement of the alumni information in specific areas of the badge. The Verifiable Credential Rendering Methods v1.0 [vc-render-method] specification defines an extensible mechanism that issuers may use to provide these preferred mechanisms for the presentation of a credential. These presentations may use images, simple cards for a digital wallet, complex visual presentations, or HTML, CSS, and JavaScript in a secure execution environment.

The specification adds the renderMethod property to the data model for the issuer to use. The value of that property is an object, whose claims provide the necessary parameters for a specific render method. The document also includes some specific categories of render methods that can be used. These include:

  • “Static”: the issuer provides a static resource in the credential that should be directly consumed/displayed by the holder.
  • “Data”: the holder transforms credential to key/value data entries and displays it. The transformation’s parameters include the possibility to restrict the credential's statements to be displayed.
  • “HTML”: a generic, HTML+JavaScript render suite, that performs the final rendering of the credential via a sandboxed HTML iframe. The HTML snippet is provided by the issuer. This approach is well adapted to Web browsers, but also to mobile applications using WebView, and makes use of the rich possibilities offered by Web APIs.

Communities may define their own render methods.

Note

Example 4 adds an HTML-based render method to our alumni example. The snippet file itself can be retrieved using the university’s dedicated URL. Note that the use of the digestMultibase property adds an extra security factor to the choice of the HTML template: it refers to the encoded hash value of the snippet file.

Example 4: The Alumni Credential, to be preferably rendered with an HTML based render method.
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  }
}
Note
Issue 29: Render method examples

I wonder if Dmitri and co. could help by providing rendered examples for things like https://w3c.github.io/vc-overview-1.1/#example_with_render. It would really help comprehension.

(Issue originally from @philarcher)

4.4.3 Checking with JSON schemas

A significant part of the integrity of a verifiable credential comes from the ability to structure its contents so that all three parties — issuer, holder, verifier — may have a consistent mechanism of trust in interpreting the data that they are provided with. One way of doing that is to use [json-schema] to check the structural validity of the credential. The Verifiable Credentials JSON Schema Specification [vc-json-schema] specification adds standard properties to express the association of a credential with a JSON Schema.

Consider the following example:

Example 5: The Alumni Credential with a reference to a JSON schema
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema.json",
    "type": "JsonSchema"
  }
}

When dereferenced, the URL https://university.example/Credential-schema.json should return a JSON Schema, for example:

Example 6: Skeleton of a JSON schema for the Alumni Credential
{
  "$id": "https://university.example/schemas/credential.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "ExampleAlumniCredential",
  "description": "Alumni Credential using JsonSchema",
  "type": "object",
  "properties": {
    "renderMethod": {
      "type": "object",
      "…"
    },
    "credentialSubject": {
      "type": "object",
      "properties": {
        "alumniOf": {
          "type": "string",
          "format": "url"
        },
        "confidenceMethod": {
          "type": "object",
          "…"
        }
      },
      "required": [
        "alumniOf"
      ]
    }
  }
}

Using this JSON Schema, a verifier can check whether the credential is structurally valid or not.

For security reasons one may want to go a step further: check/verify the JSON Schema itself to see if, for example, it has been tampered with. This can be done by referring to the JSON Schema indirectly through a separate verifiable credential. The reference to such a verifiable credential looks very much like Example 5 except for the value of the type:

Example 7: Alumni Credential with a JSON schema credential
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  }
}

In this case, when dereferenced, the URL https://university.example/Credential-schema-credential should return a verifiable credential, whose credentialSubject property refers to the required JSON Schema (i.e., https://university.example/Credential-schema.json). See the example in the Verifiable Credentials JSON Schema Specification specification for an example and for further details.

The diagram below shows the JSON Schema related steps for our simple university alumni case.

The diagram has a number of labelled boxes: 'school of computer science' connected to a box labelled to a box labelled as 'Pat\'s' alumni credential'. The directional connection is labelled as 'issues'. The second box is connected to a box labelled as 'Verifier': one directional connection from the Verifier, labelled as '(1) verifies' and the connection to the Verifier labelled as '(2) credentialSchema'. There is a separate box labelled as 'JSON Schema Credential', also connected to the Verifier with two connections. One labelled as '(3) Verifies' and the second labelled as '(4) subject'. The JSON Schema Credential box is connected to yet another labelled box, labelled as 'JSON Schema'. This box is also connected to the Verifier via a connection labelled as '(5) validates credential'.
Figure 8 The flow of JSON Schema verification steps by the verifier: after the verification of the original credential, the id for the credentialSchema is retrieved, which points at another verifiable credential. After verification, the subject of that credential is retrieved; it is the JSON Schema that is supposed to be used to validate the alumni credential.

4.5 Example: the Alumni Credential

For reference, Example 8 represents the full Alumni Credential, as constructed so far.

Example 8: A simple alumni credential with a JSON schema
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  }
}

5. Securing credentials

5.1 Full and selective disclosures

A verifiable credential is a set of one or more claims made by the same issuer. A particular holder can have verifiable credentials from many issuers. When presenting to a verifier, a holder can choose just one or a subset from their existing verifiable credentials to form a verifiable presentation.

In the simplest deployment, only entire verifiable credentials can be shared through verifiable presentations. In other words, to share a single claim from a given verifiable credential, the entire verifiable credential has to be part of the verifiable presentation. This approach is referred to as a full disclosure.

However, full disclosure has obvious and significant implications for the privacy of both subjects and holders. To further enhance the privacy of a holder, an issuer can create a verifiable credential that supports selective disclosure. This is a technique that enables a holder to selectively reveal only a subset of claims from the original credential in a derived credential that will be presented to a verifier. This is achieved with assurances from the issuer to the verifier of the integrity and authenticity of the data in the derived credential. Note that selective disclosure typically applies at the claim level. A holder cannot alter the meaning of an issued claim and preserve the verifiability of the derived credential.

5.2 Enveloping proofs

Enveloping proofs of credentials, defined by this Working Group, are based on (JSON Object Signing and Encryption (JOSE)) and CBOR Object Signing and Encryption (COSE) [rfc9338]. These are IETF specifications, or groups of specifications (JOSE refers to JWT [rfc7519], JWS [rfc7515], or JWK [rfc7517]). W3C's Securing Verifiable Credentials using JOSE and COSE [vc-jose-cose] Recommendation defines the “bridge” between these and the Verifiable Credentials Data Model v2.0, specifying the suitable header claims, media types, etc.

In the case of JOSE, the credential is the “payload” (to use the IETF terminology). This is preceded by a suitable header whose details are specified by the relevant section of the [vc-jose-cose] specification. These are encoded, concatenated, and signed, to be transferred in a compact form by one entity to another (e.g., sent by the holder to the verifier). All the intricate details on signatures, encryption keys, etc., are defined by the IETF specifications; see Example 9 for a specific case.

The usage of COSE [rfc9052] is similar to JOSE, except that all structures are represented in CBOR [rfc8949]. From the credentials point of view the structure is similar insofar as the credential (or the presentation) is again the payload for COSE. The use of CBOR means that the final representation of the verifiable credential (or presentation) can have a reduced footprint which can be, for example, shown in a QR Code.

Both JOSE and COSE are full disclosure schemes. The framework for selective disclosure is provided by a separate IETF specification, namely Selective Disclosure for JSON Web Tokens [rfc9901]. This approach is obviously more complicated than the JOSE case but, from the credentials point of view, the structure is similar. The original credential is the payload for SD-JWT, and the [vc-jose-cose] specification contains the definition of the necessary header claims and media types.

5.2.1 Example: the Alumni Credential Secured with JOSE and COSE

Example 9 shows the credential example, shown in Example 8, secured by JOSE and COSE, respectively.

Example 9: The Alumni Credential in JOSE and COSE
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": [
    "VerifiableCredential",
    "ExampleAlumniCredential"
  ],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  }
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9DcmVkZW50aWFsMTIzIiwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl0sImlzc3VlciI6ImRpZDpleGFtcGxlOnVuaXZlcnNpdHkuZXhhbXBsZTpDU1NjaG9vbCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMDA6MDA6MDBaIiwicmVuZGVyTWV0aG9kIjp7InR5cGUiOiJUZW1wbGF0ZVJlbmRlcmVyTWV0aG9kIiwicmVuZGVyU3VpdGUiOiJodG1sIiwidGVtcGxhdGUiOnsiaWQiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9yZW5kZXItbWV0aG9kcy9hbHVtbmljcmVkZW50aWFsLmh0bWwiLCJtZWRpYVR5cGUiOiJ0ZXh0L2h0bWwiLCJkaWdlc3RNdWx0aWJhc2UiOiJ6UW1lcldDODVXZzZ3Rmw5em5GQ3dZeEFwRzI3MGlFdTVoNkpxV0FQZGh5eHoyZFIifX0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiaHR0cHM6Ly93d3cuZXhhbXBsZS5vcmcvcGVyc29ucy9wYXQiLCJuYW1lIjoiUGF0IiwiYWx1bW5pT2YiOnsiaWQiOiJkaWQ6ZXhhbXBsZTpjMjc2ZTEyZWMyMWViZmViMWY3MTJlYmM2ZjEiLCJuYW1lIjoiRXhhbXBsZSBVbml2ZXJzaXR5In0sImNvbmZpZGVuY2VNZXRob2QiOnsidHlwZSI6Ik11bHRpa2V5IiwicHVibGljS2V5TXVsdGliYXNlIjoiejZNa2Y1ckdNb2F0clNqMWY0Q3l2dUhCZVhKRUxlOVJQZHpvMlBLR05DS1Z0WnhQIn19LCJjcmVkZW50aWFsU2NoZW1hIjp7ImlkIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvQ3JlZGVudGlhbC1zY2hlbWEtY3JlZGVudGlhbCIsInR5cGUiOiJKc29uU2NoZW1hQ3JlZGVudGlhbCJ9fQ .ML974Uuknir3hW1ZQTAnAiOG7r2m_oR6_w1Jej3bnJuGOfcKpXsmmCQpkjVRajETdZN0po2aAD6RgqXp_DhpbA
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": [
    "VerifiableCredential",
    "ExampleAlumniCredential"
  ],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  }
}
application/vc+cose
d28443a10128a05903a37b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a2268747470733a2f2f756e69766572736974792e6578616d706c652f43726564656e7469616c313233222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c65416c756d6e6943726564656e7469616c225d2c22697373756572223a226469643a6578616d706c653a756e69766572736974792e6578616d706c653a43535363686f6f6c222c2276616c696446726f6d223a22323031302d30312d30315430303a30303a30305a222c2272656e6465724d6574686f64223a7b2274797065223a2254656d706c61746552656e64657265724d6574686f64222c2272656e6465725375697465223a2268746d6c222c2274656d706c617465223a7b226964223a2268747470733a2f2f756e69766572736974792e6578616d706c652f72656e6465722d6d6574686f64732f616c756d6e6963726564656e7469616c2e68746d6c222c226d6564696154797065223a22746578742f68746d6c222c226469676573744d756c746962617365223a227a516d65725743383557673677466c397a6e46437759784170473237306945753568364a71574150646879787a326452227d7d2c2263726564656e7469616c5375626a656374223a7b226964223a2268747470733a2f2f7777772e6578616d706c652e6f72672f706572736f6e732f706174222c226e616d65223a22506174222c22616c756d6e694f66223a7b226964223a226469643a6578616d706c653a633237366531326563323165626665623166373132656263366631222c226e616d65223a224578616d706c6520556e6976657273697479227d2c22636f6e666964656e63654d6574686f64223a7b2274797065223a224d756c74696b6579222c227075626c69634b65794d756c746962617365223a227a364d6b663572474d6f617472536a31663443797675484265584a454c65395250647a6f32504b474e434b56745a7850227d7d2c2263726564656e7469616c536368656d61223a7b226964223a2268747470733a2f2f756e69766572736974792e6578616d706c652f43726564656e7469616c2d736368656d612d63726564656e7469616c222c2274797065223a224a736f6e536368656d6143726564656e7469616c227d7d5840541862b2d35e613ff18ed098305b08730840eb230e862ba9446a3d3c8ae9d09638d88190879caca21faa9e6e523a2a9851de79df9610aae5cc8fea24b600e844

5.3 Embedded proofs

In the case of embedded proofs, the data structure containing the credential is extended to include one or several proofs for the claims in the credential. The result is a verifiable credential, i.e., a JSON object that can be transferred, stored, and retrieved as a verifiable unit.

The core specification for embedded proofs is Verifiable Credential Data Integrity 1.0 [vc-data-integrity]. That document defines all the details of generating and embedding proofs, and it includes the proof generation algorithms. Adaptation of these general algorithms to specific cryptographic schemes is done in a series Cryptographic suites (or cryptosuites, for short) in the form of separate specifications. See the separate section below.

5.3.1 Creation of Proofs in Data Integrity

5.3.1.1 Full disclosure proofs

The operation of Data Integrity with full disclosure is conceptually simple. To create a cryptographic proof, the following steps are performed: (1) Transformation, (2) Hashing, and (3) Proof Generation.

Simple flow diagram, with steps from left to right, labeled as 'Data', 'Transform data', 'Hash data', 'Generate proof', and 'Data with proof'.
Figure 9 View of the proof generation steps.
  1. Transformation is a process that takes input data and prepares it for the hashing process. In the case of data serialized in JSON this transformation includes the removal of all the artifacts that do not influence the semantics of the data, such as spaces, new lines, the order of JSON names, etc. (a step usually referred to as canonicalization). In some cases the transformation may be more involved.
  2. Hashing is a process that calculates a numerical identifier for the transformed data using a cryptographic hash function. Typically, the size of the resulting hash is smaller than the data, and it is suitable for complex cryptographic functions like digital signatures.
  3. Proof Generation is a process that calculates a value that protects the integrity of the input data from modification or otherwise proves a certain desired threshold of trust. A typical example is the application of a cryptographic signature using asymmetric keys to generate the signature of the data (using the private key).

Verification of a proof involves repeating the same transformation and hashing steps on the verifier's side and, depending on the proof method, validating the newly calculated hash value with the proof associated with the data. In the case of a digital signature, this means verifying, using the cryptographic algorithms associated with the asymmetric keys, that the proof value indeed signs the newly calculated hash.

5.3.1.2 Selective disclosure proofs

In contrast to full disclosure proofs (see 5.3.1.1 Full disclosure proofs), selective disclosure involves three processes rather than two: (1) the issuer creates a base proof, (2) the holder creates a derived proof from the base proof, and (3) the verifier verifies the derived proof. The reason for this extra step is that methods for creating a derived proof are much more efficient when used in combination with a base proof that is created in a particular manner. Holders are expected never to reveal base proofs when presenting, as some of the information in the base proofs might be intended only for the holder's use to create, for example, privacy-preserving derived proofs.

In Figure 10, the issuer may define mandatory disclosure constraints that separate the claims between mandatory claims (i.e., claims that have to appear in the derived credential regardless of other constraints) from the non-mandatory claims that do not have to appear in the derived credential. The imposition of mandatory disclosure constraints is optional.

Simple flow diagram, with steps from left to right, labeled as 'Data', 'Transform data', 'Hash data', 'Generate base proof', and 'Data with base proof'. Additionally, the 'Transform data' step is also linked to a separate step labeled as 'Mandatory disclosure constraints'
Figure 10 View of the proof generation steps.

In Figure 11, the holder gets to specify what subset of information gets revealed to the verifier via the selective disclosure constraints. These are used to produce a derived credential via transformation and derived proof generation steps. They are carried out in such a way as to preserve the authenticity and integrity of the derived data with respect to the issuer's intent.

Simple flow diagram, with steps from left to right, labeled as 'Data with base proof', 'Transform data', 'Hash data', 'Generate derived proof', and 'Selectively disclosed data with derived proof'. Additionally, the 'Transform data' step is also linked to a separate step labeled as 'Selective disclosure constraints'
Figure 11 View of the proof generation steps.

In both steps the issuer, respectively the holder, produce complex data structures that include the mandatory and the non-mandatory (respectively constrained) claims, accompanied by cryptographic signatures that make the derived credential verifiable without revealing extra information. These structures are explained in more details in the explanatory section of the [vc-data-integrity] specification.

5.3.2 Embedding proofs

The Verifiable Credential Data Integrity 1.0 [vc-data-integrity] specification defines a set of standard properties describing the details of the proof generation process and the way of adding the proofs to a credential.

The core property, in the general structure, is called proof. This property embeds a claim in the credential, referring to a separate collection of claims (referred to as a Proof Graph) detailing all the additional claims about the proofs themselves. Example 10 shows the structure for a single proof:

Example 10: Skeleton of a single embedded proof added to a credential.
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential123-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "proof": {
    "type": "DataIntegrityProof",
    …
    // All the details about the proof
    …
    "proofValue": "zQeVb…Wx"
  }
}

Note the proofValue property, whose object is the result of the proof generation process. (The proof value is for illustrative purposes only, and does not reflect the result of real cryptographic calculations.)

The definition of proof introduces a number of additional properties. Some of these are metadata properties on the proof itself, like created, expires, or domain. Others provide the necessary details on the proof generation process itself, like cryptosuite, that, essentially, specifies the cryptographic scheme and whether full or selective disclosure is used. The verificationMethod property usually refers to the public cryptographic key.

The exact encoding format of the public keys, when used for credentials, is defined in the [cid-1.0] specification, and is based on either the JWK [rfc7517] format or a Multibase encoding of the keys, called Multikey. Details of the key values are defined by other communities (IETF, cryptography groups, etc.) and are dependent on the specific cryptographic functions they operate with.

It is possible to embed several proofs for the same credential. These may be a set of independent proofs (based, for example, on different cryptosuites, to accommodate to the specificities of different verifiers), but may also be a chain of proofs that must be evaluated in a given order and where a specific proof also "signs" the proofs preceding it (if applicable).

5.3.3 Cryptosuites

The Working Group has published several cryptosuite documents: Data Integrity EdDSA Cryptosuites v1.0 [vc-di-eddsa], Data Integrity ECDSA Cryptosuites v1.0 [vc-di-ecdsa], Data Integrity BBS Cryptosuites v1.0 [vc-di-bbs], and Quantum-Resistant Cryptosuites v1.0 [vc-di-quantum-resistant]. As their titles suggests, the documents rely on existing cryptographic signature schemes: the Edwards-Curve Digital Signature Algorithm (EdDSA) specification [rfc8032], the Elliptic Curve Digital Signature Algorithm (ECDSA) specification [fips-186-5], the BBS Signature Scheme [cfrg-bbs-signature], and a collection of quantum resistant schemes, namely the Module-Lattice-Based Digital Signature Standard (ML-DSA) [fips-204], the Stateless Hash-Based Digital Signature Standard (SHL-DSA) [fips-205], the FAst Fourier Lattice-based COmpact signatures over NTRU [FALCON], or SQISign [SQIsign]. These specifications are conceptually simple. They all rely on the general algorithms defined in the [vc-data-integrity] document by “plugging in” the specificities of the respective cryptographic signature schemes into the general frameworks for full or for selective disclosures.

Publication of quantum-resistant cryptosuites is especially timely, in view of some recent research results on quantum vulnerabilities. That study led experts to consider that there exists a small but meaningful probability that elliptic curve keys could be broken by the early 2030s. As a result, organizations have already started to convert their authentication services to use, eventually, quantum resistant cryptographic algorithms, with deadlines as early as 2029. For verifiable credentials this means that ECDSA or EdDSA based signatures may become vulnerable. The collection of quantum resistant cryptosuites provide alternative digital signature schemes, using the best stable algorithms known today. (The final list of quantum resistant cryptosuites may still change, depending on the stability and acceptance of the underlying cryptographic algorithms.)

Note

Applications may define their own cryptosuites by applying different transformation and/or cryptographic signature schemes. For example, it would be possible to define a cryptosuite using the SM2 algorithm [rfc9563] similarly to, say, EdDSA.

Table 1 provides an overall view of the cryptosuites defined by the Recommendations. They all implement the general pipeline of proof generation as described in 5.3.1 Creation of Proofs in Data Integrity. One axis of differentiation is the data transformation function, i.e., the canonicalization of the JSON-LD serialization: cryptosuites whose name include the term rdfc use the RDF Dataset Canonicalization (RDFC-1.0) [rdf-canon], while the term jcs refers to the usage of JSON Canonicalization (JCS) [rfc8785] instead. The other axis is whether the cryptosuite provides selective disclosure, which is the case for BBS and all other suites whose name include the term sd. The third axis is whether the cryptographic signature algorithm is quantum resistant or not. Finally, the ecdsa-xi-2023 suite is a variant of ecdsa-rdfc-2019, which allows the inclusion of additional, external data to be “added” to the canonicalized JSON data before signature.

Table 1 Data integrity cryptosuites for embedded proofs.
Cryptosuite Identifier Canonicalization Selective disclosure? Quantum resistant?
EdDSA eddsa-rdfc-2022 RDFC no no
eddsa-jcs-2022 JCS no no
ECDSA ecdsa-rdfc-2019 RDFC no no
ecdsa-jcs-2019 JCS no no
ecdsa-sd-2019 RDFC yes no
ecdsa-xi-2023 RDFC no no
BBS bbs-2023 RDFC yes no
ML-DSA-44 mldsa44-rdfc-2024 RDFC no yes
mldsa44-jcs-2024 JCS no yes
mldsa44-sd-2024 RDFC yes yes
SLH-DSA-SHA2-128s slhdsa128-rdfc-2024 RDFC no yes
slhdsa128-jcs-2024 JCS no yes
slhdsa128-sd-2024 RDFC yes yes
FALCON-512 falcon512-rdfc-2024 RDFC no yes
falcon512-jcs-2024 JCS no yes
falcon512-sd-2024 RDFC yes yes
SQIsign-I sqisign1-rdfc-2024 RDFC no yes
sqisign1-jcs-2024 JCS no yes

A common characteristic of all these cryptosuites is that keys must be encoded using the Multikey encoding. For the ECDSA case the keys may also carry the choice of the hash function to be used by the proof generation algorithm. This provides yet another differentiation axis among cryptosuites.

Note

It is worth noting that all selective disclosure cryptosuites use RDFC for canonicalization. The reason is that selective disclosure relies on individual claims rather than JSON structures (see 5.3.1.1 Full disclosure proofs) and RDFC is based on converting data serialized in JSON-LD into individual claims before the specific canonicalization steps. That makes RDFC better adapted for this step than JCS.

5.3.4 Example: the Alumni Credential secured with EdDSA and ECDSA

Example 11 shows the Alumni Credential example, shown in Example 8, using the ecdsa-rdfc-2019 and eddsa-rdfc-2022 cryptosuites, respectively.

Example 11: Embedded EdDSA and ECDSA proofs added to the Alumni Credential
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": [
    "VerifiableCredential",
    "ExampleAlumniCredential"
  ],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-16T12:45:39Z",
    "verificationMethod": "did:key:zDnaetFvzAdPhrdG267EgsmYznornGx7fbzeBaUT3agK7AyrA",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z3tT5eyUeAosdJ2rZjkaNU3oJ6iQk5Am5eR7WtCjKD4yhfV7VYTxSVLC9jUUdyuXnbskdthu2HNrf7Yi6wjyQnQXL"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": [
    "VerifiableCredential",
    "ExampleAlumniCredential"
  ],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-16T12:45:39Z",
    "verificationMethod": "did:key:z6Mkp5GXHhHtvque18GuSa28SZf627zEYcV9BWSoouq37kPU",
    "cryptosuite": "eddsa-rdfc-2022",
    "proofPurpose": "assertionMethod",
    "proofValue": "z5u1FDbvqBSNENMi25EMTLSQrWUXTXNVwkrnSDJv6HjAdgZ5TVY6Zk2hVj7V8LCzxPpwx5h4kU9rXyzojKKh1Avan"
  }
}

When dereferenced, the URL value of the verificationMethod property should return a public key in Multikey format. For example:

Example 12: An ECDSA public key
{
  "@context": [
    "https://www.w3.org/ns/did/v1",
    "https://w3id.org/security/multikey/v1"
  ],
  "id": "did:example:university.example:CSSchool#ecdsa-public-key",
  "type": "Multikey",
  "controller": "did:example:university.example:CSSchool",
  "publicKeyMultibase": "z42twTcNeSYcnqg1FLuSFs2bsGH3ZqbRHFmvS9XMsYhjxvHN"
}

The value of the verificationMethod property may have been the public key itself, instead of a reference to a separate resource containing the key. Note that the verifier needs to check that the public key belongs to the issuer, otherwise the credential could be simply tempered with by replacing the signature. This is where confidence methods may come into play.

6. Verifiable credential deployment

6.1 Barcodes

verifiable credentials can be expressed through different media, such as simple text, a PDF file, or an image. An important presentation format is the usage optical barcodes, like QR codes, that often appear on identity cards or driving licenses. A simple approach is to convert the JSON serialization of the credential into CBOR [rfc8949], and then generate a QR Codes from that CBOR representation. This can be done by a number of off-the-shelf tools.

However, this approach has a major drawback for even moderately sized verifiable credentials: the result of the direct CBOR conversion may create a QR Code that is too large for the available space, which has a severe size limitation. To solve this problem, the Verifiable Credential Barcodes v1.0 [vc-barcodes] specification takes a slightly different approach. Instead of using a generic CBOR conversion, it relies on the CBOR-LD [cbor-ld] representation of the credential. CBOR-LD is a CBOR encoding tailored for JSON-LD: it includes the possibility for a semantic compression of the data, targeted at a particular application vocabulary. It is possible to achieve compression ratios in excess of 60% better than general compression schemes, which makes it possible to represent verifiable credentials for, say, driving licenses, birth certificates, and conformity certificates.

A picture of the front of a birth certificate containing information such as the newborn's name, parent's names, information about the hospital, attendees, and person responsible for the registration.
Figure 12 A birth certificate with the textual and QR Code representation of the same credential; the QR Code also includes the credential proof.

Any credential can be represented in a barcode yielding, for example, a birth cerfiticate like on Figure 12. However, in practical applications, the situation may be a bit more complex. Consider the back side of a fictious employment authorization card on Figure 13:

Picture of the back of a employment authorization document issued by the state of Utopia, containing usage rules as well as machine-readable zone data that encodes much of the information displayed on the front of the card.
Figure 13 The back of an employment authorization document that also includes a machine-readable zone (MRZ).

The card includes a machine-readable zone (MRZ) containing information designed to be read through optical character recognition. The goal is to generate a verification mechanism that would also secure that MRZ data beyond the claims expressed by the verifiable credential proper:

Example 13: Verifiable Credential for the MRZ data
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/citizenship/v2",
    "https://w3id.org/citizenship/utopia/v1"
  ],
  "type": [
    "VerifiableCredential",
    "OpticalBarcodeCredential"
  ],
  "issuer": "did:web:immigration.utopia.example",
  "credentialSubject": {
    "type": "MachineReadableZone"
  },
  "proof": {
    "type": "DataIntegrity",
    "cryptosuite": "ecdsa-xi-2023",
    "verificationMethod": "did:web:immigration.utopia.example#key-4",
    "proofValue": "z4peo48uwK2EF4Fta8P...HzQMDYJ34r9gL"
  }
}

Note the usage of the ecdsa-xi-2023 cryptosuite (listed in Table 1): it allows the concatenation of an additional, external data with the canonicalized JSON-LD data before signature. In the case of a MachineReadableZone type credential this external data is the one expressed in the MRZ. The result is a QR Code appearing on the front of the employment card on Figure 14:

Picture of the front of an employment authorization document issued by the state of Utopia which contains a picture of the individual that is the subject of the document along with their attributes, such as name, address, height, weight, eye color, and employment privileges
Figure 14 The front of an employment authorization document that also includes a verifiable credential in the form of a QR code.
Issue 33: Barcode processing plugin did not seem to work...

I tried to add a barcode generation to the examples, to complete the example, but it did not seem to work...

6.2 Bitstring status list

It is often useful for an issuer of verifiable credentials to link to a location where a verifier can check whether a credential has been suspended or revoked. This additional resource is referred to as a “status list”.

The simplest approach for a status list, where there is a one-to-one mapping between a verifiable credential and a URL where the status is published, raises privacy as well as performance issues. In order to meet privacy expectations, it is useful to bundle the status of large sets of credentials into a single list to help with group privacy. However, doing so can place an impossible burden on both the server and client if the status information is as much as a few hundred bytes in size per credential across a population of hundreds of millions of holders. The Bitstring Status List v1.0 [vc-bitstring-status-list] specification defines a highly compressible, highly space-efficient bitstring-based status list mechanism.

Conceptually, a bitstring status list is a sequence of bits. When a single bit specifies a status, such as “revoked” or “suspended”, then that status is expected to be true when the bit is set and false when unset. One of the benefits of using a bitstring is that it is a highly compressible data format since, in the average case, large numbers of credentials will remain unrevoked. If compressed using run-length compression techniques such as GZIP [rfc1952] the result is a significantly smaller set of data: for a status list of size is 131,072 entries, equivalent to 16 KB of single bit values, GZIP compresses the bitstring down to a few hundred bytes when only a handful of verifiable credentials are revoked.

This diagram shows a horizontal series of adjacent boxes: on the left, there are 14 boxes, and on the right, 3 boxes, with these two groups connected by four dot characters. The groups of boxes are annotated on the right by the text '16KB'. All boxes are filled with one color (green), except for those in the 5th and 10th positions, that are filled with a different color (red). These two red boxes are labeled as 'Revoked Credentials'. All of these elements are annotated, beneath, by the remark 'ZLIB Compression' and '135 bytes', with a small icon representing computer data.
Figure 15 A visual depiction of the concepts outlined in this section.

The specification introduces the credentialStatus property, as well as some additional sub-properties, that should be used to add this additional information to a verifiable credential.

Example 14 shows the example from Example 11, combined with the information on the credential status: the purpose of that status information, the reference to the bitstring, and the index into this bitstring for the enclosing credential:

Example 14: The Alumni Credential with a reference to a status list
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "credentialStatus": {
    "type": "BitstringStatusListEntry",
    "statusPurpose": "revocation",
    "statusListIndex": "9989",
    "statusListCredential": "https://university.example/CredentialStatusList"
  }
}

The statusListCredential property, when dereferenced, should return a separate credential for the status list. The status list itself is the subject of that credential (which, of course, can also be signed). An example is:

Example 15: A credential for a bitstring status list
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2"
  ],
  "id": "https://university.example/CredentialStatusList",
  "type": ["VerifiableCredential", "BitstringStatusListCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2005-01-01T00:00:00",
  "credentialSubject": {
    "id": "https://university.example/statuslist#list",
    "type": "BitstringStatusList",
    "statusPurpose": "revocation",
    "encodedList": "uH4sIAAAAAAAAA-3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAIC3AYbSVKsAQAAA"
  }
}

The core property in this case is encodedList, which is a base64url encoded version of the GZIP compressed bitstring status list.

6.3 Forgery defense

The publication of the Verifiable Credential Forgery Defense v1.0 [vc-forgery-defense] is complementary to quantum-resistant cryptosuites, and is motivated by the same threat. While cryptosuites let issuers secure new proofs with post-quantum signatures, this specification lets an issuer establish post-quantum-backed authenticity for credentials that are signed with conventional quantum-vulnerable algorithms. That may be the case for credentials that cannot reasonably be re-issued or where the significant size of some quantum-resistant signatures becomes an obstacle. (A good example may be the employment authorizations issued by a state or a country, as described in 6.1 Barcodes.)

The forgery defense mechanism defined by this specification is achieved by publishing a witness list that is itself the subject of a separate verifiable credential. A “witness” in that list is, essentially, the most significant bits of a hash value generated from the credential itself, combined with a random seed. The list combines a large number of such witnesses in one, encoded value, and the Credential is signed by, preferably, a quantum resistant scheme:

Example 16: A witness list Credential signed using a quantum-resistant scheme
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/vc-forgery-defense/v1rc1"
  ],
  "id": "https://university.example/witnesses",
  "type": ["VerifiableCredential", "WitnessListCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2024-01-15T00:00:00Z",
  "credentialSubject": {
    "type": "WitnessList",
    "witnessSeed": "26ea4078-968d-4d98-aba7-695610c0dfb6",
    "witnessLength": 128,
    "witnessCount": 131072,
    "encodedWitnesses": "uQYF16SSSbR_LrMZFbFvbGkn8B7ggEZtov3KVL..."
  },
  "proof": {
    "type": "DataIntegrityProof",
    "cryptosuite": "mldsa44-rdfc-2024",
    "verificationMethod": "did:example:issuer#pq-key-1",
    "proofValue": "z..."
  }
}

For older credentials, the verifier may locate the witness list in some out-of-band manner; e.g., a university may publish the location for the witnesses of all the credentials it has issued. New verifiable credentials may include information about the relevant witness, added to the credential status alongside status lists references:

Example 17: The Alumni Credential with a reference to a forgery witness list
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:university.example:CSSchool",
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "credentialStatus": [{
    "type": "BitstringStatusListEntry",
    "statusPurpose": "revocation",
    "statusListIndex": "9989",
    "statusListCredential": "https://university.example/CredentialStatusList"
  },{
    "type": "WitnessListEntry",
    "witnessListCredential": "https://university.example/WitnessList",
    "witnessIndex": 5637
  }]
}

6.4 Recognized entities

The verifiable credential ecosystem relies on the ability of verifiers to determine whether a particular issuer is recognized to issue a certain type of verifiable credential. Similarly, holders should have the ability to decide whether a particular verifier is recognized to verify a credential. Historically, these determinations have often been made through out-of-band processes, bilateral agreements, or proprietary registries that are difficult to discover, query, or reason about in an automated way. As verifiable credentials are increasingly deployed, the need for a standardized, interoperable mechanism to express and communicate recognition of entities that perform known actions becomes critical. This is the problem area addressed by the Recognized Entities v1.0 [vc-recognized-entities] specification.

Rather than mandating a central registry for issuers, this specification choses a decentralized approach. Any entity — a local governmental body, a standard institution, a university office, or a local community — can issue a special verifiable credential that lists all potential issuers that it “recognizes” to act either as an issuer or a verifier (e.g., all schools of the university). The design may lead to a “Web of Recognition”: the same entity can be recognized as an issuer both by the university office as well as the local governmental body, or the university office itself might be recognized by another institution, like the local Ministry of Higher Education. The specification also supports interoperability with existing trust infrastructure, such as X.509 [rfc5280] certificate authority lists and ETSI Trust Service Lists [etsi-trust].

Example 18 shows the skeleton of a verifiable credential, issued by the administration of Example University, which attests that the administrations of the School of Computer Science, respectively of Philosophy, can issue credentials. (Note that the Alumni Credential in our example was issued by the Schoold of Computer Science.)

Example 18: Example for recognizing two issuers
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": ["VerifiableCredential", "VerifiableRecognitionCredential"],
  "id": "did:example:university.example:Admin#recognitionCredential",
  "issuer": {
    "id": "did:example:university.example:Admin",
    "type": "RecognizedIssuer",
    "name": "Example University Administration"
  },
  "validFrom": "2009-01-01T00:00:00Z",
  "credentialSubject" : [{
    "id": "did:example:university.example:CSSchool",
    "type": "RecognizedEntity",
    "name": "Example University School of Computer Science Administration",
    "recognizedBy": "did:example:university.example:Admin",
    "recognizedTo" : {
      "type": "RecognizedAction",
      "action": "issue"
    }
  },{
    "id": "did:example:university.example:PhSchool",
    "type": "RecognizedEntity",
    "name": "Example University School of Philosophy Administration",
    "recognizedBy": "did:example:university.example:Admin",
    "recognizedTo": {
      "type": "RecognizedAction",
      "action": "issue"
    }
  }],
  "proof": {
    "…"
  }
}

We can also extend the Alumni Credential with the possibility for the verifier to trace back the Web of Recognition to a possible “root”. In Example 19 the data about the issuer contains the recognizedIn claim, that refers back to the credential in Example 18.

Example 19: Example for marking the issuer as being recognized on the Web of Recognition
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": {
    "id" : "did:example:university.example:CSSchool",
    "recognizedIn": "did:example:university.example:Admin#recognitionCredential"
  },
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential123-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "credentialStatus": [
    {
      "type": "BitstringStatusListEntry",
      "statusPurpose": "revocation",
      "statusListIndex": "9989",
      "statusListCredential": "https://university.example/CredentialStatusList"
    },
    {
      "type": "WitnessListEntry",
      "witnessListCredential": "https://university.example/witnesses",
      "witnessIndex": 5637
    }
  ]
}

The diagram below shows the “flow” of trust for our simple university alumni case. See the Appendix of the Recognized Entities v1.0 specification for more elaborate examples.

The diagram has a number of labelled boxes. A box labelled as 'University Administration (Issuer; root of trust)' is connected to a single box: 'Recognition Credential'. This box is connected to two boxes: one label is 'School of Computer Science (Issuer)' and the other is School of Philosophy(Issuer) via connections labelled as 'recognizes'. The 'school of computer science' is connected to a box labelled to a box labelled as 'Pat\'s' alumni credential'. The directional connection is labelled as 'issues'. There is another box labelled as 'Verifier'. The alumni credential is connected from the Verifier via a connectionn labelled as '(1) verifies' and is also connect to the Verfier with a connection labeled as '(2) issuer.recognizedIn'. Finally, the Verifier is connecte to the Recognition Credential via a link labelled as '(3) verifies'.
Figure 16 The flow of trust for the Alumni Credential: the verifier extracts the issuer.recognizedIn value that points to a recognition credential. This credential can be verified separately.

It is interesting to note that the Recognized Entities v1.0 specification is also a perfect example for how easily application areas may define bespoke verifiable credential types. It simply boils down to the syntactic and semantic definition of new terms (e.g., RecognizedEntity or recognizedTo) to extend the core verifiable credential Data Model. Once those are defined and documented in the form of a vocabulary for JSON-LD, including an application-dependent context file (see, for example, Example 18), the terms can be used in a verifiable credential without further ado. Anyone can “publish” such a vocabulary, following some rules described in the extensibility section of the specification, no need for a central registration of the new terms.

6.5 An API for lifecycle management

The VCALM v1.0 [vcalm] specification provides a set of HTTP Application Programming Interfaces (HTTP APIs) and protocols for issuing, verifying, presenting, and managing verifiable credentials. It defines APIs among the entities corresponding to the main “roles” in the verifiable credential model (i.e., issuer, holder, and verifier, see also 2. Ecosystem overview). The specification provides a reference model for components within these roles, including the corresponding APIs among those components; see Figure 18 below for the overall architecture.

Diagram showing the verifiable credential roles of Issuer, Holder, and Verifier.
Figure 17 The roles forming the basis for the VC Data Model.
API Components of Coordinators, Services, and Admin for Issuers, Verifiers, and Holders.
Figure 18 Reference model for the API Components. Arrows indicate initiation of flows.

The boundaries and interfaces among the components are defined to ensure interoperability and substitutability across the verifiable credential conformant ecosystem. This approach helps to avoid vendor lock-in and leads to a pool of independent implementations of interoperating components. Any given implementation of a specific role (i.e., issuer or holder) may choose to aggregate any or all of the components of the model into a single functional application. The individual components may be of a different nature (running on a browser or on a server, implemented in different programming languages, etc.), each executing just part of the overall functionality.

A. Additional publications

A.1 Working Group notes

The VC Working Group has also published, and maintains, a few additional documents in the form of Working Group Notes. Although these are not formal standards, they represent consensus among the Working Group Participants. These documents are:

Verifiable Credentials Use Cases
The use cases outlined in this document were, and are, instrumental in making progress toward standardization and interoperation of both low– and high–stake claims, with the goals of storing, transmitting, and receiving digitally verifiable proof of attributes such as qualifications and achievements. The use cases focus on concrete scenarios that the technology defined by the group aims to address (including for future revisions).
Verifiable Credentials Implementation Guidelines 1.0
This document provides implementation guidance for verifiable credentials.
Issue 35: Section on WG notes?

Version 1.0 included a reference to Verifiable Credential Extensions. Some of those entries have been incorporated into the spec (e.g., Multi*) and the document does not seem to be actively maintained.

Actually, I wonder whether the list in [§A.1](http://www.w3.org/TR/vc-overview-1.1/#working-group-notes] is maintained at all. A more radical approach may be to remove this section altogether…

A.2 Standard vocabularies

As explained in the introductory sections, the specifications define a number of standard vocabularies, i.e., standard sets of properties used as JSON names. These are used by verifiable credentials to ensure interoperability. Although the formal specifications of these terms are provided by the respective specifications, the vocabularies are also published as separate documents. This is done for an easier reference and overview, and these documents are also important if credentials are used by applications based on RDF [rdf11-concepts]. These vocabulary documents are:

Verifiable Credentials Vocabulary v2.0
Definition of property names defined, primarily, by the VC Data Model specification, but also the terms defined by the VC JSON Schema, Confidence, and Rendering methods.
Security Vocabulary
Property name definitions in the VC Data Integrity and the Controlled Identifiers specifications.
Bitstring Status List Vocabulary
Property name definitions in the Bitstring Status List specification.
Editor's note

B. The Alumni Credential

Example 20 shows the Alumni Credential example used throughout this document, with all the constituents added. It is secured via different mechanisms defined for verifiable credentials. The issuer itself has been recognized by the administration of the University (see Example 18), which is an extra information for the verifier of this credential.

Example 20: A Verifiable Credential for alumni, with a reference to render and confidence methods, credential JSON schema, status and forgery lists.
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": {
    "id" : "did:example:university.example:CSSchool",
    "recognizedIn": "did:example:university.example:Admin#recognitionCredential"
  },
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "credentialStatus": [
    {
      "type": "BitstringStatusListEntry",
      "statusPurpose": "revocation",
      "statusListIndex": "9989",
      "statusListCredential": "https://university.example/CredentialStatusList"
    },
    {
      "type": "WitnessListEntry",
      "witnessListCredential": "https://university.example/witnesses",
      "witnessIndex": 5637
    }
  ]
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": [
    "VerifiableCredential",
    "ExampleAlumniCredential"
  ],
  "issuer": {
    "id": "did:example:university.example:CSSchool",
    "recognizedIn": "did:example:university.example:Admin#recognitionCredential"
  },
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "credentialStatus": [
    {
      "type": "BitstringStatusListEntry",
      "statusPurpose": "revocation",
      "statusListIndex": "9989",
      "statusListCredential": "https://university.example/CredentialStatusList"
    },
    {
      "type": "WitnessListEntry",
      "witnessListCredential": "https://university.example/witnesses",
      "witnessIndex": 5637
    }
  ],
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-16T12:45:39Z",
    "verificationMethod": "did:key:zDnaetFvzAdPhrdG267EgsmYznornGx7fbzeBaUT3agK7AyrA",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z2C83VJ4dy3ABxf89inbfWNVQNA4n7HGHpNg5SFwkmXvAFhbqBrACgpUqHq2VukFvYNWBtN7E33LhxMuaMnD3m59q"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": [
    "VerifiableCredential",
    "ExampleAlumniCredential"
  ],
  "issuer": {
    "id": "did:example:university.example:CSSchool",
    "recognizedIn": "did:example:university.example:Admin#recognitionCredential"
  },
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "credentialStatus": [
    {
      "type": "BitstringStatusListEntry",
      "statusPurpose": "revocation",
      "statusListIndex": "9989",
      "statusListCredential": "https://university.example/CredentialStatusList"
    },
    {
      "type": "WitnessListEntry",
      "witnessListCredential": "https://university.example/witnesses",
      "witnessIndex": 5637
    }
  ],
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-16T12:45:39Z",
    "verificationMethod": "did:key:z6Mkp5GXHhHtvque18GuSa28SZf627zEYcV9BWSoouq37kPU",
    "cryptosuite": "eddsa-rdfc-2022",
    "proofPurpose": "assertionMethod",
    "proofValue": "z3vKWkiGiCksguDut6rngMshCBZ9ZphQbvFNg333sJ3dRZyXbUknNu2yqsWTMMHNGmnAm4xZwkCaqwDvaZYE2jzsu"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": [
    "VerifiableCredential",
    "ExampleAlumniCredential"
  ],
  "issuer": {
    "id": "did:example:university.example:CSSchool",
    "recognizedIn": "did:example:university.example:Admin#recognitionCredential"
  },
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "credentialStatus": [
    {
      "type": "BitstringStatusListEntry",
      "statusPurpose": "revocation",
      "statusListIndex": "9989",
      "statusListCredential": "https://university.example/CredentialStatusList"
    },
    {
      "type": "WitnessListEntry",
      "witnessListCredential": "https://university.example/witnesses",
      "witnessIndex": 5637
    }
  ],
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC7JaKaMckDUbA9r5Y4BtFj4yNuLNQabyC4J9gagpeyezXpRmh3gUHDd4dgkjNT1kZYqLg6Bte5bgqNwZLGyjeRrEhAU86Fiosvh6574b267MnCrD3vJyagiSmM9XFoAAEAhVp",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQqvdqmF9XUGOVSUCJ8ES7vNhWNTbbRCs3ki_s6fmyFBo43-pzIWP3hPaASM816KKPGHS5tR62OaXiaw0EJis9Elfp1Azrur3TUx3DNID-2IpYQKW1Vld6eWpNZJS7rUtRcCPcghOsncjx1LHrOg67N77VahWxz-yYAbjGgPXhU2mimMHT4a47VEphe-reOoceQNdYYLM4y1_S3jMqZg2PAIF0mFhl4pEj1GudjlgCNHIthAepB2q-MwgDs_uG380_RX4DbxfQxMZ-vOxIvKOav6E6a_CXYrUaBNGcAWkIQNzoztM3zubmaaIflIwGaJBgEaIBP1gg4ARgUBGTxVdQopF7eK03OZplvYIchPO8VTn1DSBYoTWBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": [
    "VerifiableCredential",
    "ExampleAlumniCredential"
  ],
  "issuer": {
    "id": "did:example:university.example:CSSchool",
    "recognizedIn": "did:example:university.example:Admin#recognitionCredential"
  },
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "credentialStatus": [
    {
      "type": "BitstringStatusListEntry",
      "statusPurpose": "revocation",
      "statusListIndex": "9989",
      "statusListCredential": "https://university.example/CredentialStatusList"
    },
    {
      "type": "WitnessListEntry",
      "witnessListCredential": "https://university.example/witnesses",
      "witnessIndex": 5637
    }
  ]
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9DcmVkZW50aWFsMTIzIiwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl0sImlzc3VlciI6eyJpZCI6ImRpZDpleGFtcGxlOnVuaXZlcnNpdHkuZXhhbXBsZTpDU1NjaG9vbCIsInJlY29nbml6ZWRJbiI6ImRpZDpleGFtcGxlOnVuaXZlcnNpdHkuZXhhbXBsZTpBZG1pbiNyZWNvZ25pdGlvbkNyZWRlbnRpYWwifSwidmFsaWRGcm9tIjoiMjAxMC0wMS0wMVQwMDowMDowMFoiLCJyZW5kZXJNZXRob2QiOnsidHlwZSI6IlRlbXBsYXRlUmVuZGVyZXJNZXRob2QiLCJyZW5kZXJTdWl0ZSI6Imh0bWwiLCJ0ZW1wbGF0ZSI6eyJpZCI6Imh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL3JlbmRlci1tZXRob2RzL2FsdW1uaWNyZWRlbnRpYWwuaHRtbCIsIm1lZGlhVHlwZSI6InRleHQvaHRtbCIsImRpZ2VzdE11bHRpYmFzZSI6InpRbWVyV0M4NVdnNndGbDl6bkZDd1l4QXBHMjcwaUV1NWg2SnFXQVBkaHl4ejJkUiJ9fSwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJodHRwczovL3d3dy5leGFtcGxlLm9yZy9wZXJzb25zL3BhdCIsIm5hbWUiOiJQYXQiLCJhbHVtbmlPZiI6eyJpZCI6ImRpZDpleGFtcGxlOmMyNzZlMTJlYzIxZWJmZWIxZjcxMmViYzZmMSIsIm5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkifSwiY29uZmlkZW5jZU1ldGhvZCI6eyJ0eXBlIjoiTXVsdGlrZXkiLCJwdWJsaWNLZXlNdWx0aWJhc2UiOiJ6Nk1rZjVyR01vYXRyU2oxZjRDeXZ1SEJlWEpFTGU5UlBkem8yUEtHTkNLVnRaeFAifX0sImNyZWRlbnRpYWxTY2hlbWEiOnsiaWQiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9DcmVkZW50aWFsLXNjaGVtYS1jcmVkZW50aWFsIiwidHlwZSI6Ikpzb25TY2hlbWFDcmVkZW50aWFsIn0sImNyZWRlbnRpYWxTdGF0dXMiOlt7InR5cGUiOiJCaXRzdHJpbmdTdGF0dXNMaXN0RW50cnkiLCJzdGF0dXNQdXJwb3NlIjoicmV2b2NhdGlvbiIsInN0YXR1c0xpc3RJbmRleCI6Ijk5ODkiLCJzdGF0dXNMaXN0Q3JlZGVudGlhbCI6Imh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL0NyZWRlbnRpYWxTdGF0dXNMaXN0In0seyJ0eXBlIjoiV2l0bmVzc0xpc3RFbnRyeSIsIndpdG5lc3NMaXN0Q3JlZGVudGlhbCI6Imh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL3dpdG5lc3NlcyIsIndpdG5lc3NJbmRleCI6NTYzN31dfQ .CmK8PASeFm9bgnYArRvrxJJZ2nsJEGUAWtP4bx8qJG73Yfs9SibL5x9DiQof3GDQ_-MUzQWhSWGMhtvI5NAQTw
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "https://university.example/Credential123",
  "type": [
    "VerifiableCredential",
    "ExampleAlumniCredential"
  ],
  "issuer": {
    "id": "did:example:university.example:CSSchool",
    "recognizedIn": "did:example:university.example:Admin#recognitionCredential"
  },
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "type": "TemplateRendererMethod",
    "renderSuite": "html",
    "template": {
      "id": "https://university.example/render-methods/alumnicredential.html",
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR"
    }
  },
  "credentialSubject": {
    "id": "https://www.example.org/persons/pat",
    "name": "Pat",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    },
    "confidenceMethod": {
      "type": "Multikey",
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
    }
  },
  "credentialSchema": {
    "id": "https://university.example/Credential-schema-credential",
    "type": "JsonSchemaCredential"
  },
  "credentialStatus": [
    {
      "type": "BitstringStatusListEntry",
      "statusPurpose": "revocation",
      "statusListIndex": "9989",
      "statusListCredential": "https://university.example/CredentialStatusList"
    },
    {
      "type": "WitnessListEntry",
      "witnessListCredential": "https://university.example/witnesses",
      "witnessIndex": 5637
    }
  ]
}
application/vc+cose
d28443a10128a059051d7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a2268747470733a2f2f756e69766572736974792e6578616d706c652f43726564656e7469616c313233222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c65416c756d6e6943726564656e7469616c225d2c22697373756572223a7b226964223a226469643a6578616d706c653a756e69766572736974792e6578616d706c653a43535363686f6f6c222c227265636f676e697a6564496e223a226469643a6578616d706c653a756e69766572736974792e6578616d706c653a41646d696e237265636f676e6974696f6e43726564656e7469616c227d2c2276616c696446726f6d223a22323031302d30312d30315430303a30303a30305a222c2272656e6465724d6574686f64223a7b2274797065223a2254656d706c61746552656e64657265724d6574686f64222c2272656e6465725375697465223a2268746d6c222c2274656d706c617465223a7b226964223a2268747470733a2f2f756e69766572736974792e6578616d706c652f72656e6465722d6d6574686f64732f616c756d6e6963726564656e7469616c2e68746d6c222c226d6564696154797065223a22746578742f68746d6c222c226469676573744d756c746962617365223a227a516d65725743383557673677466c397a6e46437759784170473237306945753568364a71574150646879787a326452227d7d2c2263726564656e7469616c5375626a656374223a7b226964223a2268747470733a2f2f7777772e6578616d706c652e6f72672f706572736f6e732f706174222c226e616d65223a22506174222c22616c756d6e694f66223a7b226964223a226469643a6578616d706c653a633237366531326563323165626665623166373132656263366631222c226e616d65223a224578616d706c6520556e6976657273697479227d2c22636f6e666964656e63654d6574686f64223a7b2274797065223a224d756c74696b6579222c227075626c69634b65794d756c746962617365223a227a364d6b663572474d6f617472536a31663443797675484265584a454c65395250647a6f32504b474e434b56745a7850227d7d2c2263726564656e7469616c536368656d61223a7b226964223a2268747470733a2f2f756e69766572736974792e6578616d706c652f43726564656e7469616c2d736368656d612d63726564656e7469616c222c2274797065223a224a736f6e536368656d6143726564656e7469616c227d2c2263726564656e7469616c537461747573223a5b7b2274797065223a22426974737472696e675374617475734c697374456e747279222c22737461747573507572706f7365223a227265766f636174696f6e222c227374617475734c697374496e646578223a2239393839222c227374617475734c69737443726564656e7469616c223a2268747470733a2f2f756e69766572736974792e6578616d706c652f43726564656e7469616c5374617475734c697374227d2c7b2274797065223a225769746e6573734c697374456e747279222c227769746e6573734c69737443726564656e7469616c223a2268747470733a2f2f756e69766572736974792e6578616d706c652f7769746e6573736573222c227769746e657373496e646578223a353633377d5d7d584023518824dac7cd6e8da3892fd69d65fed88125ec303eb7cfe9d8e6c79bec3a97917a9f126623c5635fd8d60b019030d05ce24467131cdfb02c1ba2015871df30
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJfc2RfYWxnIjoic2hhLTI1NiIsIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJpc3N1ZXIiOnsicmVjb2duaXplZEluIjoiZGlkOmV4YW1wbGU6dW5pdmVyc2l0eS5leGFtcGxlOkFkbWluI3JlY29nbml0aW9uQ3JlZGVudGlhbCIsIl9zZCI6WyJHV25ydUxObUlJcmlEMjlqTnZ5X25iaUVPbjRISTRYSFlFVGliY1Nmdm8wIl19LCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsInJlbmRlck1ldGhvZCI6eyJyZW5kZXJTdWl0ZSI6Imh0bWwiLCJ0ZW1wbGF0ZSI6eyJtZWRpYVR5cGUiOiJ0ZXh0L2h0bWwiLCJkaWdlc3RNdWx0aWJhc2UiOiJ6UW1lcldDODVXZzZ3Rmw5em5GQ3dZeEFwRzI3MGlFdTVoNkpxV0FQZGh5eHoyZFIiLCJfc2QiOlsiWVJFSGh1OGtzcVdVWHpRWU93RHpPOTJORDlzX3hDMTFLUm1nM2FuNThQcyJdfSwiX3NkIjpbIlBoVnFjLXlaTFhiWTMzaHdhREp0MnV2ejFsTmFLc2pqcFVLZS1ma3R2djAiXX0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7Im5hbWUiOiJQYXQiLCJhbHVtbmlPZiI6eyJuYW1lIjoiRXhhbXBsZSBVbml2ZXJzaXR5IiwiX3NkIjpbIm9EWm9QNXIzM0czajUtamdYNDFOeTByTnZyZFFHOE5UYVVxRkpRMlEzZGsiXX0sImNvbmZpZGVuY2VNZXRob2QiOnsicHVibGljS2V5TXVsdGliYXNlIjoiejZNa2Y1ckdNb2F0clNqMWY0Q3l2dUhCZVhKRUxlOVJQZHpvMlBLR05DS1Z0WnhQIiwiX3NkIjpbIndxa3FQYUJTdk9EclVkNzZ5eGJqU0Fxb1doNFJRS2MzQlFzTEJJdU5aRlkiXX0sIl9zZCI6WyJqSmhvcnhic21FTk1NVkF0WkxvUG5TanYzakhFdXdZSGFWa2Jkb0JZSGFnIl19LCJjcmVkZW50aWFsU2NoZW1hIjp7Il9zZCI6WyJLZzEwUFhRenBULXNrTXdzNWNwNS0tLUxORng1MHJZVXM5X2dhU3JqRy1RIiwiaF9fMGoweElLZmxpUnRKNEo4YWlNMXdBRlJlQmVMN2ZSem42QzhLdkJ5WSJdfSwiY3JlZGVudGlhbFN0YXR1cyI6W3sic3RhdHVzUHVycG9zZSI6InJldm9jYXRpb24iLCJzdGF0dXNMaXN0SW5kZXgiOiI5OTg5Iiwic3RhdHVzTGlzdENyZWRlbnRpYWwiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9DcmVkZW50aWFsU3RhdHVzTGlzdCIsIl9zZCI6WyJRajNKZ014X1pBMlpuWGctNkx2c2dGNHp4YUN4eUZZNW5abDlGZHNYMFdBIl19LHsid2l0bmVzc0xpc3RDcmVkZW50aWFsIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvd2l0bmVzc2VzIiwid2l0bmVzc0luZGV4Ijo1NjM3LCJfc2QiOlsiRnNhWkNxREpJMzNsdFZEU2xvSUNaZjFRVl9JMWgxanBIcGF5RG4zSk1YSSJdfV0sIl9zZCI6WyJkSmVmMjJ4ajFDdmg5MVF2T1p0OXIzcWRpUEtVSmxoOERJNVJnMThyZTAwIiwia0lxX1M4ekpLS1JrN0xhY20tRXlkbm5ldjRvRlpHZW84WjVzTkg2UmtFayJdfQ .4D5rqhGU2LcOgdrUkcVNkNw7sUeL9SQr4HzdjW7hQR0q68glwbvYpU3AMCawv4BcwEW-MS9IJUHhcc6NwZE54g ~WyJrRDlJNEhoY2d3Qmt2bU5EcTJ5OERRIiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL0NyZWRlbnRpYWwxMjMiXQ~WyIyekt4N0pyVzVwdjdEbWFzNXl3ak93IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyJlX0QyeHpfNDhER2QtUlZIbW9IMlB3IiwgImlkIiwgImRpZDpleGFtcGxlOnVuaXZlcnNpdHkuZXhhbXBsZTpDU1NjaG9vbCJd~WyJrT1hRdVh6OWJWOXF0bjBKT1ozR3RBIiwgInR5cGUiLCAiVGVtcGxhdGVSZW5kZXJlck1ldGhvZCJd~WyJkaUZnS0FaUS1Rb05zd1RIekZnVml3IiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL3JlbmRlci1tZXRob2RzL2FsdW1uaWNyZWRlbnRpYWwuaHRtbCJd~WyJxaU9xaXV3b0haNkpJelRZZ2tmVWdRIiwgImlkIiwgImh0dHBzOi8vd3d3LmV4YW1wbGUub3JnL3BlcnNvbnMvcGF0Il0~WyJQWTdoSWxrVFlkSk55SlJDMDVTNnVnIiwgImlkIiwgImRpZDpleGFtcGxlOmMyNzZlMTJlYzIxZWJmZWIxZjcxMmViYzZmMSJd~WyJlNDkxX3lmbzkxdGFKQkFhS092V0hRIiwgInR5cGUiLCAiTXVsdGlrZXkiXQ~WyJmV3VTY2xuLXd2cWRpak1QVGxnRkVnIiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL0NyZWRlbnRpYWwtc2NoZW1hLWNyZWRlbnRpYWwiXQ~WyJoS25WZnJtSjFEeGgwTGh6ODR2bHlnIiwgInR5cGUiLCAiSnNvblNjaGVtYUNyZWRlbnRpYWwiXQ~WyJ6S1k1ek5BWUNTRTdjRmhCQkhRYVh3IiwgInR5cGUiLCAiQml0c3RyaW5nU3RhdHVzTGlzdEVudHJ5Il0~WyJUUXBueXozNXNLbzhNWjJLVVZ3YlVRIiwgInR5cGUiLCAiV2l0bmVzc0xpc3RFbnRyeSJd~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": {
    "recognizedIn": "did:example:university.example:Admin#recognitionCredential",
    "_sd": [
      "GWnruLNmIIriD29jNvy_nbiEOn4HI4XHYETibcSfvo0"
    ]
  },
  "validFrom": "2010-01-01T00:00:00Z",
  "renderMethod": {
    "renderSuite": "html",
    "template": {
      "mediaType": "text/html",
      "digestMultibase": "zQmerWC85Wg6wFl9znFCwYxApG270iEu5h6JqWAPdhyxz2dR",
      "_sd": [
        "YREHhu8ksqWUXzQYOwDzO92ND9s_xC11KRmg3an58Ps"
      ]
    },
    "_sd": [
      "PhVqc-yZLXbY33hwaDJt2uvz1lNaKsjjpUKe-fktvv0"
    ]
  },
  "credentialSubject": {
    "name": "Pat",
    "alumniOf": {
      "name": "Example University",
      "_sd": [
        "oDZoP5r33G3j5-jgX41Ny0rNvrdQG8NTaUqFJQ2Q3dk"
      ]
    },
    "confidenceMethod": {
      "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP",
      "_sd": [
        "wqkqPaBSvODrUd76yxbjSAqoWh4RQKc3BQsLBIuNZFY"
      ]
    },
    "_sd": [
      "jJhorxbsmENMMVAtZLoPnSjv3jHEuwYHaVkbdoBYHag"
    ]
  },
  "credentialSchema": {
    "_sd": [
      "Kg10PXQzpT-skMws5cp5---LNFx50rYUs9_gaSrjG-Q",
      "h__0j0xIKfliRtJ4J8aiM1wAFReBeL7fRzn6C8KvByY"
    ]
  },
  "credentialStatus": [
    {
      "statusPurpose": "revocation",
      "statusListIndex": "9989",
      "statusListCredential": "https://university.example/CredentialStatusList",
      "_sd": [
        "Qj3JgMx_ZA2ZnXg-6LvsgF4zxaCxyFY5nZl9FdsX0WA"
      ]
    },
    {
      "witnessListCredential": "https://university.example/witnesses",
      "witnessIndex": 5637,
      "_sd": [
        "FsaZCqDJI33ltVDSloICZf1QV_I1h1jpHpayDn3JMXI"
      ]
    }
  ],
  "_sd": [
    "dJef22xj1Cvh91QvOZt9r3qdiPKUJlh8DI5Rg18re00",
    "kIq_S8zJKKRk7Lacm-Eydnnev4oFZGeo8Z5sNH6RkEk"
  ]
}

Claim: id

SHA-256 Hash: dJef22xj1Cvh91QvOZt9r3qdiPKUJlh8DI5Rg18re00

Disclosure(s): WyJrRDlJNEhoY2d3Qmt2bU5EcTJ5OERRIiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL0NyZWRlbnRpYWwxMjMiXQ

Contents: [
  "kD9I4HhcgwBkvmNDq2y8DQ",
  "id",
  "https://university.example/Credential123"
]

Claim: type

SHA-256 Hash: kIq_S8zJKKRk7Lacm-Eydnnev4oFZGeo8Z5sNH6RkEk

Disclosure(s): WyIyekt4N0pyVzVwdjdEbWFzNXl3ak93IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d

Contents: [
  "2zKx7JrW5pv7Dmas5ywjOw",
  "type",
  [
    "VerifiableCredential",
    "ExampleAlumniCredential"
  ]
]

Claim: id

SHA-256 Hash: GWnruLNmIIriD29jNvy_nbiEOn4HI4XHYETibcSfvo0

Disclosure(s): WyJlX0QyeHpfNDhER2QtUlZIbW9IMlB3IiwgImlkIiwgImRpZDpleGFtcGxlOnVuaXZlcnNpdHkuZXhhbXBsZTpDU1NjaG9vbCJd

Contents: [
  "e_D2xz_48DGd-RVHmoH2Pw",
  "id",
  "did:example:university.example:CSSchool"
]

Claim: type

SHA-256 Hash: PhVqc-yZLXbY33hwaDJt2uvz1lNaKsjjpUKe-fktvv0

Disclosure(s): WyJrT1hRdVh6OWJWOXF0bjBKT1ozR3RBIiwgInR5cGUiLCAiVGVtcGxhdGVSZW5kZXJlck1ldGhvZCJd

Contents: [
  "kOXQuXz9bV9qtn0JOZ3GtA",
  "type",
  "TemplateRendererMethod"
]

Claim: id

SHA-256 Hash: YREHhu8ksqWUXzQYOwDzO92ND9s_xC11KRmg3an58Ps

Disclosure(s): WyJkaUZnS0FaUS1Rb05zd1RIekZnVml3IiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL3JlbmRlci1tZXRob2RzL2FsdW1uaWNyZWRlbnRpYWwuaHRtbCJd

Contents: [
  "diFgKAZQ-QoNswTHzFgViw",
  "id",
  "https://university.example/render-methods/alumnicredential.html"
]

Claim: id

SHA-256 Hash: jJhorxbsmENMMVAtZLoPnSjv3jHEuwYHaVkbdoBYHag

Disclosure(s): WyJxaU9xaXV3b0haNkpJelRZZ2tmVWdRIiwgImlkIiwgImh0dHBzOi8vd3d3LmV4YW1wbGUub3JnL3BlcnNvbnMvcGF0Il0

Contents: [
  "qiOqiuwoHZ6JIzTYgkfUgQ",
  "id",
  "https://www.example.org/persons/pat"
]

Claim: id

SHA-256 Hash: oDZoP5r33G3j5-jgX41Ny0rNvrdQG8NTaUqFJQ2Q3dk

Disclosure(s): WyJQWTdoSWxrVFlkSk55SlJDMDVTNnVnIiwgImlkIiwgImRpZDpleGFtcGxlOmMyNzZlMTJlYzIxZWJmZWIxZjcxMmViYzZmMSJd

Contents: [
  "PY7hIlkTYdJNyJRC05S6ug",
  "id",
  "did:example:c276e12ec21ebfeb1f712ebc6f1"
]

Claim: type

SHA-256 Hash: wqkqPaBSvODrUd76yxbjSAqoWh4RQKc3BQsLBIuNZFY

Disclosure(s): WyJlNDkxX3lmbzkxdGFKQkFhS092V0hRIiwgInR5cGUiLCAiTXVsdGlrZXkiXQ

Contents: [
  "e491_yfo91taJBAaKOvWHQ",
  "type",
  "Multikey"
]

Claim: id

SHA-256 Hash: Kg10PXQzpT-skMws5cp5---LNFx50rYUs9_gaSrjG-Q

Disclosure(s): WyJmV3VTY2xuLXd2cWRpak1QVGxnRkVnIiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL0NyZWRlbnRpYWwtc2NoZW1hLWNyZWRlbnRpYWwiXQ

Contents: [
  "fWuScln-wvqdijMPTlgFEg",
  "id",
  "https://university.example/Credential-schema-credential"
]

Claim: type

SHA-256 Hash: h__0j0xIKfliRtJ4J8aiM1wAFReBeL7fRzn6C8KvByY

Disclosure(s): WyJoS25WZnJtSjFEeGgwTGh6ODR2bHlnIiwgInR5cGUiLCAiSnNvblNjaGVtYUNyZWRlbnRpYWwiXQ

Contents: [
  "hKnVfrmJ1Dxh0Lhz84vlyg",
  "type",
  "JsonSchemaCredential"
]

Claim: type

SHA-256 Hash: Qj3JgMx_ZA2ZnXg-6LvsgF4zxaCxyFY5nZl9FdsX0WA

Disclosure(s): WyJ6S1k1ek5BWUNTRTdjRmhCQkhRYVh3IiwgInR5cGUiLCAiQml0c3RyaW5nU3RhdHVzTGlzdEVudHJ5Il0

Contents: [
  "zKY5zNAYCSE7cFhBBHQaXw",
  "type",
  "BitstringStatusListEntry"
]

Claim: type

SHA-256 Hash: FsaZCqDJI33ltVDSloICZf1QV_I1h1jpHpayDn3JMXI

Disclosure(s): WyJUUXBueXozNXNLbzhNWjJLVVZ3YlVRIiwgInR5cGUiLCAiV2l0bmVzc0xpc3RFbnRyeSJd

Contents: [
  "TQpnyz35sKo8MZ2KUVwbUQ",
  "type",
  "WitnessListEntry"
]

Issue 34: Lifecycle details from version 1.0?

Version 1.0 of the overview included an appendix for a lifecycle details, taken over, originally, from the UCR document. I think the section (and the specification on VCALM) may have made it obsolete in its current form (if kept, it should be reformulated in VCALM form...).

@jandrieu ?

(At the moment, the text is in the source but commented out.)

C. Issue summary

D. References

D.1 Informative references

[cbor-ld]
CBOR-LD 1.0. Manu Sporny; Dave Longley; Wesley Smith. W3C. 19 August 2026. W3C Working Draft. URL: https://www.w3.org/TR/cbor-ld-10/
[cfrg-bbs-signature]
The BBS Signature Scheme. Tobias Looker; Vasilis Kalos; Andrew Whitehead; Mike Lodder. IETF. I-D. URL: https://www.ietf.org/archive/id/draft-irtf-cfrg-bbs-signatures-05.html
[cid]
Controlled Identifiers v1.0. Michael Jones; Manu Sporny. W3C. 15 May 2025. W3C Recommendation. URL: https://www.w3.org/TR/cid-1.0/
[did-core]
Decentralized Identifiers (DIDs) v1.0. Manu Sporny; Amy Guy; Markus Sabadello; Drummond Reed. W3C. 19 July 2022. W3C Recommendation. URL: https://www.w3.org/TR/did-core/
[etsi-trust]
Electronic Signatures and Trust Infrastructures (ESI); Trusted Lists, ETSI TS 119 612. ETSI. URL: https://www.etsi.org/deliver/etsi_ts/119600_119699/119612/02.04.01_60/ts_119612v020401p.pdf
[FALCON]
Fast-Fourier Lattice-based Compact Signatures over NTRU. URL: https://falcon-sign.info/
[fips-186-5]
FIPS PUB 186-5: Digital Signature Standard (DSS). U.S. Department of Commerce/National Institute of Standards and Technology. 3 February 2023. National Standard. URL: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
[fips-204]
Module-Lattice-Based Digital Signature Standard. Federal Information Processing Standards. August 2024. URL: https://csrc.nist.gov/pubs/fips/204/final
[fips-205]
Stateless Hash-Based Digital Signature Standard. Federal Information Processing Standards. August 2024. URL: https://csrc.nist.gov/pubs/fips/205/final
[json-ld11]
JSON-LD 1.1. Gregg Kellogg; Pierre-Antoine Champin; Dave Longley. W3C. 16 July 2020. W3C Recommendation. URL: https://www.w3.org/TR/json-ld11/
[json-schema]
JSON Schema: A Media Type for Describing JSON Documents. Austin Wright; Henry Andrews; Ben Hutton; Greg Dennis. Internet Engineering Task Force (IETF). 10 June 2022. Internet-Draft. URL: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema
[rdf-canon]
RDF Dataset Canonicalization. Gregg Kellogg; Dave Longley; Dan Yamamoto. W3C. 21 May 2024. W3C Recommendation. URL: https://www.w3.org/TR/rdf-canon/
[rdf11-concepts]
RDF 1.1 Concepts and Abstract Syntax. Richard Cyganiak; David Wood; Markus Lanthaler. W3C. 25 February 2014. W3C Recommendation. URL: https://www.w3.org/TR/rdf11-concepts/
[rfc1952]
GZIP file format specification version 4.3. P. Deutsch. IETF. May 1996. Informational. URL: https://www.rfc-editor.org/info/rfc1952/
[rfc5280]
Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile. D. Cooper; S. Santesson; S. Farrell; S. Boeyen; R. Housley; W. Polk. IETF. May 2008. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc5280/
[rfc7515]
JSON Web Signature (JWS). M. Jones; J. Bradley; N. Sakimura. IETF. May 2015. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc7515/
[rfc7517]
JSON Web Key (JWK). M. Jones. IETF. May 2015. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc7517/
[rfc7519]
JSON Web Token (JWT). M. Jones; J. Bradley; N. Sakimura. IETF. May 2015. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc7519/
[rfc8032]
Edwards-Curve Digital Signature Algorithm (EdDSA). S. Josefsson; I. Liusvaara. IETF. January 2017. Informational. URL: https://www.rfc-editor.org/info/rfc8032/
[rfc8785]
JSON Canonicalization Scheme (JCS). A. Rundgren; B. Jordan; S. Erdtman. IETF. June 2020. Informational. URL: https://www.rfc-editor.org/info/rfc8785/
[rfc8949]
Concise Binary Object Representation (CBOR). C. Bormann; P. Hoffman. IETF. December 2020. Internet Standard. URL: https://www.rfc-editor.org/info/rfc8949/
[rfc9052]
CBOR Object Signing and Encryption (COSE): Structures and Process. J. Schaad. IETF. August 2022. Internet Standard. URL: https://www.rfc-editor.org/info/rfc9052/
[rfc9338]
CBOR Object Signing and Encryption (COSE): Countersignatures. J. Schaad. IETF. December 2022. Internet Standard. URL: https://www.rfc-editor.org/info/rfc9338/
[rfc9563]
SM2 Digital Signature Algorithm for DNSSEC. C. Zhang; Y. Liu; F. Leng; Q. Zhao; Z. He. IETF. December 2024. Informational. URL: https://www.rfc-editor.org/info/rfc9563/
[rfc9901]
Selective Disclosure for JSON Web Tokens. D. Fett; K. Yasuda; B. Campbell. IETF. November 2025. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc9901/
[SQIsign]
SQI Sign. URL: https://sqisign.org/
[URL]
URL Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://url.spec.whatwg.org/
[vc-barcodes]
Verifiable Credential Barcodes v1.0. Wesley Smith; Elaine Wooton; Manu Sporny. W3C. 22 August 2026. W3C Working Draft. URL: https://www.w3.org/TR/vc-barcodes-1.0/
[vc-bitstring-status-list]
Bitstring Status List v1.0. Manu Sporny; Dave Longley; Mahmoud Alkhraishi; Michael Prorock. W3C. 15 May 2025. W3C Recommendation. URL: https://www.w3.org/TR/vc-bitstring-status-list/
[vc-confidence-method]
Verifiable Credential Confidence Methods v1.0. Joe Andrieu; Denken Chen. W3C. 17 August 2026. W3C Working Draft. URL: https://www.w3.org/TR/vc-confidence-method/
[vc-data-integrity]
Verifiable Credential Data Integrity 1.0. Ivan Herman; Manu Sporny; Ted Thibodeau Jr; Dave Longley; Greg Bernstein. W3C. 15 May 2025. W3C Recommendation. URL: https://www.w3.org/TR/vc-data-integrity/
[vc-data-model]
Verifiable Credentials Data Model v2.0. Ivan Herman; Michael Jones; Manu Sporny; Ted Thibodeau Jr; Gabe Cohen. W3C. 15 May 2025. W3C Recommendation. URL: https://www.w3.org/TR/vc-data-model-2.0/
[vc-di-bbs]
Data Integrity BBS Cryptosuites v1.0. Greg Bernstein; Manu Sporny. W3C. 7 April 2026. CRD. URL: https://www.w3.org/TR/vc-di-bbs/
[vc-di-ecdsa]
Data Integrity ECDSA Cryptosuites v1.0. Manu Sporny; Dave Longley; Greg Bernstein. W3C. 15 May 2025. W3C Recommendation. URL: https://www.w3.org/TR/vc-di-ecdsa/
[vc-di-eddsa]
Data Integrity EdDSA Cryptosuites v1.0. Manu Sporny; Ted Thibodeau Jr; Greg Bernstein. W3C. 15 May 2025. W3C Recommendation. URL: https://www.w3.org/TR/vc-di-eddsa/
[vc-di-quantum-resistant]
Quantum-Resistant Cryptosuites v1.0. Manu Sporny; Greg Bernstein. W3C. 16 June 2026. FPWD. URL: https://www.w3.org/TR/vc-di-quantum-resistant-1.0/
[vc-forgery-defense]
Verifiable Credential Forgery Defense v1.0. Wesley Smith; Elaine Wooton. W3C. 24 August 2026. W3C Working Draft. URL: https://www.w3.org/TR/vc-forgery-defense-1.0/
[vc-jose-cose]
Securing Verifiable Credentials using JOSE and COSE. Michael Jones; Gabe Cohen; Michael Prorock. W3C. 15 May 2025. W3C Recommendation. URL: https://www.w3.org/TR/vc-jose-cose/
[vc-json-schema]
Verifiable Credentials JSON Schema Specification. Gabe Cohen; Michael Prorock; Mahmoud Alkhraishi. W3C. 4 February 2025. CRD. URL: https://www.w3.org/TR/vc-json-schema/
[vc-recognized-entities]
Recognized Entities v1.0. Manu Sporny. W3C. 22 August 2026. W3C Working Draft. URL: https://www.w3.org/TR/vc-recognized-entities-1.0/
[vc-render-method]
Verifiable Credential Rendering Methods v1.0. Dmitri Zagidulin; Manu Sporny; Patrick St-Louis; Isaac Koh. W3C. 22 August 2026. W3C Working Draft. URL: https://www.w3.org/TR/vc-render-method/
[vcalm]
VCALM v1.0. Patrick St-Louis; Kayode Ezike; Manu Sporny; Ted Thibodeau Jr. W3C. 21 August 2026. W3C Working Draft. URL: https://www.w3.org/TR/vcalm-1.0/