code wiki / _hdl_build / nx_cert_loader_gate.nx
nx_cert_loader_gate.nx source
↩ module page · 61 lines · 3943 B
1// nx_cert_loader_gate.nx -- gate for the cert data-loader. Writes fixture chain/key files, then asserts cl_load
2// resolves a SNI host (via cr_match) and returns the ACTUAL chain+key bytes -- with anti-spoof carried through and
3// a missing file -> 0 (fail-safe, the daemon uses its default). GREEN iff T1..T5. Sovereign: nx_cert_loader. license_tier: ORIGINAL
4import "nx_cert_loader.nx"
5
6func g_w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
7func g_len(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
8func g_row(name: *u8, ok: i64) -> i64 { if ok == 1 { g_w(" PASS " as *u8) } else { g_w(" FAIL " as *u8) } g_w(name); g_w("\n" as *u8); return ok }
9func g_writef(path: *u8, s: *u8) -> i64 { let fd: i64 = sys_openat_wr(path, 0x180); if fd < 0 { return 0-1 } sys_write(fd, s, g_len(s)); sys_close(fd); return 0 }
10// bytes at ptr (len) == null-terminated expect?
11func g_bytes_eq(ptr: i64, len: i64, exp: *u8) -> i64 {
12 let el: i64 = g_len(exp); if len != el { return 0 }
13 let b: *u8 = ptr as *u8; var i: i64 = 0
14 while i < len { if (b[i] as i64) != (exp[i] as i64) { return 0 } i = i + 1 }
15 return 1
16}
17
18const CL_REG: *u8 = "*.nishifamily.com /tmp/cl_nf.der /tmp/cl_nf.key\n*.andelinwest.com /tmp/cl_aw.der /tmp/cl_aw.key\nbrokensite.com /tmp/cl_missing.der /tmp/cl_missing.key\n* /tmp/cl_def.der /tmp/cl_def.key\n" as *u8
19
20func g_chain(sni: *u8, want: *u8) -> i64 {
21 let cp: *i64 = sys_mmap(8) as *i64; let cl: *i64 = sys_mmap(8) as *i64
22 let kp: *i64 = sys_mmap(8) as *i64; let kl: *i64 = sys_mmap(8) as *i64
23 cp[0]=0; cl[0]=0; kp[0]=0; kl[0]=0
24 let n: i64 = g_len(CL_REG)
25 if cl_load(CL_REG, n, sni, g_len(sni), cp, cl, kp, kl) != 1 { return 0 }
26 return g_bytes_eq(cp[0], cl[0], want)
27}
28
29func main() -> i64 {
30 g_w("cert-loader gate (SNI -> cr_match -> load chain+key BYTES for the handshake)\n" as *u8)
31 g_writef("/tmp/cl_nf.der" as *u8, "NF-CHAIN-DER-BYTES" as *u8)
32 g_writef("/tmp/cl_nf.key" as *u8, "NF-KEY-BYTES" as *u8)
33 g_writef("/tmp/cl_aw.der" as *u8, "AW-CHAIN-DER" as *u8)
34 g_writef("/tmp/cl_aw.key" as *u8, "AW-KEY" as *u8)
35 g_writef("/tmp/cl_def.der" as *u8, "DEFAULT-CHAIN" as *u8)
36 g_writef("/tmp/cl_def.key" as *u8, "DEFAULT-KEY" as *u8)
37 // /tmp/cl_missing.* are deliberately NOT created
38 var pass: i64 = 0
39
40 pass = pass + g_row("T1 www.nishifamily.com -> loaded NF chain bytes\x00" as *u8, g_chain("www.nishifamily.com" as *u8, "NF-CHAIN-DER-BYTES" as *u8))
41 pass = pass + g_row("T2 foo.andelinwest.com -> loaded AW chain bytes\x00" as *u8, g_chain("foo.andelinwest.com" as *u8, "AW-CHAIN-DER" as *u8))
42 pass = pass + g_row("T3 evilnishifamily.com -> DEFAULT chain (ANTI-SPOOF carried through the loader)\x00" as *u8, g_chain("evilnishifamily.com" as *u8, "DEFAULT-CHAIN" as *u8))
43 pass = pass + g_row("T4 random.org -> DEFAULT chain\x00" as *u8, g_chain("random.org" as *u8, "DEFAULT-CHAIN" as *u8))
44
45 // T5: a row whose cert FILE is missing -> cl_load returns 0 (fail-safe; daemon uses its built-in default)
46 let cp: *i64 = sys_mmap(8) as *i64; let cl: *i64 = sys_mmap(8) as *i64; let kp: *i64 = sys_mmap(8) as *i64; let kl: *i64 = sys_mmap(8) as *i64
47 let n: i64 = g_len(CL_REG)
48 var t5: i64 = 0
49 if cl_load(CL_REG, n, "brokensite.com" as *u8, g_len("brokensite.com" as *u8), cp, cl, kp, kl) == 0 { t5 = 1 }
50 pass = pass + g_row("T5 missing cert file -> cl_load 0 (fail-safe to built-in default)\x00" as *u8, t5)
51
52 if pass == 5 {
53 let lg: i64 = sys_openat_append("knowledge/status/cert_loader_gate.log" as *u8, 0x1a4)
54 if lg >= 0 { sys_write(lg, "CERT-LOADER-GATE pass=5/5 verdict=GREEN\n" as *u8, 39); sys_close(lg) }
55 g_w("CERT-LOADER GATE GREEN 5/5 (SNI -> matched chain+key bytes; anti-spoof + fail-safe)\n" as *u8)
56 sys_exit(0)
57 }
58 g_w("CERT-LOADER GATE RED\n" as *u8)
59 sys_exit(1)
60 return 1
61}