The purpose of this test suite is to demonstrate a path to interoperability for the BBS data integrity cryptosuite. The technologies explored in this test suite are experimental. This document contains the most recent interoperability report for a DataIntegrityProof using the BBS cryptosuite. This report is auto-generated.

Conformance Testing Results

Tests passed 29/33 87%

Tests failed 5/33 16%

Failures 5

Tests skipped 1

Total tests 34

These tests were run on

Key

The results of the tests are shown below:

Data Integrity (bbs-2023 issuers)

Issuer ⇒
Test Name
Grotto Networking
"proof" field MUST exist and MUST be either a single object or an unordered set of objects.
if "proof.id" field exists, it MUST be a valid URL.
"proof.type" field MUST exist and be a string.
"proof.type" field MUST be "DataIntegrityProof" and the associated document MUST include expected contexts.
"proof.cryptosuite" field MUST exist and be a string.
if "proof.created" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.
if "proof.expires" field exists, it MUST be a valid XMLSCHEMA-11 dateTimeStamp value.
"proof.verificationMethod" field MUST exist and be a valid URL.
"proof.proofPurpose" field MUST exist and be a string.
"proof.proofValue" field MUST exist and be a string.
The contents of the value ("proof.proofValue") MUST be expressed with a header and encoding as described in Section 2.4 Multibase.
if "proof.domain" field exists, it MUST be either a string, or an unordered set of strings.
if "proof.challenge" field exists, it MUST be a string.
if "proof.previousProof" field exists, it MUST be a string.
if "proof.nonce" field exists, it MUST be a string.

bbs-2023 (issuers) VC Version 1.1

Implementation ⇒
Test Name
Grotto Networking

bbs-2023 (issuers) VC Version 2.0

Implementation ⇒
Test Name
Grotto Networking
The field "cryptosuite" MUST be "bbs-2023".
The type property of the proof MUST be DataIntegrityProof.
The value of the proofValue property of the proof MUST be a BBS signature or BBS proof produced according to [CFRG-BBS-SIGNATURE] that is serialized and encoded according to procedures in section 3. Algorithms.
The derived "proof" MUST verify when using a conformant verifier.
Dereferencing "verificationMethod" MUST result in an object containing a type property with "Multikey" value.
The publicKeyMultibase property represents a Multibase-encoded Multikey expression of a BLS12-381 public key in the G2 group. The encoding of this field is the two-byte prefix 0xeb01 followed by the 96-byte compressed public key data. The 98-byte value is then encoded using base58-btc (z) as the prefix. Any other encodings MUST NOT be allowed.

Data Integrity (bbs-2023 verifiers)

Verifier ⇒
Test Name
Grotto Networking

bbs-2023 (verifiers) VC 1.1

Verifier ⇒
Test Name
Grotto Networking

bbs-2023 (verifiers) VC 2.0

Verifier ⇒
Test Name
Grotto Networking
MUST verify a valid VC with a bbs-2023 proof.
MUST verify a valid VC with nested disclosed properties.
MUST verify a valid VC with disclosed properties and bnodes.
MUST verify with full array revealed properties
{
                      "name": "AssertionError",
                      "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist",
                      "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at verificationSuccess (file:///home/runner/work/vc-di-bbs-test-suite/vc-di-bbs-test-suite/tests/assertions.js:46:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-bbs-test-suite/vc-di-bbs-test-suite/tests/suites/verify.js:58:13)"
                    }
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-bbs-test-suite/vc-di-bbs-test-suite/tests/assertions.js:46:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-bbs-test-suite/vc-di-bbs-test-suite/tests/suites/verify.js:63:13)"
                    }
MUST verify w/o first element 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-bbs-test-suite/vc-di-bbs-test-suite/tests/assertions.js:46:14)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-bbs-test-suite/vc-di-bbs-test-suite/tests/suites/verify.js:68:13)"
                    }
If the "proofValue" string does not start with "u", an error MUST be raised.
{
                      "name": "AssertionError",
                      "message": "Expected HTTP Status code 400 invalid input!: expected 500 to equal 400",
                      "stack": "AssertionError: Expected HTTP Status code 400 invalid input!: expected 500 to equal 400\n    at verificationFail (file:///home/runner/work/vc-di-bbs-test-suite/vc-di-bbs-test-suite/tests/assertions.js:32:23)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-di-bbs-test-suite/vc-di-bbs-test-suite/tests/suites/verify.js:76:11)"
                    }
If the "cryptosuite" field is not the string "bbs-2023", an error MUST be raised.
MUST fail to verify a base proof.
MUST fail to verify a modified disclosed credential.
The transformation options MUST contain a type identifier for the cryptographic suite (type), a cryptosuite identifier (cryptosuite), and a verification method (verificationMethod).

bbs-2023 (interop)

Verifier ⇒
Issuer
Grotto Networking
Grotto Networking