You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add formal correctness proof for the AArch64 mld_rej_uniform_eta4_asm
function, which performs rejection sampling with eta=4 for ML-DSA.
The proof verifies that the assembly implementation correctly:
- Extracts 4-bit nibbles from input bytes
- Filters nibbles < 9 using SIMD comparison + TBL permutation
- Maps accepted values n to (4 - n) as signed 32-bit integers
- Returns at most 256 coefficients with the correct count
Verified against the compiled object code (post-hoc, not trusting the
assembler) using the s2n-bignum ARM verification framework in HOL Light.
All 86 AArch64 instructions are mechanically verified across every
execution path (360+ ARM simulation steps). No CHEAT_TAC remains.
New files:
- mldsa_rej_uniform_eta4.S: standalone assembly for proof bytecodes
- mldsa_rej_uniform_eta4.ml: 547-line HOL Light correctness proof
- mldsa_rej_uniform_eta_table.ml: 256-entry lookup table constants
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Jake Massimo <jakemas@amazon.com>
0 commit comments