Files
open-madrid/registration
fenleon bd6a9882a5 registration: key the EstablishKeyResponse under establishKey(SBOX(draw))
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.
2026-10-17 17:48:31 +02:00
..