The purpose of this test suite is to demonstrate a path to interoperability for the ECDSA data integrity cryptosuites. The technologies explored in this test suite are experimental. This document contains the most recent interoperability report for a DataIntegrityProof using the `ecdsa-rdfc-2019`, `ecdsa-jcs-2019`, or `ecdsa-sd-2023` cryptosuites. This report is auto-generated.
These tests were run on
🚫
|
Pending |
✓
|
Passed |
❌
|
Failed |
⊘
|
Access Denied |
⏱
|
Timeout |
—
|
Not Implemented |
The results of the tests are shown below:
Verifier ⇒
⇓Issuer
|
apicatalog.com: P-256, P-384 | CredenceID: P-256 | Digital Bazaar: P-256, P-384 | Gen Digital: P-384, P-256 | Grotto Networking: P-256 | MakoLab: P-256 | Netis: P-256, P-384 | Procivis One Core: P-256 | SpruceID: P-256, P-384 | Trential: P-256, P-384 | bovine: P-256 |
---|---|---|---|---|---|---|---|---|---|---|---|
apicatalog.com: P-256 |
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
apicatalog.com: P-384 |
❌
|
🚫
|
❌
|
❌
|
🚫
|
🚫
|
❌
|
🚫
|
❌
|
❌
|
🚫
|
Digital Bazaar: P-256 |
❌
|
❌
|
✓
|
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
Digital Bazaar: P-384 |
❌
|
🚫
|
✓
|
✓
|
🚫
|
🚫
|
❌
|
🚫
|
✓
|
✓
|
🚫
|
Gen Digital: P-384 |
❌
|
🚫
|
❌
|
❌
|
🚫
|
🚫
|
❌
|
🚫
|
❌
|
❌
|
🚫
|
Grotto Networking: P-256 |
❌
|
❌
|
✓
|
❌
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
❌
|
MakoLab: P-256 |
❌
|
❌
|
✓
|
❌
|
✓
|
❌
|
✓
|
❌
|
❌
|
✓
|
❌
|
Procivis One Core: P-256 |
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
SpruceID: P-256 |
❌
|
❌
|
✓
|
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
SpruceID: P-384 |
❌
|
🚫
|
✓
|
✓
|
🚫
|
🚫
|
❌
|
🚫
|
✓
|
✓
|
🚫
|
Trential: P-256 |
❌
|
❌
|
✓
|
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
Trential: P-384 |
❌
|
🚫
|
✓
|
✓
|
🚫
|
🚫
|
❌
|
🚫
|
✓
|
✓
|
🚫
|
bovine: P-256 |
❌
|
❌
|
✓
|
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
Verifier ⇒
⇓Issuer
|
apicatalog.com: P-256, P-384 | Digital Bazaar: P-256, P-384 | Grotto Networking: P-256 | MakoLab: P-256 | Netis: P-256, P-384 | SpruceID: P-256, P-384 | Trential: P-256, P-384 |
---|---|---|---|---|---|---|---|
apicatalog.com: P-256 |
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
apicatalog.com: P-384 |
❌
|
❌
|
🚫
|
🚫
|
❌
|
❌
|
❌
|
Digital Bazaar: P-256 |
❌
|
✓
|
✓
|
✓
|
❌
|
✓
|
✓
|
Grotto Networking: P-256 |
❌
|
✓
|
✓
|
✓
|
❌
|
✓
|
✓
|
MakoLab: P-256 |
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
❌
|
SpruceID: P-256 |
❌
|
✓
|
✓
|
✓
|
❌
|
✓
|
✓
|
SpruceID: P-384 |
❌
|
❌
|
🚫
|
🚫
|
❌
|
❌
|
❌
|
Trential: P-256 |
❌
|
✓
|
✓
|
✓
|
❌
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar | Gen Digital | Grotto Networking | MakoLab | Procivis One Core | SpruceID | Trential | bovine |
---|---|---|---|---|---|---|---|---|---|
The publicKeyMultibase value of the verification method MUST start with the base-58-btc prefix (z), as defined in the Multibase section of Controller Documents 1.0. |
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
A Multibase-encoded ECDSA 256-bit public key value or an ECDSA 384-bit public key value follows, as defined in the Multikey section of Controller Documents 1.0. Any other encoding MUST NOT be allowed. |
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar | Gen Digital | Grotto Networking | MakoLab | Procivis One Core | SpruceID | Trential | bovine |
---|---|---|---|---|---|---|---|---|---|
A proof contains the attributes specified in the Proofs section of [VC-DATA-INTEGRITY]. |
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
The type property MUST be DataIntegrityProof. |
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
The cryptosuite property MUST be ecdsa-rdfc-2019, ecdsa-jcs-2019, or ecdsa-sd-2023. |
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Grotto Networking | bovine |
---|---|---|---|
A data integrity proof (map), or an error, is produced as output. |
✓
|
✓
|
✓
|
If unsecuredDocument.@context is present, set proof.@context to unsecuredDocument.@context. |
❌
|
✓
|
❌
|
Let proof.proofValue be a base58-btc-encoded Multibase value of the proofBytes. |
✓
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Grotto Networking | bovine |
---|---|---|---|
The proof options MUST contain a type identifier for the cryptographic suite (type) and MAY contain a cryptosuite identifier (cryptosuite). |
✓
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar | Gen Digital | Grotto Networking | MakoLab | Procivis One Core | SpruceID | Trential | bovine |
---|---|---|---|---|---|---|---|---|---|
A data integrity proof (map), or an error, is produced as output. |
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
Let proof.proofValue be a base58-btc-encoded Multibase value of the proofBytes. |
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar | Gen Digital | Grotto Networking | MakoLab | Procivis One Core | SpruceID | Trential | bovine |
---|---|---|---|---|---|---|---|---|---|
The transformation options MUST contain a type identifier for the cryptographic suite (type) and a cryptosuite identifier (cryptosuite). |
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
Whenever this algorithm encodes strings, it MUST use UTF-8 encoding. |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
If options.type is not set to the string DataIntegrityProof or options.cryptosuite is not set to the string ecdsa-rdfc-2019, an error MUST be raised and SHOULD convey an error type of PROOF_TRANSFORMATION_ERROR. |
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar | Gen Digital | Grotto Networking | MakoLab | Procivis One Core | SpruceID | Trential | bovine |
---|---|---|---|---|---|---|---|---|---|
The proof options MUST contain a type identifier for the cryptographic suite (type) and MUST contain a cryptosuite identifier (cryptosuite). |
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
If proofConfig.type is not set to DataIntegrityProof and/or proofConfig.cryptosuite is not set to ecdsa-rdfc-2019, an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR. |
✓
|
✓
|
❌
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
If proofConfig.created is set and if the value is not a valid [XMLSCHEMA11-2] datetime, an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR. |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar | Gen Digital | Grotto Networking | MakoLab | Procivis One Core | SpruceID | Trential | bovine |
---|---|---|---|---|---|---|---|---|---|
The proof options MUST contain a type identifier for the cryptographic suite (type) and MAY contain a cryptosuite identifier (cryptosuite). |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar | Grotto Networking | MakoLab | SpruceID | Trential |
---|---|---|---|---|---|---|
A data integrity proof (map), or an error, is produced as output. |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
Let proof.proofValue be a base64-url-encoded Multibase value of the proofBytes. |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar | Grotto Networking | MakoLab | SpruceID | Trential |
---|---|---|---|---|---|---|
The transformation options MUST contain a type identifier for the cryptographic suite (type), a cryptosuite identifier (cryptosuite), and a verification method (verificationMethod). |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
The transformation options MUST contain an array of mandatory JSON pointers (mandatoryPointers) and MAY contain additional options, such as a JSON-LD document loader. |
✓
|
✓
|
✓
|
❌
|
✓
|
✓
|
Whenever this algorithm encodes strings, it MUST use UTF-8 encoding. |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
Per the recommendations of [RFC2104], the HMAC key MUST be the same length as the digest size; for SHA-256, this is 256 bits or 32 bytes. |
✓
|
✓
|
✓
|
❌
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar | Grotto Networking | MakoLab | SpruceID | Trential |
---|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar | Grotto Networking | MakoLab | SpruceID | Trential |
---|---|---|---|---|---|---|
The proof options MUST contain a type identifier for the cryptographic suite (type) and MAY contain a cryptosuite identifier (cryptosuite). |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar | Grotto Networking | MakoLab | Netis | SpruceID | Trential |
---|---|---|---|---|---|---|---|
If the length of signatures does not match the length of nonMandatory, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR, indicating that the signature count does not match the non-mandatory message count. |
❌
|
❌
|
✓
|
❌
|
❌
|
✓
|
✓
|
Reason ⇒
⇓Statement
|
At least 2 passing implementations |
---|---|
If unsecuredDocument.@context is present, set proof.@context to unsecuredDocument.@context. |
❌
|