open-standards/wai/wai-audit/Cargo.toml
Transaction Science e04d96eba2 wai-audit: the stream audit collector and the player integration
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]>
2026-10-25 21:41:51 -04:00

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"