The purpose of this test suite is to demonstrate a path to interoperability for the eddsa-rdfc-2022 and eddsa-jcs-2022 cryptosuites. The technologies explored in this test suite are experimental. This document contains the most recent interoperability report for a [DataIntegrityProof](https://www.w3.org/TR/vc-data-integrity/#dataintegrityproof) using the eddsa-rdfc-2022 and eddsa-jcs-2022 cryptosuites. This report is auto-generated.

Conformance Testing Results

Tests passed 243/272 89%

Tests failed 29/272 11%

Failures 29

Tests skipped 0

Total tests 272

These tests were run on

Key

The results of the tests are shown below:

Data Integrity (eddsa-rdfc-2022 issuers)

Issuer ⇒
Test Name
apicatalog.com Digital Bazaar SpruceID Trinsic bovine
"proof" field MUST exist and MUST be either a single object or an unordered set of objects.
if "proof.id" field exists, it MUST be a valid URL.
"proof.type" field MUST exist and be a string.
"proof.type" field MUST be "DataIntegrityProof" and the associated document MUST include expected contexts.
{
                      "name": "AssertionError",
                      "message": "expected false to equal true",
                      "stack": "AssertionError: expected false to equal true\n    at Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/node_modules/data-integrity-test-suite-assertion/index.js:136:32)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
{
                      "name": "AssertionError",
                      "message": "expected false to equal true",
                      "stack": "AssertionError: expected false to equal true\n    at Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/node_modules/data-integrity-test-suite-assertion/index.js:145:38)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
{
                      "name": "AssertionError",
                      "message": "expected false to equal true",
                      "stack": "AssertionError: expected false to equal true\n    at Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/node_modules/data-integrity-test-suite-assertion/index.js:145:38)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
"proof.cryptosuite" field MUST exist and be a string.
{
                      "name": "AssertionError",
                      "message": "expected { …(5) } to have property 'cryptosuite'",
                      "stack": "AssertionError: expected { …(5) } to have property 'cryptosuite'\n    at Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/node_modules/data-integrity-test-suite-assertion/index.js:162:31)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
if "proof.created" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.
if "proof.expires" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.
"proof.verificationMethod" field MUST exist and be a valid URL.
"proof.proofPurpose" field MUST exist and be a string.
"proof.proofValue" field MUST exist and be a string.
The "proof.proofValue" field MUST be a multibase-encoded base58-btc encoded value.
if "proof.domain" field exists, it MUST be either a string, or an unordered set of strings.
if "proof.challenge" field exists, it MUST be a string.
if "proof.previousProof" field exists, it MUST be a string.
if "proof.nonce" field exists, it MUST be a string.

eddsa-rdfc-2022 (issuer)

Implementation ⇒
Test Name
apicatalog.com Digital Bazaar SpruceID Trinsic bovine
The field "cryptosuite" MUST be "eddsa-rdfc-2022".
{
                      "name": "AssertionError",
                      "message": "Expected at least one proof to have \"cryptosuite\" with the value \"eddsa-rdfc-2022\".: expected false to equal true",
                      "stack": "AssertionError: Expected at least one proof to have \"cryptosuite\" with the value \"eddsa-rdfc-2022\".: expected false to equal true\n    at Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/10-rdfc-create.js:66:20)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected at least one proof to have \"cryptosuite\" with the value \"eddsa-rdfc-2022\".: expected false to equal true",
                      "stack": "AssertionError: Expected at least one proof to have \"cryptosuite\" with the value \"eddsa-rdfc-2022\".: expected false to equal true\n    at Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/10-rdfc-create.js:66:20)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected at least one proof to have \"cryptosuite\" with the value \"eddsa-rdfc-2022\".: expected false to equal true",
                      "stack": "AssertionError: Expected at least one proof to have \"cryptosuite\" with the value \"eddsa-rdfc-2022\".: expected false to equal true\n    at Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/10-rdfc-create.js:66:20)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
Dereferencing the "verificationMethod" MUST result in an object containing a type property with "Multikey" value.
The "proof.proofPurpose" field MUST match the verification relationship expressed by the verification method controller.
The "publicKeyMultibase" value of the verification method MUST be 34 bytes in length and starts with the base-58-btc prefix (z).
"proofValue" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.
{
                      "name": "AssertionError",
                      "message": "Expected at least one eddsa-rdfc-2022 cryptosuite.: expected +0 to be at least 1",
                      "stack": "AssertionError: Expected at least one eddsa-rdfc-2022 cryptosuite.: expected +0 to be at least 1\n    at Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/10-rdfc-create.js:141:44)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected at least one eddsa-rdfc-2022 cryptosuite.: expected +0 to be at least 1",
                      "stack": "AssertionError: Expected at least one eddsa-rdfc-2022 cryptosuite.: expected +0 to be at least 1\n    at Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/10-rdfc-create.js:141:44)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected at least one eddsa-rdfc-2022 cryptosuite.: expected +0 to be at least 1",
                      "stack": "AssertionError: Expected at least one eddsa-rdfc-2022 cryptosuite.: expected +0 to be at least 1\n    at Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/10-rdfc-create.js:141:44)\n    at process.processImmediate (node:internal/timers:478:21)"
                    }
"proof" MUST verify when using a conformant verifier.
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/10-rdfc-create.js:170:24)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }

Data Integrity (eddsa-rdfc-2022 verifiers)

Verifier ⇒
Test Name
apicatalog.com Digital Bazaar SpruceID Trinsic bovine
If the "proof" field is missing, an error MUST be raised.
If the "proof" field is invalid, an error MUST be raised.
If the "proof.type" field is missing, an error MUST be raised.
If the "proof.type" field is not the string "DataIntegrityProof", an error MUST be raised.
If the "proof.verificationMethod" field is missing, an error MUST be raised.
If the "proof.verificationMethod" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" field is missing, an error MUST be raised.
If the "proof.proofPurpose" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" value does not match "options.expectedProofPurpose", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/node_modules/data-integrity-test-suite-assertion/helpers.js:52:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/node_modules/data-integrity-test-suite-assertion/index.js:406:7)"
                    }
If the "proof.proofValue" field is missing, an error MUST be raised.
If the "proof.proofValue" field is invalid, an error MUST be raised.
If the "proof.created" field is invalid, an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier.: expected Response{ data: { …(3) }, …(3) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationFail (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/node_modules/data-integrity-test-suite-assertion/helpers.js:52:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/node_modules/data-integrity-test-suite-assertion/index.js:437:7)"
                    }
If the "proof.proofValue" field is not a multibase-encoded base58-btc value, an error MUST be raised.
If the "options.domain" is set and it does not match "proof.domain", an error MUST be raised.
If the "options.challenge" is set and it does not match "proof.challenge", an error MUST be raised.

eddsa-rdfc-2022 (verifier)

Verifier ⇒
Test Name
apicatalog.com Digital Bazaar SpruceID Trinsic bovine
MUST verify a valid VC with an eddsa-rdfc-2022 proof
{
                      "name": "AssertionError",
                      "message": "Expected a result from verifier.: expected undefined to exist",
                      "stack": "AssertionError: Expected a result from verifier.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at verificationSuccess (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/assertions.js:66:10)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/20-rdfc-verify.js:46:13)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected a result from verifier.: expected undefined to exist",
                      "stack": "AssertionError: Expected a result from verifier.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at verificationSuccess (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/assertions.js:66:10)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/20-rdfc-verify.js:46:13)"
                    }
If the "proofValue" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.
If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.
If a canonicalization data hashing other than algorithm SHA-2-256 is used, an error MUST be raised.
If the "cryptosuite" field is not the string "eddsa-rdfc-2022", an error MUST be raised.

eddsa-rdfc-2022 (interop)

Verifier ⇒
Issuer
apicatalog.com Digital Bazaar SpruceID Trinsic bovine
apicatalog.com
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
Digital Bazaar
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
SpruceID
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
Trinsic
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
bovine
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "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 Context. (file:///home/runner/work/vc-di-eddsa-test-suite/vc-di-eddsa-test-suite/tests/30-rdfc-interop.js:56:20)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }

Data Integrity (eddsa-jcs-2022 issuers)

Issuer ⇒
Test Name
bovine
"proof" field MUST exist and MUST be either a single object or an unordered set of objects.
if "proof.id" field exists, it MUST be a valid URL.
"proof.type" field MUST exist and be a string.
"proof.type" field MUST be "DataIntegrityProof" and the associated document MUST include expected contexts.
"proof.cryptosuite" field MUST exist and be a string.
if "proof.created" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.
if "proof.expires" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.
"proof.verificationMethod" field MUST exist and be a valid URL.
"proof.proofPurpose" field MUST exist and be a string.
"proof.proofValue" field MUST exist and be a string.
The "proof.proofValue" field MUST be a multibase-encoded base58-btc encoded value.
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.

eddsa-jcs-2022 (issuer)

Implementation ⇒
Test Name
bovine
The field "cryptosuite" MUST be "eddsa-jcs-2022".
Dereferencing the "verificationMethod" MUST result in an object containing a type property with "Multikey" value.
The "proof.proofPurpose" field MUST match the verification relationship expressed by the verification method controller.
The "publicKeyMultibase" value of the verification method MUST be 34 bytes in length and starts with the base-58-btc prefix (z).
"proofValue" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.
"proof" MUST verify when using a conformant verifier.

Data Integrity (eddsa-jcs-2022 verifiers)

Verifier ⇒
Test Name
bovine
If the "proof" field is missing, an error MUST be raised.
If the "proof" field is invalid, an error MUST be raised.
If the "proof.type" field is missing, an error MUST be raised.
If the "proof.type" field is not the string "DataIntegrityProof", an error MUST be raised.
If the "proof.verificationMethod" field is missing, an error MUST be raised.
If the "proof.verificationMethod" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" field is missing, an error MUST be raised.
If the "proof.proofPurpose" field is invalid, an error MUST be raised.
If the "proof.proofPurpose" value does not match "options.expectedProofPurpose", an error MUST be raised.
If the "proof.proofValue" field is missing, an error MUST be raised.
If the "proof.proofValue" field is invalid, an error MUST be raised.
If the "proof.created" field is invalid, an error MUST be raised.
If the "proof.proofValue" field is not a multibase-encoded base58-btc value, an error MUST be raised.
If the "options.domain" is set and it does not match "proof.domain", an error MUST be raised.
If the "options.challenge" is set and it does not match "proof.challenge", an error MUST be raised.

eddsa-jcs-2022 (verifier)

Verifier ⇒
Test Name
bovine
MUST verify a valid VC with an eddsa-jcs-2022 proof.
If the "proofValue" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.
If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.
If a canonicalization data hashing other than algorithm SHA-2-256 is used, an error MUST be raised.
If the "cryptosuite" field is not the string "eddsa-jcs-2022", an error MUST be raised.

eddsa-jcs-2022 (interop)

Verifier ⇒
Issuer
bovine
bovine