mirror of
https://github.com/fenleon/open-madrid.git
synced 2026-10-22 16:12:35 +00:00
Watchpoint-proven 2026-10-17: ValidationCtx::new draws 16 fresh bytes, SBOXes them (rodata 0x2248f9) into ctx[0x30], and key_establishment keys the reply under establish_key(ctx[0x30]) — create_rounds reads arg[0:16]. The draw is the request blob's plain32[5:21] (payload-mapped field32), so the server recomputes it; pearKey16 was never the establish input. - PearTablesData: append the 0x2248f9 S-BOX (image 16144 -> 16400 B, chunk list regenerated as one stream) - PearTables.nacSbox accessor - NacValidation.keyEstablishmentFull(sessionInfo, establishSeed16): establish with establishKey(SBOX(seed)) - NacRequestBlob.buildWithSeed(): expose the seed (build() unchanged) - NacMint param rename; tests: live-vector SBOX check + SBOX^-1 model seeds Live probe: our blob -> rustls POST -> reply decrypts to 0240 under establishKey(SBOX(our seed)) — first correctly-keyed establishment from our client.