Blame doc/functions/gnutls_handshake

Packit aea12f
Packit aea12f
Packit aea12f
Packit aea12f
Packit aea12f
@deftypefun {int} {gnutls_handshake} (gnutls_session_t @var{session})
Packit aea12f
@var{session}: is a @code{gnutls_session_t}  type.
Packit aea12f
Packit aea12f
This function performs the handshake of the TLS/SSL protocol, and
Packit aea12f
initializes the TLS session parameters.
Packit aea12f
Packit aea12f
The non-fatal errors expected by this function are:
Packit Service 991b93
@code{GNUTLS_E_INTERRUPTED} , @code{GNUTLS_E_AGAIN} ,
Packit aea12f
@code{GNUTLS_E_WARNING_ALERT_RECEIVED} . When this function is called
Packit aea12f
for re-handshake under TLS 1.2 or earlier, the non-fatal error code
Packit aea12f
@code{GNUTLS_E_GOT_APPLICATION_DATA}  may also be returned.
Packit aea12f
Packit aea12f
The former two interrupt the handshake procedure due to the transport
Packit aea12f
layer being interrupted, and the latter because of a "warning" alert that
Packit aea12f
was sent by the peer (it is always a good idea to check any
Packit aea12f
received alerts). On these non-fatal errors call this function again,
Packit aea12f
until it returns 0; cf.  @code{gnutls_record_get_direction()}  and
Packit aea12f
@code{gnutls_error_is_fatal()} . In DTLS sessions the non-fatal error
Packit aea12f
@code{GNUTLS_E_LARGE_PACKET}  is also possible, and indicates that
Packit aea12f
the MTU should be adjusted.
Packit aea12f
Packit aea12f
When this function is called by a server after a rehandshake request
Packit aea12f
under TLS 1.2 or earlier the @code{GNUTLS_E_GOT_APPLICATION_DATA}  error code indicates
Packit aea12f
that some data were pending prior to peer initiating the handshake.
Packit aea12f
Under TLS 1.3 this function when called after a successful handshake, is a no-op
Packit aea12f
and always succeeds in server side; in client side this function is
Packit aea12f
equivalent to @code{gnutls_session_key_update()}  with @code{GNUTLS_KU_PEER}  flag.
Packit aea12f
Packit aea12f
This function handles both full and abbreviated TLS handshakes (resumption).
Packit aea12f
For abbreviated handshakes, in client side, the @code{gnutls_session_set_data()} 
Packit aea12f
should be called prior to this function to set parameters from a previous session.
Packit aea12f
In server side, resumption is handled by either setting a DB back-end, or setting
Packit aea12f
up keys for session tickets.
Packit aea12f
Packit aea12f
@strong{Returns:} @code{GNUTLS_E_SUCCESS}  on a successful handshake, otherwise a negative error code.
Packit aea12f
@end deftypefun