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.
18 lines
617 B
Markdown
18 lines
617 B
Markdown
# Changelog
|
|
|
|
## [1.1.0-beta.1] — UNRELEASED
|
|
|
|
### Added
|
|
|
|
- `KeydbSource` now 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.)
|