css: auth primitives operate on &mut dyn ScsiTransport; clean up bus_auth
Thread &mut dyn ScsiTransport through unlock_css_reads and its bus-auth / disc-key primitives instead of &mut Drive — they only ever issued SCSI via drive.scsi_mut(), so this is mechanical and lossless, and it makes the CSS unlock speak the same transport interface as the registry Unlocker trait (prerequisite for CSS becoming a uniform unlocker). Also clean up the badly-named, half-dead bus_auth: - rename bus_auth -> establish_authenticated_session: it is run for its side effect (sets the drive's ASF=1, unlocking scrambled-sector reads), which the name now states. - drop the derived CSS bus key from the return + computation: it had no consumer (descrambling is keyless via the Stevenson attack), so it was dead crypto computed on every DVD unlock. Return just the negotiated AGID, which the caller genuinely needs for the best-effort disc-key REPORT KEY.
This commit is contained in:
+1
-1
@@ -1478,7 +1478,7 @@ impl Disc {
|
||||
// unreliable). The real descramble key is recovered from the
|
||||
// scrambled movie data itself via the known-plaintext attack — no
|
||||
// player keys, no disc-key crack, no REPORT-KEY-derived title key.
|
||||
if let Err(e) = crate::css::auth::unlock_css_reads(session, unlock_lba) {
|
||||
if let Err(e) = crate::css::auth::unlock_css_reads(session.scsi_mut(), unlock_lba) {
|
||||
tracing::warn!(
|
||||
target: "freemkv::scan",
|
||||
error_code = e.code(),
|
||||
|
||||
Reference in New Issue
Block a user