1.6.0: version sync + fix stale docs
Bump to 1.6.0 (workspace sync, no functional change). Fix the README example that called the removed matches()/unlock() API — rewrite to the real unlock_features()/unlock_bus() contract (+ ld/README).
This commit is contained in:
@@ -1,5 +1,9 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [1.6.0] — UNRELEASED
|
||||||
|
|
||||||
|
Version sync with the workspace. No functional change in this crate.
|
||||||
|
|
||||||
## [1.5.2] — 2026-07-22
|
## [1.5.2] — 2026-07-22
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "freemkv-unlock"
|
name = "freemkv-unlock"
|
||||||
version = "1.5.2"
|
version = "1.6.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version = "1.86"
|
rust-version = "1.86"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|||||||
@@ -14,9 +14,17 @@ clients of libfreemkv are oblivious to unlockers entirely (as they are to the
|
|||||||
SCSI layer).
|
SCSI layer).
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
|
use freemkv_unlock::UnlockError;
|
||||||
|
|
||||||
|
// Drive-prep: try each unlocker's feature unlock until one claims the drive.
|
||||||
|
// `NotApplicable` means "not this unlocker's drive" — move on; a transport
|
||||||
|
// error means a dead bus — abort. `unlock_bus` follows the same contract for
|
||||||
|
// removing per-disc bus encryption.
|
||||||
for u in freemkv_unlock::all_unlockers() {
|
for u in freemkv_unlock::all_unlockers() {
|
||||||
if u.matches(&ctx) {
|
match u.unlock_features(&mut scsi, &ctx) {
|
||||||
return u.unlock(&mut scsi, &ctx);
|
Ok(unlocked) => return Ok(unlocked),
|
||||||
|
Err(UnlockError::NotApplicable) => continue,
|
||||||
|
Err(e) => return Err(e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
+2
-2
@@ -10,8 +10,8 @@ decryption is a separate concern, handled by the consumer.
|
|||||||
|
|
||||||
Clients never name this module directly —
|
Clients never name this module directly —
|
||||||
[libfreemkv](https://github.com/freemkv/libfreemkv) dispatches through
|
[libfreemkv](https://github.com/freemkv/libfreemkv) dispatches through
|
||||||
`freemkv_unlock::all_unlockers()`, and this module answers `matches()` /
|
`freemkv_unlock::all_unlockers()`, and this module answers `unlock_features()` /
|
||||||
`unlock()` when the drive identity is one it supports.
|
`unlock_bus()` when the drive identity is one it supports.
|
||||||
|
|
||||||
## Scope: non-persistent unlock only
|
## Scope: non-persistent unlock only
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user