Move the keydb save/validation/atomic-write path out of libfreemkv onto KeydbSource. New KeydbSource::save(bytes) validates + decompresses (zip / gz / plain, decompressed-size capped) and crash-safely writes to the source's OWN path (sibling-temp + fsync + rename + parent-dir fsync) — not a hardcoded default, so the caller chooses the destination. KeydbSource::update(fetch, url) calls an INJECTED fetch closure then save, keeping this crate transport-agnostic on the update path (the app supplies its own TLS / SSRF-guarded transport). UpdateResult moves here and is re-exported. Add flate2 + zip (already in the resolved graph via libfreemkv) for decompression; no new HTTP stack.
617 B
617 B
Changelog
[1.1.0-beta.1] — UNRELEASED
Added
KeydbSourcenow owns keydb save + update (atomic write to the source's own path); honors the caller-supplied location.
Fixed
- Processing-Key decryption restored. A keydb Processing Key is again driven through the full AACS chain — PK → Media Key (against this disc's own MKB) → Volume Unique Key (with the disc Volume ID) → unit keys — so discs that ship only a Processing Key decrypt again. Stored Media Keys and Volume Unique Keys are still honored directly. (Cross-disc Media-Key reuse remains intentionally disabled.)