nx_mtls_loopback_probe.nx source
↩ module page · 32 lines · 1400 B
1// probe: does the mutual-auth loopback import set co-compile + the funcs interop? expect_exit: 0 license_tier: ORIGINAL
2import "nx_syscalls.nx"
3import "nx_tls13.nx"
4import "nx_tls13_transcript.nx"
5import "nx_tls13_emit_certificate_request.nx"
6import "nx_tls13_server_clientauth.nx"
7const K_MAGIC_4096: i64 = 4096
8
9func main() -> i64 {
10 let schemes: *i64 = sys_mmap(32) as *i64
11 schemes[0] = SS_ED25519
12 let msg: *u8 = sys_mmap(64)
13 let n: i64 = tls13_build_certificate_request(msg, 64, schemes, 1)
14 let tx: *u8 = nx_tls13_transcript_new()
15 nx_tls13_transcript_update(tx, msg, n)
16 let th: *u8 = sys_mmap(32)
17 nx_tls13_transcript_snapshot(tx, th)
18 let content: *u8 = sys_mmap(130)
19 tls13_build_client_cv_content(th, content)
20 let seed: *u8 = sys_mmap(32); let pub: *u8 = sys_mmap(32)
21 let cert: *u8 = sys_mmap(K_MAGIC_4096); let clen: *i64 = sys_mmap(8) as *i64
22 var i: i64 = 0
23 while i < 32 { seed[i] = (0x31 + i) as u8; i = i + 1 }
24 ca_mint(seed, pub, "nishi-uid-test" as *u8, 14, cert, K_MAGIC_4096, clen)
25 let sig: *u8 = sys_mmap(64)
26 ed25519_sign_full(seed, content, 130, sig)
27 let idpub: *u8 = sys_mmap(32)
28 let v: i64 = tls13_verify_client_auth_ed25519(cert, clen[0], 0x0807, sig, 64, th, idpub)
29 if v == 0 { sys_write(1, "PROBE-OK\n" as *u8, 9); sys_exit(0) }
30 sys_write(1, "PROBE-FAIL\n" as *u8, 11); sys_exit(1)
31 return 0
32}