code wiki / (root) / _nx_pub_from_priv_isolated_test.nx

_nx_pub_from_priv_isolated_test.nx source

↩ module page · 50 lines · 1937 B

1// SITES-LIVE 2026-05-27: x509_build_self_signed diagnostic 2import "nx_syscalls.nx" 3import "nx_csprng.nx" 4import "nx_ed25519_signature.nx" 5import "hub/nx_x509_build.nx" 6 7func _puts(s: *u8, n: i64) -> i64 { sys_write(2, s, n); return 0 } 8func _putd(v: i64) -> i64 { 9 if v < 0 { _puts("-" as *u8, 1); return _putd(0 - v) } 10 if v == 0 { _puts("0" as *u8, 1); return 0 } 11 if v >= 10 { _putd(v / 10) } 12 let buf: *u8 = sys_mmap(1) 13 buf[0] = (0x30 + (v % 10)) as u8 14 sys_write(2, buf, 1) 15 return 0 16} 17 18func main() -> i64 { 19 let priv_32: *u8 = sys_mmap(32) 20 nx_csprng_fill(priv_32, 32) 21 let pub_32: *u8 = sys_mmap(32) 22 if ed25519_pub_from_priv(priv_32, pub_32) != 0 { _puts("pub_from_priv FAIL\n" as *u8, 19); return 11 } 23 24 let cn: *u8 = "test.example.com" as *u8 25 let cn_n: i64 = 16 26 let san_ptrs: *i64 = (sys_mmap(8)) as *i64 27 let san_lens: *i64 = (sys_mmap(8)) as *i64 28 san_ptrs[0] = ("test.example.com" as *u8) as i64 29 san_lens[0] = 16 30 31 let nb: *u8 = "20260527000000Z" as *u8 32 let na: *u8 = "20270527000000Z" as *u8 33 34 let inp: *NxX509BuildInputs = (sys_mmap(128)) as *NxX509BuildInputs 35 let in_rc: i64 = nx_x509_inputs_init(inp, cn, cn_n, 36 san_ptrs, san_lens, 1, 37 priv_32, pub_32, 38 nb, na, 12345) 39 _puts("inputs_init rc=" as *u8, 15); _putd(in_rc); _puts("\n" as *u8, 1) 40 if in_rc != NX_X509_OK { return 12 } 41 42 let cert_der: *u8 = sys_mmap(NX_X509_MAX_DER_OUT) 43 let cert_n_p: *i64 = (sys_mmap(8)) as *i64 44 cert_n_p[0] = 0 45 let bld_rc: i64 = nx_x509_build_self_signed(inp, cert_der, NX_X509_MAX_DER_OUT, cert_n_p) 46 _puts("build_self_signed rc=" as *u8, 21); _putd(bld_rc); _puts(" cert_n=" as *u8, 8); _putd(cert_n_p[0]); _puts("\n" as *u8, 1) 47 if bld_rc != NX_X509_OK { return 13 } 48 _puts("ALL PASS\n" as *u8, 9) 49 return 0 50}