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

These tests were run on

Key

🚫
Pending
✓
Passed
❌
Failed
⊘
Access Denied
⏱
Timeout
—
Not Implemented

The results of the tests are shown below:

Data Integrity (eddsa-rdfc-2022 issuers)

Issuer ⇒
⇓Test Name
Accredify
When expressing a data integrity proof on an object, a proof property MUST be used.
✓
If present (proof), its value MUST be either a single object, or an unordered set of objects.
✓
("proof.id") An optional identifier for the proof, which MUST be a URL.
✓
The specific type of proof MUST be specified as a string that maps to a URL.
✓
The type property MUST contain the string DataIntegrityProof.
✓
The proofValue property MUST be used, as specified in 2.1 Proofs.
✓
If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.
✓
If specified (proof.cryptosuite), its value MUST be a string.
✓
A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].
✓
The reason the proof was created ("proof.proofPurpose") MUST be specified as a string that maps to a URL.
✓
("proof.proofValue") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.
✓
Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.
✓
Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.
✓
If the algorithm produces an error, the error MUST be propagated and SHOULD convey the error type.
✓
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite.
✓
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.
✓

Data Integrity (eddsa-rdfc-2022 verifiers)

Verifier ⇒
⇓Test Name
Accredify
When deserializing to RDF, implementations MUST ensure that the base URL is set to null.
✓
Conforming processors MUST produce errors when non-conforming documents are consumed.
✓
If either securedDocument is not a map or securedDocument.proof is not a map, an error MUST be raised and SHOULD convey an error type of PARSING_ERROR.
✓
If one or more of proof.type, proof.verificationMethod, and proof.proofPurpose does not exist, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR
✓
The type property MUST contain the string DataIntegrityProof.
✓
If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.
✓
The proofValue property MUST be used, as specified in 2.1 Proofs.
✓
("proof.proofValue") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.
✓
Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.
✓
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.
✓
An OPTIONAL string value (proof.previousProof) or unordered list of string values. Each value identifies another data integrity proof that MUST verify before the current proof is processed.
✓
If an unordered list (proof), all referenced proofs in the array MUST verify.
✓
If a proof with id equal to previousProof does not exist in allProofs, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.
✓
If any element of previousProof list has an id attribute that does not match the id attribute of any element of allProofs, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.
✓
Each value identifies another data integrity proof, all of which MUST also verify for the current proof to be considered verified
✓

eddsa-rdfc-2022 (interop)

Verifier ⇒
⇓Issuer
Accredify
Accredify
✓

eddsa-jcs-2022 (interop)

Verifier ⇒
⇓Issuer

eddsa-rdfc-2022 - Data Model - Proof Representations

eddsa-rdfc-2022 - Data Model - Verification Methods

eddsa-jcs-2022 - Data Model - Proof Representations

Issuer ⇒
⇓Test Name

eddsa-jcs-2022 - Data Model - Verification Methods

Issuer ⇒
⇓Test Name

eddsa-jcs-2022 - Algorithms - Transformation

Issuer ⇒
⇓Test Name

eddsa-jcs-2022 - Algorithms - Proof Configuration

Issuer ⇒
⇓Test Name

eddsa-jcs-2022 - Algorithms - Proof Serialization

Issuer ⇒
⇓Test Name

eddsa-rdfc-2022 - Algorithms - Transformation

eddsa-rdfc-2022 - Algorithms - Proof Configuration

eddsa-rdfc-2022 - Algorithms - Proof Serialization

At Risk

Reason ⇒
⇓Statement
At least 2 passing implementations
When expressing a data integrity proof on an object, a proof property MUST be used.
❌
If present (proof), its value MUST be either a single object, or an unordered set of objects.
❌
("proof.id") An optional identifier for the proof, which MUST be a URL.
❌
The specific type of proof MUST be specified as a string that maps to a URL.
❌
The type property MUST contain the string DataIntegrityProof.
❌
The proofValue property MUST be used, as specified in 2.1 Proofs.
❌
If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.
❌
If specified (proof.cryptosuite), its value MUST be a string.
❌
A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].
❌
The reason the proof was created ("proof.proofPurpose") MUST be specified as a string that maps to a URL.
❌
("proof.proofValue") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.
❌
Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.
❌
Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.
❌
If the algorithm produces an error, the error MUST be propagated and SHOULD convey the error type.
❌
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite.
❌
The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.
❌
When deserializing to RDF, implementations MUST ensure that the base URL is set to null.
❌
Conforming processors MUST produce errors when non-conforming documents are consumed.
❌
If either securedDocument is not a map or securedDocument.proof is not a map, an error MUST be raised and SHOULD convey an error type of PARSING_ERROR.
❌
If one or more of proof.type, proof.verificationMethod, and proof.proofPurpose does not exist, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR
❌
If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.
❌
("proof.proofValue") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.
❌
An OPTIONAL string value (proof.previousProof) or unordered list of string values. Each value identifies another data integrity proof that MUST verify before the current proof is processed.
❌
If an unordered list (proof), all referenced proofs in the array MUST verify.
❌
If a proof with id equal to previousProof does not exist in allProofs, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.
❌
If any element of previousProof list has an id attribute that does not match the id attribute of any element of allProofs, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.
❌
Each value identifies another data integrity proof, all of which MUST also verify for the current proof to be considered verified
❌
The type property MUST be DataIntegrityProof.
❌
The cryptosuite property of the proof MUST be eddsa-rdfc-2022 or eddsa-jcs-2022.
❌
The proofValue property of the proof MUST be a detached EdDSA signature produced according to [RFC8032], encoded using the base-58-btc header and alphabet as described in the Multibase section of Controller Documents 1.0.
❌
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.
❌
Any other encoding MUST NOT be allowed.
❌
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 and options.cryptosuite is not set to the string eddsa-rdfc-2022, an error MUST be raised that SHOULD convey an error type of PROOF_TRANSFORMATION_ERROR.
❌
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 eddsa-rdfc-2022, an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.
❌
If proofConfig.created is present and set to a value that is not a valid [XMLSCHEMA11-2] datetime, an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.
❌
The proof options MUST contain a type identifier for the cryptographic suite (type) and MAY contain a cryptosuite identifier (cryptosuite).
❌