code wiki / (root) / nx_tls13_server_session_derive_hs.nx

nx_tls13_server_session_derive_hs.nx

buildroot/runtime/nx_tls13_server_session_derive_hs.nx

5540 B144 linesdepth 11pulls 26 transitivereach 36 importersview sourcekind librarytopic tls13
docsdependenciesstructsconstsfunctions

about

nx_tls13_server_session_derive_hs.nx -- 4th stone of the TLS 1.3 server handshake arc. After emit_sh, both sides compute the handshake-phase keying material from the X25519 ECDHE shared secret + HKDF chain. Per RFC 8446 ยง7.1: Early-Secret = HKDF-Extract(0, IKM=PSK_or_0) empty_derived = Derive-Secret(Early-Secret, "derived", "") Handshake-Secret = HKDF-Extract(salt=empty_derived, IKM=ECDHE) This commit ships handshake_secret derivation. Traffic secrets (client_hs_traffic_secret / server_hs_traffic_secret) + traffic keys (key + iv) ship in the next stones -- each composes a Derive-Secret + HKDF-Expand-Label step against this commit's handshake_secret. State machine: requires SH_SENT; advances state to EE_SENT (NOTE: the message isn't actually emitted yet; the state signifies "ready to emit EE because keys are derived"). v2 will introduce an HS_DERIVED intermediate state when the full emit_ee_cert arc lands. license_tier: ORIGINAL

dependencies 8 imports · 15 importers

nx_syscalls.nx nx_x25519_ephemeral.nx nx_hkdf.nx nx_tls13.nx nx_tls13_kdf.nx nx_tls13_transcript.nx nx_tls13_server_session.nx nx_p256_ecdh.nx nx_tls13_server_session_derive nx_edge_daemon.nx nx_edge_serve_static_test.nx nx_pages_https_daemon.nx nx_tls13_p256_loopback_test.nx nx_tls13_server_full_handshake_tes nx_tls13_server_session_app_data_t nx_tls13_server_session_derive_hs_ nx_tls13_server_session_derive_tra nx_tls13_server_session_emit_certi nx_tls13_server_session_emit_cv_te

diagram shows first 10 each side; +0 more imports, +5 more importers in the complete lists below.

imports: nx_syscalls.nxnx_x25519_ephemeral.nxnx_hkdf.nxnx_tls13.nxnx_tls13_kdf.nxnx_tls13_transcript.nxnx_tls13_server_session.nxnx_p256_ecdh.nx

imported by: nx_edge_daemon.nxnx_edge_serve_static_test.nxnx_pages_https_daemon.nxnx_tls13_p256_loopback_test.nxnx_tls13_server_full_handshake_test.nxnx_tls13_server_session_app_data_test.nxnx_tls13_server_session_derive_hs_test.nxnx_tls13_server_session_derive_traffic_test.nxnx_tls13_server_session_emit_certificate_test.nxnx_tls13_server_session_emit_cv_test.nxnx_tls13_server_session_emit_ee_test.nxnx_tls13_server_session_emit_sf_test.nxnx_tls13_server_session_recv_cf_test.nxnx_tls13_server_session_run.nxnx_tls13_server_session_run_h2.nx

structs

none

consts

35const NX_TLS13_HS_HASH_LEN_SHA256: i64 = 32

functions

39func nx_tls13_server_session_derive_hs_secrets(