Commit Graph
9 Commits
Author SHA1 Message Date
Matthew Jackson 3d4567a9ec v1.0.0-rc.5.2: bump version (unified release) 2026-06-24 17:19:59 -07:00
Matthew Jackson 50efc5f416 v1.0.0-rc.5.1: bump ld version + libfreemkv dep (exact) 2026-06-24 14:47:16 -07:00
Matthew Jackson 2b5a71422a v1.0.0-rc.5: bump ld version + libfreemkv dep (exact) 2026-06-24 10:41:57 -07:00
Matthew Jackson 8a5ab9f27d Fix rc5 audit findings: exact libfreemkv pin, cdb test coverage
- ld/Cargo.toml: pin libfreemkv = "=1.0.0-rc.4.3" (exact, fail-closed)
  instead of the bare caret that accepted later 1.0.0 prereleases.
- ld/src/cdb.rs: replace the duplicate (2,0x44) assertion with a real
  wrong-mode/right-buffer case (0,0x77) so the 'Wrong mode, right buffer
  id' comment is actually exercised.
2026-06-23 19:11:25 -07:00
Matthew Jackson ef3a6fe42d ld: require libfreemkv 1.0.0-rc.4.3 exactly (fail-closed, not caret floor) 2026-06-23 15:49:55 -07:00
Matthew Jackson 15e263451e mt1959_b: per-drive fw_verify_cdb + correct firmware length; v1.0.0-rc.4.3
The variant-B firmware load hardcoded one drive's F1 vendor-verify token
and a fixed 0x9C0 firmware size. Across the 140 B drives the verify CDB
has 39 distinct per-drive values, and the real firmware length is encoded
in each drive's MODE SELECT CDB (2192..2528 bytes) — so the constants were
wrong for ~139 of 140 drives and truncated 13.

- DriveProfile gains fw_verify_cdb (the per-drive 0xF1 verify).
- variant_b uploads firmware.len() (now the correct per-drive size from
  the regenerated profiles.json) and issues profile.fw_verify_cdb, falling
  back to the const only for legacy profiles.
- profiles.json regenerated: 79 firmware fields corrected (13 truncated
  recovered to full length, 66 over-reads trimmed).
- Adds a recording-transport regression test asserting the profile's F1
  verify is issued (not the const) and MODE SELECT carries firmware.len().
2026-06-23 15:40:38 -07:00
Matthew Jackson feacfbb10b ld: add public unlock-CDB seam for external consumers
Expose is_unlock_read_buffer() and UNLOCK_MARKER so consumers (bdemu)
can recognise and answer the LibreDrive unlock READ_BUFFER handshake
without open-coding the variant CDB shapes or the verification marker.
These handshake internals must live only in freemkv-unlock-ld.
2026-06-22 17:02:52 -07:00
Matthew Jackson dd5ebb599f docs: generic repo README; ld README keeps specifics + MakeMKV/Mike Chen credit 2026-06-22 16:53:14 -07:00
Matthew Jackson 607782ab64 Restructure into freemkv-unlock workspace (ld member + room for more)
libfreemkv owns the Unlocker trait + registry; this repo holds the concrete
unlocker plugins. LibreDrive moves to the ld/ member (package freemkv-unlock-ld
unchanged). Workspace root + repo README describe the general-unlocker model;
adding an unlocker = a new member + one register_unlocker line in the consumer.
libfreemkv dep is the crates.io version; local dev resolves it via the
gitignored .cargo/config.toml patch.
2026-06-22 16:02:57 -07:00