* @GNUTLS_ENABLE_RAWPK: Allows raw public-keys to be negotiated during the handshake. Since 3.6.6.
* @GNUTLS_NO_AUTO_SEND_TICKET: Under TLS1.3 disable auto-sending of
* session tickets during the handshake.
+ * @GNUTLS_NO_END_OF_EARLY_DATA: Under TLS1.3 suppress sending EndOfEarlyData message. Since 3.7.2.
*
* Enumeration of different flags for gnutls_init() function. All the flags
* can be combined except @GNUTLS_SERVER and @GNUTLS_CLIENT which are mutually
GNUTLS_ENABLE_RAWPK = (1<<18),
GNUTLS_AUTO_REAUTH = (1<<19),
GNUTLS_ENABLE_EARLY_DATA = (1<<20),
- GNUTLS_NO_AUTO_SEND_TICKET = (1<<21)
+ GNUTLS_NO_AUTO_SEND_TICKET = (1<<21),
+ GNUTLS_NO_END_OF_EARLY_DATA = (1<<22)
} gnutls_init_flags_t;
/* compatibility defines (previous versions of gnutls
session->internals.hsk_flags & HSK_EARLY_DATA_ACCEPTED))
return 0;
+ if (session->internals.flags & GNUTLS_NO_END_OF_EARLY_DATA) {
+ return 0;
+ }
+
if (again == 0) {
ret = _gnutls_buffer_init_handshake_mbuffer(&buf);
if (ret < 0)
session->internals.hsk_flags & HSK_EARLY_DATA_ACCEPTED))
return 0;
- ret = _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_END_OF_EARLY_DATA, 0, &buf);
- if (ret < 0)
- return gnutls_assert_val(ret);
+ if (!(session->internals.flags & GNUTLS_NO_END_OF_EARLY_DATA)) {
+ ret = _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_END_OF_EARLY_DATA, 0, &buf);
+ if (ret < 0)
+ return gnutls_assert_val(ret);
- if (buf.length != 0) {
- gnutls_assert();
- ret = GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER;
- goto cleanup;
+ if (buf.length != 0) {
+ gnutls_assert();
+ ret = GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER;
+ goto cleanup;
+ }
}
session->internals.hsk_flags &= ~HSK_EARLY_DATA_IN_FLIGHT;