Add keys() to IOStream trait — streams know their own decrypt keys

- IOStream::keys() default returns DecryptKeys::None
- IsoStream and DiscStream override with real AACS/CSS keys
- Pipeline calls input.keys() instead of separate scan_keys()
- Streams are self-contained: read bytes + provide keys
This commit is contained in:
MattJackson
2026-04-14 23:42:14 +00:00
parent 2f52188f77
commit fbdfccdd83
3 changed files with 20 additions and 4 deletions
+8 -2
View File
@@ -36,8 +36,8 @@ pub mod resolve;
pub mod stdio;
pub mod ts;
pub use disc::{DiscOptions, DiscStream};
pub use iso::IsoStream;
pub use disc::{DiscOpenResult, DiscStream};
pub use iso::{IsoSectorReader, IsoStream};
pub use m2ts::M2tsStream;
pub use mkvstream::MkvStream;
pub use network::NetworkStream;
@@ -63,6 +63,12 @@ pub trait IOStream: Read + Write {
fn total_bytes(&self) -> Option<u64> {
None
}
/// Decryption keys for this stream. Default: no encryption.
/// Overridden by DiscStream and IsoStream for AACS/CSS.
fn keys(&self) -> crate::decrypt::DecryptKeys {
crate::decrypt::DecryptKeys::None
}
}
// Combined traits for internal trait objects.