nx_tls13_server_session_recv_cf_test.nx
buildroot/runtime/nx_tls13_server_session_recv_cf_test.nx
about
nx_tls13_server_session_recv_cf_test.nx -- close the loopback-class
TLS 1.3 server handshake.
Smoke construction:
1. Drive server through emit_sf (state == SF_SENT)
2. Snapshot the transcript hash AT THAT POINT (this is what
the client would have computed for its Finished)
3. Construct the client Finished record:
finished_key_c = HKDF-Expand-Label(c_hs_traffic_secret,
"finished", "", 32)
verify_data = HMAC-SHA256(finished_key_c, th)
plaintext = HT_FINISHED + u24_len + verify_data
record = AEAD-encrypt(c_hs_traffic_key, c_hs_iv,
client_seq=0, plaintext, CT_HANDSHAKE)
4. Feed the record to recv_cf
5. Assert state == CONNECTED + app keys derived
Closed-form invariants:
(a) Wrong state -> BAD_STATE
(b) Tampered Finished bytes -> PROTOCOL_ERR (HMAC mismatch caught)
(c) Honest client Finished -> OK
(d) State advances to CONNECTED
(e) App traffic secrets + keys + IVs derived (6 non-zero buffers)
expect_exit: 0
license_tier: ORIGINAL
dependencies 17 imports · 0 importers
diagram shows first 10 each side; +7 more imports, +0 more importers in the complete lists below.
imports: nx_syscalls.nxnx_x25519.nxnx_x25519_ephemeral.nxnx_hmac.nxnx_tls13.nxnx_tls13_hello.nxnx_tls13_kdf.nxnx_tls13_record.nxnx_tls13_transcript.nxnx_tls13_server_session.nxnx_tls13_server_session_recv_ch.nxnx_tls13_server_session_emit_sh.nxnx_tls13_server_session_derive_hs.nxnx_tls13_server_session_derive_traffic.nxnx_tls13_server_session_emit_ee.nxnx_tls13_server_session_emit_sf.nxnx_tls13_server_session_recv_cf.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| none |
functions
| 50 | func build_client_finished_record( |
| 91 | func main() -> i64 |