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, Inc.: 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, Inc.: P-256 |
✓
|
❌
|
✓
|
❌
|
✓
|
❌
|
✓
|
❌
|
✓
|
✓
|
❌
|
| Digital Bazaar, Inc.: 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, Inc.: 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 |
|---|
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar, Inc. | 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, Inc. | 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 | Digital Bazaar, Inc. | 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 | Digital Bazaar, Inc. | Grotto Networking | bovine |
|---|---|---|---|---|
| The following algorithm specifies how to verify a data integrity proof given an secured data document. Required inputs are an secured data document (map securedDocument). This algorithm returns a verification result. |
✓
|
❌
|
✓
|
❌
|
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar, Inc. | 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, Inc. | 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 | CredenceID | Digital Bazaar, Inc. | Gen Digital | Grotto Networking | MakoLab | Netis | Procivis One Core | SpruceID | Trential | bovine |
|---|---|---|---|---|---|---|---|---|---|---|---|
| The following algorithm specifies how to verify a data integrity proof given an secured data document. Required inputs are an secured data document (map securedDocument). This algorithm returns a verification result. |
✓
|
❌
|
❌
|
❌
|
✓
|
❌
|
❌
|
❌
|
✓
|
✓
|
❌
|
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar, Inc. | 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, Inc. | 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, Inc. | 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, Inc. | 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, Inc. | 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, Inc. | Grotto Networking | MakoLab | SpruceID | Trential |
|---|---|---|---|---|---|---|
| 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-sd-2023, 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, Inc. | 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, Inc. | 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. |
✓
|
❌
|
✓
|
✓
|
❌
|
✓
|
✓
|
|
⇒
⇓Test Name
|
apicatalog.com | Digital Bazaar, Inc. | Grotto Networking | MakoLab | SpruceID | Trential |
|---|---|---|---|---|---|---|
| Set value to parentValue.path. If value is now undefined, an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR, indicating that the JSON pointer does not match the given document. |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|