code wiki / _hdl_build / nx_vault_shamir.nx
nx_vault_shamir.nx
buildroot/runtime/_hdl_build/nx_vault_shamir.nx
about
nx_vault_shamir.nx -- sovereign SHAMIR threshold secret sharing (HashiCorp Vault "Shamir seal/unseal" gap
from vault_capability_census.tsv) -- the iconic multi-operator unseal: split a master key into N shares;
ANY K reconstruct it; K-1 shares reveal a WRONG value (no quorum -> no unseal). Real finite-field math
over GF(p), p = 2^31-1 (Mersenne prime): products of two field elements stay < 2^62 so they fit i64 with
no overflow. Shares = poly(1..N); reconstruct = Lagrange interpolation at x=0. license_tier: ORIGINAL
dependencies 1 imports · 3 importers
imports: nx_syscalls.nx
imported by: nx_social_recovery.nxnx_vault_shamir_test.nxnx_vault_suite_test.nx
structs
| none |
consts
| 8 | const SH_P: i64 = 2147483647 // 2^31 - 1 (Mersenne prime); secrets must be < SH_P |
functions
| 10 | func sh_mod(x: i64) -> i64 { var r: i64 = x % SH_P; if r < 0 { r = r + SH_P } return r } |
| 11 | func sh_add(a: i64, b: i64) -> i64 { return sh_mod(a + b) } |
| 12 | func sh_sub(a: i64, b: i64) -> i64 { return sh_mod(a - b) } |
| 13 | func sh_mul(a: i64, b: i64) -> i64 { return sh_mod(a * b) } // a,b < 2^31 -> a*b < 2^62, fits i64 |
| 16 | func sh_inv(a: i64) -> i64 |
| 33 | func sh_eval(coeffs: *i64, k: i64, x: i64) -> i64 |
| 41 | func sh_reconstruct(xs: *i64, ys: *i64, k: i64) -> i64 |