X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=ssl%2Fssl3.h;h=da47377e5785a8f8be6c7fd32b6b75bef4e1e465;hp=7c5c94d7c90789040e3caa939251934ccb6fcaaa;hb=a9188d4e173304948c7711566556602bfb3ee32f;hpb=dfeab0689f69c0b4bd3480ffd37a9cacc2f17d9c diff --git a/ssl/ssl3.h b/ssl/ssl3.h index 7c5c94d7c9..da47377e57 100644 --- a/ssl/ssl3.h +++ b/ssl/ssl3.h @@ -59,7 +59,9 @@ #ifndef HEADER_SSL3_H #define HEADER_SSL3_H -#include "buffer.h" +#include +#include +#include #ifdef __cplusplus extern "C" { @@ -156,24 +158,8 @@ extern "C" { #define SSL3_RT_MAX_PACKET_SIZE (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH) #define SSL3_RT_MAX_DATA_SIZE (1024*1024) -/* the states that a SSL3_RECORD can be in - * For SSL_read it goes - * rbuf->ENCODED -> read - * ENCODED -> we need to decode everything - call decode_record - */ - -#define SSL3_RS_BLANK 1 -#define SSL3_RS_DATA - -#define SSL3_RS_ENCODED 2 -#define SSL3_RS_READ_MORE 3 -#define SSL3_RS_WRITE_MORE -#define SSL3_RS_PLAIN 3 -#define SSL3_RS_PART_READ 4 -#define SSL3_RS_PART_WRITE 5 - -#define SSL3_MD_CLIENT_FINISHED_CONST {0x43,0x4C,0x4E,0x54} -#define SSL3_MD_SERVER_FINISHED_CONST {0x53,0x52,0x56,0x52} +#define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" +#define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" #define SSL3_VERSION 0x0300 #define SSL3_VERSION_MAJOR 0x03 @@ -203,7 +189,6 @@ extern "C" { typedef struct ssl3_record_st { /*r */ int type; /* type of record */ -/* */ /*int state;*/ /* any data in it? */ /*rw*/ unsigned int length; /* How many bytes available */ /*r */ unsigned int off; /* read/write offset into 'buf' */ /*rw*/ unsigned char *data; /* pointer to the record data */ @@ -213,11 +198,10 @@ typedef struct ssl3_record_st typedef struct ssl3_buffer_st { -/*r */ int total; /* used in non-blocking writes */ -/*r */ int wanted; /* how many more bytes we need */ -/*rw*/ int left; /* how many bytes left */ -/*rw*/ int offset; /* where to 'copy from' */ -/*rw*/ unsigned char *buf; /* SSL3_RT_MAX_PACKET_SIZE bytes */ + unsigned char *buf; /* SSL3_RT_MAX_PACKET_SIZE bytes (more if + * SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER is set) */ + int offset; /* where to 'copy from' */ + int left; /* how many bytes left */ } SSL3_BUFFER; #define SSL3_CT_RSA_SIGN 1 @@ -286,7 +270,7 @@ typedef struct ssl3_ctx_st int wpend_tot; /* number bytes written */ int wpend_type; int wpend_ret; /* number of bytes submitted */ - char *wpend_buf; + const unsigned char *wpend_buf; /* used during startup, digest all incoming/outgoing packets */ EVP_MD_CTX finish_dgst1; @@ -301,7 +285,7 @@ typedef struct ssl3_ctx_st /* we alow one fatal and one warning alert to be outstanding, * send close alert via the warning alert */ int alert_dispatch; - char send_alert[2]; + unsigned char send_alert[2]; /* This flag is set when we should renegotiate ASAP, basically when * there is no more data in the read or write buffers */ @@ -312,16 +296,23 @@ typedef struct ssl3_ctx_st int in_read_app_data; struct { - /* Actually only needs to be 16+20 for SSLv3 and 12 for TLS */ + /* actually only needs to be 16+20 */ + unsigned char cert_verify_md[EVP_MAX_MD_SIZE*2]; + + /* actually only need to be 16+20 for SSLv3 and 12 for TLS */ unsigned char finish_md[EVP_MAX_MD_SIZE*2]; + int finish_md_len; + unsigned char peer_finish_md[EVP_MAX_MD_SIZE*2]; + int peer_finish_md_len; unsigned long message_size; int message_type; /* used to hold the new cipher we are going to use */ SSL_CIPHER *new_cipher; +#ifndef NO_DH DH *dh; - +#endif /* used when SSL_ST_FLUSH_DATA is entered */ int next_state; @@ -331,22 +322,23 @@ typedef struct ssl3_ctx_st int cert_req; int ctype_num; char ctype[SSL3_CT_NUMBER]; - STACK *ca_names; + STACK_OF(X509_NAME) *ca_names; int use_rsa_tmp; int key_block_length; unsigned char *key_block; - EVP_CIPHER *new_sym_enc; - EVP_MD *new_hash; + const EVP_CIPHER *new_sym_enc; + const EVP_MD *new_hash; #ifdef HEADER_COMP_H - COMP_METHOD *new_compression; + const SSL_COMP *new_compression; #else char *new_compression; #endif int cert_request; } tmp; + } SSL3_CTX; /* SSLv3 */ @@ -394,6 +386,7 @@ typedef struct ssl3_ctx_st #define SSL3_ST_SR_CLNT_HELLO_A (0x110|SSL_ST_ACCEPT) #define SSL3_ST_SR_CLNT_HELLO_B (0x111|SSL_ST_ACCEPT) #define SSL3_ST_SR_CLNT_HELLO_C (0x112|SSL_ST_ACCEPT) +#define SSL3_ST_SR_MS_SGC (0x113|SSL_ST_ACCEPT) /* write to client */ #define SSL3_ST_SW_HELLO_REQ_A (0x120|SSL_ST_ACCEPT) #define SSL3_ST_SW_HELLO_REQ_B (0x121|SSL_ST_ACCEPT) @@ -425,7 +418,7 @@ typedef struct ssl3_ctx_st #define SSL3_ST_SW_FINISHED_A (0x1E0|SSL_ST_ACCEPT) #define SSL3_ST_SW_FINISHED_B (0x1E1|SSL_ST_ACCEPT) -#define SSL3_MT_CLIENT_REQUEST 0 +#define SSL3_MT_HELLO_REQUEST 0 #define SSL3_MT_CLIENT_HELLO 1 #define SSL3_MT_SERVER_HELLO 2 #define SSL3_MT_CERTIFICATE 11