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 ──────────────────────────────────────────────────
RecordHeader#
Publicstruct
struct RecordHeader {
var content_type : u8
var legacy_version : u8
var length : u16
}
─── Record Header ──────────────────────────────────────────────────────
HandshakeHeader#
Publicstruct
─── Handshake Header ───────────────────────────────────────────────────
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
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 ─────────────────────────────────────────────────────────
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) ─────────────────────────────────────
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