api

types.ch

Declarations in types.ch

1 declarationstls

Declarations

Public only
tls#
Publicnamespace
namespace tls
============================================================================
SSLState#
Publicvariant
variant SSLState { var HELLO_REQUEST : SSLState var CLIENT_HELLO : SSLState var SERVER_HELLO : SSLState var SERVER_CERTIFICATE : SSLState var SERVER_KEY_EXCHANGE : SSLState var CERTIFICATE_REQUEST : SSLState var SERVER_HELLO_DONE : SSLState var CLIENT_CERTIFICATE : SSLState var CLIENT_KEY_EXCHANGE : SSLState var CERTIFICATE_VERIFY : SSLState var CLIENT_CHANGE_CIPHER_SPEC : SSLState var CLIENT_FINISHED : SSLState var SERVER_CHANGE_CIPHER_SPEC : SSLState var SERVER_FINISHED : SSLState var HANDSHAKE_OVER : SSLState var ENCRYPTED_EXTENSIONS : SSLState var HELLO_RETRY_REQUEST : SSLState var END_OF_EARLY_DATA : SSLState var TLS1_3_NEW_SESSION_TICKET : SSLState }
─── State Machine ──────────────────────────────────────────────────────
Session#
Publicstruct
struct Session { var id : u8[32] var id_len : size_t var master : u8[48] var ciphersuite : u16 var tls_version : int var endpoint : u8 var peer_cert : *X509Cert var verify_result : u32 var resumption_key : u8[32] var resumption_key_len : u8 var ticket_age_add : u32 var ticket_flags : u8 var ticket : *u8 var ticket_len : size_t var ticket_lifetime : u32 }
─── Session Structure ──────────────────────────────────────────────────
constructor#
PublicfunctionConstructor
func constructor() : Session
destruct#
Publicfunction
func destruct(self : &Session) : void
RecordHeader#
Publicstruct
struct RecordHeader { var content_type : u8 var legacy_version : u8 var length : u16 }
─── Record Header ──────────────────────────────────────────────────────
HandshakeHeader#
Publicstruct
struct HandshakeHeader { var msg_type : u8 var length : u24 var seq : u16 }
─── Handshake Header ───────────────────────────────────────────────────
u24#
Publicstruct
struct u24 { var data : u8[3] }
3-byte integer helper
TLS13KeySchedule#
Publicstruct
struct TLS13KeySchedule { var hash_algorithm : u8 var early_secret : u8[48] var handshake_secret : u8[48] var master_secret : u8[48] var client_handshake_traffic_secret : u8[48] var server_handshake_traffic_secret : u8[48] var client_application_traffic_secret : u8[48] var server_application_traffic_secret : u8[48] var exporter_master_secret : u8[48] var resumption_master_secret : u8[48] }
─── TLS 1.3 Key Schedule State ─────────────────────────────────────────
tls13_key_schedule_init#
Publicfunction
func tls13_key_schedule_init(ks : *TLS13KeySchedule) : void
KeyShareEntry#
Publicstruct
struct KeyShareEntry { var group : u16 var key_exchange : *u8 var key_exchange_len : u16 }
─── Key Share Entry (TLS 1.3) ──────────────────────────────────────────
SSLConfig#
Publicstruct
struct SSLConfig { var endpoint : int var transport : int var min_tls_version : int var max_tls_version : int var authmode : int var f_send : *void var f_recv : *void var f_recv_timeout : *void var p_send : *void var p_recv : *void var ciphersuite_list : u16[64] var ciphersuite_count : u32 var own_cert : *X509Cert var own_key : *void var ca_chain : *X509Cert var ca_crl : *void var alpn_list : **char var alpn_count : u8 var f_get_cache : *void var f_set_cache : *void var p_cache : *void var session_tickets : int var extended_ms : int var encrypt_then_mac : int var renegotiation_enabled : int var hostname : *char var read_timeout : u32 var write_timeout : u32 var hs_timeout_min : u32 var hs_timeout_max : u32 }
─── SSL Config ─────────────────────────────────────────────────────────
constructor#
PublicfunctionConstructor
func constructor(endpoint_type : int) : SSLConfig
Verification mode
SSLContext#
Publicstruct
struct SSLContext { var conf : *SSLConfig var conf_owned : bool var session : *Session var state : SSLState var in_buf : u8[17408] var in_msglen : i32 var in_left : i32 var in_hdr : u8[5] var in_offt : i32 var out_buf : u8[17408] var out_msglen : i32 var out_left : i32 var in_ctr : u8[8] var out_ctr : u8[8] var handshake : *HandshakeParams var tls_version : int var major_ver : u8 var minor_ver : u8 var tls13_keys : TLS13KeySchedule var peer_cert : *X509Cert var hostname : *char var hostname_len : size_t var alpn_negotiated : *char var alpn_negotiated_len : size_t var transform_in : *Transform var transform_out : *Transform var transform_negotiated : *Transform var handshake_hash : u8[64] var handshake_hash_len : size_t var transport_socket : Socket var transport_connected : bool var negotiated_ciphersuite : u16 var last_alert_level : u8 var last_alert_desc : u8 var early_data_status : u8 }
─── SSL Context (Main Connection State) ────────────────────────────────
constructor#
PublicfunctionConstructor
func constructor() : SSLContext
destruct#
Publicfunction
func destruct(self : &SSLContext) : void
Destructor: full cleanup so `delete ssl` is safe (same as ssl_free).
ssl_context_init#
Publicfunction
func ssl_context_init(ssl : *SSLContext) : void
Transform#
Publicstruct
struct Transform { var cipher_type : u8 var hash_type : u8 var iv_enc : u8[16] var iv_dec : u8[16] var key_enc : u8[32] var key_dec : u8[32] var mac_key_enc : u8[48] var mac_key_dec : u8[48] var iv_len : u8 var key_len : u8 var mac_key_len : u8 var fixed_iv_len : u8 var base_iv_enc : u8[16] var base_iv_dec : u8[16] }
─── Transform (Encryption Context) ─────────────────────────────────────
transform_init#
Publicfunction
func transform_init(tr : *Transform) : void
HandshakeParams#
Publicstruct
struct HandshakeParams { var randbytes : u8[64] var premaster : u8[256] var premaster_len : size_t var key_schedule : TLS13KeySchedule var hello_retry_requested : bool var ecdhe_curve : u16 var ecdhe_public : *u8 var ecdhe_public_len : u16 var ecdhe_private : *u8 var ecdhe_private_len : u16 var x25519_public : *u8 var x25519_public_len : u16 var x25519_private : *u8 var psk : u8[32] var psk_len : u8 var psk_identity : *u8 var psk_identity_len : u16 var psk_accepted : bool var psk_binder_off : u16 var psk_partial_len : u16 var sni_authmode : u8 var extended_ms : u8 var new_session_ticket : u8[4096] var new_session_ticket_len : u16 }
─── Handshake Parameters ──────────────────────────────────────────────
handshake_params_init#
Publicfunction
func handshake_params_init(hs : *HandshakeParams) : void
SendCallback#
Publictypealias
type SendCallback = func(*void, *u8, size_t) : int
─── I/O Callback Types ─────────────────────────────────────────────────
RecvCallback#
Publictypealias
type RecvCallback = func(*void, *u8, size_t) : int
Receive callback: returns bytes received or negative error
RecvTimeoutCallback#
Publictypealias
type RecvTimeoutCallback = func(*void, *u8, size_t, u32) : int
Receive with timeout callback