Files
freemkv-unlock/Cargo.toml
T
Matthew Jackson f0d936f4b6 Move to rand 0.10 and aes 0.9
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.
2026-08-09 17:50:01 -07:00

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"