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 388/424 91%

Tests failed 36/424 9%

Failures 36

Tests skipped 0

Total tests 424

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 bovine: P-256
"proof" field MUST exist and MUST be either a single object or an unordered set of objects.
if "proof.id" field exists, it MUST be a valid URL.
"proof.type" field MUST exist and be a string.
"proof.type" field MUST be "DataIntegrityProof" and the associated document MUST include expected contexts.
{
                      "name": "AssertionError",
                      "message": "expected false to equal true",
                      "stack": "AssertionError: expected false to equal true\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/node_modules/data-integrity-test-suite-assertion/index.js:147:38)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
"proof.cryptosuite" field MUST exist and be a string.
if "proof.created" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.
if "proof.expires" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.
"proof.verificationMethod" field MUST exist and be a valid URL.
"proof.proofPurpose" field MUST exist and be a string.
"proof.proofValue" field MUST exist and be a string.
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.

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 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.
{
                      "name": "AssertionError",
                      "message": "Expected at least one proof to have \"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".: expected [ 'ecdsa-2019' ] to contain one of [ 'ecdsa-rdfc-2019', 'ecdsa-jcs-2019' ]",
                      "stack": "AssertionError: Expected at least one proof to have \"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".: expected [ 'ecdsa-2019' ] to contain one of [ 'ecdsa-rdfc-2019', 'ecdsa-jcs-2019' ]\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:104:31)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
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.
{
                      "name": "AssertionError",
                      "message": "Expected VC from issuer SpruceID to have an ' +\n                  '\"ecdsa-rdfc-2019\" proof: expected undefined to exist",
                      "stack": "AssertionError: Expected VC from issuer SpruceID to have an ' +\n                  '\"ecdsa-rdfc-2019\" proof: expected undefined to exist\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:119:48)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
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

Data Integrity (ecdsa-rdfc-2019 verifiers)

Verifier ⇒
Test Name
apicatalog.com: P-256, P-384 Digital Bazaar: P-256, P-384 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{ data: { …(3) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } 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/helpers.js:63: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/index.js:419: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.
If the "proof.created" field is invalid, an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } 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/helpers.js:63: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/index.js:450:7)"
                    }
If the "proof.proofValue" field is not multibase-encoded, an error MUST be raised.
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 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:95: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:95: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:95:13)"
                    }
🚫
{
                      "message": "Test skipped."
                    }
🚫
{
                      "message": "Test skipped."
                    }
Digital Bazaar: P-256
{
                      "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:95:13)"
                    }
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:95:13)"
                    }
🚫
{
                      "message": "Test skipped."
                    }
🚫
{
                      "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:95: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:95:13)"
                    }
bovine: P-256
{
                      "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:95:13)"
                    }

Data Integrity (ecdsa-sd-2023 issuers)

Issuer ⇒
Test Name
apicatalog.com: P-256 Digital Bazaar: P-256 Grotto Networking: P-256
"proof" field MUST exist and MUST be either a single object or an unordered set of objects.
if "proof.id" field exists, it MUST be a valid URL.
"proof.type" field MUST exist and be a string.
"proof.type" field MUST be "DataIntegrityProof" and the associated document MUST include expected contexts.
"proof.cryptosuite" field MUST exist and be a string.
if "proof.created" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.
if "proof.expires" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.
"proof.verificationMethod" field MUST exist and be a valid URL.
"proof.proofPurpose" field MUST exist and be a string.
"proof.proofValue" field MUST exist and be a string.
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.

ecdsa-sd-2023 (issuers) VC 1.1

Implementation ⇒
Test Name
apicatalog.com: P-256 Digital Bazaar: P-256 Grotto Networking: 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

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)"
                    }
{
                      "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)"
                    }
{
                      "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)"
                    }
{
                      "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)"
                    }
{
                      "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)

Verifier ⇒
Test Name
apicatalog.com: P-256, P-384 Digital Bazaar: P-256, P-384 Grotto Networking: 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{ data: { …(3) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } 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/helpers.js:63: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/index.js:419: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.
If the "proof.created" field is invalid, an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } 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/helpers.js:63: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/index.js:450:7)"
                    }
If the "proof.proofValue" field is not multibase-encoded, an error MUST be raised.
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-sd-2023 (verifiers 1.1)

Verifier ⇒
Test Name
apicatalog.com: P-256 Digital Bazaar: P-256 Grotto Networking: 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
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
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:115:13)"
                    }
Digital Bazaar: P-256
Grotto Networking: P-256