nx_tls13_server_session_recv_cf.nx
buildroot/runtime/nx_tls13_server_session_recv_cf.nx
about
nx_tls13_server_session_recv_cf.nx -- 8th (final) TLS server stone.
Receives the client Finished record (AEAD-encrypted under
client_hs_traffic_key + iv), verifies the HMAC against the
server's transcript-snapshot, then derives application traffic
keys per RFC 8446 ยง7.1. Closes the loopback-class TLS 1.3
server handshake arc.
Steps:
1. Parse record header (must be type=0x17 app_data)
2. AEAD decrypt with c_hs_traffic_key + iv + client_seq
3. Inner type must be CT_HANDSHAKE; payload must be HT_FINISHED
4. Recompute expected verify_data = HMAC(finished_key_c, transcript)
5. Constant-time compare against received verify_data
6. On match: derive master_secret + app traffic secrets + keys
7. State -> CONNECTED
Precondition: state == SF_SENT (server has emitted its Finished)
Postcondition on success: state == CONNECTED
license_tier: ORIGINAL
dependencies 8 imports · 8 importers
imports: nx_syscalls.nxnx_hmac.nxnx_tls13.nxnx_tls13_kdf.nxnx_tls13_record.nxnx_tls13_transcript.nxnx_hkdf.nxnx_tls13_server_session.nx
imported by: nx_edge_daemon.nxnx_edge_serve_static_test.nxnx_pages_https_daemon.nxnx_tls13_server_full_handshake_test.nxnx_tls13_server_session_app_data_test.nxnx_tls13_server_session_recv_cf_test.nxnx_tls13_server_session_run.nxnx_tls13_server_session_run_h2.nx
structs
| none |
consts
| 32 | const NX_TLS13_CF_VERIFY_LEN: i64 = 32 |
| 33 | const NX_TLS13_CF_REC_HEADER: i64 = 5 |
| 34 | const NX_TLS13_CF_REC_TAG: i64 = 16 |
functions
| 37 | func cf_ct_eq_32(a: *u8, b: *u8) -> i64 called by 1: nx_tls13_server_session_recv_cf |
| 50 | func nx_tls13_server_session_recv_cf( |