- Unit_Key_RO.inf: proper parser matching libaacs format (uk_pos, stride, AACS1 48-byte / AACS2 64-byte key spacing, title→CPS unit mapping) - Disc hash: SHA1 of Unit_Key_RO.inf for KEYDB lookup - MKB processing: processing keys + subdiff records + cvalues → media key (verify media key record with 12-byte zero check) - Content Certificate parser: detect AACS version + bus encryption flag - resolve_keys(): full 3-path chain: 1. disc hash → KEYDB → VUK (fast, 99% of discs) 2. KEYDB media key + VID → VUK 3. MKB + processing keys → media key → VUK - setup_aacs() now reads Unit_Key_RO.inf + Content Cert from disc via UDF - 31 tests passing
39 lines
859 B
TOML
39 lines
859 B
TOML
[package]
|
|
name = "libfreemkv"
|
|
version = "0.3.0"
|
|
edition = "2021"
|
|
license = "AGPL-3.0-only"
|
|
description = "Open source raw disc access library for optical drives"
|
|
repository = "https://github.com/freemkv/libfreemkv"
|
|
keywords = ["bluray", "uhd", "optical", "scsi", "disc"]
|
|
categories = ["hardware-support", "multimedia"]
|
|
|
|
[dependencies]
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
sha1 = "0.10"
|
|
aes = "0.8"
|
|
cbc = "0.1"
|
|
flate2 = "1"
|
|
num-bigint = "0.4"
|
|
num-traits = "0.2"
|
|
num-integer = "0.1"
|
|
rand = "0.8"
|
|
cmac = "0.7"
|
|
zip = { version = "2", default-features = false, features = ["deflate"] }
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
libc = "0.2"
|
|
|
|
[[bin]]
|
|
name = "freemkv-info"
|
|
path = "src/bin/freemkv_info.rs"
|
|
|
|
[[bin]]
|
|
name = "freemkv-test"
|
|
path = "src/bin/freemkv_test.rs"
|
|
|
|
[[bin]]
|
|
name = "aacs-test"
|
|
path = "src/bin/aacs_test.rs"
|