summaryrefslogtreecommitdiffstats
path: root/doc/functions/gnutls_rehandshake
diff options
context:
space:
mode:
Diffstat (limited to 'doc/functions/gnutls_rehandshake')
-rw-r--r--doc/functions/gnutls_rehandshake42
1 files changed, 42 insertions, 0 deletions
diff --git a/doc/functions/gnutls_rehandshake b/doc/functions/gnutls_rehandshake
new file mode 100644
index 0000000..7498d6e
--- /dev/null
+++ b/doc/functions/gnutls_rehandshake
@@ -0,0 +1,42 @@
+
+
+
+
+@deftypefun {int} {gnutls_rehandshake} (gnutls_session_t @var{session})
+@var{session}: is a @code{gnutls_session_t} type.
+
+This function can only be called in server side, and
+instructs a TLS 1.2 or earlier client to renegotiate
+parameters (perform a handshake), by sending a
+hello request message.
+
+If this function succeeds, the calling application
+should call @code{gnutls_record_recv()} until @code{GNUTLS_E_REHANDSHAKE}
+is returned to clear any pending data. If the @code{GNUTLS_E_REHANDSHAKE}
+error code is not seen, then the handshake request was
+not followed by the peer (the TLS protocol does not require
+the client to do, and such compliance should be handled
+by the application protocol).
+
+Once the @code{GNUTLS_E_REHANDSHAKE} error code is seen, the
+calling application should proceed to calling
+@code{gnutls_handshake()} to negotiate the new
+parameters.
+
+If the client does not wish to renegotiate parameters he
+may reply with an alert message, and in that case the return code seen
+by subsequent @code{gnutls_record_recv()} will be
+@code{GNUTLS_E_WARNING_ALERT_RECEIVED} with the specific alert being
+@code{GNUTLS_A_NO_RENEGOTIATION} . A client may also choose to ignore
+this request.
+
+Under TLS 1.3 this function is equivalent to @code{gnutls_session_key_update()}
+with the @code{GNUTLS_KU_PEER} flag. In that case subsequent calls to
+@code{gnutls_record_recv()} will not return @code{GNUTLS_E_REHANDSHAKE} , and
+calls to @code{gnutls_handshake()} in server side are a no-op.
+
+This function always fails with @code{GNUTLS_E_INVALID_REQUEST} when
+called in client side.
+
+@strong{Returns:} @code{GNUTLS_E_SUCCESS} on success, otherwise a negative error code.
+@end deftypefun