v0.30.0: DiscInputs carries the disc's volume label (title)
Add `DiscInputs.volume_label: Option<String>` — the disc's human title (UDF/ISO volume identifier, else BDMV <di:name>), populated by Disc::inputs() from the scan. Identity only, no secret, not used in any AACS derivation; lets a key source forward the title so a key service can catalog disc_hash → title.
This commit is contained in:
@@ -1672,6 +1672,16 @@ impl Disc {
|
||||
// Content samples need the disc reader, which scan does not retain;
|
||||
// the caller fills these for sources that validate against ciphertext.
|
||||
samples: Vec::new(),
|
||||
// Human title: prefer the UDF/ISO volume identifier, fall back to the
|
||||
// BDMV display name. Identity only — a key service may catalog it.
|
||||
volume_label: {
|
||||
let v = self.volume_id.trim();
|
||||
if v.is_empty() {
|
||||
self.meta_title.clone()
|
||||
} else {
|
||||
Some(v.to_string())
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,12 @@ pub struct DiscInputs {
|
||||
/// the disc reader, which the library's scan does not retain — so
|
||||
/// [`crate::Disc::inputs`] leaves it empty for the caller to fill.
|
||||
pub samples: Vec<Vec<u8>>,
|
||||
/// The disc's human title — the UDF/ISO volume identifier (e.g.
|
||||
/// `WICKED_FOR_GOOD`), falling back to the BDMV `<di:name>` when present.
|
||||
/// `None` when not captured. Identity only, no secret; a key service may
|
||||
/// record it (keyed by `disc_hash`) to build a hash→title catalog. Not used
|
||||
/// in any AACS derivation.
|
||||
pub volume_label: Option<String>,
|
||||
}
|
||||
|
||||
/// A key source: a stateful provider that hands a disc's candidate [`Key`]s out
|
||||
|
||||
Reference in New Issue
Block a user