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 267/294 90%

Tests failed 29/294 10%

Failures 29

Tests skipped 0

Total tests 294

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:136:32)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
{
                      "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:136:32)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
{
                      "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:145:38)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
"proof.cryptosuite" field MUST exist and be a string.
{
                      "name": "AssertionError",
                      "message": "expected { …(5) } to have property 'cryptosuite'",
                      "stack": "AssertionError: expected { …(5) } to have property 'cryptosuite'\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:162:31)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
{
                      "name": "AssertionError",
                      "message": "expected { …(5) } to have property 'cryptosuite'",
                      "stack": "AssertionError: expected { …(5) } to have property 'cryptosuite'\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:162:31)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
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 "proof.proofValue" field MUST be a multibase-encoded base58-btc encoded value.
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)

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 field "cryptosuite" MUST be "ecdsa-rdfc-2019" or "ecdsa-jcs-2019".
🚫
{
                      "message": "Test skipped."
                    }
🚫
{
                      "message": "Test skipped."
                    }
{
                      "name": "AssertionError",
                      "message": "Expected at least one proof to have \"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".: expected false to equal true",
                      "stack": "AssertionError: Expected at least one proof to have \"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".: expected false to equal true\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:70:24)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
The "proof" MUST verify when using a conformant verifier.
🚫
{
                      "message": "Test skipped."
                    }
🚫
{
                      "message": "Test skipped."
                    }
The "proof.proofPurpose" field MUST match the verification relationship expressed by the verification method controller.
🚫
{
                      "message": "Test skipped."
                    }
🚫
{
                      "message": "Test skipped."
                    }
Dereferencing "verificationMethod" MUST result in an object containing a type property with "Multikey" value.
🚫
{
                      "message": "Test skipped."
                    }
🚫
{
                      "message": "Test skipped."
                    }
The "publicKeyMultibase" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.
🚫
{
                      "message": "Test skipped."
                    }
🚫
{
                      "message": "Test skipped."
                    }

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:52: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:406: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:52: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:437:7)"
                    }
If the "proof.proofValue" field is not a multibase-encoded base58-btc value, 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 (verifiers)

Verifier ⇒
Test Name
apicatalog.com: P-256, P-384 Digital Bazaar: P-256, P-384 SpruceID: P-256 bovine: P-256
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:81: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/20-rdfc-verify.js:62:17)"
                    }
{
                      "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:81: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/20-rdfc-verify.js:62:17)"
                    }
If the "cryptosuite" field is not the string "ecdsa-rdfc-2019" or "ecdsa-jcs-2019", 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, 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:81: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:93:11)"
                    }
{
                      "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:81: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:93:11)"
                    }
{
                      "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:81: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:93:11)"
                    }
{
                      "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:81: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:93:11)"
                    }
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:81: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:93:11)"
                    }
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:81: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:93:11)"
                    }
🚫
{
                      "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:81: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:93:11)"
                    }
{
                      "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:81: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:93:11)"
                    }
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:81: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:93:11)"
                    }

Data Integrity (ecdsa-sd-2023 issuers)

Issuer ⇒
Test Name
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 "proof.proofValue" field MUST be a multibase-encoded base58-btc encoded value.
{
                      "name": "AssertionError",
                      "message": "Expected \"proof.proofValue\" to be multibase-encoded base58-btc value.: expected false to equal true",
                      "stack": "AssertionError: Expected \"proof.proofValue\" to be multibase-encoded base58-btc value.: 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:231:17)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected \"proof.proofValue\" to be multibase-encoded base58-btc value.: expected false to equal true",
                      "stack": "AssertionError: Expected \"proof.proofValue\" to be multibase-encoded base58-btc value.: 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:231:17)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
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)

Implementation ⇒
Test Name
Digital Bazaar: P-256 Grotto Networking: P-256
The field "cryptosuite" MUST be "ecdsa-sd-2023".
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.

Data Integrity (ecdsa-sd-2023 verifiers)

Verifier ⇒
Test Name
Digital Bazaar: P-256 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:52: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:406: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:52: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:437:7)"
                    }
If the "proof.proofValue" field is not a multibase-encoded base58-btc value, 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)

Verifier ⇒
Test Name
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
MUST verify with fewer array revealed properties
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
Digital Bazaar: P-256 Grotto Networking: P-256
Digital Bazaar: P-256
Grotto Networking: P-256
{
                      "name": "AssertionError",
                      "message": "Expected issuer Grotto Networking: P-256 to issue a disclosed VC.: expected undefined to exist",
                      "stack": "AssertionError: Expected issuer Grotto Networking: P-256 to issue a disclosed VC.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js:109:18)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected issuer Grotto Networking: P-256 to issue a disclosed VC.: expected undefined to exist",
                      "stack": "AssertionError: Expected issuer Grotto Networking: P-256 to issue a disclosed VC.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js:109:18)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }