diff options
Diffstat (limited to 'main/openssl/ssl/ssl3.h')
| -rw-r--r-- | main/openssl/ssl/ssl3.h | 104 | 
1 files changed, 85 insertions, 19 deletions
diff --git a/main/openssl/ssl/ssl3.h b/main/openssl/ssl/ssl3.h index f9268c57..9086db42 100644 --- a/main/openssl/ssl/ssl3.h +++ b/main/openssl/ssl/ssl3.h @@ -280,9 +280,6 @@ extern "C" {  #define SSL3_RT_MAX_EXTRA			(16384) -/* Default buffer length used for writen records.  Thus a generated record - * will contain plaintext no larger than this value. */ -#define SSL3_RT_DEFAULT_PLAIN_LENGTH	2048  /* Maximum plaintext length: defined by SSL/TLS standards */  #define SSL3_RT_MAX_PLAIN_LENGTH		16384  /* Maximum compression overhead: defined by SSL/TLS standards */ @@ -314,13 +311,6 @@ extern "C" {  #define SSL3_RT_MAX_PACKET_SIZE		\  		(SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH) -/* Extra space for empty fragment, headers, MAC, and padding. */ -#define SSL3_RT_DEFAULT_WRITE_OVERHEAD  256 -#define SSL3_RT_DEFAULT_PACKET_SIZE     4096 - SSL3_RT_DEFAULT_WRITE_OVERHEAD -#if SSL3_RT_DEFAULT_PLAIN_LENGTH + SSL3_RT_DEFAULT_WRITE_OVERHEAD > SSL3_RT_DEFAULT_PACKET_SIZE -#error "Insufficient space allocated for write buffers." -#endif -  #define SSL3_MD_CLIENT_FINISHED_CONST	"\x43\x4C\x4E\x54"  #define SSL3_MD_SERVER_FINISHED_CONST	"\x53\x52\x56\x52" @@ -332,6 +322,7 @@ extern "C" {  #define SSL3_RT_ALERT			21  #define SSL3_RT_HANDSHAKE		22  #define SSL3_RT_APPLICATION_DATA	23 +#define TLS1_RT_HEARTBEAT		24  #define SSL3_AL_WARNING			1  #define SSL3_AL_FATAL			2 @@ -349,6 +340,11 @@ extern "C" {  #define SSL3_AD_CERTIFICATE_UNKNOWN	46  #define SSL3_AD_ILLEGAL_PARAMETER	47	/* fatal */ +#define TLS1_HB_REQUEST		1 +#define TLS1_HB_RESPONSE	2 +	 +#ifndef OPENSSL_NO_SSL_INTERN +  typedef struct ssl3_record_st  	{  /*r */	int type;               /* type of record */ @@ -370,6 +366,8 @@ typedef struct ssl3_buffer_st  	int left;               /* how many bytes left */  	} SSL3_BUFFER; +#endif +  #define SSL3_CT_RSA_SIGN			1  #define SSL3_CT_DSS_SIGN			2  #define SSL3_CT_RSA_FIXED_DH			3 @@ -389,6 +387,20 @@ typedef struct ssl3_buffer_st  #define SSL3_FLAGS_POP_BUFFER			0x0004  #define TLS1_FLAGS_TLS_PADDING_BUG		0x0008  #define TLS1_FLAGS_SKIP_CERT_VERIFY		0x0010 +#define TLS1_FLAGS_KEEP_HANDSHAKE		0x0020 +  +/* SSL3_FLAGS_SGC_RESTART_DONE is set when we + * restart a handshake because of MS SGC and so prevents us + * from restarting the handshake in a loop. It's reset on a + * renegotiation, so effectively limits the client to one restart + * per negotiation. This limits the possibility of a DDoS + * attack where the client handshakes in a loop using SGC to + * restart. Servers which permit renegotiation can still be + * effected, but we can't prevent that. + */ +#define SSL3_FLAGS_SGC_RESTART_DONE		0x0040 + +#ifndef OPENSSL_NO_SSL_INTERN  typedef struct ssl3_state_st  	{ @@ -406,8 +418,8 @@ typedef struct ssl3_state_st  	unsigned char client_random[SSL3_RANDOM_SIZE];  	/* flags for countermeasure against known-IV weakness */ -	int need_empty_fragments; -	int empty_fragment_done; +	int need_record_splitting; +	int record_split_done;  	/* The value of 'extra' when the buffers were initialized */  	int init_extra; @@ -465,12 +477,6 @@ typedef struct ssl3_state_st  	void *server_opaque_prf_input;  	size_t server_opaque_prf_input_len; -#ifndef OPENSSL_NO_NEXTPROTONEG -	/* Set if we saw the Next Protocol Negotiation extension from -	   our peer. */ -	int next_proto_neg_seen; -#endif -  	struct	{  		/* actually only needs to be 16+20 */  		unsigned char cert_verify_md[EVP_MAX_MD_SIZE*2]; @@ -480,7 +486,7 @@ typedef struct ssl3_state_st  		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; @@ -528,14 +534,64 @@ typedef struct ssl3_state_st          unsigned char previous_server_finished[EVP_MAX_MD_SIZE];          unsigned char previous_server_finished_len;          int send_connection_binding; /* TODOEKR */ + +#ifndef OPENSSL_NO_NEXTPROTONEG +	/* Set if we saw the Next Protocol Negotiation extension from our peer. */ +	int next_proto_neg_seen; +#endif + +#ifndef OPENSSL_NO_TLSEXT +#ifndef OPENSSL_NO_EC +	/* This is set to true if we believe that this is a version of Safari +	 * running on OS X 10.6 or newer. We wish to know this because Safari +	 * on 10.8 .. 10.8.3 has broken ECDHE-ECDSA support. */ +	char is_probably_safari; +#endif /* !OPENSSL_NO_EC */ +#endif /* !OPENSSL_NO_TLSEXT */ + +	/* In a client, this means that the server supported Channel ID and that +	 * a Channel ID was sent. In a server it means that we echoed support +	 * for Channel IDs and that tlsext_channel_id will be valid after the +	 * handshake. */ +	char tlsext_channel_id_valid; +	/* For a server: +	 *     If |tlsext_channel_id_valid| is true, then this contains the +	 *     verified Channel ID from the client: a P256 point, (x,y), where +	 *     each are big-endian values. */ +	unsigned char tlsext_channel_id[64]; + +	/* ALPN information +	 * (we are in the process of transitioning from NPN to ALPN.) */ + +	/* In a server these point to the selected ALPN protocol after the +	 * ClientHello has been processed. In a client these contain the +	 * protocol that the server selected once the ServerHello has been +	 * processed. */ +	unsigned char *alpn_selected; +	unsigned alpn_selected_len; + +	/* These point to the digest function to use for signatures made with +	 * each type of public key. A NULL value indicates that the default +	 * digest should be used, which is SHA1 as of TLS 1.2. +	 * +	 * (These should be in the tmp member, but we have to put them here to +	 * ensure binary compatibility with earlier OpenSSL 1.0.* releases.) */ +	const EVP_MD *digest_rsa; +	const EVP_MD *digest_dsa; +	const EVP_MD *digest_ecdsa;  	} SSL3_STATE; +#endif  /* SSLv3 */  /*client */  /* extra state */  #define SSL3_ST_CW_FLUSH		(0x100|SSL_ST_CONNECT)  #define SSL3_ST_CUTTHROUGH_COMPLETE	(0x101|SSL_ST_CONNECT) +#ifndef OPENSSL_NO_SCTP +#define DTLS1_SCTP_ST_CW_WRITE_SOCK			(0x310|SSL_ST_CONNECT) +#define DTLS1_SCTP_ST_CR_READ_SOCK			(0x320|SSL_ST_CONNECT) +#endif	  /* write to server */  #define SSL3_ST_CW_CLNT_HELLO_A		(0x110|SSL_ST_CONNECT)  #define SSL3_ST_CW_CLNT_HELLO_B		(0x111|SSL_ST_CONNECT) @@ -567,6 +623,8 @@ typedef struct ssl3_state_st  #define SSL3_ST_CW_NEXT_PROTO_A		(0x200|SSL_ST_CONNECT)  #define SSL3_ST_CW_NEXT_PROTO_B		(0x201|SSL_ST_CONNECT)  #endif +#define SSL3_ST_CW_CHANNEL_ID_A		(0x210|SSL_ST_CONNECT) +#define SSL3_ST_CW_CHANNEL_ID_B		(0x211|SSL_ST_CONNECT)  #define SSL3_ST_CW_FINISHED_A		(0x1B0|SSL_ST_CONNECT)  #define SSL3_ST_CW_FINISHED_B		(0x1B1|SSL_ST_CONNECT)  /* read from server */ @@ -582,6 +640,10 @@ typedef struct ssl3_state_st  /* server */  /* extra state */  #define SSL3_ST_SW_FLUSH		(0x100|SSL_ST_ACCEPT) +#ifndef OPENSSL_NO_SCTP +#define DTLS1_SCTP_ST_SW_WRITE_SOCK			(0x310|SSL_ST_ACCEPT) +#define DTLS1_SCTP_ST_SR_READ_SOCK			(0x320|SSL_ST_ACCEPT) +#endif	  /* read from client */  /* Do not change the number values, they do matter */  #define SSL3_ST_SR_CLNT_HELLO_A		(0x110|SSL_ST_ACCEPT) @@ -612,10 +674,13 @@ typedef struct ssl3_state_st  #define SSL3_ST_SR_CERT_VRFY_B		(0x1A1|SSL_ST_ACCEPT)  #define SSL3_ST_SR_CHANGE_A		(0x1B0|SSL_ST_ACCEPT)  #define SSL3_ST_SR_CHANGE_B		(0x1B1|SSL_ST_ACCEPT) +#define SSL3_ST_SR_POST_CLIENT_CERT	(0x1BF|SSL_ST_ACCEPT)  #ifndef OPENSSL_NO_NEXTPROTONEG  #define SSL3_ST_SR_NEXT_PROTO_A		(0x210|SSL_ST_ACCEPT)  #define SSL3_ST_SR_NEXT_PROTO_B		(0x211|SSL_ST_ACCEPT)  #endif +#define SSL3_ST_SR_CHANNEL_ID_A		(0x220|SSL_ST_ACCEPT) +#define SSL3_ST_SR_CHANNEL_ID_B		(0x221|SSL_ST_ACCEPT)  #define SSL3_ST_SR_FINISHED_A		(0x1C0|SSL_ST_ACCEPT)  #define SSL3_ST_SR_FINISHED_B		(0x1C1|SSL_ST_ACCEPT)  /* write to client */ @@ -643,6 +708,7 @@ typedef struct ssl3_state_st  #ifndef OPENSSL_NO_NEXTPROTONEG  #define SSL3_MT_NEXT_PROTO			67  #endif +#define SSL3_MT_ENCRYPTED_EXTENSIONS		203  #define DTLS1_MT_HELLO_VERIFY_REQUEST    3  | 
