code wiki / (root) / nx_p384_modn.nx

nx_p384_modn.nx

buildroot/runtime/nx_p384_modn.nx

6343 B227 linesdepth 4pulls 4 transitivereach 532 importersview sourcekind tooltopic p384
docsdependenciesstructsconstsfunctions

about

nx_p384_modn.nx -- NIST P-384 scalar arithmetic mod n. n = 0xffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973 (FIPS 186-5 D.1.2.4 -- order of the P-384 base point G). Mirror of nx_p256_modn.nx on the 12-limb / 384-bit path. Same shape -- add / sub / neg / reduce / mul / sq / inv, all mod n. Bit-by-bit shift-and-subtract reduction for mul (mirror of p384_field_mul approach -- portable, no Solinas). API: p384_modn_load_n(out) p384_modn_load_n_minus_2(out) p384_modn_zero / one / copy / eq (wrappers over u384_*) p384_modn_add(r, a, b) r = (a + b) mod n p384_modn_sub(r, a, b) r = (a - b) mod n p384_modn_neg(r, a) r = (-a) mod n p384_modn_reduce(r, a) r = a mod n (single-subtract) p384_modn_mul(out_12, a, b) out = (a * b) mod n p384_modn_sq(out, a) out = (a * a) mod n p384_modn_inv(out, a) out = a^(-1) mod n (Fermat) license_tier: INDEPENDENT_REDERIVE genealogy_id: international-research-sources/nist/fips_186_5 lineage_id: nishi_p384_modn_q10

dependencies 3 imports · 5 importers

nx_syscalls.nx nx_u384.nx nx_u384_mul.nx nx_p384_modn.nx nx_ecdsa_p384.nx nx_ecdsa_p384_bisect_test.nx nx_p384_ecdh.nx nx_p384_modn_test.nx nx_p384_scalar_mul_test.nx

imports: nx_syscalls.nxnx_u384.nxnx_u384_mul.nx

imported by: nx_ecdsa_p384.nxnx_ecdsa_p384_bisect_test.nxnx_p384_ecdh.nxnx_p384_modn_test.nxnx_p384_scalar_mul_test.nx

structs

none

consts

none

functions

40func p384_modn_load_n(out: *i64) -> i64
57func p384_modn_load_n_minus_2(out: *i64) -> i64
called by 1: p384_modn_inv
73func p384_modn_zero(out: *i64) -> i64 { return u384_zero(out) }
calls 1: u384_zero
74func p384_modn_one(out: *i64) -> i64 { return u384_one(out) }
called by 1: p384_modn_inv calls 1: u384_one
75func p384_modn_copy(out: *i64, src: *i64) -> i64 { return u384_copy(out, src) }
calls 1: u384_copy
76func p384_modn_eq(a: *i64, b: *i64) -> i64 { return u384_eq(a, b) }
79func p384_modn_add(r: *i64, a: *i64, b: *i64) -> i64
95func p384_modn_sub(r: *i64, a: *i64, b: *i64) -> i64
105func p384_modn_neg(r: *i64, a: *i64) -> i64
118func p384_modn_reduce(r: *i64, a: *i64) -> i64
129func u384_wide_shr_1_inplace(buf: *i64) -> i64
called by 1: p384_modn_mul
142func u384_wide_sub_inplace(a: *i64, b: *i64) -> i64
called by 1: p384_modn_mul
160func p384_modn_mul(out_12: *i64, a: *i64, b: *i64) -> i64
191func p384_modn_sq(out: *i64, a: *i64) -> i64
called by 1: p384_modn_inv calls 1: p384_modn_mul
195func p384_modn_bit_at(limbs: *i64, bit_pos: i64) -> i64
called by 1: p384_modn_inv
203func p384_modn_inv(out: *i64, a: *i64) -> i64
225func main() -> i64