Blame doc/functions/gnutls_handshake_set_post_client_hello_function

Packit Service 4684c1
Packit Service 4684c1
Packit Service 4684c1
Packit Service 4684c1
Packit Service 4684c1
@deftypefun {void} {gnutls_handshake_set_post_client_hello_function} (gnutls_session_t @var{session}, gnutls_handshake_simple_hook_func @var{func})
Packit Service 4684c1
@var{session}: is a @code{gnutls_session_t}  type.
Packit Service 4684c1
Packit Service 4684c1
@var{func}: is the function to be called
Packit Service 4684c1
Packit Service 4684c1
This function will set a callback to be called after the client
Packit Service 4684c1
hello has been received (callback valid in server side only). This
Packit Service 4684c1
allows the server to adjust settings based on received extensions.
Packit Service 4684c1
Packit Service 4684c1
Those settings could be ciphersuites, requesting certificate, or
Packit Service 4684c1
anything else except for version negotiation (this is done before
Packit Service 4684c1
the hello message is parsed).
Packit Service 4684c1
Packit Service 4684c1
This callback must return 0 on success or a gnutls error code to
Packit Service 4684c1
terminate the handshake.
Packit Service 4684c1
Packit Service 4684c1
Since GnuTLS 3.3.5 the callback is
Packit Service 4684c1
allowed to return @code{GNUTLS_E_AGAIN}  or @code{GNUTLS_E_INTERRUPTED}  to
Packit Service 4684c1
put the handshake on hold. In that case @code{gnutls_handshake()} 
Packit Service 4684c1
will return @code{GNUTLS_E_INTERRUPTED}  and can be resumed when needed.
Packit Service 4684c1
Packit Service 4684c1
@strong{Warning:} You should not use this function to terminate the
Packit Service 4684c1
handshake based on client input unless you know what you are
Packit Service 4684c1
doing. Before the handshake is finished there is no way to know if
Packit Service 4684c1
there is a man-in-the-middle attack being performed.
Packit Service 4684c1
@end deftypefun