summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl3.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/libssl/ssl3.h117
1 files changed, 2 insertions, 115 deletions
diff --git a/src/lib/libssl/ssl3.h b/src/lib/libssl/ssl3.h
index 6344176105..91cbaf29e3 100644
--- a/src/lib/libssl/ssl3.h
+++ b/src/lib/libssl/ssl3.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl3.h,v 1.44 2017/01/22 03:50:45 jsing Exp $ */ 1/* $OpenBSD: ssl3.h,v 1.45 2017/01/22 09:02:07 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -363,135 +363,22 @@ struct ssl3_state_internal_st;
363 363
364typedef struct ssl3_state_st { 364typedef struct ssl3_state_st {
365 long flags; 365 long flags;
366 int delay_buf_pop_ret;
367
368 unsigned char read_sequence[SSL3_SEQUENCE_SIZE];
369 int read_mac_secret_size;
370 unsigned char read_mac_secret[EVP_MAX_MD_SIZE];
371 unsigned char write_sequence[SSL3_SEQUENCE_SIZE];
372 int write_mac_secret_size;
373 unsigned char write_mac_secret[EVP_MAX_MD_SIZE];
374 366
375 unsigned char server_random[SSL3_RANDOM_SIZE]; 367 unsigned char server_random[SSL3_RANDOM_SIZE];
376 unsigned char client_random[SSL3_RANDOM_SIZE]; 368 unsigned char client_random[SSL3_RANDOM_SIZE];
377 369
378 /* flags for countermeasure against known-IV weakness */
379 int need_empty_fragments;
380 int empty_fragment_done;
381
382 SSL3_BUFFER rbuf; /* read IO goes into here */ 370 SSL3_BUFFER rbuf; /* read IO goes into here */
383 SSL3_BUFFER wbuf; /* write IO goes into here */ 371 SSL3_BUFFER wbuf; /* write IO goes into here */
384 372
385 SSL3_RECORD rrec; /* each decoded record goes in here */
386 SSL3_RECORD wrec; /* goes out from here */
387
388 /* storage for Alert/Handshake protocol data received but not
389 * yet processed by ssl3_read_bytes: */
390 unsigned char alert_fragment[2];
391 unsigned int alert_fragment_len;
392 unsigned char handshake_fragment[4];
393 unsigned int handshake_fragment_len;
394
395 /* partial write - check the numbers match */
396 unsigned int wnum; /* number of bytes sent so far */
397 int wpend_tot; /* number bytes written */
398 int wpend_type;
399 int wpend_ret; /* number of bytes submitted */
400 const unsigned char *wpend_buf;
401
402 /* used during startup, digest all incoming/outgoing packets */
403 BIO *handshake_buffer;
404 /* When set of handshake digests is determined, buffer is hashed
405 * and freed and MD_CTX-es for all required digests are stored in
406 * this array */
407 EVP_MD_CTX **handshake_dgst;
408 /* this is set whenerver we see a change_cipher_spec message
409 * come in when we are not looking for one */
410 int change_cipher_spec;
411
412 int warn_alert;
413 int fatal_alert;
414 /* we allow one fatal and one warning alert to be outstanding, 373 /* we allow one fatal and one warning alert to be outstanding,
415 * send close alert via the warning alert */ 374 * send close alert via the warning alert */
416 int alert_dispatch; 375 int alert_dispatch;
417 unsigned char send_alert[2]; 376 unsigned char send_alert[2];
418 377
419 /* This flag is set when we should renegotiate ASAP, basically when 378 struct {
420 * there is no more data in the read or write buffers */
421 int renegotiate;
422 int total_renegotiations;
423 int num_renegotiations;
424
425 int in_read_app_data;
426
427 struct {
428 /* actually only needs to be 16+20 */
429 unsigned char cert_verify_md[EVP_MAX_MD_SIZE*2];
430
431 /* actually only need to be 16+20 for SSLv3 and 12 for TLS */
432 unsigned char finish_md[EVP_MAX_MD_SIZE*2];
433 int finish_md_len;
434 unsigned char peer_finish_md[EVP_MAX_MD_SIZE*2];
435 int peer_finish_md_len;
436
437 unsigned long message_size;
438 int message_type;
439
440 /* used to hold the new cipher we are going to use */
441 const SSL_CIPHER *new_cipher;
442 DH *dh;
443
444 EC_KEY *ecdh; /* holds short lived ECDH key */
445
446 uint8_t *x25519;
447
448 /* used when SSL_ST_FLUSH_DATA is entered */
449 int next_state;
450
451 int reuse_message;
452
453 /* used for certificate requests */
454 int cert_req;
455 int ctype_num;
456 char ctype[SSL3_CT_NUMBER];
457 STACK_OF(X509_NAME) *ca_names;
458
459 int key_block_length;
460 unsigned char *key_block;
461
462 const EVP_CIPHER *new_sym_enc;
463 const EVP_AEAD *new_aead;
464 const EVP_MD *new_hash;
465 int new_mac_pkey_type;
466 int new_mac_secret_size; 379 int new_mac_secret_size;
467 int cert_request;
468 } tmp; 380 } tmp;
469 381
470 /* Connection binding to prevent renegotiation attacks */
471 unsigned char previous_client_finished[EVP_MAX_MD_SIZE];
472 unsigned char previous_client_finished_len;
473 unsigned char previous_server_finished[EVP_MAX_MD_SIZE];
474 unsigned char previous_server_finished_len;
475 int send_connection_binding; /* TODOEKR */
476
477 /* Set if we saw the Next Protocol Negotiation extension from our peer.
478 */
479 int next_proto_neg_seen;
480
481 /*
482 * ALPN information
483 * (we are in the process of transitioning from NPN to ALPN).
484 */
485
486 /*
487 * In a server these point to the selected ALPN protocol after the
488 * ClientHello has been processed. In a client these contain the
489 * protocol that the server selected once the ServerHello has been
490 * processed.
491 */
492 unsigned char *alpn_selected;
493 unsigned int alpn_selected_len;
494
495 struct ssl3_state_internal_st *internal; 382 struct ssl3_state_internal_st *internal;
496} SSL3_STATE; 383} SSL3_STATE;
497 384