60 #ifndef HEADER_DTLS1_H
61 #define HEADER_DTLS1_H
63 #include <openssl/buffer.h>
64 #include <openssl/pqueue.h>
65 #ifdef OPENSSL_SYS_VMS
67 #include <sys/timeb.h>
69 #ifdef OPENSSL_SYS_WIN32
72 #elif defined(OPENSSL_SYS_NETWARE) && !defined(_WINSOCK2API_)
73 #include <sys/timeval.h>
75 #if defined(OPENSSL_SYS_VXWORKS)
76 #include <sys/times.h>
86 #define DTLS1_VERSION 0xFEFF
87 #define DTLS1_BAD_VER 0x0100
91 #define DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 110
95 #define DTLS1_COOKIE_LENGTH 256
97 #define DTLS1_RT_HEADER_LENGTH 13
99 #define DTLS1_HM_HEADER_LENGTH 12
101 #define DTLS1_HM_BAD_FRAGMENT -2
102 #define DTLS1_HM_FRAGMENT_RETRY -3
104 #define DTLS1_CCS_HEADER_LENGTH 1
106 #ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE
107 #define DTLS1_AL_HEADER_LENGTH 7
109 #define DTLS1_AL_HEADER_LENGTH 2
112 #ifndef OPENSSL_NO_SSL_INTERN
114 #ifndef OPENSSL_NO_SCTP
115 #define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP"
122 unsigned char max_seq_num[8];
131 #ifndef OPENSSL_NO_COMP
137 unsigned short epoch;
143 unsigned long msg_len;
145 unsigned long frag_off;
146 unsigned long frag_len;
160 unsigned int read_timeouts;
163 unsigned int write_timeouts;
166 unsigned int num_alerts;
171 unsigned short epoch;
178 unsigned char *fragment;
179 unsigned char *reassembly;
184 unsigned int send_cookie;
185 unsigned char cookie[DTLS1_COOKIE_LENGTH];
186 unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH];
187 unsigned int cookie_len;
194 unsigned short r_epoch;
195 unsigned short w_epoch;
204 unsigned short handshake_write_seq;
205 unsigned short next_handshake_write_seq;
207 unsigned short handshake_read_seq;
210 unsigned char last_write_sequence[8];
217 pqueue buffered_messages;
220 pqueue sent_messages;
240 struct timeval next_timeout;
243 unsigned short timeout_duration;
247 unsigned char alert_fragment[DTLS1_AL_HEADER_LENGTH];
248 unsigned int alert_fragment_len;
249 unsigned char handshake_fragment[DTLS1_HM_HEADER_LENGTH];
250 unsigned int handshake_fragment_len;
252 unsigned int retransmitting;
253 unsigned int change_cipher_spec_ok;
255 #ifndef OPENSSL_NO_SCTP
259 int shutdown_received;
266 unsigned char *packet;
267 unsigned int packet_length;
270 #ifndef OPENSSL_NO_SCTP
278 #define DTLS1_TMO_READ_COUNT 2
279 #define DTLS1_TMO_WRITE_COUNT 2
281 #define DTLS1_TMO_ALERT_COUNT 12