The purpose of this test suite is to demonstrate a path to interoperability for the Ed25519 Signature 2020. The technologies explored in this test suite are experimental. This document contains the most recent interoperability report for Ed25519 Signature 2020. This report is auto-generated.

Conformance Testing Results

Tests passed 128/150 85%

Tests failed 22/150 15%

Tests skipped 0

Total tests 150

These tests were run on

Key

The results of the tests are shown below:

Data Integrity (issuer)

Issuer ⇒
Test Name
API Catalog Danube Tech Digital Bazaar EWF LearnCard GS1 US MATTR Mavennet mesur.io SecureKey Transmute
`proof` field MUST exist at top-level of data object.
`type` field MUST exist and be a string.
`created` field MUST exist and be a valid XMLSCHEMA-11 datetimevalue.
`verificationMethod` field MUST exist and be a valid URL.
`proofPurpose` field MUST exist and be a string.
`proofValue` field MUST exist and be a string
{
                      "name": "AssertionError",
                      "message": "expected { type: 'Ed25519Signature2018', …(4) } to have property 'proofValue'",
                      "stack": "AssertionError: expected { type: 'Ed25519Signature2018', …(4) } to have property 'proofValue'\n    at Context. (node_modules/data-integrity-test-suite-assertion/index.js:110:31)\n    at processImmediate (node:internal/timers:466:21)"
                    }

Ed25519Signature2020 (issuer)

Issuer ⇒
Test Name
API Catalog Danube Tech Digital Bazaar EWF LearnCard GS1 US MATTR Mavennet mesur.io SecureKey Transmute
"type" field MUST be the string "Ed25519Signature2020".
{
                      "name": "AssertionError",
                      "message": "Expected \"proof.type\" to be \"Ed25519Signature2020\": expected false to equal true",
                      "stack": "AssertionError: Expected \"proof.type\" to be \"Ed25519Signature2020\": expected false to equal true\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/10-create.js:63:71)\n    at processImmediate (node:internal/timers:466:21)"
                    }
"proofValue" field MUST exist and be a multibase-encoded base58-btc encoded value
{
                      "name": "AssertionError",
                      "message": "Expected \"proof.proofValue\" to be multibase-encoded base58-btc value.: expected false to equal true",
                      "stack": "AssertionError: Expected \"proof.proofValue\" to be multibase-encoded base58-btc value.: expected false to equal true\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/10-create.js:78:21)\n    at processImmediate (node:internal/timers:466:21)"
                    }
"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 Ed25519 proof.: expected +0 to be at least 1",
                      "stack": "AssertionError: Expected at least one Ed25519 proof.: expected +0 to be at least 1\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/10-create.js:96:42)\n    at processImmediate (node:internal/timers:466:21)"
                    }
"proof" MUST verify when using a conformant verifier.

Data Integrity (verifier)

Verifier ⇒
Test Name
API Catalog Danube Tech Digital Bazaar EWF LearnCard GS1 US MATTR Mavennet mesur.io SecureKey Transmute
If the "proof" field is missing or invalid, a MALFORMED error MUST be returned.
If the "type" field is missing or invalid, a MALFORMED error MUST be returned.
If the "created" field is missing or invalid, a MALFORMED error MUST be returned.
If the "verificationMethod" field is missing or invalid, a MALFORMED error MUST be returned.
If the "proofPurpose" field is missing or invalid, a MALFORMED error MUST be returned.
If the "proofValue" field is missing or invalid, a MALFORMED error MUST be returned.

Ed25519Signature2020 (verifier)

Verifier ⇒
Test Name
API Catalog Danube Tech Digital Bazaar EWF LearnCard GS1 US MATTR Mavennet mesur.io SecureKey Transmute
MUST verify a valid VC with an Ed25519Signature2020 proof
If the "type" field is not the string "Ed25519Signature2020", an UNKNOWN_CRYPTOSUITE_TYPE error MUST be returned.
If the "proofValue" field is not a multibase-encoded base58-btc value, an INVALID_PROOF_VALUE error MUST be returned.
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 INVALID_PROOF_LENGTH error MUST be returned.
If a canonicalization algorithm other than URDNA2015 is used, a INVALID_PROOF_VALUE error MUST be returned.
If a canonicalization data hashing algorithm SHA-2-256 is used, a INVALID_PROOF_VALUE error MUST be returned.

Ed25519Signature2020 (interop)

Verifier ⇒
Issuer
API Catalog Danube Tech Digital Bazaar EWF LearnCard Mavennet mesur.io SecureKey
API Catalog
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist\n    at Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist\n    at Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96: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 Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }
Danube Tech
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist\n    at Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist\n    at Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96: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 Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }
Digital Bazaar
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist\n    at Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist\n    at Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96: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 Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }
EWF
{
                      "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 Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist\n    at Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist\n    at Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96: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 Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }
LearnCard
{
                      "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 Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96: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 Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist\n    at Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Unauthorized: This endpoint re… { …(6) } to not exist\n    at Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96: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 Object.should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at Context. (file:///home/runner/work/di-ed25519-test-suite/di-ed25519-test-suite/tests/30-interop.js:58:20)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)"
                    }