_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}