60 #ifndef HEADER_DTLS1_H
61 #define HEADER_DTLS1_H
63 #include <openssl/buffer.h>
64 #include <openssl/pqueue.h>
70 #define DTLS1_VERSION 0xFEFF
71 #define DTLS1_BAD_VER 0x0100
73 #define DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 110
76 #define DTLS1_COOKIE_LENGTH 32
78 #define DTLS1_RT_HEADER_LENGTH 13
80 #define DTLS1_HM_HEADER_LENGTH 12
82 #define DTLS1_HM_BAD_FRAGMENT -2
83 #define DTLS1_HM_FRAGMENT_RETRY -3
85 #define DTLS1_CCS_HEADER_LENGTH 1
87 #define DTLS1_AL_HEADER_LENGTH 7
100 unsigned long msg_len;
102 unsigned long frag_off;
103 unsigned long frag_len;
116 unsigned int read_timeouts;
119 unsigned int write_timeouts;
122 unsigned int num_alerts;
127 unsigned short epoch;
134 unsigned char *fragment;
139 unsigned int send_cookie;
140 unsigned char cookie[DTLS1_COOKIE_LENGTH];
141 unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH];
142 unsigned int cookie_len;
149 unsigned short r_epoch;
150 unsigned short w_epoch;
159 unsigned short handshake_write_seq;
160 unsigned short next_handshake_write_seq;
162 unsigned short handshake_read_seq;
169 pqueue buffered_messages;
172 pqueue sent_messages;
183 unsigned char alert_fragment[DTLS1_AL_HEADER_LENGTH];
184 unsigned int alert_fragment_len;
185 unsigned char handshake_fragment[DTLS1_HM_HEADER_LENGTH];
186 unsigned int handshake_fragment_len;
188 unsigned int retransmitting;
194 unsigned char *packet;
195 unsigned int packet_length;
202 #define DTLS1_TMO_READ_COUNT 2
203 #define DTLS1_TMO_WRITE_COUNT 2
205 #define DTLS1_TMO_ALERT_COUNT 12