The purpose of this test suite is to demonstrate a path to interoperability for the merkle-proof-2019 cryptosuite. 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 merkle-proof-2019 cryptosuite. 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 (merkle-proof-2019 issuers)

Issuer ⇒
⇓Test Name
Blockcerts
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 (merkle-proof-2019 verifiers)

Verifier ⇒
⇓Test Name
Blockcerts
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.
✓

merkle-proof-2019 - Data Model - Proof Representations

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.
❌
The type property MUST be DataIntegrityProof.
❌
The cryptosuite property of the proof MUST be merkle-proof-2019.
❌
The proofValue property of the proof MUST be encoded using the base-58-btc header and alphabet as described in the Multibase section of Controller Documents 1.0.
❌