This is a interoperability report for implementers for the Verifiable Credentials Data Model v2.0 specification.

Conformance Testing Results

Tests passed 42/54 77%

Tests failed 12/54 23%

Failures 12

Tests skipped 28

Total tests 82

These tests were run on

Key

The results of the tests are shown below:

Verifiable Credentials Data Model v2.0

Issuer ⇒
Test Name
apicatalog.com Digital Bazaar
Conforming processors MUST produce errors when non-conforming documents are consumed.
Verifiable credentials and verifiable presentations MUST include a @context property.
Verifiable credentials and verifiable presentations: The value of the @context property MUST be an ordered set where the first item is a URL with the value https://www.w3.org/ns/credentials/v2.
@context: "Subsequent items in the array MUST express context information and be composed of any combination of URLs or objects."
if present: "The id property MUST express an identifier that others are expected to use when expressing statements about a specific thing identified by that identifier."
if present: "The id property MUST NOT have more than one value."
if present: "The value of the id property MUST be a URL which MAY be dereferenced."
The value of the id property MUST be a single URL.
Verifiable credentials and verifiable presentations MUST have a type property.
The value of the type property MUST be, or map to (through interpretation of the @context property), one or more URLs.
{
                      "name": "AssertionError",
                      "message": "Missing expected rejection.",
                      "stack": "AssertionError [ERR_ASSERTION]: Missing expected rejection.\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:237:9)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
list: "objects that MUST have a type specified."
{
                      "name": "HTTPError",
                      "message": "Request failed with status code 400 Bad Request",
                      "stack": "HTTPError: Request failed with status code 400 Bad Request\n    at fn (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/node_modules/ky/distribution/core/Ky.js:28:29)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async _handleResponse (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/node_modules/@digitalbazaar/http-client/lib/httpClient.js:101:16)\n    at async makeHttpsRequest (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/node_modules/vc-api-test-suite-implementations/lib/requests.js:46:14)\n    at async post (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:56:31)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:275:9)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
A verifiable credential MUST have a credentialSubject property.
The value of the credentialSubject property is defined as a set of objects that MUST contain one or more claims that are each related to a subject of the verifiable credential.
{
                      "name": "AssertionError",
                      "message": "Missing expected rejection.",
                      "stack": "AssertionError [ERR_ASSERTION]: Missing expected rejection.\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:300:9)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
A verifiable credential MUST have an issuer property.
{
                      "name": "AssertionError",
                      "message": "Missing expected rejection.",
                      "stack": "AssertionError [ERR_ASSERTION]: Missing expected rejection.\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:309:11)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
The value of the issuer property MUST be either a URL or an object containing an id property.
{
                      "name": "AssertionError",
                      "message": "Missing expected rejection.",
                      "stack": "AssertionError [ERR_ASSERTION]: Missing expected rejection.\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:314:9)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
If present, the value of the validFrom property MUST be an [XMLSCHEMA11-2] dateTimeStamp string value representing the date and time the credential becomes valid, which could be a date and time in the future.
{
                      "name": "AssertionError",
                      "message": "Missing expected rejection.",
                      "stack": "AssertionError [ERR_ASSERTION]: Missing expected rejection.\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:326:9)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
If present, the value of the validUntil property MUST be a string value of an [XMLSCHEMA11-2] combined date-time string representing the date and time the credential ceases to be valid, which could be a date and time in the past.
{
                      "name": "HTTPError",
                      "message": "Expired",
                      "stack": "HTTPError: Expired\n    at fn (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/node_modules/ky/distribution/core/Ky.js:28:29)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async _handleResponse (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/node_modules/@digitalbazaar/http-client/lib/httpClient.js:101:16)\n    at async makeHttpsRequest (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/node_modules/vc-api-test-suite-implementations/lib/requests.js:46:14)\n    at async post (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:56:31)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:333:9)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
{
                      "name": "AssertionError",
                      "message": "Missing expected rejection.",
                      "stack": "AssertionError [ERR_ASSERTION]: Missing expected rejection.\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:336:9)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
If present, the value of the credentialStatus property MUST include id and type
credentialStatus id property MUST be a URL which MAY be dereferenced.
The verifiableCredential property MAY be present. The value MUST be an array of one or more verifiable credentials, or of data derived from verifiable credentials in a cryptographically verifiable format.
JSON-LD-based processors MUST produce an error when a JSON-LD context redefines any term in the active context.
The value of the credentialSchema property MUST be one or more data schemas that provide verifiers with enough information to determine if the provided data conforms to the provided schema.
Each credentialSchema MUST specify its type (for example, JsonSchemaValidator2018), and an id property
{
                      "name": "AssertionError",
                      "message": "Missing expected rejection.",
                      "stack": "AssertionError [ERR_ASSERTION]: Missing expected rejection.\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:411:9)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
{
                      "name": "AssertionError",
                      "message": "Missing expected rejection.",
                      "stack": "AssertionError [ERR_ASSERTION]: Missing expected rejection.\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:411:9)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
credentialSchema id MUST be a URL identifying the schema file.
{
                      "name": "AssertionError",
                      "message": "Missing expected rejection.",
                      "stack": "AssertionError [ERR_ASSERTION]: Missing expected rejection.\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:418:11)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
The value of the termsOfUse property MUST specify one or more terms of use policies under which the creator issued the credential or presentation.
Each termsOfUse value MUST specify its type, for example, IssuerPolicy, and MAY specify its instance id.
{
                      "name": "AssertionError",
                      "message": "Missing expected rejection.",
                      "stack": "AssertionError [ERR_ASSERTION]: Missing expected rejection.\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:445:9)\n    at async Context. (file:///home/runner/work/vc-data-model-2.0-test-suite/vc-data-model-2.0-test-suite/tests/10-vcdm2.js:48:9)"
                    }
The value of the evidence property MUST be one or more evidence schemes providing enough information for a verifier to determine whether the evidence gathered by the issuer meets its confidence requirements for relying on the credential.