This is the most recent implementation report for the Verifiable Credentials Data Model specification.

Comments regarding this document are welcome. Please file issues directly on GitHub, or send them to public-vc-comments@w3.org (subscribe, archives).

Introduction

The purpose of this document is to demonstrate that there are at least two interoperable implementations of processors that are capable of generating output that is conformant to the Verifiable Credentials Data Model.

Testing Methodology

The testing framework for the Verifiable Credentials Data Model executes the following process for every conformance statement in the Verifiable Credentials Data Model:

  1. Take an input file template that exercises the feature and feed it to a developer provided Verifiable Credentials Data Model generator.
  2. If the input is valid, generate a Verifiable Credential that is conformant to the data model.
  3. The test suite then ensures that the generated Verifiable Credential is conformant to the feature being tested.

Conformance Testing Results

The results of the conformance testing are shown below:

Test fake-badfake-goodvc.js
Basic Documents @context MUST be one or more URIs - -
Basic Documents @context MUST be one or more URIs (negative) - -
Basic Documents @context first value MUST be https://www.w3.org/2018/credentials/v1 - -
Basic Documents @context first value MUST be https://www.w3.org/2018/credentials/v1 (negative) - -
Basic Documents @context subsequent items can be objects that express context information - -
Basic Documents `id` properties MUST be a single URI - -
Basic Documents `id` properties MUST be a single URI (negative) - -
Basic Documents `type` properties MUST be one or more URIs - -
Basic Documents `type` properties MUST be one or more URIs (negative) - -
Basic Documents `type` properties for Credential MUST be `VerifiableCredential` plus specific type - -
Basic Documents `type` properties for Credential MUST be `VerifiableCredential` plus specific type (negative) - -
Basic Documents `credentialSubject` property MUST be present - -
Basic Documents `credentialSubject` property MUST be present, may be a set of objects - -
Basic Documents `credentialSubject` property MUST be present (negative - credentialSubject missing) - -
Basic Documents `issuer` property MUST be present - -
Basic Documents `issuer` property MUST be present (negative - missing issuer) - -
Basic Documents `issuer` property MUST be a single URI - -
Basic Documents `issuer` property MUST be a single URI (negative - not URI) - -
Basic Documents `issuer` property MUST be a single URI (negative - Array) - -
Basic Documents `issuanceDate` property MUST be present - -
Basic Documents `issuanceDate` property MUST be present (negative - missing issuanceDate) - -
Basic Documents `issuanceDate` property MUST be an ISO8601 datetime - -
Basic Documents `issuanceDate` property MUST be an ISO8601 datetime (negative - ISO8601) - -
Basic Documents `issuanceDate` property MUST be an ISO8601 datetime (negative - Array) - -
Basic Documents `proof` property MUST be present - -
Basic Documents `proof` property MUST be present (negative - missing) - -
Basic Documents `proof` property MUST include specific method using the type property - -
Basic Documents `proof` property MUST include type property (negative - missing proof type) - -
Basic Documents `expirationDate` property MUST be an ISO8601 datetime - -
Basic Documents `expirationDate` property MUST be an ISO8601 datetime (negative - ISO8601) - -
Basic Documents `expirationDate` property MUST be an ISO8601 datetime (negative - Array) - -
Basic Documents `credentialStatus` property MUST include `id` and `type` - -
Basic Documents `credentialStatus` property MUST include `id` and `type` (negative - missing `id`) - -
Basic Documents `credentialStatus` property MUST include `id` and `type` (negative - missing `type`) - -
Basic Documents Presentations MUST be of type `VerifiablePresentation` - -
Basic Documents Presentations MUST include `verifiableCredential` and `proof` - -
Basic Documents Presentations MUST include `verifiableCredential` and `proof` (negative - missing `verifiableCredential`) - -
Basic Documents Presentations MUST include `verifiableCredential` and `proof` (negative - missing `proof`) - -
Advanced Documents Extensibility - Semantic Interoperability JSON-based processor MUST process the `@context` property; ensure credential `type` value exists - - -
Advanced Documents Extensibility - Semantic Interoperability JSON-based processor expected `type` values MUST be in expected order - - -
Advanced Documents Extensibility - Semantic Interoperability JSON-based processor expected order MUST be defined by human-readable extension specification - - -
Advanced Documents Extensibility - Semantic Interoperability JSON-LD-based processor MUST produce an error when a JSON-LD context redefines any term in the active context. - - -
Advanced Documents Data Schemas `credentialSchema` MUST provide one or more data schemas - -
Advanced Documents Data Schemas each object within `credentialSchema`... MUST specify a `type` property with a valid value - -
Advanced Documents Data Schemas each object within `credentialSchema`... value of `type` MUST be defined in the active context / term dictionary - - -
Advanced Documents Data Schemas each object within `credentialSchema`... MUST specify an `id` property - -
Advanced Documents Data Schemas each object within `credentialSchema`... value of `id` MUST be a URI identifying a schema file - -
Advanced Documents Refreshing `refreshService` MUST provide one or more refresh services - -
Advanced Documents Refreshing each object within `refreshService`... MUST specify a `type` property with a valid value - -
Advanced Documents Refreshing each object within `refreshService`... value of `type` MUST be defined in the active context / term dictionary - - -
Advanced Documents Refreshing each object within `refreshService`... MUST specify an `id` property - -
Advanced Documents Refreshing each object within `refreshService`... value of `id` MUST be a URL identifying a service endpoint - -
Advanced Documents Terms of Use `termsOfUse` MUST provide one or more ToU objects - -
Advanced Documents Terms of Use each object within `termsOfUse`... MUST specify a `type` property with a valid value - -
Advanced Documents Terms of Use each object within `termsOfUse`... value of `type` MUST be defined in the active context / term dictionary - - -
Advanced Documents Evidence `evidence` MUST provide one or more evidence objects - -
Advanced Documents Evidence each object within `evidence`... MUST specify a `type` property with a valid value - -
Advanced Documents Evidence each object within `evidence`... value of `type` MUST be defined in the active context / term dictionary - - -
Terms of Use (optional) MUST support prohibiting Archival - - -
Terms of Use (optional) MUST support prohibiting non-subject Presentation - - -
Terms of Use (optional) MUST support prohibiting 3rd Party Correlation - - -
Linked Data Proofs (optional) Linked Data Signature MUST verify - - -
Linked Data Proofs (optional) Linked Data Signature MUST verify (negative) - - -
Linked Data Proofs (optional) Linked Data Signature key MUST NOT be suspended, revoked, or expired - - -
Linked Data Proofs (optional) Linked Data Signature key MUST NOT be suspended, revoked, or expired (negative) - - -
Linked Data Proofs (optional) Linked Data Signature proofPurpose MUST exist and be "credentialIssuance" - - -
JWT (optional) JSON Web Token (storing Verifiable Credentials/Presentations) `vc` MUST be present in a JWT verifiable credential - - -
JWT (optional) JSON Web Token (storing Verifiable Credentials/Presentations) `vp` MUST be present in a JWT verifiable presentation - - -
JWT (optional) JSON Web Token (storing Verifiable Credentials/Presentations) MUST be encoded as standard JOSE header parameters, JWT registered claim names, or contained in the JWS signature part - - -
Zero-Knowledge Proofs (optional) A verifiable credential... MUST contain a credential definition - - -
Zero-Knowledge Proofs (optional) A verifiable credential... MUST contain a proof - - -
Zero-Knowledge Proofs (optional) A verifiable presentation... All derived verifiable credentials MUST contain a reference to the credential definition used to generate the derived proof. - - -
Zero-Knowledge Proofs (optional) A verifiable presentation... All derived proofs in verifiable credentials MUST NOT leak information that would enable the verifier to correlate the holder presenting the credential. - - -
Zero-Knowledge Proofs (optional) A verifiable presentation... MUST contain a proof enabling verification that all credentials were issued by the same holder (without PII leakage - - -
Zero-Knowledge Proofs (optional) A verifiable presentation... MUST be a valid `VerifiablePresentation` - - -
Zero-Knowledge Proofs (optional) A verifiable presentation... MUST have a `verifiableCredential` member - - -
Zero-Knowledge Proofs (optional) A verifiable presentation... the `verifiableCredential` MUST have a `proof` member - - -
Zero-Knowledge Proofs (optional) A verifiable presentation... MUST have a direct `proof` member (on the presenation) - - -