code wiki / (root) / nx_ecdsa_p384_bisect_test.nx

nx_ecdsa_p384_bisect_test.nx

buildroot/runtime/nx_ecdsa_p384_bisect_test.nx

8191 B241 linesdepth 11pulls 13 transitivereach 0 importersview sourcekind gate/prooftopic ecdsa
docsdependenciesstructsconstsfunctions

about

nx_ecdsa_p384_bisect_test.nx -- bisect the verify failure on RFC 6979 §A.2.6. Compares each substrate intermediate to the Python golden bytes. Exit code identifies the first divergent step. Step verdicts (returned as exit code): 0 -- all steps match (verify would pass) 1 -- s_inv diverges (p384_modn_inv broken at this scale) 2 -- u1 diverges (p384_modn_mul broken or e_n wrong) 3 -- u2 diverges (same primitives, different input) 4 -- u1G.x diverges (scalar_mul or point_add broken) 5 -- u2Q.x diverges (same scalar_mul, non-G base) expect_exit: 0 license_tier: ORIGINAL

dependencies 10 imports · 0 importers

nx_syscalls.nx nx_u384.nx nx_p384_field.nx nx_p384_field_mul.nx nx_p384_field_inv.nx nx_p384_modn.nx nx_p384_point.nx nx_p384_point_add.nx nx_p384_scalar_mul.nx nx_ecdsa_p384.nx nx_ecdsa_p384_bisect_test.nx

imports: nx_syscalls.nxnx_u384.nxnx_p384_field.nxnx_p384_field_mul.nxnx_p384_field_inv.nxnx_p384_modn.nxnx_p384_point.nxnx_p384_point_add.nxnx_p384_scalar_mul.nxnx_ecdsa_p384.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main u384_alloc nx_u384_scratch nx_u384_scratch_init sys_mmap sys_write sys_exit sys_mmap ↻ p384_modn_inv u384_alloc ↻ p384_modn_load_n_minus_2 u384_copy p384_modn_one u384_one u384_zero p384_modn_sq p384_modn_mul u384_wide_alloc sys_mmap ↻ u384_alloc ↻ p384_modn_load_n u384_mul_wide u384_wide_cmp u384_wide_sub_inplace u384_wide_shr_1_inplace u384_wide_copy_low p384_modn_bit_at p384_modn_mul ↻ dump_hex sys_mmap ↻ sys_write ↻ limbs_eq p384_modn_reduce u384_alloc ↻ p384_modn_load_n ↻ u384_copy ↻ u384_cmp u384_sub_with_borrow p384_modn_mul ↻ p384_point_alloc

structs

none

consts

none

functions

28func dump_hex(label0: i64, label1: i64, buf: *i64) -> i64
called by 1: main calls 2: sys_mmapsys_write
51func limbs_eq(a: *i64, b: *i64) -> i64
called by 1: main
60func main() -> i64