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 DTLS_MAX_VERSION DTLS1_VERSION
89 #define DTLS1_BAD_VER 0x0100
93 #define DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 110
97 #define DTLS1_COOKIE_LENGTH 256
99 #define DTLS1_RT_HEADER_LENGTH 13
101 #define DTLS1_HM_HEADER_LENGTH 12
103 #define DTLS1_HM_BAD_FRAGMENT -2
104 #define DTLS1_HM_FRAGMENT_RETRY -3
106 #define DTLS1_CCS_HEADER_LENGTH 1
108 #ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE
109 #define DTLS1_AL_HEADER_LENGTH 7
111 #define DTLS1_AL_HEADER_LENGTH 2
114 #ifndef OPENSSL_NO_SSL_INTERN
116 #ifndef OPENSSL_NO_SCTP
117 #define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP"
124 unsigned char max_seq_num[8];
133 #ifndef OPENSSL_NO_COMP
139 unsigned short epoch;
145 unsigned long msg_len;
147 unsigned long frag_off;
148 unsigned long frag_len;
162 unsigned int read_timeouts;
165 unsigned int write_timeouts;
168 unsigned int num_alerts;
173 unsigned short epoch;
180 unsigned char *fragment;
181 unsigned char *reassembly;
186 unsigned int send_cookie;
187 unsigned char cookie[DTLS1_COOKIE_LENGTH];
188 unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH];
189 unsigned int cookie_len;
196 unsigned short r_epoch;
197 unsigned short w_epoch;
206 unsigned short handshake_write_seq;
207 unsigned short next_handshake_write_seq;
209 unsigned short handshake_read_seq;
212 unsigned char last_write_sequence[8];
219 pqueue buffered_messages;
222 pqueue sent_messages;
242 struct timeval next_timeout;
245 unsigned short timeout_duration;
249 unsigned char alert_fragment[DTLS1_AL_HEADER_LENGTH];
250 unsigned int alert_fragment_len;
251 unsigned char handshake_fragment[DTLS1_HM_HEADER_LENGTH];
252 unsigned int handshake_fragment_len;
254 unsigned int retransmitting;
255 unsigned int change_cipher_spec_ok;
257 #ifndef OPENSSL_NO_SCTP
261 int shutdown_received;
268 unsigned char *packet;
269 unsigned int packet_length;
272 #ifndef OPENSSL_NO_SCTP
280 #define DTLS1_TMO_READ_COUNT 2
281 #define DTLS1_TMO_WRITE_COUNT 2
283 #define DTLS1_TMO_ALERT_COUNT 12