Interoperability composition
3 min read · Specifications
Interoperability composition
This document is informative. It specifies how a CNML certificate composes with the two interoperability frameworks CNML's audience most often meets: W3C Verifiable Credentials (the verifiable-data ecosystem) and the EU Digital Product Passport (the European regulatory context). Both compositions follow the SIGNATIF annexes on VC and DPP composition.
Composition with W3C Verifiable Credentials
A CNML type-approval certificate is expressible as a Verifiable Credential: the CNML payload becomes the credential subject, the CNML signature becomes the proof, and each dimensional co-signature becomes an additional proof with its trust dimension identified.
Type-approval certificate as a VC
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.oimlsmart.org/schemas/cnml/1.0"
],
"type": ["VerifiableCredential", "CNMLTypeApproval"],
"issuer": "did:web:ia.example.org",
"credentialSubject": {
"type": "MeasuringInstrumentType",
"recommendation": "R60",
"model": "LC-500",
"manufacturer": "…",
"oimlCertificateNumber": "R60/2021-NL1"
},
"proof": {
"type": "CNMLXMLDSig2026",
"canonicalPayload": "the CNML XML, exclusive C14N, minus all Signature blocks",
"proofPurpose": "assertionMethod",
"verificationMethod": "the IA threshold key, X.509 chain embedded in KeyInfo"
}
}
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.oimlsmart.org/schemas/cnml/1.0"
],
"type": ["VerifiableCredential", "CNMLTypeApproval"],
"issuer": "did:web:ia.example.org",
"credentialSubject": {
"type": "MeasuringInstrumentType",
"recommendation": "R60",
"model": "LC-500",
"manufacturer": "…",
"oimlCertificateNumber": "R60/2021-NL1"
},
"proof": {
"type": "CNMLXMLDSig2026",
"canonicalPayload": "the CNML XML, exclusive C14N, minus all Signature blocks",
"proofPurpose": "assertionMethod",
"verificationMethod": "the IA threshold key, X.509 chain embedded in KeyInfo"
}
}
Each cnml:coSignature wrapper in the CNML XML maps to an entry in
a proofSet: the certified tester's person-dimension co-signature,
the calibration authority's environment-dimension co-signature. The
dimension attribute identifies which independent attestation the
proof carries.
Instance certificate as a VC
An instance certificate is a VC about a specific instrument
instance: credentialSubject carries the serial number, firmware
hash, and manufacturing date; the manufacturer's delegated key is
the proof.
Emission
The mapping is implemented: certificateToVerifiableCredential() and
instanceToVerifiableCredential() (in @oiml/cnml-crypto) emit the
VC JSON from a parsed certificate plus the coverage report's proof
facts, with each verified co-signature landing in the proof set under
its trust dimension.
What CNML adds over a bare VC
A VC proof says "this issuer signed this subject." It does not say:
- that the signing act was within the issuer's delegated authority (CNML: the scope extension, check 4),
- that a distributed quorum, not one individual, produced the signature (CNML: threshold signatures, ceremony records),
- that the certificate cannot have been silently issued (CNML: the transparency log),
- which independent attestations converge on the payload (CNML: dimensional co-signatures and the coverage report).
A SIGNATIF-conforming verifier can therefore treat a CNML-derived VC as a VC whose trust metadata is richer than the VC model alone carries: the coverage report, the classification label, and the acceptance decision travel with the credential.
Composition with the EU Digital Product Passport
The CNML passport is structurally a DPP data carrier system: the QR code on the instrument body is the carrier, the passport endpoint is the resolution path, and the transparency log provides the unique product identifier's integrity.
Element mapping
| DPP element | CNML realization |
|---|---|
| Data carrier | QR code on the instrument body (error-corrected, versioned) |
| Unique product identifier | The instance certificate identifier |
| Resolver | The passport endpoint (/passport/<cert-id>, HTML + JSON-LD) |
| Economic operator | The manufacturer (delegated trust authority) |
| Verification reference | The issuing authority and its scope |
| Registry function | The transparency log (single operator today; the multi-log model generalizes it) |
| Version compatibility | Successive certificate versions (renewal, re-issue) |
| Access control | Classed projections (public passport vs. regulator view) |
The verification flow
A market-surveillance officer scanning the DPP carrier:
- resolves the QR code to the passport endpoint;
- reads the device identity, certificate chain summary, Recommendation, and revocation status;
- runs the full verification pipeline against the certificate (offline trust anchors, CRL, transparency);
- receives the coverage report: what was verified, which trust dimensions were attested, the classification label;
- applies their acceptance policy (member-state configuration).
Steps 3 to 5 are exactly the SIGNATIF three-stage model, so the DPP verification flow needs no CNML-specific verifier: any SIGNATIF conforming verifier with the CNML profile configured performs it.