AACS 2.0 full pipeline: handshake, bus key, decrypt, transparent API
- aacs.rs: content decryption (AES-CBC aligned units, bus decrypt, VUK derivation, unit key decrypt). 11 tests including synthetic roundtrip. - aacs_handshake.rs: SCSI authentication (ECDH on AACS 160-bit curve, ECDSA sign/verify, AES-CMAC, bus key derivation, read_data_key). 14 tests including EC order, ECDH shared secret, cert verification. - disc.rs: transparent API — Disc::scan() detects AACS, authenticates, derives keys internally. ContentReader decrypts on the fly. App never sees AACS details. - error.rs: AacsError (E7000) variant BF v12 complete: 284 unique matches from 8 AWS instances.
This commit is contained in:
@@ -46,6 +46,9 @@ pub enum Error {
|
||||
|
||||
// 6xxx — Disc format errors
|
||||
DiscError { detail: String },
|
||||
|
||||
// 7xxx — AACS errors
|
||||
AacsError { detail: String },
|
||||
}
|
||||
|
||||
impl Error {
|
||||
@@ -65,6 +68,7 @@ impl Error {
|
||||
Error::ScsiTimeout { .. } => 4001,
|
||||
Error::IoError { .. } => 5000,
|
||||
Error::DiscError { .. } => 6000,
|
||||
Error::AacsError { .. } => 7000,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -92,6 +96,7 @@ impl std::fmt::Display for Error {
|
||||
Error::ScsiTimeout { opcode } => write!(f, "E4001: SCSI 0x{opcode:02x} timeout"),
|
||||
Error::IoError { source } => write!(f, "E5000: {source}"),
|
||||
Error::DiscError { detail } => write!(f, "E6000: disc: {detail}"),
|
||||
Error::AacsError { detail } => write!(f, "E7000: AACS: {detail}"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user