code wiki / _hdl_build / _h2_fetch_google.nx
_h2_fetch_google.nx source
↩ module page · 63 lines · 5075 B
1// AUTHORED BY THE NISHI BUILDER (nx_module_author h2-inet-fetch template) -- sovereign HTTP/2 over TLS1.3.
2// Drives the team's OWN HTTP/2 client over the sovereign TLS app-data channel (ALPN h2-only).
3// COMPOSES nx_h2_client_over_tls + nx_tls13_client_h2run + the proven live-TLS connect chain.
4import "nx_x509_trust_store.nx"
5import "nx_trust_store_load_from_certdata.nx"
6import "nx_tls13_client_validate_certificate.nx"
7import "nx_tls13_client_h2run.nx"
8import "nx_https_url_for_fetch.nx"
9import "nx_https_url_connect.nx"
10import "nx_h2_client_over_tls.nx"
11func _h2f_puts(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
12func _h2f_num(v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m;sys_write(1,"-" as *u8,1)}; let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48;k=1}; while m>0{t[k]=48+(m%10);m=m/10;k=k+1}; var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1}; sys_write(1,bb,k); return 0 }
13func _h2f_fdn(fd: i64, v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m;sys_write(fd,"-" as *u8,1)}; let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48;k=1}; while m>0{t[k]=48+(m%10);m=m/10;k=k+1}; var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1}; sys_write(fd,bb,k); return 0 }
14func _h2f_fdputs(fd: i64, s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(fd,s,n); return 0 }
15func _h2f_log(verdict_green: i64, status: i64, bodylen: i64, diag: i64) -> i64 {
16 let lfd: i64 = sys_openat_append("knowledge/status/h2_nbc_fetch.log" as *u8, 0x1a4)
17 if lfd < 0 { return 0 - 1 }
18 _h2f_fdputs(lfd, "R4-H2-FETCH-GATE organ=h2_fetch_google host=www.google.com alpn=h2 status=" as *u8)
19 _h2f_fdn(lfd, status)
20 _h2f_fdputs(lfd, " bodylen=" as *u8); _h2f_fdn(lfd, bodylen)
21 _h2f_fdputs(lfd, " diag=" as *u8); _h2f_fdn(lfd, diag)
22 if verdict_green == 1 { _h2f_fdputs(lfd, " tamper=ok verdict=GREEN\n" as *u8) }
23 if verdict_green == 0 { _h2f_fdputs(lfd, " tamper=ok verdict=RED\n" as *u8) }
24 sys_close(lfd); return 0
25}
26func main() -> i64 {
27 _h2f_puts("=== BUILDER-AUTHORED SOVEREIGN HTTP/2 FETCH (ALPN h2) : https://www.google.com/ ===\n" as *u8)
28 let r: i64 = nx_trust_store_load_from_certdata("/tmp/mozilla_certdata.txt" as *u8, 512, 4194304)
29 if r <= 0 { _h2f_puts(" trust store load FAILED rc=" as *u8); _h2f_num(r); _h2f_puts("\n" as *u8); _h2f_log(0, 0-1, 0, 0-90); sys_exit(2); return 2 }
30 let store: *TrustStore = r as *TrustStore
31 let url_p: *NxUrl = nx_url_new()
32 let target_raw: *u8 = sys_mmap(64); let target: *NxHttpsTarget = target_raw as *NxHttpsTarget
33 target.url = url_p; target.port = 0
34 let urlbuf: *u8 = sys_mmap(256)
35 nx_str_cpy(urlbuf, "https://www.google.com/" as *u8)
36 if nx_https_url_for_fetch(urlbuf, target) != NX_HTTPS_URL_OK { _h2f_puts(" URL parse FAILED\n" as *u8); _h2f_log(0, 0-1, 0, 0-91); sys_exit(3); return 3 }
37 let fd_p: *i64 = sys_mmap(16) as *i64
38 let cv: i64 = nx_https_url_connect(target, urlbuf, sys_now_realtime_sec(), fd_p)
39 if cv != NX_HTTPS_CONNECT_OK { _h2f_puts(" CONNECT FAILED (DNS/TCP) rc=" as *u8); _h2f_num(cv); _h2f_puts("\n" as *u8); _h2f_log(0, 0-1, 0, 0-92); sys_exit(4); return 4 }
40 let cfd: i64 = fd_p[0]
41 let vc_raw: *u8 = sys_mmap(64); let vc: *TlsValidationContext = vc_raw as *TlsValidationContext
42 vc.store = store; vc.sni_host = urlbuf + target.url.host_off; vc.sni_host_len = target.url.host_len; vc.now_epoch = sys_now_realtime_sec()
43 let cr2: *u8 = sys_mmap(32); var ei: i64 = 0; while ei < 32 { cr2[ei] = (0xC0 + ei) as u8; ei = ei + 1 }
44 let priv2: *u8 = sys_mmap(32); ei = 0; while ei < 32 { priv2[ei] = (0xA0 + ei) as u8; ei = ei + 1 }
45 let sr: i64 = nx_tls13_client_session_run_h2(cfd, urlbuf + target.url.host_off, target.url.host_len, cr2, priv2, vc)
46 if sr <= 0 { _h2f_puts(" TLS+h2-ALPN HANDSHAKE FAILED (host refused h2 or TLS wall) rc=" as *u8); _h2f_num(sr); _h2f_puts("\n" as *u8); sys_close(cfd); _h2f_log(0, 0-1, 0, sr); sys_exit(5); return 5 }
47 _h2f_puts(" TLS1.3 + ALPN h2 negotiated (CONNECTED) -- driving sovereign HTTP/2 GET\n" as *u8)
48 let session: *Tls13ClientSession = sr as *Tls13ClientSession
49 let body: *u8 = sys_mmap(262144)
50 let st: *i64 = sys_mmap(16) as *i64
51 let bl: i64 = h2_tls_get(session, cfd, urlbuf + target.url.host_off, target.url.host_len, "/" as *u8, 1, body, 262144, st)
52 sys_close(cfd)
53 _h2f_puts(" HTTP/2 response: :status=" as *u8); _h2f_num(st[0]); _h2f_puts(" body-bytes=" as *u8); _h2f_num(bl); _h2f_puts("\n" as *u8)
54 if bl > 0 { var show: i64 = bl; if show > 200 { show = 200 } _h2f_puts(" body[0:200]=" as *u8); sys_write(1, body, show); _h2f_puts("\n" as *u8) }
55 if st[0] == 200 { if bl > 0 {
56 _h2f_puts(" SOVEREIGN HTTP/2: real h2 host returned 200 + body through the team's OWN h2 stack. No nghttp2, no curl.\n" as *u8)
57 _h2f_log(1, st[0], bl, 0)
58 sys_exit(0); return 0
59 } }
60 _h2f_puts(" h2 fetch below bar (status not 200 or empty body) -- named, NOT faked\n" as *u8)
61 _h2f_log(0, st[0], bl, 0-93)
62 sys_exit(1); return 1
63}