mirror of
https://github.com/freemkv/freemkv-unlock.git
synced 2026-10-07 18:13:11 +00:00
Both are API renames rather than behaviour changes, but this is the AACS and CSS crypto path, so it is verified by output rather than by the fact that it compiles. rand: `RngCore` no longer sits at the crate root -- `fill_bytes` moved to the re-exported `Rng` trait -- and `thread_rng()` is now `rng()`. aes: the cipher traits gained their `BlockCipher` prefix and `generic_array::GenericArray` became `Array`. The obvious translation uses `Array::from_slice`, which is deprecated in the new version and would fail clippy's `-D warnings`; these use the `From<[T; N]>` conversion the crate points at instead. The proof this is byte-exact is `test_aes_cmac_nist_kat_full_block`, which checks the exact MAC from NIST SP 800-38B Appendix D.1 -- a wrong byte order or a mis-sized array cannot produce that value. All 95 tests pass in both debug and release.
29 lines
923 B
TOML
29 lines
923 B
TOML
[package]
|
|
name = "freemkv-unlock"
|
|
version = "1.6.2"
|
|
edition = "2024"
|
|
rust-version = "1.97"
|
|
license = "MIT"
|
|
description = "Unlock layer for the freemkv toolchain: the Unlocker contract + self-contained firmware/AACS/CSS unlocker modules. libfreemkv depends on this and dispatches via all_unlockers()."
|
|
repository = "https://github.com/freemkv/freemkv-unlock"
|
|
# NEVER crates.io: this crate carries drive firmware. Consumed only by git tag.
|
|
publish = false
|
|
|
|
[features]
|
|
# Off by default. Exposes ld's unlock-handshake wire format (`UNLOCK_MARKER`,
|
|
# `is_unlock_read_buffer`) for the bdemu test-emulator, which impersonates an
|
|
# ld-unlockable drive. Real clients never enable it and keep the generic API.
|
|
emulation = []
|
|
|
|
[dependencies]
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
base64 = "0.23.1"
|
|
tracing = "0.1"
|
|
num-bigint = "0.5"
|
|
num-traits = "0.2"
|
|
sha1 = "0.10"
|
|
sha2 = "0.11"
|
|
aes = "0.9"
|
|
rand = "0.10"
|