From 6d7ff960ccbf5e63548c0b2a662700c1b17e692b Mon Sep 17 00:00:00 2001 From: JSAssassin Date: Sun, 14 Apr 2024 05:32:33 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20w3c/vc-d?= =?UTF-8?q?i-ecdsa-test-suite@d96c6903a449dd265e8f5c5d4c87bd7cadb622ef=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 3140 ++++++-- index.json | 21789 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 16340 insertions(+), 8589 deletions(-) diff --git a/index.html b/index.html index a423e3e8..16151007 100644 --- a/index.html +++ b/index.html @@ -94,22 +94,22 @@

Conformance Testing Results

- Tests passed 345/378 91% + Tests passed 388/424 91%

- Tests failed 33/378 9% + Tests failed 36/424 9%

- Failures 33 + Failures 36

Tests skipped 0

- Total tests 378 + Total tests 424

- These tests were run on + These tests were run on

Key

@@ -3174,8 +3174,8 @@

Data Integrity (ecdsa-rdfc-2019 issuers)

-
-

ecdsa-rdfc-2019 (issuers)

+
+

ecdsa-rdfc-2019 (issuers) VC 1.1

+
+ + + + + + +
+
+ Implementation ⇒ +
+
+ Test Name +
+
+
+
+
+
+
+
+
+
+
+

Data Integrity (ecdsa-rdfc-2019 verifiers)

+ +
{
+                      "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:94:13)"
+                    }
+
@@ -6964,8 +7041,13 @@

ecdsa-rdfc-2019 (verifiers)

- -
+ + + + apicatalog.com: P-384 + + +
- -
{
-                      "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:117: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:161:7)"
-                    }
-
@@ -7036,14 +7111,14 @@

ecdsa-rdfc-2019 (verifiers)

{
                       "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:147:7)\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:159:7)\n    at process.processImmediate (node:internal/timers:478:21)"
+                      "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:94:13)"
                     }
- -
+ +
🚫
+ +
{
+                      "message": "Test skipped."
+                    }
+
- -
+ +
🚫
{
-                      "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:147:7)\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:159:7)\n    at process.processImmediate (node:internal/timers:478:21)"
+                      "message": "Test skipped."
                     }
@@ -7116,7 +7194,7 @@

ecdsa-rdfc-2019 (verifiers)

- If the "cryptosuite" field is not the string "ecdsa-rdfc-2019" or the string "ecdsa-jcs-2019", an error MUST be raised. + Digital Bazaar: P-256
@@ -7182,8 +7260,8 @@

ecdsa-rdfc-2019 (verifiers)

- -
+ +
+ +
{
+                      "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:94:13)"
+                    }
+
@@ -7246,6 +7331,50 @@

ecdsa-rdfc-2019 (verifiers)

+ + + + 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:94:13)"
+                    }
+
+
+
@@ -7278,8 +7407,8 @@

ecdsa-rdfc-2019 (verifiers)

- -
+ +
🚫
{
-                      "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:147:7)\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:178:5)\n    at process.processImmediate (node:internal/timers:478:21)"
+                      "message": "Test skipped."
                     }
- -
+ +
🚫
+ +
{
+                      "message": "Test skipped."
+                    }
+
+ + + + SpruceID: P-256 +
@@ -7382,95 +7519,44 @@

ecdsa-rdfc-2019 (verifiers)

{
                       "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:147:7)\n    at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:178:5)\n    at process.processImmediate (node:internal/timers:478:21)"
+                      "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:94:13)"
                     }
- - - - -
-
-
-
-
-
-
-
-
-
-

ecdsa-rdfc-2019 (interop)

- -
- - - - - - - - - - - - - + + + + + + + + + +
-
- Verifier ⇒ -
-
- Issuer -
-
apicatalog.com: P-256, P-384Digital Bazaar: P-256, P-384SpruceID: P-256bovine: P-256
apicatalog.com: P-256 +
+
+ +
+
@@ -7536,12 +7622,81 @@

ecdsa-rdfc-2019 (interop)

{
                       "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:117: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:94:13)"
+                      "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:94:13)"
                     }
bovine: P-256 +
+
+ +
+
+
+
+ +
+
@@ -7576,7 +7731,7 @@

ecdsa-rdfc-2019 (interop)

{
                       "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:117: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:94:13)"
+                      "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:94:13)"
                     }
@@ -7614,9 +7769,86 @@

ecdsa-rdfc-2019 (interop)

+
+
+
+
+
+
+
+
+
+
+
+

Data Integrity (ecdsa-sd-2023 issuers)

+ +
+ + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Issuer ⇒ +
+
+ Test Name +
+
apicatalog.com: P-256Digital Bazaar: P-256Grotto Networking: P-256
apicatalog.com: P-384"proof" field MUST exist and MUST be either a single object or an unordered set of objects.
@@ -7650,8 +7882,8 @@

ecdsa-rdfc-2019 (interop)

-
+
+
- -
{
-                      "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:117: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:94:13)"
-                    }
-
-
🚫
+
+
+
+ +
+
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-rdfc-2019 (verifiers 1.1)

+ +
+ + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - -
+
+ Verifier ⇒ +
+
+ Test Name +
+
apicatalog.com: P-256apicatalog.com: P-384Digital Bazaar: P-256Digital Bazaar: P-384SpruceID: P-256SpruceID: P-384bovine: P-256bovine: P-384
MUST verify a valid VC with an ecdsa-rdfc-2019 proof. +
- -
{
-                      "message": "Test skipped."
-                    }
-
-
🚫
+
+
{
-                      "message": "Test skipped."
+                      "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)"
                     }
Digital Bazaar: P-256
@@ -7866,48 +9616,11 @@

ecdsa-rdfc-2019 (interop)

{
                       "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:117: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:94:13)"
+                      "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)"
                     }
-
-
- -
-
Digital Bazaar: P-384
@@ -7941,8 +9654,8 @@

ecdsa-rdfc-2019 (interop)

{
                       "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:117: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:94:13)"
+                      "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)"
                     }
@@ -7979,8 +9692,8 @@

ecdsa-rdfc-2019 (interop)

-
🚫
+
+
{
-                      "message": "Test skipped."
+                      "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. +
- -
{
-                      "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:117: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:94:13)"
-                    }
-
@@ -8161,8 +9864,8 @@

ecdsa-rdfc-2019 (interop)

-
+
+
- -
{
-                      "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:117: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:94:13)"
-                    }
-
bovine: P-256 -
+
+
+ +
{
+                      "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)"
+                    }
+
@@ -8302,44 +10000,12 @@

ecdsa-rdfc-2019 (interop)

{
                       "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:117: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:94:13)"
+                      "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)"
                     }
-
-
- -
-
@@ -8353,8 +10019,8 @@

ecdsa-rdfc-2019 (interop)

-
-

Data Integrity (ecdsa-sd-2023 issuers)

+
+

ecdsa-rdfc-2019 (verifiers 2.0)

- -
+ +
+ +
{
+                      "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)"
+                    }
+
@@ -8518,11 +10196,6 @@

Data Integrity (ecdsa-sd-2023 issuers)

- - - - if "proof.id" field exists, it MUST be a valid URL. -
@@ -8555,8 +10228,8 @@

Data Integrity (ecdsa-sd-2023 issuers)

- -
+ +
+ +
{
+                      "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)"
+                    }
+
- - - - "proof.type" field MUST exist and be a string. -
@@ -8656,8 +10338,8 @@

Data Integrity (ecdsa-sd-2023 issuers)

- -
+ +
+ +
{
+                      "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. +
@@ -8720,11 +10414,6 @@

Data Integrity (ecdsa-sd-2023 issuers)

- - - - "proof.type" field MUST be "DataIntegrityProof" and the associated document MUST include expected contexts. -
@@ -8821,11 +10510,6 @@

Data Integrity (ecdsa-sd-2023 issuers)

- - - - "proof.cryptosuite" field MUST exist and be a string. -
@@ -8858,6 +10542,45 @@

Data Integrity (ecdsa-sd-2023 issuers)

+ +
+
+ + +
{
+                      "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)"
+                    }
+
+
+
@@ -8890,8 +10613,8 @@

Data Integrity (ecdsa-sd-2023 issuers)

- -
+ +
+ +
{
+                      "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-sd-2023 (issuers) VC 1.1

+ +
+ + + + + + + + - + - + - + - + - - + - + - + + +
+
+ Implementation ⇒ +
+
+ Test Name +
+
apicatalog.com: P-256Digital Bazaar: P-256Grotto Networking: P-256
if "proof.created" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.The field "cryptosuite" MUST be "ecdsa-sd-2023".
@@ -9026,7 +10833,7 @@

Data Integrity (ecdsa-sd-2023 issuers)

if "proof.expires" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.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.
@@ -9127,7 +10934,7 @@

Data Integrity (ecdsa-sd-2023 issuers)

"proof.verificationMethod" field MUST exist and be a valid URL.The field "proofValue" MUST start with "u".
@@ -9228,10 +11035,10 @@

Data Integrity (ecdsa-sd-2023 issuers)

"proof.proofPurpose" field MUST exist and be a string.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:149:19)"
+                    }
+
@@ -9329,7 +11143,7 @@

Data Integrity (ecdsa-sd-2023 issuers)

"proof.proofValue" field MUST exist and be a string.The "proof.proofPurpose" field MUST match the verification relationship expressed by the verification method controller.
@@ -9430,7 +11244,7 @@

Data Integrity (ecdsa-sd-2023 issuers)

The contents of the value ("proof.proofValue") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.Dereferencing "verificationMethod" MUST result in an object containing a type property with "Multikey" value.
@@ -9531,7 +11345,7 @@

Data Integrity (ecdsa-sd-2023 issuers)

if "proof.domain" field exists, it MUST be either a string, or an unordered set of strings.The "publicKeyMultibase" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.
@@ -9630,9 +11444,160 @@

Data Integrity (ecdsa-sd-2023 issuers)

+
+
+
+
+
+
+
+
+
+
+
+

ecdsa-sd-2023 (issuers) VC 2.0

+ +
+ + + + + + +
+
+ Implementation ⇒ +
+
+ Test Name +
+
+
+
+
+
+
+
+
+
+
+
+
+

Data Integrity (ecdsa-sd-2023 verifiers)

+ +
+ + + + + + + + - + - + - + - -
+
+ Verifier ⇒ +
+
+ Test Name +
+
apicatalog.com: P-256, P-384Digital Bazaar: P-256, P-384Grotto Networking: P-256
if "proof.challenge" field exists, it MUST be a string.If the "proof" field is missing, an error MUST be raised.
@@ -9733,7 +11698,7 @@

Data Integrity (ecdsa-sd-2023 issuers)

if "proof.previousProof" field exists, it MUST be a string.If the "proof" field is invalid, an error MUST be raised.
@@ -9834,7 +11799,7 @@

Data Integrity (ecdsa-sd-2023 issuers)

if "proof.nonce" field exists, it MUST be a string.If the "proof.type" field is missing, an error MUST be raised.
@@ -9933,86 +11898,9 @@

Data Integrity (ecdsa-sd-2023 issuers)

-
-
-
-
-
-
-
-
-
-
-
-

ecdsa-sd-2023 (issuers)

- -
- - - - - - - - - + - + - + - + - - + - + - - + - - - -
-
- Implementation ⇒ -
-
- Test Name -
-
apicatalog.com: P-256Digital Bazaar: P-256Grotto Networking: P-256
The field "cryptosuite" MUST be "ecdsa-sd-2023".If the "proof.type" field is not the string "DataIntegrityProof", an error MUST be raised.
@@ -10113,7 +12001,7 @@

ecdsa-sd-2023 (issuers)

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.If the "proof.verificationMethod" field is missing, an error MUST be raised.
@@ -10214,7 +12102,7 @@

ecdsa-sd-2023 (issuers)

The field "proofValue" MUST start with "u".If the "proof.verificationMethod" field is invalid, an error MUST be raised.
@@ -10315,10 +12203,10 @@

ecdsa-sd-2023 (issuers)

The "proof" MUST verify with a conformant verifier.If the "proof.proofPurpose" field is missing, an error MUST be raised. -
+
+
- -
{
-                      "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:117:14)\n    at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js:142:17)"
-                    }
-
@@ -10423,7 +12304,7 @@

ecdsa-sd-2023 (issuers)

The "proof.proofPurpose" field MUST match the verification relationship expressed by the verification method controller.If the "proof.proofPurpose" field is invalid, an error MUST be raised.
@@ -10524,7 +12405,7 @@

ecdsa-sd-2023 (issuers)

Dereferencing "verificationMethod" MUST result in an object containing a type property with "Multikey" value.If the "proof.proofPurpose" value does not match "options.expectedProofPurpose", an error MUST be raised.
@@ -10558,8 +12439,8 @@

ecdsa-sd-2023 (issuers)

-
+
+
+ +
{
+                      "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)"
+                    }
+
@@ -10625,7 +12513,7 @@

ecdsa-sd-2023 (issuers)

The "publicKeyMultibase" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.If the "proof.proofValue" field is missing, an error MUST be raised.
@@ -10676,134 +12564,57 @@

ecdsa-sd-2023 (issuers)

.no-space-around { margin: 0; padding: 0; - } - pre { - width: 75%; - white-space: pre-line; - word-break: break-all; - margin: 0; - padding: 0; - background: white; - } - code > span.hljs-attr { - margin-left: 1rem; - } - - -
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-

Data Integrity (ecdsa-sd-2023 verifiers)

- -
- - - - - - - - + } + pre { + width: 75%; + white-space: pre-line; + word-break: break-all; + margin: 0; + padding: 0; + background: white; + } + code > span.hljs-attr { + margin-left: 1rem; + } + + + + + - + - + - - + - + - + + +
-
- Verifier ⇒ -
-
- Test Name -
-
apicatalog.com: P-256, P-384Digital Bazaar: P-256, P-384Grotto Networking: P-256
+
+
+ +
+
If the "proof" field is missing, an error MUST be raised.If the "proof.proofValue" field is invalid, an error MUST be raised.
@@ -10904,7 +12715,7 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "proof" field is invalid, an error MUST be raised.If the "proof.created" field is invalid, an error MUST be raised.
@@ -10938,8 +12749,8 @@

Data Integrity (ecdsa-sd-2023 verifiers)

-
+
+
+ +
{
+                      "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)"
+                    }
+
@@ -11005,7 +12823,7 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "proof.type" field is missing, an error MUST be raised.If the "proof.proofValue" field is not multibase-encoded, an error MUST be raised.
@@ -11106,7 +12924,7 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "proof.type" field is not the string "DataIntegrityProof", an error MUST be raised.If the "options.domain" is set and it does not match "proof.domain", an error MUST be raised.
@@ -11207,7 +13025,7 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "proof.verificationMethod" field is missing, an error MUST be raised.If the "options.challenge" is set and it does not match "proof.challenge", an error MUST be raised.
@@ -11306,9 +13124,86 @@

Data Integrity (ecdsa-sd-2023 verifiers)

+
+
+
+
+
+
+
+
+
+
+
+

ecdsa-sd-2023 (verifiers 1.1)

+ +
+ + + + + + + + - + - + - + - + - - - + - - + - + - - + - + - + - @@ -13735,8 +15616,8 @@

ecdsa-sd-2023 (interop)

- - - diff --git a/index.json b/index.json index 98797cf4..59531c29 100644 --- a/index.json +++ b/index.json @@ -22,16 +22,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:a4a1419e-b86c-40dd-993d-3947d34b9e49", + "_testId": "urn:uuid:f2cdb0b3-f15a-4621-ba1a-65a60501ad2a", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -48,9 +48,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:410fa69e-526b-4dd6-a7f4-5db62358d676", + "_testId": "urn:uuid:d4f13b0c-09ed-47a5-971b-a06e41134e52", "_events": {}, "_eventsCount": 1, "cell": { @@ -74,9 +74,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:0b165e32-46d8-430b-8ab4-57faf7df613b", + "_testId": "urn:uuid:e6b3a1d5-5f7e-41f5-93cb-bca3388b29ad", "_events": {}, "_eventsCount": 1, "cell": { @@ -100,16 +100,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:2227019f-0722-4029-8320-c48c91fc807c", + "_testId": "urn:uuid:c6f40d11-f5c0-4261-9157-7b8e4af0d50a", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -126,9 +126,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:4e4e0251-82e7-422d-92d0-7e716cb8b9a3", + "_testId": "urn:uuid:c152fb4e-96db-4dfc-88b9-9048e3fbb6d6", "_events": {}, "_eventsCount": 1, "cell": { @@ -152,16 +152,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:6406c017-4716-4e24-816d-dd1e43ced69b", + "_testId": "urn:uuid:8db75e9a-660e-4dbc-b555-50f3640d963e", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -178,16 +178,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:72b2d93f-9b76-48b3-9a31-bd92d10919ca", + "_testId": "urn:uuid:196a5946-9805-4c49-8e17-f8c7ce41e4ec", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -204,9 +204,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:c90907ca-c345-4dc2-aaf7-ad74303ebd59", + "_testId": "urn:uuid:0bcb9d07-7242-4c75-93ad-3a2821c7d508", "_events": {}, "_eventsCount": 1, "cell": { @@ -230,9 +230,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:5fda9342-ed8b-4f31-a5d0-54cccdeb01f7", + "_testId": "urn:uuid:d1fa369e-efe2-46b6-ad1a-399120ef6d8f", "_events": {}, "_eventsCount": 1, "cell": { @@ -256,9 +256,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:b2ea9454-22bc-4218-85bb-0aa9eef98662", + "_testId": "urn:uuid:9830d671-b340-4e34-b98a-2b8a4e65edcd", "_events": {}, "_eventsCount": 1, "cell": { @@ -282,9 +282,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:d3cf25a9-182e-46f5-806f-c7f377bdd7a9", + "_testId": "urn:uuid:328a51ea-0cb5-4f64-977d-6e746532fa24", "_events": {}, "_eventsCount": 1, "cell": { @@ -308,9 +308,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:86a4b07b-df78-41d4-bbfc-f30243da84e0", + "_testId": "urn:uuid:114039f6-ff4a-4287-9fb3-a79ca97f0bd8", "_events": {}, "_eventsCount": 1, "cell": { @@ -334,9 +334,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:de641194-a74d-4ccc-b03c-160dd31e5176", + "_testId": "urn:uuid:36c0b2f9-29af-4e0d-8a13-ca356589a318", "_events": {}, "_eventsCount": 1, "cell": { @@ -360,9 +360,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:93d533f6-c1bb-4d43-97d5-f2e357ef56e4", + "_testId": "urn:uuid:3ee0cc49-05cc-430b-ad58-f89ca8c66b65", "_events": {}, "_eventsCount": 1, "cell": { @@ -386,9 +386,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:2b3ec8a0-7adc-4502-9d83-35045a028057", + "_testId": "urn:uuid:650d7a31-8672-4b46-9294-d865c9981085", "_events": {}, "_eventsCount": 1, "cell": { @@ -417,7 +417,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", "originalTitle": "\"before all\" hook", @@ -427,12 +427,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 625, + "_idleStart": 648, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 759, + "duration": 634, "_error": null } ], @@ -444,9 +444,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "vycdf_q3KYEkbw9gQKkkv", + "parent": "I9mizOczuYVbk81eVaQUn", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "_testId": "urn:uuid:63c19e67-1d94-4e3a-9e32-3535134ee1ff" + "_testId": "urn:uuid:88fd3174-589f-41bc-8c01-c3e74dbf3c75" }, { "title": "apicatalog.com: P-384", @@ -466,9 +466,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:cd8c78de-0e37-459f-a123-33f3ff99924a", + "_testId": "urn:uuid:04cf5723-9a4f-43d0-8fe6-25f579feae5c", "_events": {}, "_eventsCount": 1, "cell": { @@ -492,9 +492,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:74c0fb14-5c47-45d6-b899-951d7ec9b830", + "_testId": "urn:uuid:a28b2cd2-8ad6-4de9-9224-7584391a95ac", "_events": {}, "_eventsCount": 1, "cell": { @@ -518,16 +518,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:185f3022-e8b9-44a3-99cb-74dc9a485751", + "_testId": "urn:uuid:862bb581-74a8-492b-8493-5f9a52768604", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-384", "rowId": "\"proof.type\" field MUST exist and be a string." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -544,9 +544,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:c9f31c3d-b6a4-48a7-9602-dc3ec049b746", + "_testId": "urn:uuid:35de5fee-4725-4a0a-a4c3-ac0caa076b4d", "_events": {}, "_eventsCount": 1, "cell": { @@ -570,9 +570,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:6da18b40-74b5-4dca-893c-2916b67e451a", + "_testId": "urn:uuid:dc1da55e-3ccf-470d-91a1-7aebefbaba49", "_events": {}, "_eventsCount": 1, "cell": { @@ -596,16 +596,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:d7a1882e-a0c7-4912-bfae-8f5e4968f6f0", + "_testId": "urn:uuid:00cae539-7700-4e05-998d-f99470f991c8", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-384", "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -622,9 +622,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:fad0d9dc-1314-47db-b268-b271d59bf5ca", + "_testId": "urn:uuid:d3f4ce02-f758-47c6-924f-0102d429284e", "_events": {}, "_eventsCount": 1, "cell": { @@ -648,9 +648,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:6a692ed1-9736-42b3-8594-81c9a6e6e98c", + "_testId": "urn:uuid:f39173fb-aad4-4d4d-8fe4-c4fc4933eb4d", "_events": {}, "_eventsCount": 1, "cell": { @@ -674,9 +674,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:1ed4ccd9-6e15-4145-b507-be9f0e5d9b32", + "_testId": "urn:uuid:a4820643-739b-47cc-a33e-7981f5f1bbad", "_events": {}, "_eventsCount": 1, "cell": { @@ -700,9 +700,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:5f20ace9-8e23-43dd-9a7a-a53b989ec6d3", + "_testId": "urn:uuid:cd85c1d0-d67f-4bd6-a85b-d96edc7adf9b", "_events": {}, "_eventsCount": 1, "cell": { @@ -726,9 +726,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:d1ec73c6-e0c1-46b2-9a2f-8b28225e659e", + "_testId": "urn:uuid:d4870a28-1d64-4bec-8e6d-26d8c29cc8aa", "_events": {}, "_eventsCount": 1, "cell": { @@ -752,9 +752,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:38ed709e-8400-408c-8679-a802589dc213", + "_testId": "urn:uuid:25e19d4d-84ad-4a01-8622-66ab55e17264", "_events": {}, "_eventsCount": 1, "cell": { @@ -778,9 +778,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:6811c82d-f8a7-4442-a776-abbfd050f494", + "_testId": "urn:uuid:50b8728b-bf0e-4440-83e4-e9881699d9f5", "_events": {}, "_eventsCount": 1, "cell": { @@ -804,9 +804,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:0f74a500-2177-4704-b797-136899e1bbe2", + "_testId": "urn:uuid:6cb7f9ce-afd5-4f68-97a4-aea391c97998", "_events": {}, "_eventsCount": 1, "cell": { @@ -830,9 +830,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:396f7687-0cd0-42f5-9b2d-540d76212818", + "_testId": "urn:uuid:8b60e5d6-8d4e-46c3-bd91-b74dbffc7a84", "_events": {}, "_eventsCount": 1, "cell": { @@ -861,7 +861,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", "originalTitle": "\"before all\" hook", @@ -871,12 +871,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 1392, + "_idleStart": 1289, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 178, + "duration": 64, "_error": null } ], @@ -888,9 +888,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "vycdf_q3KYEkbw9gQKkkv", + "parent": "I9mizOczuYVbk81eVaQUn", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "_testId": "urn:uuid:e9d192e2-5eda-4bd9-b9e6-589f84563769" + "_testId": "urn:uuid:e4f7828a-94fa-4b30-834e-b72806f80b63" }, { "title": "Digital Bazaar: P-256", @@ -910,9 +910,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:5e4564d3-d955-4f81-98d1-cf2945845b83", + "_testId": "urn:uuid:6ae37383-40d2-430e-aad0-5ede5305a36e", "_events": {}, "_eventsCount": 1, "cell": { @@ -936,9 +936,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:758eaf41-6327-408f-84c6-99bd05c27472", + "_testId": "urn:uuid:aeed94d1-98f3-4faa-93ff-87394d1a41c1", "_events": {}, "_eventsCount": 1, "cell": { @@ -962,9 +962,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:18ad4856-e08e-471e-994b-3394529fc231", + "_testId": "urn:uuid:04799c86-1810-4524-9b40-0642b5bf23fa", "_events": {}, "_eventsCount": 1, "cell": { @@ -988,9 +988,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:a279d3e9-8d99-4336-9177-4c2e789899f4", + "_testId": "urn:uuid:3de589a0-c240-4716-9b92-d667858badc8", "_events": {}, "_eventsCount": 1, "cell": { @@ -1014,9 +1014,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:fad0c37d-1e39-4b07-9427-fe3e0dcd1f92", + "_testId": "urn:uuid:8403a712-d462-4763-9ff9-b502f9f8ee61", "_events": {}, "_eventsCount": 1, "cell": { @@ -1040,9 +1040,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:f28d958f-44a1-4b32-a3df-dbd8af675559", + "_testId": "urn:uuid:c6e1fe82-541a-47bc-b47d-9fc0415f23cf", "_events": {}, "_eventsCount": 1, "cell": { @@ -1066,9 +1066,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:ee8facc2-4d1a-4e30-bd48-0f5d7ecad133", + "_testId": "urn:uuid:be511218-28ea-43cb-b81d-ae349e3db108", "_events": {}, "_eventsCount": 1, "cell": { @@ -1092,9 +1092,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:592c93dc-ff85-4059-b8e3-154e19b9fe03", + "_testId": "urn:uuid:4e1070fa-8981-4cf7-b83f-2cbb846d6686", "_events": {}, "_eventsCount": 1, "cell": { @@ -1118,16 +1118,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:522e41b5-908a-4acb-b7d2-1583ab147b87", + "_testId": "urn:uuid:95aef148-32dd-493d-8e3d-3658d70ef5dd", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256", "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -1144,9 +1144,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:62974ec6-de60-4a81-9e31-d6df304e8154", + "_testId": "urn:uuid:08022fc6-e252-4d16-a77b-849e335f6d26", "_events": {}, "_eventsCount": 1, "cell": { @@ -1170,9 +1170,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:f267bc96-14d7-4955-8d23-a36041d2612e", + "_testId": "urn:uuid:579490a1-e82b-4a3c-9165-e7c7e3c61865", "_events": {}, "_eventsCount": 1, "cell": { @@ -1196,9 +1196,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:1e90d26a-94f9-4ea1-8ca4-c4723ff472ae", + "_testId": "urn:uuid:aca34bf0-108a-44f3-9ac9-9425f917e8eb", "_events": {}, "_eventsCount": 1, "cell": { @@ -1222,9 +1222,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:7e711bf8-be4c-4f47-8cc2-41bba96fc88c", + "_testId": "urn:uuid:e31f4f8d-e4db-450b-aada-df3c26a0ec51", "_events": {}, "_eventsCount": 1, "cell": { @@ -1248,9 +1248,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:63e6766e-07bc-4831-bb78-f27fb96b0625", + "_testId": "urn:uuid:1f642a08-611d-4653-83b4-359966f3b010", "_events": {}, "_eventsCount": 1, "cell": { @@ -1274,9 +1274,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:7833ab71-4691-4731-8f1b-6676dec07055", + "_testId": "urn:uuid:bc2150d3-8d34-4bc2-9d9c-9d8f75a3e5fc", "_events": {}, "_eventsCount": 1, "cell": { @@ -1305,7 +1305,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", "originalTitle": "\"before all\" hook", @@ -1315,12 +1315,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 1573, + "_idleStart": 1357, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 666, + "duration": 543, "_error": null } ], @@ -1332,9 +1332,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "vycdf_q3KYEkbw9gQKkkv", + "parent": "I9mizOczuYVbk81eVaQUn", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "_testId": "urn:uuid:fcc6a843-4dba-418e-8311-7c8656f1ae06" + "_testId": "urn:uuid:ab5faefc-5364-4912-827d-7c144deacf2f" }, { "title": "Digital Bazaar: P-384", @@ -1354,9 +1354,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:5bcef3d3-aa76-4eb1-9351-aae46f5c6a98", + "_testId": "urn:uuid:4a7e2489-0d87-467e-b769-63db6300b08d", "_events": {}, "_eventsCount": 1, "cell": { @@ -1380,9 +1380,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:00586197-8a4c-413c-b3e3-c652d5869cf2", + "_testId": "urn:uuid:4e5013f0-0e7a-4ca9-9572-821d5d085bbc", "_events": {}, "_eventsCount": 1, "cell": { @@ -1406,9 +1406,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:14a09f6f-0338-4e7d-8eaf-d53099c34e9e", + "_testId": "urn:uuid:27020711-b895-4c13-a6ef-18ebfa557589", "_events": {}, "_eventsCount": 1, "cell": { @@ -1432,9 +1432,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:9c595af4-16e4-4461-8bc6-22e57093a2fc", + "_testId": "urn:uuid:0a7eaf7e-854f-4a9e-8298-d45cd9ca80e2", "_events": {}, "_eventsCount": 1, "cell": { @@ -1458,9 +1458,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:518072e4-d1fd-4c55-ba3d-46ba1983d640", + "_testId": "urn:uuid:9606e58d-a69e-4edb-9ee9-b418d1eea245", "_events": {}, "_eventsCount": 1, "cell": { @@ -1484,9 +1484,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:403b7412-5eae-40b8-96a8-9880146a9ff9", + "_testId": "urn:uuid:69b87ec0-81f7-4b48-b4e3-11ef580b6424", "_events": {}, "_eventsCount": 1, "cell": { @@ -1510,9 +1510,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:bf0ca5f1-2bec-4e77-b7d6-e9031e4a35ec", + "_testId": "urn:uuid:4bc9e54c-ab3d-4794-8f79-110610f55dfd", "_events": {}, "_eventsCount": 1, "cell": { @@ -1536,9 +1536,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:15196608-78de-4c08-97d6-bd1d2a6e2f05", + "_testId": "urn:uuid:392b6dc6-6b3c-428b-92e7-a6ff5263bb4c", "_events": {}, "_eventsCount": 1, "cell": { @@ -1562,16 +1562,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:8a0c2820-d20e-4a3e-bbe2-faa6c9cac55a", + "_testId": "urn:uuid:5689673c-fdb3-4d2f-b891-1c378c879b62", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-384", "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -1588,9 +1588,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:f557599f-a534-41ab-b043-39d01c5f2631", + "_testId": "urn:uuid:231fe7a6-b562-4198-8829-7094abe67ef2", "_events": {}, "_eventsCount": 1, "cell": { @@ -1614,9 +1614,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:32213e97-4a8f-4589-9c3b-d498f77aa2f6", + "_testId": "urn:uuid:4d5545fa-2a35-4f68-a2f4-2a3e02075a5d", "_events": {}, "_eventsCount": 1, "cell": { @@ -1640,9 +1640,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:bc44f2b4-0435-48bb-9c1a-bbf5bbeb3a9f", + "_testId": "urn:uuid:456091a7-3849-485e-95c2-c46a23e6aac9", "_events": {}, "_eventsCount": 1, "cell": { @@ -1666,9 +1666,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:0fc13b26-c98f-4f01-9d34-f9513859638e", + "_testId": "urn:uuid:b6a1c1c3-8c0d-42a6-9e45-bdb6f489dbf7", "_events": {}, "_eventsCount": 1, "cell": { @@ -1692,9 +1692,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:8f6ad805-8f39-4277-9f52-46da2683dc26", + "_testId": "urn:uuid:6a39a31e-3e3c-452d-826f-eb8f0ece5142", "_events": {}, "_eventsCount": 1, "cell": { @@ -1718,9 +1718,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:03fa7046-4912-4d8b-9921-e4b5fcaefee8", + "_testId": "urn:uuid:97a78eaf-aac4-4d11-b240-806729dd72c1", "_events": {}, "_eventsCount": 1, "cell": { @@ -1749,7 +1749,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", "originalTitle": "\"before all\" hook", @@ -1759,12 +1759,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 2242, + "_idleStart": 1902, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 2885, + "duration": 417, "_error": null } ], @@ -1776,9 +1776,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "vycdf_q3KYEkbw9gQKkkv", + "parent": "I9mizOczuYVbk81eVaQUn", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "_testId": "urn:uuid:21b4d14b-b14d-4086-af13-90f3c6596487" + "_testId": "urn:uuid:2258141f-7aa8-4176-8ece-cd13ea723de0" }, { "title": "SpruceID: P-256", @@ -1798,9 +1798,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:701750aa-9dbe-4f6f-b3a8-3dba5dc5584e", + "_testId": "urn:uuid:17b828bc-9975-4b87-b252-5b737633093f", "_events": {}, "_eventsCount": 1, "cell": { @@ -1824,9 +1824,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:70b0a12b-8a23-4636-9710-0573b832f445", + "_testId": "urn:uuid:fc055fa1-c338-443d-bb36-b272c2a823fc", "_events": {}, "_eventsCount": 1, "cell": { @@ -1850,9 +1850,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:d7cd9445-4e93-4874-9374-0ed5916ac635", + "_testId": "urn:uuid:39dc7f0d-e776-4a63-aa54-41173a731693", "_events": {}, "_eventsCount": 1, "cell": { @@ -1876,9 +1876,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:0f444e33-12ae-4b6f-b73d-29e1792e37a9", + "_testId": "urn:uuid:2b744539-16e5-4205-9c36-ce084ad72e99", "_events": {}, "_eventsCount": 1, "cell": { @@ -1910,9 +1910,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:f52a96e9-486d-466c-b153-4273f77f5e3c", + "_testId": "urn:uuid:9438f918-a7df-4ef5-92ca-445424cb02a6", "_events": {}, "_eventsCount": 1, "cell": { @@ -1936,9 +1936,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:01478428-b134-4dc4-a627-f5070c156ab1", + "_testId": "urn:uuid:6c89d7dd-803a-4b7c-9afd-e536bd08aeca", "_events": {}, "_eventsCount": 1, "cell": { @@ -1962,9 +1962,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:afff869d-1cda-437b-8cc5-03be47ceb8eb", + "_testId": "urn:uuid:a5c15572-7d06-4d81-8ffe-f75aabe29384", "_events": {}, "_eventsCount": 1, "cell": { @@ -1988,9 +1988,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:560456fc-7002-41a1-84b5-221f13cd2a30", + "_testId": "urn:uuid:2efa7e86-651c-46cc-81a3-e5a6ff1c35ac", "_events": {}, "_eventsCount": 1, "cell": { @@ -2014,9 +2014,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:6fd60018-63da-42b4-a7e8-796058447fde", + "_testId": "urn:uuid:b94c6e59-2f81-40cb-9d3f-9fb0583ae6a1", "_events": {}, "_eventsCount": 1, "cell": { @@ -2040,9 +2040,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:869ead5e-b702-41e3-9a41-15fe3e7b726f", + "_testId": "urn:uuid:79df4e43-4629-46ee-98d9-18a270ef1160", "_events": {}, "_eventsCount": 1, "cell": { @@ -2066,9 +2066,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:b996b538-ab43-408b-bcd4-6e31cb11e9ae", + "_testId": "urn:uuid:2e6d0721-f3f4-4a45-a517-bd9ca8d9fdc1", "_events": {}, "_eventsCount": 1, "cell": { @@ -2092,9 +2092,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:4f66771f-fb8a-4637-be63-140b7fb1fc34", + "_testId": "urn:uuid:b647216a-8b60-4934-8e61-f8da3f0fc974", "_events": {}, "_eventsCount": 1, "cell": { @@ -2118,9 +2118,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:00d553d2-158e-495f-b3af-d0f4a0340221", + "_testId": "urn:uuid:dd416f44-e8d9-4817-b8c6-ebce021c21eb", "_events": {}, "_eventsCount": 1, "cell": { @@ -2144,9 +2144,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:ee713fde-e8b1-4583-ba9f-8daa9a335a32", + "_testId": "urn:uuid:7ce1858e-7149-4c5a-926b-fd9ca0306a55", "_events": {}, "_eventsCount": 1, "cell": { @@ -2170,9 +2170,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:5049fc7c-62d1-4894-a4af-75a1001f24f9", + "_testId": "urn:uuid:f4b6e56f-fe5d-4a45-927c-e7b26595e542", "_events": {}, "_eventsCount": 1, "cell": { @@ -2201,7 +2201,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", "originalTitle": "\"before all\" hook", @@ -2211,12 +2211,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5129, + "_idleStart": 2322, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 196, + "duration": 100, "_error": null } ], @@ -2228,9 +2228,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "vycdf_q3KYEkbw9gQKkkv", + "parent": "I9mizOczuYVbk81eVaQUn", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "_testId": "urn:uuid:b8d2e0fc-b102-467d-9b9e-ae9e97a42faa" + "_testId": "urn:uuid:657c64cb-5816-4004-99e0-f8ce4dd11ca7" }, { "title": "bovine: P-256", @@ -2250,9 +2250,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:34ed5200-c05f-43b7-bcc2-d9b89f242e2a", + "_testId": "urn:uuid:28c273c3-bfd4-424e-9820-c1c12033a01b", "_events": {}, "_eventsCount": 1, "cell": { @@ -2276,9 +2276,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:7a468404-942d-4f5b-96a4-5d19b5560a1e", + "_testId": "urn:uuid:7849a5ef-acb5-4536-874d-9b460ff7cbdc", "_events": {}, "_eventsCount": 1, "cell": { @@ -2302,16 +2302,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:b5b3bc3b-2ce0-4df9-a235-4e5d28e252cd", + "_testId": "urn:uuid:44b617d7-cb6c-4391-854f-498ff82096c1", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "bovine: P-256", "rowId": "\"proof.type\" field MUST exist and be a string." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -2328,9 +2328,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:a225defe-d23c-4f5f-bc16-ad5392b39870", + "_testId": "urn:uuid:31bd6175-e9fe-4115-b12f-ef0661816867", "_events": {}, "_eventsCount": 1, "cell": { @@ -2354,9 +2354,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:89893fe7-7b6a-427d-a97e-d492ad5c164c", + "_testId": "urn:uuid:59cf027a-4a45-407b-82a2-8d5cae8b0f33", "_events": {}, "_eventsCount": 1, "cell": { @@ -2380,16 +2380,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:063226e3-15e7-479d-a624-0f941d67d89a", + "_testId": "urn:uuid:4bc48332-faa0-4715-9fdd-b30c249accf8", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "bovine: P-256", "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -2406,9 +2406,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:ec9a972d-e5ba-4f63-96ed-f3faa0fb1968", + "_testId": "urn:uuid:893dc505-f547-49ec-8ed5-fbbdf64a7131", "_events": {}, "_eventsCount": 1, "cell": { @@ -2432,16 +2432,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:bbafd01e-a6a0-4774-b186-04d368b55646", + "_testId": "urn:uuid:d36b6d23-ad72-4f90-b003-713cf30d049b", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "bovine: P-256", "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -2458,9 +2458,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:914d9a82-0544-42b6-8c83-87dbefef3056", + "_testId": "urn:uuid:a4221cd4-edee-4efc-bc7b-015c96d56612", "_events": {}, "_eventsCount": 1, "cell": { @@ -2484,9 +2484,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:af7f215d-5b73-44f0-a25a-60bcb3bc8ce5", + "_testId": "urn:uuid:51867d46-069a-4a9d-a7c6-25cc95f1b9f3", "_events": {}, "_eventsCount": 1, "cell": { @@ -2510,9 +2510,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:a58fe4d8-49f5-4a76-88d3-538f86b67efd", + "_testId": "urn:uuid:3955c9ed-22ae-4713-9445-8e54c4dbd2c2", "_events": {}, "_eventsCount": 1, "cell": { @@ -2536,9 +2536,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:c330d386-51d8-4071-988d-7db00f440ba9", + "_testId": "urn:uuid:32347dab-af84-4e2d-b711-bb9f1f913fe6", "_events": {}, "_eventsCount": 1, "cell": { @@ -2562,9 +2562,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:6ff0fd2c-a281-4be8-acd1-e53325b3f949", + "_testId": "urn:uuid:19f30ab3-188c-4219-8555-07b1ab6525fe", "_events": {}, "_eventsCount": 1, "cell": { @@ -2588,9 +2588,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:94817a90-a161-4880-b2f7-33950faaa2f7", + "_testId": "urn:uuid:6a9b29ae-6e4e-4155-9611-02908c7ce6d1", "_events": {}, "_eventsCount": 1, "cell": { @@ -2614,9 +2614,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:ae5ea7f7-b30f-49be-878f-c3d84c6bf6dd", + "_testId": "urn:uuid:fecb8c67-e1ae-4b6f-b313-10fccf31a62c", "_events": {}, "_eventsCount": 1, "cell": { @@ -2645,7 +2645,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", "originalTitle": "\"before all\" hook", @@ -2655,12 +2655,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5330, + "_idleStart": 2429, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 663, + "duration": 724, "_error": null } ], @@ -2672,9 +2672,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "vycdf_q3KYEkbw9gQKkkv", + "parent": "I9mizOczuYVbk81eVaQUn", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "_testId": "urn:uuid:91186f8b-804d-44ed-bd44-67b23be57164" + "_testId": "urn:uuid:9e31b8c8-e36d-4b25-8d2f-0722e5ed66c0" } ], "root": false, @@ -2690,13 +2690,13 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "Lj91xXIjIjtnwr_GDEsZw", + "parent": "GzHifvD62JwDWet-oBmTR", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", "matrix": true, "report": true, "rowLabel": "Test Name", "columnLabel": "Issuer", - "_testId": "urn:uuid:164814c5-3ba9-48ae-90a7-3db8c5d57c68", + "_testId": "urn:uuid:b9994863-8cb6-48e3-afde-a237ccd7fd72", "columns": [ "apicatalog.com: P-256", "apicatalog.com: P-384", @@ -2722,16 +2722,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:a4a1419e-b86c-40dd-993d-3947d34b9e49", + "_testId": "urn:uuid:f2cdb0b3-f15a-4621-ba1a-65a60501ad2a", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -2748,9 +2748,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:cd8c78de-0e37-459f-a123-33f3ff99924a", + "_testId": "urn:uuid:04cf5723-9a4f-43d0-8fe6-25f579feae5c", "_events": {}, "_eventsCount": 1, "cell": { @@ -2774,9 +2774,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:5e4564d3-d955-4f81-98d1-cf2945845b83", + "_testId": "urn:uuid:6ae37383-40d2-430e-aad0-5ede5305a36e", "_events": {}, "_eventsCount": 1, "cell": { @@ -2800,9 +2800,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:5bcef3d3-aa76-4eb1-9351-aae46f5c6a98", + "_testId": "urn:uuid:4a7e2489-0d87-467e-b769-63db6300b08d", "_events": {}, "_eventsCount": 1, "cell": { @@ -2826,9 +2826,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:701750aa-9dbe-4f6f-b3a8-3dba5dc5584e", + "_testId": "urn:uuid:17b828bc-9975-4b87-b252-5b737633093f", "_events": {}, "_eventsCount": 1, "cell": { @@ -2852,9 +2852,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:34ed5200-c05f-43b7-bcc2-d9b89f242e2a", + "_testId": "urn:uuid:28c273c3-bfd4-424e-9820-c1c12033a01b", "_events": {}, "_eventsCount": 1, "cell": { @@ -2883,9 +2883,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:410fa69e-526b-4dd6-a7f4-5db62358d676", + "_testId": "urn:uuid:d4f13b0c-09ed-47a5-971b-a06e41134e52", "_events": {}, "_eventsCount": 1, "cell": { @@ -2909,9 +2909,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:74c0fb14-5c47-45d6-b899-951d7ec9b830", + "_testId": "urn:uuid:a28b2cd2-8ad6-4de9-9224-7584391a95ac", "_events": {}, "_eventsCount": 1, "cell": { @@ -2935,9 +2935,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:758eaf41-6327-408f-84c6-99bd05c27472", + "_testId": "urn:uuid:aeed94d1-98f3-4faa-93ff-87394d1a41c1", "_events": {}, "_eventsCount": 1, "cell": { @@ -2961,9 +2961,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:00586197-8a4c-413c-b3e3-c652d5869cf2", + "_testId": "urn:uuid:4e5013f0-0e7a-4ca9-9572-821d5d085bbc", "_events": {}, "_eventsCount": 1, "cell": { @@ -2987,9 +2987,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:70b0a12b-8a23-4636-9710-0573b832f445", + "_testId": "urn:uuid:fc055fa1-c338-443d-bb36-b272c2a823fc", "_events": {}, "_eventsCount": 1, "cell": { @@ -3013,9 +3013,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:7a468404-942d-4f5b-96a4-5d19b5560a1e", + "_testId": "urn:uuid:7849a5ef-acb5-4536-874d-9b460ff7cbdc", "_events": {}, "_eventsCount": 1, "cell": { @@ -3044,9 +3044,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:0b165e32-46d8-430b-8ab4-57faf7df613b", + "_testId": "urn:uuid:e6b3a1d5-5f7e-41f5-93cb-bca3388b29ad", "_events": {}, "_eventsCount": 1, "cell": { @@ -3070,16 +3070,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:185f3022-e8b9-44a3-99cb-74dc9a485751", + "_testId": "urn:uuid:862bb581-74a8-492b-8493-5f9a52768604", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-384", "rowId": "\"proof.type\" field MUST exist and be a string." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -3096,9 +3096,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:18ad4856-e08e-471e-994b-3394529fc231", + "_testId": "urn:uuid:04799c86-1810-4524-9b40-0642b5bf23fa", "_events": {}, "_eventsCount": 1, "cell": { @@ -3122,9 +3122,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:14a09f6f-0338-4e7d-8eaf-d53099c34e9e", + "_testId": "urn:uuid:27020711-b895-4c13-a6ef-18ebfa557589", "_events": {}, "_eventsCount": 1, "cell": { @@ -3148,9 +3148,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:d7cd9445-4e93-4874-9374-0ed5916ac635", + "_testId": "urn:uuid:39dc7f0d-e776-4a63-aa54-41173a731693", "_events": {}, "_eventsCount": 1, "cell": { @@ -3174,16 +3174,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:b5b3bc3b-2ce0-4df9-a235-4e5d28e252cd", + "_testId": "urn:uuid:44b617d7-cb6c-4391-854f-498ff82096c1", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "bovine: P-256", "rowId": "\"proof.type\" field MUST exist and be a string." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" } @@ -3205,16 +3205,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:2227019f-0722-4029-8320-c48c91fc807c", + "_testId": "urn:uuid:c6f40d11-f5c0-4261-9157-7b8e4af0d50a", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -3231,9 +3231,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:c9f31c3d-b6a4-48a7-9602-dc3ec049b746", + "_testId": "urn:uuid:35de5fee-4725-4a0a-a4c3-ac0caa076b4d", "_events": {}, "_eventsCount": 1, "cell": { @@ -3257,9 +3257,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:a279d3e9-8d99-4336-9177-4c2e789899f4", + "_testId": "urn:uuid:3de589a0-c240-4716-9b92-d667858badc8", "_events": {}, "_eventsCount": 1, "cell": { @@ -3283,9 +3283,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:9c595af4-16e4-4461-8bc6-22e57093a2fc", + "_testId": "urn:uuid:0a7eaf7e-854f-4a9e-8298-d45cd9ca80e2", "_events": {}, "_eventsCount": 1, "cell": { @@ -3309,9 +3309,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:0f444e33-12ae-4b6f-b73d-29e1792e37a9", + "_testId": "urn:uuid:2b744539-16e5-4205-9c36-ce084ad72e99", "_events": {}, "_eventsCount": 1, "cell": { @@ -3343,9 +3343,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:a225defe-d23c-4f5f-bc16-ad5392b39870", + "_testId": "urn:uuid:31bd6175-e9fe-4115-b12f-ef0661816867", "_events": {}, "_eventsCount": 1, "cell": { @@ -3374,9 +3374,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:4e4e0251-82e7-422d-92d0-7e716cb8b9a3", + "_testId": "urn:uuid:c152fb4e-96db-4dfc-88b9-9048e3fbb6d6", "_events": {}, "_eventsCount": 1, "cell": { @@ -3400,9 +3400,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:6da18b40-74b5-4dca-893c-2916b67e451a", + "_testId": "urn:uuid:dc1da55e-3ccf-470d-91a1-7aebefbaba49", "_events": {}, "_eventsCount": 1, "cell": { @@ -3426,9 +3426,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:fad0c37d-1e39-4b07-9427-fe3e0dcd1f92", + "_testId": "urn:uuid:8403a712-d462-4763-9ff9-b502f9f8ee61", "_events": {}, "_eventsCount": 1, "cell": { @@ -3452,9 +3452,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:518072e4-d1fd-4c55-ba3d-46ba1983d640", + "_testId": "urn:uuid:9606e58d-a69e-4edb-9ee9-b418d1eea245", "_events": {}, "_eventsCount": 1, "cell": { @@ -3478,9 +3478,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:f52a96e9-486d-466c-b153-4273f77f5e3c", + "_testId": "urn:uuid:9438f918-a7df-4ef5-92ca-445424cb02a6", "_events": {}, "_eventsCount": 1, "cell": { @@ -3504,9 +3504,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:89893fe7-7b6a-427d-a97e-d492ad5c164c", + "_testId": "urn:uuid:59cf027a-4a45-407b-82a2-8d5cae8b0f33", "_events": {}, "_eventsCount": 1, "cell": { @@ -3535,16 +3535,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:6406c017-4716-4e24-816d-dd1e43ced69b", + "_testId": "urn:uuid:8db75e9a-660e-4dbc-b555-50f3640d963e", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -3561,16 +3561,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:d7a1882e-a0c7-4912-bfae-8f5e4968f6f0", + "_testId": "urn:uuid:00cae539-7700-4e05-998d-f99470f991c8", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-384", "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -3587,9 +3587,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:f28d958f-44a1-4b32-a3df-dbd8af675559", + "_testId": "urn:uuid:c6e1fe82-541a-47bc-b47d-9fc0415f23cf", "_events": {}, "_eventsCount": 1, "cell": { @@ -3613,9 +3613,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:403b7412-5eae-40b8-96a8-9880146a9ff9", + "_testId": "urn:uuid:69b87ec0-81f7-4b48-b4e3-11ef580b6424", "_events": {}, "_eventsCount": 1, "cell": { @@ -3639,9 +3639,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:01478428-b134-4dc4-a627-f5070c156ab1", + "_testId": "urn:uuid:6c89d7dd-803a-4b7c-9afd-e536bd08aeca", "_events": {}, "_eventsCount": 1, "cell": { @@ -3665,16 +3665,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:063226e3-15e7-479d-a624-0f941d67d89a", + "_testId": "urn:uuid:4bc48332-faa0-4715-9fdd-b30c249accf8", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "bovine: P-256", "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" } @@ -3696,16 +3696,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:72b2d93f-9b76-48b3-9a31-bd92d10919ca", + "_testId": "urn:uuid:196a5946-9805-4c49-8e17-f8c7ce41e4ec", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -3722,9 +3722,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:fad0d9dc-1314-47db-b268-b271d59bf5ca", + "_testId": "urn:uuid:d3f4ce02-f758-47c6-924f-0102d429284e", "_events": {}, "_eventsCount": 1, "cell": { @@ -3748,9 +3748,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:ee8facc2-4d1a-4e30-bd48-0f5d7ecad133", + "_testId": "urn:uuid:be511218-28ea-43cb-b81d-ae349e3db108", "_events": {}, "_eventsCount": 1, "cell": { @@ -3774,9 +3774,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:bf0ca5f1-2bec-4e77-b7d6-e9031e4a35ec", + "_testId": "urn:uuid:4bc9e54c-ab3d-4794-8f79-110610f55dfd", "_events": {}, "_eventsCount": 1, "cell": { @@ -3800,9 +3800,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:afff869d-1cda-437b-8cc5-03be47ceb8eb", + "_testId": "urn:uuid:a5c15572-7d06-4d81-8ffe-f75aabe29384", "_events": {}, "_eventsCount": 1, "cell": { @@ -3826,9 +3826,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:ec9a972d-e5ba-4f63-96ed-f3faa0fb1968", + "_testId": "urn:uuid:893dc505-f547-49ec-8ed5-fbbdf64a7131", "_events": {}, "_eventsCount": 1, "cell": { @@ -3857,9 +3857,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:c90907ca-c345-4dc2-aaf7-ad74303ebd59", + "_testId": "urn:uuid:0bcb9d07-7242-4c75-93ad-3a2821c7d508", "_events": {}, "_eventsCount": 1, "cell": { @@ -3883,9 +3883,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:6a692ed1-9736-42b3-8594-81c9a6e6e98c", + "_testId": "urn:uuid:f39173fb-aad4-4d4d-8fe4-c4fc4933eb4d", "_events": {}, "_eventsCount": 1, "cell": { @@ -3909,9 +3909,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:592c93dc-ff85-4059-b8e3-154e19b9fe03", + "_testId": "urn:uuid:4e1070fa-8981-4cf7-b83f-2cbb846d6686", "_events": {}, "_eventsCount": 1, "cell": { @@ -3935,9 +3935,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:15196608-78de-4c08-97d6-bd1d2a6e2f05", + "_testId": "urn:uuid:392b6dc6-6b3c-428b-92e7-a6ff5263bb4c", "_events": {}, "_eventsCount": 1, "cell": { @@ -3961,9 +3961,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:560456fc-7002-41a1-84b5-221f13cd2a30", + "_testId": "urn:uuid:2efa7e86-651c-46cc-81a3-e5a6ff1c35ac", "_events": {}, "_eventsCount": 1, "cell": { @@ -3987,16 +3987,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:bbafd01e-a6a0-4774-b186-04d368b55646", + "_testId": "urn:uuid:d36b6d23-ad72-4f90-b003-713cf30d049b", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "bovine: P-256", "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" } @@ -4018,9 +4018,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:5fda9342-ed8b-4f31-a5d0-54cccdeb01f7", + "_testId": "urn:uuid:d1fa369e-efe2-46b6-ad1a-399120ef6d8f", "_events": {}, "_eventsCount": 1, "cell": { @@ -4044,9 +4044,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:1ed4ccd9-6e15-4145-b507-be9f0e5d9b32", + "_testId": "urn:uuid:a4820643-739b-47cc-a33e-7981f5f1bbad", "_events": {}, "_eventsCount": 1, "cell": { @@ -4070,16 +4070,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:522e41b5-908a-4acb-b7d2-1583ab147b87", + "_testId": "urn:uuid:95aef148-32dd-493d-8e3d-3658d70ef5dd", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256", "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -4096,16 +4096,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:8a0c2820-d20e-4a3e-bbe2-faa6c9cac55a", + "_testId": "urn:uuid:5689673c-fdb3-4d2f-b891-1c378c879b62", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-384", "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -4122,9 +4122,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:6fd60018-63da-42b4-a7e8-796058447fde", + "_testId": "urn:uuid:b94c6e59-2f81-40cb-9d3f-9fb0583ae6a1", "_events": {}, "_eventsCount": 1, "cell": { @@ -4148,9 +4148,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:914d9a82-0544-42b6-8c83-87dbefef3056", + "_testId": "urn:uuid:a4221cd4-edee-4efc-bc7b-015c96d56612", "_events": {}, "_eventsCount": 1, "cell": { @@ -4179,9 +4179,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:b2ea9454-22bc-4218-85bb-0aa9eef98662", + "_testId": "urn:uuid:9830d671-b340-4e34-b98a-2b8a4e65edcd", "_events": {}, "_eventsCount": 1, "cell": { @@ -4205,9 +4205,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:5f20ace9-8e23-43dd-9a7a-a53b989ec6d3", + "_testId": "urn:uuid:cd85c1d0-d67f-4bd6-a85b-d96edc7adf9b", "_events": {}, "_eventsCount": 1, "cell": { @@ -4231,9 +4231,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:62974ec6-de60-4a81-9e31-d6df304e8154", + "_testId": "urn:uuid:08022fc6-e252-4d16-a77b-849e335f6d26", "_events": {}, "_eventsCount": 1, "cell": { @@ -4257,9 +4257,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:f557599f-a534-41ab-b043-39d01c5f2631", + "_testId": "urn:uuid:231fe7a6-b562-4198-8829-7094abe67ef2", "_events": {}, "_eventsCount": 1, "cell": { @@ -4283,9 +4283,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:869ead5e-b702-41e3-9a41-15fe3e7b726f", + "_testId": "urn:uuid:79df4e43-4629-46ee-98d9-18a270ef1160", "_events": {}, "_eventsCount": 1, "cell": { @@ -4309,9 +4309,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:af7f215d-5b73-44f0-a25a-60bcb3bc8ce5", + "_testId": "urn:uuid:51867d46-069a-4a9d-a7c6-25cc95f1b9f3", "_events": {}, "_eventsCount": 1, "cell": { @@ -4340,9 +4340,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:d3cf25a9-182e-46f5-806f-c7f377bdd7a9", + "_testId": "urn:uuid:328a51ea-0cb5-4f64-977d-6e746532fa24", "_events": {}, "_eventsCount": 1, "cell": { @@ -4366,9 +4366,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:d1ec73c6-e0c1-46b2-9a2f-8b28225e659e", + "_testId": "urn:uuid:d4870a28-1d64-4bec-8e6d-26d8c29cc8aa", "_events": {}, "_eventsCount": 1, "cell": { @@ -4392,9 +4392,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:f267bc96-14d7-4955-8d23-a36041d2612e", + "_testId": "urn:uuid:579490a1-e82b-4a3c-9165-e7c7e3c61865", "_events": {}, "_eventsCount": 1, "cell": { @@ -4418,9 +4418,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:32213e97-4a8f-4589-9c3b-d498f77aa2f6", + "_testId": "urn:uuid:4d5545fa-2a35-4f68-a2f4-2a3e02075a5d", "_events": {}, "_eventsCount": 1, "cell": { @@ -4444,9 +4444,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:b996b538-ab43-408b-bcd4-6e31cb11e9ae", + "_testId": "urn:uuid:2e6d0721-f3f4-4a45-a517-bd9ca8d9fdc1", "_events": {}, "_eventsCount": 1, "cell": { @@ -4470,9 +4470,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:a58fe4d8-49f5-4a76-88d3-538f86b67efd", + "_testId": "urn:uuid:3955c9ed-22ae-4713-9445-8e54c4dbd2c2", "_events": {}, "_eventsCount": 1, "cell": { @@ -4501,9 +4501,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:86a4b07b-df78-41d4-bbfc-f30243da84e0", + "_testId": "urn:uuid:114039f6-ff4a-4287-9fb3-a79ca97f0bd8", "_events": {}, "_eventsCount": 1, "cell": { @@ -4527,9 +4527,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:38ed709e-8400-408c-8679-a802589dc213", + "_testId": "urn:uuid:25e19d4d-84ad-4a01-8622-66ab55e17264", "_events": {}, "_eventsCount": 1, "cell": { @@ -4553,9 +4553,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:1e90d26a-94f9-4ea1-8ca4-c4723ff472ae", + "_testId": "urn:uuid:aca34bf0-108a-44f3-9ac9-9425f917e8eb", "_events": {}, "_eventsCount": 1, "cell": { @@ -4579,9 +4579,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:bc44f2b4-0435-48bb-9c1a-bbf5bbeb3a9f", + "_testId": "urn:uuid:456091a7-3849-485e-95c2-c46a23e6aac9", "_events": {}, "_eventsCount": 1, "cell": { @@ -4605,9 +4605,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:4f66771f-fb8a-4637-be63-140b7fb1fc34", + "_testId": "urn:uuid:b647216a-8b60-4934-8e61-f8da3f0fc974", "_events": {}, "_eventsCount": 1, "cell": { @@ -4631,9 +4631,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:c330d386-51d8-4071-988d-7db00f440ba9", + "_testId": "urn:uuid:32347dab-af84-4e2d-b711-bb9f1f913fe6", "_events": {}, "_eventsCount": 1, "cell": { @@ -4662,9 +4662,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:de641194-a74d-4ccc-b03c-160dd31e5176", + "_testId": "urn:uuid:36c0b2f9-29af-4e0d-8a13-ca356589a318", "_events": {}, "_eventsCount": 1, "cell": { @@ -4688,9 +4688,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:6811c82d-f8a7-4442-a776-abbfd050f494", + "_testId": "urn:uuid:50b8728b-bf0e-4440-83e4-e9881699d9f5", "_events": {}, "_eventsCount": 1, "cell": { @@ -4714,9 +4714,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:7e711bf8-be4c-4f47-8cc2-41bba96fc88c", + "_testId": "urn:uuid:e31f4f8d-e4db-450b-aada-df3c26a0ec51", "_events": {}, "_eventsCount": 1, "cell": { @@ -4740,9 +4740,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:0fc13b26-c98f-4f01-9d34-f9513859638e", + "_testId": "urn:uuid:b6a1c1c3-8c0d-42a6-9e45-bdb6f489dbf7", "_events": {}, "_eventsCount": 1, "cell": { @@ -4766,9 +4766,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:00d553d2-158e-495f-b3af-d0f4a0340221", + "_testId": "urn:uuid:dd416f44-e8d9-4817-b8c6-ebce021c21eb", "_events": {}, "_eventsCount": 1, "cell": { @@ -4792,9 +4792,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:6ff0fd2c-a281-4be8-acd1-e53325b3f949", + "_testId": "urn:uuid:19f30ab3-188c-4219-8555-07b1ab6525fe", "_events": {}, "_eventsCount": 1, "cell": { @@ -4823,9 +4823,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:93d533f6-c1bb-4d43-97d5-f2e357ef56e4", + "_testId": "urn:uuid:3ee0cc49-05cc-430b-ad58-f89ca8c66b65", "_events": {}, "_eventsCount": 1, "cell": { @@ -4849,9 +4849,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:0f74a500-2177-4704-b797-136899e1bbe2", + "_testId": "urn:uuid:6cb7f9ce-afd5-4f68-97a4-aea391c97998", "_events": {}, "_eventsCount": 1, "cell": { @@ -4875,9 +4875,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:63e6766e-07bc-4831-bb78-f27fb96b0625", + "_testId": "urn:uuid:1f642a08-611d-4653-83b4-359966f3b010", "_events": {}, "_eventsCount": 1, "cell": { @@ -4901,9 +4901,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:8f6ad805-8f39-4277-9f52-46da2683dc26", + "_testId": "urn:uuid:6a39a31e-3e3c-452d-826f-eb8f0ece5142", "_events": {}, "_eventsCount": 1, "cell": { @@ -4927,9 +4927,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:ee713fde-e8b1-4583-ba9f-8daa9a335a32", + "_testId": "urn:uuid:7ce1858e-7149-4c5a-926b-fd9ca0306a55", "_events": {}, "_eventsCount": 1, "cell": { @@ -4953,9 +4953,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:94817a90-a161-4880-b2f7-33950faaa2f7", + "_testId": "urn:uuid:6a9b29ae-6e4e-4155-9611-02908c7ce6d1", "_events": {}, "_eventsCount": 1, "cell": { @@ -4984,9 +4984,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HHNiTf8EDhXZEvSIAuReA", + "parent": "_gjDm9nVBaIV0YO3DMGuI", "ctx": null, - "_testId": "urn:uuid:2b3ec8a0-7adc-4502-9d83-35045a028057", + "_testId": "urn:uuid:650d7a31-8672-4b46-9294-d865c9981085", "_events": {}, "_eventsCount": 1, "cell": { @@ -5010,9 +5010,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "qq2dQdpfIlTpdrQxdo9PS", + "parent": "BPn7zZa-ymeQDONsVZAzC", "ctx": null, - "_testId": "urn:uuid:396f7687-0cd0-42f5-9b2d-540d76212818", + "_testId": "urn:uuid:8b60e5d6-8d4e-46c3-bd91-b74dbffc7a84", "_events": {}, "_eventsCount": 1, "cell": { @@ -5036,9 +5036,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "HPoO8WstkeHZgd1_OfG8m", + "parent": "zv3UkGL9Dv3Rqj1JiyXtt", "ctx": null, - "_testId": "urn:uuid:7833ab71-4691-4731-8f1b-6676dec07055", + "_testId": "urn:uuid:bc2150d3-8d34-4bc2-9d9c-9d8f75a3e5fc", "_events": {}, "_eventsCount": 1, "cell": { @@ -5062,9 +5062,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "ANvypPArFopXez1_sRIdZ", + "parent": "-K6cuEKP0_MDaxuchVVxh", "ctx": null, - "_testId": "urn:uuid:03fa7046-4912-4d8b-9921-e4b5fcaefee8", + "_testId": "urn:uuid:97a78eaf-aac4-4d11-b240-806729dd72c1", "_events": {}, "_eventsCount": 1, "cell": { @@ -5088,9 +5088,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "vTuBNXFUOmCRFw3IRMjsQ", + "parent": "m89Xy3ZlefdS-WaneOE59", "ctx": null, - "_testId": "urn:uuid:5049fc7c-62d1-4894-a4af-75a1001f24f9", + "_testId": "urn:uuid:f4b6e56f-fe5d-4a45-927c-e7b26595e542", "_events": {}, "_eventsCount": 1, "cell": { @@ -5114,9 +5114,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/05-rdfc-di-create.js", - "parent": "baTnmG3YWd7d2b09R_A7-", + "parent": "XVnrX1PZVIjLVSEBnWYA-", "ctx": null, - "_testId": "urn:uuid:ae5ea7f7-b30f-49be-878f-c3d84c6bf6dd", + "_testId": "urn:uuid:fecb8c67-e1ae-4b6f-b313-10fccf31a62c", "_events": {}, "_eventsCount": 1, "cell": { @@ -5132,7 +5132,7 @@ ] }, { - "title": "ecdsa-rdfc-2019 (issuers)", + "title": "ecdsa-rdfc-2019 (issuers) VC 1.1", "ctx": null, "suites": [ { @@ -5143,7 +5143,7 @@ { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5153,23 +5153,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:b631d902-2a80-4759-bee0-bc8888348712", + "_testId": "urn:uuid:1a81f68d-864e-4707-a836-bcef406daec7", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "The (proof) type property MUST be DataIntegrityProof." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5179,23 +5179,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:9a2a5d10-5701-4f7c-a82f-20896b2346e5", + "_testId": "urn:uuid:f19fc240-6af7-4f07-b8af-669e91053d53", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5205,9 +5205,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:70e9e465-4ecf-4f79-9577-8ad13b3060e9", + "_testId": "urn:uuid:e9dfde83-7dd3-40bf-94b0-606b20866b41", "_events": {}, "_eventsCount": 1, "cell": { @@ -5218,19 +5218,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6213, + "_idleStart": 3215, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5240,9 +5240,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:cdae4dda-d531-4902-8b94-b65e8ac8cd62", + "_testId": "urn:uuid:655e8bc2-bbf2-419e-94f5-fee71827be66", "_events": {}, "_eventsCount": 1, "cell": { @@ -5253,7 +5253,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6214, + "_idleStart": 3216, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5273,16 +5273,16 @@ "causes": [ null ], - "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:a18d6aa5-d8fa-42de-b02e-3cc721778dfd\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256\",\"issuanceDate\":\"2024-04-07T05:06:24Z\",\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-07T05:06:24Z\",\"proofValue\":\"zJV4KB7TJaXH1oqFArh4Qoy8cqwvMC8VBjc6ck2Kuvfeb3nB4xPX3b34zPFtaFyyWGEUks9TXnvTR2JwzGAZb35G\"}}" + "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:6d30d2ad-bbc5-493e-a992-0fc2c54111a6\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256\",\"issuanceDate\":\"2024-04-14T05:31:51Z\",\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-14T05:31:51Z\",\"proofValue\":\"z4XUckNw8AHa37YNFNU2YD9ABbH5xoGFfGQdzUSViB51pfoFPX6QMfNQKc6sCHhfnYtqvrzmzP2ePgURdVVavZmpf\"}}" }, "operator": "notStrictEqual", - "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:117:14)\n at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:143:17)" + "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:144:19)" } }, { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5292,9 +5292,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:ae7fa861-3f88-4e04-9272-eacc5431768b", + "_testId": "urn:uuid:aea36d39-b6e8-44b7-ab83-ec17989cc98c", "_events": {}, "_eventsCount": 1, "cell": { @@ -5305,7 +5305,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6224, + "_idleStart": 3226, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5317,7 +5317,7 @@ { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5327,9 +5327,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:47780a13-f18c-4b3b-bb00-58dcdc30733a", + "_testId": "urn:uuid:7f85e40a-bd2c-4bb1-a954-91e2b04781c2", "_events": {}, "_eventsCount": 1, "cell": { @@ -5340,7 +5340,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6225, + "_idleStart": 3227, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5352,7 +5352,7 @@ { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5362,9 +5362,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:d7a14432-4474-4c84-b052-25010d5ffa99", + "_testId": "urn:uuid:de26503c-b107-4496-aa73-05b645efecc4", "_events": {}, "_eventsCount": 1, "cell": { @@ -5375,7 +5375,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6225, + "_idleStart": 3227, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5392,7 +5392,7 @@ "_beforeAll": [ { "title": "\"before all\" hook in \"apicatalog.com: P-256\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create.document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create[vcVersion].document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5402,7 +5402,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", "originalTitle": "\"before all\" hook", @@ -5412,12 +5412,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5998, + "_idleStart": 3157, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 214, + "duration": 57, "_error": null } ], @@ -5429,9 +5429,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "zoSXrJQDTmMHfWKyHGJEy", + "parent": "wOTvi-MRm5QWakhZL7geu", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "_testId": "urn:uuid:8adec668-68de-45cd-9fd7-5615a94018f4" + "_testId": "urn:uuid:e135f333-ee32-4add-b39e-86400d6b0948" }, { "title": "apicatalog.com: P-384", @@ -5441,7 +5441,7 @@ { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5451,9 +5451,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:2f166b7a-6320-4b5e-8547-8f31d40936f8", + "_testId": "urn:uuid:9c563006-ab3c-4776-965e-b470f2adee3f", "_events": {}, "_eventsCount": 1, "cell": { @@ -5467,7 +5467,7 @@ { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5477,9 +5477,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:7bdcd730-a3e1-4b62-a161-4b702dfb7545", + "_testId": "urn:uuid:641e29d5-72d0-4345-9579-0d863828d457", "_events": {}, "_eventsCount": 1, "cell": { @@ -5493,7 +5493,7 @@ { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5503,9 +5503,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:58089895-1c43-4011-bdcd-a667eae07f36", + "_testId": "urn:uuid:077cbc33-1b09-4d6c-8724-0922f4b920e8", "_events": {}, "_eventsCount": 1, "cell": { @@ -5516,19 +5516,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6789, + "_idleStart": 3596, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5538,9 +5538,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:a1812d5c-a603-4372-9f5d-4917ad067b9d", + "_testId": "urn:uuid:3c7211b6-0c74-4762-99dd-57c1c3c9bf56", "_events": {}, "_eventsCount": 1, "cell": { @@ -5551,7 +5551,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6789, + "_idleStart": 3596, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5571,16 +5571,16 @@ "causes": [ null ], - "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:0347e4f0-f08d-4ce5-9c7c-dfe8e0890892\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-384\",\"issuanceDate\":\"2024-04-07T05:06:24Z\",\"proof\":{\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-07T05:06:24Z\",\"proofValue\":\"zfKnK55t3bFbr2b68B9AQKeNGQ5B2NYp7sXvVLdkiL5559EH33ZQUM31a3xV5pyWgYYkoogqhapNy7DLxMDcjdZL957iLywM5uPTEVSttigVF5pck7uZf3PoHuFEinjsvtoe\"}}" + "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:565f8bca-c518-4478-aff4-bdf6116bad6e\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-384\",\"issuanceDate\":\"2024-04-14T05:31:51Z\",\"proof\":{\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-14T05:31:51Z\",\"proofValue\":\"z29Ath5kvC6SmJdZUxHDmz8jXVtkk6ttexT3EknANrtHtSszLZgAvWqxfXUG4Tt16c5C5PVyg2KVNcpTwE2KbwhPg27HCnKTAf4RJcUbHQgXRp1CEdxGvMnWZiq4pwe6hirre\"}}" }, "operator": "notStrictEqual", - "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:117:14)\n at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:143:17)" + "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:144:19)" } }, { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5590,9 +5590,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:fb227791-be72-4173-9d09-9a6ad677126a", + "_testId": "urn:uuid:a2bc0d10-39a3-4ebc-a53b-580fb835dd73", "_events": {}, "_eventsCount": 1, "cell": { @@ -5603,19 +5603,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6795, + "_idleStart": 3602, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 2, "state": "passed", "speed": "fast" }, { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5625,9 +5625,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:fe589cf0-7cc8-4998-bd28-9e0ad91e9472", + "_testId": "urn:uuid:6b8e6d93-0064-440d-81f9-c0c23db7970b", "_events": {}, "_eventsCount": 1, "cell": { @@ -5638,7 +5638,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6796, + "_idleStart": 3603, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5650,7 +5650,7 @@ { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5660,9 +5660,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:9226dfca-38fb-4ac5-9d77-0d3cf2b3e298", + "_testId": "urn:uuid:21b89447-3c3e-4a59-a33a-2a7bf9f3136d", "_events": {}, "_eventsCount": 1, "cell": { @@ -5673,7 +5673,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6796, + "_idleStart": 3603, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5690,7 +5690,7 @@ "_beforeAll": [ { "title": "\"before all\" hook in \"apicatalog.com: P-384\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create.document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create[vcVersion].document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5700,7 +5700,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", "originalTitle": "\"before all\" hook", @@ -5710,12 +5710,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6226, + "_idleStart": 3228, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 562, + "duration": 368, "_error": null } ], @@ -5727,9 +5727,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "zoSXrJQDTmMHfWKyHGJEy", + "parent": "wOTvi-MRm5QWakhZL7geu", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "_testId": "urn:uuid:4f029c65-0234-4bc3-810a-3a2ffd238536" + "_testId": "urn:uuid:55644f49-8474-407d-bc57-1b687e0d3897" }, { "title": "Digital Bazaar: P-256", @@ -5739,7 +5739,7 @@ { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5749,9 +5749,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:7bfb089e-b698-4825-94dc-70fd5dbd0398", + "_testId": "urn:uuid:0647649d-48cc-4067-9c58-3e00512e59d2", "_events": {}, "_eventsCount": 1, "cell": { @@ -5765,7 +5765,7 @@ { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5775,9 +5775,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:46bb6f47-63bb-444d-9616-7f38fce418d4", + "_testId": "urn:uuid:8beafcbb-bd9e-4bed-abb4-b4ac5f4c042b", "_events": {}, "_eventsCount": 1, "cell": { @@ -5791,7 +5791,7 @@ { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5801,9 +5801,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:e150bb37-dc64-404a-96af-4503b8fa27ac", + "_testId": "urn:uuid:73857ec6-d6c5-4d0e-b827-e7fc2f71aa3f", "_events": {}, "_eventsCount": 1, "cell": { @@ -5814,19 +5814,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6907, + "_idleStart": 3707, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5836,9 +5836,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:d5222f51-e8d2-43c1-955d-2259510c4d6d", + "_testId": "urn:uuid:34a66732-3c99-46f6-8332-15c3a737fef6", "_events": {}, "_eventsCount": 1, "cell": { @@ -5849,19 +5849,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6907, + "_idleStart": 3708, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 4, + "duration": 6, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5871,9 +5871,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:35d7ea25-36dd-468f-9092-9327f2fdf9de", + "_testId": "urn:uuid:2a8b7de1-64ce-4303-ac4e-50c8432ac893", "_events": {}, "_eventsCount": 1, "cell": { @@ -5884,7 +5884,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6914, + "_idleStart": 3715, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5896,7 +5896,7 @@ { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5906,9 +5906,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:0c990922-ce8a-43cf-89b1-b8b3ce8ad806", + "_testId": "urn:uuid:ffd97209-bceb-4fd4-8e50-81a5cd6a4f15", "_events": {}, "_eventsCount": 1, "cell": { @@ -5919,7 +5919,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6915, + "_idleStart": 3715, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5931,7 +5931,7 @@ { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5941,9 +5941,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:2b790f03-4ace-4b5a-b4a0-24d667588980", + "_testId": "urn:uuid:8fd9749d-d58a-45bc-88b9-02dec4563d57", "_events": {}, "_eventsCount": 1, "cell": { @@ -5954,12 +5954,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6915, + "_idleStart": 3716, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" } @@ -5971,7 +5971,7 @@ "_beforeAll": [ { "title": "\"before all\" hook in \"Digital Bazaar: P-256\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create.document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create[vcVersion].document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5981,7 +5981,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", "originalTitle": "\"before all\" hook", @@ -5991,12 +5991,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6797, + "_idleStart": 3603, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 110, + "duration": 104, "_error": null } ], @@ -6008,9 +6008,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "zoSXrJQDTmMHfWKyHGJEy", + "parent": "wOTvi-MRm5QWakhZL7geu", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "_testId": "urn:uuid:a4dd04be-a6cb-4c6f-a6d0-44f75e18f6be" + "_testId": "urn:uuid:becf969c-5cf7-461e-8894-f25d128f7cbc" }, { "title": "Digital Bazaar: P-384", @@ -6020,7 +6020,7 @@ { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6030,9 +6030,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:b3672c46-2385-4552-a503-db764b937510", + "_testId": "urn:uuid:8f0aaea7-1ec0-4077-a428-b80811d57adf", "_events": {}, "_eventsCount": 1, "cell": { @@ -6046,7 +6046,7 @@ { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6056,9 +6056,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:576e03b1-24cf-4ae1-a41c-50fa6176c391", + "_testId": "urn:uuid:294144f3-0888-4b80-94d0-cf2ab1e008c2", "_events": {}, "_eventsCount": 1, "cell": { @@ -6072,7 +6072,7 @@ { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6082,9 +6082,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:dafbe7fd-670b-419f-a877-d8959a129d1e", + "_testId": "urn:uuid:f184511d-e187-427f-ae51-614e751c0d2d", "_events": {}, "_eventsCount": 1, "cell": { @@ -6095,7 +6095,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7358, + "_idleStart": 4056, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -6107,7 +6107,7 @@ { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6117,9 +6117,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:4bd0137b-885b-4e1e-a97c-53f2d189f28c", + "_testId": "urn:uuid:60e36685-8527-4673-badb-ff5aba0c9215", "_events": {}, "_eventsCount": 1, "cell": { @@ -6130,19 +6130,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7358, + "_idleStart": 4056, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 6, + "duration": 5, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6152,9 +6152,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:c1e2e849-546c-4ff8-997a-aa086e589fed", + "_testId": "urn:uuid:6c6eac54-76cd-48e9-ad48-d96672d70eda", "_events": {}, "_eventsCount": 1, "cell": { @@ -6165,7 +6165,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7364, + "_idleStart": 4062, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -6177,7 +6177,7 @@ { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6187,9 +6187,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:ab80d133-b0ff-4fc2-b417-60648c111041", + "_testId": "urn:uuid:0371346e-6a2a-4386-8ed0-12fe0d1b234a", "_events": {}, "_eventsCount": 1, "cell": { @@ -6200,7 +6200,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7364, + "_idleStart": 4063, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -6212,7 +6212,7 @@ { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6222,9 +6222,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:5483a9df-6a1b-4a17-891d-6afd7cc0e5ef", + "_testId": "urn:uuid:df61c253-654d-4374-bdd7-bfd07f505800", "_events": {}, "_eventsCount": 1, "cell": { @@ -6235,7 +6235,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7365, + "_idleStart": 4063, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -6252,7 +6252,7 @@ "_beforeAll": [ { "title": "\"before all\" hook in \"Digital Bazaar: P-384\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create.document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create[vcVersion].document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6262,7 +6262,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", "originalTitle": "\"before all\" hook", @@ -6272,12 +6272,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6915, + "_idleStart": 3716, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 441, + "duration": 339, "_error": null } ], @@ -6289,9 +6289,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "zoSXrJQDTmMHfWKyHGJEy", + "parent": "wOTvi-MRm5QWakhZL7geu", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "_testId": "urn:uuid:107c2365-087b-42ca-a82d-1a25f17e6e8f" + "_testId": "urn:uuid:675562ed-0a1d-41ab-9f43-c5afb10a52ec" }, { "title": "SpruceID: P-256", @@ -6301,7 +6301,7 @@ { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6311,9 +6311,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:6e6ac6f1-965d-4286-824d-2b2da23537ce", + "_testId": "urn:uuid:4f3168a9-3fb5-43a5-a78b-b26f19c92127", "_events": {}, "_eventsCount": 1, "cell": { @@ -6327,7 +6327,7 @@ { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6337,9 +6337,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:43ed92c2-b2c5-4245-931f-7ef798bb5954", + "_testId": "urn:uuid:b9f53cb7-8d89-4337-932d-b776a71d5fbb", "_events": {}, "_eventsCount": 1, "cell": { @@ -6354,13 +6354,13 @@ "showDiff": true, "actual": "[\n \"ecdsa-2019\"\n]", "expected": "[\n \"ecdsa-rdfc-2019\"\n \"ecdsa-jcs-2019\"\n]", - "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:103:29)\n at process.processImmediate (node:internal/timers:478:21)" + "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:103:31)\n at process.processImmediate (node:internal/timers:478:21)" } }, { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6370,9 +6370,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:5adee91c-bb09-4428-8fae-155843b04a06", + "_testId": "urn:uuid:61a1a148-6c8b-4890-9879-1adbc5a543a7", "_events": {}, "_eventsCount": 1, "cell": { @@ -6383,7 +6383,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7418, + "_idleStart": 4101, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -6392,15 +6392,15 @@ "state": "failed", "err": { "name": "AssertionError", - "message": "Expected VC from issuer SpruceID to have an ' +\n '\"ecdsa-rdfc-2019\" proof: expected undefined to exist", + "message": "Expected VC from issuer SpruceID to have an ' +\n '\"ecdsa-rdfc-2019\" proof: expected undefined to exist", "showDiff": false, - "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:117:46)\n at process.processImmediate (node:internal/timers:478:21)" + "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:118:48)\n at process.processImmediate (node:internal/timers:478:21)" } }, { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6410,9 +6410,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:be4a0229-fd81-4af0-bf1d-2bcb7dd2939c", + "_testId": "urn:uuid:2d377e3c-c376-4b23-9822-ecfe3cadd30a", "_events": {}, "_eventsCount": 1, "cell": { @@ -6423,7 +6423,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7419, + "_idleStart": 4101, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -6443,16 +6443,16 @@ "causes": [ null ], - "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"},\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"@protected\":true,\"DriverLicense\":{\"@context\":{\"@protected\":true,\"dateOfBirth\":\"urn:example:dateOfBirth\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"expirationDate\":\"urn:example:expiration\",\"id\":\"@id\",\"issuingAuthority\":\"urn:example:issuingAuthority\",\"type\":\"@type\"},\"@id\":\"urn:example:DriverLicense\"}}],\"id\":\"urn:uuid:ea7bca0e-cbeb-4070-95a5-82224cc84894\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"dateOfBirth\":\"01-01-1990\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\",\"type\":\"DriverLicense\"}},\"issuer\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"issuanceDate\":\"2024-04-07T05:06:25Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/data-integrity/v1\"],\"type\":\"DataIntegrityProof\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2STUhW9igQe2yJTCQ2RVNvLNmVdXDiVEQZXfpnLMdgNMCGY4HAHB2HyrKYX3TfzDsQJdQ5A8RigMq8Mm5Daum3kv\",\"verificationMethod\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"created\":\"2024-04-07T05:06:25.870Z\",\"cryptosuite\":\"ecdsa-2019\"}}" + "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"@protected\":true,\"DriverLicense\":{\"@context\":{\"@protected\":true,\"dateOfBirth\":\"urn:example:dateOfBirth\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"expirationDate\":\"urn:example:expiration\",\"id\":\"@id\",\"issuingAuthority\":\"urn:example:issuingAuthority\",\"type\":\"@type\"},\"@id\":\"urn:example:DriverLicense\"},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}}],\"id\":\"urn:uuid:5d90ee57-6258-45b9-bace-40b400db27bb\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"dateOfBirth\":\"01-01-1990\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\",\"type\":\"DriverLicense\"}},\"issuer\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"issuanceDate\":\"2024-04-14T05:31:52Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/data-integrity/v1\"],\"type\":\"DataIntegrityProof\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z3P8dYsMhaC8Wjs9wzSJUVEDmDXM9MJisxTPwjK6Gs6kBk2BvsF6FMWqo8FokFiRbrBb4x3Wzt6v4KpAxdZ71WZyR\",\"verificationMethod\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"created\":\"2024-04-14T05:31:52.645Z\",\"cryptosuite\":\"ecdsa-2019\"}}" }, "operator": "notStrictEqual", - "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:117:14)\n at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:143:17)" + "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:144:19)" } }, { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6462,9 +6462,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:a74edf7b-f893-4f6e-b87b-1713c1edfeca", + "_testId": "urn:uuid:a5b29c9c-3c89-4639-a9b6-a003aae932b9", "_events": {}, "_eventsCount": 1, "cell": { @@ -6475,7 +6475,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7420, + "_idleStart": 4103, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -6487,7 +6487,7 @@ { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6497,9 +6497,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:a427bb5c-4c12-49f7-94e2-20f7c51cd2b4", + "_testId": "urn:uuid:15bcb6bc-217b-4665-8a5f-6ce06324cc40", "_events": {}, "_eventsCount": 1, "cell": { @@ -6510,19 +6510,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7421, + "_idleStart": 4104, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6532,9 +6532,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:924c045d-476d-4769-be6b-9f7de365c157", + "_testId": "urn:uuid:c2604341-060f-4697-9743-4c9d923991c3", "_events": {}, "_eventsCount": 1, "cell": { @@ -6545,7 +6545,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7421, + "_idleStart": 4104, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -6562,7 +6562,7 @@ "_beforeAll": [ { "title": "\"before all\" hook in \"SpruceID: P-256\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create.document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create[vcVersion].document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6572,7 +6572,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", "originalTitle": "\"before all\" hook", @@ -6582,12 +6582,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7365, + "_idleStart": 4064, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 36, "_error": null } ], @@ -6599,9 +6599,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "zoSXrJQDTmMHfWKyHGJEy", + "parent": "wOTvi-MRm5QWakhZL7geu", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "_testId": "urn:uuid:39ff8088-3953-48d1-b246-648a715d099e" + "_testId": "urn:uuid:778d7529-eb55-473d-9a3d-554e6711e25f" }, { "title": "bovine: P-256", @@ -6611,7 +6611,7 @@ { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6621,9 +6621,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:033afd6b-e5f2-4e2e-ac84-84e2646210d9", + "_testId": "urn:uuid:166b7fc6-a85a-44f6-9a18-c039ede643d1", "_events": {}, "_eventsCount": 1, "cell": { @@ -6637,7 +6637,7 @@ { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6647,23 +6647,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:25a84788-a609-43ae-b435-40c42668988c", + "_testId": "urn:uuid:f1af49d5-2a3d-41a7-86d6-9d51dc9e8c15", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "bovine: P-256", "rowId": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6673,9 +6673,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:9500d595-a9a5-40e9-8f2e-36c95b4ffbb2", + "_testId": "urn:uuid:5ed9899d-93f0-45f0-a62a-a7a64c564394", "_events": {}, "_eventsCount": 1, "cell": { @@ -6686,19 +6686,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7553, + "_idleStart": 4218, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6708,9 +6708,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:6ecf7c41-0085-4aca-ab8a-d747d254f26f", + "_testId": "urn:uuid:7f80a358-80d2-4cea-988f-3a2a5dc14feb", "_events": {}, "_eventsCount": 1, "cell": { @@ -6721,19 +6721,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7553, + "_idleStart": 4218, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 4, + "duration": 5, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6743,9 +6743,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:a63e18c9-4a12-4b3d-822f-3b45027314a6", + "_testId": "urn:uuid:40a9e99f-c2a6-40eb-8aa9-5006f92a555b", "_events": {}, "_eventsCount": 1, "cell": { @@ -6756,19 +6756,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7558, + "_idleStart": 4224, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6778,9 +6778,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:a7e5f188-9909-4de9-b777-b3237fa72bb8", + "_testId": "urn:uuid:9de3a40d-f568-4e6c-b4cb-e80ee4564fde", "_events": {}, "_eventsCount": 1, "cell": { @@ -6791,7 +6791,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7559, + "_idleStart": 4224, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -6803,7 +6803,7 @@ { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6813,9 +6813,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:5ebe6b4d-ab4f-4be5-96db-aefd6b7d85e3", + "_testId": "urn:uuid:e34bfba5-d5af-49ba-822d-7f76a0ed687f", "_events": {}, "_eventsCount": 1, "cell": { @@ -6826,12 +6826,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7559, + "_idleStart": 4225, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" } @@ -6843,7 +6843,7 @@ "_beforeAll": [ { "title": "\"before all\" hook in \"bovine: P-256\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create.document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create[vcVersion].document\n });\n // VCs can have multiple proofs so account for that\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6853,7 +6853,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", "originalTitle": "\"before all\" hook", @@ -6863,12 +6863,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7421, + "_idleStart": 4104, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 131, + "duration": 113, "_error": null } ], @@ -6880,9 +6880,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "zoSXrJQDTmMHfWKyHGJEy", + "parent": "wOTvi-MRm5QWakhZL7geu", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "_testId": "urn:uuid:e2135caa-2f1d-4036-9f6d-0443646b4010" + "_testId": "urn:uuid:311882d3-b876-4441-8c85-c00647dafb0a" } ], "root": false, @@ -6898,13 +6898,13 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "yVSJPc_r_QKTqC1g-gMaj", + "parent": "0dZXmZhGXg3f6MMJpyjWG", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", "matrix": true, "report": true, "rowLabel": "Test Name", "columnLabel": "Implementation", - "_testId": "urn:uuid:40a99706-3763-4b0f-a247-18c8b14c0289", + "_testId": "urn:uuid:a2a0b19d-7776-48bf-817b-ced6c152d1aa", "columns": [ "apicatalog.com: P-256", "apicatalog.com: P-384", @@ -6920,7 +6920,7 @@ { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6930,23 +6930,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:b631d902-2a80-4759-bee0-bc8888348712", + "_testId": "urn:uuid:1a81f68d-864e-4707-a836-bcef406daec7", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "The (proof) type property MUST be DataIntegrityProof." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6956,9 +6956,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:2f166b7a-6320-4b5e-8547-8f31d40936f8", + "_testId": "urn:uuid:9c563006-ab3c-4776-965e-b470f2adee3f", "_events": {}, "_eventsCount": 1, "cell": { @@ -6972,7 +6972,7 @@ { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6982,9 +6982,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:7bfb089e-b698-4825-94dc-70fd5dbd0398", + "_testId": "urn:uuid:0647649d-48cc-4067-9c58-3e00512e59d2", "_events": {}, "_eventsCount": 1, "cell": { @@ -6998,7 +6998,7 @@ { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7008,9 +7008,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:b3672c46-2385-4552-a503-db764b937510", + "_testId": "urn:uuid:8f0aaea7-1ec0-4077-a428-b80811d57adf", "_events": {}, "_eventsCount": 1, "cell": { @@ -7024,7 +7024,7 @@ { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7034,9 +7034,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:6e6ac6f1-965d-4286-824d-2b2da23537ce", + "_testId": "urn:uuid:4f3168a9-3fb5-43a5-a78b-b26f19c92127", "_events": {}, "_eventsCount": 1, "cell": { @@ -7050,7 +7050,7 @@ { "type": "test", "title": "The (proof) type property MUST be DataIntegrityProof.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.map(p => p?.type).should.contain(\n 'DataIntegrityProof',\n 'Expected at least one proof to have type ' +\n 'DataIntegrityProof');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7060,9 +7060,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:033afd6b-e5f2-4e2e-ac84-84e2646210d9", + "_testId": "urn:uuid:166b7fc6-a85a-44f6-9a18-c039ede643d1", "_events": {}, "_eventsCount": 1, "cell": { @@ -7081,7 +7081,7 @@ { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7091,23 +7091,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:9a2a5d10-5701-4f7c-a82f-20896b2346e5", + "_testId": "urn:uuid:f19fc240-6af7-4f07-b8af-669e91053d53", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", "rowId": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7117,9 +7117,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:7bdcd730-a3e1-4b62-a161-4b702dfb7545", + "_testId": "urn:uuid:641e29d5-72d0-4345-9579-0d863828d457", "_events": {}, "_eventsCount": 1, "cell": { @@ -7133,7 +7133,7 @@ { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7143,9 +7143,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:46bb6f47-63bb-444d-9616-7f38fce418d4", + "_testId": "urn:uuid:8beafcbb-bd9e-4bed-abb4-b4ac5f4c042b", "_events": {}, "_eventsCount": 1, "cell": { @@ -7159,7 +7159,7 @@ { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7169,9 +7169,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:576e03b1-24cf-4ae1-a41c-50fa6176c391", + "_testId": "urn:uuid:294144f3-0888-4b80-94d0-cf2ab1e008c2", "_events": {}, "_eventsCount": 1, "cell": { @@ -7185,7 +7185,7 @@ { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7195,9 +7195,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:43ed92c2-b2c5-4245-931f-7ef798bb5954", + "_testId": "urn:uuid:b9f53cb7-8d89-4337-932d-b776a71d5fbb", "_events": {}, "_eventsCount": 1, "cell": { @@ -7212,13 +7212,13 @@ "showDiff": true, "actual": "[\n \"ecdsa-2019\"\n]", "expected": "[\n \"ecdsa-rdfc-2019\"\n \"ecdsa-jcs-2019\"\n]", - "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:103:29)\n at process.processImmediate (node:internal/timers:478:21)" + "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:103:31)\n at process.processImmediate (node:internal/timers:478:21)" } }, { "type": "test", "title": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019.", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const cryptosuite = ['ecdsa-rdfc-2019', 'ecdsa-jcs-2019'];\n expect(\n proofs.map(proof => proof?.cryptosuite),\n 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-rdfc-2019\" or \"ecdsa-jcs-2019\".')\n .to.contain.oneOf(cryptosuite);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7228,16 +7228,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:25a84788-a609-43ae-b435-40c42668988c", + "_testId": "urn:uuid:f1af49d5-2a3d-41a7-86d6-9d51dc9e8c15", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "bovine: P-256", "rowId": "The cryptosuite property of the proof MUST be ecdsa-rdfc-2019 or ecdsa-jcs-2019." }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" } @@ -7249,7 +7249,7 @@ { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7259,9 +7259,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:70e9e465-4ecf-4f79-9577-8ad13b3060e9", + "_testId": "urn:uuid:e9dfde83-7dd3-40bf-94b0-606b20866b41", "_events": {}, "_eventsCount": 1, "cell": { @@ -7272,19 +7272,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6213, + "_idleStart": 3215, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7294,9 +7294,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:58089895-1c43-4011-bdcd-a667eae07f36", + "_testId": "urn:uuid:077cbc33-1b09-4d6c-8724-0922f4b920e8", "_events": {}, "_eventsCount": 1, "cell": { @@ -7307,19 +7307,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6789, + "_idleStart": 3596, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7329,9 +7329,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:e150bb37-dc64-404a-96af-4503b8fa27ac", + "_testId": "urn:uuid:73857ec6-d6c5-4d0e-b827-e7fc2f71aa3f", "_events": {}, "_eventsCount": 1, "cell": { @@ -7342,19 +7342,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6907, + "_idleStart": 3707, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7364,9 +7364,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:dafbe7fd-670b-419f-a877-d8959a129d1e", + "_testId": "urn:uuid:f184511d-e187-427f-ae51-614e751c0d2d", "_events": {}, "_eventsCount": 1, "cell": { @@ -7377,7 +7377,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7358, + "_idleStart": 4056, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7389,7 +7389,7 @@ { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7399,9 +7399,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:5adee91c-bb09-4428-8fae-155843b04a06", + "_testId": "urn:uuid:61a1a148-6c8b-4890-9879-1adbc5a543a7", "_events": {}, "_eventsCount": 1, "cell": { @@ -7412,7 +7412,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7418, + "_idleStart": 4101, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7421,15 +7421,15 @@ "state": "failed", "err": { "name": "AssertionError", - "message": "Expected VC from issuer SpruceID to have an ' +\n '\"ecdsa-rdfc-2019\" proof: expected undefined to exist", + "message": "Expected VC from issuer SpruceID to have an ' +\n '\"ecdsa-rdfc-2019\" proof: expected undefined to exist", "showDiff": false, - "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:117:46)\n at process.processImmediate (node:internal/timers:478:21)" + "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:118:48)\n at process.processImmediate (node:internal/timers:478:21)" } }, { "type": "test", "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-rdfc-2019');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-rdfc-2019\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n // now test the encoding which is bs58 for this suite\n expect(\n shouldBeBs58(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs58 encoded.'\n ).to.be.true;\n // proofBytes will be exactly 64 bytes in size for a P-256 key,\n // and 96 bytes in size for a P-384 key.\n const expectedLength = proofLengths[keyType];\n await shouldHaveByteLength(_proof.proofValue, expectedLength);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7439,9 +7439,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:9500d595-a9a5-40e9-8f2e-36c95b4ffbb2", + "_testId": "urn:uuid:5ed9899d-93f0-45f0-a62a-a7a64c564394", "_events": {}, "_eventsCount": 1, "cell": { @@ -7452,12 +7452,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7553, + "_idleStart": 4218, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" } @@ -7469,7 +7469,7 @@ { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7479,9 +7479,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:cdae4dda-d531-4902-8b94-b65e8ac8cd62", + "_testId": "urn:uuid:655e8bc2-bbf2-419e-94f5-fee71827be66", "_events": {}, "_eventsCount": 1, "cell": { @@ -7492,7 +7492,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6214, + "_idleStart": 3216, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7512,16 +7512,16 @@ "causes": [ null ], - "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:a18d6aa5-d8fa-42de-b02e-3cc721778dfd\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256\",\"issuanceDate\":\"2024-04-07T05:06:24Z\",\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-07T05:06:24Z\",\"proofValue\":\"zJV4KB7TJaXH1oqFArh4Qoy8cqwvMC8VBjc6ck2Kuvfeb3nB4xPX3b34zPFtaFyyWGEUks9TXnvTR2JwzGAZb35G\"}}" + "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:6d30d2ad-bbc5-493e-a992-0fc2c54111a6\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256\",\"issuanceDate\":\"2024-04-14T05:31:51Z\",\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-14T05:31:51Z\",\"proofValue\":\"z4XUckNw8AHa37YNFNU2YD9ABbH5xoGFfGQdzUSViB51pfoFPX6QMfNQKc6sCHhfnYtqvrzmzP2ePgURdVVavZmpf\"}}" }, "operator": "notStrictEqual", - "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:117:14)\n at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:143:17)" + "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:144:19)" } }, { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7531,9 +7531,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:a1812d5c-a603-4372-9f5d-4917ad067b9d", + "_testId": "urn:uuid:3c7211b6-0c74-4762-99dd-57c1c3c9bf56", "_events": {}, "_eventsCount": 1, "cell": { @@ -7544,7 +7544,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6789, + "_idleStart": 3596, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7564,16 +7564,16 @@ "causes": [ null ], - "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:0347e4f0-f08d-4ce5-9c7c-dfe8e0890892\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-384\",\"issuanceDate\":\"2024-04-07T05:06:24Z\",\"proof\":{\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-07T05:06:24Z\",\"proofValue\":\"zfKnK55t3bFbr2b68B9AQKeNGQ5B2NYp7sXvVLdkiL5559EH33ZQUM31a3xV5pyWgYYkoogqhapNy7DLxMDcjdZL957iLywM5uPTEVSttigVF5pck7uZf3PoHuFEinjsvtoe\"}}" + "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:565f8bca-c518-4478-aff4-bdf6116bad6e\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-384\",\"issuanceDate\":\"2024-04-14T05:31:51Z\",\"proof\":{\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-14T05:31:51Z\",\"proofValue\":\"z29Ath5kvC6SmJdZUxHDmz8jXVtkk6ttexT3EknANrtHtSszLZgAvWqxfXUG4Tt16c5C5PVyg2KVNcpTwE2KbwhPg27HCnKTAf4RJcUbHQgXRp1CEdxGvMnWZiq4pwe6hirre\"}}" }, "operator": "notStrictEqual", - "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:117:14)\n at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:143:17)" + "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:144:19)" } }, { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7583,9 +7583,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:d5222f51-e8d2-43c1-955d-2259510c4d6d", + "_testId": "urn:uuid:34a66732-3c99-46f6-8332-15c3a737fef6", "_events": {}, "_eventsCount": 1, "cell": { @@ -7596,19 +7596,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6907, + "_idleStart": 3708, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 4, + "duration": 6, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7618,9 +7618,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:4bd0137b-885b-4e1e-a97c-53f2d189f28c", + "_testId": "urn:uuid:60e36685-8527-4673-badb-ff5aba0c9215", "_events": {}, "_eventsCount": 1, "cell": { @@ -7631,19 +7631,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7358, + "_idleStart": 4056, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 6, + "duration": 5, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7653,9 +7653,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:be4a0229-fd81-4af0-bf1d-2bcb7dd2939c", + "_testId": "urn:uuid:2d377e3c-c376-4b23-9822-ecfe3cadd30a", "_events": {}, "_eventsCount": 1, "cell": { @@ -7666,7 +7666,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7419, + "_idleStart": 4101, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7686,16 +7686,16 @@ "causes": [ null ], - "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"},\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"@protected\":true,\"DriverLicense\":{\"@context\":{\"@protected\":true,\"dateOfBirth\":\"urn:example:dateOfBirth\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"expirationDate\":\"urn:example:expiration\",\"id\":\"@id\",\"issuingAuthority\":\"urn:example:issuingAuthority\",\"type\":\"@type\"},\"@id\":\"urn:example:DriverLicense\"}}],\"id\":\"urn:uuid:ea7bca0e-cbeb-4070-95a5-82224cc84894\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"dateOfBirth\":\"01-01-1990\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\",\"type\":\"DriverLicense\"}},\"issuer\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"issuanceDate\":\"2024-04-07T05:06:25Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/data-integrity/v1\"],\"type\":\"DataIntegrityProof\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2STUhW9igQe2yJTCQ2RVNvLNmVdXDiVEQZXfpnLMdgNMCGY4HAHB2HyrKYX3TfzDsQJdQ5A8RigMq8Mm5Daum3kv\",\"verificationMethod\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"created\":\"2024-04-07T05:06:25.870Z\",\"cryptosuite\":\"ecdsa-2019\"}}" + "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"@protected\":true,\"DriverLicense\":{\"@context\":{\"@protected\":true,\"dateOfBirth\":\"urn:example:dateOfBirth\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"expirationDate\":\"urn:example:expiration\",\"id\":\"@id\",\"issuingAuthority\":\"urn:example:issuingAuthority\",\"type\":\"@type\"},\"@id\":\"urn:example:DriverLicense\"},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}}],\"id\":\"urn:uuid:5d90ee57-6258-45b9-bace-40b400db27bb\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"dateOfBirth\":\"01-01-1990\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\",\"type\":\"DriverLicense\"}},\"issuer\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"issuanceDate\":\"2024-04-14T05:31:52Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/data-integrity/v1\"],\"type\":\"DataIntegrityProof\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z3P8dYsMhaC8Wjs9wzSJUVEDmDXM9MJisxTPwjK6Gs6kBk2BvsF6FMWqo8FokFiRbrBb4x3Wzt6v4KpAxdZ71WZyR\",\"verificationMethod\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"created\":\"2024-04-14T05:31:52.645Z\",\"cryptosuite\":\"ecdsa-2019\"}}" }, "operator": "notStrictEqual", - "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:117:14)\n at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js:143:17)" + "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:144:19)" } }, { "type": "test", "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n await verificationSuccess({\n credential: issuedVc,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7705,9 +7705,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:6ecf7c41-0085-4aca-ab8a-d747d254f26f", + "_testId": "urn:uuid:7f80a358-80d2-4cea-988f-3a2a5dc14feb", "_events": {}, "_eventsCount": 1, "cell": { @@ -7718,12 +7718,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7553, + "_idleStart": 4218, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 4, + "duration": 5, "state": "passed", "speed": "fast" } @@ -7735,7 +7735,7 @@ { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7745,9 +7745,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:ae7fa861-3f88-4e04-9272-eacc5431768b", + "_testId": "urn:uuid:aea36d39-b6e8-44b7-ab83-ec17989cc98c", "_events": {}, "_eventsCount": 1, "cell": { @@ -7758,7 +7758,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6224, + "_idleStart": 3226, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7770,7 +7770,7 @@ { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7780,9 +7780,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:fb227791-be72-4173-9d09-9a6ad677126a", + "_testId": "urn:uuid:a2bc0d10-39a3-4ebc-a53b-580fb835dd73", "_events": {}, "_eventsCount": 1, "cell": { @@ -7793,19 +7793,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6795, + "_idleStart": 3602, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 2, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7815,9 +7815,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:35d7ea25-36dd-468f-9092-9327f2fdf9de", + "_testId": "urn:uuid:2a8b7de1-64ce-4303-ac4e-50c8432ac893", "_events": {}, "_eventsCount": 1, "cell": { @@ -7828,7 +7828,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6914, + "_idleStart": 3715, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7840,7 +7840,7 @@ { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7850,9 +7850,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:c1e2e849-546c-4ff8-997a-aa086e589fed", + "_testId": "urn:uuid:6c6eac54-76cd-48e9-ad48-d96672d70eda", "_events": {}, "_eventsCount": 1, "cell": { @@ -7863,7 +7863,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7364, + "_idleStart": 4062, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7875,7 +7875,7 @@ { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7885,9 +7885,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:a74edf7b-f893-4f6e-b87b-1713c1edfeca", + "_testId": "urn:uuid:a5b29c9c-3c89-4639-a9b6-a003aae932b9", "_events": {}, "_eventsCount": 1, "cell": { @@ -7898,7 +7898,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7420, + "_idleStart": 4103, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7910,7 +7910,7 @@ { "type": "test", "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7920,9 +7920,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:a63e18c9-4a12-4b3d-822f-3b45027314a6", + "_testId": "urn:uuid:40a9e99f-c2a6-40eb-8aa9-5006f92a555b", "_events": {}, "_eventsCount": 1, "cell": { @@ -7933,12 +7933,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7558, + "_idleStart": 4224, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" } @@ -7950,7 +7950,7 @@ { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7960,9 +7960,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:47780a13-f18c-4b3b-bb00-58dcdc30733a", + "_testId": "urn:uuid:7f85e40a-bd2c-4bb1-a954-91e2b04781c2", "_events": {}, "_eventsCount": 1, "cell": { @@ -7973,7 +7973,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6225, + "_idleStart": 3227, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7985,7 +7985,7 @@ { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7995,9 +7995,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:fe589cf0-7cc8-4998-bd28-9e0ad91e9472", + "_testId": "urn:uuid:6b8e6d93-0064-440d-81f9-c0c23db7970b", "_events": {}, "_eventsCount": 1, "cell": { @@ -8008,7 +8008,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6796, + "_idleStart": 3603, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8020,7 +8020,7 @@ { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8030,9 +8030,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:0c990922-ce8a-43cf-89b1-b8b3ce8ad806", + "_testId": "urn:uuid:ffd97209-bceb-4fd4-8e50-81a5cd6a4f15", "_events": {}, "_eventsCount": 1, "cell": { @@ -8043,7 +8043,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6915, + "_idleStart": 3715, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8055,7 +8055,7 @@ { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8065,9 +8065,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:ab80d133-b0ff-4fc2-b417-60648c111041", + "_testId": "urn:uuid:0371346e-6a2a-4386-8ed0-12fe0d1b234a", "_events": {}, "_eventsCount": 1, "cell": { @@ -8078,7 +8078,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7364, + "_idleStart": 4063, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8090,7 +8090,7 @@ { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8100,9 +8100,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:a427bb5c-4c12-49f7-94e2-20f7c51cd2b4", + "_testId": "urn:uuid:15bcb6bc-217b-4665-8a5f-6ce06324cc40", "_events": {}, "_eventsCount": 1, "cell": { @@ -8113,19 +8113,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7421, + "_idleStart": 4104, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8135,9 +8135,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:a7e5f188-9909-4de9-b777-b3237fa72bb8", + "_testId": "urn:uuid:9de3a40d-f568-4e6c-b4cb-e80ee4564fde", "_events": {}, "_eventsCount": 1, "cell": { @@ -8148,7 +8148,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7559, + "_idleStart": 4224, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8165,7 +8165,7 @@ { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8175,9 +8175,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "-1rbVZKWXAu-bdf8_rl6y", + "parent": "t_i1u5EhNFf1XdqdvdWsR", "ctx": null, - "_testId": "urn:uuid:d7a14432-4474-4c84-b052-25010d5ffa99", + "_testId": "urn:uuid:de26503c-b107-4496-aa73-05b645efecc4", "_events": {}, "_eventsCount": 1, "cell": { @@ -8188,7 +8188,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6225, + "_idleStart": 3227, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8200,7 +8200,7 @@ { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8210,9 +8210,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2cLPnzMEkCR2YkfEtKULU", + "parent": "wl109L9-Y6eD7W6YE1P_m", "ctx": null, - "_testId": "urn:uuid:9226dfca-38fb-4ac5-9d77-0d3cf2b3e298", + "_testId": "urn:uuid:21b89447-3c3e-4a59-a33a-2a7bf9f3136d", "_events": {}, "_eventsCount": 1, "cell": { @@ -8223,7 +8223,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6796, + "_idleStart": 3603, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8235,7 +8235,7 @@ { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8245,9 +8245,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "QvtiwsGiKjfhfciax2Nrv", + "parent": "Cz3kDyo8hWoyT1M8zw2h6", "ctx": null, - "_testId": "urn:uuid:2b790f03-4ace-4b5a-b4a0-24d667588980", + "_testId": "urn:uuid:8fd9749d-d58a-45bc-88b9-02dec4563d57", "_events": {}, "_eventsCount": 1, "cell": { @@ -8258,19 +8258,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6915, + "_idleStart": 3716, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8280,9 +8280,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "lDPlrWm5zTUXoimBnByz4", + "parent": "_09Kxn4AN2rW44sceltLx", "ctx": null, - "_testId": "urn:uuid:5483a9df-6a1b-4a17-891d-6afd7cc0e5ef", + "_testId": "urn:uuid:df61c253-654d-4374-bdd7-bfd07f505800", "_events": {}, "_eventsCount": 1, "cell": { @@ -8293,7 +8293,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7365, + "_idleStart": 4063, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8305,7 +8305,7 @@ { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8315,9 +8315,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "2ZP3Vy04nCdRQYVkCZcEx", + "parent": "EDh3PKSnGdOsicZmU10rw", "ctx": null, - "_testId": "urn:uuid:924c045d-476d-4769-be6b-9f7de365c157", + "_testId": "urn:uuid:c2604341-060f-4697-9743-4c9d923991c3", "_events": {}, "_eventsCount": 1, "cell": { @@ -8328,7 +8328,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7421, + "_idleStart": 4104, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8340,7 +8340,7 @@ { "type": "test", "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8350,9 +8350,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", - "parent": "zhYW9EqT2r7hpPP9Mq6nI", + "parent": "L9b60KG46G2wf8dUSxGAd", "ctx": null, - "_testId": "urn:uuid:5ebe6b4d-ab4f-4be5-96db-aefd6b7d85e3", + "_testId": "urn:uuid:e34bfba5-d5af-49ba-822d-7f76a0ed687f", "_events": {}, "_eventsCount": 1, "cell": { @@ -8363,12 +8363,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7559, + "_idleStart": 4225, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" } @@ -8376,6 +8376,32 @@ } ] }, + { + "title": "ecdsa-rdfc-2019 (issuers) VC 2.0", + "ctx": null, + "suites": [], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "0dZXmZhGXg3f6MMJpyjWG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/10-rdfc-create.js", + "matrix": true, + "report": true, + "rowLabel": "Test Name", + "columnLabel": "Implementation", + "columns": [], + "rows": [] + }, { "title": "Data Integrity (ecdsa-rdfc-2019 verifiers)", "ctx": null, @@ -8398,9 +8424,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:5290fecd-a9f2-4221-9f4b-d1e56a6b964c", + "_testId": "urn:uuid:7074fa2e-7edf-4929-a963-4234ebf1a249", "_events": {}, "_eventsCount": 1, "cell": { @@ -8411,12 +8437,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7585, + "_idleStart": 4251, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 59, "state": "passed", "speed": "medium" }, @@ -8433,9 +8459,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:c0b9695f-6d86-4b6e-b09d-b667b4527ca4", + "_testId": "urn:uuid:6f822275-0ed5-47a7-95bc-abeb4df40931", "_events": {}, "_eventsCount": 1, "cell": { @@ -8446,14 +8472,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7626, + "_idleStart": 4314, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 68, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -8468,9 +8494,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:dc33d6c8-9baa-4775-b8ee-898cf8d57ba5", + "_testId": "urn:uuid:34e03dab-c1b7-44cd-b711-54a6ec3cbbcf", "_events": {}, "_eventsCount": 1, "cell": { @@ -8481,12 +8507,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7662, + "_idleStart": 4383, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 56, "state": "passed", "speed": "medium" }, @@ -8503,9 +8529,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:0698ee86-e14e-4da7-8ecb-820a54658ba9", + "_testId": "urn:uuid:36d96502-95d4-40ee-9c53-929a990e102c", "_events": {}, "_eventsCount": 1, "cell": { @@ -8516,12 +8542,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7706, + "_idleStart": 4438, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 52, "state": "passed", "speed": "medium" }, @@ -8538,9 +8564,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:e3c4bf84-4fa8-49c0-a4b4-6d76adaab569", + "_testId": "urn:uuid:f0336b67-6038-4e56-9c97-4b5422a8146c", "_events": {}, "_eventsCount": 1, "cell": { @@ -8551,12 +8577,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7744, + "_idleStart": 4491, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 54, "state": "passed", "speed": "medium" }, @@ -8573,9 +8599,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:c6fc473b-a3af-444f-80cd-772e0a0f03a9", + "_testId": "urn:uuid:6bc59bfd-8429-4a6b-8704-1129d0fa2678", "_events": {}, "_eventsCount": 1, "cell": { @@ -8586,14 +8612,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7785, + "_idleStart": 4544, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 91, + "duration": 44, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -8608,9 +8634,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:42d015ef-0061-47e0-8e9e-43c6af686dee", + "_testId": "urn:uuid:0bd01c32-9c24-44e2-9b96-5ef9e371062b", "_events": {}, "_eventsCount": 1, "cell": { @@ -8621,14 +8647,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7876, + "_idleStart": 4588, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 44, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -8643,9 +8669,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:6f2da9bc-467f-45d2-b06d-ef012139c7c6", + "_testId": "urn:uuid:30a56717-27cc-4723-a921-6e4fdde4aac7", "_events": {}, "_eventsCount": 1, "cell": { @@ -8656,12 +8682,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7913, + "_idleStart": 4633, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 63, + "duration": 58, "state": "passed", "speed": "medium" }, @@ -8678,9 +8704,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:9859899d-34dc-4c80-9afe-ce2a8359cb58", + "_testId": "urn:uuid:5a47fa55-3aad-43ca-a38f-15fc94493632", "_events": {}, "_eventsCount": 1, "cell": { @@ -8691,12 +8717,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7976, + "_idleStart": 4692, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 51, "state": "passed", "speed": "medium" }, @@ -8713,9 +8739,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:cb5e6d21-ef16-4e49-82af-bd00be815b54", + "_testId": "urn:uuid:e4b82c1a-1ed0-4a3b-a996-02d8a94e47ee", "_events": {}, "_eventsCount": 1, "cell": { @@ -8726,12 +8752,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8016, + "_idleStart": 4743, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 51, "state": "passed", "speed": "medium" }, @@ -8748,9 +8774,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:3fe2e4d6-9d77-4de7-91ce-3d339fb6c166", + "_testId": "urn:uuid:32a3ad69-783d-47d2-93ea-d54b56dc7182", "_events": {}, "_eventsCount": 1, "cell": { @@ -8761,12 +8787,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8072, + "_idleStart": 4794, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 39, + "duration": 42, "state": "passed", "speed": "medium" }, @@ -8783,9 +8809,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:8c84d841-b110-4b87-a6d0-ef16b781e244", + "_testId": "urn:uuid:d58d24c6-5b06-4781-9fc9-4e914dc1521a", "_events": {}, "_eventsCount": 1, "cell": { @@ -8796,12 +8822,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8111, + "_idleStart": 4837, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 62, + "duration": 54, "state": "passed", "speed": "medium" }, @@ -8818,9 +8844,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:bac6ae98-e57e-403c-ba6b-02e3be8f7e87", + "_testId": "urn:uuid:894136f2-14dc-4984-8b23-6ff585f3cd2d", "_events": {}, "_eventsCount": 1, "cell": { @@ -8831,14 +8857,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8172, + "_idleStart": 4890, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 56, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -8853,9 +8879,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:bda5c1ab-b57c-4d7e-b492-f93512b4a5b6", + "_testId": "urn:uuid:2a0f99b8-5328-45a4-a226-1e2ad639cc66", "_events": {}, "_eventsCount": 1, "cell": { @@ -8866,14 +8892,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8210, + "_idleStart": 4946, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 64, + "duration": 230, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -8888,9 +8914,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:c8ff1c50-5e07-4d6e-8004-f0961808d884", + "_testId": "urn:uuid:3feb3f75-aeed-4fa5-ada6-54811e0a2b52", "_events": {}, "_eventsCount": 1, "cell": { @@ -8901,14 +8927,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8274, + "_idleStart": 5176, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 101, + "duration": 52, "state": "passed", - "speed": "slow" + "speed": "medium" } ], "root": false, @@ -8928,7 +8954,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", "originalTitle": "\"before all\" hook", @@ -8938,12 +8964,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7561, + "_idleStart": 4226, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 26, "_error": null } ], @@ -8955,9 +8981,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "hHhLGzGbtDaWfbef4FkN3", + "parent": "hcx1TDGuKhPJ0L7f-o477", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "_testId": "urn:uuid:84853e4f-1441-4171-9fd8-60d9723dd25a" + "_testId": "urn:uuid:2fda3c10-6a70-48ec-9eb2-a3a662314514" }, { "title": "Digital Bazaar: P-256, P-384", @@ -8977,9 +9003,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:1c061be8-06e8-410c-9ccf-33f29ebdbcc1", + "_testId": "urn:uuid:638157de-fd02-4a61-ad7d-0f1a5fdcb303", "_events": {}, "_eventsCount": 1, "cell": { @@ -8990,12 +9016,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8376, + "_idleStart": 5230, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 217, + "duration": 201, "state": "passed", "speed": "slow" }, @@ -9012,9 +9038,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:25de662d-192c-4fc5-b3d4-51a612e795f4", + "_testId": "urn:uuid:000f2f9c-4124-45ef-96c9-6bd2f28a1d6d", "_events": {}, "_eventsCount": 1, "cell": { @@ -9025,12 +9051,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8594, + "_idleStart": 5431, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, + "duration": 47, "state": "passed", "speed": "medium" }, @@ -9047,9 +9073,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:9ee07065-a740-46fa-9f25-3cb67ea29479", + "_testId": "urn:uuid:196fbe47-0673-4e84-9c73-e78076172665", "_events": {}, "_eventsCount": 1, "cell": { @@ -9060,12 +9086,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8645, + "_idleStart": 5479, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, + "duration": 48, "state": "passed", "speed": "medium" }, @@ -9082,9 +9108,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:ce9a9cb6-d7d9-445f-bb50-603d0e6c0292", + "_testId": "urn:uuid:8191781b-a9a4-4c09-be3c-c20d06af3096", "_events": {}, "_eventsCount": 1, "cell": { @@ -9095,12 +9121,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8700, + "_idleStart": 5527, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 44, "state": "passed", "speed": "medium" }, @@ -9117,9 +9143,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:fee8ba52-6109-4ce4-bfb6-40087b09f522", + "_testId": "urn:uuid:4632cc22-0561-4da7-bd66-3b24913be348", "_events": {}, "_eventsCount": 1, "cell": { @@ -9130,12 +9156,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8758, + "_idleStart": 5571, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 67, + "duration": 64, "state": "passed", "speed": "medium" }, @@ -9152,9 +9178,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:62b36c6d-27a6-4a44-bb41-fcc1e7180439", + "_testId": "urn:uuid:bdfb3f2c-7d23-41c2-a6e2-bf67dbacf958", "_events": {}, "_eventsCount": 1, "cell": { @@ -9165,12 +9191,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8825, + "_idleStart": 5635, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 51, "state": "passed", "speed": "medium" }, @@ -9187,9 +9213,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:050bd3fc-6981-4aae-9f17-2d5ad898be22", + "_testId": "urn:uuid:6380a464-074f-48e5-bd05-1da052344b7b", "_events": {}, "_eventsCount": 1, "cell": { @@ -9200,12 +9226,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8886, + "_idleStart": 5686, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 41, "state": "passed", "speed": "medium" }, @@ -9222,9 +9248,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:7ff0d587-33c5-44e3-8a50-d13bfb50a55d", + "_testId": "urn:uuid:543acff3-fc65-4165-a7b5-16e9993b6b64", "_events": {}, "_eventsCount": 1, "cell": { @@ -9235,12 +9261,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8940, + "_idleStart": 5727, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 39, "state": "passed", "speed": "medium" }, @@ -9257,9 +9283,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:3f87b3fa-f9ad-400f-b0d1-abe302fe96e5", + "_testId": "urn:uuid:bd1f0ff4-f251-460c-846c-84eac2eafa6d", "_events": {}, "_eventsCount": 1, "cell": { @@ -9270,12 +9296,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8995, + "_idleStart": 5766, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 45, "state": "failed", "err": { "name": "AssertionError", @@ -9299,9 +9325,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:3a31c13c-b336-4f28-8b49-1e7c16fc6da2", + "_testId": "urn:uuid:54e7e8bb-086c-4842-89f9-46f33e98990a", "_events": {}, "_eventsCount": 1, "cell": { @@ -9312,14 +9338,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9053, + "_idleStart": 5812, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 58, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -9334,9 +9360,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:c8527cfb-3e85-4fd0-a0f4-b69bf5dc21a2", + "_testId": "urn:uuid:16393367-cb67-447c-86db-a6f78b639e51", "_events": {}, "_eventsCount": 1, "cell": { @@ -9347,14 +9373,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9139, + "_idleStart": 5870, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 105, + "duration": 56, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -9369,9 +9395,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:2a636820-f417-48ac-bbce-3152f88e65fb", + "_testId": "urn:uuid:8a11ef9e-36fc-466f-b255-7d6fdc6ed53d", "_events": {}, "_eventsCount": 1, "cell": { @@ -9382,12 +9408,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9244, + "_idleStart": 5927, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 48, "state": "failed", "err": { "name": "AssertionError", @@ -9411,9 +9437,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:e6f9c040-b277-48b2-ac37-3bbba9208af9", + "_testId": "urn:uuid:65d9c022-4364-4885-b306-4ac93bc23503", "_events": {}, "_eventsCount": 1, "cell": { @@ -9424,12 +9450,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9305, + "_idleStart": 5975, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 64, "state": "passed", "speed": "medium" }, @@ -9446,9 +9472,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:8b0eefad-afb3-4aa2-85e7-2f5f2a4054ec", + "_testId": "urn:uuid:0959274c-56ca-4a0d-a8a3-c030a5c70ef8", "_events": {}, "_eventsCount": 1, "cell": { @@ -9459,12 +9485,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9362, + "_idleStart": 6039, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 41, "state": "passed", "speed": "medium" }, @@ -9481,9 +9507,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:0bb17d24-c78c-47ce-922d-6e928a8cbc4e", + "_testId": "urn:uuid:20052682-75ac-4800-bc34-4a88b6890628", "_events": {}, "_eventsCount": 1, "cell": { @@ -9494,12 +9520,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9414, + "_idleStart": 6080, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 42, "state": "passed", "speed": "medium" } @@ -9521,7 +9547,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", "originalTitle": "\"before all\" hook", @@ -9531,12 +9557,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8376, + "_idleStart": 5229, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 2, "_error": null } ], @@ -9548,9 +9574,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "hHhLGzGbtDaWfbef4FkN3", + "parent": "hcx1TDGuKhPJ0L7f-o477", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "_testId": "urn:uuid:2d11668f-db83-4290-a6e2-079d5a20f608" + "_testId": "urn:uuid:c9735c86-171a-493f-9193-dc429adbbbb9" }, { "title": "SpruceID: P-256", @@ -9570,9 +9596,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:db05cf48-02d3-433e-b396-92b6889a3c8b", + "_testId": "urn:uuid:355da723-0b52-4f67-92d5-d94e65028cf1", "_events": {}, "_eventsCount": 1, "cell": { @@ -9583,14 +9609,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9464, + "_idleStart": 6124, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 22, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9605,9 +9631,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:c93106eb-6682-4931-9490-5b1a53d5cb47", + "_testId": "urn:uuid:b7c14268-17e6-4bec-b07a-7e7c85302caa", "_events": {}, "_eventsCount": 1, "cell": { @@ -9618,14 +9644,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9505, + "_idleStart": 6147, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, + "duration": 22, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9640,9 +9666,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:3c1fc445-a462-4a26-b984-7f75a520d1cf", + "_testId": "urn:uuid:d4d8530c-7c21-49ce-acc5-73e7c0b92755", "_events": {}, "_eventsCount": 1, "cell": { @@ -9653,14 +9679,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9551, + "_idleStart": 6169, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 21, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9675,9 +9701,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:1919004e-86d2-4915-bdb1-2b2028193f0c", + "_testId": "urn:uuid:a8f59d9f-95e6-4190-aee9-6757aa53648e", "_events": {}, "_eventsCount": 1, "cell": { @@ -9688,14 +9714,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9591, + "_idleStart": 6190, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 23, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9710,9 +9736,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:64e4e238-620b-45d3-942e-192204df0907", + "_testId": "urn:uuid:ee974ccf-1fdd-4e00-b653-6d96e309f9c1", "_events": {}, "_eventsCount": 1, "cell": { @@ -9723,14 +9749,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9631, + "_idleStart": 6213, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 22, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9745,9 +9771,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:d6847b2b-7cda-4f92-9d02-734acaa0e83a", + "_testId": "urn:uuid:918d6b9c-ab62-4bc5-875a-6557b559c19d", "_events": {}, "_eventsCount": 1, "cell": { @@ -9758,14 +9784,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9671, + "_idleStart": 6235, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 23, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9780,9 +9806,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:01f3a003-1373-40a8-92eb-42124350cacb", + "_testId": "urn:uuid:d3916cd3-42ba-4b0d-9169-692141e9a3ce", "_events": {}, "_eventsCount": 1, "cell": { @@ -9793,14 +9819,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9720, + "_idleStart": 6258, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 20, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9815,9 +9841,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:0caf7230-9e72-41b6-8183-8b6b4cfe26d3", + "_testId": "urn:uuid:337477b8-68c9-434d-8372-5aef903be35c", "_events": {}, "_eventsCount": 1, "cell": { @@ -9828,14 +9854,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9760, + "_idleStart": 6278, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 39, + "duration": 31, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9850,9 +9876,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:aa04b2a6-25c2-4698-81b9-1581a330bbe1", + "_testId": "urn:uuid:eedc70eb-9180-46b0-9eb6-0722b9aa0b6b", "_events": {}, "_eventsCount": 1, "cell": { @@ -9863,14 +9889,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9800, + "_idleStart": 6309, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 31, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9885,9 +9911,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:f2d2d8ae-f255-4e82-8787-641c767d0f83", + "_testId": "urn:uuid:a724eab5-186b-4f94-97da-698d8470e2e0", "_events": {}, "_eventsCount": 1, "cell": { @@ -9898,14 +9924,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9842, + "_idleStart": 6340, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 25, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9920,9 +9946,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:590407ca-3e2c-4bff-afeb-df07cd23c34f", + "_testId": "urn:uuid:c372d813-168b-4740-bace-985c2e7540c5", "_events": {}, "_eventsCount": 1, "cell": { @@ -9933,14 +9959,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9882, + "_idleStart": 6366, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 21, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9955,9 +9981,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:18bb45ec-e900-4da4-b35d-ee077716f93b", + "_testId": "urn:uuid:4d749c43-d153-4dc0-93f9-e043feec48a0", "_events": {}, "_eventsCount": 1, "cell": { @@ -9968,14 +9994,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9926, + "_idleStart": 6388, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 22, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -9990,9 +10016,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:d83177ac-e7e1-4bce-b220-766ec3fc2a4c", + "_testId": "urn:uuid:c98292dc-baf3-4700-a1de-bbb2a84475b3", "_events": {}, "_eventsCount": 1, "cell": { @@ -10003,14 +10029,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9966, + "_idleStart": 6411, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, + "duration": 28, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -10025,9 +10051,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:2635b715-f16d-496a-992f-d5bd5eccad3f", + "_testId": "urn:uuid:64694fd0-ca3f-4256-9b84-2ac3a8e2db8f", "_events": {}, "_eventsCount": 1, "cell": { @@ -10038,14 +10064,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10011, + "_idleStart": 6439, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 21, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -10060,9 +10086,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:5905a83e-0ea7-43cf-8241-e0e61ca6f17f", + "_testId": "urn:uuid:db94dba2-2aa0-4f0f-9a1a-ccfa2320ce3e", "_events": {}, "_eventsCount": 1, "cell": { @@ -10073,14 +10099,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10050, + "_idleStart": 6460, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 20, "state": "passed", - "speed": "medium" + "speed": "fast" } ], "root": false, @@ -10100,7 +10126,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", "originalTitle": "\"before all\" hook", @@ -10110,12 +10136,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9464, + "_idleStart": 6123, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "_error": null } ], @@ -10127,9 +10153,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "hHhLGzGbtDaWfbef4FkN3", + "parent": "hcx1TDGuKhPJ0L7f-o477", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "_testId": "urn:uuid:bce87097-d416-4548-801b-a5a9a374d8da" + "_testId": "urn:uuid:82866f81-2722-45f9-9607-c59636504df2" }, { "title": "bovine: P-256", @@ -10149,9 +10175,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:8c7ce2e9-2d36-491d-945a-6b76a1a2e3c8", + "_testId": "urn:uuid:a08da1c9-b059-4556-9bcb-f4262cb9deff", "_events": {}, "_eventsCount": 1, "cell": { @@ -10162,12 +10188,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10091, + "_idleStart": 6482, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 98, "state": "passed", "speed": "slow" }, @@ -10184,9 +10210,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:7bf99eb2-f979-4075-91a4-845856ea9602", + "_testId": "urn:uuid:60b5d209-2b99-4609-8415-cff67505869f", "_events": {}, "_eventsCount": 1, "cell": { @@ -10197,12 +10223,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10204, + "_idleStart": 6579, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 112, + "duration": 96, "state": "passed", "speed": "slow" }, @@ -10219,9 +10245,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:bc61b81c-53c4-422d-b30d-87cbc81234b6", + "_testId": "urn:uuid:43b1b655-bf30-4695-be91-dc4df021cbbc", "_events": {}, "_eventsCount": 1, "cell": { @@ -10232,12 +10258,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10317, + "_idleStart": 6675, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 96, "state": "passed", "speed": "slow" }, @@ -10254,9 +10280,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:caa1b791-0a9f-44a1-8c3f-37fa09e1048c", + "_testId": "urn:uuid:736d747c-5cdc-4641-95a7-9718367997c8", "_events": {}, "_eventsCount": 1, "cell": { @@ -10267,12 +10293,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10430, + "_idleStart": 6772, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" }, @@ -10289,9 +10315,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:f1d45443-dbbf-46be-955c-eac773eb8d4c", + "_testId": "urn:uuid:172ecab7-ff30-4633-98e9-92ae43e86167", "_events": {}, "_eventsCount": 1, "cell": { @@ -10302,12 +10328,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10545, + "_idleStart": 6869, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 112, + "duration": 97, "state": "passed", "speed": "slow" }, @@ -10324,9 +10350,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:3363a0cc-bb63-4969-98bc-90f386e5206a", + "_testId": "urn:uuid:f7af7a8f-3f81-4e43-b415-ed443629ac0a", "_events": {}, "_eventsCount": 1, "cell": { @@ -10337,12 +10363,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10657, + "_idleStart": 6966, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 112, + "duration": 98, "state": "passed", "speed": "slow" }, @@ -10359,9 +10385,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:9300525c-2fa7-4c1e-b57c-dace017e6df9", + "_testId": "urn:uuid:5728ec86-3fcf-40c0-9806-3cc314892151", "_events": {}, "_eventsCount": 1, "cell": { @@ -10372,12 +10398,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10770, + "_idleStart": 7064, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" }, @@ -10394,9 +10420,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:21e19462-8066-4e9d-a5b6-082b436c8f40", + "_testId": "urn:uuid:74e4b2cc-ac43-468c-a6b3-292fee6a0886", "_events": {}, "_eventsCount": 1, "cell": { @@ -10407,12 +10433,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10883, + "_idleStart": 7161, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" }, @@ -10429,9 +10455,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:c59c3a36-84b4-4e95-b09a-c15a88aa280a", + "_testId": "urn:uuid:1347e1ac-a2d8-4e0e-aa05-a7c17dff40eb", "_events": {}, "_eventsCount": 1, "cell": { @@ -10442,12 +10468,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10997, + "_idleStart": 7258, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" }, @@ -10464,9 +10490,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:477d65a0-32b1-4851-bd50-bf3b5d5b4414", + "_testId": "urn:uuid:501faca6-eaa8-4c6a-ba1c-7ef8840f4bc8", "_events": {}, "_eventsCount": 1, "cell": { @@ -10477,12 +10503,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11110, + "_idleStart": 7356, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" }, @@ -10499,9 +10525,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:57c23e70-ee67-4a2f-b42d-e212ba63b8a6", + "_testId": "urn:uuid:457a8e33-9a9a-42ea-9e9f-5f985f3cc2ce", "_events": {}, "_eventsCount": 1, "cell": { @@ -10512,12 +10538,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11223, + "_idleStart": 7453, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 98, "state": "passed", "speed": "slow" }, @@ -10534,9 +10560,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:e6bccff6-4532-4d29-84aa-8d83f4c5f44d", + "_testId": "urn:uuid:ecdadb54-0d54-4c32-b06a-dabd27750a85", "_events": {}, "_eventsCount": 1, "cell": { @@ -10547,12 +10573,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11337, + "_idleStart": 7551, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 98, "state": "passed", "speed": "slow" }, @@ -10569,9 +10595,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:7919e679-39f3-45f7-9a9b-0747cf506088", + "_testId": "urn:uuid:948e430f-243c-44f9-9ebe-df98577b307c", "_events": {}, "_eventsCount": 1, "cell": { @@ -10582,12 +10608,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11450, + "_idleStart": 7649, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" }, @@ -10604,9 +10630,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:8afb02d3-14a0-4913-bf48-bc4b77786ab7", + "_testId": "urn:uuid:ac1d0898-d027-414e-ba07-567b9e985baa", "_events": {}, "_eventsCount": 1, "cell": { @@ -10617,12 +10643,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11564, + "_idleStart": 7746, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 114, + "duration": 97, "state": "passed", "speed": "slow" }, @@ -10639,9 +10665,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:a060cce3-e685-42c1-896a-3760028a74c2", + "_testId": "urn:uuid:f98672f3-c4d7-4fab-a591-cf0846ab3ea7", "_events": {}, "_eventsCount": 1, "cell": { @@ -10652,12 +10678,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11678, + "_idleStart": 7843, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 96, "state": "passed", "speed": "slow" } @@ -10679,7 +10705,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", "originalTitle": "\"before all\" hook", @@ -10689,7 +10715,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10091, + "_idleStart": 6481, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -10706,9 +10732,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "hHhLGzGbtDaWfbef4FkN3", + "parent": "hcx1TDGuKhPJ0L7f-o477", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "_testId": "urn:uuid:fd3ec3de-0f78-464e-84c2-308304ef4cb0" + "_testId": "urn:uuid:db27d61a-ac9c-4ab1-93ec-2b37eb7dd9a4" } ], "root": false, @@ -10724,13 +10750,13 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "Lj91xXIjIjtnwr_GDEsZw", + "parent": "GzHifvD62JwDWet-oBmTR", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", "matrix": true, "report": true, "rowLabel": "Test Name", "columnLabel": "Verifier", - "_testId": "urn:uuid:f0b01d93-fcde-42ac-bfd9-5bbd22d3c865", + "_testId": "urn:uuid:1765304a-c4c7-4343-aaf9-eefcd3171509", "columns": [ "apicatalog.com: P-256, P-384", "Digital Bazaar: P-256, P-384", @@ -10754,9 +10780,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:5290fecd-a9f2-4221-9f4b-d1e56a6b964c", + "_testId": "urn:uuid:7074fa2e-7edf-4929-a963-4234ebf1a249", "_events": {}, "_eventsCount": 1, "cell": { @@ -10767,12 +10793,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7585, + "_idleStart": 4251, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 59, "state": "passed", "speed": "medium" }, @@ -10789,9 +10815,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:1c061be8-06e8-410c-9ccf-33f29ebdbcc1", + "_testId": "urn:uuid:638157de-fd02-4a61-ad7d-0f1a5fdcb303", "_events": {}, "_eventsCount": 1, "cell": { @@ -10802,12 +10828,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8376, + "_idleStart": 5230, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 217, + "duration": 201, "state": "passed", "speed": "slow" }, @@ -10824,9 +10850,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:db05cf48-02d3-433e-b396-92b6889a3c8b", + "_testId": "urn:uuid:355da723-0b52-4f67-92d5-d94e65028cf1", "_events": {}, "_eventsCount": 1, "cell": { @@ -10837,14 +10863,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9464, + "_idleStart": 6124, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 22, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -10859,9 +10885,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:8c7ce2e9-2d36-491d-945a-6b76a1a2e3c8", + "_testId": "urn:uuid:a08da1c9-b059-4556-9bcb-f4262cb9deff", "_events": {}, "_eventsCount": 1, "cell": { @@ -10872,12 +10898,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10091, + "_idleStart": 6482, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 98, "state": "passed", "speed": "slow" } @@ -10899,9 +10925,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:c0b9695f-6d86-4b6e-b09d-b667b4527ca4", + "_testId": "urn:uuid:6f822275-0ed5-47a7-95bc-abeb4df40931", "_events": {}, "_eventsCount": 1, "cell": { @@ -10912,14 +10938,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7626, + "_idleStart": 4314, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 68, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -10934,9 +10960,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:25de662d-192c-4fc5-b3d4-51a612e795f4", + "_testId": "urn:uuid:000f2f9c-4124-45ef-96c9-6bd2f28a1d6d", "_events": {}, "_eventsCount": 1, "cell": { @@ -10947,12 +10973,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8594, + "_idleStart": 5431, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, + "duration": 47, "state": "passed", "speed": "medium" }, @@ -10969,9 +10995,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:c93106eb-6682-4931-9490-5b1a53d5cb47", + "_testId": "urn:uuid:b7c14268-17e6-4bec-b07a-7e7c85302caa", "_events": {}, "_eventsCount": 1, "cell": { @@ -10982,14 +11008,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9505, + "_idleStart": 6147, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, + "duration": 22, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -11004,9 +11030,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:7bf99eb2-f979-4075-91a4-845856ea9602", + "_testId": "urn:uuid:60b5d209-2b99-4609-8415-cff67505869f", "_events": {}, "_eventsCount": 1, "cell": { @@ -11017,12 +11043,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10204, + "_idleStart": 6579, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 112, + "duration": 96, "state": "passed", "speed": "slow" } @@ -11044,9 +11070,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:dc33d6c8-9baa-4775-b8ee-898cf8d57ba5", + "_testId": "urn:uuid:34e03dab-c1b7-44cd-b711-54a6ec3cbbcf", "_events": {}, "_eventsCount": 1, "cell": { @@ -11057,12 +11083,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7662, + "_idleStart": 4383, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 56, "state": "passed", "speed": "medium" }, @@ -11079,9 +11105,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:9ee07065-a740-46fa-9f25-3cb67ea29479", + "_testId": "urn:uuid:196fbe47-0673-4e84-9c73-e78076172665", "_events": {}, "_eventsCount": 1, "cell": { @@ -11092,12 +11118,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8645, + "_idleStart": 5479, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, + "duration": 48, "state": "passed", "speed": "medium" }, @@ -11114,9 +11140,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:3c1fc445-a462-4a26-b984-7f75a520d1cf", + "_testId": "urn:uuid:d4d8530c-7c21-49ce-acc5-73e7c0b92755", "_events": {}, "_eventsCount": 1, "cell": { @@ -11127,14 +11153,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9551, + "_idleStart": 6169, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 21, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -11149,9 +11175,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:bc61b81c-53c4-422d-b30d-87cbc81234b6", + "_testId": "urn:uuid:43b1b655-bf30-4695-be91-dc4df021cbbc", "_events": {}, "_eventsCount": 1, "cell": { @@ -11162,12 +11188,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10317, + "_idleStart": 6675, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 96, "state": "passed", "speed": "slow" } @@ -11189,9 +11215,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:0698ee86-e14e-4da7-8ecb-820a54658ba9", + "_testId": "urn:uuid:36d96502-95d4-40ee-9c53-929a990e102c", "_events": {}, "_eventsCount": 1, "cell": { @@ -11202,12 +11228,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7706, + "_idleStart": 4438, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 52, "state": "passed", "speed": "medium" }, @@ -11224,9 +11250,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:ce9a9cb6-d7d9-445f-bb50-603d0e6c0292", + "_testId": "urn:uuid:8191781b-a9a4-4c09-be3c-c20d06af3096", "_events": {}, "_eventsCount": 1, "cell": { @@ -11237,12 +11263,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8700, + "_idleStart": 5527, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 44, "state": "passed", "speed": "medium" }, @@ -11259,9 +11285,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:1919004e-86d2-4915-bdb1-2b2028193f0c", + "_testId": "urn:uuid:a8f59d9f-95e6-4190-aee9-6757aa53648e", "_events": {}, "_eventsCount": 1, "cell": { @@ -11272,14 +11298,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9591, + "_idleStart": 6190, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 23, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -11294,9 +11320,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:caa1b791-0a9f-44a1-8c3f-37fa09e1048c", + "_testId": "urn:uuid:736d747c-5cdc-4641-95a7-9718367997c8", "_events": {}, "_eventsCount": 1, "cell": { @@ -11307,12 +11333,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10430, + "_idleStart": 6772, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" } @@ -11334,9 +11360,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:e3c4bf84-4fa8-49c0-a4b4-6d76adaab569", + "_testId": "urn:uuid:f0336b67-6038-4e56-9c97-4b5422a8146c", "_events": {}, "_eventsCount": 1, "cell": { @@ -11347,12 +11373,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7744, + "_idleStart": 4491, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 54, "state": "passed", "speed": "medium" }, @@ -11369,9 +11395,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:fee8ba52-6109-4ce4-bfb6-40087b09f522", + "_testId": "urn:uuid:4632cc22-0561-4da7-bd66-3b24913be348", "_events": {}, "_eventsCount": 1, "cell": { @@ -11382,12 +11408,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8758, + "_idleStart": 5571, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 67, + "duration": 64, "state": "passed", "speed": "medium" }, @@ -11404,9 +11430,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:64e4e238-620b-45d3-942e-192204df0907", + "_testId": "urn:uuid:ee974ccf-1fdd-4e00-b653-6d96e309f9c1", "_events": {}, "_eventsCount": 1, "cell": { @@ -11417,14 +11443,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9631, + "_idleStart": 6213, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 22, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -11439,9 +11465,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:f1d45443-dbbf-46be-955c-eac773eb8d4c", + "_testId": "urn:uuid:172ecab7-ff30-4633-98e9-92ae43e86167", "_events": {}, "_eventsCount": 1, "cell": { @@ -11452,12 +11478,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10545, + "_idleStart": 6869, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 112, + "duration": 97, "state": "passed", "speed": "slow" } @@ -11479,9 +11505,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:c6fc473b-a3af-444f-80cd-772e0a0f03a9", + "_testId": "urn:uuid:6bc59bfd-8429-4a6b-8704-1129d0fa2678", "_events": {}, "_eventsCount": 1, "cell": { @@ -11492,14 +11518,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7785, + "_idleStart": 4544, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 91, + "duration": 44, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -11514,9 +11540,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:62b36c6d-27a6-4a44-bb41-fcc1e7180439", + "_testId": "urn:uuid:bdfb3f2c-7d23-41c2-a6e2-bf67dbacf958", "_events": {}, "_eventsCount": 1, "cell": { @@ -11527,12 +11553,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8825, + "_idleStart": 5635, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 51, "state": "passed", "speed": "medium" }, @@ -11549,9 +11575,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:d6847b2b-7cda-4f92-9d02-734acaa0e83a", + "_testId": "urn:uuid:918d6b9c-ab62-4bc5-875a-6557b559c19d", "_events": {}, "_eventsCount": 1, "cell": { @@ -11562,14 +11588,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9671, + "_idleStart": 6235, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 23, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -11584,9 +11610,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:3363a0cc-bb63-4969-98bc-90f386e5206a", + "_testId": "urn:uuid:f7af7a8f-3f81-4e43-b415-ed443629ac0a", "_events": {}, "_eventsCount": 1, "cell": { @@ -11597,12 +11623,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10657, + "_idleStart": 6966, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 112, + "duration": 98, "state": "passed", "speed": "slow" } @@ -11624,9 +11650,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:42d015ef-0061-47e0-8e9e-43c6af686dee", + "_testId": "urn:uuid:0bd01c32-9c24-44e2-9b96-5ef9e371062b", "_events": {}, "_eventsCount": 1, "cell": { @@ -11637,14 +11663,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7876, + "_idleStart": 4588, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 44, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -11659,9 +11685,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:050bd3fc-6981-4aae-9f17-2d5ad898be22", + "_testId": "urn:uuid:6380a464-074f-48e5-bd05-1da052344b7b", "_events": {}, "_eventsCount": 1, "cell": { @@ -11672,12 +11698,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8886, + "_idleStart": 5686, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 41, "state": "passed", "speed": "medium" }, @@ -11694,9 +11720,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:01f3a003-1373-40a8-92eb-42124350cacb", + "_testId": "urn:uuid:d3916cd3-42ba-4b0d-9169-692141e9a3ce", "_events": {}, "_eventsCount": 1, "cell": { @@ -11707,14 +11733,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9720, + "_idleStart": 6258, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 20, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -11729,9 +11755,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:9300525c-2fa7-4c1e-b57c-dace017e6df9", + "_testId": "urn:uuid:5728ec86-3fcf-40c0-9806-3cc314892151", "_events": {}, "_eventsCount": 1, "cell": { @@ -11742,12 +11768,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10770, + "_idleStart": 7064, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" } @@ -11769,9 +11795,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:6f2da9bc-467f-45d2-b06d-ef012139c7c6", + "_testId": "urn:uuid:30a56717-27cc-4723-a921-6e4fdde4aac7", "_events": {}, "_eventsCount": 1, "cell": { @@ -11782,12 +11808,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7913, + "_idleStart": 4633, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 63, + "duration": 58, "state": "passed", "speed": "medium" }, @@ -11804,9 +11830,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:7ff0d587-33c5-44e3-8a50-d13bfb50a55d", + "_testId": "urn:uuid:543acff3-fc65-4165-a7b5-16e9993b6b64", "_events": {}, "_eventsCount": 1, "cell": { @@ -11817,12 +11843,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8940, + "_idleStart": 5727, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 39, "state": "passed", "speed": "medium" }, @@ -11839,9 +11865,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:0caf7230-9e72-41b6-8183-8b6b4cfe26d3", + "_testId": "urn:uuid:337477b8-68c9-434d-8372-5aef903be35c", "_events": {}, "_eventsCount": 1, "cell": { @@ -11852,14 +11878,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9760, + "_idleStart": 6278, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 39, + "duration": 31, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -11874,9 +11900,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:21e19462-8066-4e9d-a5b6-082b436c8f40", + "_testId": "urn:uuid:74e4b2cc-ac43-468c-a6b3-292fee6a0886", "_events": {}, "_eventsCount": 1, "cell": { @@ -11887,12 +11913,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10883, + "_idleStart": 7161, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" } @@ -11914,9 +11940,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:9859899d-34dc-4c80-9afe-ce2a8359cb58", + "_testId": "urn:uuid:5a47fa55-3aad-43ca-a38f-15fc94493632", "_events": {}, "_eventsCount": 1, "cell": { @@ -11927,12 +11953,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7976, + "_idleStart": 4692, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 51, "state": "passed", "speed": "medium" }, @@ -11949,9 +11975,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:3f87b3fa-f9ad-400f-b0d1-abe302fe96e5", + "_testId": "urn:uuid:bd1f0ff4-f251-460c-846c-84eac2eafa6d", "_events": {}, "_eventsCount": 1, "cell": { @@ -11962,12 +11988,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8995, + "_idleStart": 5766, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 45, "state": "failed", "err": { "name": "AssertionError", @@ -11991,9 +12017,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:aa04b2a6-25c2-4698-81b9-1581a330bbe1", + "_testId": "urn:uuid:eedc70eb-9180-46b0-9eb6-0722b9aa0b6b", "_events": {}, "_eventsCount": 1, "cell": { @@ -12004,14 +12030,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9800, + "_idleStart": 6309, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 31, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -12026,9 +12052,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:c59c3a36-84b4-4e95-b09a-c15a88aa280a", + "_testId": "urn:uuid:1347e1ac-a2d8-4e0e-aa05-a7c17dff40eb", "_events": {}, "_eventsCount": 1, "cell": { @@ -12039,12 +12065,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10997, + "_idleStart": 7258, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" } @@ -12066,9 +12092,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:cb5e6d21-ef16-4e49-82af-bd00be815b54", + "_testId": "urn:uuid:e4b82c1a-1ed0-4a3b-a996-02d8a94e47ee", "_events": {}, "_eventsCount": 1, "cell": { @@ -12079,12 +12105,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8016, + "_idleStart": 4743, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 51, "state": "passed", "speed": "medium" }, @@ -12101,9 +12127,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:3a31c13c-b336-4f28-8b49-1e7c16fc6da2", + "_testId": "urn:uuid:54e7e8bb-086c-4842-89f9-46f33e98990a", "_events": {}, "_eventsCount": 1, "cell": { @@ -12114,14 +12140,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9053, + "_idleStart": 5812, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 58, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -12136,9 +12162,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:f2d2d8ae-f255-4e82-8787-641c767d0f83", + "_testId": "urn:uuid:a724eab5-186b-4f94-97da-698d8470e2e0", "_events": {}, "_eventsCount": 1, "cell": { @@ -12149,14 +12175,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9842, + "_idleStart": 6340, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 25, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -12171,9 +12197,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:477d65a0-32b1-4851-bd50-bf3b5d5b4414", + "_testId": "urn:uuid:501faca6-eaa8-4c6a-ba1c-7ef8840f4bc8", "_events": {}, "_eventsCount": 1, "cell": { @@ -12184,12 +12210,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11110, + "_idleStart": 7356, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" } @@ -12211,9 +12237,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:3fe2e4d6-9d77-4de7-91ce-3d339fb6c166", + "_testId": "urn:uuid:32a3ad69-783d-47d2-93ea-d54b56dc7182", "_events": {}, "_eventsCount": 1, "cell": { @@ -12224,12 +12250,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8072, + "_idleStart": 4794, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 39, + "duration": 42, "state": "passed", "speed": "medium" }, @@ -12246,9 +12272,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:c8527cfb-3e85-4fd0-a0f4-b69bf5dc21a2", + "_testId": "urn:uuid:16393367-cb67-447c-86db-a6f78b639e51", "_events": {}, "_eventsCount": 1, "cell": { @@ -12259,14 +12285,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9139, + "_idleStart": 5870, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 105, + "duration": 56, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -12281,9 +12307,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:590407ca-3e2c-4bff-afeb-df07cd23c34f", + "_testId": "urn:uuid:c372d813-168b-4740-bace-985c2e7540c5", "_events": {}, "_eventsCount": 1, "cell": { @@ -12294,14 +12320,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9882, + "_idleStart": 6366, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 21, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -12316,9 +12342,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:57c23e70-ee67-4a2f-b42d-e212ba63b8a6", + "_testId": "urn:uuid:457a8e33-9a9a-42ea-9e9f-5f985f3cc2ce", "_events": {}, "_eventsCount": 1, "cell": { @@ -12329,12 +12355,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11223, + "_idleStart": 7453, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 98, "state": "passed", "speed": "slow" } @@ -12356,9 +12382,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:8c84d841-b110-4b87-a6d0-ef16b781e244", + "_testId": "urn:uuid:d58d24c6-5b06-4781-9fc9-4e914dc1521a", "_events": {}, "_eventsCount": 1, "cell": { @@ -12369,12 +12395,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8111, + "_idleStart": 4837, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 62, + "duration": 54, "state": "passed", "speed": "medium" }, @@ -12391,9 +12417,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:2a636820-f417-48ac-bbce-3152f88e65fb", + "_testId": "urn:uuid:8a11ef9e-36fc-466f-b255-7d6fdc6ed53d", "_events": {}, "_eventsCount": 1, "cell": { @@ -12404,12 +12430,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9244, + "_idleStart": 5927, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 48, "state": "failed", "err": { "name": "AssertionError", @@ -12433,9 +12459,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:18bb45ec-e900-4da4-b35d-ee077716f93b", + "_testId": "urn:uuid:4d749c43-d153-4dc0-93f9-e043feec48a0", "_events": {}, "_eventsCount": 1, "cell": { @@ -12446,14 +12472,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9926, + "_idleStart": 6388, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 22, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -12468,9 +12494,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:e6bccff6-4532-4d29-84aa-8d83f4c5f44d", + "_testId": "urn:uuid:ecdadb54-0d54-4c32-b06a-dabd27750a85", "_events": {}, "_eventsCount": 1, "cell": { @@ -12481,12 +12507,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11337, + "_idleStart": 7551, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 98, "state": "passed", "speed": "slow" } @@ -12508,9 +12534,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:bac6ae98-e57e-403c-ba6b-02e3be8f7e87", + "_testId": "urn:uuid:894136f2-14dc-4984-8b23-6ff585f3cd2d", "_events": {}, "_eventsCount": 1, "cell": { @@ -12521,14 +12547,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8172, + "_idleStart": 4890, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 56, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -12543,9 +12569,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:e6f9c040-b277-48b2-ac37-3bbba9208af9", + "_testId": "urn:uuid:65d9c022-4364-4885-b306-4ac93bc23503", "_events": {}, "_eventsCount": 1, "cell": { @@ -12556,12 +12582,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9305, + "_idleStart": 5975, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 64, "state": "passed", "speed": "medium" }, @@ -12578,9 +12604,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:d83177ac-e7e1-4bce-b220-766ec3fc2a4c", + "_testId": "urn:uuid:c98292dc-baf3-4700-a1de-bbb2a84475b3", "_events": {}, "_eventsCount": 1, "cell": { @@ -12591,14 +12617,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9966, + "_idleStart": 6411, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, + "duration": 28, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -12613,9 +12639,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:7919e679-39f3-45f7-9a9b-0747cf506088", + "_testId": "urn:uuid:948e430f-243c-44f9-9ebe-df98577b307c", "_events": {}, "_eventsCount": 1, "cell": { @@ -12626,12 +12652,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11450, + "_idleStart": 7649, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 97, "state": "passed", "speed": "slow" } @@ -12653,9 +12679,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:bda5c1ab-b57c-4d7e-b492-f93512b4a5b6", + "_testId": "urn:uuid:2a0f99b8-5328-45a4-a226-1e2ad639cc66", "_events": {}, "_eventsCount": 1, "cell": { @@ -12666,14 +12692,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8210, + "_idleStart": 4946, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 64, + "duration": 230, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -12688,9 +12714,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:8b0eefad-afb3-4aa2-85e7-2f5f2a4054ec", + "_testId": "urn:uuid:0959274c-56ca-4a0d-a8a3-c030a5c70ef8", "_events": {}, "_eventsCount": 1, "cell": { @@ -12701,12 +12727,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9362, + "_idleStart": 6039, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 41, "state": "passed", "speed": "medium" }, @@ -12723,9 +12749,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:2635b715-f16d-496a-992f-d5bd5eccad3f", + "_testId": "urn:uuid:64694fd0-ca3f-4256-9b84-2ac3a8e2db8f", "_events": {}, "_eventsCount": 1, "cell": { @@ -12736,14 +12762,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10011, + "_idleStart": 6439, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 21, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -12758,9 +12784,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:8afb02d3-14a0-4913-bf48-bc4b77786ab7", + "_testId": "urn:uuid:ac1d0898-d027-414e-ba07-567b9e985baa", "_events": {}, "_eventsCount": 1, "cell": { @@ -12771,12 +12797,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11564, + "_idleStart": 7746, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 114, + "duration": 97, "state": "passed", "speed": "slow" } @@ -12798,9 +12824,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "f4F1J0f3fDdXmWVZqWenx", + "parent": "NjIOxxiWogZiGN-iXgMRh", "ctx": null, - "_testId": "urn:uuid:c8ff1c50-5e07-4d6e-8004-f0961808d884", + "_testId": "urn:uuid:3feb3f75-aeed-4fa5-ada6-54811e0a2b52", "_events": {}, "_eventsCount": 1, "cell": { @@ -12811,14 +12837,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8274, + "_idleStart": 5176, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 101, + "duration": 52, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -12833,9 +12859,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "ANIf4LArTG_gImkjC1sg2", + "parent": "BrbQQLw6iZuWVqXK7s6t7", "ctx": null, - "_testId": "urn:uuid:0bb17d24-c78c-47ce-922d-6e928a8cbc4e", + "_testId": "urn:uuid:20052682-75ac-4800-bc34-4a88b6890628", "_events": {}, "_eventsCount": 1, "cell": { @@ -12846,12 +12872,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9414, + "_idleStart": 6080, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 42, "state": "passed", "speed": "medium" }, @@ -12868,9 +12894,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "TbqB8y2vkOo6TThIVnsmG", + "parent": "ffUepea59xhZj6hfcJKN1", "ctx": null, - "_testId": "urn:uuid:5905a83e-0ea7-43cf-8241-e0e61ca6f17f", + "_testId": "urn:uuid:db94dba2-2aa0-4f0f-9a1a-ccfa2320ce3e", "_events": {}, "_eventsCount": 1, "cell": { @@ -12881,14 +12907,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10050, + "_idleStart": 6460, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 20, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -12903,9 +12929,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/15-rdfc-di-verify.js", - "parent": "475-BozKo2yWSiV0VUJ50", + "parent": "DSn0yaBZZhPU1rkRwNUw6", "ctx": null, - "_testId": "urn:uuid:a060cce3-e685-42c1-896a-3760028a74c2", + "_testId": "urn:uuid:f98672f3-c4d7-4fab-a591-cf0846ab3ea7", "_events": {}, "_eventsCount": 1, "cell": { @@ -12916,12 +12942,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11678, + "_idleStart": 7843, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 96, "state": "passed", "speed": "slow" } @@ -12930,111 +12956,4676 @@ ] }, { - "title": "ecdsa-rdfc-2019 (verifiers)", + "title": "ecdsa-rdfc-2019 (interop)", "ctx": null, - "suites": [ + "suites": [], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "title": "apicatalog.com: P-256", - "ctx": null, - "suites": [], - "tests": [ - { - "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "GFlPudjpydGx-_F26XgUH", - "ctx": null, - "_testId": "urn:uuid:0ada291a-d9c1-4dd5-a75a-163b8c2e4cb6", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 11791, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 1480, - "state": "passed", - "speed": "slow" - }, - { - "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "GFlPudjpydGx-_F26XgUH", - "ctx": null, - "_testId": "urn:uuid:7c49624b-a23f-45da-8837-675296387cda", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13272, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 101, - "state": "passed", - "speed": "slow" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, "_timeout": 15000, "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "16VdC2Z_OJwsnMoIo0Kbb", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "_testId": "urn:uuid:3f7732fd-0876-4047-abc7-21620f7da25a" + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 7940, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 59, + "_error": null }, { - "title": "apicatalog.com: P-384", + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 8000, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 271, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 8271, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 105, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 8376, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 108, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 8484, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 195, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 8679, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 194, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 8873, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 260, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9133, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 88, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9222, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 86, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9307, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 83, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9390, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 94, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9484, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 370, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9854, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 30, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9884, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 78, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9962, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 27, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9989, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 30, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 10019, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 110, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 10129, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 112, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 10241, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 112, + "_error": null + }, + { + "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['1.1'].document\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 10353, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 115, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "GzHifvD62JwDWet-oBmTR", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "matrix": true, + "report": true, + "rowLabel": "Issuer", + "columnLabel": "Verifier", + "_testId": "urn:uuid:b8af5f2e-54d2-449f-802e-14843eb686d8", + "columns": [ + "apicatalog.com: P-256, P-384", + "Digital Bazaar: P-256, P-384", + "SpruceID: P-256", + "bovine: P-256" + ], + "rows": [ + { + "id": "apicatalog.com: P-256", + "cells": [ + { + "type": "test", + "title": "\"apicatalog.com: P-256, P-384\" should verify \"apicatalog.com: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:928bcfea-6d05-4568-aee8-d969281ca499", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "apicatalog.com: P-256", + "columnId": "apicatalog.com: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 10469, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1113, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "\"Digital Bazaar: P-256, P-384\" should verify \"apicatalog.com: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:1a230d36-bd64-4588-812b-1b75f45dfc88", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "apicatalog.com: P-256", + "columnId": "Digital Bazaar: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11581, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 211, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "DriverLicense": { + "@id": "urn:example:DriverLicense", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", + "expirationDate": "urn:example:expiration", + "issuingAuthority": "urn:example:issuingAuthority" + } + }, + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2", + "https://w3id.org/security/multikey/v1" + ], + "id": "urn:uuid:211a830f-b59b-4736-ae76-869815ea2f18", + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "credentialSubject": { + "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", + "driverLicense": { + "type": "DriverLicense", + "documentIdentifier": "T21387yc328c7y32h23f23", + "dateOfBirth": "01-01-1990", + "expirationDate": "01-01-2030", + "issuingAuthority": "VA" + } + }, + "issuer": "https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256", + "issuanceDate": "2024-04-14T05:31:56Z", + "proof": { + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "type": "DataIntegrityProof", + "cryptosuite": "ecdsa-rdfc-2019", + "proofPurpose": "assertionMethod", + "created": "2024-04-14T05:31:56Z", + "proofValue": "z5fVsTcjtaHC348924EFxK9ToNurqZGZaJyg9dyaa7qBv2M74uYAtyhT1AUfzMtng2foCsBi8Ur4QY2Ukba34xVnX" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:211a830f-b59b-4736-ae76-869815ea2f18\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256\",\"issuanceDate\":\"2024-04-14T05:31:56Z\",\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-14T05:31:56Z\",\"proofValue\":\"z5fVsTcjtaHC348924EFxK9ToNurqZGZaJyg9dyaa7qBv2M74uYAtyhT1AUfzMtng2foCsBi8Ur4QY2Ukba34xVnX\"}},\"options\":{\"checks\":[\"proof\"]}}" + }, + "name": "HTTPError", + "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19rSJA9yQQwEqSSoNDjzkuNJ/credentials/verify", + "status": 400, + "data": { + "verified": false, + "results": [ + { + "proof": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "DriverLicense": { + "@id": "urn:example:DriverLicense", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", + "expirationDate": "urn:example:expiration", + "issuingAuthority": "urn:example:issuingAuthority" + } + }, + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2", + "https://w3id.org/security/multikey/v1" + ], + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "type": "DataIntegrityProof", + "cryptosuite": "ecdsa-rdfc-2019", + "proofPurpose": "assertionMethod", + "created": "2024-04-14T05:31:56Z", + "proofValue": "z5fVsTcjtaHC348924EFxK9ToNurqZGZaJyg9dyaa7qBv2M74uYAtyhT1AUfzMtng2foCsBi8Ur4QY2Ukba34xVnX" + }, + "verified": false, + "verificationMethod": { + "@context": "https://w3id.org/security/multikey/v1", + "id": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "type": "Multikey", + "controller": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "publicKeyMultibase": "zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP" + }, + "error": { + "name": "VerificationError", + "message": "Credential issuer must match the verification method controller." + }, + "purposeResult": { + "valid": false, + "error": { + "name": "Error", + "message": "Credential issuer must match the verification method controller.", + "stack": "Error: Credential issuer must match the verification method controller.\n at CredentialIssuancePurpose.validate (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/CredentialIssuancePurpose.js:70:15)\n at async /home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:301:27\n at async Promise.all (index 0)\n at async _verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:287:3)\n at async ProofSet.verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:191:23)\n at async Object.verify (/home/node/app/node_modules/jsonld-signatures/lib/jsonld-signatures.js:169:18)\n at async _verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:328:18)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:277:12)\n at async file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/http.js:89:24" + } + } + } + ], + "error": { + "name": "VerificationError", + "errors": [ + { + "name": "Error", + "message": "Credential issuer must match the verification method controller.", + "stack": "Error: Credential issuer must match the verification method controller.\n at CredentialIssuancePurpose.validate (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/CredentialIssuancePurpose.js:70:15)\n at async /home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:301:27\n at async Promise.all (index 0)\n at async _verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:287:3)\n at async ProofSet.verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:191:23)\n at async Object.verify (/home/node/app/node_modules/jsonld-signatures/lib/jsonld-signatures.js:169:18)\n at async _verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:328:18)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:277:12)\n at async file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/http.js:89:24" + } + ], + "message": "Verification error(s)." + }, + "checks": [ + { + "check": [ + "proof" + ], + "id": "urn:uuid:211a830f-b59b-4736-ae76-869815ea2f18", + "error": "Credential issuer must match the verification method controller.", + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP" + } + ] + } + }, + "operator": "notStrictEqual", + "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:94:13)" + } + }, + { + "type": "test", + "title": "\"SpruceID: P-256\" should verify \"apicatalog.com: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:2ef7a851-92b0-4feb-8a9b-85271d892732", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "apicatalog.com: P-256", + "columnId": "SpruceID: P-256" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11792, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 24, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:39cc06c5-614a-4bc0-a6b6-8f7e7a9a4930\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256\",\"issuanceDate\":\"2024-04-14T05:31:56Z\",\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-14T05:31:56Z\",\"proofValue\":\"z66btdGLoiAAK6NfPLg3UDeX3wF1TpSANUAuSCMF5kB7Gos19R5WfXuVwUYTWFCdwpGQKihL4Csjwx5VQ7F6PH2nx\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "DriverLicense": { + "@id": "urn:example:DriverLicense", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", + "expirationDate": "urn:example:expiration", + "issuingAuthority": "urn:example:issuingAuthority" + } + }, + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2", + "https://w3id.org/security/multikey/v1" + ], + "id": "urn:uuid:39cc06c5-614a-4bc0-a6b6-8f7e7a9a4930", + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "credentialSubject": { + "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", + "driverLicense": { + "type": "DriverLicense", + "documentIdentifier": "T21387yc328c7y32h23f23", + "dateOfBirth": "01-01-1990", + "expirationDate": "01-01-2030", + "issuingAuthority": "VA" + } + }, + "issuer": "https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256", + "issuanceDate": "2024-04-14T05:31:56Z", + "proof": { + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "type": "DataIntegrityProof", + "cryptosuite": "ecdsa-rdfc-2019", + "proofPurpose": "assertionMethod", + "created": "2024-04-14T05:31:56Z", + "proofValue": "z66btdGLoiAAK6NfPLg3UDeX3wF1TpSANUAuSCMF5kB7Gos19R5WfXuVwUYTWFCdwpGQKihL4Csjwx5VQ7F6PH2nx" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.spruceid.xyz/credentials/verify", + "status": 400 + }, + "operator": "notStrictEqual", + "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:94:13)" + } + }, + { + "type": "test", + "title": "\"bovine: P-256\" should verify \"apicatalog.com: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:145abe12-3e21-4315-8d41-74e51a741179", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "apicatalog.com: P-256", + "columnId": "bovine: P-256" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11817, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 101, + "state": "passed", + "speed": "slow" + } + ] + }, + { + "id": "apicatalog.com: P-384", + "cells": [ + { + "type": "test", + "title": "\"apicatalog.com: P-256, P-384\" should verify \"apicatalog.com: P-384\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:ec53ab94-5824-459a-8b58-f26096216604", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "apicatalog.com: P-384", + "columnId": "apicatalog.com: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11919, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 458, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "\"Digital Bazaar: P-256, P-384\" should verify \"apicatalog.com: P-384\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:38c3772b-d2a3-490a-893e-7a1f59dc2c6a", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "apicatalog.com: P-384", + "columnId": "Digital Bazaar: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 12378, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 246, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "DriverLicense": { + "@id": "urn:example:DriverLicense", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", + "expirationDate": "urn:example:expiration", + "issuingAuthority": "urn:example:issuingAuthority" + } + }, + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2", + "https://w3id.org/security/multikey/v1" + ], + "id": "urn:uuid:18a67cb9-d31f-411e-a3bc-44ca3ce9a0d1", + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "credentialSubject": { + "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", + "driverLicense": { + "type": "DriverLicense", + "documentIdentifier": "T21387yc328c7y32h23f23", + "dateOfBirth": "01-01-1990", + "expirationDate": "01-01-2030", + "issuingAuthority": "VA" + } + }, + "issuer": "https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-384", + "issuanceDate": "2024-04-14T05:31:57Z", + "proof": { + "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", + "type": "DataIntegrityProof", + "cryptosuite": "ecdsa-rdfc-2019", + "proofPurpose": "assertionMethod", + "created": "2024-04-14T05:31:57Z", + "proofValue": "zcCz2CKG3vU8NWLoJWycFXqQqCVf5tTLTbfGuMVYrVHyd6PhJyEZFQtMn9WcYwSGGbewH2xtjPN8sAGWSHQYZYkDAPFweLbuXeCsUjS2mpy1ccnP1kmyS8UsRqVBEYP9TmhJ" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:18a67cb9-d31f-411e-a3bc-44ca3ce9a0d1\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-384\",\"issuanceDate\":\"2024-04-14T05:31:57Z\",\"proof\":{\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-14T05:31:57Z\",\"proofValue\":\"zcCz2CKG3vU8NWLoJWycFXqQqCVf5tTLTbfGuMVYrVHyd6PhJyEZFQtMn9WcYwSGGbewH2xtjPN8sAGWSHQYZYkDAPFweLbuXeCsUjS2mpy1ccnP1kmyS8UsRqVBEYP9TmhJ\"}},\"options\":{\"checks\":[\"proof\"]}}" + }, + "name": "HTTPError", + "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19rSJA9yQQwEqSSoNDjzkuNJ/credentials/verify", + "status": 400, + "data": { + "verified": false, + "results": [ + { + "proof": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "DriverLicense": { + "@id": "urn:example:DriverLicense", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", + "expirationDate": "urn:example:expiration", + "issuingAuthority": "urn:example:issuingAuthority" + } + }, + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2", + "https://w3id.org/security/multikey/v1" + ], + "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", + "type": "DataIntegrityProof", + "cryptosuite": "ecdsa-rdfc-2019", + "proofPurpose": "assertionMethod", + "created": "2024-04-14T05:31:57Z", + "proofValue": "zcCz2CKG3vU8NWLoJWycFXqQqCVf5tTLTbfGuMVYrVHyd6PhJyEZFQtMn9WcYwSGGbewH2xtjPN8sAGWSHQYZYkDAPFweLbuXeCsUjS2mpy1ccnP1kmyS8UsRqVBEYP9TmhJ" + }, + "verified": false, + "error": { + "name": "VerificationError", + "message": "Invalid signature." + } + } + ], + "error": { + "name": "VerificationError", + "errors": [ + { + "name": "Error", + "message": "Invalid signature.", + "stack": "Error: Invalid signature.\n at DataIntegrityProof.verifyProof (file:///home/node/app/node_modules/@digitalbazaar/data-integrity/lib/DataIntegrityProof.js:291:15)\n at async /home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:268:53\n at async Promise.all (index 0)\n at async _verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:256:3)\n at async ProofSet.verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:191:23)\n at async Object.verify (/home/node/app/node_modules/jsonld-signatures/lib/jsonld-signatures.js:169:18)\n at async _verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:328:18)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:277:12)\n at async file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/http.js:89:24" + } + ], + "message": "Verification error(s)." + }, + "checks": [ + { + "check": [ + "proof" + ], + "id": "urn:uuid:18a67cb9-d31f-411e-a3bc-44ca3ce9a0d1", + "error": "Invalid signature.", + "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ" + } + ] + } + }, + "operator": "notStrictEqual", + "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:94:13)" + } + }, + { + "cell": { + "rowId": "apicatalog.com: P-384", + "colId": "SpruceID: P-256" + }, + "state": "pending", + "err": { + "message": "Test skipped." + } + }, + { + "cell": { + "rowId": "apicatalog.com: P-384", + "colId": "bovine: P-256" + }, + "state": "pending", + "err": { + "message": "Test skipped." + } + } + ] + }, + { + "id": "Digital Bazaar: P-256", + "cells": [ + { + "type": "test", + "title": "\"apicatalog.com: P-256, P-384\" should verify \"Digital Bazaar: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:35f98165-7027-4c58-9a8e-7da4a4fa4423", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar: P-256", + "columnId": "apicatalog.com: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 12624, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 159, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "\"Digital Bazaar: P-256, P-384\" should verify \"Digital Bazaar: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:62c48f8d-a3b6-4f96-b809-50e9d3d1b0e1", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar: P-256", + "columnId": "Digital Bazaar: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 12784, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 75, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "\"SpruceID: P-256\" should verify \"Digital Bazaar: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:a1f4ba49-7dea-4a01-ac36-46dfec40f6a6", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar: P-256", + "columnId": "SpruceID: P-256" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 12859, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 23, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:3f459d84-b668-47a5-a2cb-69ac7106b159\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ\",\"issuanceDate\":\"2024-04-14T05:31:57Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:31:57Z\",\"verificationMethod\":\"did:key:zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ#zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2nFfhGFLd5RzNKmGyMa3o6TpEDFdc685x8B7UuFhFzsDWmPEhy9XEwKNmMnxrSoUEWHnKYgWDamgoyfyZEQ4SdJ7\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "DriverLicense": { + "@id": "urn:example:DriverLicense", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", + "expirationDate": "urn:example:expiration", + "issuingAuthority": "urn:example:issuingAuthority" + } + }, + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2" + ], + "id": "urn:uuid:3f459d84-b668-47a5-a2cb-69ac7106b159", + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "credentialSubject": { + "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", + "driverLicense": { + "type": "DriverLicense", + "documentIdentifier": "T21387yc328c7y32h23f23", + "dateOfBirth": "01-01-1990", + "expirationDate": "01-01-2030", + "issuingAuthority": "VA" + } + }, + "issuer": "did:key:zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ", + "issuanceDate": "2024-04-14T05:31:57Z", + "proof": { + "type": "DataIntegrityProof", + "created": "2024-04-14T05:31:57Z", + "verificationMethod": "did:key:zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ#zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ", + "cryptosuite": "ecdsa-rdfc-2019", + "proofPurpose": "assertionMethod", + "proofValue": "z2nFfhGFLd5RzNKmGyMa3o6TpEDFdc685x8B7UuFhFzsDWmPEhy9XEwKNmMnxrSoUEWHnKYgWDamgoyfyZEQ4SdJ7" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.spruceid.xyz/credentials/verify", + "status": 400 + }, + "operator": "notStrictEqual", + "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:94:13)" + } + }, + { + "type": "test", + "title": "\"bovine: P-256\" should verify \"Digital Bazaar: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:369e9767-0d07-4fd6-a0c6-530850f0c979", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar: P-256", + "columnId": "bovine: P-256" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 12883, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 105, + "state": "passed", + "speed": "slow" + } + ] + }, + { + "id": "Digital Bazaar: P-384", + "cells": [ + { + "type": "test", + "title": "\"apicatalog.com: P-256, P-384\" should verify \"Digital Bazaar: P-384\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:01feba66-7ac4-467c-86f5-a616b63c5c5c", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar: P-384", + "columnId": "apicatalog.com: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 12989, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 289, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:118b1da1-21ca-434e-b7d9-20b4c71be62c\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q\",\"issuanceDate\":\"2024-04-14T05:31:57Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:31:57Z\",\"verificationMethod\":\"did:key:z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q#z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"zWGnLrzakSTMKZM93zCc18XguAM4LmQnKMwgeGJggpQbJLzcstuHiKmeibMaE94Ee65FNeWEwE7CJV3CHUpAN4Qd3gZ43ahmD9hGXyKqirhJsFwDaHSYQ3tqzZGUbVm3vBJA\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "DriverLicense": { + "@id": "urn:example:DriverLicense", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", + "expirationDate": "urn:example:expiration", + "issuingAuthority": "urn:example:issuingAuthority" + } + }, + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2" + ], + "id": "urn:uuid:118b1da1-21ca-434e-b7d9-20b4c71be62c", + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "credentialSubject": { + "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", + "driverLicense": { + "type": "DriverLicense", + "documentIdentifier": "T21387yc328c7y32h23f23", + "dateOfBirth": "01-01-1990", + "expirationDate": "01-01-2030", + "issuingAuthority": "VA" + } + }, + "issuer": "did:key:z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q", + "issuanceDate": "2024-04-14T05:31:57Z", + "proof": { + "type": "DataIntegrityProof", + "created": "2024-04-14T05:31:57Z", + "verificationMethod": "did:key:z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q#z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q", + "cryptosuite": "ecdsa-rdfc-2019", + "proofPurpose": "assertionMethod", + "proofValue": "zWGnLrzakSTMKZM93zCc18XguAM4LmQnKMwgeGJggpQbJLzcstuHiKmeibMaE94Ee65FNeWEwE7CJV3CHUpAN4Qd3gZ43ahmD9hGXyKqirhJsFwDaHSYQ3tqzZGUbVm3vBJA" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] + } + }, + "operator": "notStrictEqual", + "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:94:13)" + } + }, + { + "type": "test", + "title": "\"Digital Bazaar: P-256, P-384\" should verify \"Digital Bazaar: P-384\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:8d13b243-367c-4eb4-b580-0897b62782f4", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar: P-384", + "columnId": "Digital Bazaar: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 13279, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 60, + "state": "passed", + "speed": "medium" + }, + { + "cell": { + "rowId": "Digital Bazaar: P-384", + "colId": "SpruceID: P-256" + }, + "state": "pending", + "err": { + "message": "Test skipped." + } + }, + { + "cell": { + "rowId": "Digital Bazaar: P-384", + "colId": "bovine: P-256" + }, + "state": "pending", + "err": { + "message": "Test skipped." + } + } + ] + }, + { + "id": "SpruceID: P-256", + "cells": [ + { + "type": "test", + "title": "\"apicatalog.com: P-256, P-384\" should verify \"SpruceID: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:a4b338ba-8f1d-4667-9ebd-e2717d10e5ac", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "SpruceID: P-256", + "columnId": "apicatalog.com: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 13339, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 59, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"DriverLicense\":{\"@context\":{\"@protected\":true,\"dateOfBirth\":\"urn:example:dateOfBirth\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"expirationDate\":\"urn:example:expiration\",\"id\":\"@id\",\"issuingAuthority\":\"urn:example:issuingAuthority\",\"type\":\"@type\"},\"@id\":\"urn:example:DriverLicense\"},\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}}],\"id\":\"urn:uuid:fbc71d80-59aa-4395-a452-2d2b9d786d24\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"dateOfBirth\":\"01-01-1990\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\",\"type\":\"DriverLicense\"}},\"issuer\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"issuanceDate\":\"2024-04-14T05:31:58Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/data-integrity/v1\"],\"type\":\"DataIntegrityProof\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z544pF7iFk4etLtjygvzT9bsHViT6oHqNBBoxVkSp3aFqoZt8H3ycpFswKjQPBsw5jvMYr63bYKKFVpSAEcmktMoa\",\"verificationMethod\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"created\":\"2024-04-14T05:31:58.435Z\",\"cryptosuite\":\"ecdsa-2019\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "DriverLicense": { + "@context": { + "@protected": true, + "dateOfBirth": "urn:example:dateOfBirth", + "documentIdentifier": "urn:example:documentIdentifier", + "expirationDate": "urn:example:expiration", + "id": "@id", + "issuingAuthority": "urn:example:issuingAuthority", + "type": "@type" + }, + "@id": "urn:example:DriverLicense" + }, + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + } + ], + "id": "urn:uuid:fbc71d80-59aa-4395-a452-2d2b9d786d24", + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "credentialSubject": { + "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", + "driverLicense": { + "dateOfBirth": "01-01-1990", + "documentIdentifier": "T21387yc328c7y32h23f23", + "expirationDate": "01-01-2030", + "issuingAuthority": "VA", + "type": "DriverLicense" + } + }, + "issuer": "did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc", + "issuanceDate": "2024-04-14T05:31:58Z", + "proof": { + "@context": [ + "https://w3id.org/security/data-integrity/v1" + ], + "type": "DataIntegrityProof", + "proofPurpose": "assertionMethod", + "proofValue": "z544pF7iFk4etLtjygvzT9bsHViT6oHqNBBoxVkSp3aFqoZt8H3ycpFswKjQPBsw5jvMYr63bYKKFVpSAEcmktMoa", + "verificationMethod": "did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc", + "created": "2024-04-14T05:31:58.435Z", + "cryptosuite": "ecdsa-2019" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_PROOF_CONFIGURATION" + ], + "warnings": [], + "errors": [] + } + }, + "operator": "notStrictEqual", + "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:94:13)" + } + }, + { + "type": "test", + "title": "\"Digital Bazaar: P-256, P-384\" should verify \"SpruceID: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:991cc024-1631-4aab-998e-9851dcbfaf6a", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "SpruceID: P-256", + "columnId": "Digital Bazaar: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 13399, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 54, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "\"SpruceID: P-256\" should verify \"SpruceID: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:1d96774c-21a4-42d9-b956-f7a9fbef715b", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "SpruceID: P-256", + "columnId": "SpruceID: P-256" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 13452, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 41, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "\"bovine: P-256\" should verify \"SpruceID: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:4662031e-1111-4836-8428-1e5a11993965", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "SpruceID: P-256", + "columnId": "bovine: P-256" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 13493, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 98, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"DriverLicense\":{\"@context\":{\"@protected\":true,\"dateOfBirth\":\"urn:example:dateOfBirth\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"expirationDate\":\"urn:example:expiration\",\"id\":\"@id\",\"issuingAuthority\":\"urn:example:issuingAuthority\",\"type\":\"@type\"},\"@id\":\"urn:example:DriverLicense\"},\"@protected\":true,\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"},\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\"}],\"id\":\"urn:uuid:e73fb679-8809-42af-aeaf-66efc338cef6\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"dateOfBirth\":\"01-01-1990\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\",\"type\":\"DriverLicense\"}},\"issuer\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"issuanceDate\":\"2024-04-14T05:31:58Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/data-integrity/v1\"],\"type\":\"DataIntegrityProof\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z5eLaofwjGxnc6aZXJGaQebfkfDj9bsBngeVJZERwYkXQbkmrT2mWwgBYnCRDpXLCHTFwDv3db2zeVPsmrKzpt38M\",\"verificationMethod\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"created\":\"2024-04-14T05:31:58.571Z\",\"cryptosuite\":\"ecdsa-2019\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "DriverLicense": { + "@context": { + "@protected": true, + "dateOfBirth": "urn:example:dateOfBirth", + "documentIdentifier": "urn:example:documentIdentifier", + "expirationDate": "urn:example:expiration", + "id": "@id", + "issuingAuthority": "urn:example:issuingAuthority", + "type": "@type" + }, + "@id": "urn:example:DriverLicense" + }, + "@protected": true, + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + }, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential" + } + ], + "id": "urn:uuid:e73fb679-8809-42af-aeaf-66efc338cef6", + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "credentialSubject": { + "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", + "driverLicense": { + "dateOfBirth": "01-01-1990", + "documentIdentifier": "T21387yc328c7y32h23f23", + "expirationDate": "01-01-2030", + "issuingAuthority": "VA", + "type": "DriverLicense" + } + }, + "issuer": "did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc", + "issuanceDate": "2024-04-14T05:31:58Z", + "proof": { + "@context": [ + "https://w3id.org/security/data-integrity/v1" + ], + "type": "DataIntegrityProof", + "proofPurpose": "assertionMethod", + "proofValue": "z5eLaofwjGxnc6aZXJGaQebfkfDj9bsBngeVJZERwYkXQbkmrT2mWwgBYnCRDpXLCHTFwDv3db2zeVPsmrKzpt38M", + "verificationMethod": "did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc", + "created": "2024-04-14T05:31:58.571Z", + "cryptosuite": "ecdsa-2019" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://bovine.social/w3c-di/verify", + "status": 400 + }, + "operator": "notStrictEqual", + "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:94:13)" + } + } + ] + }, + { + "id": "bovine: P-256", + "cells": [ + { + "type": "test", + "title": "\"apicatalog.com: P-256, P-384\" should verify \"bovine: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:fc70d5ba-3ee6-4145-9705-789154efb158", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "bovine: P-256", + "columnId": "apicatalog.com: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 13592, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 289, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "\"Digital Bazaar: P-256, P-384\" should verify \"bovine: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:45b3ee03-a420-4840-9d6c-8a30a30ff653", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "bovine: P-256", + "columnId": "Digital Bazaar: P-256, P-384" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 13881, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 69, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "\"SpruceID: P-256\" should verify \"bovine: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:858fde3e-7f8e-482e-9959-ceb760bfb63a", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "bovine: P-256", + "columnId": "SpruceID: P-256" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 13951, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 20, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicense\":{\"@context\":{\"@protected\":true,\"dateOfBirth\":\"urn:example:dateOfBirth\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"expirationDate\":\"urn:example:expiration\",\"id\":\"@id\",\"issuingAuthority\":\"urn:example:issuingAuthority\",\"type\":\"@type\"},\"@id\":\"urn:example:DriverLicense\"},\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"credentialSubject\":{\"driverLicense\":{\"dateOfBirth\":\"01-01-1990\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\",\"type\":\"DriverLicense\"},\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\"},\"id\":\"urn:uuid:d522b5c6-5e4a-45a9-8b67-3582acb8fc64\",\"issuanceDate\":\"2024-04-14T05:31:58Z\",\"issuer\":\"did:key:zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr\",\"proof\":{\"created\":\"2024-04-14T05:31:58Z\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z66xRobLoBWWcFVgLjaRCCCvVpS6jkmZxqP5fv7nV6oxEKdEAo5NMjbUPwMbRGVTexBt9sZXKkxJvRTHGsEspqvvi\",\"type\":\"DataIntegrityProof\",\"verificationMethod\":\"did:key:zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr#zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr\"},\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"]},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "DriverLicense": { + "@context": { + "@protected": true, + "dateOfBirth": "urn:example:dateOfBirth", + "documentIdentifier": "urn:example:documentIdentifier", + "expirationDate": "urn:example:expiration", + "id": "@id", + "issuingAuthority": "urn:example:issuingAuthority", + "type": "@type" + }, + "@id": "urn:example:DriverLicense" + }, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2" + ], + "credentialSubject": { + "driverLicense": { + "dateOfBirth": "01-01-1990", + "documentIdentifier": "T21387yc328c7y32h23f23", + "expirationDate": "01-01-2030", + "issuingAuthority": "VA", + "type": "DriverLicense" + }, + "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440" + }, + "id": "urn:uuid:d522b5c6-5e4a-45a9-8b67-3582acb8fc64", + "issuanceDate": "2024-04-14T05:31:58Z", + "issuer": "did:key:zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr", + "proof": { + "created": "2024-04-14T05:31:58Z", + "cryptosuite": "ecdsa-rdfc-2019", + "proofPurpose": "assertionMethod", + "proofValue": "z66xRobLoBWWcFVgLjaRCCCvVpS6jkmZxqP5fv7nV6oxEKdEAo5NMjbUPwMbRGVTexBt9sZXKkxJvRTHGsEspqvvi", + "type": "DataIntegrityProof", + "verificationMethod": "did:key:zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr#zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr" + }, + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ] + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.spruceid.xyz/credentials/verify", + "status": 400 + }, + "operator": "notStrictEqual", + "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:94:13)" + } + }, + { + "type": "test", + "title": "\"bovine: P-256\" should verify \"bovine: P-256\"", + "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "FZYLbYlZBQ7pAff93febx", + "ctx": null, + "_testId": "urn:uuid:81e6f0a4-856d-4ae8-99c1-643631e4cc69", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "bovine: P-256", + "columnId": "bovine: P-256" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 13972, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 102, + "state": "passed", + "speed": "slow" + } + ] + } + ] + }, + { + "title": "Data Integrity (ecdsa-sd-2023 issuers)", + "ctx": null, + "suites": [ + { + "title": "apicatalog.com: P-256", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:876e682c-2325-456f-941a-4b6bbd579840", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.id\" field exists, it MUST be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:e05a6a85-3635-4720-a653-18e2a096c96b", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.type\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:c8c7a380-b1a6-43e8-8d73-3225373562ed", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.type\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:b7779eee-b716-445c-b77a-7e0d54e79851", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." + }, + "duration": 1, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.cryptosuite\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:67fcf2d5-74a7-49c6-8785-fb740a338c35", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:8c1f1c8e-2c52-4feb-9da8-959acc58c5cb", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:82871dc7-e815-49d4-848b-1da164afe697", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:a967d336-e6c3-4e50-9286-24ace44b6cac", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.proofPurpose\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:c2f5e0f0-955a-49d7-9671-9a28943a4653", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.proofValue\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:0bb39716-92d9-4610-8d37-9785912c5700", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.proofValue\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:782008e3-d934-471a-a81b-414aceeb2ed5", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:b2525b15-4a5b-4ff0-80c1-4c9e6acfab55", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.challenge\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:0f649822-fff2-4d02-ac2b-d1206bde2100", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.challenge\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:8c129ca3-5ba7-404c-9a46-0ef75fc3444d", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:5358846b-0e38-47c8-95fe-924edbdc48b8", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"apicatalog.com: P-256\"", + "body": "async function() {\n const [issuer] = endpoints;\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n data = await createInitialVc({issuer, vc: validVc});\n proofs = Array.isArray(data.proof) ? data.proof : [data.proof];\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 14075, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 489, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "MxJOC1AALI5Qd_R6eK9hC", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "_testId": "urn:uuid:eda7a88d-cf01-49af-bcd3-5a8030f892d8" + }, + { + "title": "Digital Bazaar: P-256", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:300d03a0-9902-43e8-83a0-1e43768f7ffd", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.id\" field exists, it MUST be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:5106c556-4ed2-4475-a172-0bf2b9ec1b8d", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.type\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:64985388-7485-4834-b3c2-b73b6c38545e", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.type\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:15dcfcb5-d6ab-4518-8c85-ab6a12c73e6f", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.cryptosuite\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:d5abc93f-965c-445f-92dd-fc27e6a9e2f0", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:2c247adf-2b50-4910-ac45-4d5f8e521861", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:c45cd864-e6e4-4407-b33a-c6ef8cf2f9ea", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:e9317f20-23f9-4b7c-a291-2c4e2b998924", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.proofPurpose\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:b67d3fa4-4361-4710-b9f9-87efadb72489", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.proofValue\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:2cbfaedc-7de4-4e75-b560-48e2ec5e8632", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.proofValue\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:2682d645-8b78-4b37-a061-30a2c5171379", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." + }, + "duration": 1, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:7525ea6f-3d8e-4ae0-ba55-dddefc38f3ca", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.challenge\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:e905f782-44a6-4c7d-a32e-215c210643bf", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.challenge\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:9b542c0f-2579-49de-84dd-9a0a740a45c3", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:981256b0-856f-499c-8efd-6e73374247a4", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"Digital Bazaar: P-256\"", + "body": "async function() {\n const [issuer] = endpoints;\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n data = await createInitialVc({issuer, vc: validVc});\n proofs = Array.isArray(data.proof) ? data.proof : [data.proof];\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 14566, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 141, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "MxJOC1AALI5Qd_R6eK9hC", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "_testId": "urn:uuid:0026efc6-5643-4692-a9f2-d5e4b3c98fa7" + }, + { + "title": "Grotto Networking: P-256", "ctx": null, "suites": [], "tests": [ { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:1cb50818-c6a1-4179-bc8b-0b92815534b2", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.id\" field exists, it MUST be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:954644cb-0ad9-4efc-95d7-00673086ba01", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.type\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:d3bb7b66-ea68-49c7-85ef-379726d89252", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.type\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:beb81c22-1c64-4440-b523-8ef8b1029a07", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.cryptosuite\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:ee56522a-08cf-4aab-be93-76fc5d1d134e", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:d1c54dbf-d0b3-429b-b443-71bb3b9a4476", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:a2d0067f-bf5b-4342-82ab-93890c899027", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:b4d53db5-a5ba-46f9-b0e4-dfd76bd81137", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.proofPurpose\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:a1b950d9-e793-4629-a772-2068fd5cbe1f", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.proofValue\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:8f2d6238-18ed-43db-9274-0227923e3415", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.proofValue\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:b378634f-fd73-409a-a653-9cce865b1536", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:da250702-e53a-443f-9d47-b89bd332ef58", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.challenge\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:551f7d98-3a45-4f56-b3d1-c1da44f70e11", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.challenge\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:fdc168e5-dd5a-46ab-b5cf-98367ec4c47d", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:38d3a3d1-26fc-4221-9f28-2bcff0124308", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"Grotto Networking: P-256\"", + "body": "async function() {\n const [issuer] = endpoints;\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n data = await createInitialVc({issuer, vc: validVc});\n proofs = Array.isArray(data.proof) ? data.proof : [data.proof];\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 14709, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 310, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "MxJOC1AALI5Qd_R6eK9hC", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "_testId": "urn:uuid:3e0fca42-a6dc-4a59-b6ee-85bd129f9943" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "GzHifvD62JwDWet-oBmTR", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "matrix": true, + "report": true, + "rowLabel": "Test Name", + "columnLabel": "Issuer", + "_testId": "urn:uuid:46e335b6-a69e-4e84-afa0-0bd9b4fa1c1d", + "columns": [ + "apicatalog.com: P-256", + "Digital Bazaar: P-256", + "Grotto Networking: P-256" + ], + "rows": [ + { + "id": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", + "cells": [ + { + "type": "test", + "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:876e682c-2325-456f-941a-4b6bbd579840", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:300d03a0-9902-43e8-83a0-1e43768f7ffd", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:1cb50818-c6a1-4179-bc8b-0b92815534b2", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ] + }, + { + "id": "if \"proof.id\" field exists, it MUST be a valid URL.", + "cells": [ + { + "type": "test", + "title": "if \"proof.id\" field exists, it MUST be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:e05a6a85-3635-4720-a653-18e2a096c96b", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.id\" field exists, it MUST be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:5106c556-4ed2-4475-a172-0bf2b9ec1b8d", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.id\" field exists, it MUST be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:954644cb-0ad9-4efc-95d7-00673086ba01", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ] + }, + { + "id": "\"proof.type\" field MUST exist and be a string.", + "cells": [ + { + "type": "test", + "title": "\"proof.type\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:c8c7a380-b1a6-43e8-8d73-3225373562ed", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.type\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.type\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:64985388-7485-4834-b3c2-b73b6c38545e", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.type\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.type\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:d3bb7b66-ea68-49c7-85ef-379726d89252", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.type\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ] + }, + { + "id": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", + "cells": [ + { + "type": "test", + "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:b7779eee-b716-445c-b77a-7e0d54e79851", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." + }, + "duration": 1, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:15dcfcb5-d6ab-4518-8c85-ab6a12c73e6f", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:beb81c22-1c64-4440-b523-8ef8b1029a07", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ] + }, + { + "id": "\"proof.cryptosuite\" field MUST exist and be a string.", + "cells": [ + { + "type": "test", + "title": "\"proof.cryptosuite\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:67fcf2d5-74a7-49c6-8785-fb740a338c35", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.cryptosuite\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:d5abc93f-965c-445f-92dd-fc27e6a9e2f0", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.cryptosuite\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:ee56522a-08cf-4aab-be93-76fc5d1d134e", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ] + }, + { + "id": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "cells": [ + { + "type": "test", + "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:8c1f1c8e-2c52-4feb-9da8-959acc58c5cb", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:2c247adf-2b50-4910-ac45-4d5f8e521861", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:d1c54dbf-d0b3-429b-b443-71bb3b9a4476", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ] + }, + { + "id": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "cells": [ + { + "type": "test", + "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:82871dc7-e815-49d4-848b-1da164afe697", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:c45cd864-e6e4-4407-b33a-c6ef8cf2f9ea", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:a2d0067f-bf5b-4342-82ab-93890c899027", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ] + }, + { + "id": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", + "cells": [ + { + "type": "test", + "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:a967d336-e6c3-4e50-9286-24ace44b6cac", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13043,181 +17634,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "hIPugp2bPHEE4GKawwzfc", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", "ctx": null, - "_testId": "urn:uuid:13c86096-e00f-46e2-848e-c32bf2a2201c", + "_testId": "urn:uuid:e9317f20-23f9-4b7c-a291-2c4e2b998924", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-384", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13373, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." }, - "duration": 603, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"issuanceDate\":\"2024-04-07T05:06:19Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-07T05:06:19Z\",\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"zqkgzH6fAEHF3zgnAyNz7qR2ijKnF8FHMaRDyWEL92NUAe6jFifEhwdTaKiFMKCyw1SdhuNuMerzWNJAtZEhDid1agiVhuK3fTjb9Cwj3oXFnQrWrDvTfg3x4yEXFygenXs5\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - { - "@protected": true, - "DriverLicenseCredential": "urn:example:DriverLicenseCredential", - "DriverLicense": { - "@id": "urn:example:DriverLicense", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "documentIdentifier": "urn:example:documentIdentifier", - "dateOfBirth": "urn:example:dateOfBirth", - "expirationDate": "urn:example:expiration", - "issuingAuthority": "urn:example:issuingAuthority" - } - }, - "driverLicense": { - "@id": "urn:example:driverLicense", - "@type": "@id" - } - }, - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:36245ee9-9074-4b05-a777-febff2e69757", - "type": [ - "VerifiableCredential", - "DriverLicenseCredential" - ], - "credentialSubject": { - "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", - "driverLicense": { - "type": "DriverLicense", - "documentIdentifier": "T21387yc328c7y32h23f23", - "dateOfBirth": "01-01-1990", - "expirationDate": "01-01-2030", - "issuingAuthority": "VA" - } - }, - "issuer": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", - "issuanceDate": "2024-04-07T05:06:19Z", - "proof": { - "type": "DataIntegrityProof", - "created": "2024-04-07T05:06:19Z", - "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", - "cryptosuite": "ecdsa-rdfc-2019", - "proofPurpose": "assertionMethod", - "proofValue": "zqkgzH6fAEHF3zgnAyNz7qR2ijKnF8FHMaRDyWEL92NUAe6jFifEhwdTaKiFMKCyw1SdhuNuMerzWNJAtZEhDid1agiVhuK3fTjb9Cwj3oXFnQrWrDvTfg3x4yEXFygenXs5" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc.apicatalog.com/credentials/verify", - "status": 400, - "data": { - "checks": [ - "PROOF", - "INVALID_SIGNATURE" - ], - "warnings": [], - "errors": [] - } - }, - "operator": "notStrictEqual", - "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:117: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:161:7)" - } + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13226,56 +17660,29 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "hIPugp2bPHEE4GKawwzfc", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", "ctx": null, - "_testId": "urn:uuid:f5c1020f-9066-4be0-a7cf-fa8c2efa487b", + "_testId": "urn:uuid:b4d53db5-a5ba-46f9-b0e4-dfd76bd81137", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-384", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13978, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." }, - "duration": 97, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "16VdC2Z_OJwsnMoIo0Kbb", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "_testId": "urn:uuid:b9287952-6a9c-4c07-93e5-8e59d292f366" + ] }, { - "title": "Digital Bazaar: P-256", - "ctx": null, - "suites": [], - "tests": [ + "id": "\"proof.proofPurpose\" field MUST exist and be a string.", + "cells": [ { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "\"proof.proofPurpose\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13284,33 +17691,50 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "csrAxmfUk0g3UKhTipti4", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", "ctx": null, - "_testId": "urn:uuid:d1b1eb6f-88bf-4167-aa52-c3392ad8eed7", + "_testId": "urn:uuid:c2f5e0f0-955a-49d7-9671-9a28943a4653", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14075, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.proofPurpose\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:b67d3fa4-4361-4710-b9f9-87efadb72489", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." }, - "duration": 98, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "title": "\"proof.proofPurpose\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13319,56 +17743,29 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "csrAxmfUk0g3UKhTipti4", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", "ctx": null, - "_testId": "urn:uuid:9bd23f2a-6c73-45ec-9bb5-ea99dba21fa3", + "_testId": "urn:uuid:a1b950d9-e793-4629-a772-2068fd5cbe1f", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14173, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." }, - "duration": 53, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "16VdC2Z_OJwsnMoIo0Kbb", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "_testId": "urn:uuid:7b4ef8ff-29f5-4c0d-9874-1ecf143012a9" + ] }, { - "title": "Digital Bazaar: P-384", - "ctx": null, - "suites": [], - "tests": [ + "id": "\"proof.proofValue\" field MUST exist and be a string.", + "cells": [ { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "\"proof.proofValue\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13377,33 +17774,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "k6lo2H9lOgqELKMTudU8R", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", "ctx": null, - "_testId": "urn:uuid:0bfd8e3a-7b36-49e4-ace0-0459730cc894", + "_testId": "urn:uuid:0bb39716-92d9-4610-8d37-9785912c5700", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-384", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14227, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com: P-256", + "rowId": "\"proof.proofValue\" field MUST exist and be a string." }, - "duration": 61, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "title": "\"proof.proofValue\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13412,56 +17800,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "k6lo2H9lOgqELKMTudU8R", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", "ctx": null, - "_testId": "urn:uuid:ef057b10-f2c0-46ad-a704-cfc4dfbd8d74", + "_testId": "urn:uuid:2cbfaedc-7de4-4e75-b560-48e2ec5e8632", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-384", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14287, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Digital Bazaar: P-256", + "rowId": "\"proof.proofValue\" field MUST exist and be a string." }, - "duration": 51, + "duration": 0, "state": "passed", - "speed": "medium" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "16VdC2Z_OJwsnMoIo0Kbb", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "_testId": "urn:uuid:749b6ead-c80f-4b2b-883b-e78120ceb606" - }, - { - "title": "SpruceID: P-256", - "ctx": null, - "suites": [], - "tests": [ + "speed": "fast" + }, { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "\"proof.proofValue\" field MUST exist and be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13470,173 +17826,29 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "Ou3uXbcg4F516q4NERJ-M", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", "ctx": null, - "_testId": "urn:uuid:d6f329f0-8769-4d88-8956-1351af4b86c6", + "_testId": "urn:uuid:8f2d6238-18ed-43db-9274-0227923e3415", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "SpruceID: P-256", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14339, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 40, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"issuanceDate\":\"2024-04-07T05:06:19Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-07T05:06:19Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2RurU3UngcHLqkBjiP4hd8m64VvFPw1y6yVEiFRctYK2MZdVcQAJsCvjrCfXUSNKqaLKS4YBqPVQNLNzF3a3nkyn\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - { - "@protected": true, - "DriverLicenseCredential": "urn:example:DriverLicenseCredential", - "DriverLicense": { - "@id": "urn:example:DriverLicense", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "documentIdentifier": "urn:example:documentIdentifier", - "dateOfBirth": "urn:example:dateOfBirth", - "expirationDate": "urn:example:expiration", - "issuingAuthority": "urn:example:issuingAuthority" - } - }, - "driverLicense": { - "@id": "urn:example:driverLicense", - "@type": "@id" - } - }, - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:36245ee9-9074-4b05-a777-febff2e69757", - "type": [ - "VerifiableCredential", - "DriverLicenseCredential" - ], - "credentialSubject": { - "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", - "driverLicense": { - "type": "DriverLicense", - "documentIdentifier": "T21387yc328c7y32h23f23", - "dateOfBirth": "01-01-1990", - "expirationDate": "01-01-2030", - "issuingAuthority": "VA" - } - }, - "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", - "issuanceDate": "2024-04-07T05:06:19Z", - "proof": { - "type": "DataIntegrityProof", - "created": "2024-04-07T05:06:19Z", - "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", - "cryptosuite": "ecdsa-rdfc-2019", - "proofPurpose": "assertionMethod", - "proofValue": "z2RurU3UngcHLqkBjiP4hd8m64VvFPw1y6yVEiFRctYK2MZdVcQAJsCvjrCfXUSNKqaLKS4YBqPVQNLNzF3a3nkyn" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc.spruceid.xyz/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "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:117: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:161:7)" - } - }, + "columnId": "Grotto Networking: P-256", + "rowId": "\"proof.proofValue\" field MUST exist and be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ] + }, + { + "id": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", + "cells": [ { "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13645,56 +17857,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "Ou3uXbcg4F516q4NERJ-M", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", "ctx": null, - "_testId": "urn:uuid:c41be3fe-2a3a-4c89-8c79-a80439f28101", + "_testId": "urn:uuid:782008e3-d934-471a-a81b-414aceeb2ed5", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "SpruceID: P-256", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14380, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com: P-256", + "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." }, - "duration": 40, + "duration": 0, "state": "passed", - "speed": "medium" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "16VdC2Z_OJwsnMoIo0Kbb", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "_testId": "urn:uuid:d1da34fd-dd40-4e49-8955-9dd591c4ec13" - }, - { - "title": "SpruceID: P-384", - "ctx": null, - "suites": [], - "tests": [ + "speed": "fast" + }, { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13703,40 +17883,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "4MBWqb_W4EgxblyO3Hrfx", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", "ctx": null, - "_testId": "urn:uuid:1f5299f7-68ab-4437-904f-244e7bd7fdca", + "_testId": "urn:uuid:2682d645-8b78-4b37-a061-30a2c5171379", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "SpruceID: P-384", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14420, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Digital Bazaar: P-256", + "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." }, - "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", - "showDiff": false, - "actual": null, - "operator": "notStrictEqual", - "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:147:7)\n at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:159:7)\n at process.processImmediate (node:internal/timers:478:21)" - } + "duration": 1, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13745,63 +17909,29 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "4MBWqb_W4EgxblyO3Hrfx", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", "ctx": null, - "_testId": "urn:uuid:8e1cef28-52c0-47b3-b7df-b94114f12b72", + "_testId": "urn:uuid:b378634f-fd73-409a-a653-9cce865b1536", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "SpruceID: P-384", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14421, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Grotto Networking: P-256", + "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." }, "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", - "showDiff": false, - "actual": null, - "operator": "notStrictEqual", - "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:147:7)\n at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:178:5)\n at process.processImmediate (node:internal/timers:478:21)" - } + "state": "passed", + "speed": "fast" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "16VdC2Z_OJwsnMoIo0Kbb", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "_testId": "urn:uuid:eb8012c9-8cd6-4637-b73c-57cb96e57649" + ] }, { - "title": "bovine: P-256", - "ctx": null, - "suites": [], - "tests": [ + "id": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", + "cells": [ { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13810,33 +17940,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "m_khIDJdFkgcVdwQU5MBU", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", "ctx": null, - "_testId": "urn:uuid:f1d65720-1b28-4d64-9d3e-79db04a3fad8", + "_testId": "urn:uuid:b2525b15-4a5b-4ff0-80c1-4c9e6acfab55", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "bovine: P-256", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14421, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." }, - "duration": 124, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13845,56 +17966,55 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "m_khIDJdFkgcVdwQU5MBU", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", "ctx": null, - "_testId": "urn:uuid:980199ba-c681-45b3-9124-1f02499d0551", + "_testId": "urn:uuid:7525ea6f-3d8e-4ae0-ba55-dddefc38f3ca", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "bovine: P-256", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14546, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:da250702-e53a-443f-9d47-b89bd332ef58", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." }, - "duration": 113, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "16VdC2Z_OJwsnMoIo0Kbb", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "_testId": "urn:uuid:7493ce9f-d4f0-49e2-83c9-b4bdff8b9d9e" + ] }, { - "title": "bovine: P-384", - "ctx": null, - "suites": [], - "tests": [ + "id": "if \"proof.challenge\" field exists, it MUST be a string.", + "cells": [ { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "if \"proof.challenge\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13903,40 +18023,50 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "fpLOCPhgFbFgt8PsJ0N-X", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", "ctx": null, - "_testId": "urn:uuid:33a3d4fa-468d-4df9-b08c-117a9773dc9c", + "_testId": "urn:uuid:0f649822-fff2-4d02-ac2b-d1206bde2100", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "bovine: P-384", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.challenge\" field exists, it MUST be a string." }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14659, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.challenge\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:e905f782-44a6-4c7d-a32e-215c210643bf", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.challenge\" field exists, it MUST be a string." }, "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", - "showDiff": false, - "actual": null, - "operator": "notStrictEqual", - "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:147:7)\n at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:159:7)\n at process.processImmediate (node:internal/timers:478:21)" - } + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "title": "if \"proof.challenge\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13945,93 +18075,29 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "fpLOCPhgFbFgt8PsJ0N-X", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", "ctx": null, - "_testId": "urn:uuid:106e0faa-0797-440a-9150-5582ab40cbdb", + "_testId": "urn:uuid:551f7d98-3a45-4f56-b3d1-c1da44f70e11", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "bovine: P-384", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14660, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.challenge\" field exists, it MUST be a string." }, "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", - "showDiff": false, - "actual": null, - "operator": "notStrictEqual", - "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:147:7)\n at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:178:5)\n at process.processImmediate (node:internal/timers:478:21)" - } + "state": "passed", + "speed": "fast" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "16VdC2Z_OJwsnMoIo0Kbb", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "_testId": "urn:uuid:dcc59386-85dc-4109-af95-e54909033e40" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "_sdJ3oEaLmEIk4sSLn7s7", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "matrix": true, - "report": true, - "rowLabel": "Test Name", - "columnLabel": "Verifier", - "_testId": "urn:uuid:968129d4-2974-4841-906f-3af49a2514b7", - "columns": [ - "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" - ], - "rows": [ + ] + }, { - "id": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "id": "if \"proof.previousProof\" field exists, it MUST be a string.", "cells": [ { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14040,33 +18106,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "GFlPudjpydGx-_F26XgUH", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", "ctx": null, - "_testId": "urn:uuid:0ada291a-d9c1-4dd5-a75a-163b8c2e4cb6", + "_testId": "urn:uuid:8c129ca3-5ba7-404c-9a46-0ef75fc3444d", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 11791, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, - "duration": 1480, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14075,181 +18132,81 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "hIPugp2bPHEE4GKawwzfc", - "ctx": null, - "_testId": "urn:uuid:13c86096-e00f-46e2-848e-c32bf2a2201c", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-384", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13373, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 603, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"issuanceDate\":\"2024-04-07T05:06:19Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-07T05:06:19Z\",\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"zqkgzH6fAEHF3zgnAyNz7qR2ijKnF8FHMaRDyWEL92NUAe6jFifEhwdTaKiFMKCyw1SdhuNuMerzWNJAtZEhDid1agiVhuK3fTjb9Cwj3oXFnQrWrDvTfg3x4yEXFygenXs5\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - { - "@protected": true, - "DriverLicenseCredential": "urn:example:DriverLicenseCredential", - "DriverLicense": { - "@id": "urn:example:DriverLicense", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "documentIdentifier": "urn:example:documentIdentifier", - "dateOfBirth": "urn:example:dateOfBirth", - "expirationDate": "urn:example:expiration", - "issuingAuthority": "urn:example:issuingAuthority" - } - }, - "driverLicense": { - "@id": "urn:example:driverLicense", - "@type": "@id" - } - }, - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:36245ee9-9074-4b05-a777-febff2e69757", - "type": [ - "VerifiableCredential", - "DriverLicenseCredential" - ], - "credentialSubject": { - "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", - "driverLicense": { - "type": "DriverLicense", - "documentIdentifier": "T21387yc328c7y32h23f23", - "dateOfBirth": "01-01-1990", - "expirationDate": "01-01-2030", - "issuingAuthority": "VA" - } - }, - "issuer": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", - "issuanceDate": "2024-04-07T05:06:19Z", - "proof": { - "type": "DataIntegrityProof", - "created": "2024-04-07T05:06:19Z", - "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", - "cryptosuite": "ecdsa-rdfc-2019", - "proofPurpose": "assertionMethod", - "proofValue": "zqkgzH6fAEHF3zgnAyNz7qR2ijKnF8FHMaRDyWEL92NUAe6jFifEhwdTaKiFMKCyw1SdhuNuMerzWNJAtZEhDid1agiVhuK3fTjb9Cwj3oXFnQrWrDvTfg3x4yEXFygenXs5" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc.apicatalog.com/credentials/verify", - "status": 400, - "data": { - "checks": [ - "PROOF", - "INVALID_SIGNATURE" - ], - "warnings": [], - "errors": [] - } - }, - "operator": "notStrictEqual", - "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:117: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:161:7)" - } + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", + "ctx": null, + "_testId": "urn:uuid:9b542c0f-2579-49de-84dd-9a0a740a45c3", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:fdc168e5-dd5a-46ab-b5cf-98367ec4c47d", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ] + }, + { + "id": "if \"proof.nonce\" field exists, it MUST be a string.", + "cells": [ + { + "type": "test", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "gpx6UpVlFHeQMnOTDH7NB", + "ctx": null, + "_testId": "urn:uuid:5358846b-0e38-47c8-95fe-924edbdc48b8", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256", + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14258,33 +18215,98 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "csrAxmfUk0g3UKhTipti4", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "pi9_GTmwLhMB5QkANKshJ", "ctx": null, - "_testId": "urn:uuid:d1b1eb6f-88bf-4167-aa52-c3392ad8eed7", + "_testId": "urn:uuid:981256b0-856f-499c-8efd-6e73374247a4", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256", + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "aYH0Upr2N1FGbmkKI203-", + "ctx": null, + "_testId": "urn:uuid:38d3a3d1-26fc-4221-9f28-2bcff0124308", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + }, + "duration": 0, + "state": "passed", + "speed": "fast" + } + ] + } + ] + }, + { + "title": "ecdsa-rdfc-2019 (verifiers 1.1)", + "ctx": null, + "suites": [ + { + "title": "apicatalog.com: P-256", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "9hcODjfQRa1Tq-ZoZ8tSi", + "ctx": null, + "_testId": "urn:uuid:07e4ac54-9a2f-4f36-9ed2-04f0f0648f33", + "cell": { + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14075, + "_idleStart": 15022, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 98, + "duration": 174, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14293,33 +18315,37 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "k6lo2H9lOgqELKMTudU8R", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "9hcODjfQRa1Tq-ZoZ8tSi", "ctx": null, - "_testId": "urn:uuid:0bfd8e3a-7b36-49e4-ace0-0459730cc894", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:66736e17-e0bf-40ba-bd22-3849b9a3cf61", "cell": { - "columnId": "Digital Bazaar: P-384", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + "columnId": "apicatalog.com: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14227, + "_idleStart": 15196, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 98, "state": "passed", - "speed": "medium" - }, + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "\"before each\" hook in \"apicatalog.com: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14328,37 +18354,78 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "Ou3uXbcg4F516q4NERJ-M", + "type": "hook", + "parent": "9hcODjfQRa1Tq-ZoZ8tSi", "ctx": null, - "_testId": "urn:uuid:d6f329f0-8769-4d88-8956-1351af4b86c6", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", "_events": {}, "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "k-9theyixc38RNp2T-f3m", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:82bd3cff-086d-44e1-823e-56572bcbf98b" + }, + { + "title": "apicatalog.com: P-384", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "_kYBu0YV6gxak6tNw86TW", + "ctx": null, + "_testId": "urn:uuid:7bc34ec9-ba95-4777-ab43-60c4045b3903", "cell": { - "columnId": "SpruceID: P-256", + "columnId": "apicatalog.com: P-384", "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14339, + "_idleStart": 15294, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 130, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, "request": {}, "options": { "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"issuanceDate\":\"2024-04-07T05:06:19Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-07T05:06:19Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2RurU3UngcHLqkBjiP4hd8m64VvFPw1y6yVEiFRctYK2MZdVcQAJsCvjrCfXUSNKqaLKS4YBqPVQNLNzF3a3nkyn\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"issuanceDate\":\"2024-04-14T05:31:49Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:31:49Z\",\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"zX7ENp6eUrTpxHKe4QhGTSYgywMsCccskEFSNQ9sycxtxa5eiRvcQ9pQqC3G9mdzPWxtqa3n3biejjdK3hpZaxUWPKBFrmeaRXyYyvkT4JQkRYuv6D6QUpiHzD4AZNiMx5CX\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -14401,15 +18468,15 @@ "issuingAuthority": "VA" } }, - "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", - "issuanceDate": "2024-04-07T05:06:19Z", + "issuer": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", + "issuanceDate": "2024-04-14T05:31:49Z", "proof": { "type": "DataIntegrityProof", - "created": "2024-04-07T05:06:19Z", - "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "created": "2024-04-14T05:31:49Z", + "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod", - "proofValue": "z2RurU3UngcHLqkBjiP4hd8m64VvFPw1y6yVEiFRctYK2MZdVcQAJsCvjrCfXUSNKqaLKS4YBqPVQNLNzF3a3nkyn" + "proofValue": "zX7ENp6eUrTpxHKe4QhGTSYgywMsCccskEFSNQ9sycxtxa5eiRvcQ9pQqC3G9mdzPWxtqa3n3biejjdK3hpZaxUWPKBFrmeaRXyYyvkT4JQkRYuv6D6QUpiHzD4AZNiMx5CX" } }, "options": { @@ -14464,79 +18531,45 @@ "statusCodes": [ 408, 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc.spruceid.xyz/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "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:117: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:161:7)" - } - }, - { - "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "4MBWqb_W4EgxblyO3Hrfx", - "ctx": null, - "_testId": "urn:uuid:1f5299f7-68ab-4437-904f-244e7bd7fdca", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "SpruceID: P-384", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14420, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", - "showDiff": false, - "actual": null, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] + } + }, "operator": "notStrictEqual", - "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:147:7)\n at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:159:7)\n at process.processImmediate (node:internal/timers:478:21)" + "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)" } }, { "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14545,33 +18578,37 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "m_khIDJdFkgcVdwQU5MBU", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "_kYBu0YV6gxak6tNw86TW", "ctx": null, - "_testId": "urn:uuid:f1d65720-1b28-4d64-9d3e-79db04a3fad8", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:494408e6-1f72-4d8c-8324-96e3961ebe03", "cell": { - "columnId": "bovine: P-256", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + "columnId": "apicatalog.com: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14421, + "_idleStart": 15425, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 124, + "duration": 68, "state": "passed", - "speed": "slow" - }, + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "type": "test", - "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier});\n }", + "title": "\"before each\" hook in \"apicatalog.com: P-384\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14580,80 +18617,39 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "fpLOCPhgFbFgt8PsJ0N-X", + "type": "hook", + "parent": "_kYBu0YV6gxak6tNw86TW", "ctx": null, - "_testId": "urn:uuid:33a3d4fa-468d-4df9-b08c-117a9773dc9c", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "bovine: P-384", - "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14659, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", - "showDiff": false, - "actual": null, - "operator": "notStrictEqual", - "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:147:7)\n at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:159:7)\n at process.processImmediate (node:internal/timers:478:21)" - } + "_error": null } - ] + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "k-9theyixc38RNp2T-f3m", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:b71255e4-e104-4ec4-a4bd-c3a10193060b" }, { - "id": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "cells": [ - { - "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "GFlPudjpydGx-_F26XgUH", - "ctx": null, - "_testId": "urn:uuid:7c49624b-a23f-45da-8837-675296387cda", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13272, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 101, - "state": "passed", - "speed": "slow" - }, + "title": "Digital Bazaar: P-256", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14662,68 +18658,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "hIPugp2bPHEE4GKawwzfc", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "VKwoFfYbKNOpDVQ9cAla7", "ctx": null, - "_testId": "urn:uuid:f5c1020f-9066-4be0-a7cf-fa8c2efa487b", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:cc484225-9920-4118-8b8d-d09e6fb19592", "cell": { - "columnId": "apicatalog.com: P-384", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13978, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, - "duration": 97, - "state": "passed", - "speed": "slow" - }, - { - "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "csrAxmfUk0g3UKhTipti4", - "ctx": null, - "_testId": "urn:uuid:9bd23f2a-6c73-45ec-9bb5-ea99dba21fa3", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14173, + "_idleStart": 15494, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 74, "state": "passed", "speed": "medium" }, { "type": "test", "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14732,56 +18693,21 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "k6lo2H9lOgqELKMTudU8R", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "VKwoFfYbKNOpDVQ9cAla7", "ctx": null, - "_testId": "urn:uuid:ef057b10-f2c0-46ad-a704-cfc4dfbd8d74", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:8d23db62-9b8d-438c-bb34-bc8bdd32b514", "cell": { - "columnId": "Digital Bazaar: P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14287, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 51, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "Ou3uXbcg4F516q4NERJ-M", - "ctx": null, - "_testId": "urn:uuid:c41be3fe-2a3a-4c89-8c79-a80439f28101", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "SpruceID: P-256", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14380, + "_idleStart": 15568, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -14789,11 +18715,15 @@ "duration": 40, "state": "passed", "speed": "medium" - }, + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "title": "\"before each\" hook in \"Digital Bazaar: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14802,40 +18732,39 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "4MBWqb_W4EgxblyO3Hrfx", + "type": "hook", + "parent": "VKwoFfYbKNOpDVQ9cAla7", "ctx": null, - "_testId": "urn:uuid:8e1cef28-52c0-47b3-b7df-b94114f12b72", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "SpruceID: P-384", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14421, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", - "showDiff": false, - "actual": null, - "operator": "notStrictEqual", - "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:147:7)\n at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:178:5)\n at process.processImmediate (node:internal/timers:478:21)" - } - }, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "k-9theyixc38RNp2T-f3m", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:b43b44e7-7297-4e69-b98c-012182ebba52" + }, + { + "title": "Digital Bazaar: P-384", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14844,33 +18773,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "m_khIDJdFkgcVdwQU5MBU", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "UiHEznhaSSbbImNA7cN8t", "ctx": null, - "_testId": "urn:uuid:980199ba-c681-45b3-9124-1f02499d0551", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:0ead7e46-91a9-4b45-9865-8e99f181d781", "cell": { - "columnId": "bovine: P-256", - "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + "columnId": "Digital Bazaar: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14546, + "_idleStart": 15609, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 72, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", - "body": "async function() {\n annotateReportableTest(this, {implementationName, keyType});\n\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier});\n }", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14879,650 +18808,703 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/20-rdfc-verify.js", - "parent": "fpLOCPhgFbFgt8PsJ0N-X", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "UiHEznhaSSbbImNA7cN8t", "ctx": null, - "_testId": "urn:uuid:106e0faa-0797-440a-9150-5582ab40cbdb", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:f47b9e96-28b8-4d52-b25f-4a387ea11567", "cell": { - "columnId": "bovine: P-384", + "columnId": "Digital Bazaar: P-384", "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14660, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", - "showDiff": false, - "actual": null, - "operator": "notStrictEqual", - "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:147:7)\n at Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/assertions.js:178:5)\n at process.processImmediate (node:internal/timers:478:21)" - } - } - ] - } - ] - }, - { - "title": "ecdsa-rdfc-2019 (interop)", - "ctx": null, - "suites": [], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14661, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 121, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14782, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 198, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14980, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 193, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 15173, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 200, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 15372, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 103, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 15476, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 103, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 15578, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 244, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 15823, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 113, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15680, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 38, + "state": "passed", + "speed": "medium" + } + ], + "root": false, "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 15936, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 101, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 16036, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 92, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, + "_beforeEach": [ + { + "title": "\"before each\" hook in \"Digital Bazaar: P-384\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "UiHEznhaSSbbImNA7cN8t", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], "_timeout": 15000, "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 16129, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 286, - "_error": null + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "k-9theyixc38RNp2T-f3m", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:082d624a-4ad1-428c-8840-3d407d1032a6" }, { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, + "title": "SpruceID: P-256", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "ZyQyNjc9ixEamh1-U-5-m", + "ctx": null, + "_testId": "urn:uuid:3f3f1628-9f40-4bf5-9281-1f4d5e91aed6", + "cell": { + "columnId": "SpruceID: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15718, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 32, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"issuanceDate\":\"2024-04-14T05:31:49Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:31:49Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z4vuCMSERJbPSKqxzWpQCgyiaexCdZMD1MHP3wxm9JzXkSMwPuNWxmZZusuKJYDqi8ArWMKC1rNdgqGHNsqgg4JfJ\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "DriverLicense": { + "@id": "urn:example:DriverLicense", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", + "expirationDate": "urn:example:expiration", + "issuingAuthority": "urn:example:issuingAuthority" + } + }, + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2" + ], + "id": "urn:uuid:36245ee9-9074-4b05-a777-febff2e69757", + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "credentialSubject": { + "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", + "driverLicense": { + "type": "DriverLicense", + "documentIdentifier": "T21387yc328c7y32h23f23", + "dateOfBirth": "01-01-1990", + "expirationDate": "01-01-2030", + "issuingAuthority": "VA" + } + }, + "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "issuanceDate": "2024-04-14T05:31:49Z", + "proof": { + "type": "DataIntegrityProof", + "created": "2024-04-14T05:31:49Z", + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "cryptosuite": "ecdsa-rdfc-2019", + "proofPurpose": "assertionMethod", + "proofValue": "z4vuCMSERJbPSKqxzWpQCgyiaexCdZMD1MHP3wxm9JzXkSMwPuNWxmZZusuKJYDqi8ArWMKC1rNdgqGHNsqgg4JfJ" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.spruceid.xyz/credentials/verify", + "status": 400 + }, + "operator": "notStrictEqual", + "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)" + } + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "ZyQyNjc9ixEamh1-U-5-m", + "ctx": null, + "_testId": "urn:uuid:395c696f-d77c-41c0-8243-9dc1b27b3a3a", + "cell": { + "columnId": "SpruceID: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15750, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 21, + "state": "passed", + "speed": "fast" + } + ], + "root": false, "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 16414, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 93, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 16507, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 48, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, + "_beforeEach": [ + { + "title": "\"before each\" hook in \"SpruceID: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "ZyQyNjc9ixEamh1-U-5-m", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], "_timeout": 15000, "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 16555, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 164, - "_error": null + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "k-9theyixc38RNp2T-f3m", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:92d3579a-66d9-4077-b937-5a1f57d6d9a6" }, { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "title": "SpruceID: P-384", "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 16720, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 48, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "ddhvrOoBSYi54AvQQHPuy", + "ctx": null, + "_testId": "urn:uuid:a97e5d7d-3144-4571-99ba-883e0dc2e70b", + "cell": { + "columnId": "SpruceID: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15772, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "ddhvrOoBSYi54AvQQHPuy", + "ctx": null, + "_testId": "urn:uuid:6263f896-2026-4dfa-a83c-a4e34fd8ba0b", + "cell": { + "columnId": "SpruceID: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15772, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 0, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } + } + ], + "root": false, "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 16767, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 59, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, + "_retries": -1, + "_beforeEach": [ + { + "title": "\"before each\" hook in \"SpruceID: P-384\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "ddhvrOoBSYi54AvQQHPuy", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], "_timeout": 15000, "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 16826, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 127, - "_error": null + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "k-9theyixc38RNp2T-f3m", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:6fa5171c-5ad9-470c-b86c-d06c0bd7069a" }, { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, + "title": "bovine: P-256", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "2tM2ZRhig3T74TJrO6ADS", + "ctx": null, + "_testId": "urn:uuid:031ef101-3f89-43ea-b04e-b660b47d1a5f", + "cell": { + "columnId": "bovine: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15772, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 105, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "2tM2ZRhig3T74TJrO6ADS", + "ctx": null, + "_testId": "urn:uuid:02a54472-0f98-456d-861f-b36cff27eb14", + "cell": { + "columnId": "bovine: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15877, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 97, + "state": "passed", + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ + { + "title": "\"before each\" hook in \"bovine: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "2tM2ZRhig3T74TJrO6ADS", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], "_timeout": 15000, "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 16953, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 126, - "_error": null + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "k-9theyixc38RNp2T-f3m", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:269ace1a-6f4b-4390-9807-20e4338bcbdf" }, { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, + "title": "bovine: P-384", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "2-XkugcFS0AKE8w0D_ed8", + "ctx": null, + "_testId": "urn:uuid:5733ebe8-caaf-43bb-a1b9-c80cd1a6c6cc", + "cell": { + "columnId": "bovine: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15975, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 0, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "2-XkugcFS0AKE8w0D_ed8", + "ctx": null, + "_testId": "urn:uuid:bfb6b20d-11db-4161-8971-842fc34e8ddb", + "cell": { + "columnId": "bovine: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15976, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } + } + ], + "root": false, "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 17080, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 129, - "_error": null - }, - { - "title": "\"before all\" hook in \"ecdsa-rdfc-2019 (interop)\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document\n });\n }", - "async": 0, - "sync": true, + "_retries": -1, + "_beforeEach": [ + { + "title": "\"before each\" hook in \"bovine: P-384\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "2-XkugcFS0AKE8w0D_ed8", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], "_timeout": 15000, "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 17208, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 118, - "_error": null + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "k-9theyixc38RNp2T-f3m", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:76c077d4-1176-47ca-b519-ee1a44dd5e16" } ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], "_afterEach": [], "_afterAll": [], "_timeout": 15000, @@ -15531,27 +19513,31 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "Lj91xXIjIjtnwr_GDEsZw", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", + "parent": "GzHifvD62JwDWet-oBmTR", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", "matrix": true, "report": true, - "rowLabel": "Issuer", + "rowLabel": "Test Name", "columnLabel": "Verifier", - "_testId": "urn:uuid:9bf2865b-7b98-4786-a628-2f2f1fe3c364", + "_testId": "urn:uuid:81034bfe-8bd2-446e-93c0-0150dd648942", "columns": [ - "apicatalog.com: P-256, P-384", - "Digital Bazaar: P-256, P-384", + "apicatalog.com: P-256", + "apicatalog.com: P-384", + "Digital Bazaar: P-256", + "Digital Bazaar: P-384", "SpruceID: P-256", - "bovine: P-256" + "SpruceID: P-384", + "bovine: P-256", + "bovine: P-384" ], "rows": [ { - "id": "apicatalog.com: P-256", + "id": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", "cells": [ { "type": "test", - "title": "\"apicatalog.com: P-256, P-384\" should verify \"apicatalog.com: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -15560,33 +19546,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "9hcODjfQRa1Tq-ZoZ8tSi", "ctx": null, - "_testId": "urn:uuid:4b5b1b19-c3dd-4578-9314-1d8cd2586f60", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:07e4ac54-9a2f-4f36-9ed2-04f0f0648f33", "cell": { - "rowId": "apicatalog.com: P-256", - "columnId": "apicatalog.com: P-256, P-384" + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17327, + "_idleStart": 15022, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 148, + "duration": 174, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "\"Digital Bazaar: P-256, P-384\" should verify \"apicatalog.com: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -15595,26 +19581,26 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "_kYBu0YV6gxak6tNw86TW", "ctx": null, - "_testId": "urn:uuid:aeda600b-3e69-48e5-8145-bb6aae6d66cf", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:7bc34ec9-ba95-4777-ab43-60c4045b3903", "cell": { - "rowId": "apicatalog.com: P-256", - "columnId": "Digital Bazaar: P-256, P-384" + "columnId": "apicatalog.com: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17475, + "_idleStart": 15294, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 130, "state": "failed", "err": { "name": "AssertionError", @@ -15625,6 +19611,7 @@ "request": {}, "options": { "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"issuanceDate\":\"2024-04-14T05:31:49Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:31:49Z\",\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"zX7ENp6eUrTpxHKe4QhGTSYgywMsCccskEFSNQ9sycxtxa5eiRvcQ9pQqC3G9mdzPWxtqa3n3biejjdK3hpZaxUWPKBFrmeaRXyYyvkT4JQkRYuv6D6QUpiHzD4AZNiMx5CX\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -15650,10 +19637,9 @@ "@type": "@id" } }, - "https://w3id.org/security/data-integrity/v2", - "https://w3id.org/security/multikey/v1" + "https://w3id.org/security/data-integrity/v2" ], - "id": "urn:uuid:8f7fd1c0-dab4-4ac2-b474-88f34e90b03c", + "id": "urn:uuid:36245ee9-9074-4b05-a777-febff2e69757", "type": [ "VerifiableCredential", "DriverLicenseCredential" @@ -15668,15 +19654,15 @@ "issuingAuthority": "VA" } }, - "issuer": "https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256", - "issuanceDate": "2024-04-07T05:06:33Z", + "issuer": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", + "issuanceDate": "2024-04-14T05:31:49Z", "proof": { - "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "type": "DataIntegrityProof", + "created": "2024-04-14T05:31:49Z", + "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod", - "created": "2024-04-07T05:06:33Z", - "proofValue": "zFmMVLPGJH2YNtaxGeC6N2EhEfMJ6RqgMUz5tece9Pn1d5STawxgsvRJW8RggM2ii7YwVce8eApY8otjZxRiQNnG" + "proofValue": "zX7ENp6eUrTpxHKe4QhGTSYgywMsCccskEFSNQ9sycxtxa5eiRvcQ9pQqC3G9mdzPWxtqa3n3biejjdK3hpZaxUWPKBFrmeaRXyYyvkT4JQkRYuv6D6QUpiHzD4AZNiMx5CX" } }, "options": { @@ -15702,148 +19688,74 @@ "keepAlive": false, "maxSockets": null, "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half", - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:8f7fd1c0-dab4-4ac2-b474-88f34e90b03c\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256\",\"issuanceDate\":\"2024-04-07T05:06:33Z\",\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-07T05:06:33Z\",\"proofValue\":\"zFmMVLPGJH2YNtaxGeC6N2EhEfMJ6RqgMUz5tece9Pn1d5STawxgsvRJW8RggM2ii7YwVce8eApY8otjZxRiQNnG\"}},\"options\":{\"checks\":[\"proof\"]}}" - }, - "name": "HTTPError", - "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19rSJA9yQQwEqSSoNDjzkuNJ/credentials/verify", - "status": 400, - "data": { - "verified": false, - "results": [ - { - "proof": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - { - "@protected": true, - "DriverLicenseCredential": "urn:example:DriverLicenseCredential", - "DriverLicense": { - "@id": "urn:example:DriverLicense", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "documentIdentifier": "urn:example:documentIdentifier", - "dateOfBirth": "urn:example:dateOfBirth", - "expirationDate": "urn:example:expiration", - "issuingAuthority": "urn:example:issuingAuthority" - } - }, - "driverLicense": { - "@id": "urn:example:driverLicense", - "@type": "@id" - } - }, - "https://w3id.org/security/data-integrity/v2", - "https://w3id.org/security/multikey/v1" - ], - "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", - "type": "DataIntegrityProof", - "cryptosuite": "ecdsa-rdfc-2019", - "proofPurpose": "assertionMethod", - "created": "2024-04-07T05:06:33Z", - "proofValue": "zFmMVLPGJH2YNtaxGeC6N2EhEfMJ6RqgMUz5tece9Pn1d5STawxgsvRJW8RggM2ii7YwVce8eApY8otjZxRiQNnG" - }, - "verified": false, - "verificationMethod": { - "@context": "https://w3id.org/security/multikey/v1", - "id": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", - "type": "Multikey", - "controller": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", - "publicKeyMultibase": "zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP" - }, - "error": { - "name": "VerificationError", - "message": "Credential issuer must match the verification method controller." - }, - "purposeResult": { - "valid": false, - "error": { - "name": "Error", - "message": "Credential issuer must match the verification method controller.", - "stack": "Error: Credential issuer must match the verification method controller.\n at CredentialIssuancePurpose.validate (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/CredentialIssuancePurpose.js:70:15)\n at async /home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:301:27\n at async Promise.all (index 0)\n at async _verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:287:3)\n at async ProofSet.verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:191:23)\n at async Object.verify (/home/node/app/node_modules/jsonld-signatures/lib/jsonld-signatures.js:169:18)\n at async _verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:328:18)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:277:12)\n at async file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/http.js:89:24" - } - } - } - ], - "error": { - "name": "VerificationError", - "errors": [ - { - "name": "Error", - "message": "Credential issuer must match the verification method controller.", - "stack": "Error: Credential issuer must match the verification method controller.\n at CredentialIssuancePurpose.validate (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/CredentialIssuancePurpose.js:70:15)\n at async /home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:301:27\n at async Promise.all (index 0)\n at async _verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:287:3)\n at async ProofSet.verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:191:23)\n at async Object.verify (/home/node/app/node_modules/jsonld-signatures/lib/jsonld-signatures.js:169:18)\n at async _verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:328:18)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:277:12)\n at async file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/http.js:89:24" - } + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" ], - "message": "Verification error(s)." + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { "checks": [ - { - "check": [ - "proof" - ], - "id": "urn:uuid:8f7fd1c0-dab4-4ac2-b474-88f34e90b03c", - "error": "Credential issuer must match the verification method controller.", - "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP" - } - ] + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] } }, "operator": "notStrictEqual", - "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:117: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:94:13)" + "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)" } }, { "type": "test", - "title": "\"SpruceID: P-256\" should verify \"apicatalog.com: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -15852,26 +19764,96 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "VKwoFfYbKNOpDVQ9cAla7", "ctx": null, - "_testId": "urn:uuid:7801f817-5018-4322-9431-f1201d321b8b", + "_testId": "urn:uuid:cc484225-9920-4118-8b8d-d09e6fb19592", + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, "_events": {}, "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15494, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 74, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "UiHEznhaSSbbImNA7cN8t", + "ctx": null, + "_testId": "urn:uuid:0ead7e46-91a9-4b45-9865-8e99f181d781", "cell": { - "rowId": "apicatalog.com: P-256", - "columnId": "SpruceID: P-256" + "columnId": "Digital Bazaar: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17536, + "_idleStart": 15609, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 72, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "ZyQyNjc9ixEamh1-U-5-m", + "ctx": null, + "_testId": "urn:uuid:3f3f1628-9f40-4bf5-9281-1f4d5e91aed6", + "cell": { + "columnId": "SpruceID: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15718, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 32, "state": "failed", "err": { "name": "AssertionError", @@ -15882,7 +19864,7 @@ "request": {}, "options": { "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:d3e6279d-bfda-49aa-a837-7617ed97b047\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256\",\"issuanceDate\":\"2024-04-07T05:06:33Z\",\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-07T05:06:33Z\",\"proofValue\":\"z2JohxuwDQt8K9qQmjgq6V4j48phgySCMo5Yt4ndhHkN5r1CNSD6K2mX2neRCLeFnAQUshCmyxUt3daGVXhQMaTJW\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"issuanceDate\":\"2024-04-14T05:31:49Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:31:49Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z4vuCMSERJbPSKqxzWpQCgyiaexCdZMD1MHP3wxm9JzXkSMwPuNWxmZZusuKJYDqi8ArWMKC1rNdgqGHNsqgg4JfJ\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -15908,10 +19890,9 @@ "@type": "@id" } }, - "https://w3id.org/security/data-integrity/v2", - "https://w3id.org/security/multikey/v1" + "https://w3id.org/security/data-integrity/v2" ], - "id": "urn:uuid:d3e6279d-bfda-49aa-a837-7617ed97b047", + "id": "urn:uuid:36245ee9-9074-4b05-a777-febff2e69757", "type": [ "VerifiableCredential", "DriverLicenseCredential" @@ -15926,15 +19907,15 @@ "issuingAuthority": "VA" } }, - "issuer": "https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-256", - "issuanceDate": "2024-04-07T05:06:33Z", + "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "issuanceDate": "2024-04-14T05:31:49Z", "proof": { - "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "type": "DataIntegrityProof", + "created": "2024-04-14T05:31:49Z", + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod", - "created": "2024-04-07T05:06:33Z", - "proofValue": "z2JohxuwDQt8K9qQmjgq6V4j48phgySCMo5Yt4ndhHkN5r1CNSD6K2mX2neRCLeFnAQUshCmyxUt3daGVXhQMaTJW" + "proofValue": "z4vuCMSERJbPSKqxzWpQCgyiaexCdZMD1MHP3wxm9JzXkSMwPuNWxmZZusuKJYDqi8ArWMKC1rNdgqGHNsqgg4JfJ" } }, "options": { @@ -16013,13 +19994,13 @@ "status": 400 }, "operator": "notStrictEqual", - "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:117: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:94:13)" + "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)" } }, { "type": "test", - "title": "\"bovine: P-256\" should verify \"apicatalog.com: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -16028,38 +20009,157 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "ddhvrOoBSYi54AvQQHPuy", + "ctx": null, + "_testId": "urn:uuid:a97e5d7d-3144-4571-99ba-883e0dc2e70b", + "cell": { + "columnId": "SpruceID: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15772, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } + }, + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "2tM2ZRhig3T74TJrO6ADS", + "ctx": null, + "_testId": "urn:uuid:031ef101-3f89-43ea-b04e-b660b47d1a5f", + "cell": { + "columnId": "bovine: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15772, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 105, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "2-XkugcFS0AKE8w0D_ed8", + "ctx": null, + "_testId": "urn:uuid:5733ebe8-caaf-43bb-a1b9-c80cd1a6c6cc", + "cell": { + "columnId": "bovine: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15975, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 0, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } + } + ] + }, + { + "id": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "cells": [ + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "9hcODjfQRa1Tq-ZoZ8tSi", "ctx": null, - "_testId": "urn:uuid:de8fd5e2-7513-414e-81bf-3cca75ebbb8f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:66736e17-e0bf-40ba-bd22-3849b9a3cf61", "cell": { - "rowId": "apicatalog.com: P-256", - "columnId": "bovine: P-256" + "columnId": "apicatalog.com: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17578, + "_idleStart": 15196, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 120, + "duration": 98, "state": "passed", "speed": "slow" - } - ] - }, - { - "id": "apicatalog.com: P-384", - "cells": [ + }, { "type": "test", - "title": "\"apicatalog.com: P-256, P-384\" should verify \"apicatalog.com: P-384\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -16068,33 +20168,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "_kYBu0YV6gxak6tNw86TW", "ctx": null, - "_testId": "urn:uuid:0adee9bb-eb54-4e6b-9696-0398927cda4f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:494408e6-1f72-4d8c-8324-96e3961ebe03", "cell": { - "rowId": "apicatalog.com: P-384", - "columnId": "apicatalog.com: P-256, P-384" + "columnId": "apicatalog.com: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17698, + "_idleStart": 15425, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 378, + "duration": 68, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "\"Digital Bazaar: P-256, P-384\" should verify \"apicatalog.com: P-384\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -16103,265 +20203,235 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "VKwoFfYbKNOpDVQ9cAla7", "ctx": null, - "_testId": "urn:uuid:e88d92b3-0087-4330-8187-d8c74178d181", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:8d23db62-9b8d-438c-bb34-bc8bdd32b514", "cell": { - "rowId": "apicatalog.com: P-384", - "columnId": "Digital Bazaar: P-256, P-384" + "columnId": "Digital Bazaar: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18076, + "_idleStart": 15568, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 107, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "headers": {}, - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - { - "@protected": true, - "DriverLicenseCredential": "urn:example:DriverLicenseCredential", - "DriverLicense": { - "@id": "urn:example:DriverLicense", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "documentIdentifier": "urn:example:documentIdentifier", - "dateOfBirth": "urn:example:dateOfBirth", - "expirationDate": "urn:example:expiration", - "issuingAuthority": "urn:example:issuingAuthority" - } - }, - "driverLicense": { - "@id": "urn:example:driverLicense", - "@type": "@id" - } - }, - "https://w3id.org/security/data-integrity/v2", - "https://w3id.org/security/multikey/v1" - ], - "id": "urn:uuid:78b2889c-fc2b-45ab-8bbc-7c086d638acf", - "type": [ - "VerifiableCredential", - "DriverLicenseCredential" - ], - "credentialSubject": { - "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", - "driverLicense": { - "type": "DriverLicense", - "documentIdentifier": "T21387yc328c7y32h23f23", - "dateOfBirth": "01-01-1990", - "expirationDate": "01-01-2030", - "issuingAuthority": "VA" - } - }, - "issuer": "https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-384", - "issuanceDate": "2024-04-07T05:06:33Z", - "proof": { - "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", - "type": "DataIntegrityProof", - "cryptosuite": "ecdsa-rdfc-2019", - "proofPurpose": "assertionMethod", - "created": "2024-04-07T05:06:34Z", - "proofValue": "z2PafcT66uJPyftewzeWjaK5hL81dUWNZ8GMrzbLnHJXnQQBAxx337TZUcJb1oXm2SNfvgdWZgLP3SENr8YPH9FjyhVTzN2YtEMs1nrqugsH5RqyNa6yXRNj6iV9EydUgoLWy" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half", - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:78b2889c-fc2b-45ab-8bbc-7c086d638acf\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-rdfc-2019&curve=p-384\",\"issuanceDate\":\"2024-04-07T05:06:33Z\",\"proof\":{\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-07T05:06:34Z\",\"proofValue\":\"z2PafcT66uJPyftewzeWjaK5hL81dUWNZ8GMrzbLnHJXnQQBAxx337TZUcJb1oXm2SNfvgdWZgLP3SENr8YPH9FjyhVTzN2YtEMs1nrqugsH5RqyNa6yXRNj6iV9EydUgoLWy\"}},\"options\":{\"checks\":[\"proof\"]}}" - }, - "name": "HTTPError", - "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19rSJA9yQQwEqSSoNDjzkuNJ/credentials/verify", - "status": 400, - "data": { - "verified": false, - "results": [ - { - "proof": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - { - "@protected": true, - "DriverLicenseCredential": "urn:example:DriverLicenseCredential", - "DriverLicense": { - "@id": "urn:example:DriverLicense", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "documentIdentifier": "urn:example:documentIdentifier", - "dateOfBirth": "urn:example:dateOfBirth", - "expirationDate": "urn:example:expiration", - "issuingAuthority": "urn:example:issuingAuthority" - } - }, - "driverLicense": { - "@id": "urn:example:driverLicense", - "@type": "@id" - } - }, - "https://w3id.org/security/data-integrity/v2", - "https://w3id.org/security/multikey/v1" - ], - "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", - "type": "DataIntegrityProof", - "cryptosuite": "ecdsa-rdfc-2019", - "proofPurpose": "assertionMethod", - "created": "2024-04-07T05:06:34Z", - "proofValue": "z2PafcT66uJPyftewzeWjaK5hL81dUWNZ8GMrzbLnHJXnQQBAxx337TZUcJb1oXm2SNfvgdWZgLP3SENr8YPH9FjyhVTzN2YtEMs1nrqugsH5RqyNa6yXRNj6iV9EydUgoLWy" - }, - "verified": false, - "error": { - "name": "VerificationError", - "message": "Invalid signature." - } - } - ], - "error": { - "name": "VerificationError", - "errors": [ - { - "name": "Error", - "message": "Invalid signature.", - "stack": "Error: Invalid signature.\n at DataIntegrityProof.verifyProof (file:///home/node/app/node_modules/@digitalbazaar/data-integrity/lib/DataIntegrityProof.js:291:15)\n at async /home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:268:53\n at async Promise.all (index 0)\n at async _verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:256:3)\n at async ProofSet.verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:191:23)\n at async Object.verify (/home/node/app/node_modules/jsonld-signatures/lib/jsonld-signatures.js:169:18)\n at async _verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:328:18)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:277:12)\n at async file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/http.js:89:24" - } - ], - "message": "Verification error(s)." - }, - "checks": [ - { - "check": [ - "proof" - ], - "id": "urn:uuid:78b2889c-fc2b-45ab-8bbc-7c086d638acf", - "error": "Invalid signature.", - "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ" - } - ] - } - }, - "operator": "notStrictEqual", - "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:117: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:94:13)" - } + "duration": 40, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "UiHEznhaSSbbImNA7cN8t", + "ctx": null, + "_testId": "urn:uuid:f47b9e96-28b8-4d52-b25f-4a387ea11567", + "cell": { + "columnId": "Digital Bazaar: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15680, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 38, + "state": "passed", + "speed": "medium" }, { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "ZyQyNjc9ixEamh1-U-5-m", + "ctx": null, + "_testId": "urn:uuid:395c696f-d77c-41c0-8243-9dc1b27b3a3a", "cell": { - "rowId": "apicatalog.com: P-384", - "colId": "SpruceID: P-256" + "columnId": "SpruceID: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, - "state": "pending", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15750, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 21, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "ddhvrOoBSYi54AvQQHPuy", + "ctx": null, + "_testId": "urn:uuid:6263f896-2026-4dfa-a83c-a4e34fd8ba0b", + "cell": { + "columnId": "SpruceID: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15772, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 0, + "state": "failed", "err": { - "message": "Test skipped." + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" } }, { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "2tM2ZRhig3T74TJrO6ADS", + "ctx": null, + "_testId": "urn:uuid:02a54472-0f98-456d-861f-b36cff27eb14", "cell": { - "rowId": "apicatalog.com: P-384", - "colId": "bovine: P-256" + "columnId": "bovine: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, - "state": "pending", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15877, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 97, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "2-XkugcFS0AKE8w0D_ed8", + "ctx": null, + "_testId": "urn:uuid:bfb6b20d-11db-4161-8971-842fc34e8ddb", + "cell": { + "columnId": "bovine: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15976, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, + "state": "failed", "err": { - "message": "Test skipped." + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" } } ] - }, + } + ] + }, + { + "title": "ecdsa-rdfc-2019 (verifiers 2.0)", + "ctx": null, + "suites": [ { - "id": "Digital Bazaar: P-256", - "cells": [ + "title": "apicatalog.com: P-256", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "\"apicatalog.com: P-256, P-384\" should verify \"Digital Bazaar: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -16370,33 +20440,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Ry5rlb0faHk8Svy-JmTyh", "ctx": null, - "_testId": "urn:uuid:a8f60f57-207a-4a91-b748-60e843a5db86", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:809825c9-75a7-48c4-9637-9298f97eb2c8", "cell": { - "rowId": "Digital Bazaar: P-256", - "columnId": "apicatalog.com: P-256, P-384" + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18184, + "_idleStart": 15976, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 195, + "duration": 219, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "\"Digital Bazaar: P-256, P-384\" should verify \"Digital Bazaar: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -16405,33 +20475,37 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Ry5rlb0faHk8Svy-JmTyh", "ctx": null, - "_testId": "urn:uuid:7e9f3212-48ab-4d3c-b355-a6a9a9591417", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:d54905aa-75f4-4bcd-bc6f-ea9f84c79f20", "cell": { - "rowId": "Digital Bazaar: P-256", - "columnId": "Digital Bazaar: P-256, P-384" + "columnId": "apicatalog.com: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18378, + "_idleStart": 16196, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 63, + "duration": 92, "state": "passed", - "speed": "medium" - }, + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "type": "test", - "title": "\"SpruceID: P-256\" should verify \"Digital Bazaar: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "\"before each\" hook in \"apicatalog.com: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -16440,42 +20514,83 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "type": "hook", + "parent": "Ry5rlb0faHk8Svy-JmTyh", "ctx": null, - "_testId": "urn:uuid:b1fbcbe3-eec3-43a3-8ee0-4fe147099330", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", "_events": {}, "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "urUb5sXRQzYW0_B2VrMr9", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:67460da8-794d-4492-9881-ea90817a68be" + }, + { + "title": "apicatalog.com: P-384", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "LRzAmMlJ--x18M-QXWXs6", + "ctx": null, + "_testId": "urn:uuid:98899d99-607d-4673-9b2b-3d3b8c6f8c68", "cell": { - "rowId": "Digital Bazaar: P-256", - "columnId": "SpruceID: P-256" + "columnId": "apicatalog.com: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18442, + "_idleStart": 16288, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 75, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, "request": {}, "options": { "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:1fbb91b3-638c-49e8-b31c-0242bf3ca8e0\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ\",\"issuanceDate\":\"2024-04-07T05:06:34Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-07T05:06:34Z\",\"verificationMethod\":\"did:key:zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ#zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z5nhN1m1jHsomhi2SQX1hbhHU3BgizjiquBv2KhPNTNBgooMPygEiRLfbh7ojezZGMhy4RyX7b8qXJhMjUFJgxKKZ\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/ns/credentials/v2\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}}],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:31:49Z\",\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z9UjLw4CLxtT26nbtrWNstDEqWi72x5HXGMPRwK9qEoAX4GeDCvVEAMAooM7P3gLBXqfyeKdrfTL5Xvt1TJ5BDNzuA39bGpAQ53mHJu35GSmovQLaEg6WHgKPJR2C4vnUfP2\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/ns/credentials/v2", { "@protected": true, "DriverLicenseCredential": "urn:example:DriverLicenseCredential", @@ -16495,10 +20610,9 @@ "@id": "urn:example:driverLicense", "@type": "@id" } - }, - "https://w3id.org/security/data-integrity/v2" + } ], - "id": "urn:uuid:1fbb91b3-638c-49e8-b31c-0242bf3ca8e0", + "id": "urn:uuid:36245ee9-9074-4b05-a777-febff2e69757", "type": [ "VerifiableCredential", "DriverLicenseCredential" @@ -16513,15 +20627,14 @@ "issuingAuthority": "VA" } }, - "issuer": "did:key:zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ", - "issuanceDate": "2024-04-07T05:06:34Z", + "issuer": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", "proof": { "type": "DataIntegrityProof", - "created": "2024-04-07T05:06:34Z", - "verificationMethod": "did:key:zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ#zDnaexu7dNiESVoqicP5bbbV2cPVMRhByztVFHKZ16tD1okXZ", + "created": "2024-04-14T05:31:49Z", + "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod", - "proofValue": "z5nhN1m1jHsomhi2SQX1hbhHU3BgizjiquBv2KhPNTNBgooMPygEiRLfbh7ojezZGMhy4RyX7b8qXJhMjUFJgxKKZ" + "proofValue": "z9UjLw4CLxtT26nbtrWNstDEqWi72x5HXGMPRwK9qEoAX4GeDCvVEAMAooM7P3gLBXqfyeKdrfTL5Xvt1TJ5BDNzuA39bGpAQ53mHJu35GSmovQLaEg6WHgKPJR2C4vnUfP2" } }, "options": { @@ -16596,17 +20709,25 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://vc.spruceid.xyz/credentials/verify", - "status": 400 + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] + } }, "operator": "notStrictEqual", - "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:117: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:94:13)" + "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)" } }, { "type": "test", - "title": "\"bovine: P-256\" should verify \"Digital Bazaar: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -16615,38 +20736,308 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "LRzAmMlJ--x18M-QXWXs6", + "ctx": null, + "_testId": "urn:uuid:1597fe49-381d-4527-b25b-8d886cb623ad", + "cell": { + "columnId": "apicatalog.com: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16366, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 49, + "state": "passed", + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ + { + "title": "\"before each\" hook in \"apicatalog.com: P-384\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "LRzAmMlJ--x18M-QXWXs6", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "urUb5sXRQzYW0_B2VrMr9", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:dc9dd198-3ab2-4ee3-b795-c85eb16d4424" + }, + { + "title": "Digital Bazaar: P-256", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "MTPerC5x8p8RbPvBKY_Pz", "ctx": null, - "_testId": "urn:uuid:d5bf6da9-296d-42f9-a900-f7c5a3e814e0", + "_testId": "urn:uuid:7ffcb7dd-24b3-4c52-bf9e-8ebf5371a777", + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, "_events": {}, "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16416, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 52, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "MTPerC5x8p8RbPvBKY_Pz", + "ctx": null, + "_testId": "urn:uuid:479611ae-47fe-4347-b17a-a71ccdc57649", "cell": { - "rowId": "Digital Bazaar: P-256", - "columnId": "bovine: P-256" + "columnId": "Digital Bazaar: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18482, + "_idleStart": 16468, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 121, + "duration": 52, "state": "passed", - "speed": "slow" + "speed": "medium" } - ] + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ + { + "title": "\"before each\" hook in \"Digital Bazaar: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "MTPerC5x8p8RbPvBKY_Pz", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "urUb5sXRQzYW0_B2VrMr9", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:ba173a5a-4822-4210-aa2c-317b945144a7" + }, + { + "title": "Digital Bazaar: P-384", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "6NqTJ_6IDmy-ifYgwH0xC", + "ctx": null, + "_testId": "urn:uuid:37184420-ad72-4371-97a7-590305545214", + "cell": { + "columnId": "Digital Bazaar: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16520, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 60, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "6NqTJ_6IDmy-ifYgwH0xC", + "ctx": null, + "_testId": "urn:uuid:c9fe3f27-fb04-4812-acf9-6d53dec6ccea", + "cell": { + "columnId": "Digital Bazaar: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16581, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 51, + "state": "passed", + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ + { + "title": "\"before each\" hook in \"Digital Bazaar: P-384\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "6NqTJ_6IDmy-ifYgwH0xC", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "urUb5sXRQzYW0_B2VrMr9", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:c1dc136f-6f97-4ceb-bc5d-40a873483314" }, { - "id": "Digital Bazaar: P-384", - "cells": [ + "title": "SpruceID: P-256", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "\"apicatalog.com: P-256, P-384\" should verify \"Digital Bazaar: P-384\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -16655,42 +21046,42 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "p1ivWkcSRG-UuhmIzez6P", "ctx": null, - "_testId": "urn:uuid:ee269871-9d8b-4a1d-b538-54ca218d2196", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:2fa26526-afdc-4a4b-b174-155fd65a63bd", "cell": { - "rowId": "Digital Bazaar: P-384", - "columnId": "apicatalog.com: P-256, P-384" + "columnId": "SpruceID: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18604, + "_idleStart": 16633, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 270, + "duration": 24, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", "showDiff": false, "actual": { "response": {}, "request": {}, "options": { "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:69597dfa-8376-4470-840d-7b1c2f2a568f\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q\",\"issuanceDate\":\"2024-04-07T05:06:34Z\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-07T05:06:34Z\",\"verificationMethod\":\"did:key:z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q#z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2EsopgHF4Xtk29Dp3gkVRRFwoGVhcggwmgnsmb8pndTvpNxNyKvTPX6v2WpxfeDrqQ82H2f7k6xRxKZTFCNNMFWnV42ppXxRWJA28e61mN8F5Y8N381ZwYg5t6ifeLsM7ASo\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/ns/credentials/v2\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}}],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:31:49Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z5VsxB1n8yLdRWoMEXHJ98f5GW22FuL7xnaXTupEZMZ7bSSUCP6SqB583uJLuyXvxTnCuqYdF6wxpV2uzR4XHt4iP\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/ns/credentials/v2", { "@protected": true, "DriverLicenseCredential": "urn:example:DriverLicenseCredential", @@ -16710,10 +21101,9 @@ "@id": "urn:example:driverLicense", "@type": "@id" } - }, - "https://w3id.org/security/data-integrity/v2" + } ], - "id": "urn:uuid:69597dfa-8376-4470-840d-7b1c2f2a568f", + "id": "urn:uuid:36245ee9-9074-4b05-a777-febff2e69757", "type": [ "VerifiableCredential", "DriverLicenseCredential" @@ -16728,15 +21118,14 @@ "issuingAuthority": "VA" } }, - "issuer": "did:key:z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q", - "issuanceDate": "2024-04-07T05:06:34Z", + "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "proof": { "type": "DataIntegrityProof", - "created": "2024-04-07T05:06:34Z", - "verificationMethod": "did:key:z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q#z82LkyAawofXhS6sT7VvGgqevtCqTUydwVppGj8MEgX6jDPbMD6Wg5rNUnHrYRrhLz8dP8Q", + "created": "2024-04-14T05:31:49Z", + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod", - "proofValue": "z2EsopgHF4Xtk29Dp3gkVRRFwoGVhcggwmgnsmb8pndTvpNxNyKvTPX6v2WpxfeDrqQ82H2f7k6xRxKZTFCNNMFWnV42ppXxRWJA28e61mN8F5Y8N381ZwYg5t6ifeLsM7ASo" + "proofValue": "z5VsxB1n8yLdRWoMEXHJ98f5GW22FuL7xnaXTupEZMZ7bSSUCP6SqB583uJLuyXvxTnCuqYdF6wxpV2uzR4XHt4iP" } }, "options": { @@ -16811,25 +21200,261 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://vc.apicatalog.com/credentials/verify", - "status": 400, - "data": { - "checks": [ - "PROOF", - "INVALID_SIGNATURE" - ], - "warnings": [], - "errors": [] - } + "requestUrl": "https://vc.spruceid.xyz/credentials/verify", + "status": 400 }, "operator": "notStrictEqual", - "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:117: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:94:13)" + "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)" } }, { "type": "test", - "title": "\"Digital Bazaar: P-256, P-384\" should verify \"Digital Bazaar: P-384\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "p1ivWkcSRG-UuhmIzez6P", + "ctx": null, + "_testId": "urn:uuid:0871c487-4c62-42f0-90c4-38ca2e1444b3", + "cell": { + "columnId": "SpruceID: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16658, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 23, + "state": "passed", + "speed": "fast" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ + { + "title": "\"before each\" hook in \"SpruceID: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "p1ivWkcSRG-UuhmIzez6P", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "urUb5sXRQzYW0_B2VrMr9", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:213ca456-f938-40c2-888c-a0f867f51cc1" + }, + { + "title": "SpruceID: P-384", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-R_YnVUlD2wEfbHQTmjzc", + "ctx": null, + "_testId": "urn:uuid:df2296ab-2290-4a0f-b404-903846b3e4dc", + "cell": { + "columnId": "SpruceID: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16682, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 0, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-R_YnVUlD2wEfbHQTmjzc", + "ctx": null, + "_testId": "urn:uuid:201d1753-e893-4e74-9c28-21cf2de0c866", + "cell": { + "columnId": "SpruceID: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16682, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 0, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ + { + "title": "\"before each\" hook in \"SpruceID: P-384\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "-R_YnVUlD2wEfbHQTmjzc", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "urUb5sXRQzYW0_B2VrMr9", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:1fb4b350-bbd6-493b-92b3-68d57769618f" + }, + { + "title": "bovine: P-256", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "cA90HT-L_h9ueYiraWuCS", + "ctx": null, + "_testId": "urn:uuid:07e51921-062c-4cc5-8f11-5de7437b657c", + "cell": { + "columnId": "bovine: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16683, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 104, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -16838,58 +21463,78 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "cA90HT-L_h9ueYiraWuCS", "ctx": null, - "_testId": "urn:uuid:5c95d243-6a32-4412-9cd5-b20891bc4e3a", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:0fc6f26a-e28e-46b3-bfc6-b1794171a8b0", "cell": { - "rowId": "Digital Bazaar: P-384", - "columnId": "Digital Bazaar: P-256, P-384" + "columnId": "bovine: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18875, + "_idleStart": 16788, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 66, + "duration": 98, "state": "passed", - "speed": "medium" - }, - { - "cell": { - "rowId": "Digital Bazaar: P-384", - "colId": "SpruceID: P-256" - }, - "state": "pending", - "err": { - "message": "Test skipped." - } - }, + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "cell": { - "rowId": "Digital Bazaar: P-384", - "colId": "bovine: P-256" - }, - "state": "pending", - "err": { - "message": "Test skipped." - } + "title": "\"before each\" hook in \"bovine: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "cA90HT-L_h9ueYiraWuCS", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null } - ] + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "urUb5sXRQzYW0_B2VrMr9", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:e4035ba6-af6e-4c5b-9350-7734db516d25" }, { - "id": "SpruceID: P-256", - "cells": [ + "title": "bovine: P-384", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "\"apicatalog.com: P-256, P-384\" should verify \"SpruceID: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -16898,183 +21543,86 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "y8uhEpsdjtkembtxBfxlK", "ctx": null, - "_testId": "urn:uuid:512653e9-12ae-4891-9c2c-7bb8b4ca38bb", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:3a704e74-aa4e-4b0d-9a24-c95c8b5c32b9", "cell": { - "rowId": "SpruceID: P-256", - "columnId": "apicatalog.com: P-256, P-384" + "columnId": "bovine: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18940, + "_idleStart": 16886, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 0, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicense\":{\"@context\":{\"@protected\":true,\"dateOfBirth\":\"urn:example:dateOfBirth\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"expirationDate\":\"urn:example:expiration\",\"id\":\"@id\",\"issuingAuthority\":\"urn:example:issuingAuthority\",\"type\":\"@type\"},\"@id\":\"urn:example:DriverLicense\"},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"},\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\"}],\"id\":\"urn:uuid:b73f2cd3-2551-4553-af8e-62e032fb0e4b\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"dateOfBirth\":\"01-01-1990\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\",\"type\":\"DriverLicense\"}},\"issuer\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"issuanceDate\":\"2024-04-07T05:06:34Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/data-integrity/v1\"],\"type\":\"DataIntegrityProof\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z3kqvswNPL3WndNvMBJEz2XF2eAx58PCNVF3xPrPAdQnPeRSo4R4t3Twh6X9RGDVMfFK67RVzy8Nna9vLS72uRyKr\",\"verificationMethod\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"created\":\"2024-04-07T05:06:35.010Z\",\"cryptosuite\":\"ecdsa-2019\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - { - "@protected": true, - "DriverLicense": { - "@context": { - "@protected": true, - "dateOfBirth": "urn:example:dateOfBirth", - "documentIdentifier": "urn:example:documentIdentifier", - "expirationDate": "urn:example:expiration", - "id": "@id", - "issuingAuthority": "urn:example:issuingAuthority", - "type": "@type" - }, - "@id": "urn:example:DriverLicense" - }, - "driverLicense": { - "@id": "urn:example:driverLicense", - "@type": "@id" - }, - "DriverLicenseCredential": "urn:example:DriverLicenseCredential" - } - ], - "id": "urn:uuid:b73f2cd3-2551-4553-af8e-62e032fb0e4b", - "type": [ - "VerifiableCredential", - "DriverLicenseCredential" - ], - "credentialSubject": { - "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", - "driverLicense": { - "dateOfBirth": "01-01-1990", - "documentIdentifier": "T21387yc328c7y32h23f23", - "expirationDate": "01-01-2030", - "issuingAuthority": "VA", - "type": "DriverLicense" - } - }, - "issuer": "did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc", - "issuanceDate": "2024-04-07T05:06:34Z", - "proof": { - "@context": [ - "https://w3id.org/security/data-integrity/v1" - ], - "type": "DataIntegrityProof", - "proofPurpose": "assertionMethod", - "proofValue": "z3kqvswNPL3WndNvMBJEz2XF2eAx58PCNVF3xPrPAdQnPeRSo4R4t3Twh6X9RGDVMfFK67RVzy8Nna9vLS72uRyKr", - "verificationMethod": "did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc", - "created": "2024-04-07T05:06:35.010Z", - "cryptosuite": "ecdsa-2019" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc.apicatalog.com/credentials/verify", - "status": 400, - "data": { - "checks": [ - "PROOF", - "INVALID_PROOF_CONFIGURATION" - ], - "warnings": [], - "errors": [] - } - }, + "actual": null, + "operator": "notStrictEqual", + "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)" + } + }, + { + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "y8uhEpsdjtkembtxBfxlK", + "ctx": null, + "_testId": "urn:uuid:695f0744-8850-4343-821b-ad6c1b68715f", + "cell": { + "columnId": "bovine: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16887, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 0, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, "operator": "notStrictEqual", - "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:117: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:94:13)" + "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)" } - }, + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "type": "test", - "title": "\"Digital Bazaar: P-256, P-384\" should verify \"SpruceID: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "\"before each\" hook in \"bovine: P-384\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -17083,33 +21631,69 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "type": "hook", + "parent": "y8uhEpsdjtkembtxBfxlK", "ctx": null, - "_testId": "urn:uuid:b2d7d9c5-a480-433a-890e-c26bbefa2f3a", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before each\" hook", "_events": {}, "_eventsCount": 1, - "cell": { - "rowId": "SpruceID: P-256", - "columnId": "Digital Bazaar: P-256, P-384" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 18978, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 63, - "state": "passed", - "speed": "medium" - }, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "urUb5sXRQzYW0_B2VrMr9", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:cb6512f7-e720-47c4-930c-8c4c1c038d3a" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "GzHifvD62JwDWet-oBmTR", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "matrix": true, + "report": true, + "rowLabel": "Test Name", + "columnLabel": "Verifier", + "_testId": "urn:uuid:7c0f32d8-b164-4021-ba7e-553eaa3e381c", + "columns": [ + "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" + ], + "rows": [ + { + "id": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "cells": [ { "type": "test", - "title": "\"SpruceID: P-256\" should verify \"SpruceID: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -17118,33 +21702,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Ry5rlb0faHk8Svy-JmTyh", "ctx": null, - "_testId": "urn:uuid:1bc9e066-83a1-46a8-83f5-b871f51babc9", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:809825c9-75a7-48c4-9637-9298f97eb2c8", "cell": { - "rowId": "SpruceID: P-256", - "columnId": "SpruceID: P-256" + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19041, + "_idleStart": 15976, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 47, + "duration": 219, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "\"bovine: P-256\" should verify \"SpruceID: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -17153,64 +21737,64 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "LRzAmMlJ--x18M-QXWXs6", "ctx": null, - "_testId": "urn:uuid:aacab37f-3c23-4814-b895-101b2dea3a6f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:98899d99-607d-4673-9b2b-3d3b8c6f8c68", "cell": { - "rowId": "SpruceID: P-256", - "columnId": "bovine: P-256" + "columnId": "apicatalog.com: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19088, + "_idleStart": 16288, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 75, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, "request": {}, "options": { "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"DriverLicense\":{\"@context\":{\"@protected\":true,\"dateOfBirth\":\"urn:example:dateOfBirth\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"expirationDate\":\"urn:example:expiration\",\"id\":\"@id\",\"issuingAuthority\":\"urn:example:issuingAuthority\",\"type\":\"@type\"},\"@id\":\"urn:example:DriverLicense\"},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"},\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\"}],\"id\":\"urn:uuid:763b90e2-ccd4-45a7-bd89-c5f8a6ecd388\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"dateOfBirth\":\"01-01-1990\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\",\"type\":\"DriverLicense\"}},\"issuer\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"issuanceDate\":\"2024-04-07T05:06:35Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/data-integrity/v1\"],\"type\":\"DataIntegrityProof\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2kCzzLDUkL1KVXo1e7T8fS39TYJtbeXNTaWB6fVrKPhtnbHdxn9YLyCsAzKkmUm71b1XRnMMTbz99yrwNzc74sT1\",\"verificationMethod\":\"did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc\",\"created\":\"2024-04-07T05:06:35.281Z\",\"cryptosuite\":\"ecdsa-2019\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/ns/credentials/v2\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}}],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:31:49Z\",\"verificationMethod\":\"did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z9UjLw4CLxtT26nbtrWNstDEqWi72x5HXGMPRwK9qEoAX4GeDCvVEAMAooM7P3gLBXqfyeKdrfTL5Xvt1TJ5BDNzuA39bGpAQ53mHJu35GSmovQLaEg6WHgKPJR2C4vnUfP2\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/ns/credentials/v2", { + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", "DriverLicense": { + "@id": "urn:example:DriverLicense", "@context": { "@protected": true, - "dateOfBirth": "urn:example:dateOfBirth", + "id": "@id", + "type": "@type", "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", "expirationDate": "urn:example:expiration", - "id": "@id", - "issuingAuthority": "urn:example:issuingAuthority", - "type": "@type" - }, - "@id": "urn:example:DriverLicense" + "issuingAuthority": "urn:example:issuingAuthority" + } }, "driverLicense": { "@id": "urn:example:driverLicense", "@type": "@id" - }, - "@protected": true, - "DriverLicenseCredential": "urn:example:DriverLicenseCredential" + } } ], - "id": "urn:uuid:763b90e2-ccd4-45a7-bd89-c5f8a6ecd388", + "id": "urn:uuid:36245ee9-9074-4b05-a777-febff2e69757", "type": [ "VerifiableCredential", "DriverLicenseCredential" @@ -17218,25 +21802,21 @@ "credentialSubject": { "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", "driverLicense": { - "dateOfBirth": "01-01-1990", + "type": "DriverLicense", "documentIdentifier": "T21387yc328c7y32h23f23", + "dateOfBirth": "01-01-1990", "expirationDate": "01-01-2030", - "issuingAuthority": "VA", - "type": "DriverLicense" + "issuingAuthority": "VA" } }, - "issuer": "did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc", - "issuanceDate": "2024-04-07T05:06:35Z", + "issuer": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", "proof": { - "@context": [ - "https://w3id.org/security/data-integrity/v1" - ], "type": "DataIntegrityProof", + "created": "2024-04-14T05:31:49Z", + "verificationMethod": "did:key:z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ#z82LkuBieyGShVBhvtE2zoiD6Kma4tJGFtkAhxR5pfkp5QPw4LutoYWhvQCnGjdVn14kujQ", + "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod", - "proofValue": "z2kCzzLDUkL1KVXo1e7T8fS39TYJtbeXNTaWB6fVrKPhtnbHdxn9YLyCsAzKkmUm71b1XRnMMTbz99yrwNzc74sT1", - "verificationMethod": "did:key:zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc#zDnaei6w9La4VphyPA6V2V5poBTpVtjCsnzPML5c78GWjRhnc", - "created": "2024-04-07T05:06:35.281Z", - "cryptosuite": "ecdsa-2019" + "proofValue": "z9UjLw4CLxtT26nbtrWNstDEqWi72x5HXGMPRwK9qEoAX4GeDCvVEAMAooM7P3gLBXqfyeKdrfTL5Xvt1TJ5BDNzuA39bGpAQ53mHJu35GSmovQLaEg6WHgKPJR2C4vnUfP2" } }, "options": { @@ -17311,22 +21891,25 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://bovine.social/w3c-di/verify", - "status": 400 + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] + } }, "operator": "notStrictEqual", - "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:117: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:94:13)" + "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)" } - } - ] - }, - { - "id": "bovine: P-256", - "cells": [ + }, { "type": "test", - "title": "\"apicatalog.com: P-256, P-384\" should verify \"bovine: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -17335,33 +21918,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "MTPerC5x8p8RbPvBKY_Pz", "ctx": null, - "_testId": "urn:uuid:6f5125ba-d8c7-46b4-9443-4b68e88a1195", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:7ffcb7dd-24b3-4c52-bf9e-8ebf5371a777", "cell": { - "rowId": "bovine: P-256", - "columnId": "apicatalog.com: P-256, P-384" + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19201, + "_idleStart": 16416, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 179, + "duration": 52, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "\"Digital Bazaar: P-256, P-384\" should verify \"bovine: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -17370,21 +21953,21 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "6NqTJ_6IDmy-ifYgwH0xC", "ctx": null, - "_testId": "urn:uuid:db2631f8-4203-4842-9756-1c355bb7d901", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:37184420-ad72-4371-97a7-590305545214", "cell": { - "rowId": "bovine: P-256", - "columnId": "Digital Bazaar: P-256, P-384" + "columnId": "Digital Bazaar: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19381, + "_idleStart": 16520, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -17395,8 +21978,8 @@ }, { "type": "test", - "title": "\"SpruceID: P-256\" should verify \"bovine: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -17405,26 +21988,26 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "p1ivWkcSRG-UuhmIzez6P", "ctx": null, - "_testId": "urn:uuid:bb91795b-66d5-444c-bd6f-11488d01b644", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:2fa26526-afdc-4a4b-b174-155fd65a63bd", "cell": { - "rowId": "bovine: P-256", - "columnId": "SpruceID: P-256" + "columnId": "SpruceID: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19440, + "_idleStart": 16633, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, + "duration": 24, "state": "failed", "err": { "name": "AssertionError", @@ -17435,59 +22018,57 @@ "request": {}, "options": { "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicense\":{\"@context\":{\"@protected\":true,\"dateOfBirth\":\"urn:example:dateOfBirth\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"expirationDate\":\"urn:example:expiration\",\"id\":\"@id\",\"issuingAuthority\":\"urn:example:issuingAuthority\",\"type\":\"@type\"},\"@id\":\"urn:example:DriverLicense\"},\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"credentialSubject\":{\"driverLicense\":{\"dateOfBirth\":\"01-01-1990\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\",\"type\":\"DriverLicense\"},\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\"},\"id\":\"urn:uuid:19f02b7b-75da-4d64-821c-8844e14ea888\",\"issuanceDate\":\"2024-04-07T05:06:35Z\",\"issuer\":\"did:key:zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr\",\"proof\":{\"created\":\"2024-04-07T05:06:35Z\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z5HM3vsE9etdW7SV9tv8EeuQ7KRZTpba956QgD1sfy677vWeMK8cjQRYhgVU7frbUSK99RLT5eoSiiBX8m74amxE9\",\"type\":\"DataIntegrityProof\",\"verificationMethod\":\"did:key:zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr#zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr\"},\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"]},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/ns/credentials/v2\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}}],\"id\":\"urn:uuid:36245ee9-9074-4b05-a777-febff2e69757\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\",\"driverLicense\":{\"type\":\"DriverLicense\",\"documentIdentifier\":\"T21387yc328c7y32h23f23\",\"dateOfBirth\":\"01-01-1990\",\"expirationDate\":\"01-01-2030\",\"issuingAuthority\":\"VA\"}},\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:31:49Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-rdfc-2019\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z5VsxB1n8yLdRWoMEXHJ98f5GW22FuL7xnaXTupEZMZ7bSSUCP6SqB583uJLuyXvxTnCuqYdF6wxpV2uzR4XHt4iP\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/ns/credentials/v2", { "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", "DriverLicense": { + "@id": "urn:example:DriverLicense", "@context": { "@protected": true, - "dateOfBirth": "urn:example:dateOfBirth", + "id": "@id", + "type": "@type", "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", "expirationDate": "urn:example:expiration", - "id": "@id", - "issuingAuthority": "urn:example:issuingAuthority", - "type": "@type" - }, - "@id": "urn:example:DriverLicense" + "issuingAuthority": "urn:example:issuingAuthority" + } }, - "DriverLicenseCredential": "urn:example:DriverLicenseCredential", "driverLicense": { "@id": "urn:example:driverLicense", "@type": "@id" } - }, - "https://w3id.org/security/data-integrity/v2" + } + ], + "id": "urn:uuid:36245ee9-9074-4b05-a777-febff2e69757", + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" ], "credentialSubject": { + "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440", "driverLicense": { - "dateOfBirth": "01-01-1990", + "type": "DriverLicense", "documentIdentifier": "T21387yc328c7y32h23f23", + "dateOfBirth": "01-01-1990", "expirationDate": "01-01-2030", - "issuingAuthority": "VA", - "type": "DriverLicense" - }, - "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440" + "issuingAuthority": "VA" + } }, - "id": "urn:uuid:19f02b7b-75da-4d64-821c-8844e14ea888", - "issuanceDate": "2024-04-07T05:06:35Z", - "issuer": "did:key:zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr", + "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "proof": { - "created": "2024-04-07T05:06:35Z", - "cryptosuite": "ecdsa-rdfc-2019", - "proofPurpose": "assertionMethod", - "proofValue": "z5HM3vsE9etdW7SV9tv8EeuQ7KRZTpba956QgD1sfy677vWeMK8cjQRYhgVU7frbUSK99RLT5eoSiiBX8m74amxE9", "type": "DataIntegrityProof", - "verificationMethod": "did:key:zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr#zDnaeRpdr3KkQ1NtBhLAWFp76epvaU1spZzGH7AvKtY9KqjZr" - }, - "type": [ - "VerifiableCredential", - "DriverLicenseCredential" - ] + "created": "2024-04-14T05:31:49Z", + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "cryptosuite": "ecdsa-rdfc-2019", + "proofPurpose": "assertionMethod", + "proofValue": "z5VsxB1n8yLdRWoMEXHJ98f5GW22FuL7xnaXTupEZMZ7bSSUCP6SqB583uJLuyXvxTnCuqYdF6wxpV2uzR4XHt4iP" + } }, "options": { "checks": [ @@ -17549,285 +22130,29 @@ ], "afterStatusCodes": [ 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc.spruceid.xyz/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "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:117: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:94:13)" - } - }, - { - "type": "test", - "title": "\"bovine: P-256\" should verify \"bovine: P-256\"", - "body": "async function() {\n this.test.cell = {\n rowId: issuerDisplayName,\n columnId: verifierDisplayName\n };\n should.exist(\n issuedVc,\n `Expected issuer ${issuerDisplayName} to issue a VC.`\n );\n await verificationSuccess({\n credential: issuedVc, verifier: verifierEndpoint\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/30-rdfc-interop.js", - "parent": "jIV0VeLyf-xg5iMNPQ4or", - "ctx": null, - "_testId": "urn:uuid:1b447a48-2315-492a-ae10-198132b40af4", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "bovine: P-256", - "columnId": "bovine: P-256" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 19487, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 122, - "state": "passed", - "speed": "slow" - } - ] - } - ] - }, - { - "title": "Data Integrity (ecdsa-sd-2023 issuers)", - "ctx": null, - "suites": [ - { - "title": "apicatalog.com: P-256", - "ctx": null, - "suites": [], - "tests": [ - { - "type": "test", - "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:9c54ec93-12ce-4de0-abba-1e3a6fa18fee", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." - }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "if \"proof.id\" field exists, it MUST be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:2de32635-0c1b-467e-b047-6cdd5bb98f5e", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." - }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "\"proof.type\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:fca6d400-5113-45a3-b492-bdc6ae85b7e6", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.type\" field MUST exist and be a string." - }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:13271ee2-d47f-43f6-948e-98e51eb8d51f", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." - }, - "duration": 1, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "\"proof.cryptosuite\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:bfa78d20-3766-4e84-b55b-244e21c22e3d", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." - }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:32e238a6-ba5e-44a7-b135-0ee5ba60d1e0", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." - }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:8003f93e-246b-4f3d-aaeb-f3a5d3eb0413", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." - }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:9876edf3-2dc9-4495-9ee6-85dee5c2e8c1", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." - }, - "duration": 0, - "state": "passed", - "speed": "fast" + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.spruceid.xyz/credentials/verify", + "status": 400 + }, + "operator": "notStrictEqual", + "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)" + } }, { "type": "test", - "title": "\"proof.proofPurpose\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -17836,50 +22161,40 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-R_YnVUlD2wEfbHQTmjzc", "ctx": null, - "_testId": "urn:uuid:c18531fe-f5c7-48e2-ac6d-40e9bfe6d3cb", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:df2296ab-2290-4a0f-b404-903846b3e4dc", "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." + "columnId": "SpruceID: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "\"proof.proofValue\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:46dc866b-8563-48f9-8500-5ec863a332c3", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.proofValue\" field MUST exist and be a string." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16682, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, - "state": "passed", - "speed": "fast" + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } }, { "type": "test", - "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -17888,50 +22203,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "cA90HT-L_h9ueYiraWuCS", "ctx": null, - "_testId": "urn:uuid:69690de1-f552-4ed4-84fc-3b78590cf5e5", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:07e51921-062c-4cc5-8f11-5de7437b657c", "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." + "columnId": "bovine: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:76c9c459-8669-45d0-8862-f126c757004a", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16683, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, + "duration": 104, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "if \"proof.challenge\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "title": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n await verificationSuccess({credential: testVector, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -17940,50 +22238,45 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "y8uhEpsdjtkembtxBfxlK", "ctx": null, - "_testId": "urn:uuid:b52b1bae-73ed-4268-b6e4-faa8106455cc", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:3a704e74-aa4e-4b0d-9a24-c95c8b5c32b9", "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.challenge\" field exists, it MUST be a string." + "columnId": "bovine: P-384", + "rowId": "MUST verify a valid VC with an ecdsa-rdfc-2019 proof." }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:dee4dc83-bdb7-44c9-a77c-593184606431", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16886, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, - "state": "passed", - "speed": "fast" - }, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } + } + ] + }, + { + "id": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "cells": [ { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -17992,104 +22285,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Ry5rlb0faHk8Svy-JmTyh", "ctx": null, - "_testId": "urn:uuid:37511b80-6fff-4c09-aaac-c1af223a1d78", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:d54905aa-75f4-4bcd-bc6f-ea9f84c79f20", "cell": { "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, - "duration": 0, - "state": "passed", - "speed": "fast" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ - { - "title": "\"before all\" hook in \"apicatalog.com: P-256\"", - "body": "async function() {\n const [issuer] = endpoints;\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n data = await createInitialVc({issuer, vc: validVc});\n proofs = Array.isArray(data.proof) ? data.proof : [data.proof];\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19609, + "_idleStart": 16196, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 962, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "sOshN_eGuSqiNeLTpGswC", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "_testId": "urn:uuid:d9b19fcf-1009-49bb-a3a9-92568fbfccba" - }, - { - "title": "Digital Bazaar: P-256", - "ctx": null, - "suites": [], - "tests": [ - { - "type": "test", - "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", - "ctx": null, - "_testId": "urn:uuid:c7b51595-2cfe-4963-b2a7-60f23ae42103", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." - }, - "duration": 0, + "duration": 92, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "if \"proof.id\" field exists, it MUST be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18098,24 +22320,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "LRzAmMlJ--x18M-QXWXs6", "ctx": null, - "_testId": "urn:uuid:20e84d46-e06b-4329-9c1a-a9f25df87ea8", + "_testId": "urn:uuid:1597fe49-381d-4527-b25b-8d886cb623ad", + "cell": { + "columnId": "apicatalog.com: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16366, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, + "duration": 49, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "\"proof.type\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18124,24 +22355,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "MTPerC5x8p8RbPvBKY_Pz", "ctx": null, - "_testId": "urn:uuid:92556ee8-c2f2-429c-a57a-c6174306ffd1", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:479611ae-47fe-4347-b17a-a71ccdc57649", "cell": { "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.type\" field MUST exist and be a string." + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." }, - "duration": 0, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16468, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 52, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18150,24 +22390,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "6NqTJ_6IDmy-ifYgwH0xC", "ctx": null, - "_testId": "urn:uuid:3638ef22-1c30-4ee9-bae5-3298cf87d0e3", + "_testId": "urn:uuid:c9fe3f27-fb04-4812-acf9-6d53dec6ccea", + "cell": { + "columnId": "Digital Bazaar: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16581, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, + "duration": 51, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "\"proof.cryptosuite\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18176,24 +22425,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "p1ivWkcSRG-UuhmIzez6P", "ctx": null, - "_testId": "urn:uuid:dc2fb495-a61b-48e4-b835-49219fe168cb", + "_testId": "urn:uuid:0871c487-4c62-42f0-90c4-38ca2e1444b3", + "cell": { + "columnId": "SpruceID: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16658, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, + "duration": 23, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18202,24 +22460,40 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-R_YnVUlD2wEfbHQTmjzc", "ctx": null, - "_testId": "urn:uuid:4b1e73f3-54a8-427e-91fd-da926bcfba50", + "_testId": "urn:uuid:201d1753-e893-4e74-9c28-21cf2de0c866", + "cell": { + "columnId": "SpruceID: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16682, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, - "state": "passed", - "speed": "fast" + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } }, { "type": "test", - "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18228,24 +22502,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "cA90HT-L_h9ueYiraWuCS", "ctx": null, - "_testId": "urn:uuid:10534a87-7b74-46fa-b665-dca0a4557b83", + "_testId": "urn:uuid:0fc6f26a-e28e-46b3-bfc6-b1794171a8b0", + "cell": { + "columnId": "bovine: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16788, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, + "duration": 98, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised.", + "body": "async function() {\n expectImplementationTestVector({testVector, keyType});\n\n const credential = klona(testVector);\n // FIXME add invalid-cryptosuite as a locally valid cryptosuite\n // name, so the signature is correct, but the cryptosuite\n // name is incorrect\n credential.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({credential, verifier: endpoint});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18254,24 +22537,53 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "y8uhEpsdjtkembtxBfxlK", "ctx": null, - "_testId": "urn:uuid:6dfa4324-be07-4e91-a2a2-8357f855b88a", + "_testId": "urn:uuid:695f0744-8850-4343-821b-ad6c1b68715f", + "cell": { + "columnId": "bovine: P-384", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-rdfc-2019\" or the string \"ecdsa-jcs-2019\", an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16887, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, - "state": "passed", - "speed": "fast" - }, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Implementation not marked as supporting required \"P-384\"! Is keyType missing from `supportedEcdsaKeyTypes`?: expected null to exist", + "showDiff": false, + "actual": null, + "operator": "notStrictEqual", + "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)" + } + } + ] + } + ] + }, + { + "title": "ecdsa-sd-2023 (issuers) VC 1.1", + "ctx": null, + "suites": [ + { + "title": "apicatalog.com: P-256", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "\"proof.proofPurpose\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", + "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18280,15 +22592,15 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:ab5f19c3-5ec9-43ee-8719-076f0f49a6db", + "_testId": "urn:uuid:7fdc8686-3990-4c4f-9a78-88a946b24195", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." + "columnId": "apicatalog.com: P-256", + "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." }, "duration": 0, "state": "passed", @@ -18296,8 +22608,8 @@ }, { "type": "test", - "title": "\"proof.proofValue\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", + "title": "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.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18306,24 +22618,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:242adc96-2608-4830-81b7-997da52bd7eb", + "_testId": "urn:uuid:d08114e5-3001-4db4-8df0-9b0df04a6a97", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.proofValue\" field MUST exist and be a string." + "columnId": "apicatalog.com: P-256", + "rowId": "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." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17292, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", + "title": "The field \"proofValue\" MUST start with \"u\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18332,15 +22653,15 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:aa403ef4-53cc-4d17-9667-21efbe2c17f5", + "_testId": "urn:uuid:7748148b-4e2f-4938-b82a-117910531a39", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." + "columnId": "apicatalog.com: P-256", + "rowId": "The field \"proofValue\" MUST start with \"u\"." }, "duration": 0, "state": "passed", @@ -18348,8 +22669,8 @@ }, { "type": "test", - "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "title": "The \"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18358,24 +22679,50 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:990330cc-ff14-4cf8-9590-618624619289", + "_testId": "urn:uuid:ba0a459a-057a-40c1-a75d-2243b1e5ab5d", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." + "columnId": "apicatalog.com: P-256", + "rowId": "The \"proof\" MUST verify when using a conformant verifier." }, - "duration": 0, - "state": "passed", - "speed": "fast" + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17293, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 24, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist", + "showDiff": false, + "actual": { + "name": "VerificationError", + "message": "Verification error (local).", + "errors": [ + "Credential issuer must match the verification method controller." + ], + "causes": [ + null + ], + "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:9b35e18e-fab8-4aee-8500-9f5e19962288\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"issuanceDate\":\"2024-04-14T05:32:05Z\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-sd-2023\",\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\"},\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-14T05:32:05Z\",\"proofValue\":\"u2V0BhVhAUOhukshKAnOR_rjT3170qIbjGi-ASKkLZIMprbmF9VWpImNWZ4HPVl6AjdXBGTmikb7uzKLtLB8JOpMwD1l1eVgjgCQDFWuEsWU0bLeG7vgosNplXT5JzZSZmMU6ldNZ2ylVDNWBWECYBcmgx_m5D9H1OJW4_Q0n8XKo5aR1peDE5HIW1nGUpAcPXsH7IlsLpAJqnHG-arGoa21J_l-4qrRYYqqsQotsoIQAAQME\"}}" + }, + "operator": "notStrictEqual", + "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:149:19)" + } }, { "type": "test", - "title": "if \"proof.challenge\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18384,24 +22731,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:dbe3ced1-51d1-4caa-a616-32c7d273b799", + "_testId": "urn:uuid:3a3a9197-7ea8-460c-a9f1-bcabd89ba28f", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.challenge\" field exists, it MUST be a string." + "columnId": "apicatalog.com: P-256", + "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17317, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18410,24 +22766,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:d6ba48f9-2420-48b8-994d-689072a859d1", + "_testId": "urn:uuid:bc890ab2-66f1-4d83-84d9-08cdc05edeb3", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "columnId": "apicatalog.com: P-256", + "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17318, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18436,15 +22801,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:972411ee-f063-4f6d-9f6a-d17245d396d6", + "_testId": "urn:uuid:fbaf2fe6-f1d3-4338-9543-afb8218a0bd0", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "columnId": "apicatalog.com: P-256", + "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17318, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -18457,8 +22831,8 @@ "_beforeEach": [], "_beforeAll": [ { - "title": "\"before all\" hook in \"Digital Bazaar: P-256\"", - "body": "async function() {\n const [issuer] = endpoints;\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n data = await createInitialVc({issuer, vc: validVc});\n proofs = Array.isArray(data.proof) ? data.proof : [data.proof];\n }", + "title": "\"before all\" hook in \"apicatalog.com: P-256\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create[vcVersion].document,\n mandatoryPointers:\n credentials.create[vcVersion].mandatoryPointers\n });\n // Support multiple proofs\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n // only look for verificationMethods if a valid proof is there\n if(proofs.filter(Boolean).length) {\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(\n verificationMethodDocument);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18468,9 +22842,9 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, @@ -18478,12 +22852,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 20573, + "_idleStart": 16888, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 103, + "duration": 404, "_error": null } ], @@ -18495,19 +22869,19 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "sOshN_eGuSqiNeLTpGswC", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "_testId": "urn:uuid:aa5a7577-febe-485b-afc8-4afdc6f805c8" + "parent": "lfRAbD1-K24SMyqViZ4Mq", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:3a6674ba-bc99-40a0-81c3-d848192df885" }, { - "title": "Grotto Networking: P-256", + "title": "Digital Bazaar: P-256", "ctx": null, "suites": [], "tests": [ { "type": "test", - "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18516,15 +22890,15 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:0e0695f7-4368-4d27-b219-3465eccd3cf2", + "_testId": "urn:uuid:0b0f9f29-2044-460d-9b39-cc3e98c0d899", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." + "columnId": "Digital Bazaar: P-256", + "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." }, "duration": 0, "state": "passed", @@ -18532,8 +22906,8 @@ }, { "type": "test", - "title": "if \"proof.id\" field exists, it MUST be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", + "title": "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.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18542,15 +22916,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:388becd3-b5a3-4150-9598-204324f845c2", + "_testId": "urn:uuid:00c58e16-88bd-4958-8474-27ebc6f22a4a", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." + "columnId": "Digital Bazaar: P-256", + "rowId": "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." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17474, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -18558,8 +22941,8 @@ }, { "type": "test", - "title": "\"proof.type\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", + "title": "The field \"proofValue\" MUST start with \"u\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18568,24 +22951,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:6b009a4a-d1b2-417d-9b9d-56b47f368678", + "_testId": "urn:uuid:7d2ccadd-ac8e-4c99-9ada-1b84a919a453", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.type\" field MUST exist and be a string." + "columnId": "Digital Bazaar: P-256", + "rowId": "The field \"proofValue\" MUST start with \"u\"." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "The \"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18594,24 +22977,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:c618a10a-add1-4d81-a39f-29474bbd1655", + "_testId": "urn:uuid:b15c8abc-98b1-4049-8fc7-cf963a3f9795", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." + "columnId": "Digital Bazaar: P-256", + "rowId": "The \"proof\" MUST verify when using a conformant verifier." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17475, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 12, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof.cryptosuite\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", + "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18620,24 +23012,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:298e767c-2085-465a-b2d8-a73fb34a9c5b", + "_testId": "urn:uuid:94011710-1b5d-4425-ad01-86135a9c4914", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." + "columnId": "Digital Bazaar: P-256", + "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17487, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18646,15 +23047,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:ecf2e995-b7af-4c32-b3a6-16f54128c04c", + "_testId": "urn:uuid:96f9cc6f-e5fc-4f8f-a3f6-8a0f2521b6b1", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + "columnId": "Digital Bazaar: P-256", + "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17488, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -18662,8 +23072,8 @@ }, { "type": "test", - "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18672,24 +23082,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:ae73a323-5c7e-4d5b-abbe-51b0a06b79b0", + "_testId": "urn:uuid:f3bb8eea-762a-49f6-9dfb-ad5c73296951", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + "columnId": "Digital Bazaar: P-256", + "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17488, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", "speed": "fast" - }, + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "type": "test", - "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", + "title": "\"before all\" hook in \"Digital Bazaar: P-256\"", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create[vcVersion].document,\n mandatoryPointers:\n credentials.create[vcVersion].mandatoryPointers\n });\n // Support multiple proofs\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n // only look for verificationMethods if a valid proof is there\n if(proofs.filter(Boolean).length) {\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(\n verificationMethodDocument);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18698,24 +23122,47 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "type": "hook", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:793b3fd9-6410-4274-b7d5-5e5ce8e625bd", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17318, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, + "duration": 156, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "lfRAbD1-K24SMyqViZ4Mq", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:c39c8f33-97df-49ed-8056-b8679b94b871" + }, + { + "title": "Grotto Networking: P-256", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "\"proof.proofPurpose\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", + "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18724,24 +23171,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:82ebb2cc-4d96-4219-b476-70b77c6500e1", + "_testId": "urn:uuid:dbccb449-378e-4c6a-afcc-34a49040138b", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." + "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof.proofValue\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", + "title": "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.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18750,15 +23197,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:bd71cb6c-2007-4f01-8115-7ed24e6dc4ce", + "_testId": "urn:uuid:24191635-edf2-4a66-9208-efe75e7d1a12", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.proofValue\" field MUST exist and be a string." + "rowId": "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." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17599, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -18766,8 +23222,8 @@ }, { "type": "test", - "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", + "title": "The field \"proofValue\" MUST start with \"u\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18776,15 +23232,15 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:cd796870-d49c-4ce4-82ca-a1cf8b549685", + "_testId": "urn:uuid:f5758675-6fdf-474f-9a91-2dba385390d5", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." + "rowId": "The field \"proofValue\" MUST start with \"u\"." }, "duration": 0, "state": "passed", @@ -18792,8 +23248,8 @@ }, { "type": "test", - "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "title": "The \"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18802,24 +23258,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:1bb62db0-4b5d-425e-b337-6d25fddf7b4a", + "_testId": "urn:uuid:98fcdcb3-5773-4a99-a7f2-34d0cf017b9a", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." + "rowId": "The \"proof\" MUST verify when using a conformant verifier." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17600, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 12, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.challenge\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18828,24 +23293,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:8bcc419e-1e91-447e-945e-3f68294130d6", + "_testId": "urn:uuid:c7e13c6c-61a6-4158-a09d-026aee593b9f", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.challenge\" field exists, it MUST be a string." + "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17611, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18854,15 +23328,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:bd19625f-90af-42f3-acb3-9eb31e6121ff", + "_testId": "urn:uuid:2fc078a7-aa9c-43c7-bff1-6401e870d402", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17612, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -18870,8 +23353,8 @@ }, { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18880,15 +23363,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:209c8d78-9c49-4c01-95dc-76f9c8ef645f", + "_testId": "urn:uuid:d8440cf4-ee0b-4b5e-af9d-0ba79272678d", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17612, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -18902,7 +23394,7 @@ "_beforeAll": [ { "title": "\"before all\" hook in \"Grotto Networking: P-256\"", - "body": "async function() {\n const [issuer] = endpoints;\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n data = await createInitialVc({issuer, vc: validVc});\n proofs = Array.isArray(data.proof) ? data.proof : [data.proof];\n }", + "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create[vcVersion].document,\n mandatoryPointers:\n credentials.create[vcVersion].mandatoryPointers\n });\n // Support multiple proofs\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n // only look for verificationMethods if a valid proof is there\n if(proofs.filter(Boolean).length) {\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(\n verificationMethodDocument);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18912,9 +23404,9 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, @@ -18922,12 +23414,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 20679, + "_idleStart": 17489, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 292, + "duration": 109, "_error": null } ], @@ -18939,9 +23431,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "sOshN_eGuSqiNeLTpGswC", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "_testId": "urn:uuid:266c9b70-7f71-437d-befb-77d5df84d0ba" + "parent": "lfRAbD1-K24SMyqViZ4Mq", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "_testId": "urn:uuid:2deeb882-d08f-4444-b080-6d8184f118cb" } ], "root": false, @@ -18957,13 +23449,13 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "Lj91xXIjIjtnwr_GDEsZw", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", + "parent": "HBge2Ath5DIzNcXqOH6rR", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", "matrix": true, "report": true, "rowLabel": "Test Name", - "columnLabel": "Issuer", - "_testId": "urn:uuid:60694b4d-6ab0-45f7-927a-b2ab87b471d1", + "columnLabel": "Implementation", + "_testId": "urn:uuid:a08ddf15-7ca1-4837-96f1-94e783cd9204", "columns": [ "apicatalog.com: P-256", "Digital Bazaar: P-256", @@ -18971,12 +23463,12 @@ ], "rows": [ { - "id": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", + "id": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", "cells": [ { "type": "test", - "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18985,15 +23477,15 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:9c54ec93-12ce-4de0-abba-1e3a6fa18fee", + "_testId": "urn:uuid:7fdc8686-3990-4c4f-9a78-88a946b24195", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", - "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." + "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." }, "duration": 0, "state": "passed", @@ -19001,8 +23493,8 @@ }, { "type": "test", - "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19011,15 +23503,15 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:c7b51595-2cfe-4963-b2a7-60f23ae42103", + "_testId": "urn:uuid:0b0f9f29-2044-460d-9b39-cc3e98c0d899", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." + "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." }, "duration": 0, "state": "passed", @@ -19027,8 +23519,8 @@ }, { "type": "test", - "title": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n should.exist(data, 'Expected data.');\n const proof = data.proof;\n should.exist(proof, 'Expected proof to exist.');\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19037,15 +23529,15 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:0e0695f7-4368-4d27-b219-3465eccd3cf2", + "_testId": "urn:uuid:dbccb449-378e-4c6a-afcc-34a49040138b", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "\"proof\" field MUST exist and MUST be either a single object or an unordered set of objects." + "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." }, "duration": 0, "state": "passed", @@ -19054,12 +23546,12 @@ ] }, { - "id": "if \"proof.id\" field exists, it MUST be a valid URL.", + "id": "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.", "cells": [ { "type": "test", - "title": "if \"proof.id\" field exists, it MUST be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", + "title": "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.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19068,24 +23560,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:2de32635-0c1b-467e-b047-6cdd5bb98f5e", + "_testId": "urn:uuid:d08114e5-3001-4db4-8df0-9b0df04a6a97", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." + "rowId": "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." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17292, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.id\" field exists, it MUST be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", + "title": "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.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19094,15 +23595,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:20e84d46-e06b-4329-9c1a-a9f25df87ea8", + "_testId": "urn:uuid:00c58e16-88bd-4958-8474-27ebc6f22a4a", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." + "rowId": "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." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17474, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -19110,8 +23620,8 @@ }, { "type": "test", - "title": "if \"proof.id\" field exists, it MUST be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.id) {\n let result;\n let err;\n try {\n result = new URL(proof.id);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the \"proof.id\" ' +\n 'to not error.');\n should.exist(result, 'Expected \"proof.id\" to be a URL.');\n }\n }\n }", + "title": "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.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19120,15 +23630,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:388becd3-b5a3-4150-9598-204324f845c2", + "_testId": "urn:uuid:24191635-edf2-4a66-9208-efe75e7d1a12", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.id\" field exists, it MUST be a valid URL." + "rowId": "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." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17599, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -19137,12 +23656,12 @@ ] }, { - "id": "\"proof.type\" field MUST exist and be a string.", + "id": "The field \"proofValue\" MUST start with \"u\".", "cells": [ { "type": "test", - "title": "\"proof.type\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", + "title": "The field \"proofValue\" MUST start with \"u\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19151,15 +23670,15 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:fca6d400-5113-45a3-b492-bdc6ae85b7e6", + "_testId": "urn:uuid:7748148b-4e2f-4938-b82a-117910531a39", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.type\" field MUST exist and be a string." + "rowId": "The field \"proofValue\" MUST start with \"u\"." }, "duration": 0, "state": "passed", @@ -19167,8 +23686,8 @@ }, { "type": "test", - "title": "\"proof.type\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", + "title": "The field \"proofValue\" MUST start with \"u\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19177,15 +23696,15 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:92556ee8-c2f2-429c-a57a-c6174306ffd1", + "_testId": "urn:uuid:7d2ccadd-ac8e-4c99-9ada-1b84a919a453", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.type\" field MUST exist and be a string." + "rowId": "The field \"proofValue\" MUST start with \"u\"." }, "duration": 0, "state": "passed", @@ -19193,8 +23712,8 @@ }, { "type": "test", - "title": "\"proof.type\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n }\n }", + "title": "The field \"proofValue\" MUST start with \"u\".", + "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19203,29 +23722,29 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:6b009a4a-d1b2-417d-9b9d-56b47f368678", + "_testId": "urn:uuid:f5758675-6fdf-474f-9a91-2dba385390d5", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.type\" field MUST exist and be a string." + "rowId": "The field \"proofValue\" MUST start with \"u\"." }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" } ] }, { - "id": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", + "id": "The \"proof\" MUST verify when using a conformant verifier.", "cells": [ { "type": "test", - "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "The \"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19234,24 +23753,50 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:13271ee2-d47f-43f6-948e-98e51eb8d51f", + "_testId": "urn:uuid:ba0a459a-057a-40c1-a75d-2243b1e5ab5d", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." + "rowId": "The \"proof\" MUST verify when using a conformant verifier." }, - "duration": 1, - "state": "passed", - "speed": "fast" + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17293, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 24, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist", + "showDiff": false, + "actual": { + "name": "VerificationError", + "message": "Verification error (local).", + "errors": [ + "Credential issuer must match the verification method controller." + ], + "causes": [ + null + ], + "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:9b35e18e-fab8-4aee-8500-9f5e19962288\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"issuanceDate\":\"2024-04-14T05:32:05Z\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-sd-2023\",\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\"},\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-14T05:32:05Z\",\"proofValue\":\"u2V0BhVhAUOhukshKAnOR_rjT3170qIbjGi-ASKkLZIMprbmF9VWpImNWZ4HPVl6AjdXBGTmikb7uzKLtLB8JOpMwD1l1eVgjgCQDFWuEsWU0bLeG7vgosNplXT5JzZSZmMU6ldNZ2ylVDNWBWECYBcmgx_m5D9H1OJW4_Q0n8XKo5aR1peDE5HIW1nGUpAcPXsH7IlsLpAJqnHG-arGoa21J_l-4qrRYYqqsQotsoIQAAQME\"}}" + }, + "operator": "notStrictEqual", + "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:149:19)" + } }, { "type": "test", - "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "The \"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19260,24 +23805,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:3638ef22-1c30-4ee9-bae5-3298cf87d0e3", + "_testId": "urn:uuid:b15c8abc-98b1-4049-8fc7-cf963a3f9795", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." + "rowId": "The \"proof\" MUST verify when using a conformant verifier." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17475, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 12, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'DataIntegrityProof') {\n const expectedContexts = [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2'\n ];\n const hasExpectedContexts = expectedContexts.some(\n value => data['@context'].includes(value));\n hasExpectedContexts.should.equal(true);\n }\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "The \"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19286,29 +23840,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:c618a10a-add1-4d81-a39f-29474bbd1655", + "_testId": "urn:uuid:98fcdcb3-5773-4a99-a7f2-34d0cf017b9a", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.type\" field MUST be \"DataIntegrityProof\" and the associated document MUST include expected contexts." + "rowId": "The \"proof\" MUST verify when using a conformant verifier." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17600, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 12, "state": "passed", "speed": "fast" } ] }, { - "id": "\"proof.cryptosuite\" field MUST exist and be a string.", + "id": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", "cells": [ { "type": "test", - "title": "\"proof.cryptosuite\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", + "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19317,24 +23880,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:bfa78d20-3766-4e84-b55b-244e21c22e3d", + "_testId": "urn:uuid:3a3a9197-7ea8-460c-a9f1-bcabd89ba28f", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." + "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17317, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof.cryptosuite\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", + "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19343,24 +23915,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:dc2fb495-a61b-48e4-b835-49219fe168cb", + "_testId": "urn:uuid:94011710-1b5d-4425-ad01-86135a9c4914", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." + "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17487, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof.cryptosuite\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('cryptosuite');\n proof.cryptosuite.should.be.a('string', 'Expected ' +\n '\"cryptosuite\" property to be a string.');\n }\n }", + "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(const verificationMethodDocument of\n verificationMethodDocuments) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19369,29 +23950,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:298e767c-2085-465a-b2d8-a73fb34a9c5b", + "_testId": "urn:uuid:c7e13c6c-61a6-4158-a09d-026aee593b9f", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.cryptosuite\" field MUST exist and be a string." + "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17611, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" } ] }, { - "id": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "id": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", "cells": [ { "type": "test", - "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19400,24 +23990,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:32e238a6-ba5e-44a7-b135-0ee5ba60d1e0", + "_testId": "urn:uuid:bc890ab2-66f1-4d83-84d9-08cdc05edeb3", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17318, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19426,15 +24025,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:4b1e73f3-54a8-427e-91fd-da926bcfba50", + "_testId": "urn:uuid:96f9cc6f-e5fc-4f8f-a3f6-8a0f2521b6b1", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17488, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -19442,8 +24050,8 @@ }, { "type": "test", - "title": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19452,15 +24060,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:ecf2e995-b7af-4c32-b3a6-16f54128c04c", + "_testId": "urn:uuid:2fc078a7-aa9c-43c7-bff1-6401e870d402", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.created\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17612, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -19469,12 +24086,12 @@ ] }, { - "id": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", + "id": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", "cells": [ { "type": "test", - "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19483,15 +24100,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "-3OILRkJEJyaHHU43CFuj", "ctx": null, - "_testId": "urn:uuid:8003f93e-246b-4f3d-aaeb-f3a5d3eb0413", + "_testId": "urn:uuid:fbaf2fe6-f1d3-4338-9543-afb8218a0bd0", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17318, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -19499,8 +24125,8 @@ }, { "type": "test", - "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19509,15 +24135,24 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "Z3k3Xyq2PRliEVvEr70co", "ctx": null, - "_testId": "urn:uuid:10534a87-7b74-46fa-b665-dca0a4557b83", + "_testId": "urn:uuid:f3bb8eea-762a-49f6-9dfb-ad5c73296951", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17488, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", @@ -19525,8 +24160,8 @@ }, { "type": "test", - "title": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", + "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19535,29 +24170,72 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "parent": "QHcXpUmmKQpVlzDzJgKWg", "ctx": null, - "_testId": "urn:uuid:ae73a323-5c7e-4d5b-abbe-51b0a06b79b0", + "_testId": "urn:uuid:d8440cf4-ee0b-4b5e-af9d-0ba79272678d", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.expires\" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value." + "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17612, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, "duration": 0, "state": "passed", "speed": "fast" } ] - }, + } + ] + }, + { + "title": "ecdsa-sd-2023 (issuers) VC 2.0", + "ctx": null, + "suites": [], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "HBge2Ath5DIzNcXqOH6rR", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "matrix": true, + "report": true, + "rowLabel": "Test Name", + "columnLabel": "Implementation", + "columns": [], + "rows": [] + }, + { + "title": "Data Integrity (ecdsa-sd-2023 verifiers)", + "ctx": null, + "suites": [ { - "id": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", - "cells": [ + "title": "apicatalog.com: P-256, P-384", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19566,24 +24244,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:9876edf3-2dc9-4495-9ee6-85dee5c2e8c1", + "_testId": "urn:uuid:12abb199-7897-4ea8-b183-807d9450c263", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17614, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 51, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19592,24 +24279,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:6dfa4324-be07-4e91-a2a2-8357f855b88a", + "_testId": "urn:uuid:0d3263f8-10ef-4b84-8919-90a6519bb642", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17666, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 49, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "\"proof.verificationMethod\" field MUST exist and be a valid URL.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('verificationMethod');\n let result;\n let err;\n try {\n result = new URL(proof.verificationMethod);\n } catch(e) {\n err = e;\n }\n should.not.exist(err, 'Expected URL check of the ' +\n '\"verificationMethod\" to not error.');\n should.exist(result, 'Expected \"verificationMethod\" ' +\n 'to be a URL');\n }\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19618,29 +24314,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:793b3fd9-6410-4274-b7d5-5e5ce8e625bd", + "_testId": "urn:uuid:dd1b24bb-5afd-4e34-a43e-7011124c27e7", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.verificationMethod\" field MUST exist and be a valid URL." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17715, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 52, "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "\"proof.proofPurpose\" field MUST exist and be a string.", - "cells": [ + "speed": "medium" + }, { "type": "test", - "title": "\"proof.proofPurpose\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", + "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19649,24 +24349,68 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:c18531fe-f5c7-48e2-ac6d-40e9bfe6d3cb", + "_testId": "urn:uuid:79e863d4-8bf2-4e1f-8020-7f00db4f994c", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17768, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 50, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", + "ctx": null, + "_testId": "urn:uuid:609e4241-fba1-4d45-bb82-34cf9ad90433", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17819, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, + "duration": 56, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "\"proof.proofPurpose\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19675,24 +24419,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:ab5f19c3-5ec9-43ee-8719-076f0f49a6db", + "_testId": "urn:uuid:f99c53d6-c696-400d-9741-9a105ca5ec2b", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17876, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 50, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "\"proof.proofPurpose\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n }\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19701,29 +24454,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:82ebb2cc-4d96-4219-b476-70b77c6500e1", + "_testId": "urn:uuid:b2ed952a-da18-40df-9911-9e2015051221", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.proofPurpose\" field MUST exist and be a string." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, - "duration": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17926, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 52, "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "\"proof.proofValue\" field MUST exist and be a string.", - "cells": [ + "speed": "medium" + }, { "type": "test", - "title": "\"proof.proofValue\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19732,24 +24489,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:46dc866b-8563-48f9-8500-5ec863a332c3", + "_testId": "urn:uuid:6922f5ba-141e-463e-9724-c08ae0072a64", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "\"proof.proofValue\" field MUST exist and be a string." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17980, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 43, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "\"proof.proofValue\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", + "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19758,24 +24524,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:242adc96-2608-4830-81b7-997da52bd7eb", + "_testId": "urn:uuid:ef3bb9f0-c82b-420c-95da-74f8a3478d16", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "\"proof.proofValue\" field MUST exist and be a string." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18023, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 67, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "\"proof.proofValue\" field MUST exist and be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n proof.should.have.property('proofValue');\n proof.proofValue.should.be.a('string');\n }\n }", + "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19784,29 +24559,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:bd71cb6c-2007-4f01-8115-7ed24e6dc4ce", + "_testId": "urn:uuid:9e56e3df-5b29-41d9-a149-ae412527ab21", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "\"proof.proofValue\" field MUST exist and be a string." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18091, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 48, "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", - "cells": [ + "speed": "medium" + }, { "type": "test", - "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", + "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19815,24 +24594,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:69690de1-f552-4ed4-84fc-3b78590cf5e5", + "_testId": "urn:uuid:3563dbb2-1fe6-484f-a798-9ec09bc90803", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18139, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 54, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", + "title": "If the \"proof.created\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // FIXME: Fix test to check if a cryptographic suite requires the\n // “proof.created” value\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19841,24 +24629,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:aa403ef4-53cc-4d17-9667-21efbe2c17f5", + "_testId": "urn:uuid:65f113d5-0823-496a-99a6-2961b46dde66", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.created\" field is invalid, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18193, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 55, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n\n for(const proof of proofs) {\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n\n proof.proofValue.slice(0, 1)\n .should.equal(\n expectedPrefix,\n `Expected \"proof.proofValue\" to be a ${encodingName} value`\n );\n\n isValidMultibaseEncoded(proof.proofValue, expectedPrefix).should\n .equal(\n true,\n `Expected \"proof.proofValue\" to be a valid ${encodingName} value`\n );\n }\n }", + "title": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n\n // Remove the multibase header to cause validation error\n credential.proof.proofValue = credential.proof.proofValue.slice(1);\n\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19867,29 +24664,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:cd796870-d49c-4ce4-82ca-a1cf8b549685", + "_testId": "urn:uuid:228fde38-3572-4366-b55c-16f70aa9f912", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "The contents of the value (\"proof.proofValue\") MUST be expressed with a header and encoding as described in Section 2.4 Multibase." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18248, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 55, "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", - "cells": [ + "speed": "medium" + }, { "type": "test", - "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19898,24 +24699,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:76c9c459-8669-45d0-8862-f126c757004a", + "_testId": "urn:uuid:36a8809d-4868-4bf0-be8a-91d17d6ddd74", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18304, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 53, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19924,24 +24734,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:990330cc-ff14-4cf8-9590-618624619289", + "_testId": "urn:uuid:76e41056-3213-4f17-9d7e-6f627beae38a", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18357, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 59, "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"apicatalog.com: P-256, P-384\"", + "body": "async function() {\n credentials = await generateTestData();\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19950,29 +24774,47 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "type": "hook", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:1bb62db0-4b5d-425e-b337-6d25fddf7b4a", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.domain\" field exists, it MUST be either a string, or an unordered set of strings." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17614, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, - "state": "passed", - "speed": "fast" + "duration": 1, + "_error": null } - ] + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "KpyPpH5m_QS51pGdmR_0p", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "_testId": "urn:uuid:81fd3391-19db-4b26-bbc1-83a7cd551248" }, { - "id": "if \"proof.challenge\" field exists, it MUST be a string.", - "cells": [ + "title": "Digital Bazaar: P-256, P-384", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "if \"proof.challenge\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19981,24 +24823,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:b52b1bae-73ed-4268-b6e4-faa8106455cc", + "_testId": "urn:uuid:1275987a-d1e5-479d-989b-b230f0974101", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.challenge\" field exists, it MUST be a string." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18418, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 55, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "if \"proof.challenge\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20007,24 +24858,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:dbe3ced1-51d1-4caa-a616-32c7d273b799", + "_testId": "urn:uuid:83dd04ee-b65a-44d9-8899-96ae4377a0fb", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.challenge\" field exists, it MUST be a string." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18472, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 41, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "if \"proof.challenge\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20033,55 +24893,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:8bcc419e-1e91-447e-945e-3f68294130d6", + "_testId": "urn:uuid:79eba0d6-c77e-49e4-b03b-7711e9662b9e", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.challenge\" field exists, it MUST be a string." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, - "duration": 0, - "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "if \"proof.previousProof\" field exists, it MUST be a string.", - "cells": [ - { - "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", - "ctx": null, - "_testId": "urn:uuid:dee4dc83-bdb7-44c9-a77c-593184606431", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18513, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, + "duration": 89, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20090,24 +24928,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:d6ba48f9-2420-48b8-994d-689072a859d1", + "_testId": "urn:uuid:1365a3cf-9219-439b-9f9c-07d66539660a", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18602, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 44, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20116,29 +24963,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:bd19625f-90af-42f3-acb3-9eb31e6121ff", + "_testId": "urn:uuid:3a1b8acd-0657-4d5e-8338-323a6ec8b3bc", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18646, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 74, "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "if \"proof.nonce\" field exists, it MUST be a string.", - "cells": [ + "speed": "medium" + }, { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20147,24 +24998,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "Fm6alPei8BQwnWae8fL39", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:37511b80-6fff-4c09-aaac-c1af223a1d78", + "_testId": "urn:uuid:a59fbd7e-ac62-4aca-9d6b-5985f33e973c", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18720, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 56, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20173,24 +25033,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "dQtUzRZCDHGY3ym4YzRAe", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:972411ee-f063-4f6d-9f6a-d17245d396d6", + "_testId": "urn:uuid:183cba44-a2cb-4f69-ac9b-aade01a65371", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18776, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 46, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n this.test.cell = {columnId, rowId: this.test.title};\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20199,37 +25068,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/35-sd-di-create.js", - "parent": "VcMI8WoaTNTWrJ3pDW2EG", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:209c8d78-9c49-4c01-95dc-76f9c8ef645f", + "_testId": "urn:uuid:342c384f-ace7-4895-b222-f9566af3c4e0", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, - "duration": 0, - "state": "passed", - "speed": "fast" - } - ] - } - ] - }, - { - "title": "ecdsa-sd-2023 (issuers)", - "ctx": null, - "suites": [ - { - "title": "apicatalog.com: P-256", - "ctx": null, - "suites": [], - "tests": [ + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18822, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 40, + "state": "passed", + "speed": "medium" + }, { "type": "test", - "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", + "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20238,24 +25103,40 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:02254cf5-48c7-4295-b5fb-f05feadb15d7", + "_testId": "urn:uuid:ab225bc4-0dd2-49c9-b956-21e043876bb5", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." }, - "duration": 0, - "state": "passed", - "speed": "fast" + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18862, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 52, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "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)" + } }, { "type": "test", - "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", + "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20264,33 +25145,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:f952ffb1-51d8-4a67-b020-3e8163d2ee9d", + "_testId": "urn:uuid:0af7795e-47ca-46ad-bb54-6a7291a9f517", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "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." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21279, + "_idleStart": 18915, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 52, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The field \"proofValue\" MUST start with \"u\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", + "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20299,24 +25180,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:a31e4ba5-dc58-4133-a241-df4ad447e56b", + "_testId": "urn:uuid:f9dfa8d1-6ba6-4808-b76e-710f8a2d3d8f", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The field \"proofValue\" MUST start with \"u\"." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18967, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 57, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", + "title": "If the \"proof.created\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // FIXME: Fix test to check if a cryptographic suite requires the\n // “proof.created” value\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20325,50 +25215,40 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:2418179b-6ad2-47f6-8920-6412a8aee3ca", + "_testId": "urn:uuid:923136b7-712b-45bc-a6a9-1cca61e22d49", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The \"proof\" MUST verify with a conformant verifier." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.created\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21280, + "_idleStart": 19025, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 19, + "duration": 41, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist", + "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist", "showDiff": false, - "actual": { - "name": "VerificationError", - "message": "Verification error (local).", - "errors": [ - "Credential issuer must match the verification method controller." - ], - "causes": [ - null - ], - "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:43e736d9-38c5-4c9f-b4a3-d5055612af5b\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"issuanceDate\":\"2024-04-07T05:06:39Z\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-sd-2023\",\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\"},\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-07T05:06:39Z\",\"proofValue\":\"u2V0BhVhA92Q4YGR4hEIf6tPDMI0vSoLiQ19gpfyL-QQ51UBrw42sTFLgWKg2HIvkeqqyHiI3eegfpBmTASvp654yCyZRm1gjgCQCE4yfpL5h_oBkFoBwgNJt9MdJlFJOPFkUVJRnQ5xFeCSBWED_98PtIs5_mFoJMDqBV2sVulX3jgMQDbyaFYC9flEhQRMq6xh8ta4n3RDdKGDBH3LZr4atsRgET-4yaspisCwioIQAAQME\"}}" - }, + "actual": {}, "operator": "notStrictEqual", - "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:117:14)\n at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js:142:17)" + "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)" } }, { "type": "test", - "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "title": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n\n // Remove the multibase header to cause validation error\n credential.proof.proofValue = credential.proof.proofValue.slice(1);\n\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20377,33 +25257,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:08019bc8-cb38-4cbb-bb63-ab93abef6119", + "_testId": "urn:uuid:57bd387b-bd8a-43a6-b82f-9920cd54982b", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21300, + "_idleStart": 19066, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 2, + "duration": 54, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20412,33 +25292,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:1c9d2126-3a4f-4a69-849b-f09505c091de", + "_testId": "urn:uuid:6df034b4-4def-4e8d-b78a-3a40d3604f86", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21301, + "_idleStart": 19121, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 38, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20447,28 +25327,28 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:773ebbdc-4ea0-407e-9aac-eacca93a856d", + "_testId": "urn:uuid:9967aec2-ea07-485f-ac22-1d10e95b257f", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21301, + "_idleStart": 19160, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 38, "state": "passed", - "speed": "fast" + "speed": "medium" } ], "root": false, @@ -20477,8 +25357,8 @@ "_beforeEach": [], "_beforeAll": [ { - "title": "\"before all\" hook in \"apicatalog.com: P-256\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create.document,\n mandatoryPointers: credentials.create.mandatoryPointers\n });\n // Support multiple proofs\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", + "title": "\"before all\" hook in \"Digital Bazaar: P-256, P-384\"", + "body": "async function() {\n credentials = await generateTestData();\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20488,9 +25368,9 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "PXl_OFClSQT2iklKN-pC2", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, @@ -20498,12 +25378,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 20973, + "_idleStart": 18417, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 305, + "duration": 1, "_error": null } ], @@ -20515,19 +25395,159 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "8KSXEbYV8-Gpy_nZk7AzE", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "_testId": "urn:uuid:7ff0f9a1-149f-4754-82e2-639305c2ff5f" + "parent": "KpyPpH5m_QS51pGdmR_0p", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "_testId": "urn:uuid:5fb66287-1434-4007-9634-e0f5320abf4d" }, { - "title": "Digital Bazaar: P-256", + "title": "Grotto Networking: P-256", "ctx": null, "suites": [], "tests": [ { "type": "test", - "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", + "ctx": null, + "_testId": "urn:uuid:f4406879-c186-497e-81c4-a4e0cbd30c48", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 19199, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 71, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", + "ctx": null, + "_testId": "urn:uuid:1624100c-5718-47a4-8cc4-e6c59e292256", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 19270, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 69, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", + "ctx": null, + "_testId": "urn:uuid:e7371dfe-f238-4ab7-bf9d-e39f77d765fb", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 19339, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 69, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", + "ctx": null, + "_testId": "urn:uuid:5c985e4f-a0bf-432f-aa9d-f9fe0cfac94f", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 19409, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 70, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20536,24 +25556,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:94c1500a-801a-4cbc-b7b6-5ed6347da5b5", + "_testId": "urn:uuid:b136159a-d158-4fd3-9638-8a1f8c926762", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 19479, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 71, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20562,33 +25591,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:7af061af-7288-4675-802e-047112f92fe1", + "_testId": "urn:uuid:0432d695-3009-41ee-94e8-7340ff256b20", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "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." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21397, + "_idleStart": 19550, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 70, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The field \"proofValue\" MUST start with \"u\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20597,24 +25626,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:132c43eb-4963-4e55-9bde-8463367b2428", + "_testId": "urn:uuid:cf1a9ee6-cecc-4c0f-ab50-dd2a58d0e485", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The field \"proofValue\" MUST start with \"u\"." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 19620, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 71, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20623,33 +25661,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:c2b9cae4-f10d-4e6a-a641-06d67a2152bf", + "_testId": "urn:uuid:bc398198-b3f6-45ce-a6ab-4400aa738f8c", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The \"proof\" MUST verify with a conformant verifier." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21397, + "_idleStart": 19691, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 13, + "duration": 69, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20658,33 +25696,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:76916072-49b2-487c-beb2-beeb87f248ac", + "_testId": "urn:uuid:65451aa9-712b-44f4-a47c-d007ab9a9d54", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21410, + "_idleStart": 19761, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 69, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20693,33 +25731,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:44a1485d-deed-4f1f-b374-ba616cff7924", + "_testId": "urn:uuid:e016d664-eb70-4f19-ac44-594b21a118ce", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21411, + "_idleStart": 19830, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 69, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20728,38 +25766,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:9a05c610-3199-4364-8b6b-9f08f768b533", + "_testId": "urn:uuid:7a766845-b77d-4df1-aca6-281b8a78e43e", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21411, + "_idleStart": 19900, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 75, "state": "passed", - "speed": "fast" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + "speed": "medium" + }, { - "title": "\"before all\" hook in \"Digital Bazaar: P-256\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create.document,\n mandatoryPointers: credentials.create.mandatoryPointers\n });\n // Support multiple proofs\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", + "type": "test", + "title": "If the \"proof.created\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // FIXME: Fix test to check if a cryptographic suite requires the\n // “proof.created” value\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20768,47 +25801,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "originalTitle": "\"before all\" hook", + "_testId": "urn:uuid:cc46f8c0-a8fd-464e-99c1-85185a0a303f", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.created\" field is invalid, an error MUST be raised." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21301, + "_idleStart": 19975, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 95, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "8KSXEbYV8-Gpy_nZk7AzE", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "_testId": "urn:uuid:b4335461-e0de-47c0-ad1f-fdabb551a340" - }, - { - "title": "Grotto Networking: P-256", - "ctx": null, - "suites": [], - "tests": [ + "duration": 71, + "state": "passed", + "speed": "medium" + }, { "type": "test", - "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", + "title": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n\n // Remove the multibase header to cause validation error\n credential.proof.proofValue = credential.proof.proofValue.slice(1);\n\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20817,24 +25836,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:25a5e432-aca2-4842-9725-2ceac1debc8e", + "_testId": "urn:uuid:ab2ad612-6783-4a06-a6cc-2f1db536bff1", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." + "rowId": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 20046, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 69, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", + "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20843,33 +25871,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:da8a24b8-e209-4b09-8d1a-cf835ec57f71", + "_testId": "urn:uuid:0b6cc298-4b89-4b41-93ed-28e6490e3e7c", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "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." + "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21522, + "_idleStart": 20115, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 72, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The field \"proofValue\" MUST start with \"u\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", + "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20878,24 +25906,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:97efb26e-15e6-4191-bbf0-af414f2b969a", + "_testId": "urn:uuid:d1da1e7c-49f1-4ce1-9490-ab748da8ccd1", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "The field \"proofValue\" MUST start with \"u\"." + "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 20187, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 72, "state": "passed", - "speed": "fast" - }, + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "type": "test", - "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", + "title": "\"before all\" hook in \"Grotto Networking: P-256\"", + "body": "async function() {\n credentials = await generateTestData();\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20904,33 +25946,72 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "type": "hook", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:cde1e771-4488-4fd5-8ae1-32edcfcbc3c1", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "The \"proof\" MUST verify with a conformant verifier." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21523, + "_idleStart": 19199, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 7, - "state": "passed", - "speed": "fast" - }, + "duration": 1, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "KpyPpH5m_QS51pGdmR_0p", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "_testId": "urn:uuid:2136b3be-6bfb-43b6-b53b-352bc15a0f96" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "GzHifvD62JwDWet-oBmTR", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "matrix": true, + "report": true, + "rowLabel": "Test Name", + "columnLabel": "Verifier", + "_testId": "urn:uuid:7667aaa5-37be-4a56-8d9f-9df50e460514", + "columns": [ + "apicatalog.com: P-256, P-384", + "Digital Bazaar: P-256, P-384", + "Grotto Networking: P-256" + ], + "rows": [ + { + "id": "If the \"proof\" field is missing, an error MUST be raised.", + "cells": [ { "type": "test", - "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20939,33 +26020,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:25dc0b4b-5fbe-4b18-a7e8-ab4ea0ea9767", + "_testId": "urn:uuid:12abb199-7897-4ea8-b183-807d9450c263", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21530, + "_idleStart": 17614, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 51, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20974,33 +26055,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:bca9a132-0e62-4f11-9f02-b322d74f7200", + "_testId": "urn:uuid:1275987a-d1e5-479d-989b-b230f0974101", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21531, + "_idleStart": 18418, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 55, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21009,38 +26090,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:36a5d05a-76c7-4c11-a5fc-5f98497fe6bf", + "_testId": "urn:uuid:f4406879-c186-497e-81c4-a4e0cbd30c48", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21531, + "_idleStart": 19199, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 71, "state": "passed", - "speed": "fast" + "speed": "medium" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + ] + }, + { + "id": "If the \"proof\" field is invalid, an error MUST be raised.", + "cells": [ { - "title": "\"before all\" hook in \"Grotto Networking: P-256\"", - "body": "async function() {\n issuedVc = await createInitialVc({\n issuer,\n vc: credentials.create.document,\n mandatoryPointers: credentials.create.mandatoryPointers\n });\n // Support multiple proofs\n proofs = Array.isArray(issuedVc?.proof) ? issuedVc.proof :\n [issuedVc?.proof];\n const verificationMethods = proofs.map(\n proof => proof.verificationMethod);\n for(const verificationMethod of verificationMethods) {\n const verificationMethodDocument = await documentLoader({\n url: verificationMethod\n });\n verificationMethodDocuments.push(verificationMethodDocument);\n }\n }", + "type": "test", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21049,98 +26130,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "originalTitle": "\"before all\" hook", + "_testId": "urn:uuid:0d3263f8-10ef-4b84-8919-90a6519bb642", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21411, + "_idleStart": 17666, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 110, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "8KSXEbYV8-Gpy_nZk7AzE", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "_testId": "urn:uuid:ce39e1c9-9d87-44b0-82d4-50be2c512d61" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "pbsci47qU-hHgbHdwRvAB", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "matrix": true, - "report": true, - "rowLabel": "Test Name", - "columnLabel": "Implementation", - "_testId": "urn:uuid:f37acc17-70d8-4dd5-aa20-3a2ccf29a0b8", - "columns": [ - "apicatalog.com: P-256", - "Digital Bazaar: P-256", - "Grotto Networking: P-256" - ], - "rows": [ - { - "id": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", - "cells": [ - { - "type": "test", - "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", - "ctx": null, - "_testId": "urn:uuid:02254cf5-48c7-4295-b5fb-f05feadb15d7", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." - }, - "duration": 0, + "duration": 49, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21149,24 +26165,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:94c1500a-801a-4cbc-b7b6-5ed6347da5b5", + "_testId": "urn:uuid:83dd04ee-b65a-44d9-8899-96ae4377a0fb", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18472, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 41, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.cryptosuite === 'ecdsa-sd-2023'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"cryptosuite\" property \"ecdsa-sd-2023\".'\n );\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21175,29 +26200,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:25a5e432-aca2-4842-9725-2ceac1debc8e", + "_testId": "urn:uuid:1624100c-5718-47a4-8cc4-e6c59e292256", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "The field \"cryptosuite\" MUST be \"ecdsa-sd-2023\"." + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 19270, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 69, "state": "passed", - "speed": "fast" + "speed": "medium" } ] }, { - "id": "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.", + "id": "If the \"proof.type\" field is missing, an error MUST be raised.", "cells": [ { "type": "test", - "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21206,33 +26240,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:f952ffb1-51d8-4a67-b020-3e8163d2ee9d", + "_testId": "urn:uuid:dd1b24bb-5afd-4e34-a43e-7011124c27e7", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "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." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21279, + "_idleStart": 17715, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 52, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21241,33 +26275,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:7af061af-7288-4675-802e-047112f92fe1", + "_testId": "urn:uuid:79eba0d6-c77e-49e4-b03b-7711e9662b9e", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "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." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21397, + "_idleStart": 18513, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 89, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "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.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const _proof = proofs.find(p =>\n p?.cryptosuite === 'ecdsa-sd-2023');\n expect(\n _proof,\n `Expected VC from issuer ${name} to have an ' +\n '\"ecdsa-sd-2023\" proof`).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC from issuer ${name} to have a ' +\n '\"proof.proofValue\"`\n ).to.exist;\n expect(\n _proof.proofValue,\n `Expected VC \"proof.proofValue\" from issuer ${name} to be ` +\n 'a string.'\n ).to.be.a.string;\n //Ensure the proofValue string starts with u, indicating that it\n //is a multibase-base64url-no-pad-encoded value, throwing an\n //error if it does not.\n expect(\n _proof.proofValue.startsWith('u'),\n `Expected \"proof.proofValue\" to start with u received ` +\n `${_proof.proofValue[0]}`).to.be.true;\n // now test the encoding which is bs64 url no pad for this suite\n expect(\n shouldBeBs64UrlNoPad(_proof.proofValue),\n 'Expected \"proof.proofValue\" to be bs64 url no pad encoded.'\n ).to.be.true;\n await shouldHaveHeaderBytes(\n _proof.proofValue,\n new Uint8Array([0xd9, 0x5d, 0x00])\n );\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21276,38 +26310,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:da8a24b8-e209-4b09-8d1a-cf835ec57f71", + "_testId": "urn:uuid:e7371dfe-f238-4ab7-bf9d-e39f77d765fb", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "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." + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21522, + "_idleStart": 19339, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 69, "state": "passed", - "speed": "fast" + "speed": "medium" } ] }, { - "id": "The field \"proofValue\" MUST start with \"u\".", + "id": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", "cells": [ { "type": "test", - "title": "The field \"proofValue\" MUST start with \"u\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", + "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21316,24 +26350,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:a31e4ba5-dc58-4133-a241-df4ad447e56b", + "_testId": "urn:uuid:79e863d4-8bf2-4e1f-8020-7f00db4f994c", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The field \"proofValue\" MUST start with \"u\"." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 17768, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 50, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The field \"proofValue\" MUST start with \"u\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", + "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21342,24 +26385,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:132c43eb-4963-4e55-9bde-8463367b2428", + "_testId": "urn:uuid:1365a3cf-9219-439b-9f9c-07d66539660a", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The field \"proofValue\" MUST start with \"u\"." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." }, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18602, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 44, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The field \"proofValue\" MUST start with \"u\".", - "body": "function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n proofs.some(\n proof => proof.proofValue.startsWith('u')\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"proofValue\" property that starts with \"u\".'\n );\n }", + "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21368,29 +26420,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:97efb26e-15e6-4191-bbf0-af414f2b969a", + "_testId": "urn:uuid:5c985e4f-a0bf-432f-aa9d-f9fe0cfac94f", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "The field \"proofValue\" MUST start with \"u\"." + "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 19409, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 0, + "duration": 70, "state": "passed", - "speed": "fast" + "speed": "medium" } ] }, { - "id": "The \"proof\" MUST verify with a conformant verifier.", + "id": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", "cells": [ { "type": "test", - "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21399,50 +26460,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:2418179b-6ad2-47f6-8920-6412a8aee3ca", + "_testId": "urn:uuid:609e4241-fba1-4d45-bb82-34cf9ad90433", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The \"proof\" MUST verify with a conformant verifier." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21280, + "_idleStart": 17819, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 19, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected { name: 'VerificationError', …(4) } to not exist", - "showDiff": false, - "actual": { - "name": "VerificationError", - "message": "Verification error (local).", - "errors": [ - "Credential issuer must match the verification method controller." - ], - "causes": [ - null - ], - "credential": "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\",\"https://w3id.org/security/multikey/v1\"],\"id\":\"urn:uuid:43e736d9-38c5-4c9f-b4a3-d5055612af5b\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"issuanceDate\":\"2024-04-07T05:06:39Z\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-sd-2023\",\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\"},\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-07T05:06:39Z\",\"proofValue\":\"u2V0BhVhA92Q4YGR4hEIf6tPDMI0vSoLiQ19gpfyL-QQ51UBrw42sTFLgWKg2HIvkeqqyHiI3eegfpBmTASvp654yCyZRm1gjgCQCE4yfpL5h_oBkFoBwgNJt9MdJlFJOPFkUVJRnQ5xFeCSBWED_98PtIs5_mFoJMDqBV2sVulX3jgMQDbyaFYC9flEhQRMq6xh8ta4n3RDdKGDBH3LZr4atsRgET-4yaspisCwioIQAAQME\"}}" - }, - "operator": "notStrictEqual", - "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:117:14)\n at async Context. (file:///home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js:142:17)" - } + "duration": 56, + "state": "passed", + "speed": "medium" }, { "type": "test", - "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21451,33 +26495,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:c2b9cae4-f10d-4e6a-a641-06d67a2152bf", + "_testId": "urn:uuid:3a1b8acd-0657-4d5e-8338-323a6ec8b3bc", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The \"proof\" MUST verify with a conformant verifier." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21397, + "_idleStart": 18646, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 13, + "duration": 74, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The \"proof\" MUST verify with a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n const derivedCredential = await deriveCredential({\n verifiableCredential: issuedVc,\n suite: 'ecdsa-sd-2023',\n selectivePointers: ['/credentialSubject/id']\n });\n\n await verificationSuccess({\n credential: derivedCredential,\n verifier\n });\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21486,38 +26530,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:cde1e771-4488-4fd5-8ae1-32edcfcbc3c1", + "_testId": "urn:uuid:b136159a-d158-4fd3-9638-8a1f8c926762", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "The \"proof\" MUST verify with a conformant verifier." + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21523, + "_idleStart": 19479, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 7, + "duration": 71, "state": "passed", - "speed": "fast" + "speed": "medium" } ] }, { - "id": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", + "id": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", "cells": [ { "type": "test", - "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21526,33 +26570,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:08019bc8-cb38-4cbb-bb63-ab93abef6119", + "_testId": "urn:uuid:f99c53d6-c696-400d-9741-9a105ca5ec2b", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21300, + "_idleStart": 17876, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 2, + "duration": 50, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21561,33 +26605,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:76916072-49b2-487c-beb2-beeb87f248ac", + "_testId": "urn:uuid:a59fbd7e-ac62-4aca-9d6b-5985f33e973c", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21410, + "_idleStart": 18720, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 56, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n const controllerDocuments = [];\n for(\n const verificationMethodDocument of verificationMethodDocuments\n ) {\n const controllerDocument = await documentLoader({\n url: verificationMethodDocument.controller\n });\n controllerDocuments.push(controllerDocument);\n }\n proofs.some(\n proof => controllerDocuments.some(controllerDocument =>\n controllerDocument.hasOwnProperty(proof.proofPurpose))\n ).should.equal(true, 'Expected \"proof.proofPurpose\" field ' +\n 'to match the verification method controller.'\n );\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21596,38 +26640,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:25dc0b4b-5fbe-4b18-a7e8-ab4ea0ea9767", + "_testId": "urn:uuid:0432d695-3009-41ee-94e8-7340ff256b20", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "The \"proof.proofPurpose\" field MUST match the verification relationship expressed by the verification method controller." + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21530, + "_idleStart": 19550, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 70, "state": "passed", - "speed": "fast" + "speed": "medium" } ] }, { - "id": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", + "id": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", "cells": [ { "type": "test", - "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21636,33 +26680,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:1c9d2126-3a4f-4a69-849b-f09505c091de", + "_testId": "urn:uuid:b2ed952a-da18-40df-9911-9e2015051221", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21301, + "_idleStart": 17926, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 52, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21671,33 +26715,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:44a1485d-deed-4f1f-b374-ba616cff7924", + "_testId": "urn:uuid:183cba44-a2cb-4f69-ac9b-aade01a65371", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21411, + "_idleStart": 18776, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 46, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n 'at least one \"verificationMethodDocument\".');\n verificationMethodDocuments.some(\n verificationMethodDocument =>\n verificationMethodDocument?.type === 'Multikey'\n ).should.equal(true, 'Expected at least one proof to have ' +\n '\"type\" property value \"Multikey\".'\n );\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21706,38 +26750,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:bca9a132-0e62-4f11-9f02-b322d74f7200", + "_testId": "urn:uuid:cf1a9ee6-cecc-4c0f-ab50-dd2a58d0e485", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "Dereferencing \"verificationMethod\" MUST result in an object containing a type property with \"Multikey\" value." + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21531, + "_idleStart": 19620, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 71, "state": "passed", - "speed": "fast" + "speed": "medium" } ] }, { - "id": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", + "id": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", "cells": [ { "type": "test", - "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21746,33 +26790,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "PXl_OFClSQT2iklKN-pC2", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:773ebbdc-4ea0-407e-9aac-eacca93a856d", + "_testId": "urn:uuid:6922f5ba-141e-463e-9724-c08ae0072a64", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256", - "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21301, + "_idleStart": 17980, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 43, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21781,33 +26825,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "O-syIEftdhkCY52etqhMW", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:9a05c610-3199-4364-8b6b-9f08f768b533", + "_testId": "urn:uuid:342c384f-ace7-4895-b222-f9566af3c4e0", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256", - "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21411, + "_idleStart": 18822, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 40, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyType}`, rowId: this.test.title\n };\n verificationMethodDocuments.should.not.eql([], 'Expected ' +\n '\"verificationMethodDocuments\" to not be empty.');\n verificationMethodDocuments.some(\n verificationMethodDocument => {\n const multibase = 'z';\n const {publicKeyMultibase} = verificationMethodDocument;\n return publicKeyMultibase.startsWith(multibase) &&\n shouldBeBs58(publicKeyMultibase) &&\n shouldBeMulticodecEncoded(publicKeyMultibase);\n }\n ).should.equal(true, 'Expected at \"publicKeyMultibase\" to ' +\n 'be MULTIBASE formatted and MULTICODEC encoded.');\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21816,46 +26860,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/40-sd-create.js", - "parent": "dhUSlBZGu_Mz1yeQ2jj1b", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:36a5d05a-76c7-4c11-a5fc-5f98497fe6bf", + "_testId": "urn:uuid:bc398198-b3f6-45ce-a6ab-4400aa738f8c", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "The \"publicKeyMultibase\" property of the verification method MUST be public key encoded according to MULTICODEC and formatted according to MULTIBASE." + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21531, + "_idleStart": 19691, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 69, "state": "passed", - "speed": "fast" + "speed": "medium" } ] - } - ] - }, - { - "title": "Data Integrity (ecdsa-sd-2023 verifiers)", - "ctx": null, - "suites": [ + }, { - "title": "apicatalog.com: P-256, P-384", - "ctx": null, - "suites": [], - "tests": [ + "id": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", + "cells": [ { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21865,32 +26901,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:452c86bb-317a-4c35-962b-98ffe02ac4bc", + "_testId": "urn:uuid:ef3bb9f0-c82b-420c-95da-74f8a3478d16", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21532, + "_idleStart": 18023, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 67, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21900,32 +26936,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:a985d180-e5c5-4e2b-b36e-679abc15c457", + "_testId": "urn:uuid:ab225bc4-0dd2-49c9-b956-21e043876bb5", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21570, + "_idleStart": 18862, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, - "state": "passed", - "speed": "fast" + "duration": 52, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "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)" + } }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21935,32 +26978,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:38f50c5a-d897-456b-86f0-6de4c429d43c", + "_testId": "urn:uuid:65451aa9-712b-44f4-a47c-d007ab9a9d54", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21606, + "_idleStart": 19761, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 69, "state": "passed", "speed": "medium" - }, + } + ] + }, + { + "id": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", + "cells": [ { "type": "test", - "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21970,32 +27018,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:3f6d6804-caab-4f75-9b99-cb3e727b3602", + "_testId": "urn:uuid:9e56e3df-5b29-41d9-a149-ae412527ab21", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." + "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21650, + "_idleStart": 18091, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, + "duration": 48, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22005,32 +27053,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:15b1a52b-912f-4640-abd5-1bc2fb9f82b6", + "_testId": "urn:uuid:0af7795e-47ca-46ad-bb54-6a7291a9f517", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21696, + "_idleStart": 18915, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 52, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22040,32 +27088,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:622ecfa5-50cf-457b-b9b2-b69c02942737", + "_testId": "urn:uuid:e016d664-eb70-4f19-ac44-594b21a118ce", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21733, + "_idleStart": 19830, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 69, "state": "passed", "speed": "medium" - }, + } + ] + }, + { + "id": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", + "cells": [ { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22075,32 +27128,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:683cd135-9251-42ae-86f9-21e6b10893ff", + "_testId": "urn:uuid:3563dbb2-1fe6-484f-a798-9ec09bc90803", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21776, + "_idleStart": 18139, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 54, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22110,32 +27163,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:cb4ef8f6-6671-4391-b4a2-ef886cd89e47", + "_testId": "urn:uuid:f9dfa8d1-6ba6-4808-b76e-710f8a2d3d8f", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21812, + "_idleStart": 18967, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 57, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", + "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22145,32 +27198,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:7db4b961-a457-43ef-8560-e2e9ff43e3b7", + "_testId": "urn:uuid:7a766845-b77d-4df1-aca6-281b8a78e43e", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21849, + "_idleStart": 19900, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 75, "state": "passed", "speed": "medium" - }, + } + ] + }, + { + "id": "If the \"proof.created\" field is invalid, an error MUST be raised.", + "cells": [ { "type": "test", - "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.created\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // FIXME: Fix test to check if a cryptographic suite requires the\n // “proof.created” value\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22180,32 +27238,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:450fcce7-7b71-41dd-bc69-14d889c3727e", + "_testId": "urn:uuid:65f113d5-0823-496a-99a6-2961b46dde66", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." + "rowId": "If the \"proof.created\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21887, + "_idleStart": 18193, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 84, + "duration": 55, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.created\" field is invalid, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // FIXME: Fix test to check if a cryptographic suite requires the\n // “proof.created” value\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22215,27 +27273,34 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:2cec185c-78f3-42c7-8dc0-ed611481f286", + "_testId": "urn:uuid:923136b7-712b-45bc-a6a9-1cca61e22d49", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.created\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21971, + "_idleStart": 19025, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, - "state": "passed", - "speed": "fast" + "duration": 41, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "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)" + } }, { "type": "test", @@ -22250,28 +27315,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:4939441c-882e-4e78-8cf0-bcc490aac9c4", + "_testId": "urn:uuid:cc46f8c0-a8fd-464e-99c1-85185a0a303f", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "Grotto Networking: P-256", "rowId": "If the \"proof.created\" field is invalid, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22008, + "_idleStart": 19975, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 71, "state": "passed", - "speed": "fast" - }, + "speed": "medium" + } + ] + }, + { + "id": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", + "cells": [ { "type": "test", "title": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", @@ -22285,9 +27355,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:1025cc2f-1b60-427f-a4ed-605d49c76f7d", + "_testId": "urn:uuid:228fde38-3572-4366-b55c-16f70aa9f912", "_events": {}, "_eventsCount": 1, "cell": { @@ -22298,19 +27368,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22046, + "_idleStart": 18248, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 35, + "duration": 55, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n\n // Remove the multibase header to cause validation error\n credential.proof.proofValue = credential.proof.proofValue.slice(1);\n\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22320,32 +27390,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:12486dc2-dbbd-4142-b810-83a89904a4d6", + "_testId": "urn:uuid:57bd387b-bd8a-43a6-b82f-9920cd54982b", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." + "columnId": "Digital Bazaar: P-256, P-384", + "rowId": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22081, + "_idleStart": 19066, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 54, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n\n // Remove the multibase header to cause validation error\n credential.proof.proofValue = credential.proof.proofValue.slice(1);\n\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22355,37 +27425,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:fe1acdf2-b6ac-4687-9bd6-e81c80d020a1", + "_testId": "urn:uuid:ab2ad612-6783-4a06-a6cc-2f1db536bff1", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22116, + "_idleStart": 20046, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, + "duration": 69, "state": "passed", "speed": "medium" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + ] + }, + { + "id": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", + "cells": [ { - "title": "\"before all\" hook in \"apicatalog.com: P-256, P-384\"", - "body": "async function() {\n credentials = await generateTestData();\n }", + "type": "test", + "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22394,47 +27464,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", - "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "originalTitle": "\"before all\" hook", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", + "ctx": null, + "_testId": "urn:uuid:36a8809d-4868-4bf0-be8a-91d17d6ddd74", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21532, + "_idleStart": 18304, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "lYIBGY70cnXYWyPAPlu8o", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "_testId": "urn:uuid:c23ae983-815b-4500-bfc1-02c63ca9ee75" - }, - { - "title": "Digital Bazaar: P-256, P-384", - "ctx": null, - "suites": [], - "tests": [ + "duration": 53, + "state": "passed", + "speed": "medium" + }, { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22444,32 +27500,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:527ce08f-1d7e-4b18-8178-771970a7f8ae", + "_testId": "urn:uuid:6df034b4-4def-4e8d-b78a-3a40d3604f86", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22173, + "_idleStart": 19121, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 52, + "duration": 38, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22479,32 +27535,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:fc9e0c50-7d03-48c0-8c3d-08beb27eed44", + "_testId": "urn:uuid:0b6cc298-4b89-4b41-93ed-28e6490e3e7c", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22225, + "_idleStart": 20115, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 72, "state": "passed", "speed": "medium" - }, + } + ] + }, + { + "id": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", + "cells": [ { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22514,32 +27575,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "parent": "xQ2Ij3ygTPjXmGO9BKCCt", "ctx": null, - "_testId": "urn:uuid:613ee106-421b-48d1-8656-5fdf83e6e176", + "_testId": "urn:uuid:76e41056-3213-4f17-9d7e-6f627beae38a", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "apicatalog.com: P-256, P-384", + "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22278, + "_idleStart": 18357, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 60, + "duration": 59, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22549,32 +27610,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "parent": "HHRhMUcJVYryBFuloM5w7", "ctx": null, - "_testId": "urn:uuid:d87ca4ef-71d9-48de-a1fa-c5c8c3d982d4", + "_testId": "urn:uuid:9967aec2-ea07-485f-ac22-1d10e95b257f", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." + "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22338, + "_idleStart": 19160, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 38, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", + "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22584,32 +27645,45 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "parent": "8pCM4WjLpVEtSaKg5cuqU", "ctx": null, - "_testId": "urn:uuid:fc5b42e4-86a1-4595-b94d-fe3bd54a2da8", + "_testId": "urn:uuid:d1da1e7c-49f1-4ce1-9490-ab748da8ccd1", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22392, + "_idleStart": 20187, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 72, "state": "passed", "speed": "medium" - }, + } + ] + } + ] + }, + { + "title": "ecdsa-sd-2023 (verifiers 1.1)", + "ctx": null, + "suites": [ + { + "title": "apicatalog.com: P-256", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22618,33 +27692,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:80498798-d4b5-4f18-86bd-458308afc9a4", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:a11c4993-8008-455f-9a11-7a40e3119893", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22453, + "_idleStart": 20622, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, + "duration": 347, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with nested disclosed properties.", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22653,33 +27727,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:561a323e-1f02-47fa-b337-47f87de3936f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:2b1ca299-36ea-4586-ba4c-27b369cda71d", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22512, + "_idleStart": 20969, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, + "duration": 709, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with disclosed properties and bnodes.", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22688,33 +27762,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:a5e6b2c0-70f8-4144-a8f0-c8cc4b1652bf", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:72e82662-b1c9-4796-8099-9af48fa9f916", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22564, + "_idleStart": 21679, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 690, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", + "title": "MUST verify with full array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22723,75 +27797,266 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:22512e35-9f1e-4db1-a3b1-672c4889d452", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:4d10e5ca-38ce-4094-9a53-d66ec3f9ffe4", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify with full array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22618, + "_idleStart": 22369, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 407, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, - "actual": {}, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"name\":\"https://schema.org/name\",\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuanceDate\":\"2024-04-14T05:32:08Z\",\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Earth101\",\"sails\":[{\"size\":5.5,\"sailName\":\"Osprey\",\"year\":2023},{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023},{\"size\":6.8,\"sailName\":\"Vulture-FR\",\"year\":2020},{\"size\":7.7,\"sailName\":\"Vulture-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"Oak620\",\"brand\":\"Excite\",\"year\":2020},{\"boardName\":\"Excite Custom\",\"brand\":\"Excite\",\"year\":2018}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:32:08Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhAAgX6OiL2LPDs4gY25t6_9-5FgEnvkMQDY16oQVBWq3QIH8f10Yc1WFStuCIHVm8UpipcXzXt1aQ27fO0R0ZgPlgjgCQCCeEn_R7OzbmPqm2ayttFG4El1Z8HdK1aBEQr08YMxY-YN1hAxHDRKHE2RtUl8UMgciM4f7qMiTQ6TLdrd4k8Bl1dgXJQcJywUCUEnkAFougrkZcUYDPBeP0z7pGu-SeOAAyix1hAYlbCO5BwzRtpRqt-N0awYZm3zkYZxDbfmlvKkeHEBbUVwp9vILra4zTFmtRa2VJzATpz__Z4CFlMX8V_Ec3REVhAeZDDWwPJ5ISZKx6Fz_0E-oA-G8elrAWkeeZV55ZWJjdX9RKj4_s2YmCDW4h5LXh2n7go7eiKqwudEx1p41CdnVhAA5TBn8mYLF_hNmGYFnGBpOLA3WlhjoC2Mg-0rfJlSUVc4h_lYUFbhcv5AyVsyjW7PRWiewgJAT-49LES7ENxr1hA8S06jH5ZOFODUTq9s-rdc0703PaUvYMJ39LUUCgHe691D5MLdjHPFP3iRaIDlmCm6-V0WnZhcJ77cbK00-idk1hAzjCgytep_s2qDg3KYc0RRUhZaXUq7jAN4x_Y4bpgQVpwClOsdxrZdGFy4TNWY-QcuI5B3z7ZPoXGPa60FWGDbFhAyeysdgdTS1_pKovMgBg4_m_fapzx5fzmav1gP11GRUerm7BIZMeu_oiDrGzpHepyo82fgnOxKI3vZlmW_KYqulhA8yMqjtjq8sEntnxEefcEfdKeGmKC4yCSyPbecWAlV3f0mQA1nUl9YKHRQ1Wq3FmpINNSmQzkwPhz68IH7lKN2VhAJaX3W1waESD6XaOiV_m5L0oD5bI1ecKPraw9oTswFeu64suztm247-BtEvHleQOFqTK_VrSk-Kfjxf9aSxFNK1hAFAu9GH0zAITSHOYlvaFYtjYxO7itD20nMkW6BmJn2kRE7ylspBhHAQRY8DBdTn33UvdGOrY99bzPOY42JzRK-FhA6wHggUNqdfhm4ly963xyOQMJcH11lhIQKiZHKWjBnvypy6nBfBwbznAeQUdHmZtlXX0amMm-EYKigsN0hkWEA1hAUc_EhD4Hifa62tGlDXKNOLGma4JUqlbG3cPJ97IWVOSfrJCzyV54n9_xbGdIOeuAhucZPsctnO562hCagXLollhA6d5qS9rLp2-s1VTpyGp4_LylmTqKcKwVAOdVPtLjS8CodoENydDmmmmizzR7aMSzkqP3VBbqAVXVTxJq3TGoLlhAMiDDSs7vRC9dclKkN4f9PfkCcxPrHjvHEpRyHkemNGtkNc1c2a5adADu5d47O9_S22qA0yPaSA-wFUrS87WNf1hAY571X9tmAYuTm2P5hLJ1cucjQQkjOZR-uGGxFT8W4Ri7fZU0yGwTUhQhFBgV4dvHCByfuvPZJbSgzOLktrTrn1hARj_bBcnCu8IqPUUfZ3Xi3xNoHlJCJ_Hru498FFjb2jsF5AbnqeBH2RZLSydLXKJ-bACFTsZl0VJTj7QWhbYJr1hA0fVDWUS0eSqyxODmZv-nm06WgQmfjtkc3nz-Dvt1oVFkDrvNlJGpsQrJZQ2qj3vXd7n469edld3DRZ7qFVd_GVhA27-GQb78biNJ265RJ5PQtTJSQ13qp7swdv7qGdpU0T26ESrQigO_3oOm-UO7VgitvtRHd2qxwxQ1riyh19GPBVhAVN1ljRNT4MHCDGArEOoSj_L3r7IDI5vfQKgEGhGqI_JAMhFCFrys59c5r5MqUU8klNKl-v_c6UUCKeBCUJXfp1hAFe2gn_N3OboyQae0u0JhhzDOOOwWeFma2jOP3zG42vef1XGIn1b2G_3_QhYBvYOkbsWOLRdU3NO940XT-yDeSFhAzgv0XPKMRZ-Q_sk3a7FsPH6IKG00jKrIP56BVwMpo9To1S-d_CielO59qlNRYYRbcDjXfXASkWdFgLBoKkwd2VhAJ_N9LxO0WVVlNbMVAOR8W1w24PZL06mHu11LFAYXf2Dxmi4gmQwKpxYDtQlFKhxRlJ218HYq3meEAVUrMndFGFhAyOdbwmKKKZZBqDChxvaTOT_7oL2utb4GiDyHHy57Ic7UrimG4bvVgJQP5M4_uPIhPhRx-uv8DY9Z-ZgpLxUG-FhASNG_eyljL3fZn0-ya8V28e6uVU4Adm0H-LVjVkUEvuuttu5giLhvGzYkLRgWaqDZKSTECXnMt-poM6Qlv2Bxr1hAt4edtM_dr_2BY4p-bHQv5DTfMg-5ZRHSSDAhU5KBme__3SIX7PgDfrKGX_XERNY-KZtH1jXfeSzt5wwR5NagP1hADe5wk0t8AnuZD-KfLMhsPnR4d4T-y1OyuRSfjKSAlgsI-8qgTotG0ChRAJIigB5gVK2mQpW1BbGinKigzP8wx1hA8lDzZrhJ1R-kx1DsxMHK5b-Hf_dLZOH8nV98wJBmDLx2dtSFsfi9rjqAahmojz_aLPQPsBkLBzr6D919zEj3flhAH9gFMK7dzURjkpQSZOPkEsmUaEGtXIk_-SV4RqL7K2WyexbcOf9GOUybG93Nfcill2B7CILyY-mYDz9Avo6jxFhAKO0RcOQGZRiXWnHBITWRwEUS_JVFNbxM54qHt03updEPFzbtz-xSD0PsZsXpa7Z36-DtDbKy3kiafQWDYVSpu1hAgQXykMYhF95aEDQM9lxmrux6t0hS5ahATaFGg4wKLyJYgBnnZtlhIQ7hRaBc91KC7yG2QRZyqatGCDsMvGjngVhAax7R7OjqHM8XiC3JYWn-5rUP_k_3bbC93suSvnzMjJoRRLuzPqtek0xC4qwtEyVHClb_37lQV8zuI4c2EisWYVhAWQfF6NlqUIQBOPcnMfrN8xS-NtxVXXCxslVXkmO533xjeUgifpW89gV6k6ExZpT_3Rzx-iB5WLoEdU1X-AFGrVhAGyFbfrZMag2cACUpuBN8Du4tDmD92eW7dwOKdFXuHgtemQZgpF-vplmf7Kd85-k5hmAe-YktBzqb-zEj9GI_U1hApgaO1L71ClABT7pB2zfWnJJUl53sPtJ4xNQQMY6na9Hx-F6iDzIQKJ_qpAp2bzIjs0mW-1Riz9ipi7fFX_yGwVhAimwRTSdNAPZljXzTwL8TgJdZytbx9ZdbxdlIu47IFmsS3Zea7t52FBGvBBhYp8BEeUWF0cFRi7etR5DJvhsCSVhAKPbsLAwYepcULExHwSty3doFJSiSQ6vliGN02m3-OAyKdPhoOB64as4FLX-JyVh5wdOS2F_nQuPb4Ho-YNcKslhAO17uyhLGA5RJWNEAjLEu5oHfCFF5bUaF0HlvYr72R6ZuR-u8aByISkqFs9q9EcRjcfhNF9euuz5etb-aGj3crlhAo7hc8gnyGQPDhjTiO4wG-jvGB7_hQragbFkti4AWjyYBhs3aSSGrx4cYu59__G7-QRg9RXphur8WCjAFv4v43FhAwEoKKX84lXYd0TlBYvCSuBlIoAs10yybuFkzzlWj0qzIu4rHZH1rvdzCiP9jQCqm2AQuGJOS22xPI-k-MIZmzVhAAOiYy26ZSbGY_X8LGmqqSsBlhX9TZSOBOrTlh70hCJoEQT9rwx39gXL1wrKjbP-vAzr3hg94b-l2-GdtpwDo4VhATDqmD3l_GElsAVBW_CnRqxAba5kYm5o8mzBdqyHM1naRSb1JYxTKULce-zYuCJ6pTpy3i3-ndEHHPhYFwVz_qFhA3UywlGtgVvYiIc2vJYHB9Ix9SQsEY9gdLBkljoHkLVNhhT78yGI7cpjkeMoSkzkvKRExkqXAts0HMQRx1QnDE1hA3TDmj_HpUbKSpginix4Sbz9t-pB0ckf8wPqRZvqhn_NrHYPAz5TYl3F1Blj_A6JXTjJX_Fj5iSgisscVNBJ2tlhAH8bT8-jlp-YHDVHCnCRM53RYogQw4kwCu61xPK7gI1-2d01tZ4tpc6p7g51yCCeLm0t1jKeElovYB1uH0wNwBVhAd9o07yh-NaY3t4sj18d19OnpmLaSHkrT3eEfMWORt8I1xMRJGSLDOuTfdgOMS9XLupDdj5gRIBnLfkhh1adEolhAvAeHyjDLvc0KmTXiL1DnjSR56MiA1BYl7v1LXXKYbmRQCWvcaNEf6XwpZp_-nJcui7LJD8TWWhNZIMjcuI4isFhArJ3SMF32-qCdQIx7YA-JLhm6CItXphfjiRz6asjNCTOV4jps7od_mVbO_jtnZGyNbMLVXGVjOnOxd6Bs27q1b1hAUa6ghfF8i9FisdbE1A-U9YFBj_E6gdkTF_9KQXDFszWEJYvO8_Ckbk9N8TYwY3b0IM0asvD8XI7I4PaVc0ksOVhAO5IkR43K3KGq3CJWMtzr-OJ10JzCiAKNLZJO-N16aMM5UnQZZdqcr9woSxBzhQY2igitOaDdNi_YXbNCOzc9O1hA4GDd2h8p84alOWxcs0ukJHwYKgTJoED07uNJNgBm9_xs7FpkLpfE-6UphTuH5y3DxO5QzlykVEZ7vbYdGGbbFlhAoHCx7lj0NvS-8QuwmfSl8B2-uAXfa8Uk4KD7hz7nO6CsPflklnFw8x-COCfojmDix0hllTH7dxslImPPp_kqjlhAiNjTJMewARRfEPpZZjyGbL6oTrr54UxprSW9DBa18Thp3FyyHsNZD0tQgpTecAG1TX2E4F0mIwy243-5eFFlpFhAW6akDJSbj5dIYSFLX0AuesOdS0kb1V6dSOIhaUiP3ARq0BJcYqKZ0i123LwakqU_w1cAxMa2Sfhfnhiz7ELdnlhAWUT3nS-wgK753jWC1JGInKl7G8TjGeVQiZKuvDd9loL7F8cm2zhXGjkCKXYPrIRT2qtYy8-yUnPqZEITXIB_F1hAhh7EyUGzzwQrQDy9OPQXJaUpU7LdhXdicittDresZcUsTcyhzRnyjSbeAdhP7MGBCv36UnLb5Wy6GecY94uVXLAAWCBgMYjU9G1_ow0FMi28M3XBx9WFZJznz8L4t7LBgOopUAFYIA2ukOxwWJjUGTDbO1FSwC075gA8hjpc8EmGgrNlG0P1AlggmHrEwRVSxu9CETxvKoeFodW0d-KbE7isaO9kK_2ndEsDWCCu8Rm9-2oSn84cqnchN0eHqGjH_012q_204oGZNpnNGwRYIBNy6uisc7SaXocNXyKkoojqOtuJ9tmQoUdBaIOUZlazBVggS0ZHcuVmCMQe55reFIOcBV2JFUFsz4k7Sqvvfr6Ek34GWCAmGwen5i1DAt5OLx57e4BPtUfFgTQhyAkcB-g1EoQPtgdYIH19-t3VQ46e7MCxjWMXCQ5E5U0p6cBlU-scMe7-DafzCFggOUhkBlutCGHYg7LhszefmyDp_KA3auGCIzkVVuYwm18JWCAk1N2JpT4k_HGNt2vi8xpzL-spPkHZjH0wSEIKmpNOIgpYIApkpUQRRfoGC7njA6fQLatPsHJBVsMLJwBan0ZYHbqtC1ggNJDIDvzJ183NqNcJMsT0fx_Ps22qizg5hSVxexqsIqUMWCDNUDK3gidZCR9n3YPT_9xASAzlSyH8BQ9tWv3_DOKshg1YIDPsg-r9afJ2LpIhL-YyL1ZGAK_uwD1etyHxWnLStpZ-DlggCmrMkZK0fWKgELrDs4mi5ADQKdODDU5LusLbj3FZqpQPWCABBe80VblLeEIVHyLiduuGCegF7GJLN0_-w3uxoIKEU4QDBAYH\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "name": "https://schema.org/name", + "ExampleAchievementCredential": "urn:example:ExampleAchievementCredential", + "WindsailingAchievement": { + "@id": "urn:example:WindsailingAchievement", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "sailNumber": "urn:example:sailNumber", + "sails": { + "@id": "urn:example:sails", + "@context": { + "@protected": true, + "sailName": "urn:example:sailName", + "size": "urn:example:size", + "year": "urn:example:year" + } + }, + "boards": { + "@id": "urn:example:boards", + "@context": { + "@protected": true, + "boardName": "urn:example:boardName", + "brand": "urn:example:brand", + "year": "urn:example:year" + } + } + } + }, + "achievements": { + "@id": "urn:example:achievements", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2" + ], + "type": [ + "VerifiableCredential", + "ExampleAchievementCredential" + ], + "issuanceDate": "2024-04-14T05:32:08Z", + "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "credentialSubject": { + "achievements": [ + { + "type": "WindsailingAchievement", + "sailNumber": "Earth101", + "sails": [ + { + "size": 5.5, + "sailName": "Osprey", + "year": 2023 + }, + { + "size": 6.1, + "sailName": "Eagle-FR", + "year": 2023 + }, + { + "size": 7, + "sailName": "Eagle-FR", + "year": 2020 + }, + { + "size": 7.8, + "sailName": "Eagle-FR", + "year": 2023 + } + ], + "boards": [ + { + "boardName": "CompFoil170", + "brand": "Tillo", + "year": 2022 + }, + { + "boardName": "Tillo Custom", + "brand": "Tillo", + "year": 2019 + } + ] + }, + { + "type": "WindsailingAchievement", + "sailNumber": "Mars101", + "sails": [ + { + "size": 5.9, + "sailName": "Chicken", + "year": 2022 + }, + { + "size": 4.9, + "sailName": "Vulture-FR", + "year": 2023 + }, + { + "size": 6.8, + "sailName": "Vulture-FR", + "year": 2020 + }, + { + "size": 7.7, + "sailName": "Vulture-FR", + "year": 2023 + } + ], + "boards": [ + { + "boardName": "Oak620", + "brand": "Excite", + "year": 2020 + }, + { + "boardName": "Excite Custom", + "brand": "Excite", + "year": 2018 + } + ] + } + ] + }, + "proof": { + "type": "DataIntegrityProof", + "created": "2024-04-14T05:32:08Z", + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "cryptosuite": "ecdsa-sd-2023", + "proofPurpose": "assertionMethod", + "proofValue": "u2V0BhVhAAgX6OiL2LPDs4gY25t6_9-5FgEnvkMQDY16oQVBWq3QIH8f10Yc1WFStuCIHVm8UpipcXzXt1aQ27fO0R0ZgPlgjgCQCCeEn_R7OzbmPqm2ayttFG4El1Z8HdK1aBEQr08YMxY-YN1hAxHDRKHE2RtUl8UMgciM4f7qMiTQ6TLdrd4k8Bl1dgXJQcJywUCUEnkAFougrkZcUYDPBeP0z7pGu-SeOAAyix1hAYlbCO5BwzRtpRqt-N0awYZm3zkYZxDbfmlvKkeHEBbUVwp9vILra4zTFmtRa2VJzATpz__Z4CFlMX8V_Ec3REVhAeZDDWwPJ5ISZKx6Fz_0E-oA-G8elrAWkeeZV55ZWJjdX9RKj4_s2YmCDW4h5LXh2n7go7eiKqwudEx1p41CdnVhAA5TBn8mYLF_hNmGYFnGBpOLA3WlhjoC2Mg-0rfJlSUVc4h_lYUFbhcv5AyVsyjW7PRWiewgJAT-49LES7ENxr1hA8S06jH5ZOFODUTq9s-rdc0703PaUvYMJ39LUUCgHe691D5MLdjHPFP3iRaIDlmCm6-V0WnZhcJ77cbK00-idk1hAzjCgytep_s2qDg3KYc0RRUhZaXUq7jAN4x_Y4bpgQVpwClOsdxrZdGFy4TNWY-QcuI5B3z7ZPoXGPa60FWGDbFhAyeysdgdTS1_pKovMgBg4_m_fapzx5fzmav1gP11GRUerm7BIZMeu_oiDrGzpHepyo82fgnOxKI3vZlmW_KYqulhA8yMqjtjq8sEntnxEefcEfdKeGmKC4yCSyPbecWAlV3f0mQA1nUl9YKHRQ1Wq3FmpINNSmQzkwPhz68IH7lKN2VhAJaX3W1waESD6XaOiV_m5L0oD5bI1ecKPraw9oTswFeu64suztm247-BtEvHleQOFqTK_VrSk-Kfjxf9aSxFNK1hAFAu9GH0zAITSHOYlvaFYtjYxO7itD20nMkW6BmJn2kRE7ylspBhHAQRY8DBdTn33UvdGOrY99bzPOY42JzRK-FhA6wHggUNqdfhm4ly963xyOQMJcH11lhIQKiZHKWjBnvypy6nBfBwbznAeQUdHmZtlXX0amMm-EYKigsN0hkWEA1hAUc_EhD4Hifa62tGlDXKNOLGma4JUqlbG3cPJ97IWVOSfrJCzyV54n9_xbGdIOeuAhucZPsctnO562hCagXLollhA6d5qS9rLp2-s1VTpyGp4_LylmTqKcKwVAOdVPtLjS8CodoENydDmmmmizzR7aMSzkqP3VBbqAVXVTxJq3TGoLlhAMiDDSs7vRC9dclKkN4f9PfkCcxPrHjvHEpRyHkemNGtkNc1c2a5adADu5d47O9_S22qA0yPaSA-wFUrS87WNf1hAY571X9tmAYuTm2P5hLJ1cucjQQkjOZR-uGGxFT8W4Ri7fZU0yGwTUhQhFBgV4dvHCByfuvPZJbSgzOLktrTrn1hARj_bBcnCu8IqPUUfZ3Xi3xNoHlJCJ_Hru498FFjb2jsF5AbnqeBH2RZLSydLXKJ-bACFTsZl0VJTj7QWhbYJr1hA0fVDWUS0eSqyxODmZv-nm06WgQmfjtkc3nz-Dvt1oVFkDrvNlJGpsQrJZQ2qj3vXd7n469edld3DRZ7qFVd_GVhA27-GQb78biNJ265RJ5PQtTJSQ13qp7swdv7qGdpU0T26ESrQigO_3oOm-UO7VgitvtRHd2qxwxQ1riyh19GPBVhAVN1ljRNT4MHCDGArEOoSj_L3r7IDI5vfQKgEGhGqI_JAMhFCFrys59c5r5MqUU8klNKl-v_c6UUCKeBCUJXfp1hAFe2gn_N3OboyQae0u0JhhzDOOOwWeFma2jOP3zG42vef1XGIn1b2G_3_QhYBvYOkbsWOLRdU3NO940XT-yDeSFhAzgv0XPKMRZ-Q_sk3a7FsPH6IKG00jKrIP56BVwMpo9To1S-d_CielO59qlNRYYRbcDjXfXASkWdFgLBoKkwd2VhAJ_N9LxO0WVVlNbMVAOR8W1w24PZL06mHu11LFAYXf2Dxmi4gmQwKpxYDtQlFKhxRlJ218HYq3meEAVUrMndFGFhAyOdbwmKKKZZBqDChxvaTOT_7oL2utb4GiDyHHy57Ic7UrimG4bvVgJQP5M4_uPIhPhRx-uv8DY9Z-ZgpLxUG-FhASNG_eyljL3fZn0-ya8V28e6uVU4Adm0H-LVjVkUEvuuttu5giLhvGzYkLRgWaqDZKSTECXnMt-poM6Qlv2Bxr1hAt4edtM_dr_2BY4p-bHQv5DTfMg-5ZRHSSDAhU5KBme__3SIX7PgDfrKGX_XERNY-KZtH1jXfeSzt5wwR5NagP1hADe5wk0t8AnuZD-KfLMhsPnR4d4T-y1OyuRSfjKSAlgsI-8qgTotG0ChRAJIigB5gVK2mQpW1BbGinKigzP8wx1hA8lDzZrhJ1R-kx1DsxMHK5b-Hf_dLZOH8nV98wJBmDLx2dtSFsfi9rjqAahmojz_aLPQPsBkLBzr6D919zEj3flhAH9gFMK7dzURjkpQSZOPkEsmUaEGtXIk_-SV4RqL7K2WyexbcOf9GOUybG93Nfcill2B7CILyY-mYDz9Avo6jxFhAKO0RcOQGZRiXWnHBITWRwEUS_JVFNbxM54qHt03updEPFzbtz-xSD0PsZsXpa7Z36-DtDbKy3kiafQWDYVSpu1hAgQXykMYhF95aEDQM9lxmrux6t0hS5ahATaFGg4wKLyJYgBnnZtlhIQ7hRaBc91KC7yG2QRZyqatGCDsMvGjngVhAax7R7OjqHM8XiC3JYWn-5rUP_k_3bbC93suSvnzMjJoRRLuzPqtek0xC4qwtEyVHClb_37lQV8zuI4c2EisWYVhAWQfF6NlqUIQBOPcnMfrN8xS-NtxVXXCxslVXkmO533xjeUgifpW89gV6k6ExZpT_3Rzx-iB5WLoEdU1X-AFGrVhAGyFbfrZMag2cACUpuBN8Du4tDmD92eW7dwOKdFXuHgtemQZgpF-vplmf7Kd85-k5hmAe-YktBzqb-zEj9GI_U1hApgaO1L71ClABT7pB2zfWnJJUl53sPtJ4xNQQMY6na9Hx-F6iDzIQKJ_qpAp2bzIjs0mW-1Riz9ipi7fFX_yGwVhAimwRTSdNAPZljXzTwL8TgJdZytbx9ZdbxdlIu47IFmsS3Zea7t52FBGvBBhYp8BEeUWF0cFRi7etR5DJvhsCSVhAKPbsLAwYepcULExHwSty3doFJSiSQ6vliGN02m3-OAyKdPhoOB64as4FLX-JyVh5wdOS2F_nQuPb4Ho-YNcKslhAO17uyhLGA5RJWNEAjLEu5oHfCFF5bUaF0HlvYr72R6ZuR-u8aByISkqFs9q9EcRjcfhNF9euuz5etb-aGj3crlhAo7hc8gnyGQPDhjTiO4wG-jvGB7_hQragbFkti4AWjyYBhs3aSSGrx4cYu59__G7-QRg9RXphur8WCjAFv4v43FhAwEoKKX84lXYd0TlBYvCSuBlIoAs10yybuFkzzlWj0qzIu4rHZH1rvdzCiP9jQCqm2AQuGJOS22xPI-k-MIZmzVhAAOiYy26ZSbGY_X8LGmqqSsBlhX9TZSOBOrTlh70hCJoEQT9rwx39gXL1wrKjbP-vAzr3hg94b-l2-GdtpwDo4VhATDqmD3l_GElsAVBW_CnRqxAba5kYm5o8mzBdqyHM1naRSb1JYxTKULce-zYuCJ6pTpy3i3-ndEHHPhYFwVz_qFhA3UywlGtgVvYiIc2vJYHB9Ix9SQsEY9gdLBkljoHkLVNhhT78yGI7cpjkeMoSkzkvKRExkqXAts0HMQRx1QnDE1hA3TDmj_HpUbKSpginix4Sbz9t-pB0ckf8wPqRZvqhn_NrHYPAz5TYl3F1Blj_A6JXTjJX_Fj5iSgisscVNBJ2tlhAH8bT8-jlp-YHDVHCnCRM53RYogQw4kwCu61xPK7gI1-2d01tZ4tpc6p7g51yCCeLm0t1jKeElovYB1uH0wNwBVhAd9o07yh-NaY3t4sj18d19OnpmLaSHkrT3eEfMWORt8I1xMRJGSLDOuTfdgOMS9XLupDdj5gRIBnLfkhh1adEolhAvAeHyjDLvc0KmTXiL1DnjSR56MiA1BYl7v1LXXKYbmRQCWvcaNEf6XwpZp_-nJcui7LJD8TWWhNZIMjcuI4isFhArJ3SMF32-qCdQIx7YA-JLhm6CItXphfjiRz6asjNCTOV4jps7od_mVbO_jtnZGyNbMLVXGVjOnOxd6Bs27q1b1hAUa6ghfF8i9FisdbE1A-U9YFBj_E6gdkTF_9KQXDFszWEJYvO8_Ckbk9N8TYwY3b0IM0asvD8XI7I4PaVc0ksOVhAO5IkR43K3KGq3CJWMtzr-OJ10JzCiAKNLZJO-N16aMM5UnQZZdqcr9woSxBzhQY2igitOaDdNi_YXbNCOzc9O1hA4GDd2h8p84alOWxcs0ukJHwYKgTJoED07uNJNgBm9_xs7FpkLpfE-6UphTuH5y3DxO5QzlykVEZ7vbYdGGbbFlhAoHCx7lj0NvS-8QuwmfSl8B2-uAXfa8Uk4KD7hz7nO6CsPflklnFw8x-COCfojmDix0hllTH7dxslImPPp_kqjlhAiNjTJMewARRfEPpZZjyGbL6oTrr54UxprSW9DBa18Thp3FyyHsNZD0tQgpTecAG1TX2E4F0mIwy243-5eFFlpFhAW6akDJSbj5dIYSFLX0AuesOdS0kb1V6dSOIhaUiP3ARq0BJcYqKZ0i123LwakqU_w1cAxMa2Sfhfnhiz7ELdnlhAWUT3nS-wgK753jWC1JGInKl7G8TjGeVQiZKuvDd9loL7F8cm2zhXGjkCKXYPrIRT2qtYy8-yUnPqZEITXIB_F1hAhh7EyUGzzwQrQDy9OPQXJaUpU7LdhXdicittDresZcUsTcyhzRnyjSbeAdhP7MGBCv36UnLb5Wy6GecY94uVXLAAWCBgMYjU9G1_ow0FMi28M3XBx9WFZJznz8L4t7LBgOopUAFYIA2ukOxwWJjUGTDbO1FSwC075gA8hjpc8EmGgrNlG0P1AlggmHrEwRVSxu9CETxvKoeFodW0d-KbE7isaO9kK_2ndEsDWCCu8Rm9-2oSn84cqnchN0eHqGjH_012q_204oGZNpnNGwRYIBNy6uisc7SaXocNXyKkoojqOtuJ9tmQoUdBaIOUZlazBVggS0ZHcuVmCMQe55reFIOcBV2JFUFsz4k7Sqvvfr6Ek34GWCAmGwen5i1DAt5OLx57e4BPtUfFgTQhyAkcB-g1EoQPtgdYIH19-t3VQ46e7MCxjWMXCQ5E5U0p6cBlU-scMe7-DafzCFggOUhkBlutCGHYg7LhszefmyDp_KA3auGCIzkVVuYwm18JWCAk1N2JpT4k_HGNt2vi8xpzL-spPkHZjH0wSEIKmpNOIgpYIApkpUQRRfoGC7njA6fQLatPsHJBVsMLJwBan0ZYHbqtC1ggNJDIDvzJ183NqNcJMsT0fx_Ps22qizg5hSVxexqsIqUMWCDNUDK3gidZCR9n3YPT_9xASAzlSyH8BQ9tWv3_DOKshg1YIDPsg-r9afJ2LpIhL-YyL1ZGAK_uwD1etyHxWnLStpZ-DlggCmrMkZK0fWKgELrDs4mi5ADQKdODDU5LusLbj3FZqpQPWCABBe80VblLeEIVHyLiduuGCegF7GJLN0_-w3uxoIKEU4QDBAYH" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] + } + }, "operator": "notStrictEqual", - "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)" + "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)" } }, { "type": "test", - "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", - "ctx": null, - "_testId": "urn:uuid:9fa1c767-3657-48f1-b69f-220ae9cdec7e", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 22671, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 60, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify with fewer array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22800,75 +28065,238 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:cd7c869a-772c-4bea-8d65-0a1dfe2ec450", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:6cebf3e2-92bc-4e62-a862-fb0d3fb63f98", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 22731, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify with fewer array revealed properties" }, - "duration": 60, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "If the \"proof.created\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // FIXME: Fix test to check if a cryptographic suite requires the\n // “proof.created” value\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", - "ctx": null, - "_testId": "urn:uuid:fd264289-75a8-41f0-9d2c-75fe8db9a621", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.created\" field is invalid, an error MUST be raised." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22791, + "_idleStart": 22777, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 325, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, - "actual": {}, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"name\":\"https://schema.org/name\",\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuanceDate\":\"2024-04-14T05:32:09Z\",\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sails\":[{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:32:09Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhAVSvaiVR6BVcf0mpkzRGDEGHlx4L9PtqtvKJudENbZdCiJwHcPh5kKowwUa_6UaSD1APY3ikwlfylvsCF2850tlgjgCQCQ4GZpZHPQ-iCVe3hdIX0dkUA3wNEl2WMLUDZTNt0ROOYIlhAmIdueDD7-oiLaPMQfYEg8IMmjRGcjOkXXboNAvE_pvt-feeZU8RHNgqv8Whf337W8QnWYdp5GLex7bZbgscQcFhAuYf22vLztlevnlGy83uwdCAfoABevWgYu7rqgIm9Qx_3RT9Rs68XJ47yp2Z3kpvzWXusST92ahQKH3ApZ4SjnlhAzxQzYJMxodHrPestxW2_KD0uThvHBkSY3acoDvJxZD4RfmbZCKselGC7opQmHJX6_zaodMsRgWOHEe-dYLgXBFhAnltl8VY2sVIjjs1_D1SxWyNnUJUecp5Dufh8bom92oHyNevd2s4IX6aKdj8q6xH1rxzBx9ZiCBNCikNYSR6M1FhArKajXmlahEf-MlcI5xjzpmpc5tbnYhgMKSwwxat6m3Gcy-YEFzftKkxY26ODMNN9p-LXFbu-lHYvJM4wfmmynFhAQ9Kh3cai8xqJ3vQryb6-VJTrSbceYWQ8k207YZ9mppRtOgSCF11YUiH6fKMiD5mhxC2b0ryRRq2i7MLnbLNEW1hAeAR8ABufJGgkr5ZWg5VbpCLA1F-BRcMxFUZxnGqQ-WJqr30gBqXM815H99jhfl-mv0B-X0yrqr4pN3GgEIIZd1hARIWNzoUGzWotggxxwhky2sPstmm6G7T1Dbcw3eDYsvf-0XvAJI2ykiSkHJ3AG9e5721WSdKWmXPJO_BFHML6ZFhAziz0PJi51bcvPpfN2uV4NnD7jQ_cAB3D3g_wVXI0wz1BTEJn0QXmQcMJRcjVdAXPQIDd7mFYngKtc-BOSD3z31hAbYnk6PzWzi00jWbGyrEE3_gvb-e7A-cppB2Ndr93Qc12ZnVb_bQgWNFYygAee3plYiCXytWTHYhczqy2LgtHx1hA3uieIFDS5jHRQ2lVS_I7H6womauGjkDM97bMQwPiMRRzzse7P9KVPAfdeKsP5MIITsggGJTDTlnCFnzdjBra9FhAkNItH7KUn6-FWgZgA1DMdujO6I0xf7NeXDb7eKWKe002X90i4CSQLfRSnWjCLXiDdjRLh0MibE-1-td5ekcWpVhApS8XMa5OsEABv2JWpEmecNPR_tjzepXxqQwoFGAsvExI2AHu89hzlmxoTOPcJ6S5AGYQJ2xpqjlF9DZU7lPIr1hARgHzkmAj7-jQLWC37HWP_yMWPYdpyWE93rv0N6vcpNxb1lcABfYPR4jR6r-1MHs8GRj2kdZ8nTb0dyw7XQRlMlhAV4FvvH7UkbWIObvTixT8hBb92Vid8HBlyuofWwABbb-435wepcYPRTHKb-DD7H4twQX3uE3ALmzvAVZGW79RrFhAB3ebY75Tj_HJS13Lrw_R0qC7AtO8Gl2qNnanv5okFUje567ac7lCFWF4I3P3L9vPHwrAd-C_hqIslbIp0GnTOFhAnrzlQ_aD5GThfwOXGth9pnVYwRWE2EHczhwHH8ZXEgZ9U0eM1FrISzZentqmgTihqzhh1Q3G2_BHEJjRBDZF8FhAyOhyid0gQeslBsx610Q-1T7WovyqUPIv1bePE4KpMR6bQaM09-LYYWMTo0UdLHS6vJb3YSJQKKYc-OmZ5gUySFhAWaPxEsQyNr3mPNo5AY0ycPeY1QWlhucann5ugvz3vso3Gkeoeq_y2mV4YN08VXPb-8-mgsf_HYlvR-C9cZgVCVhAk5H-yVM3BVDxNGbzjiohhzNqnbpCa_9-F21Xi18y2iHaR1T_kYd3H_WtJYt4SrSXoKcaNgkaOUpE_3WAsH2T9VhAa9B6F1M43oFRie-USU5l_imW_tS1Omeg2aIqEhM3KXGkWX79tdcBsf3ccAIFVif5mCIE_5tOmrzj9IP5jfLTdFhA-4Yig-28e5kIftLesJJ0HVTeCs5nY3u3UzkKSfy39UePnc2XqkNIN_wrJdE3ZoxMUfGceZk6Qm-sblUrEA5ySVhAHTSzYwHFhCssMa0s9cPXaWdKw3t8HOYLZZDjEv21bIpWuextTP_PFMuKDc4sL0YC-j2JHNlRB3MWAiEJ-p6OIVhAUHu9QBxdXZMZV9U34zbnk5nDqGsmwkg02NSZhHs6aRmZyw0P-Q224O3lz95USrh3UISFLBaBQM9c2bHZu3uHmFhAfneBUaZX9j9Zcg-nZFO3LAQoqPre3nLhfcavEJ0g8sFhgfD_FMvSBJpEak2SzZ9ktOOqYUL2tFnbAvqgmxEZblhASxQpCHhsbb17YSx0vFJiPYUOasnOASfYA9Wy6V_IAjflFJDn8xeb5qrdnhWc0Kfk_7yoVj_mz4OfpQ1RwKi_fVhALDwXUIXnuJ2XFB34rNwu7YVhnl_XfoPq8LVbhqSqsdlfwx-GzqEDscsbpB39J7kGJbCPMxIXvvlxsJvk7F-n91hAsKaQAqrcawspIp7OsHzR7wDuKIfkzFgGoqTFT2hTiBB0j8F8kbaM1hhA0y5DoGqZoV8zA1t5nVkLoMsJvOegUVhA6mKG90IWgt7pg7SkYnwW3-GbkT3rcIgoxt9HuYMzsJ9EDaaZzjDXipwou9ds0pMnpE5Sx7PL40fkBx8ME191-FhAE7rjQ2Jtfe-X0xLDGtqVK5av8Zzxumm0kZYMillgDxQRuX7mWuBL-wrEw9AZYLP6ZZfDCCZJ4XKRnVZ2p_IY-FhALAowsmR8TQIn-gdqvrb8TPepPmIPyhDEpExvhp71ji-Z9XP9vfzn7SHHQOAtr2Jo2DLzZEv2Yobyok5pADqZE1hAL457U-IwTPYL6WwuvHGs1CKicNJAjVXF2Ar9Rat7qGYxNAtPel2QEm12AnyIzM7HDnDF_xivbsxgpQFMK5Fd6FhACZvvWdbCgCj3Ef2MB9EdQ8Vc3mHiGJAqb_5lD5MHQxJDaF5-e6td1kvsv9yO8JFBuDmoArT--I7mSetWQC6mz1hA_hwmVh1BP0RsjxNHBtwRCN0N57e7K61-LDlDO46y7RHjB5Hn9dO-CeaHc9_uSPMaO-iNfn8bjFg2NTC31_H8hqsAWCC5FofNJ_pYQi0H6EN4oEfc7rc03Sy9Cq8euCd6HuECGwFYINv_HzVOEyMLOiulahFEqJk16jOmGCjG3FmJdmvx2UPMAlggDePGhPeuaxhxzn_v2utchK4vTU1KklRxKisZBELH5ycDWCAKtlmRPN3yInlFJy0Q4ryeb7iCFVV3DlmXYy6jBaltJwRYILSVXiTEJAOQeYHrRNEKqETqcVIj77ptnJqKdH8PTuAfBVgg2wRnwPxz5zjmYwPJZM0CmArA-gnz5q6KYj2p9WOTKPgGWCBq_TULYGy_nkKJmt5HZ-3RsAhwJLgQWf95Ymi1e2iAOQdYIE3pYpGyWJ1NN1K39BX3RJv-cojUTLQjmJEMLI5_8_DzCFggRecoQ-5dmhbWWvl7KxA7t5zWUCAdK8A0mBrzLu7T0gUJWCC8WL_LBsKwu-FCbdRF-ft9s1FkWSV8BRoG_9mrLrNygwpYICoApsI9FzgqlyoGT_u0VHgrciYVllMKDxd92XW-vidIhAABAwQ\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "name": "https://schema.org/name", + "ExampleAchievementCredential": "urn:example:ExampleAchievementCredential", + "WindsailingAchievement": { + "@id": "urn:example:WindsailingAchievement", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "sailNumber": "urn:example:sailNumber", + "sails": { + "@id": "urn:example:sails", + "@context": { + "@protected": true, + "sailName": "urn:example:sailName", + "size": "urn:example:size", + "year": "urn:example:year" + } + }, + "boards": { + "@id": "urn:example:boards", + "@context": { + "@protected": true, + "boardName": "urn:example:boardName", + "brand": "urn:example:brand", + "year": "urn:example:year" + } + } + } + }, + "achievements": { + "@id": "urn:example:achievements", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2" + ], + "type": [ + "VerifiableCredential", + "ExampleAchievementCredential" + ], + "issuanceDate": "2024-04-14T05:32:09Z", + "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "credentialSubject": { + "achievements": [ + { + "type": "WindsailingAchievement", + "sails": [ + { + "size": 6.1, + "sailName": "Eagle-FR", + "year": 2023 + }, + { + "size": 7, + "sailName": "Eagle-FR", + "year": 2020 + }, + { + "size": 7.8, + "sailName": "Eagle-FR", + "year": 2023 + } + ], + "boards": [ + { + "boardName": "CompFoil170", + "brand": "Tillo", + "year": 2022 + }, + { + "boardName": "Tillo Custom", + "brand": "Tillo", + "year": 2019 + } + ] + }, + { + "type": "WindsailingAchievement", + "sailNumber": "Mars101", + "sails": [ + { + "size": 5.9, + "sailName": "Chicken", + "year": 2022 + }, + { + "size": 4.9, + "sailName": "Vulture-FR", + "year": 2023 + } + ] + } + ] + }, + "proof": { + "type": "DataIntegrityProof", + "created": "2024-04-14T05:32:09Z", + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "cryptosuite": "ecdsa-sd-2023", + "proofPurpose": "assertionMethod", + "proofValue": "u2V0BhVhAVSvaiVR6BVcf0mpkzRGDEGHlx4L9PtqtvKJudENbZdCiJwHcPh5kKowwUa_6UaSD1APY3ikwlfylvsCF2850tlgjgCQCQ4GZpZHPQ-iCVe3hdIX0dkUA3wNEl2WMLUDZTNt0ROOYIlhAmIdueDD7-oiLaPMQfYEg8IMmjRGcjOkXXboNAvE_pvt-feeZU8RHNgqv8Whf337W8QnWYdp5GLex7bZbgscQcFhAuYf22vLztlevnlGy83uwdCAfoABevWgYu7rqgIm9Qx_3RT9Rs68XJ47yp2Z3kpvzWXusST92ahQKH3ApZ4SjnlhAzxQzYJMxodHrPestxW2_KD0uThvHBkSY3acoDvJxZD4RfmbZCKselGC7opQmHJX6_zaodMsRgWOHEe-dYLgXBFhAnltl8VY2sVIjjs1_D1SxWyNnUJUecp5Dufh8bom92oHyNevd2s4IX6aKdj8q6xH1rxzBx9ZiCBNCikNYSR6M1FhArKajXmlahEf-MlcI5xjzpmpc5tbnYhgMKSwwxat6m3Gcy-YEFzftKkxY26ODMNN9p-LXFbu-lHYvJM4wfmmynFhAQ9Kh3cai8xqJ3vQryb6-VJTrSbceYWQ8k207YZ9mppRtOgSCF11YUiH6fKMiD5mhxC2b0ryRRq2i7MLnbLNEW1hAeAR8ABufJGgkr5ZWg5VbpCLA1F-BRcMxFUZxnGqQ-WJqr30gBqXM815H99jhfl-mv0B-X0yrqr4pN3GgEIIZd1hARIWNzoUGzWotggxxwhky2sPstmm6G7T1Dbcw3eDYsvf-0XvAJI2ykiSkHJ3AG9e5721WSdKWmXPJO_BFHML6ZFhAziz0PJi51bcvPpfN2uV4NnD7jQ_cAB3D3g_wVXI0wz1BTEJn0QXmQcMJRcjVdAXPQIDd7mFYngKtc-BOSD3z31hAbYnk6PzWzi00jWbGyrEE3_gvb-e7A-cppB2Ndr93Qc12ZnVb_bQgWNFYygAee3plYiCXytWTHYhczqy2LgtHx1hA3uieIFDS5jHRQ2lVS_I7H6womauGjkDM97bMQwPiMRRzzse7P9KVPAfdeKsP5MIITsggGJTDTlnCFnzdjBra9FhAkNItH7KUn6-FWgZgA1DMdujO6I0xf7NeXDb7eKWKe002X90i4CSQLfRSnWjCLXiDdjRLh0MibE-1-td5ekcWpVhApS8XMa5OsEABv2JWpEmecNPR_tjzepXxqQwoFGAsvExI2AHu89hzlmxoTOPcJ6S5AGYQJ2xpqjlF9DZU7lPIr1hARgHzkmAj7-jQLWC37HWP_yMWPYdpyWE93rv0N6vcpNxb1lcABfYPR4jR6r-1MHs8GRj2kdZ8nTb0dyw7XQRlMlhAV4FvvH7UkbWIObvTixT8hBb92Vid8HBlyuofWwABbb-435wepcYPRTHKb-DD7H4twQX3uE3ALmzvAVZGW79RrFhAB3ebY75Tj_HJS13Lrw_R0qC7AtO8Gl2qNnanv5okFUje567ac7lCFWF4I3P3L9vPHwrAd-C_hqIslbIp0GnTOFhAnrzlQ_aD5GThfwOXGth9pnVYwRWE2EHczhwHH8ZXEgZ9U0eM1FrISzZentqmgTihqzhh1Q3G2_BHEJjRBDZF8FhAyOhyid0gQeslBsx610Q-1T7WovyqUPIv1bePE4KpMR6bQaM09-LYYWMTo0UdLHS6vJb3YSJQKKYc-OmZ5gUySFhAWaPxEsQyNr3mPNo5AY0ycPeY1QWlhucann5ugvz3vso3Gkeoeq_y2mV4YN08VXPb-8-mgsf_HYlvR-C9cZgVCVhAk5H-yVM3BVDxNGbzjiohhzNqnbpCa_9-F21Xi18y2iHaR1T_kYd3H_WtJYt4SrSXoKcaNgkaOUpE_3WAsH2T9VhAa9B6F1M43oFRie-USU5l_imW_tS1Omeg2aIqEhM3KXGkWX79tdcBsf3ccAIFVif5mCIE_5tOmrzj9IP5jfLTdFhA-4Yig-28e5kIftLesJJ0HVTeCs5nY3u3UzkKSfy39UePnc2XqkNIN_wrJdE3ZoxMUfGceZk6Qm-sblUrEA5ySVhAHTSzYwHFhCssMa0s9cPXaWdKw3t8HOYLZZDjEv21bIpWuextTP_PFMuKDc4sL0YC-j2JHNlRB3MWAiEJ-p6OIVhAUHu9QBxdXZMZV9U34zbnk5nDqGsmwkg02NSZhHs6aRmZyw0P-Q224O3lz95USrh3UISFLBaBQM9c2bHZu3uHmFhAfneBUaZX9j9Zcg-nZFO3LAQoqPre3nLhfcavEJ0g8sFhgfD_FMvSBJpEak2SzZ9ktOOqYUL2tFnbAvqgmxEZblhASxQpCHhsbb17YSx0vFJiPYUOasnOASfYA9Wy6V_IAjflFJDn8xeb5qrdnhWc0Kfk_7yoVj_mz4OfpQ1RwKi_fVhALDwXUIXnuJ2XFB34rNwu7YVhnl_XfoPq8LVbhqSqsdlfwx-GzqEDscsbpB39J7kGJbCPMxIXvvlxsJvk7F-n91hAsKaQAqrcawspIp7OsHzR7wDuKIfkzFgGoqTFT2hTiBB0j8F8kbaM1hhA0y5DoGqZoV8zA1t5nVkLoMsJvOegUVhA6mKG90IWgt7pg7SkYnwW3-GbkT3rcIgoxt9HuYMzsJ9EDaaZzjDXipwou9ds0pMnpE5Sx7PL40fkBx8ME191-FhAE7rjQ2Jtfe-X0xLDGtqVK5av8Zzxumm0kZYMillgDxQRuX7mWuBL-wrEw9AZYLP6ZZfDCCZJ4XKRnVZ2p_IY-FhALAowsmR8TQIn-gdqvrb8TPepPmIPyhDEpExvhp71ji-Z9XP9vfzn7SHHQOAtr2Jo2DLzZEv2Yobyok5pADqZE1hAL457U-IwTPYL6WwuvHGs1CKicNJAjVXF2Ar9Rat7qGYxNAtPel2QEm12AnyIzM7HDnDF_xivbsxgpQFMK5Fd6FhACZvvWdbCgCj3Ef2MB9EdQ8Vc3mHiGJAqb_5lD5MHQxJDaF5-e6td1kvsv9yO8JFBuDmoArT--I7mSetWQC6mz1hA_hwmVh1BP0RsjxNHBtwRCN0N57e7K61-LDlDO46y7RHjB5Hn9dO-CeaHc9_uSPMaO-iNfn8bjFg2NTC31_H8hqsAWCC5FofNJ_pYQi0H6EN4oEfc7rc03Sy9Cq8euCd6HuECGwFYINv_HzVOEyMLOiulahFEqJk16jOmGCjG3FmJdmvx2UPMAlggDePGhPeuaxhxzn_v2utchK4vTU1KklRxKisZBELH5ycDWCAKtlmRPN3yInlFJy0Q4ryeb7iCFVV3DlmXYy6jBaltJwRYILSVXiTEJAOQeYHrRNEKqETqcVIj77ptnJqKdH8PTuAfBVgg2wRnwPxz5zjmYwPJZM0CmArA-gnz5q6KYj2p9WOTKPgGWCBq_TULYGy_nkKJmt5HZ-3RsAhwJLgQWf95Ymi1e2iAOQdYIE3pYpGyWJ1NN1K39BX3RJv-cojUTLQjmJEMLI5_8_DzCFggRecoQ-5dmhbWWvl7KxA7t5zWUCAdK8A0mBrzLu7T0gUJWCC8WL_LBsKwu-FCbdRF-ft9s1FkWSV8BRoG_9mrLrNygwpYICoApsI9FzgqlyoGT_u0VHgrciYVllMKDxd92XW-vidIhAABAwQ" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] + } + }, "operator": "notStrictEqual", - "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)" + "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)" } }, { "type": "test", - "title": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n\n // Remove the multibase header to cause validation error\n credential.proof.proofValue = credential.proof.proofValue.slice(1);\n\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify w/o first element revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22877,68 +28305,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:a56bd0f5-4ee2-40fe-a93b-1b119d31f9be", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:c155b96d-9605-4676-b996-ef5574ea88b9", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 22845, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify w/o first element revealed properties" }, - "duration": 56, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", - "ctx": null, - "_testId": "urn:uuid:7685b7c9-319a-4f47-a358-a4c1ccb43861", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22902, + "_idleStart": 23102, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 3193, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22947,122 +28340,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:80508f7e-a2b7-46e5-b28e-0d20241da893", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:41e67638-a476-43c9-bcc3-d630e5107c25", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 22958, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 52, - "state": "passed", - "speed": "medium" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ - { - "title": "\"before all\" hook in \"Digital Bazaar: P-256, P-384\"", - "body": "async function() {\n credentials = await generateTestData();\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "wzhL8BbUEz8_6cV0BvHHp", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 22172, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com: P-256", + "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, - "duration": 1, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "lYIBGY70cnXYWyPAPlu8o", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "_testId": "urn:uuid:1d8bd958-f154-45c3-a41b-1f9916ea82d4" - }, - { - "title": "Grotto Networking: P-256", - "ctx": null, - "suites": [], - "tests": [ - { - "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", - "ctx": null, - "_testId": "urn:uuid:995bf422-06ed-472d-9237-c217fef72231", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23010, + "_idleStart": 26295, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 185, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23071,68 +28375,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:e970b342-be8c-4293-951f-ae83553ac6a1", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:52a138c3-b434-4b2c-a0b3-7101c59c43d4", "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 23068, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." }, - "duration": 56, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", - "ctx": null, - "_testId": "urn:uuid:36160560-2665-48f5-a74c-7b47471c6796", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23125, + "_idleStart": 26480, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 102, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "MUST fail to verify a base proof.", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23141,68 +28410,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:14a6cc47-e6d5-428d-b418-f07c231fb8b4", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:bf37a99a-cc64-4dbd-9edb-d6cf6a98feec", "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 23182, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com: P-256", + "rowId": "MUST fail to verify a base proof." }, - "duration": 57, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", - "ctx": null, - "_testId": "urn:uuid:6df3f78e-4ce8-437a-9216-16fd4839464e", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23240, + "_idleStart": 26582, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 60, + "duration": 45, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "MUST fail to verify a modified disclosed credential.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23211,33 +28445,37 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:b29f64a7-0eee-4645-9044-93d23ea0f224", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:0527c971-9f7b-4843-ae21-f0644950ebaf", "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23300, + "_idleStart": 26627, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 249, "state": "passed", - "speed": "medium" - }, + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "\"before each\" hook in \"apicatalog.com: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23246,33 +28484,21 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "type": "hook", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:b704c249-24b9-40db-ad6d-c868d1093826", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "originalTitle": "\"before each\" hook", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 23357, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 57, - "state": "passed", - "speed": "medium" - }, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [ { - "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "\"before all\" hook in \"apicatalog.com: P-256\"", + "body": "async function() {\n testVectors = await sdVerifySetup({\n credentials,\n keyTypes,\n suite\n });\n\n // Define the test vector mapping for convienence.\n defineTestVectorMapping(vcVersion);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23281,33 +28507,47 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "type": "hook", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:af389439-81a3-40c4-a83c-2a3bfcc0dc45", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23414, + "_idleStart": 20263, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, - "state": "passed", - "speed": "medium" - }, + "duration": 360, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "WwOnncSycLwyK69kzvExm", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "_testId": "urn:uuid:bdc9035a-67a7-419a-bdba-46aaf4830fa4" + }, + { + "title": "Digital Bazaar: P-256", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", + "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23316,33 +28556,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:dda548e2-7e04-4743-8ae4-75ffec188a8a", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:33436b8a-1120-4db4-8e15-865e14f6515e", "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23471, + "_idleStart": 27143, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 97, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with nested disclosed properties.", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23351,33 +28591,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:79143c0c-74c4-4281-9a24-050bedaa2e35", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:3de4e59b-c135-40cf-b663-951d7c9d2ae2", "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23528, + "_idleStart": 27239, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 60, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with disclosed properties and bnodes.", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23386,33 +28626,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:01dd7bb7-6b0f-49dd-b703-db70a1a842d6", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:37911e7a-1a44-4533-a64f-4b7be0d1fc09", "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23586, + "_idleStart": 27299, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 50, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.created\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // FIXME: Fix test to check if a cryptographic suite requires the\n // “proof.created” value\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify with full array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23421,33 +28661,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:39911ec7-88a3-4438-88b5-bb7b4c80229a", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:c7e827ed-4b79-47d6-aa9c-9105daae71a7", "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.created\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify with full array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23643, + "_idleStart": 27349, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 75, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n\n // Remove the multibase header to cause validation error\n credential.proof.proofValue = credential.proof.proofValue.slice(1);\n\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify with fewer array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23456,33 +28696,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:2cecb340-69aa-4921-a740-e401d43bd130", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:38a1b8e4-3664-4c97-b394-a9e6ace69dac", "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify with fewer array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23700, + "_idleStart": 27424, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 80, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "MUST verify w/o first element revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23491,33 +28731,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:39d21416-a5ba-451b-b2c3-1f4e556bbf06", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:8ff9b76e-5a71-4884-94d6-1cac9ce9c0f5", "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify w/o first element revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23756, + "_idleStart": 27505, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 55, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23526,38 +28766,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:b1bd4c9c-3bdc-4eff-b134-acd7f061401e", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:ab0b4778-50cd-4452-9ecc-dcf6731d340f", "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23813, + "_idleStart": 27560, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 52, "state": "passed", "speed": "medium" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + }, { - "title": "\"before all\" hook in \"Grotto Networking: P-256\"", - "body": "async function() {\n credentials = await generateTestData();\n }", + "type": "test", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23566,72 +28801,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "originalTitle": "\"before all\" hook", + "_testId": "urn:uuid:cc881fc1-0a7a-4ecf-b49e-7157c89f78e0", + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23010, + "_idleStart": 27611, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "lYIBGY70cnXYWyPAPlu8o", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "_testId": "urn:uuid:8517100e-86e4-4e75-a3e8-e75fc4d6d0f3" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "Lj91xXIjIjtnwr_GDEsZw", - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "matrix": true, - "report": true, - "rowLabel": "Test Name", - "columnLabel": "Verifier", - "_testId": "urn:uuid:1af4687c-d2bf-4478-ab61-2b1099e8f4f9", - "columns": [ - "apicatalog.com: P-256, P-384", - "Digital Bazaar: P-256, P-384", - "Grotto Networking: P-256" - ], - "rows": [ - { - "id": "If the \"proof\" field is missing, an error MUST be raised.", - "cells": [ + "duration": 39, + "state": "passed", + "speed": "medium" + }, { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "MUST fail to verify a base proof.", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23640,33 +28836,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:452c86bb-317a-4c35-962b-98ffe02ac4bc", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:19d6dc97-d2e0-4a3e-a291-e406e6c52d27", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST fail to verify a base proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21532, + "_idleStart": 27651, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 52, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "MUST fail to verify a modified disclosed credential.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23675,33 +28871,37 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:527ce08f-1d7e-4b18-8178-771970a7f8ae", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:7c7e7781-0a05-421b-a57e-1e0de339c8c1", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22173, + "_idleStart": 27703, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 52, + "duration": 54, "state": "passed", "speed": "medium" - }, + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "\"before each\" hook in \"Digital Bazaar: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23710,38 +28910,70 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "type": "hook", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:995bf422-06ed-472d-9237-c217fef72231", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"Digital Bazaar: P-256\"", + "body": "async function() {\n testVectors = await sdVerifySetup({\n credentials,\n keyTypes,\n suite\n });\n\n // Define the test vector mapping for convienence.\n defineTestVectorMapping(vcVersion);\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "a7kok2TZnkCQo5dhpDnrm", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23010, + "_idleStart": 26877, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, - "state": "passed", - "speed": "medium" + "duration": 262, + "_error": null } - ] + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "WwOnncSycLwyK69kzvExm", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "_testId": "urn:uuid:548b815e-123e-4589-a0b6-6bbd5c51888f" }, { - "id": "If the \"proof\" field is invalid, an error MUST be raised.", - "cells": [ + "title": "Grotto Networking: P-256", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23750,33 +28982,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:a985d180-e5c5-4e2b-b36e-679abc15c457", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:1c08c48a-161b-44f3-ab5d-b1d3f85fb98c", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21570, + "_idleStart": 28000, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 294, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with nested disclosed properties.", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23785,33 +29017,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:fc9e0c50-7d03-48c0-8c3d-08beb27eed44", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:d772e3a9-fe16-4658-bb39-62ad0591f10d", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22225, + "_idleStart": 28294, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 158, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with disclosed properties and bnodes.", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23820,38 +29052,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:e970b342-be8c-4293-951f-ae83553ac6a1", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:bffb8430-24dd-4c84-94f9-569dfcead023", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23068, + "_idleStart": 28453, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 150, "state": "passed", - "speed": "medium" - } - ] - }, - { - "id": "If the \"proof.type\" field is missing, an error MUST be raised.", - "cells": [ + "speed": "slow" + }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify with full array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23860,33 +29087,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:38f50c5a-d897-456b-86f0-6de4c429d43c", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5d6c01b3-824e-4485-82ea-417817527bf9", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "MUST verify with full array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21606, + "_idleStart": 28603, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 639, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify with fewer array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23895,33 +29122,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:613ee106-421b-48d1-8656-5fdf83e6e176", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:9a9d5b55-fe67-4d04-9c3a-f60f6c073d5b", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "MUST verify with fewer array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22278, + "_idleStart": 29242, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 60, + "duration": 441, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify w/o first element revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23930,38 +29157,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:36160560-2665-48f5-a74c-7b47471c6796", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:41fada9b-9016-4782-9702-29f8edfab315", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "rowId": "MUST verify w/o first element revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23125, + "_idleStart": 29683, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 350, "state": "passed", - "speed": "medium" - } - ] - }, - { - "id": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", - "cells": [ + "speed": "slow" + }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23970,33 +29192,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:3f6d6804-caab-4f75-9b99-cb3e727b3602", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:4797caef-f05d-4fa4-a37f-3cb298c8691b", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21650, + "_idleStart": 30033, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, + "duration": 70, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24005,33 +29227,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:d87ca4ef-71d9-48de-a1fa-c5c8c3d982d4", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:aac35d04-712e-4046-a000-55f0d0bd38ad", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22338, + "_idleStart": 30103, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 69, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "MUST fail to verify a base proof.", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24040,38 +29262,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:14a6cc47-e6d5-428d-b418-f07c231fb8b4", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:89d51482-1031-426d-9b71-1bdc8c0553e9", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.type\" field is not the string \"DataIntegrityProof\", an error MUST be raised." + "rowId": "MUST fail to verify a base proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23182, + "_idleStart": 30172, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 68, "state": "passed", "speed": "medium" - } - ] - }, - { - "id": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "cells": [ + }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "MUST fail to verify a modified disclosed credential.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24080,33 +29297,37 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:15b1a52b-912f-4640-abd5-1bc2fb9f82b6", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:1235b877-d363-427a-a6f8-55864b17a2c6", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "columnId": "Grotto Networking: P-256", + "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21696, + "_idleStart": 30241, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 92, "state": "passed", - "speed": "fast" - }, + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "\"before each\" hook in \"Grotto Networking: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24115,33 +29336,21 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "type": "hook", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:fc5b42e4-86a1-4595-b94d-fe3bd54a2da8", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "originalTitle": "\"before each\" hook", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 22392, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 61, - "state": "passed", - "speed": "medium" - }, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [ { - "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "\"before all\" hook in \"Grotto Networking: P-256\"", + "body": "async function() {\n testVectors = await sdVerifySetup({\n credentials,\n keyTypes,\n suite\n });\n\n // Define the test vector mapping for convienence.\n defineTestVectorMapping(vcVersion);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24150,38 +29359,72 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "type": "hook", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:6df3f78e-4ce8-437a-9216-16fd4839464e", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23240, + "_idleStart": 27758, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 60, - "state": "passed", - "speed": "medium" + "duration": 243, + "_error": null } - ] - }, + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "WwOnncSycLwyK69kzvExm", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "_testId": "urn:uuid:6a3c8ea5-d773-42c4-a5dd-d625facc90c1" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "GzHifvD62JwDWet-oBmTR", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "matrix": true, + "report": true, + "rowLabel": "Test Name", + "columnLabel": "Verifier", + "_testId": "urn:uuid:6a49a2c6-1369-4352-931d-2fd5c7ab6902", + "columns": [ + "apicatalog.com: P-256", + "Digital Bazaar: P-256", + "Grotto Networking: P-256" + ], + "rows": [ { - "id": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "id": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", "cells": [ { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24190,33 +29433,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:622ecfa5-50cf-457b-b9b2-b69c02942737", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:a11c4993-8008-455f-9a11-7a40e3119893", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21733, + "_idleStart": 20622, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 347, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24225,33 +29468,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:80498798-d4b5-4f18-86bd-458308afc9a4", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:33436b8a-1120-4db4-8e15-865e14f6515e", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22453, + "_idleStart": 27143, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, + "duration": 97, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24260,38 +29503,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:b29f64a7-0eee-4645-9044-93d23ea0f224", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:1c08c48a-161b-44f3-ab5d-b1d3f85fb98c", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23300, + "_idleStart": 28000, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 294, "state": "passed", - "speed": "medium" + "speed": "slow" } ] }, { - "id": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "id": "MUST verify a valid VC with nested disclosed properties.", "cells": [ { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with nested disclosed properties.", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24300,33 +29543,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:683cd135-9251-42ae-86f9-21e6b10893ff", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:2b1ca299-36ea-4586-ba4c-27b369cda71d", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21776, + "_idleStart": 20969, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 709, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with nested disclosed properties.", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24335,33 +29578,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:561a323e-1f02-47fa-b337-47f87de3936f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:3de4e59b-c135-40cf-b663-951d7c9d2ae2", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22512, + "_idleStart": 27239, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, + "duration": 60, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with nested disclosed properties.", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24370,38 +29613,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:b704c249-24b9-40db-ad6d-c868d1093826", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:d772e3a9-fe16-4658-bb39-62ad0591f10d", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23357, + "_idleStart": 28294, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 158, "state": "passed", - "speed": "medium" + "speed": "slow" } ] }, { - "id": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "id": "MUST verify a valid VC with disclosed properties and bnodes.", "cells": [ { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with disclosed properties and bnodes.", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24410,33 +29653,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:cb4ef8f6-6671-4391-b4a2-ef886cd89e47", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:72e82662-b1c9-4796-8099-9af48fa9f916", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21812, + "_idleStart": 21679, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 690, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with disclosed properties and bnodes.", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24445,33 +29688,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:a5e6b2c0-70f8-4144-a8f0-c8cc4b1652bf", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:37911e7a-1a44-4533-a64f-4b7be0d1fc09", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22564, + "_idleStart": 27299, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 50, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with disclosed properties and bnodes.", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24480,73 +29723,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:af389439-81a3-40c4-a83c-2a3bfcc0dc45", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:bffb8430-24dd-4c84-94f9-569dfcead023", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23414, + "_idleStart": 28453, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 150, "state": "passed", - "speed": "medium" + "speed": "slow" } ] }, { - "id": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", + "id": "MUST verify with full array revealed properties", "cells": [ { "type": "test", - "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", - "ctx": null, - "_testId": "urn:uuid:7db4b961-a457-43ef-8560-e2e9ff43e3b7", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 21849, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 38, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", + "title": "MUST verify with full array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24555,40 +29763,301 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:22512e35-9f1e-4db1-a3b1-672c4889d452", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:4d10e5ca-38ce-4094-9a53-d66ec3f9ffe4", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify with full array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22618, + "_idleStart": 22369, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 407, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, - "actual": {}, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"name\":\"https://schema.org/name\",\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuanceDate\":\"2024-04-14T05:32:08Z\",\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Earth101\",\"sails\":[{\"size\":5.5,\"sailName\":\"Osprey\",\"year\":2023},{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023},{\"size\":6.8,\"sailName\":\"Vulture-FR\",\"year\":2020},{\"size\":7.7,\"sailName\":\"Vulture-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"Oak620\",\"brand\":\"Excite\",\"year\":2020},{\"boardName\":\"Excite Custom\",\"brand\":\"Excite\",\"year\":2018}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:32:08Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhAAgX6OiL2LPDs4gY25t6_9-5FgEnvkMQDY16oQVBWq3QIH8f10Yc1WFStuCIHVm8UpipcXzXt1aQ27fO0R0ZgPlgjgCQCCeEn_R7OzbmPqm2ayttFG4El1Z8HdK1aBEQr08YMxY-YN1hAxHDRKHE2RtUl8UMgciM4f7qMiTQ6TLdrd4k8Bl1dgXJQcJywUCUEnkAFougrkZcUYDPBeP0z7pGu-SeOAAyix1hAYlbCO5BwzRtpRqt-N0awYZm3zkYZxDbfmlvKkeHEBbUVwp9vILra4zTFmtRa2VJzATpz__Z4CFlMX8V_Ec3REVhAeZDDWwPJ5ISZKx6Fz_0E-oA-G8elrAWkeeZV55ZWJjdX9RKj4_s2YmCDW4h5LXh2n7go7eiKqwudEx1p41CdnVhAA5TBn8mYLF_hNmGYFnGBpOLA3WlhjoC2Mg-0rfJlSUVc4h_lYUFbhcv5AyVsyjW7PRWiewgJAT-49LES7ENxr1hA8S06jH5ZOFODUTq9s-rdc0703PaUvYMJ39LUUCgHe691D5MLdjHPFP3iRaIDlmCm6-V0WnZhcJ77cbK00-idk1hAzjCgytep_s2qDg3KYc0RRUhZaXUq7jAN4x_Y4bpgQVpwClOsdxrZdGFy4TNWY-QcuI5B3z7ZPoXGPa60FWGDbFhAyeysdgdTS1_pKovMgBg4_m_fapzx5fzmav1gP11GRUerm7BIZMeu_oiDrGzpHepyo82fgnOxKI3vZlmW_KYqulhA8yMqjtjq8sEntnxEefcEfdKeGmKC4yCSyPbecWAlV3f0mQA1nUl9YKHRQ1Wq3FmpINNSmQzkwPhz68IH7lKN2VhAJaX3W1waESD6XaOiV_m5L0oD5bI1ecKPraw9oTswFeu64suztm247-BtEvHleQOFqTK_VrSk-Kfjxf9aSxFNK1hAFAu9GH0zAITSHOYlvaFYtjYxO7itD20nMkW6BmJn2kRE7ylspBhHAQRY8DBdTn33UvdGOrY99bzPOY42JzRK-FhA6wHggUNqdfhm4ly963xyOQMJcH11lhIQKiZHKWjBnvypy6nBfBwbznAeQUdHmZtlXX0amMm-EYKigsN0hkWEA1hAUc_EhD4Hifa62tGlDXKNOLGma4JUqlbG3cPJ97IWVOSfrJCzyV54n9_xbGdIOeuAhucZPsctnO562hCagXLollhA6d5qS9rLp2-s1VTpyGp4_LylmTqKcKwVAOdVPtLjS8CodoENydDmmmmizzR7aMSzkqP3VBbqAVXVTxJq3TGoLlhAMiDDSs7vRC9dclKkN4f9PfkCcxPrHjvHEpRyHkemNGtkNc1c2a5adADu5d47O9_S22qA0yPaSA-wFUrS87WNf1hAY571X9tmAYuTm2P5hLJ1cucjQQkjOZR-uGGxFT8W4Ri7fZU0yGwTUhQhFBgV4dvHCByfuvPZJbSgzOLktrTrn1hARj_bBcnCu8IqPUUfZ3Xi3xNoHlJCJ_Hru498FFjb2jsF5AbnqeBH2RZLSydLXKJ-bACFTsZl0VJTj7QWhbYJr1hA0fVDWUS0eSqyxODmZv-nm06WgQmfjtkc3nz-Dvt1oVFkDrvNlJGpsQrJZQ2qj3vXd7n469edld3DRZ7qFVd_GVhA27-GQb78biNJ265RJ5PQtTJSQ13qp7swdv7qGdpU0T26ESrQigO_3oOm-UO7VgitvtRHd2qxwxQ1riyh19GPBVhAVN1ljRNT4MHCDGArEOoSj_L3r7IDI5vfQKgEGhGqI_JAMhFCFrys59c5r5MqUU8klNKl-v_c6UUCKeBCUJXfp1hAFe2gn_N3OboyQae0u0JhhzDOOOwWeFma2jOP3zG42vef1XGIn1b2G_3_QhYBvYOkbsWOLRdU3NO940XT-yDeSFhAzgv0XPKMRZ-Q_sk3a7FsPH6IKG00jKrIP56BVwMpo9To1S-d_CielO59qlNRYYRbcDjXfXASkWdFgLBoKkwd2VhAJ_N9LxO0WVVlNbMVAOR8W1w24PZL06mHu11LFAYXf2Dxmi4gmQwKpxYDtQlFKhxRlJ218HYq3meEAVUrMndFGFhAyOdbwmKKKZZBqDChxvaTOT_7oL2utb4GiDyHHy57Ic7UrimG4bvVgJQP5M4_uPIhPhRx-uv8DY9Z-ZgpLxUG-FhASNG_eyljL3fZn0-ya8V28e6uVU4Adm0H-LVjVkUEvuuttu5giLhvGzYkLRgWaqDZKSTECXnMt-poM6Qlv2Bxr1hAt4edtM_dr_2BY4p-bHQv5DTfMg-5ZRHSSDAhU5KBme__3SIX7PgDfrKGX_XERNY-KZtH1jXfeSzt5wwR5NagP1hADe5wk0t8AnuZD-KfLMhsPnR4d4T-y1OyuRSfjKSAlgsI-8qgTotG0ChRAJIigB5gVK2mQpW1BbGinKigzP8wx1hA8lDzZrhJ1R-kx1DsxMHK5b-Hf_dLZOH8nV98wJBmDLx2dtSFsfi9rjqAahmojz_aLPQPsBkLBzr6D919zEj3flhAH9gFMK7dzURjkpQSZOPkEsmUaEGtXIk_-SV4RqL7K2WyexbcOf9GOUybG93Nfcill2B7CILyY-mYDz9Avo6jxFhAKO0RcOQGZRiXWnHBITWRwEUS_JVFNbxM54qHt03updEPFzbtz-xSD0PsZsXpa7Z36-DtDbKy3kiafQWDYVSpu1hAgQXykMYhF95aEDQM9lxmrux6t0hS5ahATaFGg4wKLyJYgBnnZtlhIQ7hRaBc91KC7yG2QRZyqatGCDsMvGjngVhAax7R7OjqHM8XiC3JYWn-5rUP_k_3bbC93suSvnzMjJoRRLuzPqtek0xC4qwtEyVHClb_37lQV8zuI4c2EisWYVhAWQfF6NlqUIQBOPcnMfrN8xS-NtxVXXCxslVXkmO533xjeUgifpW89gV6k6ExZpT_3Rzx-iB5WLoEdU1X-AFGrVhAGyFbfrZMag2cACUpuBN8Du4tDmD92eW7dwOKdFXuHgtemQZgpF-vplmf7Kd85-k5hmAe-YktBzqb-zEj9GI_U1hApgaO1L71ClABT7pB2zfWnJJUl53sPtJ4xNQQMY6na9Hx-F6iDzIQKJ_qpAp2bzIjs0mW-1Riz9ipi7fFX_yGwVhAimwRTSdNAPZljXzTwL8TgJdZytbx9ZdbxdlIu47IFmsS3Zea7t52FBGvBBhYp8BEeUWF0cFRi7etR5DJvhsCSVhAKPbsLAwYepcULExHwSty3doFJSiSQ6vliGN02m3-OAyKdPhoOB64as4FLX-JyVh5wdOS2F_nQuPb4Ho-YNcKslhAO17uyhLGA5RJWNEAjLEu5oHfCFF5bUaF0HlvYr72R6ZuR-u8aByISkqFs9q9EcRjcfhNF9euuz5etb-aGj3crlhAo7hc8gnyGQPDhjTiO4wG-jvGB7_hQragbFkti4AWjyYBhs3aSSGrx4cYu59__G7-QRg9RXphur8WCjAFv4v43FhAwEoKKX84lXYd0TlBYvCSuBlIoAs10yybuFkzzlWj0qzIu4rHZH1rvdzCiP9jQCqm2AQuGJOS22xPI-k-MIZmzVhAAOiYy26ZSbGY_X8LGmqqSsBlhX9TZSOBOrTlh70hCJoEQT9rwx39gXL1wrKjbP-vAzr3hg94b-l2-GdtpwDo4VhATDqmD3l_GElsAVBW_CnRqxAba5kYm5o8mzBdqyHM1naRSb1JYxTKULce-zYuCJ6pTpy3i3-ndEHHPhYFwVz_qFhA3UywlGtgVvYiIc2vJYHB9Ix9SQsEY9gdLBkljoHkLVNhhT78yGI7cpjkeMoSkzkvKRExkqXAts0HMQRx1QnDE1hA3TDmj_HpUbKSpginix4Sbz9t-pB0ckf8wPqRZvqhn_NrHYPAz5TYl3F1Blj_A6JXTjJX_Fj5iSgisscVNBJ2tlhAH8bT8-jlp-YHDVHCnCRM53RYogQw4kwCu61xPK7gI1-2d01tZ4tpc6p7g51yCCeLm0t1jKeElovYB1uH0wNwBVhAd9o07yh-NaY3t4sj18d19OnpmLaSHkrT3eEfMWORt8I1xMRJGSLDOuTfdgOMS9XLupDdj5gRIBnLfkhh1adEolhAvAeHyjDLvc0KmTXiL1DnjSR56MiA1BYl7v1LXXKYbmRQCWvcaNEf6XwpZp_-nJcui7LJD8TWWhNZIMjcuI4isFhArJ3SMF32-qCdQIx7YA-JLhm6CItXphfjiRz6asjNCTOV4jps7od_mVbO_jtnZGyNbMLVXGVjOnOxd6Bs27q1b1hAUa6ghfF8i9FisdbE1A-U9YFBj_E6gdkTF_9KQXDFszWEJYvO8_Ckbk9N8TYwY3b0IM0asvD8XI7I4PaVc0ksOVhAO5IkR43K3KGq3CJWMtzr-OJ10JzCiAKNLZJO-N16aMM5UnQZZdqcr9woSxBzhQY2igitOaDdNi_YXbNCOzc9O1hA4GDd2h8p84alOWxcs0ukJHwYKgTJoED07uNJNgBm9_xs7FpkLpfE-6UphTuH5y3DxO5QzlykVEZ7vbYdGGbbFlhAoHCx7lj0NvS-8QuwmfSl8B2-uAXfa8Uk4KD7hz7nO6CsPflklnFw8x-COCfojmDix0hllTH7dxslImPPp_kqjlhAiNjTJMewARRfEPpZZjyGbL6oTrr54UxprSW9DBa18Thp3FyyHsNZD0tQgpTecAG1TX2E4F0mIwy243-5eFFlpFhAW6akDJSbj5dIYSFLX0AuesOdS0kb1V6dSOIhaUiP3ARq0BJcYqKZ0i123LwakqU_w1cAxMa2Sfhfnhiz7ELdnlhAWUT3nS-wgK753jWC1JGInKl7G8TjGeVQiZKuvDd9loL7F8cm2zhXGjkCKXYPrIRT2qtYy8-yUnPqZEITXIB_F1hAhh7EyUGzzwQrQDy9OPQXJaUpU7LdhXdicittDresZcUsTcyhzRnyjSbeAdhP7MGBCv36UnLb5Wy6GecY94uVXLAAWCBgMYjU9G1_ow0FMi28M3XBx9WFZJznz8L4t7LBgOopUAFYIA2ukOxwWJjUGTDbO1FSwC075gA8hjpc8EmGgrNlG0P1AlggmHrEwRVSxu9CETxvKoeFodW0d-KbE7isaO9kK_2ndEsDWCCu8Rm9-2oSn84cqnchN0eHqGjH_012q_204oGZNpnNGwRYIBNy6uisc7SaXocNXyKkoojqOtuJ9tmQoUdBaIOUZlazBVggS0ZHcuVmCMQe55reFIOcBV2JFUFsz4k7Sqvvfr6Ek34GWCAmGwen5i1DAt5OLx57e4BPtUfFgTQhyAkcB-g1EoQPtgdYIH19-t3VQ46e7MCxjWMXCQ5E5U0p6cBlU-scMe7-DafzCFggOUhkBlutCGHYg7LhszefmyDp_KA3auGCIzkVVuYwm18JWCAk1N2JpT4k_HGNt2vi8xpzL-spPkHZjH0wSEIKmpNOIgpYIApkpUQRRfoGC7njA6fQLatPsHJBVsMLJwBan0ZYHbqtC1ggNJDIDvzJ183NqNcJMsT0fx_Ps22qizg5hSVxexqsIqUMWCDNUDK3gidZCR9n3YPT_9xASAzlSyH8BQ9tWv3_DOKshg1YIDPsg-r9afJ2LpIhL-YyL1ZGAK_uwD1etyHxWnLStpZ-DlggCmrMkZK0fWKgELrDs4mi5ADQKdODDU5LusLbj3FZqpQPWCABBe80VblLeEIVHyLiduuGCegF7GJLN0_-w3uxoIKEU4QDBAYH\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "name": "https://schema.org/name", + "ExampleAchievementCredential": "urn:example:ExampleAchievementCredential", + "WindsailingAchievement": { + "@id": "urn:example:WindsailingAchievement", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "sailNumber": "urn:example:sailNumber", + "sails": { + "@id": "urn:example:sails", + "@context": { + "@protected": true, + "sailName": "urn:example:sailName", + "size": "urn:example:size", + "year": "urn:example:year" + } + }, + "boards": { + "@id": "urn:example:boards", + "@context": { + "@protected": true, + "boardName": "urn:example:boardName", + "brand": "urn:example:brand", + "year": "urn:example:year" + } + } + } + }, + "achievements": { + "@id": "urn:example:achievements", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2" + ], + "type": [ + "VerifiableCredential", + "ExampleAchievementCredential" + ], + "issuanceDate": "2024-04-14T05:32:08Z", + "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "credentialSubject": { + "achievements": [ + { + "type": "WindsailingAchievement", + "sailNumber": "Earth101", + "sails": [ + { + "size": 5.5, + "sailName": "Osprey", + "year": 2023 + }, + { + "size": 6.1, + "sailName": "Eagle-FR", + "year": 2023 + }, + { + "size": 7, + "sailName": "Eagle-FR", + "year": 2020 + }, + { + "size": 7.8, + "sailName": "Eagle-FR", + "year": 2023 + } + ], + "boards": [ + { + "boardName": "CompFoil170", + "brand": "Tillo", + "year": 2022 + }, + { + "boardName": "Tillo Custom", + "brand": "Tillo", + "year": 2019 + } + ] + }, + { + "type": "WindsailingAchievement", + "sailNumber": "Mars101", + "sails": [ + { + "size": 5.9, + "sailName": "Chicken", + "year": 2022 + }, + { + "size": 4.9, + "sailName": "Vulture-FR", + "year": 2023 + }, + { + "size": 6.8, + "sailName": "Vulture-FR", + "year": 2020 + }, + { + "size": 7.7, + "sailName": "Vulture-FR", + "year": 2023 + } + ], + "boards": [ + { + "boardName": "Oak620", + "brand": "Excite", + "year": 2020 + }, + { + "boardName": "Excite Custom", + "brand": "Excite", + "year": 2018 + } + ] + } + ] + }, + "proof": { + "type": "DataIntegrityProof", + "created": "2024-04-14T05:32:08Z", + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "cryptosuite": "ecdsa-sd-2023", + "proofPurpose": "assertionMethod", + "proofValue": "u2V0BhVhAAgX6OiL2LPDs4gY25t6_9-5FgEnvkMQDY16oQVBWq3QIH8f10Yc1WFStuCIHVm8UpipcXzXt1aQ27fO0R0ZgPlgjgCQCCeEn_R7OzbmPqm2ayttFG4El1Z8HdK1aBEQr08YMxY-YN1hAxHDRKHE2RtUl8UMgciM4f7qMiTQ6TLdrd4k8Bl1dgXJQcJywUCUEnkAFougrkZcUYDPBeP0z7pGu-SeOAAyix1hAYlbCO5BwzRtpRqt-N0awYZm3zkYZxDbfmlvKkeHEBbUVwp9vILra4zTFmtRa2VJzATpz__Z4CFlMX8V_Ec3REVhAeZDDWwPJ5ISZKx6Fz_0E-oA-G8elrAWkeeZV55ZWJjdX9RKj4_s2YmCDW4h5LXh2n7go7eiKqwudEx1p41CdnVhAA5TBn8mYLF_hNmGYFnGBpOLA3WlhjoC2Mg-0rfJlSUVc4h_lYUFbhcv5AyVsyjW7PRWiewgJAT-49LES7ENxr1hA8S06jH5ZOFODUTq9s-rdc0703PaUvYMJ39LUUCgHe691D5MLdjHPFP3iRaIDlmCm6-V0WnZhcJ77cbK00-idk1hAzjCgytep_s2qDg3KYc0RRUhZaXUq7jAN4x_Y4bpgQVpwClOsdxrZdGFy4TNWY-QcuI5B3z7ZPoXGPa60FWGDbFhAyeysdgdTS1_pKovMgBg4_m_fapzx5fzmav1gP11GRUerm7BIZMeu_oiDrGzpHepyo82fgnOxKI3vZlmW_KYqulhA8yMqjtjq8sEntnxEefcEfdKeGmKC4yCSyPbecWAlV3f0mQA1nUl9YKHRQ1Wq3FmpINNSmQzkwPhz68IH7lKN2VhAJaX3W1waESD6XaOiV_m5L0oD5bI1ecKPraw9oTswFeu64suztm247-BtEvHleQOFqTK_VrSk-Kfjxf9aSxFNK1hAFAu9GH0zAITSHOYlvaFYtjYxO7itD20nMkW6BmJn2kRE7ylspBhHAQRY8DBdTn33UvdGOrY99bzPOY42JzRK-FhA6wHggUNqdfhm4ly963xyOQMJcH11lhIQKiZHKWjBnvypy6nBfBwbznAeQUdHmZtlXX0amMm-EYKigsN0hkWEA1hAUc_EhD4Hifa62tGlDXKNOLGma4JUqlbG3cPJ97IWVOSfrJCzyV54n9_xbGdIOeuAhucZPsctnO562hCagXLollhA6d5qS9rLp2-s1VTpyGp4_LylmTqKcKwVAOdVPtLjS8CodoENydDmmmmizzR7aMSzkqP3VBbqAVXVTxJq3TGoLlhAMiDDSs7vRC9dclKkN4f9PfkCcxPrHjvHEpRyHkemNGtkNc1c2a5adADu5d47O9_S22qA0yPaSA-wFUrS87WNf1hAY571X9tmAYuTm2P5hLJ1cucjQQkjOZR-uGGxFT8W4Ri7fZU0yGwTUhQhFBgV4dvHCByfuvPZJbSgzOLktrTrn1hARj_bBcnCu8IqPUUfZ3Xi3xNoHlJCJ_Hru498FFjb2jsF5AbnqeBH2RZLSydLXKJ-bACFTsZl0VJTj7QWhbYJr1hA0fVDWUS0eSqyxODmZv-nm06WgQmfjtkc3nz-Dvt1oVFkDrvNlJGpsQrJZQ2qj3vXd7n469edld3DRZ7qFVd_GVhA27-GQb78biNJ265RJ5PQtTJSQ13qp7swdv7qGdpU0T26ESrQigO_3oOm-UO7VgitvtRHd2qxwxQ1riyh19GPBVhAVN1ljRNT4MHCDGArEOoSj_L3r7IDI5vfQKgEGhGqI_JAMhFCFrys59c5r5MqUU8klNKl-v_c6UUCKeBCUJXfp1hAFe2gn_N3OboyQae0u0JhhzDOOOwWeFma2jOP3zG42vef1XGIn1b2G_3_QhYBvYOkbsWOLRdU3NO940XT-yDeSFhAzgv0XPKMRZ-Q_sk3a7FsPH6IKG00jKrIP56BVwMpo9To1S-d_CielO59qlNRYYRbcDjXfXASkWdFgLBoKkwd2VhAJ_N9LxO0WVVlNbMVAOR8W1w24PZL06mHu11LFAYXf2Dxmi4gmQwKpxYDtQlFKhxRlJ218HYq3meEAVUrMndFGFhAyOdbwmKKKZZBqDChxvaTOT_7oL2utb4GiDyHHy57Ic7UrimG4bvVgJQP5M4_uPIhPhRx-uv8DY9Z-ZgpLxUG-FhASNG_eyljL3fZn0-ya8V28e6uVU4Adm0H-LVjVkUEvuuttu5giLhvGzYkLRgWaqDZKSTECXnMt-poM6Qlv2Bxr1hAt4edtM_dr_2BY4p-bHQv5DTfMg-5ZRHSSDAhU5KBme__3SIX7PgDfrKGX_XERNY-KZtH1jXfeSzt5wwR5NagP1hADe5wk0t8AnuZD-KfLMhsPnR4d4T-y1OyuRSfjKSAlgsI-8qgTotG0ChRAJIigB5gVK2mQpW1BbGinKigzP8wx1hA8lDzZrhJ1R-kx1DsxMHK5b-Hf_dLZOH8nV98wJBmDLx2dtSFsfi9rjqAahmojz_aLPQPsBkLBzr6D919zEj3flhAH9gFMK7dzURjkpQSZOPkEsmUaEGtXIk_-SV4RqL7K2WyexbcOf9GOUybG93Nfcill2B7CILyY-mYDz9Avo6jxFhAKO0RcOQGZRiXWnHBITWRwEUS_JVFNbxM54qHt03updEPFzbtz-xSD0PsZsXpa7Z36-DtDbKy3kiafQWDYVSpu1hAgQXykMYhF95aEDQM9lxmrux6t0hS5ahATaFGg4wKLyJYgBnnZtlhIQ7hRaBc91KC7yG2QRZyqatGCDsMvGjngVhAax7R7OjqHM8XiC3JYWn-5rUP_k_3bbC93suSvnzMjJoRRLuzPqtek0xC4qwtEyVHClb_37lQV8zuI4c2EisWYVhAWQfF6NlqUIQBOPcnMfrN8xS-NtxVXXCxslVXkmO533xjeUgifpW89gV6k6ExZpT_3Rzx-iB5WLoEdU1X-AFGrVhAGyFbfrZMag2cACUpuBN8Du4tDmD92eW7dwOKdFXuHgtemQZgpF-vplmf7Kd85-k5hmAe-YktBzqb-zEj9GI_U1hApgaO1L71ClABT7pB2zfWnJJUl53sPtJ4xNQQMY6na9Hx-F6iDzIQKJ_qpAp2bzIjs0mW-1Riz9ipi7fFX_yGwVhAimwRTSdNAPZljXzTwL8TgJdZytbx9ZdbxdlIu47IFmsS3Zea7t52FBGvBBhYp8BEeUWF0cFRi7etR5DJvhsCSVhAKPbsLAwYepcULExHwSty3doFJSiSQ6vliGN02m3-OAyKdPhoOB64as4FLX-JyVh5wdOS2F_nQuPb4Ho-YNcKslhAO17uyhLGA5RJWNEAjLEu5oHfCFF5bUaF0HlvYr72R6ZuR-u8aByISkqFs9q9EcRjcfhNF9euuz5etb-aGj3crlhAo7hc8gnyGQPDhjTiO4wG-jvGB7_hQragbFkti4AWjyYBhs3aSSGrx4cYu59__G7-QRg9RXphur8WCjAFv4v43FhAwEoKKX84lXYd0TlBYvCSuBlIoAs10yybuFkzzlWj0qzIu4rHZH1rvdzCiP9jQCqm2AQuGJOS22xPI-k-MIZmzVhAAOiYy26ZSbGY_X8LGmqqSsBlhX9TZSOBOrTlh70hCJoEQT9rwx39gXL1wrKjbP-vAzr3hg94b-l2-GdtpwDo4VhATDqmD3l_GElsAVBW_CnRqxAba5kYm5o8mzBdqyHM1naRSb1JYxTKULce-zYuCJ6pTpy3i3-ndEHHPhYFwVz_qFhA3UywlGtgVvYiIc2vJYHB9Ix9SQsEY9gdLBkljoHkLVNhhT78yGI7cpjkeMoSkzkvKRExkqXAts0HMQRx1QnDE1hA3TDmj_HpUbKSpginix4Sbz9t-pB0ckf8wPqRZvqhn_NrHYPAz5TYl3F1Blj_A6JXTjJX_Fj5iSgisscVNBJ2tlhAH8bT8-jlp-YHDVHCnCRM53RYogQw4kwCu61xPK7gI1-2d01tZ4tpc6p7g51yCCeLm0t1jKeElovYB1uH0wNwBVhAd9o07yh-NaY3t4sj18d19OnpmLaSHkrT3eEfMWORt8I1xMRJGSLDOuTfdgOMS9XLupDdj5gRIBnLfkhh1adEolhAvAeHyjDLvc0KmTXiL1DnjSR56MiA1BYl7v1LXXKYbmRQCWvcaNEf6XwpZp_-nJcui7LJD8TWWhNZIMjcuI4isFhArJ3SMF32-qCdQIx7YA-JLhm6CItXphfjiRz6asjNCTOV4jps7od_mVbO_jtnZGyNbMLVXGVjOnOxd6Bs27q1b1hAUa6ghfF8i9FisdbE1A-U9YFBj_E6gdkTF_9KQXDFszWEJYvO8_Ckbk9N8TYwY3b0IM0asvD8XI7I4PaVc0ksOVhAO5IkR43K3KGq3CJWMtzr-OJ10JzCiAKNLZJO-N16aMM5UnQZZdqcr9woSxBzhQY2igitOaDdNi_YXbNCOzc9O1hA4GDd2h8p84alOWxcs0ukJHwYKgTJoED07uNJNgBm9_xs7FpkLpfE-6UphTuH5y3DxO5QzlykVEZ7vbYdGGbbFlhAoHCx7lj0NvS-8QuwmfSl8B2-uAXfa8Uk4KD7hz7nO6CsPflklnFw8x-COCfojmDix0hllTH7dxslImPPp_kqjlhAiNjTJMewARRfEPpZZjyGbL6oTrr54UxprSW9DBa18Thp3FyyHsNZD0tQgpTecAG1TX2E4F0mIwy243-5eFFlpFhAW6akDJSbj5dIYSFLX0AuesOdS0kb1V6dSOIhaUiP3ARq0BJcYqKZ0i123LwakqU_w1cAxMa2Sfhfnhiz7ELdnlhAWUT3nS-wgK753jWC1JGInKl7G8TjGeVQiZKuvDd9loL7F8cm2zhXGjkCKXYPrIRT2qtYy8-yUnPqZEITXIB_F1hAhh7EyUGzzwQrQDy9OPQXJaUpU7LdhXdicittDresZcUsTcyhzRnyjSbeAdhP7MGBCv36UnLb5Wy6GecY94uVXLAAWCBgMYjU9G1_ow0FMi28M3XBx9WFZJznz8L4t7LBgOopUAFYIA2ukOxwWJjUGTDbO1FSwC075gA8hjpc8EmGgrNlG0P1AlggmHrEwRVSxu9CETxvKoeFodW0d-KbE7isaO9kK_2ndEsDWCCu8Rm9-2oSn84cqnchN0eHqGjH_012q_204oGZNpnNGwRYIBNy6uisc7SaXocNXyKkoojqOtuJ9tmQoUdBaIOUZlazBVggS0ZHcuVmCMQe55reFIOcBV2JFUFsz4k7Sqvvfr6Ek34GWCAmGwen5i1DAt5OLx57e4BPtUfFgTQhyAkcB-g1EoQPtgdYIH19-t3VQ46e7MCxjWMXCQ5E5U0p6cBlU-scMe7-DafzCFggOUhkBlutCGHYg7LhszefmyDp_KA3auGCIzkVVuYwm18JWCAk1N2JpT4k_HGNt2vi8xpzL-spPkHZjH0wSEIKmpNOIgpYIApkpUQRRfoGC7njA6fQLatPsHJBVsMLJwBan0ZYHbqtC1ggNJDIDvzJ183NqNcJMsT0fx_Ps22qizg5hSVxexqsIqUMWCDNUDK3gidZCR9n3YPT_9xASAzlSyH8BQ9tWv3_DOKshg1YIDPsg-r9afJ2LpIhL-YyL1ZGAK_uwD1etyHxWnLStpZ-DlggCmrMkZK0fWKgELrDs4mi5ADQKdODDU5LusLbj3FZqpQPWCABBe80VblLeEIVHyLiduuGCegF7GJLN0_-w3uxoIKEU4QDBAYH" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] + } + }, "operator": "notStrictEqual", - "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)" + "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)" } }, { "type": "test", - "title": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n await verificationFail({\n credential, verifier, options: {\n // this will fail since the vc generated is created with the\n // assertionMethod proof purpose.\n expectedProofPurpose: 'authentication'\n }\n });\n }", + "title": "MUST verify with full array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", + "ctx": null, + "_testId": "urn:uuid:c7e827ed-4b79-47d6-aa9c-9105daae71a7", + "cell": { + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify with full array revealed properties" + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 27349, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 75, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "MUST verify with full array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24597,38 +30066,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:dda548e2-7e04-4743-8ae4-75ffec188a8a", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5d6c01b3-824e-4485-82ea-417817527bf9", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofPurpose\" value does not match \"options.expectedProofPurpose\", an error MUST be raised." + "rowId": "MUST verify with full array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23471, + "_idleStart": 28603, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 639, "state": "passed", - "speed": "medium" + "speed": "slow" } ] }, { - "id": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", + "id": "MUST verify with fewer array revealed properties", "cells": [ { "type": "test", - "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify with fewer array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24637,33 +30106,238 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:450fcce7-7b71-41dd-bc69-14d889c3727e", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:6cebf3e2-92bc-4e62-a862-fb0d3fb63f98", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify with fewer array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21887, + "_idleStart": 22777, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 84, - "state": "passed", - "speed": "slow" + "duration": 325, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"name\":\"https://schema.org/name\",\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuanceDate\":\"2024-04-14T05:32:09Z\",\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sails\":[{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:32:09Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhAVSvaiVR6BVcf0mpkzRGDEGHlx4L9PtqtvKJudENbZdCiJwHcPh5kKowwUa_6UaSD1APY3ikwlfylvsCF2850tlgjgCQCQ4GZpZHPQ-iCVe3hdIX0dkUA3wNEl2WMLUDZTNt0ROOYIlhAmIdueDD7-oiLaPMQfYEg8IMmjRGcjOkXXboNAvE_pvt-feeZU8RHNgqv8Whf337W8QnWYdp5GLex7bZbgscQcFhAuYf22vLztlevnlGy83uwdCAfoABevWgYu7rqgIm9Qx_3RT9Rs68XJ47yp2Z3kpvzWXusST92ahQKH3ApZ4SjnlhAzxQzYJMxodHrPestxW2_KD0uThvHBkSY3acoDvJxZD4RfmbZCKselGC7opQmHJX6_zaodMsRgWOHEe-dYLgXBFhAnltl8VY2sVIjjs1_D1SxWyNnUJUecp5Dufh8bom92oHyNevd2s4IX6aKdj8q6xH1rxzBx9ZiCBNCikNYSR6M1FhArKajXmlahEf-MlcI5xjzpmpc5tbnYhgMKSwwxat6m3Gcy-YEFzftKkxY26ODMNN9p-LXFbu-lHYvJM4wfmmynFhAQ9Kh3cai8xqJ3vQryb6-VJTrSbceYWQ8k207YZ9mppRtOgSCF11YUiH6fKMiD5mhxC2b0ryRRq2i7MLnbLNEW1hAeAR8ABufJGgkr5ZWg5VbpCLA1F-BRcMxFUZxnGqQ-WJqr30gBqXM815H99jhfl-mv0B-X0yrqr4pN3GgEIIZd1hARIWNzoUGzWotggxxwhky2sPstmm6G7T1Dbcw3eDYsvf-0XvAJI2ykiSkHJ3AG9e5721WSdKWmXPJO_BFHML6ZFhAziz0PJi51bcvPpfN2uV4NnD7jQ_cAB3D3g_wVXI0wz1BTEJn0QXmQcMJRcjVdAXPQIDd7mFYngKtc-BOSD3z31hAbYnk6PzWzi00jWbGyrEE3_gvb-e7A-cppB2Ndr93Qc12ZnVb_bQgWNFYygAee3plYiCXytWTHYhczqy2LgtHx1hA3uieIFDS5jHRQ2lVS_I7H6womauGjkDM97bMQwPiMRRzzse7P9KVPAfdeKsP5MIITsggGJTDTlnCFnzdjBra9FhAkNItH7KUn6-FWgZgA1DMdujO6I0xf7NeXDb7eKWKe002X90i4CSQLfRSnWjCLXiDdjRLh0MibE-1-td5ekcWpVhApS8XMa5OsEABv2JWpEmecNPR_tjzepXxqQwoFGAsvExI2AHu89hzlmxoTOPcJ6S5AGYQJ2xpqjlF9DZU7lPIr1hARgHzkmAj7-jQLWC37HWP_yMWPYdpyWE93rv0N6vcpNxb1lcABfYPR4jR6r-1MHs8GRj2kdZ8nTb0dyw7XQRlMlhAV4FvvH7UkbWIObvTixT8hBb92Vid8HBlyuofWwABbb-435wepcYPRTHKb-DD7H4twQX3uE3ALmzvAVZGW79RrFhAB3ebY75Tj_HJS13Lrw_R0qC7AtO8Gl2qNnanv5okFUje567ac7lCFWF4I3P3L9vPHwrAd-C_hqIslbIp0GnTOFhAnrzlQ_aD5GThfwOXGth9pnVYwRWE2EHczhwHH8ZXEgZ9U0eM1FrISzZentqmgTihqzhh1Q3G2_BHEJjRBDZF8FhAyOhyid0gQeslBsx610Q-1T7WovyqUPIv1bePE4KpMR6bQaM09-LYYWMTo0UdLHS6vJb3YSJQKKYc-OmZ5gUySFhAWaPxEsQyNr3mPNo5AY0ycPeY1QWlhucann5ugvz3vso3Gkeoeq_y2mV4YN08VXPb-8-mgsf_HYlvR-C9cZgVCVhAk5H-yVM3BVDxNGbzjiohhzNqnbpCa_9-F21Xi18y2iHaR1T_kYd3H_WtJYt4SrSXoKcaNgkaOUpE_3WAsH2T9VhAa9B6F1M43oFRie-USU5l_imW_tS1Omeg2aIqEhM3KXGkWX79tdcBsf3ccAIFVif5mCIE_5tOmrzj9IP5jfLTdFhA-4Yig-28e5kIftLesJJ0HVTeCs5nY3u3UzkKSfy39UePnc2XqkNIN_wrJdE3ZoxMUfGceZk6Qm-sblUrEA5ySVhAHTSzYwHFhCssMa0s9cPXaWdKw3t8HOYLZZDjEv21bIpWuextTP_PFMuKDc4sL0YC-j2JHNlRB3MWAiEJ-p6OIVhAUHu9QBxdXZMZV9U34zbnk5nDqGsmwkg02NSZhHs6aRmZyw0P-Q224O3lz95USrh3UISFLBaBQM9c2bHZu3uHmFhAfneBUaZX9j9Zcg-nZFO3LAQoqPre3nLhfcavEJ0g8sFhgfD_FMvSBJpEak2SzZ9ktOOqYUL2tFnbAvqgmxEZblhASxQpCHhsbb17YSx0vFJiPYUOasnOASfYA9Wy6V_IAjflFJDn8xeb5qrdnhWc0Kfk_7yoVj_mz4OfpQ1RwKi_fVhALDwXUIXnuJ2XFB34rNwu7YVhnl_XfoPq8LVbhqSqsdlfwx-GzqEDscsbpB39J7kGJbCPMxIXvvlxsJvk7F-n91hAsKaQAqrcawspIp7OsHzR7wDuKIfkzFgGoqTFT2hTiBB0j8F8kbaM1hhA0y5DoGqZoV8zA1t5nVkLoMsJvOegUVhA6mKG90IWgt7pg7SkYnwW3-GbkT3rcIgoxt9HuYMzsJ9EDaaZzjDXipwou9ds0pMnpE5Sx7PL40fkBx8ME191-FhAE7rjQ2Jtfe-X0xLDGtqVK5av8Zzxumm0kZYMillgDxQRuX7mWuBL-wrEw9AZYLP6ZZfDCCZJ4XKRnVZ2p_IY-FhALAowsmR8TQIn-gdqvrb8TPepPmIPyhDEpExvhp71ji-Z9XP9vfzn7SHHQOAtr2Jo2DLzZEv2Yobyok5pADqZE1hAL457U-IwTPYL6WwuvHGs1CKicNJAjVXF2Ar9Rat7qGYxNAtPel2QEm12AnyIzM7HDnDF_xivbsxgpQFMK5Fd6FhACZvvWdbCgCj3Ef2MB9EdQ8Vc3mHiGJAqb_5lD5MHQxJDaF5-e6td1kvsv9yO8JFBuDmoArT--I7mSetWQC6mz1hA_hwmVh1BP0RsjxNHBtwRCN0N57e7K61-LDlDO46y7RHjB5Hn9dO-CeaHc9_uSPMaO-iNfn8bjFg2NTC31_H8hqsAWCC5FofNJ_pYQi0H6EN4oEfc7rc03Sy9Cq8euCd6HuECGwFYINv_HzVOEyMLOiulahFEqJk16jOmGCjG3FmJdmvx2UPMAlggDePGhPeuaxhxzn_v2utchK4vTU1KklRxKisZBELH5ycDWCAKtlmRPN3yInlFJy0Q4ryeb7iCFVV3DlmXYy6jBaltJwRYILSVXiTEJAOQeYHrRNEKqETqcVIj77ptnJqKdH8PTuAfBVgg2wRnwPxz5zjmYwPJZM0CmArA-gnz5q6KYj2p9WOTKPgGWCBq_TULYGy_nkKJmt5HZ-3RsAhwJLgQWf95Ymi1e2iAOQdYIE3pYpGyWJ1NN1K39BX3RJv-cojUTLQjmJEMLI5_8_DzCFggRecoQ-5dmhbWWvl7KxA7t5zWUCAdK8A0mBrzLu7T0gUJWCC8WL_LBsKwu-FCbdRF-ft9s1FkWSV8BRoG_9mrLrNygwpYICoApsI9FzgqlyoGT_u0VHgrciYVllMKDxd92XW-vidIhAABAwQ\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + { + "@protected": true, + "name": "https://schema.org/name", + "ExampleAchievementCredential": "urn:example:ExampleAchievementCredential", + "WindsailingAchievement": { + "@id": "urn:example:WindsailingAchievement", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "sailNumber": "urn:example:sailNumber", + "sails": { + "@id": "urn:example:sails", + "@context": { + "@protected": true, + "sailName": "urn:example:sailName", + "size": "urn:example:size", + "year": "urn:example:year" + } + }, + "boards": { + "@id": "urn:example:boards", + "@context": { + "@protected": true, + "boardName": "urn:example:boardName", + "brand": "urn:example:brand", + "year": "urn:example:year" + } + } + } + }, + "achievements": { + "@id": "urn:example:achievements", + "@type": "@id" + } + }, + "https://w3id.org/security/data-integrity/v2" + ], + "type": [ + "VerifiableCredential", + "ExampleAchievementCredential" + ], + "issuanceDate": "2024-04-14T05:32:09Z", + "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "credentialSubject": { + "achievements": [ + { + "type": "WindsailingAchievement", + "sails": [ + { + "size": 6.1, + "sailName": "Eagle-FR", + "year": 2023 + }, + { + "size": 7, + "sailName": "Eagle-FR", + "year": 2020 + }, + { + "size": 7.8, + "sailName": "Eagle-FR", + "year": 2023 + } + ], + "boards": [ + { + "boardName": "CompFoil170", + "brand": "Tillo", + "year": 2022 + }, + { + "boardName": "Tillo Custom", + "brand": "Tillo", + "year": 2019 + } + ] + }, + { + "type": "WindsailingAchievement", + "sailNumber": "Mars101", + "sails": [ + { + "size": 5.9, + "sailName": "Chicken", + "year": 2022 + }, + { + "size": 4.9, + "sailName": "Vulture-FR", + "year": 2023 + } + ] + } + ] + }, + "proof": { + "type": "DataIntegrityProof", + "created": "2024-04-14T05:32:09Z", + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "cryptosuite": "ecdsa-sd-2023", + "proofPurpose": "assertionMethod", + "proofValue": "u2V0BhVhAVSvaiVR6BVcf0mpkzRGDEGHlx4L9PtqtvKJudENbZdCiJwHcPh5kKowwUa_6UaSD1APY3ikwlfylvsCF2850tlgjgCQCQ4GZpZHPQ-iCVe3hdIX0dkUA3wNEl2WMLUDZTNt0ROOYIlhAmIdueDD7-oiLaPMQfYEg8IMmjRGcjOkXXboNAvE_pvt-feeZU8RHNgqv8Whf337W8QnWYdp5GLex7bZbgscQcFhAuYf22vLztlevnlGy83uwdCAfoABevWgYu7rqgIm9Qx_3RT9Rs68XJ47yp2Z3kpvzWXusST92ahQKH3ApZ4SjnlhAzxQzYJMxodHrPestxW2_KD0uThvHBkSY3acoDvJxZD4RfmbZCKselGC7opQmHJX6_zaodMsRgWOHEe-dYLgXBFhAnltl8VY2sVIjjs1_D1SxWyNnUJUecp5Dufh8bom92oHyNevd2s4IX6aKdj8q6xH1rxzBx9ZiCBNCikNYSR6M1FhArKajXmlahEf-MlcI5xjzpmpc5tbnYhgMKSwwxat6m3Gcy-YEFzftKkxY26ODMNN9p-LXFbu-lHYvJM4wfmmynFhAQ9Kh3cai8xqJ3vQryb6-VJTrSbceYWQ8k207YZ9mppRtOgSCF11YUiH6fKMiD5mhxC2b0ryRRq2i7MLnbLNEW1hAeAR8ABufJGgkr5ZWg5VbpCLA1F-BRcMxFUZxnGqQ-WJqr30gBqXM815H99jhfl-mv0B-X0yrqr4pN3GgEIIZd1hARIWNzoUGzWotggxxwhky2sPstmm6G7T1Dbcw3eDYsvf-0XvAJI2ykiSkHJ3AG9e5721WSdKWmXPJO_BFHML6ZFhAziz0PJi51bcvPpfN2uV4NnD7jQ_cAB3D3g_wVXI0wz1BTEJn0QXmQcMJRcjVdAXPQIDd7mFYngKtc-BOSD3z31hAbYnk6PzWzi00jWbGyrEE3_gvb-e7A-cppB2Ndr93Qc12ZnVb_bQgWNFYygAee3plYiCXytWTHYhczqy2LgtHx1hA3uieIFDS5jHRQ2lVS_I7H6womauGjkDM97bMQwPiMRRzzse7P9KVPAfdeKsP5MIITsggGJTDTlnCFnzdjBra9FhAkNItH7KUn6-FWgZgA1DMdujO6I0xf7NeXDb7eKWKe002X90i4CSQLfRSnWjCLXiDdjRLh0MibE-1-td5ekcWpVhApS8XMa5OsEABv2JWpEmecNPR_tjzepXxqQwoFGAsvExI2AHu89hzlmxoTOPcJ6S5AGYQJ2xpqjlF9DZU7lPIr1hARgHzkmAj7-jQLWC37HWP_yMWPYdpyWE93rv0N6vcpNxb1lcABfYPR4jR6r-1MHs8GRj2kdZ8nTb0dyw7XQRlMlhAV4FvvH7UkbWIObvTixT8hBb92Vid8HBlyuofWwABbb-435wepcYPRTHKb-DD7H4twQX3uE3ALmzvAVZGW79RrFhAB3ebY75Tj_HJS13Lrw_R0qC7AtO8Gl2qNnanv5okFUje567ac7lCFWF4I3P3L9vPHwrAd-C_hqIslbIp0GnTOFhAnrzlQ_aD5GThfwOXGth9pnVYwRWE2EHczhwHH8ZXEgZ9U0eM1FrISzZentqmgTihqzhh1Q3G2_BHEJjRBDZF8FhAyOhyid0gQeslBsx610Q-1T7WovyqUPIv1bePE4KpMR6bQaM09-LYYWMTo0UdLHS6vJb3YSJQKKYc-OmZ5gUySFhAWaPxEsQyNr3mPNo5AY0ycPeY1QWlhucann5ugvz3vso3Gkeoeq_y2mV4YN08VXPb-8-mgsf_HYlvR-C9cZgVCVhAk5H-yVM3BVDxNGbzjiohhzNqnbpCa_9-F21Xi18y2iHaR1T_kYd3H_WtJYt4SrSXoKcaNgkaOUpE_3WAsH2T9VhAa9B6F1M43oFRie-USU5l_imW_tS1Omeg2aIqEhM3KXGkWX79tdcBsf3ccAIFVif5mCIE_5tOmrzj9IP5jfLTdFhA-4Yig-28e5kIftLesJJ0HVTeCs5nY3u3UzkKSfy39UePnc2XqkNIN_wrJdE3ZoxMUfGceZk6Qm-sblUrEA5ySVhAHTSzYwHFhCssMa0s9cPXaWdKw3t8HOYLZZDjEv21bIpWuextTP_PFMuKDc4sL0YC-j2JHNlRB3MWAiEJ-p6OIVhAUHu9QBxdXZMZV9U34zbnk5nDqGsmwkg02NSZhHs6aRmZyw0P-Q224O3lz95USrh3UISFLBaBQM9c2bHZu3uHmFhAfneBUaZX9j9Zcg-nZFO3LAQoqPre3nLhfcavEJ0g8sFhgfD_FMvSBJpEak2SzZ9ktOOqYUL2tFnbAvqgmxEZblhASxQpCHhsbb17YSx0vFJiPYUOasnOASfYA9Wy6V_IAjflFJDn8xeb5qrdnhWc0Kfk_7yoVj_mz4OfpQ1RwKi_fVhALDwXUIXnuJ2XFB34rNwu7YVhnl_XfoPq8LVbhqSqsdlfwx-GzqEDscsbpB39J7kGJbCPMxIXvvlxsJvk7F-n91hAsKaQAqrcawspIp7OsHzR7wDuKIfkzFgGoqTFT2hTiBB0j8F8kbaM1hhA0y5DoGqZoV8zA1t5nVkLoMsJvOegUVhA6mKG90IWgt7pg7SkYnwW3-GbkT3rcIgoxt9HuYMzsJ9EDaaZzjDXipwou9ds0pMnpE5Sx7PL40fkBx8ME191-FhAE7rjQ2Jtfe-X0xLDGtqVK5av8Zzxumm0kZYMillgDxQRuX7mWuBL-wrEw9AZYLP6ZZfDCCZJ4XKRnVZ2p_IY-FhALAowsmR8TQIn-gdqvrb8TPepPmIPyhDEpExvhp71ji-Z9XP9vfzn7SHHQOAtr2Jo2DLzZEv2Yobyok5pADqZE1hAL457U-IwTPYL6WwuvHGs1CKicNJAjVXF2Ar9Rat7qGYxNAtPel2QEm12AnyIzM7HDnDF_xivbsxgpQFMK5Fd6FhACZvvWdbCgCj3Ef2MB9EdQ8Vc3mHiGJAqb_5lD5MHQxJDaF5-e6td1kvsv9yO8JFBuDmoArT--I7mSetWQC6mz1hA_hwmVh1BP0RsjxNHBtwRCN0N57e7K61-LDlDO46y7RHjB5Hn9dO-CeaHc9_uSPMaO-iNfn8bjFg2NTC31_H8hqsAWCC5FofNJ_pYQi0H6EN4oEfc7rc03Sy9Cq8euCd6HuECGwFYINv_HzVOEyMLOiulahFEqJk16jOmGCjG3FmJdmvx2UPMAlggDePGhPeuaxhxzn_v2utchK4vTU1KklRxKisZBELH5ycDWCAKtlmRPN3yInlFJy0Q4ryeb7iCFVV3DlmXYy6jBaltJwRYILSVXiTEJAOQeYHrRNEKqETqcVIj77ptnJqKdH8PTuAfBVgg2wRnwPxz5zjmYwPJZM0CmArA-gnz5q6KYj2p9WOTKPgGWCBq_TULYGy_nkKJmt5HZ-3RsAhwJLgQWf95Ymi1e2iAOQdYIE3pYpGyWJ1NN1K39BX3RJv-cojUTLQjmJEMLI5_8_DzCFggRecoQ-5dmhbWWvl7KxA7t5zWUCAdK8A0mBrzLu7T0gUJWCC8WL_LBsKwu-FCbdRF-ft9s1FkWSV8BRoG_9mrLrNygwpYICoApsI9FzgqlyoGT_u0VHgrciYVllMKDxd92XW-vidIhAABAwQ" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] + } + }, + "operator": "notStrictEqual", + "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)" + } }, { "type": "test", - "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify with fewer array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24672,33 +30346,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:9fa1c767-3657-48f1-b69f-220ae9cdec7e", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:38a1b8e4-3664-4c97-b394-a9e6ace69dac", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify with fewer array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22671, + "_idleStart": 27424, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 60, + "duration": 80, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofValue\" field is missing, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // proofValue is added after signing so we can\n // safely delete it for this test\n const credential = credentials.clone('issuedVc');\n delete credential.proof.proofValue;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify with fewer array revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24707,38 +30381,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:79143c0c-74c4-4281-9a24-050bedaa2e35", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:9a9d5b55-fe67-4d04-9c3a-f60f6c073d5b", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofValue\" field is missing, an error MUST be raised." + "rowId": "MUST verify with fewer array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23528, + "_idleStart": 29242, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 441, "state": "passed", - "speed": "medium" + "speed": "slow" } ] }, { - "id": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", + "id": "MUST verify w/o first element revealed properties", "cells": [ { "type": "test", - "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify w/o first element revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24747,33 +30421,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:2cec185c-78f3-42c7-8dc0-ed611481f286", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:c155b96d-9605-4676-b996-ef5574ea88b9", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST verify w/o first element revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21971, + "_idleStart": 23102, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 3193, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify w/o first element revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24782,33 +30456,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:cd7c869a-772c-4bea-8d65-0a1dfe2ec450", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:8ff9b76e-5a71-4884-94d6-1cac9ce9c0f5", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST verify w/o first element revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22731, + "_idleStart": 27505, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 60, + "duration": 55, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofValue\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // null should be an invalid proofValue for almost any proof\n const credential = credentials.clone('issuedVc');\n credential.proof.proofValue = null;\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify w/o first element revealed properties", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24817,38 +30491,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:01dd7bb7-6b0f-49dd-b703-db70a1a842d6", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:41fada9b-9016-4782-9702-29f8edfab315", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofValue\" field is invalid, an error MUST be raised." + "rowId": "MUST verify w/o first element revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23586, + "_idleStart": 29683, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 350, "state": "passed", - "speed": "medium" + "speed": "slow" } ] }, { - "id": "If the \"proof.created\" field is invalid, an error MUST be raised.", + "id": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", "cells": [ { "type": "test", - "title": "If the \"proof.created\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // FIXME: Fix test to check if a cryptographic suite requires the\n // “proof.created” value\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24857,33 +30531,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:4939441c-882e-4e78-8cf0-bcc490aac9c4", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:41e67638-a476-43c9-bcc3-d630e5107c25", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.created\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22008, + "_idleStart": 26295, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 185, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.created\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // FIXME: Fix test to check if a cryptographic suite requires the\n // “proof.created” value\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24892,40 +30566,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:fd264289-75a8-41f0-9d2c-75fe8db9a621", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:ab0b4778-50cd-4452-9ecc-dcf6731d340f", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.created\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22791, + "_idleStart": 27560, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist", - "showDiff": false, - "actual": {}, - "operator": "notStrictEqual", - "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)" - } + "duration": 52, + "state": "passed", + "speed": "medium" }, { "type": "test", - "title": "If the \"proof.created\" field is invalid, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n // FIXME: Fix test to check if a cryptographic suite requires the\n // “proof.created” value\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24934,38 +30601,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:39911ec7-88a3-4438-88b5-bb7b4c80229a", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:4797caef-f05d-4fa4-a37f-3cb298c8691b", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.created\" field is invalid, an error MUST be raised." + "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23643, + "_idleStart": 30033, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 70, "state": "passed", "speed": "medium" } ] }, { - "id": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", + "id": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", "cells": [ { "type": "test", - "title": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n\n // Remove the multibase header to cause validation error\n credential.proof.proofValue = credential.proof.proofValue.slice(1);\n\n await verificationFail({credential, verifier});\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24974,33 +30641,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:1025cc2f-1b60-427f-a4ed-605d49c76f7d", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:52a138c3-b434-4b2c-a0b3-7101c59c43d4", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22046, + "_idleStart": 26480, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 35, + "duration": 102, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n\n // Remove the multibase header to cause validation error\n credential.proof.proofValue = credential.proof.proofValue.slice(1);\n\n await verificationFail({credential, verifier});\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25009,33 +30676,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:a56bd0f5-4ee2-40fe-a93b-1b119d31f9be", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:cc881fc1-0a7a-4ecf-b49e-7157c89f78e0", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22845, + "_idleStart": 27611, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 39, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('issuedVc');\n\n // Remove the multibase header to cause validation error\n credential.proof.proofValue = credential.proof.proofValue.slice(1);\n\n await verificationFail({credential, verifier});\n }", + "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25044,38 +30711,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:2cecb340-69aa-4921-a740-e401d43bd130", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:aac35d04-712e-4046-a000-55f0d0bd38ad", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"proof.proofValue\" field is not multibase-encoded, an error MUST be raised." + "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23700, + "_idleStart": 30103, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 69, "state": "passed", "speed": "medium" } ] }, { - "id": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", + "id": "MUST fail to verify a base proof.", "cells": [ { "type": "test", - "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "MUST fail to verify a base proof.", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25084,33 +30751,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:12486dc2-dbbd-4142-b810-83a89904a4d6", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:bf37a99a-cc64-4dbd-9edb-d6cf6a98feec", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST fail to verify a base proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22081, + "_idleStart": 26582, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 45, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "MUST fail to verify a base proof.", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25119,33 +30786,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:7685b7c9-319a-4f47-a358-a4c1ccb43861", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:19d6dc97-d2e0-4a3e-a291-e406e6c52d27", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST fail to verify a base proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22902, + "_idleStart": 27651, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 52, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "MUST fail to verify a base proof.", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25154,38 +30821,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:39d21416-a5ba-451b-b2c3-1f4e556bbf06", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:89d51482-1031-426d-9b71-1bdc8c0553e9", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"options.domain\" is set and it does not match \"proof.domain\", an error MUST be raised." + "rowId": "MUST fail to verify a base proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23756, + "_idleStart": 30172, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 68, "state": "passed", "speed": "medium" } ] }, { - "id": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", + "id": "MUST fail to verify a modified disclosed credential.", "cells": [ { "type": "test", - "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "MUST fail to verify a modified disclosed credential.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25194,33 +30861,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "3eLmDK9Gl7cgHj1Hxn0D5", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "bNypsE0Rf5_E1DrP7ygsZ", "ctx": null, - "_testId": "urn:uuid:fe1acdf2-b6ac-4687-9bd6-e81c80d020a1", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:0527c971-9f7b-4843-ae21-f0644950ebaf", "cell": { - "columnId": "apicatalog.com: P-256, P-384", - "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." + "columnId": "apicatalog.com: P-256", + "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22116, + "_idleStart": 26627, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, + "duration": 249, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "MUST fail to verify a modified disclosed credential.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25229,33 +30896,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "wzhL8BbUEz8_6cV0BvHHp", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "a7kok2TZnkCQo5dhpDnrm", "ctx": null, - "_testId": "urn:uuid:80508f7e-a2b7-46e5-b28e-0d20241da893", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:7c7e7781-0a05-421b-a57e-1e0de339c8c1", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", - "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." + "columnId": "Digital Bazaar: P-256", + "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22958, + "_idleStart": 27703, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 52, + "duration": 54, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {columnId, rowId: this.test.title};\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "MUST fail to verify a modified disclosed credential.", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25264,46 +30931,46 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/45-sd-di-verify.js", - "parent": "RtVrZqMhdQ-AfQ88pdeop", + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "parent": "gKc6TGJmtBCPaLUOpOx96", "ctx": null, - "_testId": "urn:uuid:b1bd4c9c-3bdc-4eff-b134-acd7f061401e", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:1235b877-d363-427a-a6f8-55864b17a2c6", "cell": { "columnId": "Grotto Networking: P-256", - "rowId": "If the \"options.challenge\" is set and it does not match \"proof.challenge\", an error MUST be raised." + "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23813, + "_idleStart": 30241, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 92, "state": "passed", - "speed": "medium" + "speed": "slow" } ] } ] }, { - "title": "ecdsa-sd-2023 (verifiers)", + "title": "ecdsa-sd-2023 (verifiers 2.0)", "ctx": null, "suites": [ { - "title": "apicatalog.com: P-256, P-384", + "title": "apicatalog.com: P-256", "ctx": null, "suites": [], "tests": [ { "type": "test", "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25313,32 +30980,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:ba05e339-328a-4f15-968e-86506e61ecd3", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:07479680-bf3b-495b-ad05-9072ac120e37", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 24006, + "_idleStart": 30541, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 265, + "duration": 138, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify a valid VC with nested disclosed properties.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25348,32 +31015,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:8d0e7038-8451-4b27-b46e-7b36fdd56b93", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:a0b4de16-8671-43ff-af8f-1a554fe27a48", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 24272, + "_idleStart": 30680, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 805, + "duration": 711, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify a valid VC with disclosed properties and bnodes.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25383,32 +31050,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:0597305b-eb4e-4ce3-90a9-9a83df3764a2", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:65644602-6504-472d-a046-4862e4c4dc78", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25077, + "_idleStart": 31392, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 609, + "duration": 710, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify with full array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25418,25 +31085,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:f1f3342a-97c6-4c81-b726-d20f8c8d890e", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:4b600aa2-e5da-4243-aaec-7cb0fbeb0bbc", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify with full array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25686, + "_idleStart": 32102, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 389, + "duration": 371, "state": "failed", "err": { "name": "AssertionError", @@ -25447,15 +31114,14 @@ "request": {}, "options": { "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"name\":\"https://schema.org/name\",\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuanceDate\":\"2024-04-07T05:06:42Z\",\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Earth101\",\"sails\":[{\"size\":5.5,\"sailName\":\"Osprey\",\"year\":2023},{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023},{\"size\":6.8,\"sailName\":\"Vulture-FR\",\"year\":2020},{\"size\":7.7,\"sailName\":\"Vulture-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"Oak620\",\"brand\":\"Excite\",\"year\":2020},{\"boardName\":\"Excite Custom\",\"brand\":\"Excite\",\"year\":2018}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-07T05:06:42Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhAqYSIiU8I8_K6Z6q0E_aFOHjy58rFXWuouB2qMnHen27KFOYKgO_OFuhscOpDI1OZkRUhyUMZ7DMbmDDsrqbqkVgjgCQCw_GA_l7sCMMM0NzITNPhTB3Qk4s3Zz4Jqa9NwE04trKYN1hAKKbPyaAxb1wpS8mIxMjpySdG3avu-a3ISoQ2m-Xeqg6PqnwPA6zbLnDBAvTzzAicYyj4DnPXy5_fhKT9NUerrlhAimNffUmT222i3FKqibw9WPUQx8TPZFnqIRRpCqapwsxdrrVXKDlypsMaPYCA5_FBmT0K0hdUhNivf9xxLoSBdFhAbeZON53qz7f11bwkDqigSSNt7NVS-6BPUtnaqOWnHSK5hLUoWZ9QjxBIOuj6Zt3FMcwE8TIxcUUcjnSUsU4IfVhAk4EgVDlxS-fqoV4pnLKdgZnPsZqos82JPDdG-N1d2AbVIc0rauHlhlW6Hw75-tvOItyVc6DzcdhqcWJIgPSnQlhArhtuywhLYyly3NBuvDtu-7OWdJo0tvNtYaC7xhhxG_ZDR6LghwNHvA1pczQu-5FsXWco9VHIApR7J1f4znnk_lhAJGYw5Eg1mr4xtNNZsaFkamQTD1VbDxuAYIR3HDQOUbPW36YkTcf_BOP-0nAZ0u_cVccYAzC00EgIw4W2i8uDmFhAZsWvkWDGwJUkKDEDdjBs-UXW8x6Be9UrI4-H0AkM0LlhTElWO1JJw4waLE0MkSbLp7St5w0JZEwtWTnLNHb761hA3VQJ0mr3LXKYL--hthuvQeVHeR3ssY3q-cEdfGGNA9EZgyTwGLz0l9R2-OqLyQZBwQWkPzSlDTHw7qDLA2gZtVhAaegjPcgE_AXx4USBrtbgC6I8-4zOd0Bfllul8tOl1GaK1asNgdWvCptO65_CBUqSkN_r0mMIOmzpkWVPFTJTkVhA4eaimna9jJgnlzlbRL3Ygx0knzLowDvO7dKJ4sP_yu8YE2tCsqv2juu7tqJUa7mlQrSBVCTskofqe9xm9N4u6VhARatUaf2aoBRrzFj0ClRscECTD1xmeifrK3F90R8csmXNR4MS_RWVg_p0GfIqNpWl1xNXj68G4arWIpNeYfwd8VhA49gg_jPOBy8QgjkjX9l2LZJINuawO0Va7_QjXuu9fJJ_dKeunXm_9xPQEMhYEAD2KryP9PxYbKSnZtVZnPpxC1hAuuMtX2nO4-xstLw4cCE2B5VZG182YOAx_vTtBoc0EUEoUtfx9UVtyaY5TE-7sGRjiRq19QUfw7fYGgzDTfXiRFhAnMnaCZY0dZDk-v4_UWPRID70V-AJpuN3dbLDXwHa_sjk5UMEnSfjBGJ3dqriQFdH9wlWZHNEeBFfWCRz2zugn1hAJcVPxVcl2pd2dFo6hWk3k5o8PIQzd-nKe6xCS5eHhJPKC-gYkvGOPjYL8lXumtDTUo1rwW64RYhbn92qVymktFhACVeSwKiurCXvkZL13m8P0sSqEba7kXV5TU79QCTqVwdBN6-iDzEXLcMuOo1O7-M4oNT7QCOR3FyFnu_KqRhN9lhAyGCJITQHcEW7cplTQ1pYIkUd0TfRBu41Yxzl_ZBPp6zN0KiEO_r589xvISVySDPsE_RYdZ2WYwkJ76OrWocPrlhAv0WtqLorh3rM_ccWFLtrYAUOHIz7ztskhMqm9XVkXxMyZbdF23UFoTNOv1T9IB1ydyaN6j-gVBbq6_0CHIE8p1hAY68oDCZ2-7vlioc6__ZMCJROM7Bi0F9Zj-MN3pYUbTY_WE84kP01ffO9L1yPHePKx_dSvg8vOiUR4m7YZ0mdklhALnnV50jp-KLJt-0uWgfwinHTMCYKg5TXutCPm5ajIU6DyJSYBgEjDj94Nuxv4K_WKpmsUXuMIsCrMcYThyTaclhAbdjDCw-4JlIHqCHxrlbUSbjyPEoSH31bOfz9-wcjDmhtM1HTY84grW4utBLCwj1z3NFOkESRCvTfgInKqxeZmVhAgCYjx_Q4CGd4KJ_0XD9JlRi05uXlCrJeBHd8AqWZmIQzq8bjt8h2ZypoC8a-zWqbjbnV6P-4KZdZSbrfCwuliFhAR9bz41EMDRN7g4sIRKVU1fFtR1hPbD8GRcg2pHKq9kXM8j4tPz3kAHrNnE3c8078qWGRYto2pxLy-2cvaeJUxlhAADHkMki3kNcO-eIyIMd5HAMFC4bKTI0NQJ4yNZ4xONL8WDhRQUEw4QdGFrmUZ5aWu0CB5A0fAWtipmTiiT2lKVhAqEdHIvivznFxlkBaSAqsoMFxhvNY-2z0YYLydbgMoX8yJ45PwUYIvaLbWCBjAWklaFuMOIh25e4ARPaP5hVCblhAeWW7NI3KJer9znklUNiddto8jkm06zOxEWIbyZiFtEAB0fhXNa4dw5QJfgF1GNlyGWxjVDxPzCcZN4XONBFs2FhAU72CpgfR_Xn0UnimG8EdUwLJJoSfozYwx6FhbzugHcvAdipixoZ7OenVVVKEb_OSVfRRyRwAiqGheZfsq4LrNlhAdvnAylAW2pO5gcOKKFGICvFs3Ir3Swh8neL2Krn1swE_tZ_6SqdENcGUxkj9PoGtXUrm69jIPioq0FPixipWLlhAskk3OmoOkmKF1PXHa6qGffp2KVPOpcOFMDuuaVDplqrMpBNJiv1dF6jxQXmCEMP5vCWCMEUzyTJcnzHi8-0GoVhA9B8VZvAfqsZwHc5xptJ6aXuu78gM_7JX7DVvoKxK3Wj-QLJE71edPbotDL3iqGtHR6_3RUAmH9w_zJckHcPdelhAF3dGYhZjUunnmoIOWlpJnO9iOrFh61RwGgAEW6Lc8OKEBO-FwLHohLrXY21qcwuQ-AuVj7HeeyYANk8OaRlW0lhAo4rQN1xQHUwrwXQyw_fN30U7T2NTL3RwDvnn2-Zr8JMxh_s3mz3kym5Fb6Nb2WGchDpIjEqUVsFVVM-rNrsEilhArceAJbJdsJoLhauwshRGi_2yayalQEYhFMyUnN54dBJ2J4kApzPO-K9EJmv6k8__qHfsR8sGEabmUr9u7QJma1hABWvR76tRdby_Z1h056zA7MeINEK275vzwly9tfhTNfiQiDxXERkmtTeIjtlFf0_7uwM7uVH4QRZnmdliaDuhRVhAGpQcSBme6DQSFhpMPwbcBWbifM7JNr8oqEKmWT8k-Kkrt8-kzil7j3p2cgiU7P2PPcZMtkR4UDnFEwfIcjBtqVhANjgCSJfv0I6U1Szxtv-klkRNE2pflGrzgO0LzFwuMYD0CXE9AmHmy7NnGXLS97vbDGL7c8pShKiFQXw4n1B2nlhAD305UXHTpEYEemviqnwPAzV5Hju6VGGxWv1LKbLW6mgkeeyzPSPQT7uK8RaUib4V8SOWKjNj1tweJ74R9M4MuVhAbY0RvGItaKKsSD5GtWdnUR6nqh9DokoAlK1Xv4Jm31TOLzmI3BhKyATlmtp1UudzAtLEm0wASz4iSVwGV8pwrFhA8s6fT0WVbhd4R7iE_Mz4yyhpvTd5kB1c6RXbrXVfw_k7bSU6UUse0ucqp6Db8REBLTL387T4j3pG41urO5GgeVhAN4wl7vOvF4pBV25weHnotlGr9YzL_ecRogzUkqbnFuq0OSOzxUlM6Jnxfvj46KMIXNDwNCDHJwqMnr1yW8map1hAfDDXQWDcqHjlTsAJWfplQlcG_UjmShweqQAFODTiczT7m_YavSMeOCYE-ikdlSxX8mmoJF_egnfA2Nw5jIsu9VhACoLUrsSjCcoInXaarIMlTkjRayX-qblmWFBD4BrpJ58V4zh0TsyVcaqrhv79VS8Axd3NkCs7_KvaCYjOflAqT1hArnzKtNMtqlq1P95nb0SAJ4BvJobavK_4GACXIGyHFoooS42H5qqNPb7b7IJZKKegv11QZqqSud0kIbAVH6hi-FhAh-0KefxFy3Nqrl3FC2sywsc6eMg0thdgkaJY56URKARFr4tKtVf6IWzCEDa9WfbHVeuC2-OcpeM87wEr0AL6SVhA1qmsnAEuMBoehLWDMda3OmpKQ48Gl56F7Vd62zqBDKQvYorb2dVhlEgMHMHGzsXYa4BEdFMSN7oQ3dteqGyfzVhADS0Jvmg8KOjKmhQ440sdJmG6jBg5GOhl2UEoeAuKDasZYdrpcl6h-MeI2Wwf7gs8Fw5vF8DwSOj6aQeCKmMSlVhAg-qlvas6Pm21j03s5nr-9kBEgKRg9gwJqGjFaqtUzqiflEaQCWTMFl-6jwZBqF-bL8Qi_fAsB3K9r45MDGnzQlhAOcvCVv8q3sBAssauLPcBzZrRWuk7mR0siVyitivxri4sqho949bLjS7MTjxWg1mfymWFEtdFolmx0RQS1a5J5lhAJgJJKq0E0XvqunVU-JCrI3Xu1Tj79HkEPOF4j_U7PW9zAjO5EAaPZdFYhLjYPVChRZHz8siELtBmFsrPGeKtPVhAIAnWkDV1_HROQ5YBh5k7EAChgkuVXqJrvIS5lxBJycRxwBpw-REUxg80bo2hXGOiLy7eYpAget7IKOBOGaMNv1hA2SXvNb1v7_BJHwc8C81dYv_tShfsqoID_uly7O5lXJcxkkuGfddPV68a1TVxJn3zWQCfmrLD12xMtvzCBTYOnVhA8ML_3jm2BpFYMKRlGniX__dUf2f76-aF9JuuSY68okBrsp1vJWx_jiHwHNqKWGZFoxv5AacyWN0pxuQGjTyuPVhADuQMc8USLCLLJM0RcwKExqPJqhYepEQIBPKwG_hc4ftgnTkde2KBgXnFG2vP0bDzfz9rRfsz4ZE_o9mP9TL3DlhAj-iGPIZDzC5NL3DSosPYjfWLGLU_rVK5doa17AScmkF4RwXW5DiYZuzkcNVdTqPIPP1fSWC6VIiIMPSYo8u5mFhAt0vP-jua9l-WFg2l4nhNfMaRUCuZYmPELyZNSrWU6FjlTIZIGCqHQxcZmJBq8uo9DTVHMTNtPaS5OqMIxgkcoLAAWCAATzFL9y3ehhn-pfVvWNTalZ-rh9fBigZH-gi_p5bDkQFYIDaTAVGMUMqMr9mCRYfchfrLYhUw9p0sWc5TOP_FNEAxAlggYqYzRsPUyUBFPTfUewxBaWVdYOQTzzvm_K3pNOLP3dIDWCAqfgYF2AmQ-N7x4qvvLBXIS4rG1vAAb_gUQerJObe7xARYICnwaK7lwJilZVnhzeAqcgqkgbv1QLjpib6bmfxmBpt2BVggQ45DBbNztzFUpoM__rs9lH_OxF5M3-KE8-GJisWZycgGWCDhI5gW7MB1JONY3SGuMKRK4MZ5QeW5nifHEQQ62VyyhQdYIImnSvTkL7rkdeJN61LJ0fcXBVDseMEdYf_AcpL1SRC8CFggKaG_GqHW3bz0WTdc38B4Vjkejw0iViVMQhPIeY5ZKc4JWCARLkIzGiBF9dyPVd5gIbDI4SO9aUZukCE3IMg-7qYSqApYICYUlB7rBdZG7Gj3abzqQuDUxi77yllGKXZX06GoJsMSC1ggPNHSyPmMUg3Aff7Jm6kC3j08bb9vcOheybXoOrTcUXgMWCANl__tXYPVHNMwsIoW_VuxL64Tsnn-OpgFfrR8DRp9nw1YIHVneNycdOOLU3R8kOEfJziVFYbUQJCIZwnpRhNWcl9MDlgguuJ1CkKxRUy_6XCo6TlQSh7dC8nxXZQ_Afq4UTYJcxQPWCAdBzDaIwaretgVGUy9igR7kG6ke8zpcwWeH4Yry1G3goQYHBgdGB8YIA\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/ns/credentials/v2\",{\"@protected\":true,\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}}],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Earth101\",\"sails\":[{\"size\":5.5,\"sailName\":\"Osprey\",\"year\":2023},{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023},{\"size\":6.8,\"sailName\":\"Vulture-FR\",\"year\":2020},{\"size\":7.7,\"sailName\":\"Vulture-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"Oak620\",\"brand\":\"Excite\",\"year\":2020},{\"boardName\":\"Excite Custom\",\"brand\":\"Excite\",\"year\":2018}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:32:18Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhAEEGztEAPdW3ZNpyPgwhXBR_WYxScdIQ6eOccXJpuPXabuJFfERP5Mg36iCQDXBaMnrlryMj8UCKGm79ZBfISFVgjgCQCzJogScEKbbHFWyS4IAJ2pvdqL4_fgCRVYQOu0_Ttb4CYN1hAdo5USmFR12fnp8u5iYfWh4MgV1dQdwb5PXWic2FT5PQKYXXQUFRTVhGdmmLNmzewNcsrZc70krnsxBBjF43BL1hAHvMXvPOM5NXM3o-kJll7ISNAGDuewKaYC2wA2kJ4gKM41w7Gh99BgIn4AknUIyDwWdIc-EELSt9I_bGGy3ePj1hAQVmjX5HRfjtTos-Pmlr0eRQL4BNNDYaHjuX0AsAEXwk1JcBM_BewaF1ORSKMhrdAZv8WZ3JR4uYxnHborMZnl1hAv1ZEsXlAY78OgQDv7tBmdcpoVlRucpVdTng-3wcHDOarYo87lNzjA1_VSB6KaEpYdFNBQO-3azsm9uMtViHBvVhAEJDtSu5_p04VfdQ3SPUcTrs_6YwSzEBFNM2RJDz71WPGj94cZ-YG1wisaHXajRwhYOCUcXo5w4oV36PvUvm4VVhArLjhQMjceKtYfU1msi7XmeSTjP3GQdg6aFGMXHk6BHSu4WVItULdPs8u_TEqS6nrx-tBOTi78SsowUsi3yrzT1hAkjB0Evan4WjFBV8G6TujAIerlxjAPv66YXI5dZwwxB6sIDJCTqCCeQoF9_pUazD6gsjqQHhhcjk1rkoaXW7MilhA4Bb77fuHfzQzcNKx65SsHBuDeh10XMhI3d-vFuQgrZcEuHVegwHwJ61v2OFV9SUasL9GDG6zQYSdc11c8AO9qVhAp6CdzxPX2pV7NO5OjRyAxugzXw58-_T8rj3BExR7a2HXLwnTAgNfP87d7VU0O489Me8yhFtzl7_IcNKpN4EtWlhAZzRHMUTL2vQJMmZOvgJDA4GH9krfFdZsCsb4YlPwAff2TwMucYGWeU0ACeOb5QxiZn9TGC0wHLv7mt8y5w1BJ1hA89voi4qUIUWwo_QyHlqaEoWKjKbO_owlKg5xpfMQ07XR0HJ-OJW0loCsvUss_itpElgy6igfg_5oI5GkaodbT1hAO7WZFfDnxmmn7QRPXLXeg3rknRXotFzedDWuu3GQF9i24sS4cZP2MpRWK6XuFL-IsIlSFY7XLnjkhynsvXgNn1hA8DDXM0cnfKwf_KdeInotLfSvGlae7VkZ7y015MuuvlQ3F793UhUHiR8y4GDXsqjoLIaqw019LRW1xysdYU7vo1hAKitBBfYiajMYSGw0ail5uiYJqLpCO5J0BKrKP6Uq78lVqdHf2T9mvlJ03wRuT9qw6b5Pz6f3eYdU7SP--MGb2VhAPI0alIUIYk3VzSIKMl0jyOsZrXxJU1bWwoj3J1LR8j1wUC6tnSHL1DlhPlnxRXgnwY1buUmn4yPccVU5xdDvf1hA1J-exx7157xb8dWd1dxSXeQU8O1gqRjNDKdD23KcVLzl1qRc2OsEJ_mvkFtc-DPwrR9NtwwtRhkuNiBn_8LDnVhAHLYl3ug1AIgq5u85zkBh8ZznQ2naXH_dW5Kj277SAU43zsbHnMtLMp8fuxTEtj0ujZkUgkJuE_BSffYgfWK9ZVhALsp65OEmp_cikH4J1I1yGTeQvlUM7chPtF52peDx1P5ITkj42fvvXieIek9JaLVd4QwPWeua_XSIDGJb7mBjP1hA5834f5p5LRWkI2kb1Lx_15JQRB66xWNWtpPtBUYD0R_Gs-23CFTa2dPIjcObkqnP0MH4smF7AusT3ey19POz3lhAaYmLlSDtmpQKJ79yZQumb8vX_-Qxzu3sr2uw2CEuxzx0nQCIAFbdp0zJN3Y9izwCLNvgEK3jbSPkwqKE9X0qE1hA8RSWCLnPFWhBAyM9vccR07_QxjYh8wsbjW1PGjUhkrxOVQpJGGrBt_im2J7aiIw3tUFN_lKMBN39S6r3pt2mElhAs2fpbhlMO_NS8XpymfC2L_g4xCf3PdP2InDTbJeSl4i3XhyBLKHZGWDYK84qMgK-9rBJNC4eltpCbTrR-JcGV1hAPkgXTQgLz0ftYYVaUtbKiMAP1jmM_RwcY_TnsBQJb-HBlk_MD_V1iGhdv04pTqbX50gZYV0q11nFBb3ty2GA81hArsy2BGaMAPZz0YunBvJEkFKTzN3eNi7ZG3LTK2eqmYqliwl5wS23JJ7gyt8R-FcPyffkpCC6YB8Rc59WR1_CPFhAA3G3UejSofvpOSy6pWv1nzOHEPSoCXADsfqqtX8u1fMistknhZVdkV1mB1lLJtnjzAwRjxKDKPjN3F7Nco4W-VhAzRAvm7IONUJLyYJIj2EI6rpExJqLPcxdjnilKF4Jf6wbOwTLK2lXvI_5kSjpXkwOMd7nF_wfdn4LNQBeMjc0_VhASr4Omr_89jzPv5vraSuI9uDd_SKo9ZMwivYv4Iv4GJFO8gESwTWxi30d2C75leP71C0ctHILYPsAcyBH_owGpVhALK-9iyHowkOnmH1CliQ9EYJ-RWeRChFLSr6MKilPvYpwhmRPYibNK-vmn9kbTs_M54nzciO11dQqiT8yHIfV8FhAV5xo6Avv5NqUdcv7SRA4No4w6a1ftBa7XOnlrb_573CVvTEd9v7dq7cq9u_ZyTBM7qFH6n_DMl8MCg8h-ie9uVhAdlKzrzXPb3IDMRNtr4puoX6KqU14fB3Q-4ayZ-F85MNsgJtb6ZobkFYUYD2cKzjZWS7Fn0rB8kWWu0h1kPut6VhAW0k1qaSrNE2PV9C8wyEv8RFslUl6QkGesc2LgtqhwnjqBqnHh6me9xoQuOC-a_mP_1g_zAjwrYZWsI-cI30TLFhAupcLxCcA1qtAn24p245OrEHe93rIEfc4cgkoFBhvs8sVd3mJEohpqG1H9xujLKSOhFcPMVlRha6y8bf1NyOw4lhArVRFL_0ALfxoQCz_GFSMNKQTtI_8vUWo1CEUzzqCLE0to-Sxx_wma_ZKL42qiir3-egGvJgg2RMqCqlL_GpxF1hADLH4R0HwGl-iBHQvSrU-kq20u96uvIJuuCykrfccyBgpj4C9d-S8v-FKMpf9F73ZGKH43KGzpWJ2g-3txlbyT1hAgEdEI0dEaP-TJbGDeGUpxYDgNuWuBdeGjm1Om5DitZVCW5caACL_Tnnq4i_1liHhg1IVxoSXekvnZQ8dbUt021hALu-b6T11mKTwXjZTamd0xB4GMM4p1I_fH03zlDDfoYawmGAixe-PsA-BQyajcKVJEQgZ1AuV_VEnAyOAQNQSA1hA6ttTwQGDxgWQRbuHpYswgI-o7YT-qyfTAloD3b6agYX_i27kUKGbOlyokSWOhnzPOueXqKWYNqZuG82REk1mBlhA42w_ovsRm82MEmMSKDnhD5hBtyP4dEgcRW8pg6ctZxMR31q455dWdqWeA7FaiTePbOoB-trFy89dVl4Kczt681hAdXM42rFd8iIp8teBVEH3EGFPOM2Qzmhx6muOQOLaJnPT13xoTfVDweEDAAOGF5d7FOF_cFDwvYTGgllDXDolJVhAr1G9Jjo7zzLUTgnp0GEL5AGZA0BnC9pg_kjkQunkxUB5KhNvHS_ggTG-icn9-E0vTXmJxd7AJgvFFQ4cKge4eFhAlE9ojp4rOQF3yIdcLrnPEvrEsuZEpxkmN0koStEecwcUR3h_pe6qydZ9FZgjmLI6iD8RZ0y07ihz1AaRWmi8a1hA5z_FhhdFA3X7Lt1Nuxs35aD7D0_FnJXeZ6zEhG45k7LPAl6DCMQGr7Oh7FWAsbGSMQFydXAcDVHkmzU_qrxA5VhAVnVrYD0QZnkJEATb3h-U47TArdYt9fHpUzepMx1rZQnc4MAo2gFPYUXoQtkGqAl1BHaue_XkGYFThwZ8ocjHgFhArjJ5OZO4tKS3NkuwQ-HJs9Z14QLHz5gyhmMtbn9WNH63bhYOVRwF-CuamdfzZfh7QzuvQ_Jo32fxJK1eKVvjEVhA9mdnSjFwaZvwj5npz3wDSKzIDSQefvdVJwt5C8Acpg0rQhzVdS7my0EUrUi47010CpcGJXMlw_9dzw0iR9VqWFhA0V4Qm_fD6JUEXHNXLane1wmfyFNRYgy6Fpc4Hy_CkYgLzmTQsHX7XqicTRmfmMuOGi4xDFRKF3OhoMrkGf79I1hA_ju8-mgi3bPtpv3oslwp8ytoCUMOrLQjIkdTZx_9O-qLgabZJlwiQTMgx9qHWOncMk7cAB2df95SRwpmdHYzG1hAiIS6o0DZl2oQ4e20WEKPQG89wby-SJk6qIX__CvI3U6DH5qsTRK2GbS6iDf9N8GcS7sltToSakYDWAlt4As9WVhAg65DymZGa8t2hFuc8DsPIEnKXgp-oHeqMKsDBjnp6nkkpVAlWOitkHN43obio3rSRdwNo4L2_FATT0TRBLx3U1hATMKI6-ANYA5H3-HPBOBPFTZPqlc_DjXTmw25lKiSMeuYThW1qWAmEt3EKwDJLb9W9W4hOobJhOdYhbCQP1d5rFhAozYEs6ru62aaJkg2MoNZ_KYwJgpAAXoipgQTDTIqSSo4IuQtfmh9FGgUKAinGwN6SGqLCSbrmswB48RYAU_Ce1hAuQbBeIzJXSDUMxUCAxRAIlQHJcyXd2FgIfQ0Id1YfmIsbxOuX2uJlT-5LWK-2FZLfFBsSxa-klc2-Z5lDvoF-VhAoRDnHXmPRLieHe1ihZOgsVGIqU9IkFq4yZ0XIIYoFOEiwVTwqDlHxXo5rf8HTqEJT5vvFTUyZcJkxWCMj4WhylhA8EjVP6uO7OK3Ny10H0ppPMZ3lPCPIRK0Yr7mVb9z4STMUcVp1symNIQLxmKd0Ga8iJvv28zgU1SO6IGUtv-fGVhA1meWFNAbTbe4mToXDssQtHakUMEh9EsPB4Xzc6P249geGL6lFtaoVeAvDz1QkFLYwMmopw71Y25JxIgtpo35QLAAWCBDjh1PWtdTTir6l5slWqCCRPltlCJ1guvHtv14Csja1AFYILzPJcyW3DuLd_3Mno9zKBJ8WoyIe_mxGeji-CGeIbquAlggaz0Ocyle39q8tfUVHtKO48iQTudSfjTToFFvF4RDtr4DWCB60qenP5i0mWJW6Sb75pGoyYjtazDwZOPEKXKIwxIlwgRYIDSmqSzzQyQ_mpStErtsVdyAAHU_WEzlAEvORcnYoJ28BVggk4MrABs4T39Fmado7T0cXulTbfyk_rcMSHUs28cXetQGWCAPb93NPFIykiS-6SEwUEdGt4byU71wuqIzjQmFDBa1FgdYID9AlF9C4hjRQhzOWofLlr6u57wbI6AKOggoN69ZEwt0CFggKXuxBP8TDxiZOQPsTWa0cbuz1rRJH0lU4dNyq3TEDiUJWCCs6O88q63Uy50r0P0La9UCvaQ9HdAVeUTsxRbyK9Ds0QpYIPMGUJuQ7OxLN00ZsV-q0K1q1ZYyHmKAhJtJeFyCZnEQC1ggC_9tRiXiC91z_3zxMXLmhnouuIBDEHfG7wa-30sw81cMWCBMmW4xlhnuea5CnGzVAUSS5K01GwZp5ytCrkGA0pngwQ1YICedYG8ZkveXOswDE43aP8QfHBSubZNuNslvw-Qp58jMDlggI4tR74Q0IqG7mBznY9zU3n13woFjl7_REr2-LU5l_6cPWCArSmK0FH3ES0fvLz_R5_4EMmpi1vJKsgmAiEB7lnPQH4MYNhg3GDk\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/ns/credentials/v2", { "@protected": true, - "name": "https://schema.org/name", "ExampleAchievementCredential": "urn:example:ExampleAchievementCredential", "WindsailingAchievement": { "@id": "urn:example:WindsailingAchievement", @@ -25488,14 +31154,12 @@ "@id": "urn:example:achievements", "@type": "@id" } - }, - "https://w3id.org/security/data-integrity/v2" + } ], "type": [ "VerifiableCredential", "ExampleAchievementCredential" ], - "issuanceDate": "2024-04-07T05:06:42Z", "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "credentialSubject": { "achievements": [ @@ -25579,11 +31243,11 @@ }, "proof": { "type": "DataIntegrityProof", - "created": "2024-04-07T05:06:42Z", + "created": "2024-04-14T05:32:18Z", "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod", - "proofValue": "u2V0BhVhAqYSIiU8I8_K6Z6q0E_aFOHjy58rFXWuouB2qMnHen27KFOYKgO_OFuhscOpDI1OZkRUhyUMZ7DMbmDDsrqbqkVgjgCQCw_GA_l7sCMMM0NzITNPhTB3Qk4s3Zz4Jqa9NwE04trKYN1hAKKbPyaAxb1wpS8mIxMjpySdG3avu-a3ISoQ2m-Xeqg6PqnwPA6zbLnDBAvTzzAicYyj4DnPXy5_fhKT9NUerrlhAimNffUmT222i3FKqibw9WPUQx8TPZFnqIRRpCqapwsxdrrVXKDlypsMaPYCA5_FBmT0K0hdUhNivf9xxLoSBdFhAbeZON53qz7f11bwkDqigSSNt7NVS-6BPUtnaqOWnHSK5hLUoWZ9QjxBIOuj6Zt3FMcwE8TIxcUUcjnSUsU4IfVhAk4EgVDlxS-fqoV4pnLKdgZnPsZqos82JPDdG-N1d2AbVIc0rauHlhlW6Hw75-tvOItyVc6DzcdhqcWJIgPSnQlhArhtuywhLYyly3NBuvDtu-7OWdJo0tvNtYaC7xhhxG_ZDR6LghwNHvA1pczQu-5FsXWco9VHIApR7J1f4znnk_lhAJGYw5Eg1mr4xtNNZsaFkamQTD1VbDxuAYIR3HDQOUbPW36YkTcf_BOP-0nAZ0u_cVccYAzC00EgIw4W2i8uDmFhAZsWvkWDGwJUkKDEDdjBs-UXW8x6Be9UrI4-H0AkM0LlhTElWO1JJw4waLE0MkSbLp7St5w0JZEwtWTnLNHb761hA3VQJ0mr3LXKYL--hthuvQeVHeR3ssY3q-cEdfGGNA9EZgyTwGLz0l9R2-OqLyQZBwQWkPzSlDTHw7qDLA2gZtVhAaegjPcgE_AXx4USBrtbgC6I8-4zOd0Bfllul8tOl1GaK1asNgdWvCptO65_CBUqSkN_r0mMIOmzpkWVPFTJTkVhA4eaimna9jJgnlzlbRL3Ygx0knzLowDvO7dKJ4sP_yu8YE2tCsqv2juu7tqJUa7mlQrSBVCTskofqe9xm9N4u6VhARatUaf2aoBRrzFj0ClRscECTD1xmeifrK3F90R8csmXNR4MS_RWVg_p0GfIqNpWl1xNXj68G4arWIpNeYfwd8VhA49gg_jPOBy8QgjkjX9l2LZJINuawO0Va7_QjXuu9fJJ_dKeunXm_9xPQEMhYEAD2KryP9PxYbKSnZtVZnPpxC1hAuuMtX2nO4-xstLw4cCE2B5VZG182YOAx_vTtBoc0EUEoUtfx9UVtyaY5TE-7sGRjiRq19QUfw7fYGgzDTfXiRFhAnMnaCZY0dZDk-v4_UWPRID70V-AJpuN3dbLDXwHa_sjk5UMEnSfjBGJ3dqriQFdH9wlWZHNEeBFfWCRz2zugn1hAJcVPxVcl2pd2dFo6hWk3k5o8PIQzd-nKe6xCS5eHhJPKC-gYkvGOPjYL8lXumtDTUo1rwW64RYhbn92qVymktFhACVeSwKiurCXvkZL13m8P0sSqEba7kXV5TU79QCTqVwdBN6-iDzEXLcMuOo1O7-M4oNT7QCOR3FyFnu_KqRhN9lhAyGCJITQHcEW7cplTQ1pYIkUd0TfRBu41Yxzl_ZBPp6zN0KiEO_r589xvISVySDPsE_RYdZ2WYwkJ76OrWocPrlhAv0WtqLorh3rM_ccWFLtrYAUOHIz7ztskhMqm9XVkXxMyZbdF23UFoTNOv1T9IB1ydyaN6j-gVBbq6_0CHIE8p1hAY68oDCZ2-7vlioc6__ZMCJROM7Bi0F9Zj-MN3pYUbTY_WE84kP01ffO9L1yPHePKx_dSvg8vOiUR4m7YZ0mdklhALnnV50jp-KLJt-0uWgfwinHTMCYKg5TXutCPm5ajIU6DyJSYBgEjDj94Nuxv4K_WKpmsUXuMIsCrMcYThyTaclhAbdjDCw-4JlIHqCHxrlbUSbjyPEoSH31bOfz9-wcjDmhtM1HTY84grW4utBLCwj1z3NFOkESRCvTfgInKqxeZmVhAgCYjx_Q4CGd4KJ_0XD9JlRi05uXlCrJeBHd8AqWZmIQzq8bjt8h2ZypoC8a-zWqbjbnV6P-4KZdZSbrfCwuliFhAR9bz41EMDRN7g4sIRKVU1fFtR1hPbD8GRcg2pHKq9kXM8j4tPz3kAHrNnE3c8078qWGRYto2pxLy-2cvaeJUxlhAADHkMki3kNcO-eIyIMd5HAMFC4bKTI0NQJ4yNZ4xONL8WDhRQUEw4QdGFrmUZ5aWu0CB5A0fAWtipmTiiT2lKVhAqEdHIvivznFxlkBaSAqsoMFxhvNY-2z0YYLydbgMoX8yJ45PwUYIvaLbWCBjAWklaFuMOIh25e4ARPaP5hVCblhAeWW7NI3KJer9znklUNiddto8jkm06zOxEWIbyZiFtEAB0fhXNa4dw5QJfgF1GNlyGWxjVDxPzCcZN4XONBFs2FhAU72CpgfR_Xn0UnimG8EdUwLJJoSfozYwx6FhbzugHcvAdipixoZ7OenVVVKEb_OSVfRRyRwAiqGheZfsq4LrNlhAdvnAylAW2pO5gcOKKFGICvFs3Ir3Swh8neL2Krn1swE_tZ_6SqdENcGUxkj9PoGtXUrm69jIPioq0FPixipWLlhAskk3OmoOkmKF1PXHa6qGffp2KVPOpcOFMDuuaVDplqrMpBNJiv1dF6jxQXmCEMP5vCWCMEUzyTJcnzHi8-0GoVhA9B8VZvAfqsZwHc5xptJ6aXuu78gM_7JX7DVvoKxK3Wj-QLJE71edPbotDL3iqGtHR6_3RUAmH9w_zJckHcPdelhAF3dGYhZjUunnmoIOWlpJnO9iOrFh61RwGgAEW6Lc8OKEBO-FwLHohLrXY21qcwuQ-AuVj7HeeyYANk8OaRlW0lhAo4rQN1xQHUwrwXQyw_fN30U7T2NTL3RwDvnn2-Zr8JMxh_s3mz3kym5Fb6Nb2WGchDpIjEqUVsFVVM-rNrsEilhArceAJbJdsJoLhauwshRGi_2yayalQEYhFMyUnN54dBJ2J4kApzPO-K9EJmv6k8__qHfsR8sGEabmUr9u7QJma1hABWvR76tRdby_Z1h056zA7MeINEK275vzwly9tfhTNfiQiDxXERkmtTeIjtlFf0_7uwM7uVH4QRZnmdliaDuhRVhAGpQcSBme6DQSFhpMPwbcBWbifM7JNr8oqEKmWT8k-Kkrt8-kzil7j3p2cgiU7P2PPcZMtkR4UDnFEwfIcjBtqVhANjgCSJfv0I6U1Szxtv-klkRNE2pflGrzgO0LzFwuMYD0CXE9AmHmy7NnGXLS97vbDGL7c8pShKiFQXw4n1B2nlhAD305UXHTpEYEemviqnwPAzV5Hju6VGGxWv1LKbLW6mgkeeyzPSPQT7uK8RaUib4V8SOWKjNj1tweJ74R9M4MuVhAbY0RvGItaKKsSD5GtWdnUR6nqh9DokoAlK1Xv4Jm31TOLzmI3BhKyATlmtp1UudzAtLEm0wASz4iSVwGV8pwrFhA8s6fT0WVbhd4R7iE_Mz4yyhpvTd5kB1c6RXbrXVfw_k7bSU6UUse0ucqp6Db8REBLTL387T4j3pG41urO5GgeVhAN4wl7vOvF4pBV25weHnotlGr9YzL_ecRogzUkqbnFuq0OSOzxUlM6Jnxfvj46KMIXNDwNCDHJwqMnr1yW8map1hAfDDXQWDcqHjlTsAJWfplQlcG_UjmShweqQAFODTiczT7m_YavSMeOCYE-ikdlSxX8mmoJF_egnfA2Nw5jIsu9VhACoLUrsSjCcoInXaarIMlTkjRayX-qblmWFBD4BrpJ58V4zh0TsyVcaqrhv79VS8Axd3NkCs7_KvaCYjOflAqT1hArnzKtNMtqlq1P95nb0SAJ4BvJobavK_4GACXIGyHFoooS42H5qqNPb7b7IJZKKegv11QZqqSud0kIbAVH6hi-FhAh-0KefxFy3Nqrl3FC2sywsc6eMg0thdgkaJY56URKARFr4tKtVf6IWzCEDa9WfbHVeuC2-OcpeM87wEr0AL6SVhA1qmsnAEuMBoehLWDMda3OmpKQ48Gl56F7Vd62zqBDKQvYorb2dVhlEgMHMHGzsXYa4BEdFMSN7oQ3dteqGyfzVhADS0Jvmg8KOjKmhQ440sdJmG6jBg5GOhl2UEoeAuKDasZYdrpcl6h-MeI2Wwf7gs8Fw5vF8DwSOj6aQeCKmMSlVhAg-qlvas6Pm21j03s5nr-9kBEgKRg9gwJqGjFaqtUzqiflEaQCWTMFl-6jwZBqF-bL8Qi_fAsB3K9r45MDGnzQlhAOcvCVv8q3sBAssauLPcBzZrRWuk7mR0siVyitivxri4sqho949bLjS7MTjxWg1mfymWFEtdFolmx0RQS1a5J5lhAJgJJKq0E0XvqunVU-JCrI3Xu1Tj79HkEPOF4j_U7PW9zAjO5EAaPZdFYhLjYPVChRZHz8siELtBmFsrPGeKtPVhAIAnWkDV1_HROQ5YBh5k7EAChgkuVXqJrvIS5lxBJycRxwBpw-REUxg80bo2hXGOiLy7eYpAget7IKOBOGaMNv1hA2SXvNb1v7_BJHwc8C81dYv_tShfsqoID_uly7O5lXJcxkkuGfddPV68a1TVxJn3zWQCfmrLD12xMtvzCBTYOnVhA8ML_3jm2BpFYMKRlGniX__dUf2f76-aF9JuuSY68okBrsp1vJWx_jiHwHNqKWGZFoxv5AacyWN0pxuQGjTyuPVhADuQMc8USLCLLJM0RcwKExqPJqhYepEQIBPKwG_hc4ftgnTkde2KBgXnFG2vP0bDzfz9rRfsz4ZE_o9mP9TL3DlhAj-iGPIZDzC5NL3DSosPYjfWLGLU_rVK5doa17AScmkF4RwXW5DiYZuzkcNVdTqPIPP1fSWC6VIiIMPSYo8u5mFhAt0vP-jua9l-WFg2l4nhNfMaRUCuZYmPELyZNSrWU6FjlTIZIGCqHQxcZmJBq8uo9DTVHMTNtPaS5OqMIxgkcoLAAWCAATzFL9y3ehhn-pfVvWNTalZ-rh9fBigZH-gi_p5bDkQFYIDaTAVGMUMqMr9mCRYfchfrLYhUw9p0sWc5TOP_FNEAxAlggYqYzRsPUyUBFPTfUewxBaWVdYOQTzzvm_K3pNOLP3dIDWCAqfgYF2AmQ-N7x4qvvLBXIS4rG1vAAb_gUQerJObe7xARYICnwaK7lwJilZVnhzeAqcgqkgbv1QLjpib6bmfxmBpt2BVggQ45DBbNztzFUpoM__rs9lH_OxF5M3-KE8-GJisWZycgGWCDhI5gW7MB1JONY3SGuMKRK4MZ5QeW5nifHEQQ62VyyhQdYIImnSvTkL7rkdeJN61LJ0fcXBVDseMEdYf_AcpL1SRC8CFggKaG_GqHW3bz0WTdc38B4Vjkejw0iViVMQhPIeY5ZKc4JWCARLkIzGiBF9dyPVd5gIbDI4SO9aUZukCE3IMg-7qYSqApYICYUlB7rBdZG7Gj3abzqQuDUxi77yllGKXZX06GoJsMSC1ggPNHSyPmMUg3Aff7Jm6kC3j08bb9vcOheybXoOrTcUXgMWCANl__tXYPVHNMwsIoW_VuxL64Tsnn-OpgFfrR8DRp9nw1YIHVneNycdOOLU3R8kOEfJziVFYbUQJCIZwnpRhNWcl9MDlgguuJ1CkKxRUy_6XCo6TlQSh7dC8nxXZQ_Afq4UTYJcxQPWCAdBzDaIwaretgVGUy9igR7kG6ke8zpcwWeH4Yry1G3goQYHBgdGB8YIA" + "proofValue": "u2V0BhVhAEEGztEAPdW3ZNpyPgwhXBR_WYxScdIQ6eOccXJpuPXabuJFfERP5Mg36iCQDXBaMnrlryMj8UCKGm79ZBfISFVgjgCQCzJogScEKbbHFWyS4IAJ2pvdqL4_fgCRVYQOu0_Ttb4CYN1hAdo5USmFR12fnp8u5iYfWh4MgV1dQdwb5PXWic2FT5PQKYXXQUFRTVhGdmmLNmzewNcsrZc70krnsxBBjF43BL1hAHvMXvPOM5NXM3o-kJll7ISNAGDuewKaYC2wA2kJ4gKM41w7Gh99BgIn4AknUIyDwWdIc-EELSt9I_bGGy3ePj1hAQVmjX5HRfjtTos-Pmlr0eRQL4BNNDYaHjuX0AsAEXwk1JcBM_BewaF1ORSKMhrdAZv8WZ3JR4uYxnHborMZnl1hAv1ZEsXlAY78OgQDv7tBmdcpoVlRucpVdTng-3wcHDOarYo87lNzjA1_VSB6KaEpYdFNBQO-3azsm9uMtViHBvVhAEJDtSu5_p04VfdQ3SPUcTrs_6YwSzEBFNM2RJDz71WPGj94cZ-YG1wisaHXajRwhYOCUcXo5w4oV36PvUvm4VVhArLjhQMjceKtYfU1msi7XmeSTjP3GQdg6aFGMXHk6BHSu4WVItULdPs8u_TEqS6nrx-tBOTi78SsowUsi3yrzT1hAkjB0Evan4WjFBV8G6TujAIerlxjAPv66YXI5dZwwxB6sIDJCTqCCeQoF9_pUazD6gsjqQHhhcjk1rkoaXW7MilhA4Bb77fuHfzQzcNKx65SsHBuDeh10XMhI3d-vFuQgrZcEuHVegwHwJ61v2OFV9SUasL9GDG6zQYSdc11c8AO9qVhAp6CdzxPX2pV7NO5OjRyAxugzXw58-_T8rj3BExR7a2HXLwnTAgNfP87d7VU0O489Me8yhFtzl7_IcNKpN4EtWlhAZzRHMUTL2vQJMmZOvgJDA4GH9krfFdZsCsb4YlPwAff2TwMucYGWeU0ACeOb5QxiZn9TGC0wHLv7mt8y5w1BJ1hA89voi4qUIUWwo_QyHlqaEoWKjKbO_owlKg5xpfMQ07XR0HJ-OJW0loCsvUss_itpElgy6igfg_5oI5GkaodbT1hAO7WZFfDnxmmn7QRPXLXeg3rknRXotFzedDWuu3GQF9i24sS4cZP2MpRWK6XuFL-IsIlSFY7XLnjkhynsvXgNn1hA8DDXM0cnfKwf_KdeInotLfSvGlae7VkZ7y015MuuvlQ3F793UhUHiR8y4GDXsqjoLIaqw019LRW1xysdYU7vo1hAKitBBfYiajMYSGw0ail5uiYJqLpCO5J0BKrKP6Uq78lVqdHf2T9mvlJ03wRuT9qw6b5Pz6f3eYdU7SP--MGb2VhAPI0alIUIYk3VzSIKMl0jyOsZrXxJU1bWwoj3J1LR8j1wUC6tnSHL1DlhPlnxRXgnwY1buUmn4yPccVU5xdDvf1hA1J-exx7157xb8dWd1dxSXeQU8O1gqRjNDKdD23KcVLzl1qRc2OsEJ_mvkFtc-DPwrR9NtwwtRhkuNiBn_8LDnVhAHLYl3ug1AIgq5u85zkBh8ZznQ2naXH_dW5Kj277SAU43zsbHnMtLMp8fuxTEtj0ujZkUgkJuE_BSffYgfWK9ZVhALsp65OEmp_cikH4J1I1yGTeQvlUM7chPtF52peDx1P5ITkj42fvvXieIek9JaLVd4QwPWeua_XSIDGJb7mBjP1hA5834f5p5LRWkI2kb1Lx_15JQRB66xWNWtpPtBUYD0R_Gs-23CFTa2dPIjcObkqnP0MH4smF7AusT3ey19POz3lhAaYmLlSDtmpQKJ79yZQumb8vX_-Qxzu3sr2uw2CEuxzx0nQCIAFbdp0zJN3Y9izwCLNvgEK3jbSPkwqKE9X0qE1hA8RSWCLnPFWhBAyM9vccR07_QxjYh8wsbjW1PGjUhkrxOVQpJGGrBt_im2J7aiIw3tUFN_lKMBN39S6r3pt2mElhAs2fpbhlMO_NS8XpymfC2L_g4xCf3PdP2InDTbJeSl4i3XhyBLKHZGWDYK84qMgK-9rBJNC4eltpCbTrR-JcGV1hAPkgXTQgLz0ftYYVaUtbKiMAP1jmM_RwcY_TnsBQJb-HBlk_MD_V1iGhdv04pTqbX50gZYV0q11nFBb3ty2GA81hArsy2BGaMAPZz0YunBvJEkFKTzN3eNi7ZG3LTK2eqmYqliwl5wS23JJ7gyt8R-FcPyffkpCC6YB8Rc59WR1_CPFhAA3G3UejSofvpOSy6pWv1nzOHEPSoCXADsfqqtX8u1fMistknhZVdkV1mB1lLJtnjzAwRjxKDKPjN3F7Nco4W-VhAzRAvm7IONUJLyYJIj2EI6rpExJqLPcxdjnilKF4Jf6wbOwTLK2lXvI_5kSjpXkwOMd7nF_wfdn4LNQBeMjc0_VhASr4Omr_89jzPv5vraSuI9uDd_SKo9ZMwivYv4Iv4GJFO8gESwTWxi30d2C75leP71C0ctHILYPsAcyBH_owGpVhALK-9iyHowkOnmH1CliQ9EYJ-RWeRChFLSr6MKilPvYpwhmRPYibNK-vmn9kbTs_M54nzciO11dQqiT8yHIfV8FhAV5xo6Avv5NqUdcv7SRA4No4w6a1ftBa7XOnlrb_573CVvTEd9v7dq7cq9u_ZyTBM7qFH6n_DMl8MCg8h-ie9uVhAdlKzrzXPb3IDMRNtr4puoX6KqU14fB3Q-4ayZ-F85MNsgJtb6ZobkFYUYD2cKzjZWS7Fn0rB8kWWu0h1kPut6VhAW0k1qaSrNE2PV9C8wyEv8RFslUl6QkGesc2LgtqhwnjqBqnHh6me9xoQuOC-a_mP_1g_zAjwrYZWsI-cI30TLFhAupcLxCcA1qtAn24p245OrEHe93rIEfc4cgkoFBhvs8sVd3mJEohpqG1H9xujLKSOhFcPMVlRha6y8bf1NyOw4lhArVRFL_0ALfxoQCz_GFSMNKQTtI_8vUWo1CEUzzqCLE0to-Sxx_wma_ZKL42qiir3-egGvJgg2RMqCqlL_GpxF1hADLH4R0HwGl-iBHQvSrU-kq20u96uvIJuuCykrfccyBgpj4C9d-S8v-FKMpf9F73ZGKH43KGzpWJ2g-3txlbyT1hAgEdEI0dEaP-TJbGDeGUpxYDgNuWuBdeGjm1Om5DitZVCW5caACL_Tnnq4i_1liHhg1IVxoSXekvnZQ8dbUt021hALu-b6T11mKTwXjZTamd0xB4GMM4p1I_fH03zlDDfoYawmGAixe-PsA-BQyajcKVJEQgZ1AuV_VEnAyOAQNQSA1hA6ttTwQGDxgWQRbuHpYswgI-o7YT-qyfTAloD3b6agYX_i27kUKGbOlyokSWOhnzPOueXqKWYNqZuG82REk1mBlhA42w_ovsRm82MEmMSKDnhD5hBtyP4dEgcRW8pg6ctZxMR31q455dWdqWeA7FaiTePbOoB-trFy89dVl4Kczt681hAdXM42rFd8iIp8teBVEH3EGFPOM2Qzmhx6muOQOLaJnPT13xoTfVDweEDAAOGF5d7FOF_cFDwvYTGgllDXDolJVhAr1G9Jjo7zzLUTgnp0GEL5AGZA0BnC9pg_kjkQunkxUB5KhNvHS_ggTG-icn9-E0vTXmJxd7AJgvFFQ4cKge4eFhAlE9ojp4rOQF3yIdcLrnPEvrEsuZEpxkmN0koStEecwcUR3h_pe6qydZ9FZgjmLI6iD8RZ0y07ihz1AaRWmi8a1hA5z_FhhdFA3X7Lt1Nuxs35aD7D0_FnJXeZ6zEhG45k7LPAl6DCMQGr7Oh7FWAsbGSMQFydXAcDVHkmzU_qrxA5VhAVnVrYD0QZnkJEATb3h-U47TArdYt9fHpUzepMx1rZQnc4MAo2gFPYUXoQtkGqAl1BHaue_XkGYFThwZ8ocjHgFhArjJ5OZO4tKS3NkuwQ-HJs9Z14QLHz5gyhmMtbn9WNH63bhYOVRwF-CuamdfzZfh7QzuvQ_Jo32fxJK1eKVvjEVhA9mdnSjFwaZvwj5npz3wDSKzIDSQefvdVJwt5C8Acpg0rQhzVdS7my0EUrUi47010CpcGJXMlw_9dzw0iR9VqWFhA0V4Qm_fD6JUEXHNXLane1wmfyFNRYgy6Fpc4Hy_CkYgLzmTQsHX7XqicTRmfmMuOGi4xDFRKF3OhoMrkGf79I1hA_ju8-mgi3bPtpv3oslwp8ytoCUMOrLQjIkdTZx_9O-qLgabZJlwiQTMgx9qHWOncMk7cAB2df95SRwpmdHYzG1hAiIS6o0DZl2oQ4e20WEKPQG89wby-SJk6qIX__CvI3U6DH5qsTRK2GbS6iDf9N8GcS7sltToSakYDWAlt4As9WVhAg65DymZGa8t2hFuc8DsPIEnKXgp-oHeqMKsDBjnp6nkkpVAlWOitkHN43obio3rSRdwNo4L2_FATT0TRBLx3U1hATMKI6-ANYA5H3-HPBOBPFTZPqlc_DjXTmw25lKiSMeuYThW1qWAmEt3EKwDJLb9W9W4hOobJhOdYhbCQP1d5rFhAozYEs6ru62aaJkg2MoNZ_KYwJgpAAXoipgQTDTIqSSo4IuQtfmh9FGgUKAinGwN6SGqLCSbrmswB48RYAU_Ce1hAuQbBeIzJXSDUMxUCAxRAIlQHJcyXd2FgIfQ0Id1YfmIsbxOuX2uJlT-5LWK-2FZLfFBsSxa-klc2-Z5lDvoF-VhAoRDnHXmPRLieHe1ihZOgsVGIqU9IkFq4yZ0XIIYoFOEiwVTwqDlHxXo5rf8HTqEJT5vvFTUyZcJkxWCMj4WhylhA8EjVP6uO7OK3Ny10H0ppPMZ3lPCPIRK0Yr7mVb9z4STMUcVp1symNIQLxmKd0Ga8iJvv28zgU1SO6IGUtv-fGVhA1meWFNAbTbe4mToXDssQtHakUMEh9EsPB4Xzc6P249geGL6lFtaoVeAvDz1QkFLYwMmopw71Y25JxIgtpo35QLAAWCBDjh1PWtdTTir6l5slWqCCRPltlCJ1guvHtv14Csja1AFYILzPJcyW3DuLd_3Mno9zKBJ8WoyIe_mxGeji-CGeIbquAlggaz0Ocyle39q8tfUVHtKO48iQTudSfjTToFFvF4RDtr4DWCB60qenP5i0mWJW6Sb75pGoyYjtazDwZOPEKXKIwxIlwgRYIDSmqSzzQyQ_mpStErtsVdyAAHU_WEzlAEvORcnYoJ28BVggk4MrABs4T39Fmado7T0cXulTbfyk_rcMSHUs28cXetQGWCAPb93NPFIykiS-6SEwUEdGt4byU71wuqIzjQmFDBa1FgdYID9AlF9C4hjRQhzOWofLlr6u57wbI6AKOggoN69ZEwt0CFggKXuxBP8TDxiZOQPsTWa0cbuz1rRJH0lU4dNyq3TEDiUJWCCs6O88q63Uy50r0P0La9UCvaQ9HdAVeUTsxRbyK9Ds0QpYIPMGUJuQ7OxLN00ZsV-q0K1q1ZYyHmKAhJtJeFyCZnEQC1ggC_9tRiXiC91z_3zxMXLmhnouuIBDEHfG7wa-30sw81cMWCBMmW4xlhnuea5CnGzVAUSS5K01GwZp5ytCrkGA0pngwQ1YICedYG8ZkveXOswDE43aP8QfHBSubZNuNslvw-Qp58jMDlggI4tR74Q0IqG7mBznY9zU3n13woFjl7_REr2-LU5l_6cPWCArSmK0FH3ES0fvLz_R5_4EMmpi1vJKsgmAiEB7lnPQH4MYNhg3GDk" } }, "options": { @@ -25670,13 +31334,13 @@ } }, "operator": "notStrictEqual", - "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:117: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:211:17)" + "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)" } }, { "type": "test", "title": "MUST verify with fewer array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithLessThanFullSubArray\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25686,25 +31350,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:35e50aef-20fd-40d5-a929-a4960d68777b", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:2c9ec7a0-3e50-470c-8a09-cbe51e2ea78e", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify with fewer array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26076, + "_idleStart": 32474, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 296, + "duration": 203, "state": "failed", "err": { "name": "AssertionError", @@ -25715,15 +31379,14 @@ "request": {}, "options": { "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"name\":\"https://schema.org/name\",\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuanceDate\":\"2024-04-07T05:06:42Z\",\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sails\":[{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-07T05:06:42Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhAqYSIiU8I8_K6Z6q0E_aFOHjy58rFXWuouB2qMnHen27KFOYKgO_OFuhscOpDI1OZkRUhyUMZ7DMbmDDsrqbqkVgjgCQCw_GA_l7sCMMM0NzITNPhTB3Qk4s3Zz4Jqa9NwE04trKYIlhAKKbPyaAxb1wpS8mIxMjpySdG3avu-a3ISoQ2m-Xeqg6PqnwPA6zbLnDBAvTzzAicYyj4DnPXy5_fhKT9NUerrlhAimNffUmT222i3FKqibw9WPUQx8TPZFnqIRRpCqapwsxdrrVXKDlypsMaPYCA5_FBmT0K0hdUhNivf9xxLoSBdFhAbeZON53qz7f11bwkDqigSSNt7NVS-6BPUtnaqOWnHSK5hLUoWZ9QjxBIOuj6Zt3FMcwE8TIxcUUcjnSUsU4IfVhAk4EgVDlxS-fqoV4pnLKdgZnPsZqos82JPDdG-N1d2AbVIc0rauHlhlW6Hw75-tvOItyVc6DzcdhqcWJIgPSnQlhArhtuywhLYyly3NBuvDtu-7OWdJo0tvNtYaC7xhhxG_ZDR6LghwNHvA1pczQu-5FsXWco9VHIApR7J1f4znnk_lhAJGYw5Eg1mr4xtNNZsaFkamQTD1VbDxuAYIR3HDQOUbPW36YkTcf_BOP-0nAZ0u_cVccYAzC00EgIw4W2i8uDmFhA3VQJ0mr3LXKYL--hthuvQeVHeR3ssY3q-cEdfGGNA9EZgyTwGLz0l9R2-OqLyQZBwQWkPzSlDTHw7qDLA2gZtVhAaegjPcgE_AXx4USBrtbgC6I8-4zOd0Bfllul8tOl1GaK1asNgdWvCptO65_CBUqSkN_r0mMIOmzpkWVPFTJTkVhA4eaimna9jJgnlzlbRL3Ygx0knzLowDvO7dKJ4sP_yu8YE2tCsqv2juu7tqJUa7mlQrSBVCTskofqe9xm9N4u6VhA49gg_jPOBy8QgjkjX9l2LZJINuawO0Va7_QjXuu9fJJ_dKeunXm_9xPQEMhYEAD2KryP9PxYbKSnZtVZnPpxC1hAuuMtX2nO4-xstLw4cCE2B5VZG182YOAx_vTtBoc0EUEoUtfx9UVtyaY5TE-7sGRjiRq19QUfw7fYGgzDTfXiRFhAnMnaCZY0dZDk-v4_UWPRID70V-AJpuN3dbLDXwHa_sjk5UMEnSfjBGJ3dqriQFdH9wlWZHNEeBFfWCRz2zugn1hAJcVPxVcl2pd2dFo6hWk3k5o8PIQzd-nKe6xCS5eHhJPKC-gYkvGOPjYL8lXumtDTUo1rwW64RYhbn92qVymktFhACVeSwKiurCXvkZL13m8P0sSqEba7kXV5TU79QCTqVwdBN6-iDzEXLcMuOo1O7-M4oNT7QCOR3FyFnu_KqRhN9lhAyGCJITQHcEW7cplTQ1pYIkUd0TfRBu41Yxzl_ZBPp6zN0KiEO_r589xvISVySDPsE_RYdZ2WYwkJ76OrWocPrlhAv0WtqLorh3rM_ccWFLtrYAUOHIz7ztskhMqm9XVkXxMyZbdF23UFoTNOv1T9IB1ydyaN6j-gVBbq6_0CHIE8p1hAY68oDCZ2-7vlioc6__ZMCJROM7Bi0F9Zj-MN3pYUbTY_WE84kP01ffO9L1yPHePKx_dSvg8vOiUR4m7YZ0mdklhALnnV50jp-KLJt-0uWgfwinHTMCYKg5TXutCPm5ajIU6DyJSYBgEjDj94Nuxv4K_WKpmsUXuMIsCrMcYThyTaclhAbdjDCw-4JlIHqCHxrlbUSbjyPEoSH31bOfz9-wcjDmhtM1HTY84grW4utBLCwj1z3NFOkESRCvTfgInKqxeZmVhAgCYjx_Q4CGd4KJ_0XD9JlRi05uXlCrJeBHd8AqWZmIQzq8bjt8h2ZypoC8a-zWqbjbnV6P-4KZdZSbrfCwuliFhAR9bz41EMDRN7g4sIRKVU1fFtR1hPbD8GRcg2pHKq9kXM8j4tPz3kAHrNnE3c8078qWGRYto2pxLy-2cvaeJUxlhAADHkMki3kNcO-eIyIMd5HAMFC4bKTI0NQJ4yNZ4xONL8WDhRQUEw4QdGFrmUZ5aWu0CB5A0fAWtipmTiiT2lKVhAqEdHIvivznFxlkBaSAqsoMFxhvNY-2z0YYLydbgMoX8yJ45PwUYIvaLbWCBjAWklaFuMOIh25e4ARPaP5hVCblhAeWW7NI3KJer9znklUNiddto8jkm06zOxEWIbyZiFtEAB0fhXNa4dw5QJfgF1GNlyGWxjVDxPzCcZN4XONBFs2FhAU72CpgfR_Xn0UnimG8EdUwLJJoSfozYwx6FhbzugHcvAdipixoZ7OenVVVKEb_OSVfRRyRwAiqGheZfsq4LrNlhAdvnAylAW2pO5gcOKKFGICvFs3Ir3Swh8neL2Krn1swE_tZ_6SqdENcGUxkj9PoGtXUrm69jIPioq0FPixipWLlhAskk3OmoOkmKF1PXHa6qGffp2KVPOpcOFMDuuaVDplqrMpBNJiv1dF6jxQXmCEMP5vCWCMEUzyTJcnzHi8-0GoVhA8s6fT0WVbhd4R7iE_Mz4yyhpvTd5kB1c6RXbrXVfw_k7bSU6UUse0ucqp6Db8REBLTL387T4j3pG41urO5GgeVhACoLUrsSjCcoInXaarIMlTkjRayX-qblmWFBD4BrpJ58V4zh0TsyVcaqrhv79VS8Axd3NkCs7_KvaCYjOflAqT1hArnzKtNMtqlq1P95nb0SAJ4BvJobavK_4GACXIGyHFoooS42H5qqNPb7b7IJZKKegv11QZqqSud0kIbAVH6hi-FhADS0Jvmg8KOjKmhQ440sdJmG6jBg5GOhl2UEoeAuKDasZYdrpcl6h-MeI2Wwf7gs8Fw5vF8DwSOj6aQeCKmMSlVhADuQMc8USLCLLJM0RcwKExqPJqhYepEQIBPKwG_hc4ftgnTkde2KBgXnFG2vP0bDzfz9rRfsz4ZE_o9mP9TL3DlhAj-iGPIZDzC5NL3DSosPYjfWLGLU_rVK5doa17AScmkF4RwXW5DiYZuzkcNVdTqPIPP1fSWC6VIiIMPSYo8u5mFhAt0vP-jua9l-WFg2l4nhNfMaRUCuZYmPELyZNSrWU6FjlTIZIGCqHQxcZmJBq8uo9DTVHMTNtPaS5OqMIxgkcoKsAWCAqfgYF2AmQ-N7x4qvvLBXIS4rG1vAAb_gUQerJObe7xAFYICnwaK7lwJilZVnhzeAqcgqkgbv1QLjpib6bmfxmBpt2AlggYqYzRsPUyUBFPTfUewxBaWVdYOQTzzvm_K3pNOLP3dIDWCDhI5gW7MB1JONY3SGuMKRK4MZ5QeW5nifHEQQ62VyyhQRYIABPMUv3Ld6GGf6l9W9Y1NqVn6uH18GKBkf6CL-nlsORBVggKaG_GqHW3bz0WTdc38B4Vjkejw0iViVMQhPIeY5ZKc4GWCARLkIzGiBF9dyPVd5gIbDI4SO9aUZukCE3IMg-7qYSqAdYICYUlB7rBdZG7Gj3abzqQuDUxi77yllGKXZX06GoJsMSCFggDZf_7V2D1RzTMLCKFv1bsS-uE7J5_jqYBX60fA0afZ8JWCC64nUKQrFFTL_pcKjpOVBKHt0LyfFdlD8B-rhRNglzFApYIB0HMNojBqt62BUZTL2KBHuQbqR7zOlzBZ4fhivLUbeChBgaGBsYHRge\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/ns/credentials/v2\",{\"@protected\":true,\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}}],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sails\":[{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:32:19Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhA8FOH3Vf6JTrvNocRQpOsC3it4YxoA0RnF_qFyzyVOPbe2OOEbcwVrxi8feRIexjFftbwL9-7cgcDIL4h_gBwC1gjgCQCf8j_weWDfTpyDexV03oqRON0VTK5frvsZNbjkOilp06YIlhAmy92Pm72Cc6JRSZxg-1IVDD2Z5nbJVYuHRttl5BAXOmkeMmxoFre-xXeH9nbnv0ozXSaE1fiQakNKWxjCnEDj1hAs6OWWS6dmks6Ip68sqI4hpusVz3xVh0_wAc6kqwz_AmRwymLufsEeS0UCFbLd5tumszJG5lZfUlvhoc-pb1tgFhALiguVgs11eQaK4phYcCLPpwjXz34qHUyzABjlWJLhatn1a6SMCenWkDD46Kag6qTse0QC3f7PvNHKgd3zR6mkVhAHzWouhXkyVaOiNk4HW3JPt6rEfgscFdv53fGeogI7UTAfHBCMCkkPRG8L3dM_vAfdKQqFTcZ2xqpHbpUiaWUQlhA5pWRBomcKNQyfZjCa0QA1VGYPPoTJuFV5yEVphmr8JABDECem-e-hywmxYteq-61vpG3LSnFN0clk06Jv3qEnVhAulvaMIZn6Adlu2_2FOtzNehsv3kmEc-CjnWp9pJnhnw0tqcUazPAiN0cJMZyrSUbREfhOhKRlMMvK3S0ZW3EwFhAq1orGuVO3ECY-ZacU58R746M52s4IcAwpKryWv60yyYhsiQ7dTQb21JfLOT1S80XRhSLRiAd41PdrINO0yKjGlhAjANHha1_yV7NdaKdu5ELxTE-amrs2_52sCe1s8ysXGf6kNpl2NU0hROQ1KiVK2KqoG4abJByMz87jdQYGOCr7lhA4UUXtnUYiMVtvU4dnyT6SopTouBbc0RMdMm3EOWgaqF9TkLjI9P6xgEEJIJvLTIXp10b9TqRF-r4UC7LEDQfDVhAXRKAehYIx2hxPISoZN3CiOTPSLzdED9FVChD2M0ATnAefDsilMDJxsrla7g9QNuTmcq0MeEcozo8g4-ulhHVpFhANyXuQ2mY1WpABgQnYQJO0wFtiwh6Km_h_coJDfY_HADEPfevH1Kh7ENxwuJHn5kWbZR8JKfPqnLTvsrM5QjMClhAionEwdPC5grKCHz4TcRr2S-8mt4p1s1mKIoXMTqOcp8l1yOwHZotrC3YW7JCGQgyaXSTK32dmXgLK67a19I_8VhA47e7TFAJvvtMwObLr9nUWP4SJHDsdpMiwJ1P4sM_WcfFpGH_PHf85cxHt_BbLrVfeXHrkTiccxpmiHQRz55ZJlhAP5vX_xjnr2WL9Ru-46Bd9n2Ecs2aP6gYmk1jRk7cNswHClNtGJSoWsQ7Mals6h7IbskLtHXRd1KiTuOeHPbT11hA0MfMOWl6HugTrTZrlK1yhNBbl5Vt7RAPgZ17hORyQZb28iBSsjyE1IK6MBCc16tWzqzFiHTyCEsfzPVxSMHU71hAb3JEPtrz9i75cv6xZ5pquM7EcQW_ZE8UwOYY_zK2nHI-vDamFiXLg0yZK_xMWg4SEx3Mg5hxfOkG480K5kGD8lhAuXuIbE5NHzXMIxfTzjT8vM_K7P5jWEgDvr1lF0uiUMmKNTZ5RGIwiYZwjSdEYKAxE4c8ro2bx6vS4Tmhr_YxklhAf5UpRTkcYQGHDgsyzg3TuX-ZJXRq9j76Bkqlplo53TgTNeCoQu_N94_B8zLSdzx_h7tQeyyw8KjD4yU_sIlCgVhAq7mbYsND1H4xIt6QCVUUQbTzO-ZiJ3i0Xcghb3bzGYwRU_tLoBn5-EIEITuGtUuQDp_VBxIFreOX8PBOVSE9UlhAERf8NE7s4xnNjBAuBHwVhtMWpzSxfRNe38_LuUEno1gsXcozkkcyb9Lap7-iB5PrCVQzIz_0IZBaErCZMsAIH1hAktqG5e6rX2Y4mg1jWSGYHWYGUzuzhvl4fPq0cw62nP6PQDRQfRmvpjA4faQvHXwZLvE12bDbbAsuZ3Hv0acJolhAkOdhjWve9Bubmq6AeoGTtur4iAvXCP2OuR8FdrjESytYUxVg_C_jo_Bgb0tDG6xclE3zW9T7Cw4VjjvfVqf_R1hAVDWELr10YMJZdB3VyFGkUvY_2DPTosIufXt5pW8ONS7gyHerdV_-Qt2ASSEjHWo4_RjWQJf6pxDIDgQV6tjlkFhAYpTAF0PYe9HObQSBufM7CG0jlKSt8T-zwrZURjt0GfGpnw06XFMgA2cyiAeWAp0cSiWAOEpVcwXDkGn82qkVcVhAt4arUuk1R7SNRsb1GACJe1R3pUcKlkfIOPLZ4okaZCzl4oStHAOhed5_FJZtN6atgKvqoFR5qBEgtUlh8l582VhAm1fAwBVGVqFopSAo1Z5m9iHWU2DET5CcaaZecRAl-wkzau6QWrYWpzrvuWQpDl5R014Csfwp6lyrEU5k0ogfClhA4Av_jXaaspyMcOtz8T7cFZZ8TBn0F-fUhgCxovwp5gjRv-T_Gg1DWbHwO0vI_ZkdFwb1KBvED5hmHg7FjjWyllhA_HEFucTIWk9ipZtV4JPEubVxGTaRI-JoIp-xeF6izVba5yH6uJ00U3GKbrVrS2c0xSOA1xTeCZzfdctKM0ohWFhAGgjYyr8_kFHo6js-0SPV2MeTBcQn9kPW2AeyYvr36Yp4aLQaLYIWllbjSyJicqatNRD1BtazbtKnQ1jmnOIi2FhAAx08wz_Il4Bwh4sUGsYwLRz1MQ0w4KyYy72pEcoTC27plY0h8tJE4m-Q7M3vKTMPiI-ze4-sXzXMJw5Zj1TlvlhAFPEa5-S_Fz-ttNIoh3d2z2HUKv6cZYihVVDmqGPGXKEk2IfgM3rztIVC_7K-SHKgmt3yC-V6qnh3SYQ3ixZ1hFhAzAhE9Oiw97NIv86m_vIrjK3Z0VHSlXEt27Vs7mB2ohVVz3Pmk2EbgmlS8cj8qk7Ox3Hso47XpOznSEXJARPu7lhAStDInRkiLmBa7ITMWyZpJApHVcNQANRsfdfESRhafHstTguWfpLTSdtnug1R0uPFyu66EYv9-T6aTCungz_JRlhAHLz3V-neODqJrZ4oK3LsA9ny0kIw2deHx2k_aMwJUb_FtyXGkhycYHELdTmcr045r9cMi4tUGocjZOrKyeUT66sAWCAu6e2ZO0Qr3oM0w5MnYcaNm2BIKA3nHOAjfZoHaVIvIAFYII505EwaoRGXcEH4Y2euFGOBhVOPXxZxR-I4G1-exE7yAlggZSEILTZLoaVKi6bhNSNWb4D9qP-RA7iJjWlDhwR7pc4DWCDmmkjkOF-wNGeqppan8TS6pomHjhG0136O7W36tw-6eQRYIKugEvY-zofOYqrqMU-FmbMz0McBx8eNxEbalVWKfDTcBVggu2bBR_tu6GR0_2dhP0WUs--jDKnUlyzPg1_9WY5ZDkMGWCBXYBadW1uP0J6xczLtqd377WA8kWj_vid6wZ6ELKEpAAdYIKQ_GzVcGXESkjxu7VFwmnlw3M98MKS21Xl9T_nCenTqCFggeWRb1jH5fXwsrxidmRmBbpCH3s7jawO7FhyS3Erq5CkJWCCLpU8AkW8Zgg0xdnn5dxXwr8PM-ESSxnUuuI8btMkIcApYICc_3T6pok4IqID8zDYKg6Cfr-NZU_IMS11qFWxOZMG7gwYHCQ\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/ns/credentials/v2", { "@protected": true, - "name": "https://schema.org/name", "ExampleAchievementCredential": "urn:example:ExampleAchievementCredential", "WindsailingAchievement": { "@id": "urn:example:WindsailingAchievement", @@ -25756,14 +31419,12 @@ "@id": "urn:example:achievements", "@type": "@id" } - }, - "https://w3id.org/security/data-integrity/v2" + } ], "type": [ "VerifiableCredential", "ExampleAchievementCredential" ], - "issuanceDate": "2024-04-07T05:06:42Z", "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "credentialSubject": { "achievements": [ @@ -25819,11 +31480,11 @@ }, "proof": { "type": "DataIntegrityProof", - "created": "2024-04-07T05:06:42Z", + "created": "2024-04-14T05:32:19Z", "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod", - "proofValue": "u2V0BhVhAqYSIiU8I8_K6Z6q0E_aFOHjy58rFXWuouB2qMnHen27KFOYKgO_OFuhscOpDI1OZkRUhyUMZ7DMbmDDsrqbqkVgjgCQCw_GA_l7sCMMM0NzITNPhTB3Qk4s3Zz4Jqa9NwE04trKYIlhAKKbPyaAxb1wpS8mIxMjpySdG3avu-a3ISoQ2m-Xeqg6PqnwPA6zbLnDBAvTzzAicYyj4DnPXy5_fhKT9NUerrlhAimNffUmT222i3FKqibw9WPUQx8TPZFnqIRRpCqapwsxdrrVXKDlypsMaPYCA5_FBmT0K0hdUhNivf9xxLoSBdFhAbeZON53qz7f11bwkDqigSSNt7NVS-6BPUtnaqOWnHSK5hLUoWZ9QjxBIOuj6Zt3FMcwE8TIxcUUcjnSUsU4IfVhAk4EgVDlxS-fqoV4pnLKdgZnPsZqos82JPDdG-N1d2AbVIc0rauHlhlW6Hw75-tvOItyVc6DzcdhqcWJIgPSnQlhArhtuywhLYyly3NBuvDtu-7OWdJo0tvNtYaC7xhhxG_ZDR6LghwNHvA1pczQu-5FsXWco9VHIApR7J1f4znnk_lhAJGYw5Eg1mr4xtNNZsaFkamQTD1VbDxuAYIR3HDQOUbPW36YkTcf_BOP-0nAZ0u_cVccYAzC00EgIw4W2i8uDmFhA3VQJ0mr3LXKYL--hthuvQeVHeR3ssY3q-cEdfGGNA9EZgyTwGLz0l9R2-OqLyQZBwQWkPzSlDTHw7qDLA2gZtVhAaegjPcgE_AXx4USBrtbgC6I8-4zOd0Bfllul8tOl1GaK1asNgdWvCptO65_CBUqSkN_r0mMIOmzpkWVPFTJTkVhA4eaimna9jJgnlzlbRL3Ygx0knzLowDvO7dKJ4sP_yu8YE2tCsqv2juu7tqJUa7mlQrSBVCTskofqe9xm9N4u6VhA49gg_jPOBy8QgjkjX9l2LZJINuawO0Va7_QjXuu9fJJ_dKeunXm_9xPQEMhYEAD2KryP9PxYbKSnZtVZnPpxC1hAuuMtX2nO4-xstLw4cCE2B5VZG182YOAx_vTtBoc0EUEoUtfx9UVtyaY5TE-7sGRjiRq19QUfw7fYGgzDTfXiRFhAnMnaCZY0dZDk-v4_UWPRID70V-AJpuN3dbLDXwHa_sjk5UMEnSfjBGJ3dqriQFdH9wlWZHNEeBFfWCRz2zugn1hAJcVPxVcl2pd2dFo6hWk3k5o8PIQzd-nKe6xCS5eHhJPKC-gYkvGOPjYL8lXumtDTUo1rwW64RYhbn92qVymktFhACVeSwKiurCXvkZL13m8P0sSqEba7kXV5TU79QCTqVwdBN6-iDzEXLcMuOo1O7-M4oNT7QCOR3FyFnu_KqRhN9lhAyGCJITQHcEW7cplTQ1pYIkUd0TfRBu41Yxzl_ZBPp6zN0KiEO_r589xvISVySDPsE_RYdZ2WYwkJ76OrWocPrlhAv0WtqLorh3rM_ccWFLtrYAUOHIz7ztskhMqm9XVkXxMyZbdF23UFoTNOv1T9IB1ydyaN6j-gVBbq6_0CHIE8p1hAY68oDCZ2-7vlioc6__ZMCJROM7Bi0F9Zj-MN3pYUbTY_WE84kP01ffO9L1yPHePKx_dSvg8vOiUR4m7YZ0mdklhALnnV50jp-KLJt-0uWgfwinHTMCYKg5TXutCPm5ajIU6DyJSYBgEjDj94Nuxv4K_WKpmsUXuMIsCrMcYThyTaclhAbdjDCw-4JlIHqCHxrlbUSbjyPEoSH31bOfz9-wcjDmhtM1HTY84grW4utBLCwj1z3NFOkESRCvTfgInKqxeZmVhAgCYjx_Q4CGd4KJ_0XD9JlRi05uXlCrJeBHd8AqWZmIQzq8bjt8h2ZypoC8a-zWqbjbnV6P-4KZdZSbrfCwuliFhAR9bz41EMDRN7g4sIRKVU1fFtR1hPbD8GRcg2pHKq9kXM8j4tPz3kAHrNnE3c8078qWGRYto2pxLy-2cvaeJUxlhAADHkMki3kNcO-eIyIMd5HAMFC4bKTI0NQJ4yNZ4xONL8WDhRQUEw4QdGFrmUZ5aWu0CB5A0fAWtipmTiiT2lKVhAqEdHIvivznFxlkBaSAqsoMFxhvNY-2z0YYLydbgMoX8yJ45PwUYIvaLbWCBjAWklaFuMOIh25e4ARPaP5hVCblhAeWW7NI3KJer9znklUNiddto8jkm06zOxEWIbyZiFtEAB0fhXNa4dw5QJfgF1GNlyGWxjVDxPzCcZN4XONBFs2FhAU72CpgfR_Xn0UnimG8EdUwLJJoSfozYwx6FhbzugHcvAdipixoZ7OenVVVKEb_OSVfRRyRwAiqGheZfsq4LrNlhAdvnAylAW2pO5gcOKKFGICvFs3Ir3Swh8neL2Krn1swE_tZ_6SqdENcGUxkj9PoGtXUrm69jIPioq0FPixipWLlhAskk3OmoOkmKF1PXHa6qGffp2KVPOpcOFMDuuaVDplqrMpBNJiv1dF6jxQXmCEMP5vCWCMEUzyTJcnzHi8-0GoVhA8s6fT0WVbhd4R7iE_Mz4yyhpvTd5kB1c6RXbrXVfw_k7bSU6UUse0ucqp6Db8REBLTL387T4j3pG41urO5GgeVhACoLUrsSjCcoInXaarIMlTkjRayX-qblmWFBD4BrpJ58V4zh0TsyVcaqrhv79VS8Axd3NkCs7_KvaCYjOflAqT1hArnzKtNMtqlq1P95nb0SAJ4BvJobavK_4GACXIGyHFoooS42H5qqNPb7b7IJZKKegv11QZqqSud0kIbAVH6hi-FhADS0Jvmg8KOjKmhQ440sdJmG6jBg5GOhl2UEoeAuKDasZYdrpcl6h-MeI2Wwf7gs8Fw5vF8DwSOj6aQeCKmMSlVhADuQMc8USLCLLJM0RcwKExqPJqhYepEQIBPKwG_hc4ftgnTkde2KBgXnFG2vP0bDzfz9rRfsz4ZE_o9mP9TL3DlhAj-iGPIZDzC5NL3DSosPYjfWLGLU_rVK5doa17AScmkF4RwXW5DiYZuzkcNVdTqPIPP1fSWC6VIiIMPSYo8u5mFhAt0vP-jua9l-WFg2l4nhNfMaRUCuZYmPELyZNSrWU6FjlTIZIGCqHQxcZmJBq8uo9DTVHMTNtPaS5OqMIxgkcoKsAWCAqfgYF2AmQ-N7x4qvvLBXIS4rG1vAAb_gUQerJObe7xAFYICnwaK7lwJilZVnhzeAqcgqkgbv1QLjpib6bmfxmBpt2AlggYqYzRsPUyUBFPTfUewxBaWVdYOQTzzvm_K3pNOLP3dIDWCDhI5gW7MB1JONY3SGuMKRK4MZ5QeW5nifHEQQ62VyyhQRYIABPMUv3Ld6GGf6l9W9Y1NqVn6uH18GKBkf6CL-nlsORBVggKaG_GqHW3bz0WTdc38B4Vjkejw0iViVMQhPIeY5ZKc4GWCARLkIzGiBF9dyPVd5gIbDI4SO9aUZukCE3IMg-7qYSqAdYICYUlB7rBdZG7Gj3abzqQuDUxi77yllGKXZX06GoJsMSCFggDZf_7V2D1RzTMLCKFv1bsS-uE7J5_jqYBX60fA0afZ8JWCC64nUKQrFFTL_pcKjpOVBKHt0LyfFdlD8B-rhRNglzFApYIB0HMNojBqt62BUZTL2KBHuQbqR7zOlzBZ4fhivLUbeChBgaGBsYHRge" + "proofValue": "u2V0BhVhA8FOH3Vf6JTrvNocRQpOsC3it4YxoA0RnF_qFyzyVOPbe2OOEbcwVrxi8feRIexjFftbwL9-7cgcDIL4h_gBwC1gjgCQCf8j_weWDfTpyDexV03oqRON0VTK5frvsZNbjkOilp06YIlhAmy92Pm72Cc6JRSZxg-1IVDD2Z5nbJVYuHRttl5BAXOmkeMmxoFre-xXeH9nbnv0ozXSaE1fiQakNKWxjCnEDj1hAs6OWWS6dmks6Ip68sqI4hpusVz3xVh0_wAc6kqwz_AmRwymLufsEeS0UCFbLd5tumszJG5lZfUlvhoc-pb1tgFhALiguVgs11eQaK4phYcCLPpwjXz34qHUyzABjlWJLhatn1a6SMCenWkDD46Kag6qTse0QC3f7PvNHKgd3zR6mkVhAHzWouhXkyVaOiNk4HW3JPt6rEfgscFdv53fGeogI7UTAfHBCMCkkPRG8L3dM_vAfdKQqFTcZ2xqpHbpUiaWUQlhA5pWRBomcKNQyfZjCa0QA1VGYPPoTJuFV5yEVphmr8JABDECem-e-hywmxYteq-61vpG3LSnFN0clk06Jv3qEnVhAulvaMIZn6Adlu2_2FOtzNehsv3kmEc-CjnWp9pJnhnw0tqcUazPAiN0cJMZyrSUbREfhOhKRlMMvK3S0ZW3EwFhAq1orGuVO3ECY-ZacU58R746M52s4IcAwpKryWv60yyYhsiQ7dTQb21JfLOT1S80XRhSLRiAd41PdrINO0yKjGlhAjANHha1_yV7NdaKdu5ELxTE-amrs2_52sCe1s8ysXGf6kNpl2NU0hROQ1KiVK2KqoG4abJByMz87jdQYGOCr7lhA4UUXtnUYiMVtvU4dnyT6SopTouBbc0RMdMm3EOWgaqF9TkLjI9P6xgEEJIJvLTIXp10b9TqRF-r4UC7LEDQfDVhAXRKAehYIx2hxPISoZN3CiOTPSLzdED9FVChD2M0ATnAefDsilMDJxsrla7g9QNuTmcq0MeEcozo8g4-ulhHVpFhANyXuQ2mY1WpABgQnYQJO0wFtiwh6Km_h_coJDfY_HADEPfevH1Kh7ENxwuJHn5kWbZR8JKfPqnLTvsrM5QjMClhAionEwdPC5grKCHz4TcRr2S-8mt4p1s1mKIoXMTqOcp8l1yOwHZotrC3YW7JCGQgyaXSTK32dmXgLK67a19I_8VhA47e7TFAJvvtMwObLr9nUWP4SJHDsdpMiwJ1P4sM_WcfFpGH_PHf85cxHt_BbLrVfeXHrkTiccxpmiHQRz55ZJlhAP5vX_xjnr2WL9Ru-46Bd9n2Ecs2aP6gYmk1jRk7cNswHClNtGJSoWsQ7Mals6h7IbskLtHXRd1KiTuOeHPbT11hA0MfMOWl6HugTrTZrlK1yhNBbl5Vt7RAPgZ17hORyQZb28iBSsjyE1IK6MBCc16tWzqzFiHTyCEsfzPVxSMHU71hAb3JEPtrz9i75cv6xZ5pquM7EcQW_ZE8UwOYY_zK2nHI-vDamFiXLg0yZK_xMWg4SEx3Mg5hxfOkG480K5kGD8lhAuXuIbE5NHzXMIxfTzjT8vM_K7P5jWEgDvr1lF0uiUMmKNTZ5RGIwiYZwjSdEYKAxE4c8ro2bx6vS4Tmhr_YxklhAf5UpRTkcYQGHDgsyzg3TuX-ZJXRq9j76Bkqlplo53TgTNeCoQu_N94_B8zLSdzx_h7tQeyyw8KjD4yU_sIlCgVhAq7mbYsND1H4xIt6QCVUUQbTzO-ZiJ3i0Xcghb3bzGYwRU_tLoBn5-EIEITuGtUuQDp_VBxIFreOX8PBOVSE9UlhAERf8NE7s4xnNjBAuBHwVhtMWpzSxfRNe38_LuUEno1gsXcozkkcyb9Lap7-iB5PrCVQzIz_0IZBaErCZMsAIH1hAktqG5e6rX2Y4mg1jWSGYHWYGUzuzhvl4fPq0cw62nP6PQDRQfRmvpjA4faQvHXwZLvE12bDbbAsuZ3Hv0acJolhAkOdhjWve9Bubmq6AeoGTtur4iAvXCP2OuR8FdrjESytYUxVg_C_jo_Bgb0tDG6xclE3zW9T7Cw4VjjvfVqf_R1hAVDWELr10YMJZdB3VyFGkUvY_2DPTosIufXt5pW8ONS7gyHerdV_-Qt2ASSEjHWo4_RjWQJf6pxDIDgQV6tjlkFhAYpTAF0PYe9HObQSBufM7CG0jlKSt8T-zwrZURjt0GfGpnw06XFMgA2cyiAeWAp0cSiWAOEpVcwXDkGn82qkVcVhAt4arUuk1R7SNRsb1GACJe1R3pUcKlkfIOPLZ4okaZCzl4oStHAOhed5_FJZtN6atgKvqoFR5qBEgtUlh8l582VhAm1fAwBVGVqFopSAo1Z5m9iHWU2DET5CcaaZecRAl-wkzau6QWrYWpzrvuWQpDl5R014Csfwp6lyrEU5k0ogfClhA4Av_jXaaspyMcOtz8T7cFZZ8TBn0F-fUhgCxovwp5gjRv-T_Gg1DWbHwO0vI_ZkdFwb1KBvED5hmHg7FjjWyllhA_HEFucTIWk9ipZtV4JPEubVxGTaRI-JoIp-xeF6izVba5yH6uJ00U3GKbrVrS2c0xSOA1xTeCZzfdctKM0ohWFhAGgjYyr8_kFHo6js-0SPV2MeTBcQn9kPW2AeyYvr36Yp4aLQaLYIWllbjSyJicqatNRD1BtazbtKnQ1jmnOIi2FhAAx08wz_Il4Bwh4sUGsYwLRz1MQ0w4KyYy72pEcoTC27plY0h8tJE4m-Q7M3vKTMPiI-ze4-sXzXMJw5Zj1TlvlhAFPEa5-S_Fz-ttNIoh3d2z2HUKv6cZYihVVDmqGPGXKEk2IfgM3rztIVC_7K-SHKgmt3yC-V6qnh3SYQ3ixZ1hFhAzAhE9Oiw97NIv86m_vIrjK3Z0VHSlXEt27Vs7mB2ohVVz3Pmk2EbgmlS8cj8qk7Ox3Hso47XpOznSEXJARPu7lhAStDInRkiLmBa7ITMWyZpJApHVcNQANRsfdfESRhafHstTguWfpLTSdtnug1R0uPFyu66EYv9-T6aTCungz_JRlhAHLz3V-neODqJrZ4oK3LsA9ny0kIw2deHx2k_aMwJUb_FtyXGkhycYHELdTmcr045r9cMi4tUGocjZOrKyeUT66sAWCAu6e2ZO0Qr3oM0w5MnYcaNm2BIKA3nHOAjfZoHaVIvIAFYII505EwaoRGXcEH4Y2euFGOBhVOPXxZxR-I4G1-exE7yAlggZSEILTZLoaVKi6bhNSNWb4D9qP-RA7iJjWlDhwR7pc4DWCDmmkjkOF-wNGeqppan8TS6pomHjhG0136O7W36tw-6eQRYIKugEvY-zofOYqrqMU-FmbMz0McBx8eNxEbalVWKfDTcBVggu2bBR_tu6GR0_2dhP0WUs--jDKnUlyzPg1_9WY5ZDkMGWCBXYBadW1uP0J6xczLtqd377WA8kWj_vid6wZ6ELKEpAAdYIKQ_GzVcGXESkjxu7VFwmnlw3M98MKS21Xl9T_nCenTqCFggeWRb1jH5fXwsrxidmRmBbpCH3s7jawO7FhyS3Erq5CkJWCCLpU8AkW8Zgg0xdnn5dxXwr8PM-ESSxnUuuI8btMkIcApYICc_3T6pok4IqID8zDYKg6Cfr-NZU_IMS11qFWxOZMG7gwYHCQ" } }, "options": { @@ -25910,13 +31571,13 @@ } }, "operator": "notStrictEqual", - "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:117: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:222:17)" + "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)" } }, { "type": "test", "title": "MUST verify w/o first element revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithoutFirstArrayElement\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25926,32 +31587,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:510d6dd3-b98d-406a-8115-ab8e72267f5d", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:e0e3398f-2661-409b-bff5-eb52dcd17bcc", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify w/o first element revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26373, + "_idleStart": 32677, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 3800, + "duration": 3411, "state": "passed", "speed": "slow" }, { "type": "test", "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25961,32 +31622,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:98f54afc-a7fc-427c-a62c-4779038cefc3", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:fbd0531c-1d76-472c-a973-3be4e9706214", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30174, + "_idleStart": 36088, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 199, + "duration": 86, "state": "passed", "speed": "slow" }, { "type": "test", "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25996,32 +31657,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:ca8dc0ee-5fbc-4767-9959-74cae9a91dfe", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:0f36ee7e-30b0-4018-8035-50a2b6d72e16", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30373, + "_idleStart": 36174, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 98, + "duration": 50, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", "title": "MUST fail to verify a base proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26031,32 +31692,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:b9e25048-5203-496d-b4f4-fe7a5b2e1be2", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:e74851f9-7401-41a4-b999-bb53fb765dcf", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST fail to verify a base proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30470, + "_idleStart": 36224, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 106, + "duration": 59, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", "title": "MUST fail to verify a modified disclosed credential.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26066,25 +31727,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:f93a343b-3692-4f92-8b97-b10062071c9c", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:db76e932-a451-427f-afcc-e2c3bd2ac7b2", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30577, + "_idleStart": 36283, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 395, + "duration": 191, "state": "passed", "speed": "slow" } @@ -26092,11 +31753,33 @@ "root": false, "pending": false, "_retries": -1, - "_beforeEach": [], + "_beforeEach": [ + { + "title": "\"before each\" hook in \"apicatalog.com: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "5dGcm68tFSnx7pc70c25L", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], "_beforeAll": [ { - "title": "\"before all\" hook in \"apicatalog.com: P-256, P-384\"", - "body": "function() {\n // filter vectors so suite doesn't test unsupported keyTypes\n const getImplementationVectors = ({vectors}) =>\n supportedEcdsaKeyTypes.map(type => vectors.get(type)).\n filter(Boolean);\n signedCredentials = getImplementationVectors({\n vectors: testVectors.signed\n });\n disclosedCredentials = getImplementationVectors({\n vectors: testVectors.disclosed.base\n });\n nestedDisclosedCredentials = getImplementationVectors({\n vectors: testVectors.disclosed.nested\n });\n disclosedDlCredentialNoIds = getImplementationVectors({\n vectors: testVectors.disclosed.noIds\n });\n disclosedCredentialsWithFullArray = getImplementationVectors({\n vectors: testVectors.disclosed.array.full\n });\n disclosedCredentialsWithLessThanFullSubArray =\n getImplementationVectors({\n vectors: testVectors.disclosed.array.lessThanFull\n });\n disclosedCredentialsWithoutFirstArrayElement =\n getImplementationVectors({\n vectors: testVectors.disclosed.array.missingElements\n });\n }", + "title": "\"before all\" hook in \"apicatalog.com: P-256\"", + "body": "async function() {\n testVectors = await sdVerifySetup({\n credentials,\n keyTypes,\n suite\n });\n\n // Define the test vector mapping for convienence.\n defineTestVectorMapping(vcVersion);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26106,13 +31789,22 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "duration": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 30333, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 208, "_error": null } ], @@ -26124,19 +31816,19 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "bwxBKpySuU7saUByPSsIE", + "parent": "xSVrAJot2W06vv_eMChUM", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "_testId": "urn:uuid:53e8dcc6-9fc2-446c-b1ed-e4733fe777b5" + "_testId": "urn:uuid:4e4e5827-d8a0-4f4c-aaaf-1b922eada637" }, { - "title": "Digital Bazaar: P-256, P-384", + "title": "Digital Bazaar: P-256", "ctx": null, "suites": [], "tests": [ { "type": "test", "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26146,32 +31838,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:01fc01af-fccc-429b-b903-92034f7dee22", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5af7c0ae-de86-481b-b1f2-bb4d81dba9b0", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30972, + "_idleStart": 36743, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 106, + "duration": 79, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify a valid VC with nested disclosed properties.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26181,32 +31873,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:c3ed6a55-860c-4b25-a9e4-5fe5b07ba715", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5fc1d66b-32b2-4bc7-8715-a027e416ac5d", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31079, + "_idleStart": 36823, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 74, "state": "passed", "speed": "medium" }, { "type": "test", "title": "MUST verify a valid VC with disclosed properties and bnodes.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26216,32 +31908,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:b8f2b525-ad13-4f9f-b4da-e71d659769fa", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:e675f848-64aa-499c-8283-651c34f948b3", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31139, + "_idleStart": 36898, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 102, + "duration": 69, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", "title": "MUST verify with full array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26251,32 +31943,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:a47b061c-3cc3-42f8-a08e-5c4edf2260a0", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:8c5fba01-c6a4-439e-8943-23e3bb2d79cb", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify with full array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31242, + "_idleStart": 36967, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 83, + "duration": 65, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", "title": "MUST verify with fewer array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithLessThanFullSubArray\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26286,32 +31978,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:68302fe3-6ff8-4515-b22f-bd29ca32b86f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:f606506f-8c40-4d98-a2d5-7f336fdf2630", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify with fewer array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31325, + "_idleStart": 37031, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 112, + "duration": 83, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify w/o first element revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithoutFirstArrayElement\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26321,32 +32013,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:d06b93b7-45b2-4d6c-84d6-337de9a6740f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:20c0cb92-c186-4c0a-921a-4f15786c25a5", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify w/o first element revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31436, + "_idleStart": 37114, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 115, + "duration": 102, "state": "passed", "speed": "slow" }, { "type": "test", "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26356,32 +32048,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:f6c1c027-6fc3-4121-9ef3-7ea7b941afa8", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:908006b9-c00c-4ec3-95f1-7d34ee592059", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31552, + "_idleStart": 37216, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 77, + "duration": 44, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26391,32 +32083,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:af0db23e-f46d-4522-87ee-4497b4648ff7", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:35478045-8633-486b-876c-f55311d0cfe2", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31630, + "_idleStart": 37260, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 50, "state": "passed", "speed": "medium" }, { "type": "test", "title": "MUST fail to verify a base proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26426,32 +32118,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:874b1d85-e280-498f-8f2d-69a2cf6418cf", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:fdfd467c-a07a-4b8c-9115-8e8f325e99f1", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST fail to verify a base proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31687, + "_idleStart": 37311, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 50, "state": "passed", "speed": "medium" }, { "type": "test", "title": "MUST fail to verify a modified disclosed credential.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26461,25 +32153,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:e5e128aa-8ece-467f-9b58-c832342f64cd", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5e16a419-054b-453a-8295-bbcde4a5f095", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31745, + "_idleStart": 37360, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 65, + "duration": 59, "state": "passed", "speed": "medium" } @@ -26487,11 +32179,33 @@ "root": false, "pending": false, "_retries": -1, - "_beforeEach": [], + "_beforeEach": [ + { + "title": "\"before each\" hook in \"Digital Bazaar: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "6SpIDJK3kYnw-li04sMdM", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], "_beforeAll": [ { - "title": "\"before all\" hook in \"Digital Bazaar: P-256, P-384\"", - "body": "function() {\n // filter vectors so suite doesn't test unsupported keyTypes\n const getImplementationVectors = ({vectors}) =>\n supportedEcdsaKeyTypes.map(type => vectors.get(type)).\n filter(Boolean);\n signedCredentials = getImplementationVectors({\n vectors: testVectors.signed\n });\n disclosedCredentials = getImplementationVectors({\n vectors: testVectors.disclosed.base\n });\n nestedDisclosedCredentials = getImplementationVectors({\n vectors: testVectors.disclosed.nested\n });\n disclosedDlCredentialNoIds = getImplementationVectors({\n vectors: testVectors.disclosed.noIds\n });\n disclosedCredentialsWithFullArray = getImplementationVectors({\n vectors: testVectors.disclosed.array.full\n });\n disclosedCredentialsWithLessThanFullSubArray =\n getImplementationVectors({\n vectors: testVectors.disclosed.array.lessThanFull\n });\n disclosedCredentialsWithoutFirstArrayElement =\n getImplementationVectors({\n vectors: testVectors.disclosed.array.missingElements\n });\n }", + "title": "\"before all\" hook in \"Digital Bazaar: P-256\"", + "body": "async function() {\n testVectors = await sdVerifySetup({\n credentials,\n keyTypes,\n suite\n });\n\n // Define the test vector mapping for convienence.\n defineTestVectorMapping(vcVersion);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26501,13 +32215,22 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 36475, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 269, "_error": null } ], @@ -26519,9 +32242,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "bwxBKpySuU7saUByPSsIE", + "parent": "xSVrAJot2W06vv_eMChUM", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "_testId": "urn:uuid:f0eebbf9-92df-464a-96f9-732c8e67ae49" + "_testId": "urn:uuid:ec5a9ca0-3e49-493e-9bca-8c41fdd04c1b" }, { "title": "Grotto Networking: P-256", @@ -26531,7 +32254,7 @@ { "type": "test", "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26541,32 +32264,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:86ccdcfd-8ed3-4e8e-9c04-ddfa4805fa51", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:31785837-8b7c-46f9-bf12-800b39694109", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31810, + "_idleStart": 37660, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 266, + "duration": 323, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify a valid VC with nested disclosed properties.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26576,32 +32299,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:1deece6a-3c5e-4cdb-a48c-6c695b57e988", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:de9e48ca-646d-4d2e-af67-573a8902caaa", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 32076, + "_idleStart": 37984, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 121, + "duration": 134, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify a valid VC with disclosed properties and bnodes.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26611,32 +32334,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:f2d9bdfd-b944-447b-b98a-5d652e08cdbc", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:cd1d47e2-01d5-4034-889b-aff0cd59ba23", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 32197, + "_idleStart": 38119, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 123, + "duration": 190, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify with full array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26646,32 +32369,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:8e316806-0e2c-4f2f-af49-284e92dd02a5", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:2f2b7050-b593-4520-a50f-be31708fd608", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify with full array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 32321, + "_idleStart": 38309, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 580, + "duration": 691, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify with fewer array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithLessThanFullSubArray\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26681,32 +32404,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:63bc542e-dbb5-415f-949b-18f38ecb8fb5", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:96326b44-1e28-414f-87dc-beebd15e7366", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify with fewer array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 32901, + "_idleStart": 39001, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 445, + "duration": 499, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify w/o first element revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithoutFirstArrayElement\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26716,32 +32439,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:91d36a14-a2b9-4324-ae9b-fde82d13f927", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:90e4ee5e-b2ad-485a-b585-7165ef8a1dab", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify w/o first element revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 33347, + "_idleStart": 39500, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 344, + "duration": 441, "state": "passed", "speed": "slow" }, { "type": "test", "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26751,32 +32474,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:e9278ba4-8e3a-41e6-8295-0d055daeeaae", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:88a8f579-b8d1-43f4-bc59-80a6af2d2747", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 33691, + "_idleStart": 39941, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 69, "state": "passed", "speed": "medium" }, { "type": "test", "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26786,32 +32509,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:7212d6a7-c90a-4edf-b2f0-0b71fe09c4d0", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:7d5529e4-6918-4401-ab74-10d5938dbb24", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 33750, + "_idleStart": 40011, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 71, "state": "passed", "speed": "medium" }, { "type": "test", "title": "MUST fail to verify a base proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26821,32 +32544,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", - "ctx": null, - "_testId": "urn:uuid:71b1199c-1f52-4f61-8bf8-214b34dc7506", - "_events": {}, - "_eventsCount": 1, + "parent": "EzqwCBToLHsXqvQeB8kll", + "ctx": null, + "_testId": "urn:uuid:d4ad52b8-7765-48e8-9672-3b35ad6c44d4", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST fail to verify a base proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 33808, + "_idleStart": 40082, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 69, "state": "passed", "speed": "medium" }, { "type": "test", "title": "MUST fail to verify a modified disclosed credential.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26856,25 +32579,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:a8dafd6d-2481-4ddb-bbd8-14633694b6c5", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:be7097c1-06fe-40c1-a0de-121faacf979a", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 33864, + "_idleStart": 40151, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 78, + "duration": 109, "state": "passed", "speed": "slow" } @@ -26882,11 +32605,33 @@ "root": false, "pending": false, "_retries": -1, - "_beforeEach": [], + "_beforeEach": [ + { + "title": "\"before each\" hook in \"Grotto Networking: P-256\"", + "body": "function() {\n annotateReportableTest(this, {\n implementationName: name,\n keyType\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "EzqwCBToLHsXqvQeB8kll", + "ctx": null, + "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], "_beforeAll": [ { "title": "\"before all\" hook in \"Grotto Networking: P-256\"", - "body": "function() {\n // filter vectors so suite doesn't test unsupported keyTypes\n const getImplementationVectors = ({vectors}) =>\n supportedEcdsaKeyTypes.map(type => vectors.get(type)).\n filter(Boolean);\n signedCredentials = getImplementationVectors({\n vectors: testVectors.signed\n });\n disclosedCredentials = getImplementationVectors({\n vectors: testVectors.disclosed.base\n });\n nestedDisclosedCredentials = getImplementationVectors({\n vectors: testVectors.disclosed.nested\n });\n disclosedDlCredentialNoIds = getImplementationVectors({\n vectors: testVectors.disclosed.noIds\n });\n disclosedCredentialsWithFullArray = getImplementationVectors({\n vectors: testVectors.disclosed.array.full\n });\n disclosedCredentialsWithLessThanFullSubArray =\n getImplementationVectors({\n vectors: testVectors.disclosed.array.lessThanFull\n });\n disclosedCredentialsWithoutFirstArrayElement =\n getImplementationVectors({\n vectors: testVectors.disclosed.array.missingElements\n });\n }", + "body": "async function() {\n testVectors = await sdVerifySetup({\n credentials,\n keyTypes,\n suite\n });\n\n // Define the test vector mapping for convienence.\n defineTestVectorMapping(vcVersion);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26896,13 +32641,22 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "duration": 0, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 37420, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 241, "_error": null } ], @@ -26914,47 +32668,16 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "bwxBKpySuU7saUByPSsIE", + "parent": "xSVrAJot2W06vv_eMChUM", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "_testId": "urn:uuid:31eba276-b6b8-4588-ad99-3333c58caddc" + "_testId": "urn:uuid:d8daa356-74ea-4beb-b954-9d9e7c95e5cb" } ], "root": false, "pending": false, "_retries": -1, "_beforeEach": [], - "_beforeAll": [ - { - "title": "\"before all\" hook in \"ecdsa-sd-2023 (verifiers)\"", - "body": "async function() {\n const {subjectNestedObjects, subjectHasArrays} = credentials.verify;\n // create initial signed VCs\n testVectors.signed = await issueTestData({\n credential: subjectNestedObjects.document,\n suite,\n keyTypes,\n mandatoryPointers: subjectNestedObjects.mandatoryPointers\n });\n const signedVc = testVectors.signed.get(keyTypes[0]);\n // use initial VCs for a basic selective disclosure test\n testVectors.disclosed.base = await deriveTestData({\n selectivePointers: ['/credentialSubject/id'],\n verifiableCredential: signedVc,\n keyTypes,\n suite\n });\n // create initial nestedDisclosedCredential from signedVc\n testVectors.disclosed.nested = await deriveTestData({\n selectivePointers: subjectNestedObjects.selectivePointers.slice(1, 3),\n verifiableCredential: signedVc,\n keyTypes,\n suite\n });\n // copy the first vc\n const noIdVc = klona(subjectNestedObjects.document);\n // delete the id\n delete noIdVc.id;\n // start second round test data creation w/ dlCredentialNoIds\n const noIdsVcs = await issueTestData({\n credential: noIdVc,\n keyTypes,\n suite: 'ecdsa-sd-2023',\n mandatoryPointers: subjectNestedObjects.mandatoryPointers\n });\n const signedDlCredentialNoIds = noIdsVcs.get(keyTypes[0]);\n testVectors.disclosed.noIds = await deriveTestData({\n selectivePointers: subjectNestedObjects.selectivePointers.slice(1, 3),\n verifiableCredential: signedDlCredentialNoIds,\n keyTypes,\n suite\n });\n const credentialHasArrays = klona(subjectHasArrays);\n // start third round test data creation w/\n // AchievementCredential\n const achievementCredentials = await issueTestData({\n credential: credentialHasArrays.document,\n mandatoryPointers: credentialHasArrays.mandatoryPointers,\n keyTypes,\n suite\n });\n const signedAchievementCredential = achievementCredentials.get(\n keyTypes[0]);\n // select full arrays\n testVectors.disclosed.array.full = await deriveTestData({\n selectivePointers:\n [...credentialHasArrays.selectivePointers],\n verifiableCredential: signedAchievementCredential,\n suite,\n keyTypes\n });\n // select less than full subarrays\n const lessThanFullPointers = credentialHasArrays.\n selectivePointers.slice(2, -4);\n testVectors.disclosed.array.lessThanFull = await deriveTestData({\n selectivePointers: lessThanFullPointers,\n verifiableCredential: signedAchievementCredential,\n suite,\n keyTypes\n });\n // select w/o first 7 array element\n const removeFirst7Pointers = credentialHasArrays.\n selectivePointers.slice(7);\n testVectors.disclosed.array.missingElements = await deriveTestData({\n selectivePointers: removeFirst7Pointers,\n verifiableCredential: signedAchievementCredential,\n suite,\n keyTypes\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "bwxBKpySuU7saUByPSsIE", - "ctx": null, - "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 23872, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 132, - "_error": null - } - ], + "_beforeAll": [], "_afterEach": [], "_afterAll": [], "_timeout": 15000, @@ -26963,16 +32686,16 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "zRRK3kFYGBYne1WnnUyxL", + "parent": "GzHifvD62JwDWet-oBmTR", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", "matrix": true, "report": true, "rowLabel": "Test Name", "columnLabel": "Verifier", - "_testId": "urn:uuid:d707a87b-27c3-43aa-9281-74e9772d1328", + "_testId": "urn:uuid:c4d396cf-0b5a-4c43-801c-68ebe8a674e4", "columns": [ - "apicatalog.com: P-256, P-384", - "Digital Bazaar: P-256, P-384", + "apicatalog.com: P-256", + "Digital Bazaar: P-256", "Grotto Networking: P-256" ], "rows": [ @@ -26982,7 +32705,7 @@ { "type": "test", "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26992,32 +32715,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:ba05e339-328a-4f15-968e-86506e61ecd3", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:07479680-bf3b-495b-ad05-9072ac120e37", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 24006, + "_idleStart": 30541, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 265, + "duration": 138, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27027,32 +32750,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:01fc01af-fccc-429b-b903-92034f7dee22", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5af7c0ae-de86-481b-b1f2-bb4d81dba9b0", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30972, + "_idleStart": 36743, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 106, + "duration": 79, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify a valid VC with an ecdsa-sd-2023 proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27062,25 +32785,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:86ccdcfd-8ed3-4e8e-9c04-ddfa4805fa51", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:31785837-8b7c-46f9-bf12-800b39694109", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify a valid VC with an ecdsa-sd-2023 proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31810, + "_idleStart": 37660, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 266, + "duration": 323, "state": "passed", "speed": "slow" } @@ -27092,7 +32815,7 @@ { "type": "test", "title": "MUST verify a valid VC with nested disclosed properties.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27102,32 +32825,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:8d0e7038-8451-4b27-b46e-7b36fdd56b93", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:a0b4de16-8671-43ff-af8f-1a554fe27a48", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 24272, + "_idleStart": 30680, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 805, + "duration": 711, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify a valid VC with nested disclosed properties.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27137,32 +32860,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:c3ed6a55-860c-4b25-a9e4-5fe5b07ba715", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5fc1d66b-32b2-4bc7-8715-a027e416ac5d", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31079, + "_idleStart": 36823, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 74, "state": "passed", "speed": "medium" }, { "type": "test", "title": "MUST verify a valid VC with nested disclosed properties.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(nestedDisclosedCredentials);\n for(const credential of nestedDisclosedCredentials) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27172,25 +32895,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:1deece6a-3c5e-4cdb-a48c-6c695b57e988", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:de9e48ca-646d-4d2e-af67-573a8902caaa", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify a valid VC with nested disclosed properties." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 32076, + "_idleStart": 37984, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 121, + "duration": 134, "state": "passed", "speed": "slow" } @@ -27202,7 +32925,7 @@ { "type": "test", "title": "MUST verify a valid VC with disclosed properties and bnodes.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27212,32 +32935,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:0597305b-eb4e-4ce3-90a9-9a83df3764a2", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:65644602-6504-472d-a046-4862e4c4dc78", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25077, + "_idleStart": 31392, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 609, + "duration": 710, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify a valid VC with disclosed properties and bnodes.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27247,32 +32970,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:b8f2b525-ad13-4f9f-b4da-e71d659769fa", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:e675f848-64aa-499c-8283-651c34f948b3", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31139, + "_idleStart": 36898, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 102, + "duration": 69, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", "title": "MUST verify a valid VC with disclosed properties and bnodes.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedDlCredentialNoIds);\n for(const credential of disclosedDlCredentialNoIds) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27282,25 +33005,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:f2d9bdfd-b944-447b-b98a-5d652e08cdbc", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:cd1d47e2-01d5-4034-889b-aff0cd59ba23", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify a valid VC with disclosed properties and bnodes." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 32197, + "_idleStart": 38119, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 123, + "duration": 190, "state": "passed", "speed": "slow" } @@ -27312,7 +33035,7 @@ { "type": "test", "title": "MUST verify with full array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27322,25 +33045,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:f1f3342a-97c6-4c81-b726-d20f8c8d890e", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:4b600aa2-e5da-4243-aaec-7cb0fbeb0bbc", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify with full array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25686, + "_idleStart": 32102, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 389, + "duration": 371, "state": "failed", "err": { "name": "AssertionError", @@ -27351,15 +33074,14 @@ "request": {}, "options": { "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"name\":\"https://schema.org/name\",\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuanceDate\":\"2024-04-07T05:06:42Z\",\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Earth101\",\"sails\":[{\"size\":5.5,\"sailName\":\"Osprey\",\"year\":2023},{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023},{\"size\":6.8,\"sailName\":\"Vulture-FR\",\"year\":2020},{\"size\":7.7,\"sailName\":\"Vulture-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"Oak620\",\"brand\":\"Excite\",\"year\":2020},{\"boardName\":\"Excite Custom\",\"brand\":\"Excite\",\"year\":2018}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-07T05:06:42Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhAqYSIiU8I8_K6Z6q0E_aFOHjy58rFXWuouB2qMnHen27KFOYKgO_OFuhscOpDI1OZkRUhyUMZ7DMbmDDsrqbqkVgjgCQCw_GA_l7sCMMM0NzITNPhTB3Qk4s3Zz4Jqa9NwE04trKYN1hAKKbPyaAxb1wpS8mIxMjpySdG3avu-a3ISoQ2m-Xeqg6PqnwPA6zbLnDBAvTzzAicYyj4DnPXy5_fhKT9NUerrlhAimNffUmT222i3FKqibw9WPUQx8TPZFnqIRRpCqapwsxdrrVXKDlypsMaPYCA5_FBmT0K0hdUhNivf9xxLoSBdFhAbeZON53qz7f11bwkDqigSSNt7NVS-6BPUtnaqOWnHSK5hLUoWZ9QjxBIOuj6Zt3FMcwE8TIxcUUcjnSUsU4IfVhAk4EgVDlxS-fqoV4pnLKdgZnPsZqos82JPDdG-N1d2AbVIc0rauHlhlW6Hw75-tvOItyVc6DzcdhqcWJIgPSnQlhArhtuywhLYyly3NBuvDtu-7OWdJo0tvNtYaC7xhhxG_ZDR6LghwNHvA1pczQu-5FsXWco9VHIApR7J1f4znnk_lhAJGYw5Eg1mr4xtNNZsaFkamQTD1VbDxuAYIR3HDQOUbPW36YkTcf_BOP-0nAZ0u_cVccYAzC00EgIw4W2i8uDmFhAZsWvkWDGwJUkKDEDdjBs-UXW8x6Be9UrI4-H0AkM0LlhTElWO1JJw4waLE0MkSbLp7St5w0JZEwtWTnLNHb761hA3VQJ0mr3LXKYL--hthuvQeVHeR3ssY3q-cEdfGGNA9EZgyTwGLz0l9R2-OqLyQZBwQWkPzSlDTHw7qDLA2gZtVhAaegjPcgE_AXx4USBrtbgC6I8-4zOd0Bfllul8tOl1GaK1asNgdWvCptO65_CBUqSkN_r0mMIOmzpkWVPFTJTkVhA4eaimna9jJgnlzlbRL3Ygx0knzLowDvO7dKJ4sP_yu8YE2tCsqv2juu7tqJUa7mlQrSBVCTskofqe9xm9N4u6VhARatUaf2aoBRrzFj0ClRscECTD1xmeifrK3F90R8csmXNR4MS_RWVg_p0GfIqNpWl1xNXj68G4arWIpNeYfwd8VhA49gg_jPOBy8QgjkjX9l2LZJINuawO0Va7_QjXuu9fJJ_dKeunXm_9xPQEMhYEAD2KryP9PxYbKSnZtVZnPpxC1hAuuMtX2nO4-xstLw4cCE2B5VZG182YOAx_vTtBoc0EUEoUtfx9UVtyaY5TE-7sGRjiRq19QUfw7fYGgzDTfXiRFhAnMnaCZY0dZDk-v4_UWPRID70V-AJpuN3dbLDXwHa_sjk5UMEnSfjBGJ3dqriQFdH9wlWZHNEeBFfWCRz2zugn1hAJcVPxVcl2pd2dFo6hWk3k5o8PIQzd-nKe6xCS5eHhJPKC-gYkvGOPjYL8lXumtDTUo1rwW64RYhbn92qVymktFhACVeSwKiurCXvkZL13m8P0sSqEba7kXV5TU79QCTqVwdBN6-iDzEXLcMuOo1O7-M4oNT7QCOR3FyFnu_KqRhN9lhAyGCJITQHcEW7cplTQ1pYIkUd0TfRBu41Yxzl_ZBPp6zN0KiEO_r589xvISVySDPsE_RYdZ2WYwkJ76OrWocPrlhAv0WtqLorh3rM_ccWFLtrYAUOHIz7ztskhMqm9XVkXxMyZbdF23UFoTNOv1T9IB1ydyaN6j-gVBbq6_0CHIE8p1hAY68oDCZ2-7vlioc6__ZMCJROM7Bi0F9Zj-MN3pYUbTY_WE84kP01ffO9L1yPHePKx_dSvg8vOiUR4m7YZ0mdklhALnnV50jp-KLJt-0uWgfwinHTMCYKg5TXutCPm5ajIU6DyJSYBgEjDj94Nuxv4K_WKpmsUXuMIsCrMcYThyTaclhAbdjDCw-4JlIHqCHxrlbUSbjyPEoSH31bOfz9-wcjDmhtM1HTY84grW4utBLCwj1z3NFOkESRCvTfgInKqxeZmVhAgCYjx_Q4CGd4KJ_0XD9JlRi05uXlCrJeBHd8AqWZmIQzq8bjt8h2ZypoC8a-zWqbjbnV6P-4KZdZSbrfCwuliFhAR9bz41EMDRN7g4sIRKVU1fFtR1hPbD8GRcg2pHKq9kXM8j4tPz3kAHrNnE3c8078qWGRYto2pxLy-2cvaeJUxlhAADHkMki3kNcO-eIyIMd5HAMFC4bKTI0NQJ4yNZ4xONL8WDhRQUEw4QdGFrmUZ5aWu0CB5A0fAWtipmTiiT2lKVhAqEdHIvivznFxlkBaSAqsoMFxhvNY-2z0YYLydbgMoX8yJ45PwUYIvaLbWCBjAWklaFuMOIh25e4ARPaP5hVCblhAeWW7NI3KJer9znklUNiddto8jkm06zOxEWIbyZiFtEAB0fhXNa4dw5QJfgF1GNlyGWxjVDxPzCcZN4XONBFs2FhAU72CpgfR_Xn0UnimG8EdUwLJJoSfozYwx6FhbzugHcvAdipixoZ7OenVVVKEb_OSVfRRyRwAiqGheZfsq4LrNlhAdvnAylAW2pO5gcOKKFGICvFs3Ir3Swh8neL2Krn1swE_tZ_6SqdENcGUxkj9PoGtXUrm69jIPioq0FPixipWLlhAskk3OmoOkmKF1PXHa6qGffp2KVPOpcOFMDuuaVDplqrMpBNJiv1dF6jxQXmCEMP5vCWCMEUzyTJcnzHi8-0GoVhA9B8VZvAfqsZwHc5xptJ6aXuu78gM_7JX7DVvoKxK3Wj-QLJE71edPbotDL3iqGtHR6_3RUAmH9w_zJckHcPdelhAF3dGYhZjUunnmoIOWlpJnO9iOrFh61RwGgAEW6Lc8OKEBO-FwLHohLrXY21qcwuQ-AuVj7HeeyYANk8OaRlW0lhAo4rQN1xQHUwrwXQyw_fN30U7T2NTL3RwDvnn2-Zr8JMxh_s3mz3kym5Fb6Nb2WGchDpIjEqUVsFVVM-rNrsEilhArceAJbJdsJoLhauwshRGi_2yayalQEYhFMyUnN54dBJ2J4kApzPO-K9EJmv6k8__qHfsR8sGEabmUr9u7QJma1hABWvR76tRdby_Z1h056zA7MeINEK275vzwly9tfhTNfiQiDxXERkmtTeIjtlFf0_7uwM7uVH4QRZnmdliaDuhRVhAGpQcSBme6DQSFhpMPwbcBWbifM7JNr8oqEKmWT8k-Kkrt8-kzil7j3p2cgiU7P2PPcZMtkR4UDnFEwfIcjBtqVhANjgCSJfv0I6U1Szxtv-klkRNE2pflGrzgO0LzFwuMYD0CXE9AmHmy7NnGXLS97vbDGL7c8pShKiFQXw4n1B2nlhAD305UXHTpEYEemviqnwPAzV5Hju6VGGxWv1LKbLW6mgkeeyzPSPQT7uK8RaUib4V8SOWKjNj1tweJ74R9M4MuVhAbY0RvGItaKKsSD5GtWdnUR6nqh9DokoAlK1Xv4Jm31TOLzmI3BhKyATlmtp1UudzAtLEm0wASz4iSVwGV8pwrFhA8s6fT0WVbhd4R7iE_Mz4yyhpvTd5kB1c6RXbrXVfw_k7bSU6UUse0ucqp6Db8REBLTL387T4j3pG41urO5GgeVhAN4wl7vOvF4pBV25weHnotlGr9YzL_ecRogzUkqbnFuq0OSOzxUlM6Jnxfvj46KMIXNDwNCDHJwqMnr1yW8map1hAfDDXQWDcqHjlTsAJWfplQlcG_UjmShweqQAFODTiczT7m_YavSMeOCYE-ikdlSxX8mmoJF_egnfA2Nw5jIsu9VhACoLUrsSjCcoInXaarIMlTkjRayX-qblmWFBD4BrpJ58V4zh0TsyVcaqrhv79VS8Axd3NkCs7_KvaCYjOflAqT1hArnzKtNMtqlq1P95nb0SAJ4BvJobavK_4GACXIGyHFoooS42H5qqNPb7b7IJZKKegv11QZqqSud0kIbAVH6hi-FhAh-0KefxFy3Nqrl3FC2sywsc6eMg0thdgkaJY56URKARFr4tKtVf6IWzCEDa9WfbHVeuC2-OcpeM87wEr0AL6SVhA1qmsnAEuMBoehLWDMda3OmpKQ48Gl56F7Vd62zqBDKQvYorb2dVhlEgMHMHGzsXYa4BEdFMSN7oQ3dteqGyfzVhADS0Jvmg8KOjKmhQ440sdJmG6jBg5GOhl2UEoeAuKDasZYdrpcl6h-MeI2Wwf7gs8Fw5vF8DwSOj6aQeCKmMSlVhAg-qlvas6Pm21j03s5nr-9kBEgKRg9gwJqGjFaqtUzqiflEaQCWTMFl-6jwZBqF-bL8Qi_fAsB3K9r45MDGnzQlhAOcvCVv8q3sBAssauLPcBzZrRWuk7mR0siVyitivxri4sqho949bLjS7MTjxWg1mfymWFEtdFolmx0RQS1a5J5lhAJgJJKq0E0XvqunVU-JCrI3Xu1Tj79HkEPOF4j_U7PW9zAjO5EAaPZdFYhLjYPVChRZHz8siELtBmFsrPGeKtPVhAIAnWkDV1_HROQ5YBh5k7EAChgkuVXqJrvIS5lxBJycRxwBpw-REUxg80bo2hXGOiLy7eYpAget7IKOBOGaMNv1hA2SXvNb1v7_BJHwc8C81dYv_tShfsqoID_uly7O5lXJcxkkuGfddPV68a1TVxJn3zWQCfmrLD12xMtvzCBTYOnVhA8ML_3jm2BpFYMKRlGniX__dUf2f76-aF9JuuSY68okBrsp1vJWx_jiHwHNqKWGZFoxv5AacyWN0pxuQGjTyuPVhADuQMc8USLCLLJM0RcwKExqPJqhYepEQIBPKwG_hc4ftgnTkde2KBgXnFG2vP0bDzfz9rRfsz4ZE_o9mP9TL3DlhAj-iGPIZDzC5NL3DSosPYjfWLGLU_rVK5doa17AScmkF4RwXW5DiYZuzkcNVdTqPIPP1fSWC6VIiIMPSYo8u5mFhAt0vP-jua9l-WFg2l4nhNfMaRUCuZYmPELyZNSrWU6FjlTIZIGCqHQxcZmJBq8uo9DTVHMTNtPaS5OqMIxgkcoLAAWCAATzFL9y3ehhn-pfVvWNTalZ-rh9fBigZH-gi_p5bDkQFYIDaTAVGMUMqMr9mCRYfchfrLYhUw9p0sWc5TOP_FNEAxAlggYqYzRsPUyUBFPTfUewxBaWVdYOQTzzvm_K3pNOLP3dIDWCAqfgYF2AmQ-N7x4qvvLBXIS4rG1vAAb_gUQerJObe7xARYICnwaK7lwJilZVnhzeAqcgqkgbv1QLjpib6bmfxmBpt2BVggQ45DBbNztzFUpoM__rs9lH_OxF5M3-KE8-GJisWZycgGWCDhI5gW7MB1JONY3SGuMKRK4MZ5QeW5nifHEQQ62VyyhQdYIImnSvTkL7rkdeJN61LJ0fcXBVDseMEdYf_AcpL1SRC8CFggKaG_GqHW3bz0WTdc38B4Vjkejw0iViVMQhPIeY5ZKc4JWCARLkIzGiBF9dyPVd5gIbDI4SO9aUZukCE3IMg-7qYSqApYICYUlB7rBdZG7Gj3abzqQuDUxi77yllGKXZX06GoJsMSC1ggPNHSyPmMUg3Aff7Jm6kC3j08bb9vcOheybXoOrTcUXgMWCANl__tXYPVHNMwsIoW_VuxL64Tsnn-OpgFfrR8DRp9nw1YIHVneNycdOOLU3R8kOEfJziVFYbUQJCIZwnpRhNWcl9MDlgguuJ1CkKxRUy_6XCo6TlQSh7dC8nxXZQ_Afq4UTYJcxQPWCAdBzDaIwaretgVGUy9igR7kG6ke8zpcwWeH4Yry1G3goQYHBgdGB8YIA\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/ns/credentials/v2\",{\"@protected\":true,\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}}],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Earth101\",\"sails\":[{\"size\":5.5,\"sailName\":\"Osprey\",\"year\":2023},{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023},{\"size\":6.8,\"sailName\":\"Vulture-FR\",\"year\":2020},{\"size\":7.7,\"sailName\":\"Vulture-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"Oak620\",\"brand\":\"Excite\",\"year\":2020},{\"boardName\":\"Excite Custom\",\"brand\":\"Excite\",\"year\":2018}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:32:18Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhAEEGztEAPdW3ZNpyPgwhXBR_WYxScdIQ6eOccXJpuPXabuJFfERP5Mg36iCQDXBaMnrlryMj8UCKGm79ZBfISFVgjgCQCzJogScEKbbHFWyS4IAJ2pvdqL4_fgCRVYQOu0_Ttb4CYN1hAdo5USmFR12fnp8u5iYfWh4MgV1dQdwb5PXWic2FT5PQKYXXQUFRTVhGdmmLNmzewNcsrZc70krnsxBBjF43BL1hAHvMXvPOM5NXM3o-kJll7ISNAGDuewKaYC2wA2kJ4gKM41w7Gh99BgIn4AknUIyDwWdIc-EELSt9I_bGGy3ePj1hAQVmjX5HRfjtTos-Pmlr0eRQL4BNNDYaHjuX0AsAEXwk1JcBM_BewaF1ORSKMhrdAZv8WZ3JR4uYxnHborMZnl1hAv1ZEsXlAY78OgQDv7tBmdcpoVlRucpVdTng-3wcHDOarYo87lNzjA1_VSB6KaEpYdFNBQO-3azsm9uMtViHBvVhAEJDtSu5_p04VfdQ3SPUcTrs_6YwSzEBFNM2RJDz71WPGj94cZ-YG1wisaHXajRwhYOCUcXo5w4oV36PvUvm4VVhArLjhQMjceKtYfU1msi7XmeSTjP3GQdg6aFGMXHk6BHSu4WVItULdPs8u_TEqS6nrx-tBOTi78SsowUsi3yrzT1hAkjB0Evan4WjFBV8G6TujAIerlxjAPv66YXI5dZwwxB6sIDJCTqCCeQoF9_pUazD6gsjqQHhhcjk1rkoaXW7MilhA4Bb77fuHfzQzcNKx65SsHBuDeh10XMhI3d-vFuQgrZcEuHVegwHwJ61v2OFV9SUasL9GDG6zQYSdc11c8AO9qVhAp6CdzxPX2pV7NO5OjRyAxugzXw58-_T8rj3BExR7a2HXLwnTAgNfP87d7VU0O489Me8yhFtzl7_IcNKpN4EtWlhAZzRHMUTL2vQJMmZOvgJDA4GH9krfFdZsCsb4YlPwAff2TwMucYGWeU0ACeOb5QxiZn9TGC0wHLv7mt8y5w1BJ1hA89voi4qUIUWwo_QyHlqaEoWKjKbO_owlKg5xpfMQ07XR0HJ-OJW0loCsvUss_itpElgy6igfg_5oI5GkaodbT1hAO7WZFfDnxmmn7QRPXLXeg3rknRXotFzedDWuu3GQF9i24sS4cZP2MpRWK6XuFL-IsIlSFY7XLnjkhynsvXgNn1hA8DDXM0cnfKwf_KdeInotLfSvGlae7VkZ7y015MuuvlQ3F793UhUHiR8y4GDXsqjoLIaqw019LRW1xysdYU7vo1hAKitBBfYiajMYSGw0ail5uiYJqLpCO5J0BKrKP6Uq78lVqdHf2T9mvlJ03wRuT9qw6b5Pz6f3eYdU7SP--MGb2VhAPI0alIUIYk3VzSIKMl0jyOsZrXxJU1bWwoj3J1LR8j1wUC6tnSHL1DlhPlnxRXgnwY1buUmn4yPccVU5xdDvf1hA1J-exx7157xb8dWd1dxSXeQU8O1gqRjNDKdD23KcVLzl1qRc2OsEJ_mvkFtc-DPwrR9NtwwtRhkuNiBn_8LDnVhAHLYl3ug1AIgq5u85zkBh8ZznQ2naXH_dW5Kj277SAU43zsbHnMtLMp8fuxTEtj0ujZkUgkJuE_BSffYgfWK9ZVhALsp65OEmp_cikH4J1I1yGTeQvlUM7chPtF52peDx1P5ITkj42fvvXieIek9JaLVd4QwPWeua_XSIDGJb7mBjP1hA5834f5p5LRWkI2kb1Lx_15JQRB66xWNWtpPtBUYD0R_Gs-23CFTa2dPIjcObkqnP0MH4smF7AusT3ey19POz3lhAaYmLlSDtmpQKJ79yZQumb8vX_-Qxzu3sr2uw2CEuxzx0nQCIAFbdp0zJN3Y9izwCLNvgEK3jbSPkwqKE9X0qE1hA8RSWCLnPFWhBAyM9vccR07_QxjYh8wsbjW1PGjUhkrxOVQpJGGrBt_im2J7aiIw3tUFN_lKMBN39S6r3pt2mElhAs2fpbhlMO_NS8XpymfC2L_g4xCf3PdP2InDTbJeSl4i3XhyBLKHZGWDYK84qMgK-9rBJNC4eltpCbTrR-JcGV1hAPkgXTQgLz0ftYYVaUtbKiMAP1jmM_RwcY_TnsBQJb-HBlk_MD_V1iGhdv04pTqbX50gZYV0q11nFBb3ty2GA81hArsy2BGaMAPZz0YunBvJEkFKTzN3eNi7ZG3LTK2eqmYqliwl5wS23JJ7gyt8R-FcPyffkpCC6YB8Rc59WR1_CPFhAA3G3UejSofvpOSy6pWv1nzOHEPSoCXADsfqqtX8u1fMistknhZVdkV1mB1lLJtnjzAwRjxKDKPjN3F7Nco4W-VhAzRAvm7IONUJLyYJIj2EI6rpExJqLPcxdjnilKF4Jf6wbOwTLK2lXvI_5kSjpXkwOMd7nF_wfdn4LNQBeMjc0_VhASr4Omr_89jzPv5vraSuI9uDd_SKo9ZMwivYv4Iv4GJFO8gESwTWxi30d2C75leP71C0ctHILYPsAcyBH_owGpVhALK-9iyHowkOnmH1CliQ9EYJ-RWeRChFLSr6MKilPvYpwhmRPYibNK-vmn9kbTs_M54nzciO11dQqiT8yHIfV8FhAV5xo6Avv5NqUdcv7SRA4No4w6a1ftBa7XOnlrb_573CVvTEd9v7dq7cq9u_ZyTBM7qFH6n_DMl8MCg8h-ie9uVhAdlKzrzXPb3IDMRNtr4puoX6KqU14fB3Q-4ayZ-F85MNsgJtb6ZobkFYUYD2cKzjZWS7Fn0rB8kWWu0h1kPut6VhAW0k1qaSrNE2PV9C8wyEv8RFslUl6QkGesc2LgtqhwnjqBqnHh6me9xoQuOC-a_mP_1g_zAjwrYZWsI-cI30TLFhAupcLxCcA1qtAn24p245OrEHe93rIEfc4cgkoFBhvs8sVd3mJEohpqG1H9xujLKSOhFcPMVlRha6y8bf1NyOw4lhArVRFL_0ALfxoQCz_GFSMNKQTtI_8vUWo1CEUzzqCLE0to-Sxx_wma_ZKL42qiir3-egGvJgg2RMqCqlL_GpxF1hADLH4R0HwGl-iBHQvSrU-kq20u96uvIJuuCykrfccyBgpj4C9d-S8v-FKMpf9F73ZGKH43KGzpWJ2g-3txlbyT1hAgEdEI0dEaP-TJbGDeGUpxYDgNuWuBdeGjm1Om5DitZVCW5caACL_Tnnq4i_1liHhg1IVxoSXekvnZQ8dbUt021hALu-b6T11mKTwXjZTamd0xB4GMM4p1I_fH03zlDDfoYawmGAixe-PsA-BQyajcKVJEQgZ1AuV_VEnAyOAQNQSA1hA6ttTwQGDxgWQRbuHpYswgI-o7YT-qyfTAloD3b6agYX_i27kUKGbOlyokSWOhnzPOueXqKWYNqZuG82REk1mBlhA42w_ovsRm82MEmMSKDnhD5hBtyP4dEgcRW8pg6ctZxMR31q455dWdqWeA7FaiTePbOoB-trFy89dVl4Kczt681hAdXM42rFd8iIp8teBVEH3EGFPOM2Qzmhx6muOQOLaJnPT13xoTfVDweEDAAOGF5d7FOF_cFDwvYTGgllDXDolJVhAr1G9Jjo7zzLUTgnp0GEL5AGZA0BnC9pg_kjkQunkxUB5KhNvHS_ggTG-icn9-E0vTXmJxd7AJgvFFQ4cKge4eFhAlE9ojp4rOQF3yIdcLrnPEvrEsuZEpxkmN0koStEecwcUR3h_pe6qydZ9FZgjmLI6iD8RZ0y07ihz1AaRWmi8a1hA5z_FhhdFA3X7Lt1Nuxs35aD7D0_FnJXeZ6zEhG45k7LPAl6DCMQGr7Oh7FWAsbGSMQFydXAcDVHkmzU_qrxA5VhAVnVrYD0QZnkJEATb3h-U47TArdYt9fHpUzepMx1rZQnc4MAo2gFPYUXoQtkGqAl1BHaue_XkGYFThwZ8ocjHgFhArjJ5OZO4tKS3NkuwQ-HJs9Z14QLHz5gyhmMtbn9WNH63bhYOVRwF-CuamdfzZfh7QzuvQ_Jo32fxJK1eKVvjEVhA9mdnSjFwaZvwj5npz3wDSKzIDSQefvdVJwt5C8Acpg0rQhzVdS7my0EUrUi47010CpcGJXMlw_9dzw0iR9VqWFhA0V4Qm_fD6JUEXHNXLane1wmfyFNRYgy6Fpc4Hy_CkYgLzmTQsHX7XqicTRmfmMuOGi4xDFRKF3OhoMrkGf79I1hA_ju8-mgi3bPtpv3oslwp8ytoCUMOrLQjIkdTZx_9O-qLgabZJlwiQTMgx9qHWOncMk7cAB2df95SRwpmdHYzG1hAiIS6o0DZl2oQ4e20WEKPQG89wby-SJk6qIX__CvI3U6DH5qsTRK2GbS6iDf9N8GcS7sltToSakYDWAlt4As9WVhAg65DymZGa8t2hFuc8DsPIEnKXgp-oHeqMKsDBjnp6nkkpVAlWOitkHN43obio3rSRdwNo4L2_FATT0TRBLx3U1hATMKI6-ANYA5H3-HPBOBPFTZPqlc_DjXTmw25lKiSMeuYThW1qWAmEt3EKwDJLb9W9W4hOobJhOdYhbCQP1d5rFhAozYEs6ru62aaJkg2MoNZ_KYwJgpAAXoipgQTDTIqSSo4IuQtfmh9FGgUKAinGwN6SGqLCSbrmswB48RYAU_Ce1hAuQbBeIzJXSDUMxUCAxRAIlQHJcyXd2FgIfQ0Id1YfmIsbxOuX2uJlT-5LWK-2FZLfFBsSxa-klc2-Z5lDvoF-VhAoRDnHXmPRLieHe1ihZOgsVGIqU9IkFq4yZ0XIIYoFOEiwVTwqDlHxXo5rf8HTqEJT5vvFTUyZcJkxWCMj4WhylhA8EjVP6uO7OK3Ny10H0ppPMZ3lPCPIRK0Yr7mVb9z4STMUcVp1symNIQLxmKd0Ga8iJvv28zgU1SO6IGUtv-fGVhA1meWFNAbTbe4mToXDssQtHakUMEh9EsPB4Xzc6P249geGL6lFtaoVeAvDz1QkFLYwMmopw71Y25JxIgtpo35QLAAWCBDjh1PWtdTTir6l5slWqCCRPltlCJ1guvHtv14Csja1AFYILzPJcyW3DuLd_3Mno9zKBJ8WoyIe_mxGeji-CGeIbquAlggaz0Ocyle39q8tfUVHtKO48iQTudSfjTToFFvF4RDtr4DWCB60qenP5i0mWJW6Sb75pGoyYjtazDwZOPEKXKIwxIlwgRYIDSmqSzzQyQ_mpStErtsVdyAAHU_WEzlAEvORcnYoJ28BVggk4MrABs4T39Fmado7T0cXulTbfyk_rcMSHUs28cXetQGWCAPb93NPFIykiS-6SEwUEdGt4byU71wuqIzjQmFDBa1FgdYID9AlF9C4hjRQhzOWofLlr6u57wbI6AKOggoN69ZEwt0CFggKXuxBP8TDxiZOQPsTWa0cbuz1rRJH0lU4dNyq3TEDiUJWCCs6O88q63Uy50r0P0La9UCvaQ9HdAVeUTsxRbyK9Ds0QpYIPMGUJuQ7OxLN00ZsV-q0K1q1ZYyHmKAhJtJeFyCZnEQC1ggC_9tRiXiC91z_3zxMXLmhnouuIBDEHfG7wa-30sw81cMWCBMmW4xlhnuea5CnGzVAUSS5K01GwZp5ytCrkGA0pngwQ1YICedYG8ZkveXOswDE43aP8QfHBSubZNuNslvw-Qp58jMDlggI4tR74Q0IqG7mBznY9zU3n13woFjl7_REr2-LU5l_6cPWCArSmK0FH3ES0fvLz_R5_4EMmpi1vJKsgmAiEB7lnPQH4MYNhg3GDk\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/ns/credentials/v2", { "@protected": true, - "name": "https://schema.org/name", "ExampleAchievementCredential": "urn:example:ExampleAchievementCredential", "WindsailingAchievement": { "@id": "urn:example:WindsailingAchievement", @@ -27392,14 +33114,12 @@ "@id": "urn:example:achievements", "@type": "@id" } - }, - "https://w3id.org/security/data-integrity/v2" + } ], "type": [ "VerifiableCredential", "ExampleAchievementCredential" ], - "issuanceDate": "2024-04-07T05:06:42Z", "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "credentialSubject": { "achievements": [ @@ -27483,11 +33203,11 @@ }, "proof": { "type": "DataIntegrityProof", - "created": "2024-04-07T05:06:42Z", + "created": "2024-04-14T05:32:18Z", "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod", - "proofValue": "u2V0BhVhAqYSIiU8I8_K6Z6q0E_aFOHjy58rFXWuouB2qMnHen27KFOYKgO_OFuhscOpDI1OZkRUhyUMZ7DMbmDDsrqbqkVgjgCQCw_GA_l7sCMMM0NzITNPhTB3Qk4s3Zz4Jqa9NwE04trKYN1hAKKbPyaAxb1wpS8mIxMjpySdG3avu-a3ISoQ2m-Xeqg6PqnwPA6zbLnDBAvTzzAicYyj4DnPXy5_fhKT9NUerrlhAimNffUmT222i3FKqibw9WPUQx8TPZFnqIRRpCqapwsxdrrVXKDlypsMaPYCA5_FBmT0K0hdUhNivf9xxLoSBdFhAbeZON53qz7f11bwkDqigSSNt7NVS-6BPUtnaqOWnHSK5hLUoWZ9QjxBIOuj6Zt3FMcwE8TIxcUUcjnSUsU4IfVhAk4EgVDlxS-fqoV4pnLKdgZnPsZqos82JPDdG-N1d2AbVIc0rauHlhlW6Hw75-tvOItyVc6DzcdhqcWJIgPSnQlhArhtuywhLYyly3NBuvDtu-7OWdJo0tvNtYaC7xhhxG_ZDR6LghwNHvA1pczQu-5FsXWco9VHIApR7J1f4znnk_lhAJGYw5Eg1mr4xtNNZsaFkamQTD1VbDxuAYIR3HDQOUbPW36YkTcf_BOP-0nAZ0u_cVccYAzC00EgIw4W2i8uDmFhAZsWvkWDGwJUkKDEDdjBs-UXW8x6Be9UrI4-H0AkM0LlhTElWO1JJw4waLE0MkSbLp7St5w0JZEwtWTnLNHb761hA3VQJ0mr3LXKYL--hthuvQeVHeR3ssY3q-cEdfGGNA9EZgyTwGLz0l9R2-OqLyQZBwQWkPzSlDTHw7qDLA2gZtVhAaegjPcgE_AXx4USBrtbgC6I8-4zOd0Bfllul8tOl1GaK1asNgdWvCptO65_CBUqSkN_r0mMIOmzpkWVPFTJTkVhA4eaimna9jJgnlzlbRL3Ygx0knzLowDvO7dKJ4sP_yu8YE2tCsqv2juu7tqJUa7mlQrSBVCTskofqe9xm9N4u6VhARatUaf2aoBRrzFj0ClRscECTD1xmeifrK3F90R8csmXNR4MS_RWVg_p0GfIqNpWl1xNXj68G4arWIpNeYfwd8VhA49gg_jPOBy8QgjkjX9l2LZJINuawO0Va7_QjXuu9fJJ_dKeunXm_9xPQEMhYEAD2KryP9PxYbKSnZtVZnPpxC1hAuuMtX2nO4-xstLw4cCE2B5VZG182YOAx_vTtBoc0EUEoUtfx9UVtyaY5TE-7sGRjiRq19QUfw7fYGgzDTfXiRFhAnMnaCZY0dZDk-v4_UWPRID70V-AJpuN3dbLDXwHa_sjk5UMEnSfjBGJ3dqriQFdH9wlWZHNEeBFfWCRz2zugn1hAJcVPxVcl2pd2dFo6hWk3k5o8PIQzd-nKe6xCS5eHhJPKC-gYkvGOPjYL8lXumtDTUo1rwW64RYhbn92qVymktFhACVeSwKiurCXvkZL13m8P0sSqEba7kXV5TU79QCTqVwdBN6-iDzEXLcMuOo1O7-M4oNT7QCOR3FyFnu_KqRhN9lhAyGCJITQHcEW7cplTQ1pYIkUd0TfRBu41Yxzl_ZBPp6zN0KiEO_r589xvISVySDPsE_RYdZ2WYwkJ76OrWocPrlhAv0WtqLorh3rM_ccWFLtrYAUOHIz7ztskhMqm9XVkXxMyZbdF23UFoTNOv1T9IB1ydyaN6j-gVBbq6_0CHIE8p1hAY68oDCZ2-7vlioc6__ZMCJROM7Bi0F9Zj-MN3pYUbTY_WE84kP01ffO9L1yPHePKx_dSvg8vOiUR4m7YZ0mdklhALnnV50jp-KLJt-0uWgfwinHTMCYKg5TXutCPm5ajIU6DyJSYBgEjDj94Nuxv4K_WKpmsUXuMIsCrMcYThyTaclhAbdjDCw-4JlIHqCHxrlbUSbjyPEoSH31bOfz9-wcjDmhtM1HTY84grW4utBLCwj1z3NFOkESRCvTfgInKqxeZmVhAgCYjx_Q4CGd4KJ_0XD9JlRi05uXlCrJeBHd8AqWZmIQzq8bjt8h2ZypoC8a-zWqbjbnV6P-4KZdZSbrfCwuliFhAR9bz41EMDRN7g4sIRKVU1fFtR1hPbD8GRcg2pHKq9kXM8j4tPz3kAHrNnE3c8078qWGRYto2pxLy-2cvaeJUxlhAADHkMki3kNcO-eIyIMd5HAMFC4bKTI0NQJ4yNZ4xONL8WDhRQUEw4QdGFrmUZ5aWu0CB5A0fAWtipmTiiT2lKVhAqEdHIvivznFxlkBaSAqsoMFxhvNY-2z0YYLydbgMoX8yJ45PwUYIvaLbWCBjAWklaFuMOIh25e4ARPaP5hVCblhAeWW7NI3KJer9znklUNiddto8jkm06zOxEWIbyZiFtEAB0fhXNa4dw5QJfgF1GNlyGWxjVDxPzCcZN4XONBFs2FhAU72CpgfR_Xn0UnimG8EdUwLJJoSfozYwx6FhbzugHcvAdipixoZ7OenVVVKEb_OSVfRRyRwAiqGheZfsq4LrNlhAdvnAylAW2pO5gcOKKFGICvFs3Ir3Swh8neL2Krn1swE_tZ_6SqdENcGUxkj9PoGtXUrm69jIPioq0FPixipWLlhAskk3OmoOkmKF1PXHa6qGffp2KVPOpcOFMDuuaVDplqrMpBNJiv1dF6jxQXmCEMP5vCWCMEUzyTJcnzHi8-0GoVhA9B8VZvAfqsZwHc5xptJ6aXuu78gM_7JX7DVvoKxK3Wj-QLJE71edPbotDL3iqGtHR6_3RUAmH9w_zJckHcPdelhAF3dGYhZjUunnmoIOWlpJnO9iOrFh61RwGgAEW6Lc8OKEBO-FwLHohLrXY21qcwuQ-AuVj7HeeyYANk8OaRlW0lhAo4rQN1xQHUwrwXQyw_fN30U7T2NTL3RwDvnn2-Zr8JMxh_s3mz3kym5Fb6Nb2WGchDpIjEqUVsFVVM-rNrsEilhArceAJbJdsJoLhauwshRGi_2yayalQEYhFMyUnN54dBJ2J4kApzPO-K9EJmv6k8__qHfsR8sGEabmUr9u7QJma1hABWvR76tRdby_Z1h056zA7MeINEK275vzwly9tfhTNfiQiDxXERkmtTeIjtlFf0_7uwM7uVH4QRZnmdliaDuhRVhAGpQcSBme6DQSFhpMPwbcBWbifM7JNr8oqEKmWT8k-Kkrt8-kzil7j3p2cgiU7P2PPcZMtkR4UDnFEwfIcjBtqVhANjgCSJfv0I6U1Szxtv-klkRNE2pflGrzgO0LzFwuMYD0CXE9AmHmy7NnGXLS97vbDGL7c8pShKiFQXw4n1B2nlhAD305UXHTpEYEemviqnwPAzV5Hju6VGGxWv1LKbLW6mgkeeyzPSPQT7uK8RaUib4V8SOWKjNj1tweJ74R9M4MuVhAbY0RvGItaKKsSD5GtWdnUR6nqh9DokoAlK1Xv4Jm31TOLzmI3BhKyATlmtp1UudzAtLEm0wASz4iSVwGV8pwrFhA8s6fT0WVbhd4R7iE_Mz4yyhpvTd5kB1c6RXbrXVfw_k7bSU6UUse0ucqp6Db8REBLTL387T4j3pG41urO5GgeVhAN4wl7vOvF4pBV25weHnotlGr9YzL_ecRogzUkqbnFuq0OSOzxUlM6Jnxfvj46KMIXNDwNCDHJwqMnr1yW8map1hAfDDXQWDcqHjlTsAJWfplQlcG_UjmShweqQAFODTiczT7m_YavSMeOCYE-ikdlSxX8mmoJF_egnfA2Nw5jIsu9VhACoLUrsSjCcoInXaarIMlTkjRayX-qblmWFBD4BrpJ58V4zh0TsyVcaqrhv79VS8Axd3NkCs7_KvaCYjOflAqT1hArnzKtNMtqlq1P95nb0SAJ4BvJobavK_4GACXIGyHFoooS42H5qqNPb7b7IJZKKegv11QZqqSud0kIbAVH6hi-FhAh-0KefxFy3Nqrl3FC2sywsc6eMg0thdgkaJY56URKARFr4tKtVf6IWzCEDa9WfbHVeuC2-OcpeM87wEr0AL6SVhA1qmsnAEuMBoehLWDMda3OmpKQ48Gl56F7Vd62zqBDKQvYorb2dVhlEgMHMHGzsXYa4BEdFMSN7oQ3dteqGyfzVhADS0Jvmg8KOjKmhQ440sdJmG6jBg5GOhl2UEoeAuKDasZYdrpcl6h-MeI2Wwf7gs8Fw5vF8DwSOj6aQeCKmMSlVhAg-qlvas6Pm21j03s5nr-9kBEgKRg9gwJqGjFaqtUzqiflEaQCWTMFl-6jwZBqF-bL8Qi_fAsB3K9r45MDGnzQlhAOcvCVv8q3sBAssauLPcBzZrRWuk7mR0siVyitivxri4sqho949bLjS7MTjxWg1mfymWFEtdFolmx0RQS1a5J5lhAJgJJKq0E0XvqunVU-JCrI3Xu1Tj79HkEPOF4j_U7PW9zAjO5EAaPZdFYhLjYPVChRZHz8siELtBmFsrPGeKtPVhAIAnWkDV1_HROQ5YBh5k7EAChgkuVXqJrvIS5lxBJycRxwBpw-REUxg80bo2hXGOiLy7eYpAget7IKOBOGaMNv1hA2SXvNb1v7_BJHwc8C81dYv_tShfsqoID_uly7O5lXJcxkkuGfddPV68a1TVxJn3zWQCfmrLD12xMtvzCBTYOnVhA8ML_3jm2BpFYMKRlGniX__dUf2f76-aF9JuuSY68okBrsp1vJWx_jiHwHNqKWGZFoxv5AacyWN0pxuQGjTyuPVhADuQMc8USLCLLJM0RcwKExqPJqhYepEQIBPKwG_hc4ftgnTkde2KBgXnFG2vP0bDzfz9rRfsz4ZE_o9mP9TL3DlhAj-iGPIZDzC5NL3DSosPYjfWLGLU_rVK5doa17AScmkF4RwXW5DiYZuzkcNVdTqPIPP1fSWC6VIiIMPSYo8u5mFhAt0vP-jua9l-WFg2l4nhNfMaRUCuZYmPELyZNSrWU6FjlTIZIGCqHQxcZmJBq8uo9DTVHMTNtPaS5OqMIxgkcoLAAWCAATzFL9y3ehhn-pfVvWNTalZ-rh9fBigZH-gi_p5bDkQFYIDaTAVGMUMqMr9mCRYfchfrLYhUw9p0sWc5TOP_FNEAxAlggYqYzRsPUyUBFPTfUewxBaWVdYOQTzzvm_K3pNOLP3dIDWCAqfgYF2AmQ-N7x4qvvLBXIS4rG1vAAb_gUQerJObe7xARYICnwaK7lwJilZVnhzeAqcgqkgbv1QLjpib6bmfxmBpt2BVggQ45DBbNztzFUpoM__rs9lH_OxF5M3-KE8-GJisWZycgGWCDhI5gW7MB1JONY3SGuMKRK4MZ5QeW5nifHEQQ62VyyhQdYIImnSvTkL7rkdeJN61LJ0fcXBVDseMEdYf_AcpL1SRC8CFggKaG_GqHW3bz0WTdc38B4Vjkejw0iViVMQhPIeY5ZKc4JWCARLkIzGiBF9dyPVd5gIbDI4SO9aUZukCE3IMg-7qYSqApYICYUlB7rBdZG7Gj3abzqQuDUxi77yllGKXZX06GoJsMSC1ggPNHSyPmMUg3Aff7Jm6kC3j08bb9vcOheybXoOrTcUXgMWCANl__tXYPVHNMwsIoW_VuxL64Tsnn-OpgFfrR8DRp9nw1YIHVneNycdOOLU3R8kOEfJziVFYbUQJCIZwnpRhNWcl9MDlgguuJ1CkKxRUy_6XCo6TlQSh7dC8nxXZQ_Afq4UTYJcxQPWCAdBzDaIwaretgVGUy9igR7kG6ke8zpcwWeH4Yry1G3goQYHBgdGB8YIA" + "proofValue": "u2V0BhVhAEEGztEAPdW3ZNpyPgwhXBR_WYxScdIQ6eOccXJpuPXabuJFfERP5Mg36iCQDXBaMnrlryMj8UCKGm79ZBfISFVgjgCQCzJogScEKbbHFWyS4IAJ2pvdqL4_fgCRVYQOu0_Ttb4CYN1hAdo5USmFR12fnp8u5iYfWh4MgV1dQdwb5PXWic2FT5PQKYXXQUFRTVhGdmmLNmzewNcsrZc70krnsxBBjF43BL1hAHvMXvPOM5NXM3o-kJll7ISNAGDuewKaYC2wA2kJ4gKM41w7Gh99BgIn4AknUIyDwWdIc-EELSt9I_bGGy3ePj1hAQVmjX5HRfjtTos-Pmlr0eRQL4BNNDYaHjuX0AsAEXwk1JcBM_BewaF1ORSKMhrdAZv8WZ3JR4uYxnHborMZnl1hAv1ZEsXlAY78OgQDv7tBmdcpoVlRucpVdTng-3wcHDOarYo87lNzjA1_VSB6KaEpYdFNBQO-3azsm9uMtViHBvVhAEJDtSu5_p04VfdQ3SPUcTrs_6YwSzEBFNM2RJDz71WPGj94cZ-YG1wisaHXajRwhYOCUcXo5w4oV36PvUvm4VVhArLjhQMjceKtYfU1msi7XmeSTjP3GQdg6aFGMXHk6BHSu4WVItULdPs8u_TEqS6nrx-tBOTi78SsowUsi3yrzT1hAkjB0Evan4WjFBV8G6TujAIerlxjAPv66YXI5dZwwxB6sIDJCTqCCeQoF9_pUazD6gsjqQHhhcjk1rkoaXW7MilhA4Bb77fuHfzQzcNKx65SsHBuDeh10XMhI3d-vFuQgrZcEuHVegwHwJ61v2OFV9SUasL9GDG6zQYSdc11c8AO9qVhAp6CdzxPX2pV7NO5OjRyAxugzXw58-_T8rj3BExR7a2HXLwnTAgNfP87d7VU0O489Me8yhFtzl7_IcNKpN4EtWlhAZzRHMUTL2vQJMmZOvgJDA4GH9krfFdZsCsb4YlPwAff2TwMucYGWeU0ACeOb5QxiZn9TGC0wHLv7mt8y5w1BJ1hA89voi4qUIUWwo_QyHlqaEoWKjKbO_owlKg5xpfMQ07XR0HJ-OJW0loCsvUss_itpElgy6igfg_5oI5GkaodbT1hAO7WZFfDnxmmn7QRPXLXeg3rknRXotFzedDWuu3GQF9i24sS4cZP2MpRWK6XuFL-IsIlSFY7XLnjkhynsvXgNn1hA8DDXM0cnfKwf_KdeInotLfSvGlae7VkZ7y015MuuvlQ3F793UhUHiR8y4GDXsqjoLIaqw019LRW1xysdYU7vo1hAKitBBfYiajMYSGw0ail5uiYJqLpCO5J0BKrKP6Uq78lVqdHf2T9mvlJ03wRuT9qw6b5Pz6f3eYdU7SP--MGb2VhAPI0alIUIYk3VzSIKMl0jyOsZrXxJU1bWwoj3J1LR8j1wUC6tnSHL1DlhPlnxRXgnwY1buUmn4yPccVU5xdDvf1hA1J-exx7157xb8dWd1dxSXeQU8O1gqRjNDKdD23KcVLzl1qRc2OsEJ_mvkFtc-DPwrR9NtwwtRhkuNiBn_8LDnVhAHLYl3ug1AIgq5u85zkBh8ZznQ2naXH_dW5Kj277SAU43zsbHnMtLMp8fuxTEtj0ujZkUgkJuE_BSffYgfWK9ZVhALsp65OEmp_cikH4J1I1yGTeQvlUM7chPtF52peDx1P5ITkj42fvvXieIek9JaLVd4QwPWeua_XSIDGJb7mBjP1hA5834f5p5LRWkI2kb1Lx_15JQRB66xWNWtpPtBUYD0R_Gs-23CFTa2dPIjcObkqnP0MH4smF7AusT3ey19POz3lhAaYmLlSDtmpQKJ79yZQumb8vX_-Qxzu3sr2uw2CEuxzx0nQCIAFbdp0zJN3Y9izwCLNvgEK3jbSPkwqKE9X0qE1hA8RSWCLnPFWhBAyM9vccR07_QxjYh8wsbjW1PGjUhkrxOVQpJGGrBt_im2J7aiIw3tUFN_lKMBN39S6r3pt2mElhAs2fpbhlMO_NS8XpymfC2L_g4xCf3PdP2InDTbJeSl4i3XhyBLKHZGWDYK84qMgK-9rBJNC4eltpCbTrR-JcGV1hAPkgXTQgLz0ftYYVaUtbKiMAP1jmM_RwcY_TnsBQJb-HBlk_MD_V1iGhdv04pTqbX50gZYV0q11nFBb3ty2GA81hArsy2BGaMAPZz0YunBvJEkFKTzN3eNi7ZG3LTK2eqmYqliwl5wS23JJ7gyt8R-FcPyffkpCC6YB8Rc59WR1_CPFhAA3G3UejSofvpOSy6pWv1nzOHEPSoCXADsfqqtX8u1fMistknhZVdkV1mB1lLJtnjzAwRjxKDKPjN3F7Nco4W-VhAzRAvm7IONUJLyYJIj2EI6rpExJqLPcxdjnilKF4Jf6wbOwTLK2lXvI_5kSjpXkwOMd7nF_wfdn4LNQBeMjc0_VhASr4Omr_89jzPv5vraSuI9uDd_SKo9ZMwivYv4Iv4GJFO8gESwTWxi30d2C75leP71C0ctHILYPsAcyBH_owGpVhALK-9iyHowkOnmH1CliQ9EYJ-RWeRChFLSr6MKilPvYpwhmRPYibNK-vmn9kbTs_M54nzciO11dQqiT8yHIfV8FhAV5xo6Avv5NqUdcv7SRA4No4w6a1ftBa7XOnlrb_573CVvTEd9v7dq7cq9u_ZyTBM7qFH6n_DMl8MCg8h-ie9uVhAdlKzrzXPb3IDMRNtr4puoX6KqU14fB3Q-4ayZ-F85MNsgJtb6ZobkFYUYD2cKzjZWS7Fn0rB8kWWu0h1kPut6VhAW0k1qaSrNE2PV9C8wyEv8RFslUl6QkGesc2LgtqhwnjqBqnHh6me9xoQuOC-a_mP_1g_zAjwrYZWsI-cI30TLFhAupcLxCcA1qtAn24p245OrEHe93rIEfc4cgkoFBhvs8sVd3mJEohpqG1H9xujLKSOhFcPMVlRha6y8bf1NyOw4lhArVRFL_0ALfxoQCz_GFSMNKQTtI_8vUWo1CEUzzqCLE0to-Sxx_wma_ZKL42qiir3-egGvJgg2RMqCqlL_GpxF1hADLH4R0HwGl-iBHQvSrU-kq20u96uvIJuuCykrfccyBgpj4C9d-S8v-FKMpf9F73ZGKH43KGzpWJ2g-3txlbyT1hAgEdEI0dEaP-TJbGDeGUpxYDgNuWuBdeGjm1Om5DitZVCW5caACL_Tnnq4i_1liHhg1IVxoSXekvnZQ8dbUt021hALu-b6T11mKTwXjZTamd0xB4GMM4p1I_fH03zlDDfoYawmGAixe-PsA-BQyajcKVJEQgZ1AuV_VEnAyOAQNQSA1hA6ttTwQGDxgWQRbuHpYswgI-o7YT-qyfTAloD3b6agYX_i27kUKGbOlyokSWOhnzPOueXqKWYNqZuG82REk1mBlhA42w_ovsRm82MEmMSKDnhD5hBtyP4dEgcRW8pg6ctZxMR31q455dWdqWeA7FaiTePbOoB-trFy89dVl4Kczt681hAdXM42rFd8iIp8teBVEH3EGFPOM2Qzmhx6muOQOLaJnPT13xoTfVDweEDAAOGF5d7FOF_cFDwvYTGgllDXDolJVhAr1G9Jjo7zzLUTgnp0GEL5AGZA0BnC9pg_kjkQunkxUB5KhNvHS_ggTG-icn9-E0vTXmJxd7AJgvFFQ4cKge4eFhAlE9ojp4rOQF3yIdcLrnPEvrEsuZEpxkmN0koStEecwcUR3h_pe6qydZ9FZgjmLI6iD8RZ0y07ihz1AaRWmi8a1hA5z_FhhdFA3X7Lt1Nuxs35aD7D0_FnJXeZ6zEhG45k7LPAl6DCMQGr7Oh7FWAsbGSMQFydXAcDVHkmzU_qrxA5VhAVnVrYD0QZnkJEATb3h-U47TArdYt9fHpUzepMx1rZQnc4MAo2gFPYUXoQtkGqAl1BHaue_XkGYFThwZ8ocjHgFhArjJ5OZO4tKS3NkuwQ-HJs9Z14QLHz5gyhmMtbn9WNH63bhYOVRwF-CuamdfzZfh7QzuvQ_Jo32fxJK1eKVvjEVhA9mdnSjFwaZvwj5npz3wDSKzIDSQefvdVJwt5C8Acpg0rQhzVdS7my0EUrUi47010CpcGJXMlw_9dzw0iR9VqWFhA0V4Qm_fD6JUEXHNXLane1wmfyFNRYgy6Fpc4Hy_CkYgLzmTQsHX7XqicTRmfmMuOGi4xDFRKF3OhoMrkGf79I1hA_ju8-mgi3bPtpv3oslwp8ytoCUMOrLQjIkdTZx_9O-qLgabZJlwiQTMgx9qHWOncMk7cAB2df95SRwpmdHYzG1hAiIS6o0DZl2oQ4e20WEKPQG89wby-SJk6qIX__CvI3U6DH5qsTRK2GbS6iDf9N8GcS7sltToSakYDWAlt4As9WVhAg65DymZGa8t2hFuc8DsPIEnKXgp-oHeqMKsDBjnp6nkkpVAlWOitkHN43obio3rSRdwNo4L2_FATT0TRBLx3U1hATMKI6-ANYA5H3-HPBOBPFTZPqlc_DjXTmw25lKiSMeuYThW1qWAmEt3EKwDJLb9W9W4hOobJhOdYhbCQP1d5rFhAozYEs6ru62aaJkg2MoNZ_KYwJgpAAXoipgQTDTIqSSo4IuQtfmh9FGgUKAinGwN6SGqLCSbrmswB48RYAU_Ce1hAuQbBeIzJXSDUMxUCAxRAIlQHJcyXd2FgIfQ0Id1YfmIsbxOuX2uJlT-5LWK-2FZLfFBsSxa-klc2-Z5lDvoF-VhAoRDnHXmPRLieHe1ihZOgsVGIqU9IkFq4yZ0XIIYoFOEiwVTwqDlHxXo5rf8HTqEJT5vvFTUyZcJkxWCMj4WhylhA8EjVP6uO7OK3Ny10H0ppPMZ3lPCPIRK0Yr7mVb9z4STMUcVp1symNIQLxmKd0Ga8iJvv28zgU1SO6IGUtv-fGVhA1meWFNAbTbe4mToXDssQtHakUMEh9EsPB4Xzc6P249geGL6lFtaoVeAvDz1QkFLYwMmopw71Y25JxIgtpo35QLAAWCBDjh1PWtdTTir6l5slWqCCRPltlCJ1guvHtv14Csja1AFYILzPJcyW3DuLd_3Mno9zKBJ8WoyIe_mxGeji-CGeIbquAlggaz0Ocyle39q8tfUVHtKO48iQTudSfjTToFFvF4RDtr4DWCB60qenP5i0mWJW6Sb75pGoyYjtazDwZOPEKXKIwxIlwgRYIDSmqSzzQyQ_mpStErtsVdyAAHU_WEzlAEvORcnYoJ28BVggk4MrABs4T39Fmado7T0cXulTbfyk_rcMSHUs28cXetQGWCAPb93NPFIykiS-6SEwUEdGt4byU71wuqIzjQmFDBa1FgdYID9AlF9C4hjRQhzOWofLlr6u57wbI6AKOggoN69ZEwt0CFggKXuxBP8TDxiZOQPsTWa0cbuz1rRJH0lU4dNyq3TEDiUJWCCs6O88q63Uy50r0P0La9UCvaQ9HdAVeUTsxRbyK9Ds0QpYIPMGUJuQ7OxLN00ZsV-q0K1q1ZYyHmKAhJtJeFyCZnEQC1ggC_9tRiXiC91z_3zxMXLmhnouuIBDEHfG7wa-30sw81cMWCBMmW4xlhnuea5CnGzVAUSS5K01GwZp5ytCrkGA0pngwQ1YICedYG8ZkveXOswDE43aP8QfHBSubZNuNslvw-Qp58jMDlggI4tR74Q0IqG7mBznY9zU3n13woFjl7_REr2-LU5l_6cPWCArSmK0FH3ES0fvLz_R5_4EMmpi1vJKsgmAiEB7lnPQH4MYNhg3GDk" } }, "options": { @@ -27574,13 +33294,13 @@ } }, "operator": "notStrictEqual", - "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:117: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:211:17)" + "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)" } }, { "type": "test", "title": "MUST verify with full array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27590,32 +33310,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:a47b061c-3cc3-42f8-a08e-5c4edf2260a0", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:8c5fba01-c6a4-439e-8943-23e3bb2d79cb", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify with full array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31242, + "_idleStart": 36967, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 83, + "duration": 65, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", "title": "MUST verify with full array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithFullArray);\n for(const credential of disclosedCredentialsWithFullArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27625,25 +33345,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:8e316806-0e2c-4f2f-af49-284e92dd02a5", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:2f2b7050-b593-4520-a50f-be31708fd608", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify with full array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 32321, + "_idleStart": 38309, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 580, + "duration": 691, "state": "passed", "speed": "slow" } @@ -27655,7 +33375,7 @@ { "type": "test", "title": "MUST verify with fewer array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithLessThanFullSubArray\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27665,25 +33385,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:35e50aef-20fd-40d5-a929-a4960d68777b", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:2c9ec7a0-3e50-470c-8a09-cbe51e2ea78e", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify with fewer array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26076, + "_idleStart": 32474, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 296, + "duration": 203, "state": "failed", "err": { "name": "AssertionError", @@ -27694,15 +33414,14 @@ "request": {}, "options": { "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",{\"@protected\":true,\"name\":\"https://schema.org/name\",\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}},\"https://w3id.org/security/data-integrity/v2\"],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuanceDate\":\"2024-04-07T05:06:42Z\",\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sails\":[{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-07T05:06:42Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhAqYSIiU8I8_K6Z6q0E_aFOHjy58rFXWuouB2qMnHen27KFOYKgO_OFuhscOpDI1OZkRUhyUMZ7DMbmDDsrqbqkVgjgCQCw_GA_l7sCMMM0NzITNPhTB3Qk4s3Zz4Jqa9NwE04trKYIlhAKKbPyaAxb1wpS8mIxMjpySdG3avu-a3ISoQ2m-Xeqg6PqnwPA6zbLnDBAvTzzAicYyj4DnPXy5_fhKT9NUerrlhAimNffUmT222i3FKqibw9WPUQx8TPZFnqIRRpCqapwsxdrrVXKDlypsMaPYCA5_FBmT0K0hdUhNivf9xxLoSBdFhAbeZON53qz7f11bwkDqigSSNt7NVS-6BPUtnaqOWnHSK5hLUoWZ9QjxBIOuj6Zt3FMcwE8TIxcUUcjnSUsU4IfVhAk4EgVDlxS-fqoV4pnLKdgZnPsZqos82JPDdG-N1d2AbVIc0rauHlhlW6Hw75-tvOItyVc6DzcdhqcWJIgPSnQlhArhtuywhLYyly3NBuvDtu-7OWdJo0tvNtYaC7xhhxG_ZDR6LghwNHvA1pczQu-5FsXWco9VHIApR7J1f4znnk_lhAJGYw5Eg1mr4xtNNZsaFkamQTD1VbDxuAYIR3HDQOUbPW36YkTcf_BOP-0nAZ0u_cVccYAzC00EgIw4W2i8uDmFhA3VQJ0mr3LXKYL--hthuvQeVHeR3ssY3q-cEdfGGNA9EZgyTwGLz0l9R2-OqLyQZBwQWkPzSlDTHw7qDLA2gZtVhAaegjPcgE_AXx4USBrtbgC6I8-4zOd0Bfllul8tOl1GaK1asNgdWvCptO65_CBUqSkN_r0mMIOmzpkWVPFTJTkVhA4eaimna9jJgnlzlbRL3Ygx0knzLowDvO7dKJ4sP_yu8YE2tCsqv2juu7tqJUa7mlQrSBVCTskofqe9xm9N4u6VhA49gg_jPOBy8QgjkjX9l2LZJINuawO0Va7_QjXuu9fJJ_dKeunXm_9xPQEMhYEAD2KryP9PxYbKSnZtVZnPpxC1hAuuMtX2nO4-xstLw4cCE2B5VZG182YOAx_vTtBoc0EUEoUtfx9UVtyaY5TE-7sGRjiRq19QUfw7fYGgzDTfXiRFhAnMnaCZY0dZDk-v4_UWPRID70V-AJpuN3dbLDXwHa_sjk5UMEnSfjBGJ3dqriQFdH9wlWZHNEeBFfWCRz2zugn1hAJcVPxVcl2pd2dFo6hWk3k5o8PIQzd-nKe6xCS5eHhJPKC-gYkvGOPjYL8lXumtDTUo1rwW64RYhbn92qVymktFhACVeSwKiurCXvkZL13m8P0sSqEba7kXV5TU79QCTqVwdBN6-iDzEXLcMuOo1O7-M4oNT7QCOR3FyFnu_KqRhN9lhAyGCJITQHcEW7cplTQ1pYIkUd0TfRBu41Yxzl_ZBPp6zN0KiEO_r589xvISVySDPsE_RYdZ2WYwkJ76OrWocPrlhAv0WtqLorh3rM_ccWFLtrYAUOHIz7ztskhMqm9XVkXxMyZbdF23UFoTNOv1T9IB1ydyaN6j-gVBbq6_0CHIE8p1hAY68oDCZ2-7vlioc6__ZMCJROM7Bi0F9Zj-MN3pYUbTY_WE84kP01ffO9L1yPHePKx_dSvg8vOiUR4m7YZ0mdklhALnnV50jp-KLJt-0uWgfwinHTMCYKg5TXutCPm5ajIU6DyJSYBgEjDj94Nuxv4K_WKpmsUXuMIsCrMcYThyTaclhAbdjDCw-4JlIHqCHxrlbUSbjyPEoSH31bOfz9-wcjDmhtM1HTY84grW4utBLCwj1z3NFOkESRCvTfgInKqxeZmVhAgCYjx_Q4CGd4KJ_0XD9JlRi05uXlCrJeBHd8AqWZmIQzq8bjt8h2ZypoC8a-zWqbjbnV6P-4KZdZSbrfCwuliFhAR9bz41EMDRN7g4sIRKVU1fFtR1hPbD8GRcg2pHKq9kXM8j4tPz3kAHrNnE3c8078qWGRYto2pxLy-2cvaeJUxlhAADHkMki3kNcO-eIyIMd5HAMFC4bKTI0NQJ4yNZ4xONL8WDhRQUEw4QdGFrmUZ5aWu0CB5A0fAWtipmTiiT2lKVhAqEdHIvivznFxlkBaSAqsoMFxhvNY-2z0YYLydbgMoX8yJ45PwUYIvaLbWCBjAWklaFuMOIh25e4ARPaP5hVCblhAeWW7NI3KJer9znklUNiddto8jkm06zOxEWIbyZiFtEAB0fhXNa4dw5QJfgF1GNlyGWxjVDxPzCcZN4XONBFs2FhAU72CpgfR_Xn0UnimG8EdUwLJJoSfozYwx6FhbzugHcvAdipixoZ7OenVVVKEb_OSVfRRyRwAiqGheZfsq4LrNlhAdvnAylAW2pO5gcOKKFGICvFs3Ir3Swh8neL2Krn1swE_tZ_6SqdENcGUxkj9PoGtXUrm69jIPioq0FPixipWLlhAskk3OmoOkmKF1PXHa6qGffp2KVPOpcOFMDuuaVDplqrMpBNJiv1dF6jxQXmCEMP5vCWCMEUzyTJcnzHi8-0GoVhA8s6fT0WVbhd4R7iE_Mz4yyhpvTd5kB1c6RXbrXVfw_k7bSU6UUse0ucqp6Db8REBLTL387T4j3pG41urO5GgeVhACoLUrsSjCcoInXaarIMlTkjRayX-qblmWFBD4BrpJ58V4zh0TsyVcaqrhv79VS8Axd3NkCs7_KvaCYjOflAqT1hArnzKtNMtqlq1P95nb0SAJ4BvJobavK_4GACXIGyHFoooS42H5qqNPb7b7IJZKKegv11QZqqSud0kIbAVH6hi-FhADS0Jvmg8KOjKmhQ440sdJmG6jBg5GOhl2UEoeAuKDasZYdrpcl6h-MeI2Wwf7gs8Fw5vF8DwSOj6aQeCKmMSlVhADuQMc8USLCLLJM0RcwKExqPJqhYepEQIBPKwG_hc4ftgnTkde2KBgXnFG2vP0bDzfz9rRfsz4ZE_o9mP9TL3DlhAj-iGPIZDzC5NL3DSosPYjfWLGLU_rVK5doa17AScmkF4RwXW5DiYZuzkcNVdTqPIPP1fSWC6VIiIMPSYo8u5mFhAt0vP-jua9l-WFg2l4nhNfMaRUCuZYmPELyZNSrWU6FjlTIZIGCqHQxcZmJBq8uo9DTVHMTNtPaS5OqMIxgkcoKsAWCAqfgYF2AmQ-N7x4qvvLBXIS4rG1vAAb_gUQerJObe7xAFYICnwaK7lwJilZVnhzeAqcgqkgbv1QLjpib6bmfxmBpt2AlggYqYzRsPUyUBFPTfUewxBaWVdYOQTzzvm_K3pNOLP3dIDWCDhI5gW7MB1JONY3SGuMKRK4MZ5QeW5nifHEQQ62VyyhQRYIABPMUv3Ld6GGf6l9W9Y1NqVn6uH18GKBkf6CL-nlsORBVggKaG_GqHW3bz0WTdc38B4Vjkejw0iViVMQhPIeY5ZKc4GWCARLkIzGiBF9dyPVd5gIbDI4SO9aUZukCE3IMg-7qYSqAdYICYUlB7rBdZG7Gj3abzqQuDUxi77yllGKXZX06GoJsMSCFggDZf_7V2D1RzTMLCKFv1bsS-uE7J5_jqYBX60fA0afZ8JWCC64nUKQrFFTL_pcKjpOVBKHt0LyfFdlD8B-rhRNglzFApYIB0HMNojBqt62BUZTL2KBHuQbqR7zOlzBZ4fhivLUbeChBgaGBsYHRge\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/ns/credentials/v2\",{\"@protected\":true,\"ExampleAchievementCredential\":\"urn:example:ExampleAchievementCredential\",\"WindsailingAchievement\":{\"@id\":\"urn:example:WindsailingAchievement\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"sailNumber\":\"urn:example:sailNumber\",\"sails\":{\"@id\":\"urn:example:sails\",\"@context\":{\"@protected\":true,\"sailName\":\"urn:example:sailName\",\"size\":\"urn:example:size\",\"year\":\"urn:example:year\"}},\"boards\":{\"@id\":\"urn:example:boards\",\"@context\":{\"@protected\":true,\"boardName\":\"urn:example:boardName\",\"brand\":\"urn:example:brand\",\"year\":\"urn:example:year\"}}}},\"achievements\":{\"@id\":\"urn:example:achievements\",\"@type\":\"@id\"}}],\"type\":[\"VerifiableCredential\",\"ExampleAchievementCredential\"],\"issuer\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"credentialSubject\":{\"achievements\":[{\"type\":\"WindsailingAchievement\",\"sails\":[{\"size\":6.1,\"sailName\":\"Eagle-FR\",\"year\":2023},{\"size\":7,\"sailName\":\"Eagle-FR\",\"year\":2020},{\"size\":7.8,\"sailName\":\"Eagle-FR\",\"year\":2023}],\"boards\":[{\"boardName\":\"CompFoil170\",\"brand\":\"Tillo\",\"year\":2022},{\"boardName\":\"Tillo Custom\",\"brand\":\"Tillo\",\"year\":2019}]},{\"type\":\"WindsailingAchievement\",\"sailNumber\":\"Mars101\",\"sails\":[{\"size\":5.9,\"sailName\":\"Chicken\",\"year\":2022},{\"size\":4.9,\"sailName\":\"Vulture-FR\",\"year\":2023}]}]},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-04-14T05:32:19Z\",\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"u2V0BhVhA8FOH3Vf6JTrvNocRQpOsC3it4YxoA0RnF_qFyzyVOPbe2OOEbcwVrxi8feRIexjFftbwL9-7cgcDIL4h_gBwC1gjgCQCf8j_weWDfTpyDexV03oqRON0VTK5frvsZNbjkOilp06YIlhAmy92Pm72Cc6JRSZxg-1IVDD2Z5nbJVYuHRttl5BAXOmkeMmxoFre-xXeH9nbnv0ozXSaE1fiQakNKWxjCnEDj1hAs6OWWS6dmks6Ip68sqI4hpusVz3xVh0_wAc6kqwz_AmRwymLufsEeS0UCFbLd5tumszJG5lZfUlvhoc-pb1tgFhALiguVgs11eQaK4phYcCLPpwjXz34qHUyzABjlWJLhatn1a6SMCenWkDD46Kag6qTse0QC3f7PvNHKgd3zR6mkVhAHzWouhXkyVaOiNk4HW3JPt6rEfgscFdv53fGeogI7UTAfHBCMCkkPRG8L3dM_vAfdKQqFTcZ2xqpHbpUiaWUQlhA5pWRBomcKNQyfZjCa0QA1VGYPPoTJuFV5yEVphmr8JABDECem-e-hywmxYteq-61vpG3LSnFN0clk06Jv3qEnVhAulvaMIZn6Adlu2_2FOtzNehsv3kmEc-CjnWp9pJnhnw0tqcUazPAiN0cJMZyrSUbREfhOhKRlMMvK3S0ZW3EwFhAq1orGuVO3ECY-ZacU58R746M52s4IcAwpKryWv60yyYhsiQ7dTQb21JfLOT1S80XRhSLRiAd41PdrINO0yKjGlhAjANHha1_yV7NdaKdu5ELxTE-amrs2_52sCe1s8ysXGf6kNpl2NU0hROQ1KiVK2KqoG4abJByMz87jdQYGOCr7lhA4UUXtnUYiMVtvU4dnyT6SopTouBbc0RMdMm3EOWgaqF9TkLjI9P6xgEEJIJvLTIXp10b9TqRF-r4UC7LEDQfDVhAXRKAehYIx2hxPISoZN3CiOTPSLzdED9FVChD2M0ATnAefDsilMDJxsrla7g9QNuTmcq0MeEcozo8g4-ulhHVpFhANyXuQ2mY1WpABgQnYQJO0wFtiwh6Km_h_coJDfY_HADEPfevH1Kh7ENxwuJHn5kWbZR8JKfPqnLTvsrM5QjMClhAionEwdPC5grKCHz4TcRr2S-8mt4p1s1mKIoXMTqOcp8l1yOwHZotrC3YW7JCGQgyaXSTK32dmXgLK67a19I_8VhA47e7TFAJvvtMwObLr9nUWP4SJHDsdpMiwJ1P4sM_WcfFpGH_PHf85cxHt_BbLrVfeXHrkTiccxpmiHQRz55ZJlhAP5vX_xjnr2WL9Ru-46Bd9n2Ecs2aP6gYmk1jRk7cNswHClNtGJSoWsQ7Mals6h7IbskLtHXRd1KiTuOeHPbT11hA0MfMOWl6HugTrTZrlK1yhNBbl5Vt7RAPgZ17hORyQZb28iBSsjyE1IK6MBCc16tWzqzFiHTyCEsfzPVxSMHU71hAb3JEPtrz9i75cv6xZ5pquM7EcQW_ZE8UwOYY_zK2nHI-vDamFiXLg0yZK_xMWg4SEx3Mg5hxfOkG480K5kGD8lhAuXuIbE5NHzXMIxfTzjT8vM_K7P5jWEgDvr1lF0uiUMmKNTZ5RGIwiYZwjSdEYKAxE4c8ro2bx6vS4Tmhr_YxklhAf5UpRTkcYQGHDgsyzg3TuX-ZJXRq9j76Bkqlplo53TgTNeCoQu_N94_B8zLSdzx_h7tQeyyw8KjD4yU_sIlCgVhAq7mbYsND1H4xIt6QCVUUQbTzO-ZiJ3i0Xcghb3bzGYwRU_tLoBn5-EIEITuGtUuQDp_VBxIFreOX8PBOVSE9UlhAERf8NE7s4xnNjBAuBHwVhtMWpzSxfRNe38_LuUEno1gsXcozkkcyb9Lap7-iB5PrCVQzIz_0IZBaErCZMsAIH1hAktqG5e6rX2Y4mg1jWSGYHWYGUzuzhvl4fPq0cw62nP6PQDRQfRmvpjA4faQvHXwZLvE12bDbbAsuZ3Hv0acJolhAkOdhjWve9Bubmq6AeoGTtur4iAvXCP2OuR8FdrjESytYUxVg_C_jo_Bgb0tDG6xclE3zW9T7Cw4VjjvfVqf_R1hAVDWELr10YMJZdB3VyFGkUvY_2DPTosIufXt5pW8ONS7gyHerdV_-Qt2ASSEjHWo4_RjWQJf6pxDIDgQV6tjlkFhAYpTAF0PYe9HObQSBufM7CG0jlKSt8T-zwrZURjt0GfGpnw06XFMgA2cyiAeWAp0cSiWAOEpVcwXDkGn82qkVcVhAt4arUuk1R7SNRsb1GACJe1R3pUcKlkfIOPLZ4okaZCzl4oStHAOhed5_FJZtN6atgKvqoFR5qBEgtUlh8l582VhAm1fAwBVGVqFopSAo1Z5m9iHWU2DET5CcaaZecRAl-wkzau6QWrYWpzrvuWQpDl5R014Csfwp6lyrEU5k0ogfClhA4Av_jXaaspyMcOtz8T7cFZZ8TBn0F-fUhgCxovwp5gjRv-T_Gg1DWbHwO0vI_ZkdFwb1KBvED5hmHg7FjjWyllhA_HEFucTIWk9ipZtV4JPEubVxGTaRI-JoIp-xeF6izVba5yH6uJ00U3GKbrVrS2c0xSOA1xTeCZzfdctKM0ohWFhAGgjYyr8_kFHo6js-0SPV2MeTBcQn9kPW2AeyYvr36Yp4aLQaLYIWllbjSyJicqatNRD1BtazbtKnQ1jmnOIi2FhAAx08wz_Il4Bwh4sUGsYwLRz1MQ0w4KyYy72pEcoTC27plY0h8tJE4m-Q7M3vKTMPiI-ze4-sXzXMJw5Zj1TlvlhAFPEa5-S_Fz-ttNIoh3d2z2HUKv6cZYihVVDmqGPGXKEk2IfgM3rztIVC_7K-SHKgmt3yC-V6qnh3SYQ3ixZ1hFhAzAhE9Oiw97NIv86m_vIrjK3Z0VHSlXEt27Vs7mB2ohVVz3Pmk2EbgmlS8cj8qk7Ox3Hso47XpOznSEXJARPu7lhAStDInRkiLmBa7ITMWyZpJApHVcNQANRsfdfESRhafHstTguWfpLTSdtnug1R0uPFyu66EYv9-T6aTCungz_JRlhAHLz3V-neODqJrZ4oK3LsA9ny0kIw2deHx2k_aMwJUb_FtyXGkhycYHELdTmcr045r9cMi4tUGocjZOrKyeUT66sAWCAu6e2ZO0Qr3oM0w5MnYcaNm2BIKA3nHOAjfZoHaVIvIAFYII505EwaoRGXcEH4Y2euFGOBhVOPXxZxR-I4G1-exE7yAlggZSEILTZLoaVKi6bhNSNWb4D9qP-RA7iJjWlDhwR7pc4DWCDmmkjkOF-wNGeqppan8TS6pomHjhG0136O7W36tw-6eQRYIKugEvY-zofOYqrqMU-FmbMz0McBx8eNxEbalVWKfDTcBVggu2bBR_tu6GR0_2dhP0WUs--jDKnUlyzPg1_9WY5ZDkMGWCBXYBadW1uP0J6xczLtqd377WA8kWj_vid6wZ6ELKEpAAdYIKQ_GzVcGXESkjxu7VFwmnlw3M98MKS21Xl9T_nCenTqCFggeWRb1jH5fXwsrxidmRmBbpCH3s7jawO7FhyS3Erq5CkJWCCLpU8AkW8Zgg0xdnn5dxXwr8PM-ESSxnUuuI8btMkIcApYICc_3T6pok4IqID8zDYKg6Cfr-NZU_IMS11qFWxOZMG7gwYHCQ\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/ns/credentials/v2", { "@protected": true, - "name": "https://schema.org/name", "ExampleAchievementCredential": "urn:example:ExampleAchievementCredential", "WindsailingAchievement": { "@id": "urn:example:WindsailingAchievement", @@ -27735,14 +33454,12 @@ "@id": "urn:example:achievements", "@type": "@id" } - }, - "https://w3id.org/security/data-integrity/v2" + } ], "type": [ "VerifiableCredential", "ExampleAchievementCredential" ], - "issuanceDate": "2024-04-07T05:06:42Z", "issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "credentialSubject": { "achievements": [ @@ -27798,11 +33515,11 @@ }, "proof": { "type": "DataIntegrityProof", - "created": "2024-04-07T05:06:42Z", + "created": "2024-04-14T05:32:19Z", "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod", - "proofValue": "u2V0BhVhAqYSIiU8I8_K6Z6q0E_aFOHjy58rFXWuouB2qMnHen27KFOYKgO_OFuhscOpDI1OZkRUhyUMZ7DMbmDDsrqbqkVgjgCQCw_GA_l7sCMMM0NzITNPhTB3Qk4s3Zz4Jqa9NwE04trKYIlhAKKbPyaAxb1wpS8mIxMjpySdG3avu-a3ISoQ2m-Xeqg6PqnwPA6zbLnDBAvTzzAicYyj4DnPXy5_fhKT9NUerrlhAimNffUmT222i3FKqibw9WPUQx8TPZFnqIRRpCqapwsxdrrVXKDlypsMaPYCA5_FBmT0K0hdUhNivf9xxLoSBdFhAbeZON53qz7f11bwkDqigSSNt7NVS-6BPUtnaqOWnHSK5hLUoWZ9QjxBIOuj6Zt3FMcwE8TIxcUUcjnSUsU4IfVhAk4EgVDlxS-fqoV4pnLKdgZnPsZqos82JPDdG-N1d2AbVIc0rauHlhlW6Hw75-tvOItyVc6DzcdhqcWJIgPSnQlhArhtuywhLYyly3NBuvDtu-7OWdJo0tvNtYaC7xhhxG_ZDR6LghwNHvA1pczQu-5FsXWco9VHIApR7J1f4znnk_lhAJGYw5Eg1mr4xtNNZsaFkamQTD1VbDxuAYIR3HDQOUbPW36YkTcf_BOP-0nAZ0u_cVccYAzC00EgIw4W2i8uDmFhA3VQJ0mr3LXKYL--hthuvQeVHeR3ssY3q-cEdfGGNA9EZgyTwGLz0l9R2-OqLyQZBwQWkPzSlDTHw7qDLA2gZtVhAaegjPcgE_AXx4USBrtbgC6I8-4zOd0Bfllul8tOl1GaK1asNgdWvCptO65_CBUqSkN_r0mMIOmzpkWVPFTJTkVhA4eaimna9jJgnlzlbRL3Ygx0knzLowDvO7dKJ4sP_yu8YE2tCsqv2juu7tqJUa7mlQrSBVCTskofqe9xm9N4u6VhA49gg_jPOBy8QgjkjX9l2LZJINuawO0Va7_QjXuu9fJJ_dKeunXm_9xPQEMhYEAD2KryP9PxYbKSnZtVZnPpxC1hAuuMtX2nO4-xstLw4cCE2B5VZG182YOAx_vTtBoc0EUEoUtfx9UVtyaY5TE-7sGRjiRq19QUfw7fYGgzDTfXiRFhAnMnaCZY0dZDk-v4_UWPRID70V-AJpuN3dbLDXwHa_sjk5UMEnSfjBGJ3dqriQFdH9wlWZHNEeBFfWCRz2zugn1hAJcVPxVcl2pd2dFo6hWk3k5o8PIQzd-nKe6xCS5eHhJPKC-gYkvGOPjYL8lXumtDTUo1rwW64RYhbn92qVymktFhACVeSwKiurCXvkZL13m8P0sSqEba7kXV5TU79QCTqVwdBN6-iDzEXLcMuOo1O7-M4oNT7QCOR3FyFnu_KqRhN9lhAyGCJITQHcEW7cplTQ1pYIkUd0TfRBu41Yxzl_ZBPp6zN0KiEO_r589xvISVySDPsE_RYdZ2WYwkJ76OrWocPrlhAv0WtqLorh3rM_ccWFLtrYAUOHIz7ztskhMqm9XVkXxMyZbdF23UFoTNOv1T9IB1ydyaN6j-gVBbq6_0CHIE8p1hAY68oDCZ2-7vlioc6__ZMCJROM7Bi0F9Zj-MN3pYUbTY_WE84kP01ffO9L1yPHePKx_dSvg8vOiUR4m7YZ0mdklhALnnV50jp-KLJt-0uWgfwinHTMCYKg5TXutCPm5ajIU6DyJSYBgEjDj94Nuxv4K_WKpmsUXuMIsCrMcYThyTaclhAbdjDCw-4JlIHqCHxrlbUSbjyPEoSH31bOfz9-wcjDmhtM1HTY84grW4utBLCwj1z3NFOkESRCvTfgInKqxeZmVhAgCYjx_Q4CGd4KJ_0XD9JlRi05uXlCrJeBHd8AqWZmIQzq8bjt8h2ZypoC8a-zWqbjbnV6P-4KZdZSbrfCwuliFhAR9bz41EMDRN7g4sIRKVU1fFtR1hPbD8GRcg2pHKq9kXM8j4tPz3kAHrNnE3c8078qWGRYto2pxLy-2cvaeJUxlhAADHkMki3kNcO-eIyIMd5HAMFC4bKTI0NQJ4yNZ4xONL8WDhRQUEw4QdGFrmUZ5aWu0CB5A0fAWtipmTiiT2lKVhAqEdHIvivznFxlkBaSAqsoMFxhvNY-2z0YYLydbgMoX8yJ45PwUYIvaLbWCBjAWklaFuMOIh25e4ARPaP5hVCblhAeWW7NI3KJer9znklUNiddto8jkm06zOxEWIbyZiFtEAB0fhXNa4dw5QJfgF1GNlyGWxjVDxPzCcZN4XONBFs2FhAU72CpgfR_Xn0UnimG8EdUwLJJoSfozYwx6FhbzugHcvAdipixoZ7OenVVVKEb_OSVfRRyRwAiqGheZfsq4LrNlhAdvnAylAW2pO5gcOKKFGICvFs3Ir3Swh8neL2Krn1swE_tZ_6SqdENcGUxkj9PoGtXUrm69jIPioq0FPixipWLlhAskk3OmoOkmKF1PXHa6qGffp2KVPOpcOFMDuuaVDplqrMpBNJiv1dF6jxQXmCEMP5vCWCMEUzyTJcnzHi8-0GoVhA8s6fT0WVbhd4R7iE_Mz4yyhpvTd5kB1c6RXbrXVfw_k7bSU6UUse0ucqp6Db8REBLTL387T4j3pG41urO5GgeVhACoLUrsSjCcoInXaarIMlTkjRayX-qblmWFBD4BrpJ58V4zh0TsyVcaqrhv79VS8Axd3NkCs7_KvaCYjOflAqT1hArnzKtNMtqlq1P95nb0SAJ4BvJobavK_4GACXIGyHFoooS42H5qqNPb7b7IJZKKegv11QZqqSud0kIbAVH6hi-FhADS0Jvmg8KOjKmhQ440sdJmG6jBg5GOhl2UEoeAuKDasZYdrpcl6h-MeI2Wwf7gs8Fw5vF8DwSOj6aQeCKmMSlVhADuQMc8USLCLLJM0RcwKExqPJqhYepEQIBPKwG_hc4ftgnTkde2KBgXnFG2vP0bDzfz9rRfsz4ZE_o9mP9TL3DlhAj-iGPIZDzC5NL3DSosPYjfWLGLU_rVK5doa17AScmkF4RwXW5DiYZuzkcNVdTqPIPP1fSWC6VIiIMPSYo8u5mFhAt0vP-jua9l-WFg2l4nhNfMaRUCuZYmPELyZNSrWU6FjlTIZIGCqHQxcZmJBq8uo9DTVHMTNtPaS5OqMIxgkcoKsAWCAqfgYF2AmQ-N7x4qvvLBXIS4rG1vAAb_gUQerJObe7xAFYICnwaK7lwJilZVnhzeAqcgqkgbv1QLjpib6bmfxmBpt2AlggYqYzRsPUyUBFPTfUewxBaWVdYOQTzzvm_K3pNOLP3dIDWCDhI5gW7MB1JONY3SGuMKRK4MZ5QeW5nifHEQQ62VyyhQRYIABPMUv3Ld6GGf6l9W9Y1NqVn6uH18GKBkf6CL-nlsORBVggKaG_GqHW3bz0WTdc38B4Vjkejw0iViVMQhPIeY5ZKc4GWCARLkIzGiBF9dyPVd5gIbDI4SO9aUZukCE3IMg-7qYSqAdYICYUlB7rBdZG7Gj3abzqQuDUxi77yllGKXZX06GoJsMSCFggDZf_7V2D1RzTMLCKFv1bsS-uE7J5_jqYBX60fA0afZ8JWCC64nUKQrFFTL_pcKjpOVBKHt0LyfFdlD8B-rhRNglzFApYIB0HMNojBqt62BUZTL2KBHuQbqR7zOlzBZ4fhivLUbeChBgaGBsYHRge" + "proofValue": "u2V0BhVhA8FOH3Vf6JTrvNocRQpOsC3it4YxoA0RnF_qFyzyVOPbe2OOEbcwVrxi8feRIexjFftbwL9-7cgcDIL4h_gBwC1gjgCQCf8j_weWDfTpyDexV03oqRON0VTK5frvsZNbjkOilp06YIlhAmy92Pm72Cc6JRSZxg-1IVDD2Z5nbJVYuHRttl5BAXOmkeMmxoFre-xXeH9nbnv0ozXSaE1fiQakNKWxjCnEDj1hAs6OWWS6dmks6Ip68sqI4hpusVz3xVh0_wAc6kqwz_AmRwymLufsEeS0UCFbLd5tumszJG5lZfUlvhoc-pb1tgFhALiguVgs11eQaK4phYcCLPpwjXz34qHUyzABjlWJLhatn1a6SMCenWkDD46Kag6qTse0QC3f7PvNHKgd3zR6mkVhAHzWouhXkyVaOiNk4HW3JPt6rEfgscFdv53fGeogI7UTAfHBCMCkkPRG8L3dM_vAfdKQqFTcZ2xqpHbpUiaWUQlhA5pWRBomcKNQyfZjCa0QA1VGYPPoTJuFV5yEVphmr8JABDECem-e-hywmxYteq-61vpG3LSnFN0clk06Jv3qEnVhAulvaMIZn6Adlu2_2FOtzNehsv3kmEc-CjnWp9pJnhnw0tqcUazPAiN0cJMZyrSUbREfhOhKRlMMvK3S0ZW3EwFhAq1orGuVO3ECY-ZacU58R746M52s4IcAwpKryWv60yyYhsiQ7dTQb21JfLOT1S80XRhSLRiAd41PdrINO0yKjGlhAjANHha1_yV7NdaKdu5ELxTE-amrs2_52sCe1s8ysXGf6kNpl2NU0hROQ1KiVK2KqoG4abJByMz87jdQYGOCr7lhA4UUXtnUYiMVtvU4dnyT6SopTouBbc0RMdMm3EOWgaqF9TkLjI9P6xgEEJIJvLTIXp10b9TqRF-r4UC7LEDQfDVhAXRKAehYIx2hxPISoZN3CiOTPSLzdED9FVChD2M0ATnAefDsilMDJxsrla7g9QNuTmcq0MeEcozo8g4-ulhHVpFhANyXuQ2mY1WpABgQnYQJO0wFtiwh6Km_h_coJDfY_HADEPfevH1Kh7ENxwuJHn5kWbZR8JKfPqnLTvsrM5QjMClhAionEwdPC5grKCHz4TcRr2S-8mt4p1s1mKIoXMTqOcp8l1yOwHZotrC3YW7JCGQgyaXSTK32dmXgLK67a19I_8VhA47e7TFAJvvtMwObLr9nUWP4SJHDsdpMiwJ1P4sM_WcfFpGH_PHf85cxHt_BbLrVfeXHrkTiccxpmiHQRz55ZJlhAP5vX_xjnr2WL9Ru-46Bd9n2Ecs2aP6gYmk1jRk7cNswHClNtGJSoWsQ7Mals6h7IbskLtHXRd1KiTuOeHPbT11hA0MfMOWl6HugTrTZrlK1yhNBbl5Vt7RAPgZ17hORyQZb28iBSsjyE1IK6MBCc16tWzqzFiHTyCEsfzPVxSMHU71hAb3JEPtrz9i75cv6xZ5pquM7EcQW_ZE8UwOYY_zK2nHI-vDamFiXLg0yZK_xMWg4SEx3Mg5hxfOkG480K5kGD8lhAuXuIbE5NHzXMIxfTzjT8vM_K7P5jWEgDvr1lF0uiUMmKNTZ5RGIwiYZwjSdEYKAxE4c8ro2bx6vS4Tmhr_YxklhAf5UpRTkcYQGHDgsyzg3TuX-ZJXRq9j76Bkqlplo53TgTNeCoQu_N94_B8zLSdzx_h7tQeyyw8KjD4yU_sIlCgVhAq7mbYsND1H4xIt6QCVUUQbTzO-ZiJ3i0Xcghb3bzGYwRU_tLoBn5-EIEITuGtUuQDp_VBxIFreOX8PBOVSE9UlhAERf8NE7s4xnNjBAuBHwVhtMWpzSxfRNe38_LuUEno1gsXcozkkcyb9Lap7-iB5PrCVQzIz_0IZBaErCZMsAIH1hAktqG5e6rX2Y4mg1jWSGYHWYGUzuzhvl4fPq0cw62nP6PQDRQfRmvpjA4faQvHXwZLvE12bDbbAsuZ3Hv0acJolhAkOdhjWve9Bubmq6AeoGTtur4iAvXCP2OuR8FdrjESytYUxVg_C_jo_Bgb0tDG6xclE3zW9T7Cw4VjjvfVqf_R1hAVDWELr10YMJZdB3VyFGkUvY_2DPTosIufXt5pW8ONS7gyHerdV_-Qt2ASSEjHWo4_RjWQJf6pxDIDgQV6tjlkFhAYpTAF0PYe9HObQSBufM7CG0jlKSt8T-zwrZURjt0GfGpnw06XFMgA2cyiAeWAp0cSiWAOEpVcwXDkGn82qkVcVhAt4arUuk1R7SNRsb1GACJe1R3pUcKlkfIOPLZ4okaZCzl4oStHAOhed5_FJZtN6atgKvqoFR5qBEgtUlh8l582VhAm1fAwBVGVqFopSAo1Z5m9iHWU2DET5CcaaZecRAl-wkzau6QWrYWpzrvuWQpDl5R014Csfwp6lyrEU5k0ogfClhA4Av_jXaaspyMcOtz8T7cFZZ8TBn0F-fUhgCxovwp5gjRv-T_Gg1DWbHwO0vI_ZkdFwb1KBvED5hmHg7FjjWyllhA_HEFucTIWk9ipZtV4JPEubVxGTaRI-JoIp-xeF6izVba5yH6uJ00U3GKbrVrS2c0xSOA1xTeCZzfdctKM0ohWFhAGgjYyr8_kFHo6js-0SPV2MeTBcQn9kPW2AeyYvr36Yp4aLQaLYIWllbjSyJicqatNRD1BtazbtKnQ1jmnOIi2FhAAx08wz_Il4Bwh4sUGsYwLRz1MQ0w4KyYy72pEcoTC27plY0h8tJE4m-Q7M3vKTMPiI-ze4-sXzXMJw5Zj1TlvlhAFPEa5-S_Fz-ttNIoh3d2z2HUKv6cZYihVVDmqGPGXKEk2IfgM3rztIVC_7K-SHKgmt3yC-V6qnh3SYQ3ixZ1hFhAzAhE9Oiw97NIv86m_vIrjK3Z0VHSlXEt27Vs7mB2ohVVz3Pmk2EbgmlS8cj8qk7Ox3Hso47XpOznSEXJARPu7lhAStDInRkiLmBa7ITMWyZpJApHVcNQANRsfdfESRhafHstTguWfpLTSdtnug1R0uPFyu66EYv9-T6aTCungz_JRlhAHLz3V-neODqJrZ4oK3LsA9ny0kIw2deHx2k_aMwJUb_FtyXGkhycYHELdTmcr045r9cMi4tUGocjZOrKyeUT66sAWCAu6e2ZO0Qr3oM0w5MnYcaNm2BIKA3nHOAjfZoHaVIvIAFYII505EwaoRGXcEH4Y2euFGOBhVOPXxZxR-I4G1-exE7yAlggZSEILTZLoaVKi6bhNSNWb4D9qP-RA7iJjWlDhwR7pc4DWCDmmkjkOF-wNGeqppan8TS6pomHjhG0136O7W36tw-6eQRYIKugEvY-zofOYqrqMU-FmbMz0McBx8eNxEbalVWKfDTcBVggu2bBR_tu6GR0_2dhP0WUs--jDKnUlyzPg1_9WY5ZDkMGWCBXYBadW1uP0J6xczLtqd377WA8kWj_vid6wZ6ELKEpAAdYIKQ_GzVcGXESkjxu7VFwmnlw3M98MKS21Xl9T_nCenTqCFggeWRb1jH5fXwsrxidmRmBbpCH3s7jawO7FhyS3Erq5CkJWCCLpU8AkW8Zgg0xdnn5dxXwr8PM-ESSxnUuuI8btMkIcApYICc_3T6pok4IqID8zDYKg6Cfr-NZU_IMS11qFWxOZMG7gwYHCQ" } }, "options": { @@ -27889,13 +33606,13 @@ } }, "operator": "notStrictEqual", - "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:117: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:222:17)" + "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)" } }, { "type": "test", "title": "MUST verify with fewer array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithLessThanFullSubArray\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27905,32 +33622,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:68302fe3-6ff8-4515-b22f-bd29ca32b86f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:f606506f-8c40-4d98-a2d5-7f336fdf2630", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify with fewer array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31325, + "_idleStart": 37031, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 112, + "duration": 83, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify with fewer array revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithLessThanFullSubArray\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithLessThanFullSubArray);\n for(const credential of\n disclosedCredentialsWithLessThanFullSubArray) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27940,25 +33657,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:63bc542e-dbb5-415f-949b-18f38ecb8fb5", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:96326b44-1e28-414f-87dc-beebd15e7366", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify with fewer array revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 32901, + "_idleStart": 39001, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 445, + "duration": 499, "state": "passed", "speed": "slow" } @@ -27970,7 +33687,7 @@ { "type": "test", "title": "MUST verify w/o first element revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithoutFirstArrayElement\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27980,32 +33697,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:510d6dd3-b98d-406a-8115-ab8e72267f5d", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:e0e3398f-2661-409b-bff5-eb52dcd17bcc", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST verify w/o first element revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26373, + "_idleStart": 32677, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 3800, + "duration": 3411, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify w/o first element revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithoutFirstArrayElement\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28015,32 +33732,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:d06b93b7-45b2-4d6c-84d6-337de9a6740f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:20c0cb92-c186-4c0a-921a-4f15786c25a5", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST verify w/o first element revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31436, + "_idleStart": 37114, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 115, + "duration": 102, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST verify w/o first element revealed properties", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(\n const credential of disclosedCredentialsWithoutFirstArrayElement\n ) {\n await verificationSuccess({credential, verifier});\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentialsWithoutFirstArrayElement);\n for(const credential of\n disclosedCredentialsWithoutFirstArrayElement) {\n await verificationSuccess({credential, verifier});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28050,25 +33767,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:91d36a14-a2b9-4324-ae9b-fde82d13f927", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:90e4ee5e-b2ad-485a-b585-7165ef8a1dab", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST verify w/o first element revealed properties" }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 33347, + "_idleStart": 39500, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 344, + "duration": 441, "state": "passed", "speed": "slow" } @@ -28080,7 +33797,7 @@ { "type": "test", "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28090,32 +33807,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:98f54afc-a7fc-427c-a62c-4779038cefc3", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:fbd0531c-1d76-472c-a973-3be4e9706214", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30174, + "_idleStart": 36088, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 199, + "duration": 86, "state": "passed", "speed": "slow" }, { "type": "test", "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28125,32 +33842,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:f6c1c027-6fc3-4121-9ef3-7ea7b941afa8", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:908006b9-c00c-4ec3-95f1-7d34ee592059", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31552, + "_idleStart": 37216, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 77, + "duration": 44, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", "title": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify proofValue to not start with 'u'\n signedCredentialCopy.proof.proofValue = 'a';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28160,25 +33877,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:e9278ba4-8e3a-41e6-8295-0d055daeeaae", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:88a8f579-b8d1-43f4-bc59-80a6af2d2747", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "If the \"proofValue\" string does not start with \"u\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 33691, + "_idleStart": 39941, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 69, "state": "passed", "speed": "medium" } @@ -28190,7 +33907,7 @@ { "type": "test", "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28200,32 +33917,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:ca8dc0ee-5fbc-4767-9959-74cae9a91dfe", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:0f36ee7e-30b0-4018-8035-50a2b6d72e16", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30373, + "_idleStart": 36174, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 98, + "duration": 50, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28235,32 +33952,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:af0db23e-f46d-4522-87ee-4497b4648ff7", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:35478045-8633-486b-876c-f55311d0cfe2", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31630, + "_idleStart": 37260, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 50, "state": "passed", "speed": "medium" }, { "type": "test", "title": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite = 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n signedCredentialCopy.proof.cryptosuite =\n 'invalid-cryptosuite';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28270,25 +33987,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:7212d6a7-c90a-4edf-b2f0-0b71fe09c4d0", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:7d5529e4-6918-4401-ab74-10d5938dbb24", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "If the \"cryptosuite\" field is not the string \"ecdsa-sd-2023\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 33750, + "_idleStart": 40011, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 71, "state": "passed", "speed": "medium" } @@ -28300,7 +34017,7 @@ { "type": "test", "title": "MUST fail to verify a base proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28310,32 +34027,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:b9e25048-5203-496d-b4f4-fe7a5b2e1be2", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:e74851f9-7401-41a4-b999-bb53fb765dcf", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST fail to verify a base proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30470, + "_idleStart": 36224, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 106, + "duration": 59, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", "title": "MUST fail to verify a base proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28345,32 +34062,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:874b1d85-e280-498f-8f2d-69a2cf6418cf", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:fdfd467c-a07a-4b8c-9115-8e8f325e99f1", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST fail to verify a base proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31687, + "_idleStart": 37311, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 50, "state": "passed", "speed": "medium" }, { "type": "test", "title": "MUST fail to verify a base proof.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(signedCredentials);\n for(const credential of signedCredentials) {\n const signedCredentialCopy = klona(credential);\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28380,25 +34097,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:71b1199c-1f52-4f61-8bf8-214b34dc7506", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:d4ad52b8-7765-48e8-9672-3b35ad6c44d4", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST fail to verify a base proof." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 33808, + "_idleStart": 40082, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 69, "state": "passed", "speed": "medium" } @@ -28410,7 +34127,7 @@ { "type": "test", "title": "MUST fail to verify a modified disclosed credential.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28420,32 +34137,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "Up1EkaMg-NHeSBHSkvzq3", + "parent": "5dGcm68tFSnx7pc70c25L", "ctx": null, - "_testId": "urn:uuid:f93a343b-3692-4f92-8b97-b10062071c9c", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:db76e932-a451-427f-afcc-e2c3bd2ac7b2", "cell": { - "columnId": "apicatalog.com: P-256, P-384", + "columnId": "apicatalog.com: P-256", "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30577, + "_idleStart": 36283, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 395, + "duration": 191, "state": "passed", "speed": "slow" }, { "type": "test", "title": "MUST fail to verify a modified disclosed credential.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28455,32 +34172,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "_m-Qr9L5CKavBV-qxM6x7", + "parent": "6SpIDJK3kYnw-li04sMdM", "ctx": null, - "_testId": "urn:uuid:e5e128aa-8ece-467f-9b58-c832342f64cd", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5e16a419-054b-453a-8295-bbcde4a5f095", "cell": { - "columnId": "Digital Bazaar: P-256, P-384", + "columnId": "Digital Bazaar: P-256", "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 31745, + "_idleStart": 37360, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 65, + "duration": 59, "state": "passed", "speed": "medium" }, { "type": "test", "title": "MUST fail to verify a modified disclosed credential.", - "body": "async function() {\n this.test.cell = {\n columnId: `${name}: ${keyTypes}`, rowId: this.test.title\n };\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", + "body": "async function() {\n assertTestVector(disclosedCredentials);\n for(const credential of disclosedCredentials) {\n const signedCredentialCopy = klona(credential);\n // intentionally modify `credentialSubject` ID\n signedCredentialCopy.credentialSubject.id = 'urn:invalid';\n await verificationFail({\n credential: signedCredentialCopy, verifier\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28490,25 +34207,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/50-sd-verify.js", - "parent": "l7pJUFmjse5t1uEgQzs-H", + "parent": "EzqwCBToLHsXqvQeB8kll", "ctx": null, - "_testId": "urn:uuid:a8dafd6d-2481-4ddb-bbd8-14633694b6c5", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:be7097c1-06fe-40c1-a0de-121faacf979a", "cell": { "columnId": "Grotto Networking: P-256", "rowId": "MUST fail to verify a modified disclosed credential." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 33864, + "_idleStart": 40151, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 78, + "duration": 109, "state": "passed", "speed": "slow" } @@ -28527,7 +34244,7 @@ "_beforeAll": [ { "title": "\"before all\" hook in \"ecdsa-sd-2023 (interop)\"", - "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document,\n mandatoryPointers: credentials.interop.mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", + "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['2.0'].document,\n mandatoryPointers: credentials.interop['2.0'].mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28537,7 +34254,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", "originalTitle": "\"before all\" hook", @@ -28547,17 +34264,17 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 33943, + "_idleStart": 40260, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 567, + "duration": 175, "_error": null }, { "title": "\"before all\" hook in \"ecdsa-sd-2023 (interop)\"", - "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document,\n mandatoryPointers: credentials.interop.mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", + "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['2.0'].document,\n mandatoryPointers: credentials.interop['2.0'].mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28567,7 +34284,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", "originalTitle": "\"before all\" hook", @@ -28577,17 +34294,17 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 34511, + "_idleStart": 40435, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 105, + "duration": 456, "_error": null }, { "title": "\"before all\" hook in \"ecdsa-sd-2023 (interop)\"", - "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document,\n mandatoryPointers: credentials.interop.mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", + "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['2.0'].document,\n mandatoryPointers: credentials.interop['2.0'].mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28597,7 +34314,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", "originalTitle": "\"before all\" hook", @@ -28607,17 +34324,17 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 34615, + "_idleStart": 40892, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 303, + "duration": 180, "_error": null }, { "title": "\"before all\" hook in \"ecdsa-sd-2023 (interop)\"", - "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document,\n mandatoryPointers: credentials.interop.mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", + "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['2.0'].document,\n mandatoryPointers: credentials.interop['2.0'].mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28627,7 +34344,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", "originalTitle": "\"before all\" hook", @@ -28637,17 +34354,17 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 34919, + "_idleStart": 41072, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 184, + "duration": 367, "_error": null }, { "title": "\"before all\" hook in \"ecdsa-sd-2023 (interop)\"", - "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document,\n mandatoryPointers: credentials.interop.mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", + "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['2.0'].document,\n mandatoryPointers: credentials.interop['2.0'].mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28657,7 +34374,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", "originalTitle": "\"before all\" hook", @@ -28667,17 +34384,17 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 35103, + "_idleStart": 41439, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 166, + "duration": 204, "_error": null }, { "title": "\"before all\" hook in \"ecdsa-sd-2023 (interop)\"", - "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document,\n mandatoryPointers: credentials.interop.mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", + "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['2.0'].document,\n mandatoryPointers: credentials.interop['2.0'].mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28687,7 +34404,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", "originalTitle": "\"before all\" hook", @@ -28697,17 +34414,17 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 35268, + "_idleStart": 41643, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 161, + "duration": 179, "_error": null }, { "title": "\"before all\" hook in \"ecdsa-sd-2023 (interop)\"", - "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document,\n mandatoryPointers: credentials.interop.mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", + "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['2.0'].document,\n mandatoryPointers: credentials.interop['2.0'].mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28717,7 +34434,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", "originalTitle": "\"before all\" hook", @@ -28727,17 +34444,17 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 35429, + "_idleStart": 41822, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 126, + "duration": 373, "_error": null }, { "title": "\"before all\" hook in \"ecdsa-sd-2023 (interop)\"", - "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document,\n mandatoryPointers: credentials.interop.mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", + "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['2.0'].document,\n mandatoryPointers: credentials.interop['2.0'].mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28747,7 +34464,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", "originalTitle": "\"before all\" hook", @@ -28757,17 +34474,17 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 35555, + "_idleStart": 42195, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 112, + "duration": 187, "_error": null }, { "title": "\"before all\" hook in \"ecdsa-sd-2023 (interop)\"", - "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop.document,\n mandatoryPointers: credentials.interop.mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", + "body": "async function() {\n const issuedVc = await createInitialVc({\n issuer: issuerEndpoint,\n vc: credentials.interop['2.0'].document,\n mandatoryPointers: credentials.interop['2.0'].mandatoryPointers\n });\n const {match: matchingVcHolders} = endpoints.filterByTag({\n tags: ['vcHolder'],\n property: 'vcHolders'\n });\n // Uses 'Digital Bazaar' as default VC holder to create disclosed\n // credentials for the tests.\n const vcHolders = matchingVcHolders.get(holderName).endpoints;\n const vcHolder = vcHolders[0];\n ({disclosedCredential} = await createDisclosedVc({\n selectivePointers: ['/credentialSubject/id'],\n signedCredential: issuedVc,\n vcHolder\n }));\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28777,7 +34494,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", "originalTitle": "\"before all\" hook", @@ -28787,12 +34504,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 35667, + "_idleStart": 42382, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 126, + "duration": 200, "_error": null } ], @@ -28804,13 +34521,13 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "Lj91xXIjIjtnwr_GDEsZw", + "parent": "GzHifvD62JwDWet-oBmTR", "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", "matrix": true, "report": true, "rowLabel": "Issuer", "columnLabel": "Verifier", - "_testId": "urn:uuid:1d9efabe-173a-4b86-a87a-df3096e403a7", + "_testId": "urn:uuid:05d32e3f-7bd3-477c-bdc6-c91d24f354a3", "columns": [ "apicatalog.com: P-256, P-384", "Digital Bazaar: P-256, P-384", @@ -28833,9 +34550,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, - "_testId": "urn:uuid:b46e2a35-acca-454c-8b80-391c9dd41cb7", + "_testId": "urn:uuid:af8526a0-7410-4da1-bcff-83b8faac8e10", "_events": {}, "_eventsCount": 1, "cell": { @@ -28846,20 +34563,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 35794, + "_idleStart": 42582, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer apicatalog.com: P-256 to issue a disclosed VC.: expected undefined to exist", - "showDiff": false, - "operator": "strictEqual", - "stack": "AssertionError: Expected issuer apicatalog.com: 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:110:20)\n at process.processImmediate (node:internal/timers:478:21)" - } + "duration": 74, + "state": "passed", + "speed": "medium" }, { "type": "test", @@ -28874,9 +34585,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, - "_testId": "urn:uuid:52cf0902-a9c8-4559-a8c0-e35ca2e40489", + "_testId": "urn:uuid:457459bb-6ed9-4987-8606-e67af2044dd4", "_events": {}, "_eventsCount": 1, "cell": { @@ -28887,19 +34598,223 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 35794, + "_idleStart": 42656, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 180, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer apicatalog.com: P-256 to issue a disclosed VC.: expected undefined to exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, - "operator": "strictEqual", - "stack": "AssertionError: Expected issuer apicatalog.com: 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:110:20)\n at process.processImmediate (node:internal/timers:478:21)" + "actual": { + "response": {}, + "request": {}, + "options": { + "headers": {}, + "method": "POST", + "json": { + "verifiableCredential": { + "id": "urn:uuid:14ff936f-0db3-4722-a135-1e6033d4ee9c", + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "@context": [ + "https://www.w3.org/ns/credentials/v2", + { + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "DriverLicense": { + "@id": "urn:example:DriverLicense", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", + "expirationDate": "urn:example:expiration", + "issuingAuthority": "urn:example:issuingAuthority" + } + }, + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + } + ], + "issuer": "https://vc.apicatalog.com/issuer/?suite=ecdsa-sd-2023", + "credentialSubject": { + "id": "urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440" + }, + "proof": { + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "type": "DataIntegrityProof", + "cryptosuite": "ecdsa-sd-2023", + "proofPurpose": "assertionMethod", + "created": "2024-04-14T05:32:29Z", + "proofValue": "u2V0BhVhAxoLT4UiOjEveTcbnB2Vf5pHkGwTwlSTX26IlENc3cXTZnGFx5Y83c8aMXmqxVu1MtgLbU-u1wPJv1tcsoMkWTVgjgCQCDATDHN0AGlzGAON9pCJUbSNPvJn5tuW4OuD9-mALytOBWEAXQI_h56L-8vgmK8BHVP5qre8DdpNJDPTBP1KQIwmrqCHwqQNV9FUcfleYdNTn5J1GcSNwICG-TXezPg6FRj7doIMAAQM" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half", + "body": "{\"verifiableCredential\":{\"id\":\"urn:uuid:14ff936f-0db3-4722-a135-1e6033d4ee9c\",\"type\":[\"VerifiableCredential\",\"DriverLicenseCredential\"],\"@context\":[\"https://www.w3.org/ns/credentials/v2\",{\"@protected\":true,\"DriverLicenseCredential\":\"urn:example:DriverLicenseCredential\",\"DriverLicense\":{\"@id\":\"urn:example:DriverLicense\",\"@context\":{\"@protected\":true,\"id\":\"@id\",\"type\":\"@type\",\"documentIdentifier\":\"urn:example:documentIdentifier\",\"dateOfBirth\":\"urn:example:dateOfBirth\",\"expirationDate\":\"urn:example:expiration\",\"issuingAuthority\":\"urn:example:issuingAuthority\"}},\"driverLicense\":{\"@id\":\"urn:example:driverLicense\",\"@type\":\"@id\"}}],\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=ecdsa-sd-2023\",\"credentialSubject\":{\"id\":\"urn:uuid:1a0e4ef5-091f-4060-842e-18e519ab9440\"},\"proof\":{\"verificationMethod\":\"did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP\",\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"ecdsa-sd-2023\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-04-14T05:32:29Z\",\"proofValue\":\"u2V0BhVhAxoLT4UiOjEveTcbnB2Vf5pHkGwTwlSTX26IlENc3cXTZnGFx5Y83c8aMXmqxVu1MtgLbU-u1wPJv1tcsoMkWTVgjgCQCDATDHN0AGlzGAON9pCJUbSNPvJn5tuW4OuD9-mALytOBWEAXQI_h56L-8vgmK8BHVP5qre8DdpNJDPTBP1KQIwmrqCHwqQNV9FUcfleYdNTn5J1GcSNwICG-TXezPg6FRj7doIMAAQM\"}},\"options\":{\"checks\":[\"proof\"]}}" + }, + "name": "HTTPError", + "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19rSJA9yQQwEqSSoNDjzkuNJ/credentials/verify", + "status": 400, + "data": { + "verified": false, + "results": [ + { + "proof": { + "@context": [ + "https://www.w3.org/ns/credentials/v2", + { + "@protected": true, + "DriverLicenseCredential": "urn:example:DriverLicenseCredential", + "DriverLicense": { + "@id": "urn:example:DriverLicense", + "@context": { + "@protected": true, + "id": "@id", + "type": "@type", + "documentIdentifier": "urn:example:documentIdentifier", + "dateOfBirth": "urn:example:dateOfBirth", + "expirationDate": "urn:example:expiration", + "issuingAuthority": "urn:example:issuingAuthority" + } + }, + "driverLicense": { + "@id": "urn:example:driverLicense", + "@type": "@id" + } + } + ], + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "type": "DataIntegrityProof", + "cryptosuite": "ecdsa-sd-2023", + "proofPurpose": "assertionMethod", + "created": "2024-04-14T05:32:29Z", + "proofValue": "u2V0BhVhAxoLT4UiOjEveTcbnB2Vf5pHkGwTwlSTX26IlENc3cXTZnGFx5Y83c8aMXmqxVu1MtgLbU-u1wPJv1tcsoMkWTVgjgCQCDATDHN0AGlzGAON9pCJUbSNPvJn5tuW4OuD9-mALytOBWEAXQI_h56L-8vgmK8BHVP5qre8DdpNJDPTBP1KQIwmrqCHwqQNV9FUcfleYdNTn5J1GcSNwICG-TXezPg6FRj7doIMAAQM" + }, + "verified": false, + "verificationMethod": { + "@context": "https://w3id.org/security/multikey/v1", + "id": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "type": "Multikey", + "controller": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP", + "publicKeyMultibase": "zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP" + }, + "error": { + "name": "VerificationError", + "message": "Credential issuer must match the verification method controller." + }, + "purposeResult": { + "valid": false, + "error": { + "name": "Error", + "message": "Credential issuer must match the verification method controller.", + "stack": "Error: Credential issuer must match the verification method controller.\n at CredentialIssuancePurpose.validate (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/CredentialIssuancePurpose.js:70:15)\n at async /home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:301:27\n at async Promise.all (index 0)\n at async _verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:287:3)\n at async ProofSet.verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:191:23)\n at async Object.verify (/home/node/app/node_modules/jsonld-signatures/lib/jsonld-signatures.js:169:18)\n at async _verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:328:18)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:277:12)\n at async file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/http.js:89:24" + } + } + } + ], + "error": { + "name": "VerificationError", + "errors": [ + { + "name": "Error", + "message": "Credential issuer must match the verification method controller.", + "stack": "Error: Credential issuer must match the verification method controller.\n at CredentialIssuancePurpose.validate (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/CredentialIssuancePurpose.js:70:15)\n at async /home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:301:27\n at async Promise.all (index 0)\n at async _verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:287:3)\n at async ProofSet.verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:191:23)\n at async Object.verify (/home/node/app/node_modules/jsonld-signatures/lib/jsonld-signatures.js:169:18)\n at async _verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:328:18)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:277:12)\n at async file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/http.js:89:24" + } + ], + "message": "Verification error(s)." + }, + "checks": [ + { + "check": [ + "proof" + ], + "id": "urn:uuid:14ff936f-0db3-4722-a135-1e6033d4ee9c", + "error": "Credential issuer must match the verification method controller.", + "verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP" + } + ] + } + }, + "operator": "notStrictEqual", + "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:114:13)" } }, { @@ -28915,9 +34830,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, - "_testId": "urn:uuid:b5b488cc-4fcb-4c38-b12d-fddba638893a", + "_testId": "urn:uuid:5a204874-9154-4598-bafe-69bc976f375f", "_events": {}, "_eventsCount": 1, "cell": { @@ -28928,20 +34843,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 35794, + "_idleStart": 42836, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer apicatalog.com: P-256 to issue a disclosed VC.: expected undefined to exist", - "showDiff": false, - "operator": "strictEqual", - "stack": "AssertionError: Expected issuer apicatalog.com: 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:110:20)\n at process.processImmediate (node:internal/timers:478:21)" - } + "duration": 92, + "state": "passed", + "speed": "slow" } ] }, @@ -28961,9 +34870,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, - "_testId": "urn:uuid:9f569851-a924-48e2-8797-d5ac9dbe6ac0", + "_testId": "urn:uuid:e08f80f7-ca6a-4c65-bb73-8b91f6715da4", "_events": {}, "_eventsCount": 1, "cell": { @@ -28974,12 +34883,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 35795, + "_idleStart": 42929, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 82, + "duration": 147, "state": "passed", "speed": "slow" }, @@ -28996,9 +34905,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, - "_testId": "urn:uuid:474d54ca-6d2a-4fb1-a3b2-139b8566143b", + "_testId": "urn:uuid:24432428-2441-4132-a076-e638dcac1e4e", "_events": {}, "_eventsCount": 1, "cell": { @@ -29009,7 +34918,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 35877, + "_idleStart": 43077, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -29031,9 +34940,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, - "_testId": "urn:uuid:c3f4dbad-f9c5-45af-8cef-1cc1af80051c", + "_testId": "urn:uuid:17833772-7737-4351-a1cd-f8935f264abe", "_events": {}, "_eventsCount": 1, "cell": { @@ -29044,12 +34953,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 35937, + "_idleStart": 43136, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 80, + "duration": 94, "state": "passed", "speed": "slow" } @@ -29071,9 +34980,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, - "_testId": "urn:uuid:93c4ba00-12fe-4837-80f7-dab85c82ea48", + "_testId": "urn:uuid:8be73305-7509-4df7-ad5a-8f0b03113a68", "_events": {}, "_eventsCount": 1, "cell": { @@ -29084,20 +34993,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 36016, + "_idleStart": 43230, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer Grotto Networking: P-256 to issue a disclosed VC.: expected undefined to exist", - "showDiff": false, - "operator": "strictEqual", - "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:110:20)\n at process.processImmediate (node:internal/timers:478:21)" - } + "duration": 147, + "state": "passed", + "speed": "slow" }, { "type": "test", @@ -29112,9 +35015,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, - "_testId": "urn:uuid:bba531b8-1879-4d42-8e55-a059548505d3", + "_testId": "urn:uuid:78483f6c-3854-4967-a4b2-77584e7ac66e", "_events": {}, "_eventsCount": 1, "cell": { @@ -29125,20 +35028,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 36017, + "_idleStart": 43377, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer Grotto Networking: P-256 to issue a disclosed VC.: expected undefined to exist", - "showDiff": false, - "operator": "strictEqual", - "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:110:20)\n at process.processImmediate (node:internal/timers:478:21)" - } + "duration": 69, + "state": "passed", + "speed": "medium" }, { "type": "test", @@ -29153,9 +35050,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ecdsa-test-suite/vc-di-ecdsa-test-suite/tests/60-sd-interop.js", - "parent": "KBS4xKoUkz_hbJ7IUeZAj", + "parent": "1ToCdUNJDQJl_DpPmQz4e", "ctx": null, - "_testId": "urn:uuid:258828a2-fee6-40de-b4e9-d711c58276d4", + "_testId": "urn:uuid:f1aced04-34f8-4844-94cf-98b060af01a5", "_events": {}, "_eventsCount": 1, "cell": { @@ -29166,20 +35063,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 36017, + "_idleStart": 43446, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer Grotto Networking: P-256 to issue a disclosed VC.: expected undefined to exist", - "showDiff": false, - "operator": "strictEqual", - "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:110:20)\n at process.processImmediate (node:internal/timers:478:21)" - } + "duration": 103, + "state": "passed", + "speed": "slow" } ] } @@ -29227,10 +35118,10 @@ }, "title": "Data Integrity ecdsa 2019 Interoperability Report 1.0", "stats": [ - "Tests passed 345/378 91%", - "Tests failed 33/378 9%", - "Failures 33", + "Tests passed 388/424 91%", + "Tests failed 36/424 9%", + "Failures 36", "Tests skipped 0", - "Total tests 378" + "Total tests 424" ] } \ No newline at end of file
+
+ Verifier ⇒ +
+
+ Test Name +
+
apicatalog.com: P-256Digital Bazaar: P-256Grotto Networking: P-256
If the "proof.verificationMethod" field is invalid, an error MUST be raised.MUST verify a valid VC with an ecdsa-sd-2023 proof.
@@ -11409,7 +13304,7 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "proof.proofPurpose" field is missing, an error MUST be raised.MUST verify a valid VC with nested disclosed properties.
@@ -11510,7 +13405,7 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "proof.proofPurpose" field is invalid, an error MUST be raised.MUST verify a valid VC with disclosed properties and bnodes.
@@ -11611,10 +13506,10 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "proof.proofPurpose" value does not match "options.expectedProofPurpose", an error MUST be raised.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)"
+                    }
+
-
+
+
- -
{
-                      "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)"
-                    }
-
@@ -11719,10 +13614,10 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "proof.proofValue" field is missing, an error MUST be raised.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)"
+                    }
+
@@ -11820,7 +13722,7 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "proof.proofValue" field is invalid, an error MUST be raised.MUST verify w/o first element revealed properties
@@ -11921,7 +13823,7 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "proof.created" field is invalid, an error MUST be raised.If the "proofValue" string does not start with "u", an error MUST be raised.
@@ -11955,8 +13857,8 @@

Data Integrity (ecdsa-sd-2023 verifiers)

-
+
+
- -
{
-                      "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)"
-                    }
-
@@ -12029,7 +13924,7 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "proof.proofValue" field is not multibase-encoded, an error MUST be raised.If the "cryptosuite" field is not the string "ecdsa-sd-2023", an error MUST be raised.
@@ -12130,7 +14025,7 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "options.domain" is set and it does not match "proof.domain", an error MUST be raised.MUST fail to verify a base proof.
@@ -12231,7 +14126,7 @@

Data Integrity (ecdsa-sd-2023 verifiers)

If the "options.challenge" is set and it does not match "proof.challenge", an error MUST be raised.MUST fail to verify a modified disclosed credential.
@@ -12342,8 +14237,8 @@

Data Integrity (ecdsa-sd-2023 verifiers)

-
-

ecdsa-sd-2023 (verifiers)

+
+

ecdsa-sd-2023 (verifiers 2.0)

- -
{
-                      "name": "AssertionError",
-                      "message": "Expected issuer apicatalog.com: P-256 to issue a disclosed VC.: expected undefined to exist",
-                      "stack": "AssertionError: Expected issuer apicatalog.com: 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:110:20)\n    at process.processImmediate (node:internal/timers:478:21)"
-                    }
-
@@ -13584,14 +15472,14 @@

ecdsa-sd-2023 (interop)

{
                       "name": "AssertionError",
-                      "message": "Expected issuer apicatalog.com: P-256 to issue a disclosed VC.: expected undefined to exist",
-                      "stack": "AssertionError: Expected issuer apicatalog.com: 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:110:20)\n    at process.processImmediate (node:internal/timers:478:21)"
+                      "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:114:13)"
                     }
-
+
+
- -
{
-                      "name": "AssertionError",
-                      "message": "Expected issuer apicatalog.com: P-256 to issue a disclosed VC.: expected undefined to exist",
-                      "stack": "AssertionError: Expected issuer apicatalog.com: 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:110:20)\n    at process.processImmediate (node:internal/timers:478:21)"
-                    }
-
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:110:20)\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:110:20)\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:110:20)\n    at process.processImmediate (node:internal/timers:478:21)"
-                    }
-