569e23662bb0ba205a611b0919b330249fa928a2
Each unlocker now carries its own stable name() (the single source; apps never hardcode it) and a report-only applies_to() — phase-independent 'would this apply to this drive+disc', distinct from the dispatch-gated matches(). LibreDrive overrides applies_to to report on drive identity regardless of disc kind (its matches() is gated to the Unknown-kind init phase). Enables a registry-driven unlocker matrix.
freemkv-unlock
The unlock layer for the freemkv toolchain.
An unlocker removes a drive-level bus-encryption barrier so the drive serves readable (de-bus'd / de-scrambled) sectors. Content-key decryption is a separate concern — the consumer's job.
This crate defines the Unlocker contract and a generic SCSI transport
contract, and holds the self-contained unlocker modules. The consumer
(libfreemkv) depends on this crate and
dispatches through all_unlockers(); it never names an individual unlocker, and
clients of libfreemkv are oblivious to unlockers entirely (as they are to the
SCSI layer).
for u in freemkv_unlock::all_unlockers() {
if u.matches(&ctx) {
return u.unlock(&mut scsi, &ctx);
}
}
To remove an unlocker, delete its module directory and its one line in
all_unlockers() — nothing else changes.
License: AGPL-3.0-only.
Languages
Rust
100%