The purpose of this test suite is to demonstrate a path to interoperability for the ECDSA data integrity cryptosuites. The technologies explored in this test suite are experimental. This document contains the most recent interoperability report for a DataIntegrityProof using the `ecdsa-rdfc-2019`, `ecdsa-jcs-2019`, or `ecdsa-sd-2023` cryptosuites. This report is auto-generated.

Conformance Testing Results

Tests passed 635/707 89%

Tests failed 72/707 11%

Failures 72

Tests skipped 0

Total tests 707

These tests were run on

Key

The results of the tests are shown below:

Data Integrity (ecdsa-rdfc-2019 issuers)

Issuer ⇒
Test Name
apicatalog.com: P-256 apicatalog.com: P-384 Digital Bazaar: P-256 Digital Bazaar: P-384 SpruceID: P-256 SpruceID: P-384 bovine: P-256
When expressing a data integrity proof on an object, a proof property MUST be used.
If present (proof), its value MUST be either a single object, or an unordered set of objects
("proof.id") An optional identifier for the proof, which MUST be a URL.
The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.
The type property MUST contain the string DataIntegrityProof.
If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.
The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.
The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.
A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]
The reason the proof was created ("proof.proofPurpose") MUST be specified as a string that maps to a URL
The proofValue property MUST be used, as specified in 2.1 Proofs.
The contents of the value ("proof.proofValue") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.
if "proof.domain" field exists, it MUST be either a string, or an unordered set of strings.
if "proof.challenge" field exists, it MUST be a string.
if "proof.previousProof" field exists, it MUST be a string.
if "proof.nonce" field exists, it MUST be a string.
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite.
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.

ecdsa-rdfc-2019 (issuers) VC 1.1

Implementation ⇒
Test Name
apicatalog.com: P-256 apicatalog.com: P-384 Digital Bazaar: P-256 Digital Bazaar: P-384 SpruceID: P-256 SpruceID: P-384 bovine: P-256
The (proof) type property MUST be DataIntegrityProof.
The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.
the signature value (proofValue) MUST be expressed according to section 7 of [RFC4754] (sometimes referred to as the IEEE P1363 format) and encoded according to the specific cryptosuite proof generation algorithm.
The "proof" MUST verify with a conformant verifier.
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:145:19)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:145:19)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:145:19)"
                    }
The "proof.proofPurpose" field MUST match the verification relationship expressed by the verification method controller.
Dereferencing "verificationMethod" MUST result in an object containing a type property with "Multikey" value.
The "publicKeyMultibase" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.

ecdsa-rdfc-2019 (issuers) VC 2.0

Implementation ⇒
Test Name
Digital Bazaar: P-256 Digital Bazaar: P-384 SpruceID: P-256 SpruceID: P-384
The (proof) type property MUST be DataIntegrityProof.
The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.
the signature value (proofValue) MUST be expressed according to section 7 of [RFC4754] (sometimes referred to as the IEEE P1363 format) and encoded according to the specific cryptosuite proof generation algorithm.
The "proof" MUST verify with a conformant verifier.
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:145:19)"
                    }
The "proof.proofPurpose" field MUST match the verification relationship expressed by the verification method controller.
Dereferencing "verificationMethod" MUST result in an object containing a type property with "Multikey" value.
The "publicKeyMultibase" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.

Data Integrity (ecdsa-rdfc-2019 verifiers) VC 1.1

Verifier ⇒
Test Name
apicatalog.com: P-256 Digital Bazaar: P-256 SpruceID: P-256 bovine: P-256
If the "proof" field is missing, an error MUST be raised.
If the "proof" field is invalid, an error MUST be raised.
If the "proof.type" field is missing, an error MUST be raised.
If the "proof.type" field is not the string "DataIntegrityProof", an error MUST be raised.
If the "proof.verificationMethod" field is missing, an error MUST be raised.
If the "proof.verificationMethod" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" field is missing, an error MUST be raised.
If the "proof.proofPurpose" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" value does not match "options.expectedProofPurpose", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:33 GMT', etag: 'W/\"557-xbX+PmnPIjRGZZjlkJuIVpr0G5E\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:33 GMT', etag: 'W/\"557-xbX+PmnPIjRGZZjlkJuIVpr0G5E\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:78:7)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '0', 'content-type': 'text/html; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:35 GMT', server: 'nginx/1.18.0 (Ubuntu)' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '0', 'content-type': 'text/html; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:35 GMT', server: 'nginx/1.18.0 (Ubuntu)' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:78:7)"
                    }
If the "proof.proofValue" field is missing, an error MUST be raised.
If the "proof.proofValue" field is invalid, an error MUST be raised.
The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:33 GMT', etag: 'W/\"54e-CRctsgDGJsCoU2Med8zE6EHraDo\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:33 GMT', etag: 'W/\"54e-CRctsgDGJsCoU2Med8zE6EHraDo\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:109:9)"
                    }
(created) Time values that are incorrectly serialized without an offset MUST be interpreted as UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:33 GMT', etag: 'W/\"556-852pOqfUAAhZEHAYJ22Q3ah/cE4\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:33 GMT', etag: 'W/\"556-852pOqfUAAhZEHAYJ22Q3ah/cE4\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:117:9)"
                    }
(expires) Time values that are incorrectly serialized without an offset MUST be interpreted as UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'private', 'content-encoding': 'gzip', 'content-type': 'application/json', date: 'Sun, 21 Jul 2024 05:06:27 GMT', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'Accept-Encoding', 'x-cloud-trace-context': 'ed2a4522c5a822d7071cbb91511ae9ae' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'private', 'content-encoding': 'gzip', 'content-type': 'application/json', date: 'Sun, 21 Jul 2024 05:06:27 GMT', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'Accept-Encoding', 'x-cloud-trace-context': 'ed2a4522c5a822d7071cbb91511ae9ae' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:122:9)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:33 GMT', etag: 'W/\"576-Fg0ntbP2IY7ilmcw98C0cklJUBc\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:33 GMT', etag: 'W/\"576-Fg0ntbP2IY7ilmcw98C0cklJUBc\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:122:9)"
                    }
If the "proof.proofValue" field is not multibase-encoded, an error MUST be raised.
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.
If the "options.domain" is set and it does not match "proof.domain", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '0', 'content-type': 'text/html; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:36 GMT', server: 'nginx/1.18.0 (Ubuntu)' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '0', 'content-type': 'text/html; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:36 GMT', server: 'nginx/1.18.0 (Ubuntu)' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:149:9)"
                    }
If the "options.challenge" is set and it does not match "proof.challenge", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '0', 'content-type': 'text/html; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:36 GMT', server: 'nginx/1.18.0 (Ubuntu)' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '0', 'content-type': 'text/html; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:36 GMT', server: 'nginx/1.18.0 (Ubuntu)' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:158:9)"
                    }

Data Integrity (ecdsa-rdfc-2019 verifiers) VC 2.0

Verifier ⇒
Test Name
Digital Bazaar: P-256 SpruceID: P-256
If the "proof" field is missing, an error MUST be raised.
If the "proof" field is invalid, an error MUST be raised.
If the "proof.type" field is missing, an error MUST be raised.
If the "proof.type" field is not the string "DataIntegrityProof", an error MUST be raised.
If the "proof.verificationMethod" field is missing, an error MUST be raised.
If the "proof.verificationMethod" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" field is missing, an error MUST be raised.
If the "proof.proofPurpose" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" value does not match "options.expectedProofPurpose", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:36 GMT', etag: 'W/\"527-T9KEi6Wo0uLuvnIbZAXq1Ud85q4\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:36 GMT', etag: 'W/\"527-T9KEi6Wo0uLuvnIbZAXq1Ud85q4\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:78:7)"
                    }
If the "proof.proofValue" field is missing, an error MUST be raised.
If the "proof.proofValue" field is invalid, an error MUST be raised.
The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:36 GMT', etag: 'W/\"51e-elD9GUt8zCSO3cE4ayD9g27I3J0\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:36 GMT', etag: 'W/\"51e-elD9GUt8zCSO3cE4ayD9g27I3J0\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:109:9)"
                    }
(created) Time values that are incorrectly serialized without an offset MUST be interpreted as UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:36 GMT', etag: 'W/\"526-e/T4zT/yF2jzgEgKfvO58/FGb2k\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:36 GMT', etag: 'W/\"526-e/T4zT/yF2jzgEgKfvO58/FGb2k\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:117:9)"
                    }
(expires) Time values that are incorrectly serialized without an offset MUST be interpreted as UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:37 GMT', etag: 'W/\"546-nC8xlwtuLtJDamhuFRytJm6ORYc\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:37 GMT', etag: 'W/\"546-nC8xlwtuLtJDamhuFRytJm6ORYc\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:122:9)"
                    }
If the "proof.proofValue" field is not multibase-encoded, an error MUST be raised.
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.
If the "options.domain" is set and it does not match "proof.domain", an error MUST be raised.
If the "options.challenge" is set and it does not match "proof.challenge", an error MUST be raised.

ecdsa-rdfc-2019 (interop)

Verifier ⇒
Issuer
apicatalog.com: P-256, P-384 Digital Bazaar: P-256, P-384 SpruceID: P-256, P-384 bovine: P-256
apicatalog.com: P-256
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js:100:13)"
                    }
apicatalog.com: P-384
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js:100:13)"
                    }
🚫
{
                      "message": "Test skipped."
                    }
Digital Bazaar: P-256
Digital Bazaar: P-384
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js:100:13)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js:100:13)"
                    }
🚫
{
                      "message": "Test skipped."
                    }
SpruceID: P-256
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js:100:13)"
                    }
SpruceID: P-384
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js:100:13)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js:100:13)"
                    }
🚫
{
                      "message": "Test skipped."
                    }
bovine: P-256

Data Integrity (ecdsa-sd-2023 issuers)

Issuer ⇒
Test Name
apicatalog.com: P-256 Digital Bazaar: P-256 Grotto Networking: P-256 SpruceID: P-256 SpruceID: P-384
When expressing a data integrity proof on an object, a proof property MUST be used.
If present (proof), its value MUST be either a single object, or an unordered set of objects
("proof.id") An optional identifier for the proof, which MUST be a URL.
The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:70:26)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:70:26)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:70:26)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:70:26)"
                    }
The type property MUST contain the string DataIntegrityProof.
If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.
The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.
The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.
A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async shouldMapToUrl (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:137:20)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:169:9)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async shouldMapToUrl (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:137:20)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:169:9)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async shouldMapToUrl (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:137:20)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:169:9)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async shouldMapToUrl (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:137:20)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:169:9)"
                    }
The reason the proof was created ("proof.proofPurpose") MUST be specified as a string that maps to a URL
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async shouldMapToUrl (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:137:20)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:185:9)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async shouldMapToUrl (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:137:20)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:185:9)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async shouldMapToUrl (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:137:20)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:185:9)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async shouldMapToUrl (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:137:20)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:185:9)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async shouldMapToUrl (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:137:20)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:185:9)"
                    }
The proofValue property MUST be used, as specified in 2.1 Proofs.
The contents of the value ("proof.proofValue") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.
if "proof.domain" field exists, it MUST be either a string, or an unordered set of strings.
if "proof.challenge" field exists, it MUST be a string.
if "proof.previousProof" field exists, it MUST be a string.
if "proof.nonce" field exists, it MUST be a string.
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite.
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:293:28)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:293:28)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:293:28)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:293:28)"
                    }
{
                      "name": "jsonld.InvalidUrl",
                      "message": "Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.",
                      "stack": "jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\n    at ContextResolver._fetchContext (node_modules/jsonld/lib/ContextResolver.js:173:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ContextResolver._resolveRemoteContext (node_modules/jsonld/lib/ContextResolver.js:117:34)\n    at async ContextResolver.resolve (node_modules/jsonld/lib/ContextResolver.js:50:22)\n    at async api.process (node_modules/jsonld/lib/context.js:87:20)\n    at async api.expand (node_modules/jsonld/lib/expand.js:214:17)\n    at async jsonld.expand (node_modules/jsonld/lib/jsonld.js:322:18)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:293:28)"
                    }

ecdsa-sd-2023 (issuers) VC 1.1

Implementation ⇒
Test Name
apicatalog.com: P-256 Digital Bazaar: P-256 Grotto Networking: P-256 SpruceID: P-256
The field "cryptosuite" MUST be "ecdsa-sd-2023".
the signature value (proofValue) MUST be expressed according to section 7 of [RFC4754] (sometimes referred to as the IEEE P1363 format) and encoded according to the specific cryptosuite proof generation algorithm.
The field "proofValue" MUST start with "u".
The "proof" MUST verify when using a conformant verifier.
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js:150:19)"
                    }
The "proof.proofPurpose" field MUST match the verification relationship expressed by the verification method controller.
Dereferencing "verificationMethod" MUST result in an object containing a type property with "Multikey" value.
The "publicKeyMultibase" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.

ecdsa-sd-2023 (issuers) VC 2.0

Implementation ⇒
Test Name
Digital Bazaar: P-256 SpruceID: P-256
The field "cryptosuite" MUST be "ecdsa-sd-2023".
the signature value (proofValue) MUST be expressed according to section 7 of [RFC4754] (sometimes referred to as the IEEE P1363 format) and encoded according to the specific cryptosuite proof generation algorithm.
The field "proofValue" MUST start with "u".
The "proof" MUST verify when using a conformant verifier.
The "proof.proofPurpose" field MUST match the verification relationship expressed by the verification method controller.
Dereferencing "verificationMethod" MUST result in an object containing a type property with "Multikey" value.
The "publicKeyMultibase" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.

ecdsa-rdfc-2019 (verifiers 1.1)

Verifier ⇒
Test Name
apicatalog.com: P-256 apicatalog.com: P-384 Digital Bazaar: P-256 Digital Bazaar: P-384 SpruceID: P-256 SpruceID: P-384 bovine: P-256 bovine: P-384
MUST verify a valid VC with an ecdsa-rdfc-2019 proof.
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:160:7)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:160:7)"
                    }
{
                      "name": "AssertionError",
                      "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist",
                      "stack": "AssertionError: Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist\n    at expectImplementationTestVector (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:148:7)\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:158:7)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
If the "cryptosuite" field is not the string "ecdsa-rdfc-2019" or the string "ecdsa-jcs-2019", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist",
                      "stack": "AssertionError: Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist\n    at expectImplementationTestVector (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:148:7)\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:175:5)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }

ecdsa-rdfc-2019 (verifiers 2.0)

Verifier ⇒
Test Name
apicatalog.com: P-256 apicatalog.com: P-384 Digital Bazaar: P-256 Digital Bazaar: P-384 SpruceID: P-256 SpruceID: P-384 bovine: P-256 bovine: P-384
MUST verify a valid VC with an ecdsa-rdfc-2019 proof.
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:160:7)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:160:7)"
                    }
{
                      "name": "AssertionError",
                      "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist",
                      "stack": "AssertionError: Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist\n    at expectImplementationTestVector (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:148:7)\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:158:7)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
If the "cryptosuite" field is not the string "ecdsa-rdfc-2019" or the string "ecdsa-jcs-2019", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist",
                      "stack": "AssertionError: Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist\n    at expectImplementationTestVector (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:148:7)\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:175:5)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }

Data Integrity (ecdsa-sd-2023 verifiers) VC 1.1

Verifier ⇒
Test Name
Digital Bazaar: P-256 SpruceID: P-256
If the "proof" field is missing, an error MUST be raised.
If the "proof" field is invalid, an error MUST be raised.
If the "proof.type" field is missing, an error MUST be raised.
If the "proof.type" field is not the string "DataIntegrityProof", an error MUST be raised.
If the "proof.verificationMethod" field is missing, an error MUST be raised.
If the "proof.verificationMethod" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" field is missing, an error MUST be raised.
If the "proof.proofPurpose" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" value does not match "options.expectedProofPurpose", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:50 GMT', etag: 'W/\"1c48-RLxqhu1mGlv9s00HntYpbgg6N/M\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:50 GMT', etag: 'W/\"1c48-RLxqhu1mGlv9s00HntYpbgg6N/M\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:78:7)"
                    }
If the "proof.proofValue" field is missing, an error MUST be raised.
If the "proof.proofValue" field is invalid, an error MUST be raised.
The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:50 GMT', etag: 'W/\"1c45-yx2T+KrzbEwpmz3EdMZCcwxPAcw\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:50 GMT', etag: 'W/\"1c45-yx2T+KrzbEwpmz3EdMZCcwxPAcw\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:109:9)"
                    }
(created) Time values that are incorrectly serialized without an offset MUST be interpreted as UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:50 GMT', etag: 'W/\"1c47-OYPtgwQc9/AfW98X+K8oBwW9uzI\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:50 GMT', etag: 'W/\"1c47-OYPtgwQc9/AfW98X+K8oBwW9uzI\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:117:9)"
                    }
(expires) Time values that are incorrectly serialized without an offset MUST be interpreted as UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:50 GMT', etag: 'W/\"1c6e-uVWC8/v4VixyO4rgsAoU8cchGs8\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:50 GMT', etag: 'W/\"1c6e-uVWC8/v4VixyO4rgsAoU8cchGs8\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:122:9)"
                    }
If the "proof.proofValue" field is not multibase-encoded, an error MUST be raised.
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.
If the "options.domain" is set and it does not match "proof.domain", an error MUST be raised.
If the "options.challenge" is set and it does not match "proof.challenge", an error MUST be raised.

Data Integrity (ecdsa-sd-2023 verifiers) VC 2.0

Verifier ⇒
Test Name
apicatalog.com: P-256 Digital Bazaar: P-256 Grotto Networking: P-256 SpruceID: P-256
If the "proof" field is missing, an error MUST be raised.
If the "proof" field is invalid, an error MUST be raised.
If the "proof.type" field is missing, an error MUST be raised.
If the "proof.type" field is not the string "DataIntegrityProof", an error MUST be raised.
If the "proof.verificationMethod" field is missing, an error MUST be raised.
If the "proof.verificationMethod" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" field is missing, an error MUST be raised.
If the "proof.proofPurpose" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" value does not match "options.expectedProofPurpose", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:54 GMT', etag: 'W/\"1bfa-CVcq+zGBV8qh0tNj4bZoiOZ72TI\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:54 GMT', etag: 'W/\"1bfa-CVcq+zGBV8qh0tNj4bZoiOZ72TI\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:78:7)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '27', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:56 GMT', etag: 'W/\"1b-rRfMrqLEzOSc4mDcQ32caLaauZM\"', server: 'nginx/1.18.0 (Ubuntu)', 'x-powered-by': 'Express' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '27', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:56 GMT', etag: 'W/\"1b-rRfMrqLEzOSc4mDcQ32caLaauZM\"', server: 'nginx/1.18.0 (Ubuntu)', 'x-powered-by': 'Express' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:78:7)"
                    }
If the "proof.proofValue" field is missing, an error MUST be raised.
If the "proof.proofValue" field is invalid, an error MUST be raised.
The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:54 GMT', etag: 'W/\"1bed-g0FzUlnCInqD/YPExlyFRDmae9U\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:54 GMT', etag: 'W/\"1bed-g0FzUlnCInqD/YPExlyFRDmae9U\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:109:9)"
                    }
(created) Time values that are incorrectly serialized without an offset MUST be interpreted as UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:55 GMT', etag: 'W/\"1bf5-g1uc7qkvkiOSSFb9jv1n+AXWXs0\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:55 GMT', etag: 'W/\"1bf5-g1uc7qkvkiOSSFb9jv1n+AXWXs0\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:117:9)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '27', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:57 GMT', etag: 'W/\"1b-rRfMrqLEzOSc4mDcQ32caLaauZM\"', server: 'nginx/1.18.0 (Ubuntu)', 'x-powered-by': 'Express' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '27', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:57 GMT', etag: 'W/\"1b-rRfMrqLEzOSc4mDcQ32caLaauZM\"', server: 'nginx/1.18.0 (Ubuntu)', 'x-powered-by': 'Express' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:117:9)"
                    }
(expires) Time values that are incorrectly serialized without an offset MUST be interpreted as UTC.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:55 GMT', etag: 'W/\"1c1a-DwncN81Zm/iU2vXjZIoXJ6jqR0k\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-encoding': 'gzip', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:55 GMT', etag: 'W/\"1c1a-DwncN81Zm/iU2vXjZIoXJ6jqR0k\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', 'transfer-encoding': 'chunked', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:122:9)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '27', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:58 GMT', etag: 'W/\"1b-rRfMrqLEzOSc4mDcQ32caLaauZM\"', server: 'nginx/1.18.0 (Ubuntu)', 'x-powered-by': 'Express' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '27', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:58 GMT', etag: 'W/\"1b-rRfMrqLEzOSc4mDcQ32caLaauZM\"', server: 'nginx/1.18.0 (Ubuntu)', 'x-powered-by': 'Express' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:122:9)"
                    }
If the "proof.proofValue" field is not multibase-encoded, an error MUST be raised.
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.
If the "options.domain" is set and it does not match "proof.domain", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '27', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:58 GMT', etag: 'W/\"1b-rRfMrqLEzOSc4mDcQ32caLaauZM\"', server: 'nginx/1.18.0 (Ubuntu)', 'x-powered-by': 'Express' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '27', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:58 GMT', etag: 'W/\"1b-rRfMrqLEzOSc4mDcQ32caLaauZM\"', server: 'nginx/1.18.0 (Ubuntu)', 'x-powered-by': 'Express' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:149:9)"
                    }
If the "options.challenge" is set and it does not match "proof.challenge", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '27', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:59 GMT', etag: 'W/\"1b-rRfMrqLEzOSc4mDcQ32caLaauZM\"', server: 'nginx/1.18.0 (Ubuntu)', 'x-powered-by': 'Express' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '27', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:06:59 GMT', etag: 'W/\"1b-rRfMrqLEzOSc4mDcQ32caLaauZM\"', server: 'nginx/1.18.0 (Ubuntu)', 'x-powered-by': 'Express' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:36:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:158:9)"
                    }

ecdsa-sd-2023 (verifiers 1.1)

Verifier ⇒
Test Name
apicatalog.com: P-256 Digital Bazaar: P-256 Grotto Networking: P-256 SpruceID: P-256
MUST verify a valid VC with an ecdsa-sd-2023 proof.
MUST verify a valid VC with nested disclosed properties.
MUST verify a valid VC with disclosed properties and bnodes.
MUST verify with full array revealed properties
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js:111:11)"
                    }
MUST verify with fewer array revealed properties
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js:119:11)"
                    }
MUST verify w/o first element revealed properties
If the "proofValue" string does not start with "u", an error MUST be raised.
If the "cryptosuite" field is not the string "ecdsa-sd-2023", an error MUST be raised.
MUST fail to verify a base proof.
MUST fail to verify a modified disclosed credential.

ecdsa-sd-2023 (verifiers 2.0)

Verifier ⇒
Test Name
apicatalog.com: P-256 Digital Bazaar: P-256 Grotto Networking: P-256 SpruceID: P-256
MUST verify a valid VC with an ecdsa-sd-2023 proof.
MUST verify a valid VC with nested disclosed properties.
MUST verify a valid VC with disclosed properties and bnodes.
MUST verify with full array revealed properties
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js:111:11)"
                    }
MUST verify with fewer array revealed properties
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js:119:11)"
                    }
MUST verify w/o first element revealed properties
If the "proofValue" string does not start with "u", an error MUST be raised.
If the "cryptosuite" field is not the string "ecdsa-sd-2023", an error MUST be raised.
MUST fail to verify a base proof.
MUST fail to verify a modified disclosed credential.

ecdsa-sd-2023 (interop)

Verifier ⇒
Issuer
apicatalog.com: P-256, P-384 Digital Bazaar: P-256, P-384 Grotto Networking: P-256 SpruceID: P-256, P-384
apicatalog.com: P-256
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js:116:13)"
                    }
Digital Bazaar: P-256
Grotto Networking: P-256
SpruceID: P-256
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js:116:13)"
                    }
SpruceID: P-384
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js:116:13)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js:116:13)"
                    }
🚫
{
                      "message": "Test skipped."
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:118:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js:116:13)"
                    }