wai/wai-audit is the reference collector of stream-audit §12: it verifies each bundle a player posts (wai-rs stream_audit), stores the accepted ones one file per session (a different record of a stored session is refused audit_session_duplicate), takes Event-mode CMCD batches as advisory telemetry, and serves each channel's report signed with its key. Limits per client (an IPv4 address or an IPv6 /64), per route body limits, CORS for the configured page origins. The CLI also verifies a bundle, recomputes a report from a data directory, and checks a served report against its bundles. Its tests post every corpus session and require the corpus's outcome, and require the stored sessions to report exactly the corpus's served reports. web/audit.js is the player integration: it hashes each object with WebCrypto, signs the acknowledgements, claims and session record with WebCrypto's Ed25519, computes the settlement tree root with a one-chunk BLAKE3 of its own, records spans, ads, the log and its CMCD batch. Its Node tests drive it with the corpus's inputs and require the corpus's records byte for byte. adapter-tap.js wraps fetch and XMLHttpRequest for any player; adapter-hlsjs.js wraps a player's loader class. Co-Authored-By: Claude Opus 5.5 <[email protected]>
25 lines
937 B
TOML
25 lines
937 B
TOML
[package]
|
|
name = "wai-audit"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
rust-version = "1.97"
|
|
license = "Apache-2.0"
|
|
description = "The reference collector of WAI's stream audit (extensions/stream-audit.md): it verifies each session bundle a player sends, stores the accepted ones one per session, takes Event-mode CMCD batches, and serves each channel's report signed with its key, which anyone holding the stored bundles recomputes byte for byte."
|
|
repository = "https://git.transaction.science/Transaction-Science/open-standards"
|
|
publish = false
|
|
|
|
[dependencies]
|
|
axum = "0.8"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "sync", "time"] }
|
|
serde_json = "1"
|
|
ed25519-dalek = "2"
|
|
getrandom = "0.4"
|
|
wai = { path = "../wai-rs", default-features = false, features = ["stream_audit"] }
|
|
|
|
[dev-dependencies]
|
|
tower = { version = "0.5", features = ["util"] }
|
|
http-body-util = "0.1"
|
|
sha2 = "0.10"
|
|
|
|
[profile.release]
|
|
lto = "thin"
|