** libgnutls: Several optimizations in the related to packet processing
subsystems.
+** libgnutls: DTLS replay protection can now be disabled.
+
** API and ABI modifications:
gnutls_certificate_set_trust_list: Added
gnutls_cipher_get_tag_size: Added
+gnutls_record_disable_replay_protection: Added
* Version 3.2.1 (released 2013-06-01)
return session->internals.dtls.packets_dropped;
}
+/**
+ * gnutls_record_disable_replay_protection:
+ * @session: is a #gnutls_session_t structure.
+ *
+ * This function will disable any replay protection in DTLS mode.
+ * That must only used when replay protection is achieved using
+ * other means.
+ *
+ **/
+void
+gnutls_record_disable_replay_protection (gnutls_session_t session)
+{
+ session->internals.no_replay_protection = 1;
+}
recv_state_t recv_state; /* state of the receive function */
unsigned int sc_random_set:1;
+ unsigned int no_replay_protection:1; /* DTLS replay protection */
/* If you add anything here, check _gnutls_handshake_internal_state_clear().
*/
* is processed and authenticated to avoid someone
* messing with our windows.
*/
- if (IS_DTLS(session))
+ if (IS_DTLS(session) && session->internals.no_replay_protection == 0)
{
ret = _dtls_record_check(record_params, packet_sequence);
if (ret < 0)
gnutls_dtls_prestate_st* prestate);
unsigned int gnutls_record_get_discarded (gnutls_session_t session);
+
+ void gnutls_record_disable_replay_protection (gnutls_session_t session);
#ifdef __cplusplus
}
#endif
gnutls_session_set_id;
gnutls_certificate_set_trust_list;
gnutls_cipher_get_tag_size;
+ gnutls_record_disable_replay_protection;
} GNUTLS_3_0_0;
GNUTLS_PRIVATE {