Blame doc/functions/gnutls_session_get_data2

Packit Service 4684c1
Packit Service 4684c1
Packit Service 4684c1
Packit Service 4684c1
Packit Service 4684c1
@deftypefun {int} {gnutls_session_get_data2} (gnutls_session_t @var{session}, gnutls_datum_t * @var{data})
Packit Service 4684c1
@var{session}: is a @code{gnutls_session_t}  type.
Packit Service 4684c1
Packit Service 4684c1
@var{data}: is a pointer to a datum that will hold the session.
Packit Service 4684c1
Packit Service 4684c1
Returns necessary parameters to support resumption. The client
Packit Service 4684c1
should call this function and store the returned session data. A session
Packit Service 4684c1
can be resumed later by calling @code{gnutls_session_set_data()}  with the returned
Packit Service 4684c1
data. Note that under TLS 1.3, it is recommended for clients to use
Packit Service 4684c1
session parameters only once, to prevent passive-observers from correlating
Packit Service 4684c1
the different connections.
Packit Service 4684c1
Packit Service 4684c1
The returned  @code{data} are allocated and must be released using @code{gnutls_free()} .
Packit Service 4684c1
Packit Service 4684c1
This function will fail if called prior to handshake completion. In
Packit Service 4684c1
case of false start TLS, the handshake completes only after data have
Packit Service 4684c1
been successfully received from the peer.
Packit Service 4684c1
Packit Service 4684c1
Under TLS1.3 session resumption is possible only after a session ticket
Packit Service 4684c1
is received by the client. To ensure that such a ticket has been received use
Packit Service 4684c1
@code{gnutls_session_get_flags()}  and check for flag @code{GNUTLS_SFLAGS_SESSION_TICKET} ;
Packit Service 4684c1
if this flag is not set, this function will wait for a new ticket within
Packit Service 4684c1
an estimated rountrip, and if not received will return dummy data which
Packit Service 4684c1
cannot lead to resumption.
Packit Service 4684c1
Packit Service 4684c1
To get notified when new tickets are received by the server
Packit Service 4684c1
use @code{gnutls_handshake_set_hook_function()}  to wait for @code{GNUTLS_HANDSHAKE_NEW_SESSION_TICKET} 
Packit Service 4684c1
messages. Each call of @code{gnutls_session_get_data2()}  after a ticket is
Packit Service 4684c1
received, will return session resumption data corresponding to the last
Packit Service 4684c1
received ticket.
Packit Service 4684c1
Packit Service 4684c1
Note that this function under TLS1.3 requires a callback to be set with
Packit Service 4684c1
@code{gnutls_transport_set_pull_timeout_function()}  for successful operation. There
Packit Service 4684c1
was a bug before 3.6.10 which could make this function fail if that callback
Packit Service 4684c1
was not set. On later versions if not set, the function will return a successful
Packit Service 4684c1
error code, but will return dummy data that cannot lead to a resumption.
Packit Service 4684c1
Packit Service 4684c1
@strong{Returns:} On success, @code{GNUTLS_E_SUCCESS}  (0) is returned, otherwise
Packit Service 4684c1
an error code is returned.
Packit Service 4684c1
@end deftypefun