Summary

  • Revision 03 gives typed digest references four distinct outcomes—Malformed, Unresolved, Failed and Verified—so a well-formed or signature-covered reference cannot be reported as content-binding evidence before its authorized context, artifact and comparison are established.
  • A Verified reference proves equality under one declared digest context. It does not by itself prove issuer authority, receipt validity, artifact freshness, semantic fitness, policy compliance or authorization.
  • Operations need separate receipts for carrier selection, syntax, profile authority, context selection, artifact acquisition, construction execution, representation-correct comparison, signature, issuer, transparency service, appraisal and local decision.

Revision 03 changes what “verified” must name

The event is small enough to describe accurately. On 5 September 2026, Steven Mih and Anton Sokolov submitted revision 03 of Canonical Payload Binding: A Signed Statement Construction Profile. The Datatracker lists it as an active individual Internet-Draft. The authors name the SCITT Working Group as the intended venue, but the document has no IETF stream, responsible area director, telechat or consensus standing. It is work in progress.

That limited status matters because the revision makes proposed behavior more exact without making it deployed fact. Its “Changes from -02” section separates the payload-neutral Canonical Payload Binding, or CPB, from payload formats. It defines a typed digest reference as a four-member information model. A payload profile may serialize that model in its own payload, or a statement may use one optional protected-header carrier named cpb-refs. The draft removes its earlier artifact-type registry design, leaving consuming profiles to identify accepted artifact types and digest contexts through stable normative references.

The most consequential change is not another digest format. It is an evidence vocabulary. Reference processing now ends in Malformed, Unresolved, Failed or Verified, while the enclosing COSE signature and the issuer's authority are reported separately. Full-content statements under RFC 9943 and detached Hash Envelope statements under RFC 9995 remain two modes, not an invitation to flatten their custody differences. A Signed Statement may use at most one typed-reference carrier.

Four outcomes, not one badge

Malformed is an admission failure. The reference or its cpb-refs container violates the required serialization, omits a required member, repeats a key or tuple, introduces an unknown inner-map key, uses the wrong CBOR type or exceeds a bound. Revision 03 makes the protected-header map closed: keys beyond the defined four are not extensions. A malformed entry contaminates the whole cpb-refs value for reference reporting; a verifier must not salvage another entry as Verified. The signature result remains independently reportable.

Unresolved begins after syntax succeeds. The reference may be perfectly well-formed, yet the verifier cannot select exactly one digest context authorized by its consuming profile. Or the context is clear but the cited artifact cannot be obtained. Or the artifact is present but the verifier lacks the implementation needed to execute the otherwise valid construction. None of those conditions proves a mismatch. None supplies content-binding evidence either.

Failed means the verifier crossed a different boundary. One authorized context was selected, but the carried algorithm or representation conflicts with it; the selected token is permanently undefined or prohibited; or recomputation over the obtained artifact produced a different result. Failed is not a softer synonym for Unresolved. It says enough of the join was established to determine that the asserted binding did not pass.

Verified is deliberately demanding. The verifier selects exactly one authorized context, obtains the cited artifact, applies that context's field selection, exclusion, canonicalization, hash and representation rules, and compares equal. Only then does the reference establish content binding under that context. The adjective must retain its object: the reference binding verified. It must not expand silently into “the issuer is trusted”, “the artifact is safe” or “the action is authorized”.

Exactly one authorized digest context

A hash function name is not a digest context. Revision 03 defines the context as the complete set of parameters that produced the comparison value: selected fields, excluded fields, canonicalization algorithm, domain separation, preimage encoding and output representation. Two values that happen to display the same hexadecimal characters are not comparable until their full contexts are compatible.

Selection starts with type and, when present, purpose. If the consuming profile accepts one context for a type, purpose may be omitted; when supplied, it must match. If it accepts several contexts, each needs a distinct non-empty purpose and the reference must choose one. No match is Unresolved. More than one authoritative match is also Unresolved. A verifier may not break the tie by list order, digest length, familiar spelling, apparent payload shape or an unspecified mutable registry snapshot.

This is where a generic implementation can accidentally acquire policy power. A library may know how to run SHA-256 and RFC 8785 JSON Canonicalization Scheme. It still does not know which fields a particular payload profile includes, what it excludes to avoid self-reference, whether domain separation applies, which representation is normative or which profile version the relying organization accepts. The consuming profile owns that authorization. The library should return an unresolved context, not invent one.

The same discipline applies to a carried derived identifier. The producer may include it, but revision 03 calls that value advisory. The verifier recomputes after applying the profile's declared exclusion set and any explicitly ordered transform. A mismatch is a defect. Copying the producer's identifier into a local “verified” column would replace verification with repetition.

One carrier and a closed map

The draft offers two carriage choices, not two lists to merge. A profile uses protected cpb-refs envelope carriage or a profile-owned payload serialization in each Signed Statement. A producer must not use both, even for different citations. A profile-aware verifier that encounters both marks the statement nonconforming; it must not union the references or prefer whichever carrier its implementation happens to parse first.

That rule prevents ordering and shadow-policy bugs. If two carriers could be merged, duplicated entries might gain weight, a protected reference could be overridden by a payload value, or different components could report different citation sets. One carrier produces one admissible input surface and one audit record.

In the optional envelope form, cpb-refs is signature-covered protected-header content. Its array contains between one and 64 references. Each closed integer-keyed map supplies type, optional purpose, digest_alg and digest, with explicit type and size limits. Duplicate CBOR keys must be detected before a data-model conversion can erase them. Repeated identical tuples are forbidden. First-wins, last-wins, partial-success and duplicate-weighting behavior are all excluded.

The CDDL constrains the data model, not one privileged byte encoding. A test vector may pin a deterministic representation for reproducibility, but a conforming verifier does not reject another valid CBOR encoding merely because its transmitted bytes differ. That boundary complements, rather than repeats, the separate measured framing-space problem: here the question is whether an admitted reference selects and verifies one authorized external-artifact context.

Representation and acquisition are evidence

Raw digest octets, bare lowercase hexadecimal text and prefixed text are different representations. Revision 03 refuses silent coercion. If the chosen context expects 32 raw octets and the reference supplies their 64-character textual spelling, visual equivalence is not protocol equality. A declared conversion can be performed only where the draft or consuming profile defines both the conversion and the resulting comparison representation.

Artifact acquisition is another independent control. When the reference is well-formed and its context is selected but the artifact cannot be obtained, the outcome is Unresolved, not Verified and not Failed. A cache miss, network outage, authorization failure, missing retention object and unsupported retrieval scheme therefore belong in the operational record. Retrying may change availability without changing the original statement. Systems should preserve both events.

Implementation availability has the same classification. A verifier that recognizes a legitimate context but cannot execute it has not disproved the binding. It also cannot lend its green status to another component that might know how. Reporting Unresolved keeps the gap visible and lets policy decide whether to fetch a plugin, route to a capable verifier, defer the decision or reject the action.

A signature covers the claim; it does not finish the reference

COSE protected headers are integrity-protected after successful signature validation. They are not magically authenticated as claims by an authorized issuer. Revision 03 names Signature-Valid and Issuer-Authenticated separately: the former says the cryptographic signature validated under the chosen key; the latter says local policy accepts that key as authorized for the asserted issuer.

Neither state makes an external reference Verified. A signature-valid statement may contain an Unresolved or Failed reference. Conversely, a digest may recompute successfully even though the statement's signature failed; that equality does not authenticate the issuer. An interface that compresses both outcomes into a single checkmark destroys the information needed to diagnose or authorize anything.

SCITT receipts add another independent result. RFC 9943 gives a Transparency Service a way to register signed statements and issue verifiable receipts under its declared verifiable data structure. Revision 03 requires a verifier claiming receipt-backed status to verify a receipt under a trusted Transparency Service key and to read the VDS identifier from the receipt's protected header. A receipt does not repair a malformed reference or turn an unavailable artifact into a verified binding.

Even successful typed-reference verification remains narrow. The draft expressly excludes issuer authority, artifact validity, scope, freshness, revocation status, policy compliance, semantic acceptance and application authorization. Those belong to artifact-specific appraisal and the consuming application's decision. The point of a reusable binding layer is to make one join portable, not to appropriate every downstream judgment.

Protected does not mean private

Placing cpb-refs in a protected header covers it with the signature. It does not encrypt it. The reference exposes type, purpose, digest algorithm, digest value and graph structure. A stable digest can correlate statements that cite the same artifact. Low-entropy artifacts may be vulnerable to dictionary guessing even if their full contents are not carried.

The operational question is therefore not only “can a generic verifier see the reference?” but “should this citation edge be public?” The draft advises omitting cpb-refs or using a confidential profile-owned payload carrier where header visibility is inappropriate. That choice must be made before publication; later access controls cannot retract a digest graph already distributed in signed material.

Proposed coordinates are not allocations

Revision 03 asks IANA to create a Canonicalization Algorithm Registry and register the cpb-refs COSE Header Parameter. The request is evidence of the authors' proposed coordination design, not evidence that the registry or parameter already exists. Software should retain the draft version, provisional coordinates and migration assumptions. Treating a requested name as a settled global allocation would convert an editable Internet-Draft into hidden infrastructure.

Heng Lu's minimum-initial-specification principle is useful here. The portable core should be the smallest common fact that independent parties can reproduce: one declared context applied to one obtained artifact produced one comparison result. Future profiles remain free to define their own semantics, appraisal and decisions. Running code matters, but it must expose the local receipts that show which declaration, implementation and bytes actually governed the result.

Scope limits and uncertainty

This report does not claim IETF adoption, working-group consensus, IANA action, product support or deployment. It does not validate the draft's appendix field instances as broad interoperability evidence. It does not test an implementation, service, registry, supply chain or incident. Revision 03 may change, expire or be replaced.

It also does not claim that canonicalization makes a payload true, safe or meaningful. The output of the four-state process is one bounded evidence record. Signature, issuer, receipt, reference, appraisal, decision and observed effect remain separate because each answers a different question and is owned by a different authority.

Sources