AACS: add KeySource trait + DiscInputs; Media key carries a candidate pool
The library now describes the key-source abstraction it consumes, while the concrete sources live in a companion crate. A KeySource looks a disc up from its DiscInputs (disc hash, volume id, MKB, Unit_Key_RO.inf) and returns a Key; the library derives down and decrypts. Sources do no derivation. Disc::inputs() exposes those inputs from a scanned disc. Key::Media now carries a Vec of candidate media keys rather than one: a media key is MKB-scoped, so a source hands its whole pool and the library picks the one that verifies against the disc's MKB. That mirrors Device/Processing and keeps key selection (a derivation step) inside the library.
This commit is contained in:
@@ -85,6 +85,7 @@ pub(crate) mod identity;
|
||||
pub(crate) mod ifo;
|
||||
pub mod io;
|
||||
pub mod keydb;
|
||||
pub mod keysource;
|
||||
pub mod labels;
|
||||
pub(crate) mod mpls;
|
||||
pub mod mux;
|
||||
@@ -174,6 +175,7 @@ pub use disc::{
|
||||
LabelPurpose, LabelQualifier, PatchOptions, PatchOutcome, Resolution, SampleRate, ScanOptions,
|
||||
Stream, SubtitleStream, SweepOptions, VideoStream, classify_damage,
|
||||
};
|
||||
pub use keysource::{DiscInputs, KeySource};
|
||||
|
||||
// ─── Streams ────────────────────────────────────────────────────────────────
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user