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
66 # include <resource.h>
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>
78 # include <sys/time.h>
86 # define DTLS1_VERSION 0xFEFF
87 # define DTLS1_2_VERSION 0xFEFD
88 # define DTLS_MAX_VERSION DTLS1_2_VERSION
89 # define DTLS1_VERSION_MAJOR 0xFE
91 # define DTLS1_BAD_VER 0x0100
94 # define DTLS_ANY_VERSION 0x1FFFF
98 # define DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 110
102 # define DTLS1_COOKIE_LENGTH 256
104 # define DTLS1_RT_HEADER_LENGTH 13
106 # define DTLS1_HM_HEADER_LENGTH 12
108 # define DTLS1_HM_BAD_FRAGMENT -2
109 # define DTLS1_HM_FRAGMENT_RETRY -3
111 # define DTLS1_CCS_HEADER_LENGTH 1
113 # ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE
114 # define DTLS1_AL_HEADER_LENGTH 7
116 # define DTLS1_AL_HEADER_LENGTH 2
119 # ifndef OPENSSL_NO_SSL_INTERN
121 # ifndef OPENSSL_NO_SCTP
122 # define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP"
126 # define DTLS1_MAX_MTU_OVERHEAD 48
131 unsigned char max_seq_num[8];
138 # ifndef OPENSSL_NO_COMP
144 unsigned short epoch;
149 unsigned long msg_len;
151 unsigned long frag_off;
152 unsigned long frag_len;
164 unsigned int read_timeouts;
166 unsigned int write_timeouts;
168 unsigned int num_alerts;
172 unsigned short epoch;
178 unsigned char *fragment;
179 unsigned char *reassembly;
183 unsigned int send_cookie;
184 unsigned char cookie[DTLS1_COOKIE_LENGTH];
185 unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH];
186 unsigned int cookie_len;
192 unsigned short r_epoch;
193 unsigned short w_epoch;
199 unsigned short handshake_write_seq;
200 unsigned short next_handshake_write_seq;
201 unsigned short handshake_read_seq;
203 unsigned char last_write_sequence[8];
208 pqueue buffered_messages;
210 pqueue sent_messages;
219 unsigned int link_mtu;
227 struct timeval next_timeout;
229 unsigned short timeout_duration;
234 unsigned char alert_fragment[DTLS1_AL_HEADER_LENGTH];
235 unsigned int alert_fragment_len;
236 unsigned char handshake_fragment[DTLS1_HM_HEADER_LENGTH];
237 unsigned int handshake_fragment_len;
238 unsigned int retransmitting;
243 unsigned int change_cipher_spec_ok;
244 # ifndef OPENSSL_NO_SCTP
247 int shutdown_received;
252 unsigned char *packet;
253 unsigned int packet_length;
256 # ifndef OPENSSL_NO_SCTP
264 # define DTLS1_TMO_READ_COUNT 2
265 # define DTLS1_TMO_WRITE_COUNT 2
267 # define DTLS1_TMO_ALERT_COUNT 12