code wiki / _hdl_build / nx_tls13_transcript384_gate.nx

nx_tls13_transcript384_gate.nx

buildroot/runtime/_hdl_build/nx_tls13_transcript384_gate.nx

4613 B95 linesdepth 6pulls 8 transitivereach 0 importersview sourcekind gate/prooftopic tls13
docsdependenciesstructsconstsfunctions

about

nx_tls13_transcript384_gate.nx -- proves the dual-hash transcript (R9, 2026-08-05). WHY: TLS 1.3 picks the transcript hash FROM THE CIPHER SUITE, known only at ServerHello. A single streaming SHA-256 therefore can never serve 0x1302 (AES-256-GCM-SHA384), which is nginx's DEFAULT preference -- so those hosts were unreachable and the crawler then RETIRED them. The transcript now runs BOTH hashes from the first byte. HONEST PROVING METHOD: no invented goldens. The SHA-384 transcript is proven by DEFINITIONAL IDENTITY against sha384_digest -- which is itself NIST-KAT'd in nx_sha384_kat_test.nx. Feeding the same bytes to the streaming transcript and to the one-shot digest MUST agree bit-for-bit. The SHA-256 half is proven UNCHANGED against sha256_digest, which is the regression control: this change must be invisible to every existing caller (client, server and mTLS all share this object). license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0

dependencies 4 imports · 0 importers

nx_syscalls.nx nx_gate_verdict.nx nx_tls13_transcript.nx nx_sha512.nx nx_tls13_transcript384_gate.nx

imports: nx_syscalls.nxnx_gate_verdict.nxnx_tls13_transcript.nxnx_sha512.nx

imported by: nobody (leaf or entry point)

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

main gv_ctr sys_mmap tg_puts sys_write sys_mmap ↻ nx_tls13_transcript_new sys_mmap ↻ sha256_init sys_mmap ↻ sha256_k sha384_init nx_tls13_transcript_update sha256_update sha256_compress_ni_blocks blk_set_byte sha256_compress sha256_compress_ni blk_word blk_byte sha512_update sha512_blk_set_byte blk_get_i64 blk_set_i64 sha512_compress sys_mmap ↻ blk_get_i64 ↻ sha512_gamma0 rotr64_v nx_bits_rotr64 shr64_v sha512_gamma1 rotr64_v ↻ shr64_v ↻ sha512_sigma1 rotr64_v ↻ sha512_ch sha512_k sha512_sigma0 rotr64_v ↻

structs

none

consts

none

functions

20func tg_puts(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 1: main calls 1: sys_write
22func main(argc: i64, argv: *i64) -> i64