open-standards/wai/live-conformance/c2pa-envelope/envelope-assertion-extra-key
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science ae4ce533d7
Some checks failed
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 7s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 18s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Failing after 1m2s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 2m23s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 3m34s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Failing after 5m9s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 5m7s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 5m20s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 7m46s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 8m20s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Has been cancelled
joule-moq-room room service / joule-moq-room · does this change touch it (push) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Has been cancelled
wai-app and Create / wai-app · does this change touch it (push) Has been cancelled
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Has been cancelled
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Has been cancelled
wai-audit collector and player integration / does this change touch it (push) Has been cancelled
wai-audit collector and player integration / collector · linux (push) Has been cancelled
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Has been cancelled
WAI operation catalogue / does this change touch it (push) Has been cancelled
WAI operation catalogue / the catalogue and every door · linux (push) Has been cancelled
wai-fleet service / does this change touch it (push) Has been cancelled
wai-fleet service / service · linux (push) Has been cancelled
wai-fleet service / service · macos (push) Has been cancelled
wai-ledger service / does this change touch it (push) Has been cancelled
wai-ledger service / service · linux (push) Has been cancelled
wai-ledger service / service · macos (push) Has been cancelled
wai-quantum for JavaScript / does this change touch it (push) Has been cancelled
wai-quantum for JavaScript / javascript · linux (push) Has been cancelled
wai-quantum studio and desktop / does this change touch it (push) Has been cancelled
wai-quantum studio and desktop / studio · browser (push) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (push) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (push) Has been cancelled
wai-quantum studio and desktop / desktop app · windows (push) Has been cancelled
wai-sink-android native sink library / does this change touch it (push) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Has been cancelled
wai-sink-swift native sink package / does this change touch it (push) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Has been cancelled
WAI Studio / does this change touch it (push) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (push) Has been cancelled
WAI Studio / Studio in WebKit · linux (push) Has been cancelled
wai-key-proxy / does this change touch it (push) Has been cancelled
wai-key-proxy / proxy · linux (push) Has been cancelled
wai: a C2PA Manifest Store bound to a stored WAI1 or WAI2 envelope, and to the receipt that delivered it
A .wai file can now be a C2PA asset without changing an envelope byte. extensions/c2pa-binding.md
registers the record `wai.asset.c2pa`: a C2PA Manifest Store served beside the object at
<cid>.c2pa (application/c2pa, C2PA 2.4 §11.4 and §15.5.3.1; an object's response may name it with
Link rel="c2pa-manifest", §15.5.3.2), never inside it, so the object's content hash, its receipts
and its head proof stay as they were. http-delivery §8.9 gives the location.

The store is live provenance's profile (JUMBF layout, claim, EdDSA COSE claim signature, X.509
chain) with three assertions: c2pa.hash.data over every byte of the envelope with no exclusions
and an empty pad (§18.5); c2pa.actions.v2 with the source type the signer states; and
science.transaction.wai.envelope, which names the envelope's content hash, its capabilities (a
WAI2's in table order) and the JWP group receipt it was delivered under, by link hash (also the
name of its rcpt/ file), with that receipt's publisher key. The receipt must be in the labelled
payload, whose link hash covers its parent. The manifest identifier is derived from the envelope,
the receipt and the claim signer's certificate. A verifier checks the claim and chain
(live-provenance §11.2 steps 1-6), the assertions, the identifier, the data hash, the content hash
and capabilities, the receipt's link hash, signature and publisher, and the envelope's object
receipt under it: seventeen reasons, each with its C2PA §15 code where C2PA gives one.

The reference is the c2pa_envelope module of wai-rs (feature c2pa_envelope; writer
c2pa_envelope::sign); the corpus is live-conformance/c2pa-envelope/ (stores bound to a WAI1 and to
a WAI2 of one picture at two sizes, 27 negatives covering every reason), written from fixed seeds
by wai_c2pa_envelope_vectors; c2pa_live_verify.py, the second implementation, now also verifies
it: 29 vectors agree, 26 of 26 mutated copies are refused and 17 of 17 weakened verifiers are
caught. Fourteen faults planted in the reference (each check of the verification skipped in turn,
a legacy receipt, bytes after the envelope, a padded data hash, the identifier without its
signer) each fail its tests. The C2PA Rust library (c2pa 0.91.7) reads both good stores beside
their envelopes as Trusted with assertion.dataHash.match, and reports assertion.dataHash.mismatch
when one envelope byte changes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 10:50:25 -05:00
..
store.c2pa wai: a C2PA Manifest Store bound to a stored WAI1 or WAI2 envelope, and to the receipt that delivered it 2026-11-09 10:50:25 -05:00