Method SSL.ClientConnection()->client_hello()

class SSL.ClientConnection

Method client_hello

protected Packet client_hello(string(8bit)|void server_name, string(8bit)|void early_data, int|void retry_group)

Description

Generate a HANDSHAKE_client_hello Packet.

Parameter early_data

TLS 1.3 (RFC 8446 section 2.3) 0-RTT application data to send immediately after this ClientHello, if session has a usable resumption ticket that supports it (see offering_psk and session->tls13_max_early_data_size below) -- opportunistic: silently not sent as 0-RTT if the session can't support it (eg no ticket, or retry_group is set -- RFC 8446 section 4.1.2 forbids re-offering early_data on a HelloRetryRequest retry). Never automatically resent as ordinary data if that happens; see early_data_sent_1_3.

Parameter retry_group

Set when (re)sending in response to a HelloRetryRequest (RFC 8446 section 4.1.2): the EXTENSION_key_share extension offers only this group, and -- per the RFC 8446 4.1.2 requirement that the retried ClientHello be unmodified except for a short list of fields -- client_random is *not* regenerated, reusing the value from the original ClientHello.