summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl3.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl3.h')
-rw-r--r--src/lib/libssl/ssl3.h95
1 files changed, 31 insertions, 64 deletions
diff --git a/src/lib/libssl/ssl3.h b/src/lib/libssl/ssl3.h
index 2a9714fc19..f616763830 100644
--- a/src/lib/libssl/ssl3.h
+++ b/src/lib/libssl/ssl3.h
@@ -158,24 +158,8 @@ extern "C" {
158#define SSL3_RT_MAX_PACKET_SIZE (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH) 158#define SSL3_RT_MAX_PACKET_SIZE (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH)
159#define SSL3_RT_MAX_DATA_SIZE (1024*1024) 159#define SSL3_RT_MAX_DATA_SIZE (1024*1024)
160 160
161/* the states that a SSL3_RECORD can be in 161#define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54"
162 * For SSL_read it goes 162#define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52"
163 * rbuf->ENCODED -> read
164 * ENCODED -> we need to decode everything - call decode_record
165 */
166
167#define SSL3_RS_BLANK 1
168#define SSL3_RS_DATA
169
170#define SSL3_RS_ENCODED 2
171#define SSL3_RS_READ_MORE 3
172#define SSL3_RS_WRITE_MORE
173#define SSL3_RS_PLAIN 3
174#define SSL3_RS_PART_READ 4
175#define SSL3_RS_PART_WRITE 5
176
177#define SSL3_MD_CLIENT_FINISHED_CONST {0x43,0x4C,0x4E,0x54}
178#define SSL3_MD_SERVER_FINISHED_CONST {0x53,0x52,0x56,0x52}
179 163
180#define SSL3_VERSION 0x0300 164#define SSL3_VERSION 0x0300
181#define SSL3_VERSION_MAJOR 0x03 165#define SSL3_VERSION_MAJOR 0x03
@@ -204,22 +188,20 @@ extern "C" {
204 188
205typedef struct ssl3_record_st 189typedef struct ssl3_record_st
206 { 190 {
207/*r */ int type; /* type of record */ 191/*r */ int type; /* type of record */
208/* */ /*int state;*/ /* any data in it? */ 192/*rw*/ unsigned int length; /* How many bytes available */
209/*rw*/ unsigned int length; /* How many bytes available */ 193/*r */ unsigned int off; /* read/write offset into 'buf' */
210/*r */ unsigned int off; /* read/write offset into 'buf' */ 194/*rw*/ unsigned char *data; /* pointer to the record data */
211/*rw*/ unsigned char *data; /* pointer to the record data */ 195/*rw*/ unsigned char *input; /* where the decode bytes are */
212/*rw*/ unsigned char *input; /* where the decode bytes are */ 196/*r */ unsigned char *comp; /* only used with decompression - malloc()ed */
213/*r */ unsigned char *comp; /* only used with decompression - malloc()ed */
214 } SSL3_RECORD; 197 } SSL3_RECORD;
215 198
216typedef struct ssl3_buffer_st 199typedef struct ssl3_buffer_st
217 { 200 {
218/*r */ int total; /* used in non-blocking writes */ 201 unsigned char *buf; /* SSL3_RT_MAX_PACKET_SIZE bytes (more if
219/*r */ int wanted; /* how many more bytes we need */ 202 * SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER is set) */
220/*rw*/ int left; /* how many bytes left */ 203 int offset; /* where to 'copy from' */
221/*rw*/ int offset; /* where to 'copy from' */ 204 int left; /* how many bytes left */
222/*rw*/ unsigned char *buf; /* SSL3_RT_MAX_PACKET_SIZE bytes */
223 } SSL3_BUFFER; 205 } SSL3_BUFFER;
224 206
225#define SSL3_CT_RSA_SIGN 1 207#define SSL3_CT_RSA_SIGN 1
@@ -236,34 +218,7 @@ typedef struct ssl3_buffer_st
236#define SSL3_FLAGS_POP_BUFFER 0x0004 218#define SSL3_FLAGS_POP_BUFFER 0x0004
237#define TLS1_FLAGS_TLS_PADDING_BUG 0x0008 219#define TLS1_FLAGS_TLS_PADDING_BUG 0x0008
238 220
239#if 0 221typedef struct ssl3_state_st
240#define AD_CLOSE_NOTIFY 0
241#define AD_UNEXPECTED_MESSAGE 1
242#define AD_BAD_RECORD_MAC 2
243#define AD_DECRYPTION_FAILED 3
244#define AD_RECORD_OVERFLOW 4
245#define AD_DECOMPRESSION_FAILURE 5 /* fatal */
246#define AD_HANDSHAKE_FAILURE 6 /* fatal */
247#define AD_NO_CERTIFICATE 7 /* Not under TLS */
248#define AD_BAD_CERTIFICATE 8
249#define AD_UNSUPPORTED_CERTIFICATE 9
250#define AD_CERTIFICATE_REVOKED 10
251#define AD_CERTIFICATE_EXPIRED 11
252#define AD_CERTIFICATE_UNKNOWN 12
253#define AD_ILLEGAL_PARAMETER 13 /* fatal */
254#define AD_UNKNOWN_CA 14 /* fatal */
255#define AD_ACCESS_DENIED 15 /* fatal */
256#define AD_DECODE_ERROR 16 /* fatal */
257#define AD_DECRYPT_ERROR 17
258#define AD_EXPORT_RESTRICION 18 /* fatal */
259#define AD_PROTOCOL_VERSION 19 /* fatal */
260#define AD_INSUFFICIENT_SECURITY 20 /* fatal */
261#define AD_INTERNAL_ERROR 21 /* fatal */
262#define AD_USER_CANCLED 22
263#define AD_NO_RENEGOTIATION 23
264#endif
265
266typedef struct ssl3_ctx_st
267 { 222 {
268 long flags; 223 long flags;
269 int delay_buf_pop_ret; 224 int delay_buf_pop_ret;
@@ -278,10 +233,16 @@ typedef struct ssl3_ctx_st
278 233
279 SSL3_BUFFER rbuf; /* read IO goes into here */ 234 SSL3_BUFFER rbuf; /* read IO goes into here */
280 SSL3_BUFFER wbuf; /* write IO goes into here */ 235 SSL3_BUFFER wbuf; /* write IO goes into here */
236
281 SSL3_RECORD rrec; /* each decoded record goes in here */ 237 SSL3_RECORD rrec; /* each decoded record goes in here */
282 SSL3_RECORD wrec; /* goes out from here */ 238 SSL3_RECORD wrec; /* goes out from here */
283 /* Used by ssl3_read_n to point 239
284 * to input data packet */ 240 /* storage for Alert/Handshake protocol data received but not
241 * yet processed by ssl3_read_bytes: */
242 unsigned char alert_fragment[2];
243 unsigned int alert_fragment_len;
244 unsigned char handshake_fragment[4];
245 unsigned int handshake_fragment_len;
285 246
286 /* partial write - check the numbers match */ 247 /* partial write - check the numbers match */
287 unsigned int wnum; /* number of bytes sent so far */ 248 unsigned int wnum; /* number of bytes sent so far */
@@ -300,7 +261,7 @@ typedef struct ssl3_ctx_st
300 261
301 int warn_alert; 262 int warn_alert;
302 int fatal_alert; 263 int fatal_alert;
303 /* we alow one fatal and one warning alert to be outstanding, 264 /* we allow one fatal and one warning alert to be outstanding,
304 * send close alert via the warning alert */ 265 * send close alert via the warning alert */
305 int alert_dispatch; 266 int alert_dispatch;
306 unsigned char send_alert[2]; 267 unsigned char send_alert[2];
@@ -314,8 +275,14 @@ typedef struct ssl3_ctx_st
314 int in_read_app_data; 275 int in_read_app_data;
315 276
316 struct { 277 struct {
317 /* Actually only needs to be 16+20 for SSLv3 and 12 for TLS */ 278 /* actually only needs to be 16+20 */
279 unsigned char cert_verify_md[EVP_MAX_MD_SIZE*2];
280
281 /* actually only need to be 16+20 for SSLv3 and 12 for TLS */
318 unsigned char finish_md[EVP_MAX_MD_SIZE*2]; 282 unsigned char finish_md[EVP_MAX_MD_SIZE*2];
283 int finish_md_len;
284 unsigned char peer_finish_md[EVP_MAX_MD_SIZE*2];
285 int peer_finish_md_len;
319 286
320 unsigned long message_size; 287 unsigned long message_size;
321 int message_type; 288 int message_type;
@@ -351,7 +318,7 @@ typedef struct ssl3_ctx_st
351 int cert_request; 318 int cert_request;
352 } tmp; 319 } tmp;
353 320
354 } SSL3_CTX; 321 } SSL3_STATE;
355 322
356/* SSLv3 */ 323/* SSLv3 */
357/*client */ 324/*client */
@@ -429,7 +396,7 @@ typedef struct ssl3_ctx_st
429#define SSL3_ST_SW_FINISHED_A (0x1E0|SSL_ST_ACCEPT) 396#define SSL3_ST_SW_FINISHED_A (0x1E0|SSL_ST_ACCEPT)
430#define SSL3_ST_SW_FINISHED_B (0x1E1|SSL_ST_ACCEPT) 397#define SSL3_ST_SW_FINISHED_B (0x1E1|SSL_ST_ACCEPT)
431 398
432#define SSL3_MT_CLIENT_REQUEST 0 399#define SSL3_MT_HELLO_REQUEST 0
433#define SSL3_MT_CLIENT_HELLO 1 400#define SSL3_MT_CLIENT_HELLO 1
434#define SSL3_MT_SERVER_HELLO 2 401#define SSL3_MT_SERVER_HELLO 2
435#define SSL3_MT_CERTIFICATE 11 402#define SSL3_MT_CERTIFICATE 11