code wiki / (root) / nx_tls13_chrome_hello_gate.nx

nx_tls13_chrome_hello_gate.nx

buildroot/runtime/nx_tls13_chrome_hello_gate.nx

8133 B123 linesdepth 4pulls 9 transitivereach 0 importersview sourcekind gate/prooftopic tls13
docsdependenciesstructsconstsfunctions

about

nx_tls13_chrome_hello_gate.nx -- SOVEREIGN referee: emit our Chrome-JA3 ClientHello, extract its JA3 fingerprint (GREASE-filtered ciphers/extensions/curves/point-formats), and assert it EQUALS a real Chrome (~v120) JA3 string EXACTLY. This proves Cloudflare-class CDNs will classify us as a browser (the R2f-A unblock). No network. T1 the emitted hello PARSES (valid ClientHello structure) T2 JA3 string == the known Chrome JA3 (ciphers,extensions,curves,pointformats -- the exact fingerprint) T3 GREASE is PRESENT in ciphers[0] + extensions + groups (browser-shape, and the filter is load-bearing) T4 the JA3 MD5 is stable/deterministic (emit twice -> same hash) GREEN iff 4/4. license_tier: ORIGINAL expect_exit: 0

dependencies 5 imports · 0 importers

nx_syscalls.nx nx_tls13_chrome_hello.nx nx_tls13_hello.nx nx_md5.nx nx_gate_verdict.nx nx_tls13_chrome_hello_gate.nx

imports: nx_syscalls.nxnx_tls13_chrome_hello.nxnx_tls13_hello.nxnx_md5.nxnx_gate_verdict.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main gw sys_write sys_mmap tls13_chrome_hello_emit ch_u16 ch_u8 ch_exts ch_u16 ↻ ch_u8 ↻ gn sys_mmap ↻ gw ↻ sys_write ↻ grow gw ↻ tls13_client_hello_parse tls_read_u24_be tls_read_u16_be ap_str is_grease ap_dec sys_mmap ↻ tls13_ext_find tls_read_u16_be ↻ g_streq nx_md5 nx_md5_block nx_md5_load_u32 nx_md5_FF nx_md5_F nx_md5_rotl nx_md5_GG nx_md5_G nx_md5_rotl ↻ nx_md5_HH nx_md5_H nx_md5_rotl ↻ nx_md5_II nx_md5_I

structs

none

consts

none

functions

15func gw(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
called by 3: gngrowmain calls 1: sys_write
16func gn(v: i64) -> i64 { let b: *u8 = sys_mmap(24); var m: i64 = v; if m < 0 { gw("-" as *u8); m = 0 - m }; let t: *u8 = sys_mmap(24); var k: i64 = 0; if m == 0 { t[0] = 48 as u8; k = 1 }; while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }; var i: i64 = 0; while i < k { b[i] = t[k - 1 - i]; i = i + 1 }; sys_write(1, b, k); return 0 }
called by 1: main calls 3: sys_mmapgwsys_write
17func grow(name: *u8, ok: i64) -> i64 { if ok == 1 { gw(" PASS " as *u8) } else { gw(" FAIL " as *u8) } gw(name); gw("\n" as *u8); return ok }
called by 1: main calls 1: gw
18func g_streq(a: *u8, b: *u8) -> i64 { var i: i64=0; while a[i]!=(0 as u8){ if a[i]!=b[i]{return 0} i=i+1 } if b[i]==(0 as u8){return 1} return 0 }
called by 1: main
21func is_grease(v: i64) -> i64 { let hi: i64 = (v >> 8) & 0xff; let lo: i64 = v & 0xff; if hi == lo { if (lo & 0x0f) == 0x0a { return 1 } } return 0 }
called by 1: main
23func ap_dec(dst: *u8, o: i64, v: i64, firstp: *i64) -> i64
called by 1: main calls 1: sys_mmap
32func ap_str(dst: *u8, o: i64, s: *u8) -> i64 { var i: i64 = 0; while s[i]!=(0 as u8) { dst[o]=s[i]; o=o+1; i=i+1 } return o }
called by 1: main
34func main() -> i64