| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
wai-key-proxy / does this change touch it (pull_request) Has been cancelled
wai-key-proxy / proxy · linux (pull_request) Has been cancelled
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-quantum studio and desktop / does this change touch it (pull_request) Has been cancelled
wai-quantum studio and desktop / studio · browser (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-pack / wai-pack · does this change touch it (pull_request) Has been cancelled
wai-pack / wai-pack · linux (pull_request) Has been cancelled
wai-pack / wai-pack · linux-arm64 (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-pack / wai-pack · independent verifier (Python) (pull_request) Has been cancelled
wai-pack / wai-pack · the floor through a media prober (pull_request) Has been cancelled
wai-pack / wai-pack · dependency licences (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been cancelled
WAI energy receipts / does this change touch it (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / does this change touch it (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · macos (pull_request) Has been cancelled
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
standards workspaces build + test / which workspaces this change touches (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (pull_request) Has been cancelled
A negative control for §8.4 rule 8's first clause on its own: a granted request of a content protection system whose receipt records no answer from the licence server. Falsifying that clause alone had let the corpus pass, the other clauses of the rule catching each earlier control. Co-Authored-By: Claude Opus 5.5 <[email protected]> |
||
| .. | ||
| broken.cpix.xml | ||
| channel.cpix.xml | ||
| encrypted.cpix.xml | ||
| episode.cpix.xml | ||
| film.cpix.xml | ||
| README.md | ||
| vectors.json | ||
live-conformance/keys — key release
The corpus of extensions/key-release.md §12: logs of a
signing proxy, each over commitment lists (WKL1) derived from CPIX documents, with the
outcome its verification reaches (§10).
Log equivalence. For each vector, a conforming key-release verifier given its
authorities, proxies, lists (each named in the top-level lists, as hexadecimal of its
bytes), its cpix documents (each the file file, with the index in lists of the list it is
derived from), its log (form-2 wai.video.keys receipts in the JSON of §8.2, in the order
the proxy signed them) and its tickets (WKT1, hexadecimal) reaches the outcome the vector
states:
refuse: thereason(§11) and where,at:["list", i],["cpix", i],["receipt", i]or["ticket", i](§10.2);accept: for each receipt (§10.3), itsidentity,decision(§7.2) andreleased; thekeysit released, each itskidandkey_commit; and itslicence_expiryandrenewal.
A verifier that reaches another outcome, reason, place or fact does not conform.
The accepted logs give: streaming releases over two content protection systems, forwarded and
answered (release_drm, one receipt carrying a metered figure with its class); an HLS key
file and Clear Key releases by ticket, the key never relayed by the proxy
(release_hls_key_uri, release_clear_key); every refusal of §7.2 checks 1 to 7 (refusals,
expired_entitlement); key rotation over three periods (rotation); offline licences, their
renewal, their count, their lapse and their clamp to the entitlement (offline); and granted
requests the licence server refused or did not answer (upstream_refused). Each n_ vector
is a negative control, refused with a reason of §11; together they give every reason.
Provenance. Generated here: wai_key_release_vectors gen writes every file from logs
authored in code, from fixed seeds. Each principal's Ed25519 key (the key holder, the
entitlement authority, an untrusted authority, the proxy, an untrusted proxy, two devices) is
SHA-256 of a fixed label; each content key, KID and session is SHA-256 of a fixed label,
truncated. Every time is a constant (the corpus's t0 is 2026-10-25T00:00:00Z), every origin
is an .example name (RFC 2606), the three system IDs are values of the DASH-IF registry of
content protection system identifiers, and Ed25519 signing is deterministic (RFC 8032), so
every file is the same bytes on every machine. The CPIX documents are written for the corpus
with their keys in the clear (CPIX §8.1 calls that not recommended outside a test); the
encrypted one holds a cipher value that is SHA-256 of a fixed label and decrypts to nothing.
The licence challenges and licences are fixed strings, never a content protection system's
messages. The generator asserts that each vector reaches the outcome it was written to have,
and that the corpus gives every reason of §11 and every decision of §7.2, before it writes. No
recorded data.
Layout
vectors.json:t0,principals(the keys, by name, informative),listsandvectors.film.cpix.xml,episode.cpix.xml,channel.cpix.xml: the CPIX documents the lists are derived from (channelwith three key periods);encrypted.cpix.xml, a document whose key is encrypted (cpix_unsupported);broken.cpix.xml, one that is not well-formed (cpix_malformed).
The second implementation is ../key_release_verify.py, written
from the extension's text and sharing no code with wai-rs:
python3 -I live-conformance/key_release_verify.py live-conformance/keys