code wiki / (root) / nx_mtls_loopback_probe.nx

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}