AACS complete: Unit_Key_RO.inf parser, disc hash, MKB processing, resolve chain

- 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
This commit is contained in:
MattJackson
2026-04-07 11:13:20 -07:00
parent 985d00f0a4
commit 9825db82aa
4 changed files with 676 additions and 82 deletions
+4
View File
@@ -32,3 +32,7 @@ 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"