nx_u4096.nx
buildroot/runtime/nx_u4096.nx
about
nx_u4096.nx -- 4096-bit unsigned big-int (128 × 32-bit limbs).
Mirrors nx_u2048 / nx_u384 with limb count 128. Needed for RSA-4096
signature verification against modern Web PKI roots: ISRG Root X1
(Let's Encrypt's root) is RSA-4096; without this primitive the LE
cert chain cannot validate, blocking L11 step 2d -> 2e of the
nishifamily ACME arc.
Layout: 128 i64 slots, low 32 bits used per limb. Limb 0 LSB.
Byte serialization: 512-byte BE (DER) layout.
Function names use the `u4096_` prefix to avoid the silent-
shadowing bug class fixed 2026-05-20 in nx_sha256/nx_sha512.
license_tier: INDEPENDENT_REDERIVE
genealogy_id: international-research-sources/ietf/rfc_8017 + nist/fips_186_5
lineage_id: nishi_u4096_q1
dependencies 1 imports · 21 importers
diagram shows first 10 each side; +0 more imports, +11 more importers in the complete lists below.
imports: nx_syscalls.nx
imported by: nx_rsa4096_mod.nxnx_rsa4096_mod_exp.nxnx_rsa4096_mod_test.nxnx_rsa4096_mont.nxnx_rsa4096_mont_gate.nxnx_rsa_pkcs1_v1_5_k.nxnx_rsa_pkcs1_v1_5_k_test.nxnx_rsa_pkcs1_v1_5_sha256_4096.nxnx_rsa_pkcs1_v1_5_sha256_4096_real_test.nxnx_rsa_pkcs1_v1_5_sha384.nxnx_rsa_pkcs1_v1_5_sha384_4096_test.nxnx_rsa_pkcs1_v1_5_sha512.nxnx_tls12_client.nxnx_tls12_mutant.nxnx_tls12_req.nxnx_u4096_mul.nxnx_u4096_mul_test.nxnx_u4096_test.nxnx_x509_pubkey_rsa_4096.nxnx_x509_verify_rsa_pkcs1_sha256_4096.nxnx_x509_verify_under_issuer.nx
structs
| none |
consts
| 27 | const NX_U4096_LIMBS: i64 = 128 |
| 28 | const NX_U4096_BYTES: i64 = 512 |
| 29 | const NX_U4096_LIMB_BITS: i64 = 32 |
| 30 | const NX_U4096_LIMB_MASK: i64 = 0xFFFFFFFF |
functions
| 32 | func u4096_alloc() -> *i64 called by 17: rsa4096_modrsa4096_mod_expmainrsa4096_mont_r2rsa4096_mod_exp_montmain+11 calls 1: sys_mmap |
| 48 | func u4096_free(p: *i64) -> i64 |
| 54 | func u4096_zero(out: *i64) -> i64 |
| 63 | func u4096_one(out: *i64) -> i64 |
| 69 | func u4096_copy(out: *i64, src: *i64) -> i64 |
| 79 | func u4096_load_be(out: *i64, bytes: *u8) -> i64 |
| 94 | func u4096_store_be(bytes: *u8, src: *i64) -> i64 |
| 109 | func u4096_add_with_carry(out: *i64, a: *i64, b: *i64) -> i64 called by 1: main |
| 121 | func u4096_sub_with_borrow(out: *i64, a: *i64, b: *i64) -> i64 |
| 138 | func u4096_cmp(a: *i64, b: *i64) -> i64 |
| 150 | func u4096_is_zero(a: *i64) -> i64 |
| 161 | func u4096_eq(a: *i64, b: *i64) -> i64 called by 1: main |
| 174 | func u4096_shl1(out: *i64) -> i64 |
| 188 | func u4096_shr1(out: *i64) -> i64 called by 1: main |
| 202 | func u4096_get_bit(a: *i64, bit: i64) -> i64 called by 1: main |
| 208 | func main() -> i64 |