mirror of https://github.com/openssl/openssl.git
				
				
				
			Add support for new TLS export ciphersuites.
This commit is contained in:
		
							parent
							
								
									abf87f79f7
								
							
						
					
					
						commit
						06ab81f9f7
					
				
							
								
								
									
										6
									
								
								CHANGES
								
								
								
								
							
							
						
						
									
										6
									
								
								CHANGES
								
								
								
								
							| 
						 | 
				
			
			@ -5,6 +5,12 @@
 | 
			
		|||
 | 
			
		||||
 Changes between 0.9.1c and 0.9.2
 | 
			
		||||
 | 
			
		||||
  *) Add support for new TLS ciphersuites, TLS_RSA_EXPORT56_WITH_RC4_56_MD5,
 | 
			
		||||
     TLS_RSA_EXPORT56_WITH_RC2_CBC_56_MD5 and
 | 
			
		||||
     TLS_RSA_EXPORT56_WITH_DES_CBC_SHA, as specified in "56-bit Export Cipher
 | 
			
		||||
     Suites For TLS", draft-ietf-tls-56-bit-ciphersuites-00.txt.
 | 
			
		||||
     [Ben Laurie]
 | 
			
		||||
 | 
			
		||||
  *) Add preliminary config info for new extension code.
 | 
			
		||||
     [Steve Henson]
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -290,7 +290,7 @@ SSL *s;
 | 
			
		|||
						for (j=0; j<sk_num(sk); j++)
 | 
			
		||||
							{
 | 
			
		||||
							c=(SSL_CIPHER *)sk_value(sk,j);
 | 
			
		||||
							if (!(c->algorithms & SSL_EXP))
 | 
			
		||||
							if (!SSL_C_IS_EXPORT(c))
 | 
			
		||||
								{
 | 
			
		||||
								if ((c->id>>24L) == 2L)
 | 
			
		||||
									ne2=1;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -568,7 +568,7 @@ SSL *s;
 | 
			
		|||
 | 
			
		||||
		if (sess->cipher->algorithm2 & SSL2_CF_8_BYTE_ENC)
 | 
			
		||||
			enc=8;
 | 
			
		||||
		else if (sess->cipher->algorithms & SSL_EXP)
 | 
			
		||||
		else if (SSL_C_IS_EXPORT(sess->cipher))
 | 
			
		||||
			enc=5;
 | 
			
		||||
		else
 | 
			
		||||
			enc=i;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										16
									
								
								ssl/s2_lib.c
								
								
								
								
							
							
						
						
									
										16
									
								
								ssl/s2_lib.c
								
								
								
								
							| 
						 | 
				
			
			@ -78,7 +78,7 @@ SSL_CIPHER ssl2_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL2_TXT_NULL_WITH_MD5,
 | 
			
		||||
	SSL2_CK_NULL_WITH_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_eNULL|SSL_MD5|SSL_EXP|SSL_SSLV2,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_eNULL|SSL_MD5|SSL_EXP40|SSL_SSLV2,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -88,7 +88,7 @@ SSL_CIPHER ssl2_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL2_TXT_RC4_128_EXPORT40_WITH_MD5,
 | 
			
		||||
	SSL2_CK_RC4_128_EXPORT40_WITH_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5|SSL_EXP|SSL_SSLV2,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5|SSL_EXP40|SSL_SSLV2,
 | 
			
		||||
	SSL2_CF_5_BYTE_ENC,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +97,7 @@ SSL_CIPHER ssl2_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL2_TXT_RC4_128_WITH_MD5,
 | 
			
		||||
	SSL2_CK_RC4_128_WITH_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5|SSL_NOT_EXP|SSL_SSLV2|SSL_MEDIUM,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5|_SSL_NOT_EXP|SSL_SSLV2|SSL_MEDIUM,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -106,7 +106,7 @@ SSL_CIPHER ssl2_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5,
 | 
			
		||||
	SSL2_CK_RC2_128_CBC_EXPORT40_WITH_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5|SSL_EXP|SSL_SSLV2,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5|SSL_EXP40|SSL_SSLV2,
 | 
			
		||||
	SSL2_CF_5_BYTE_ENC,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +115,7 @@ SSL_CIPHER ssl2_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL2_TXT_RC2_128_CBC_WITH_MD5,
 | 
			
		||||
	SSL2_CK_RC2_128_CBC_WITH_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5|SSL_NOT_EXP|SSL_SSLV2|SSL_MEDIUM,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5|_SSL_NOT_EXP|SSL_SSLV2|SSL_MEDIUM,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -124,7 +124,7 @@ SSL_CIPHER ssl2_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL2_TXT_IDEA_128_CBC_WITH_MD5,
 | 
			
		||||
	SSL2_CK_IDEA_128_CBC_WITH_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_IDEA|SSL_MD5|SSL_NOT_EXP|SSL_SSLV2|SSL_MEDIUM,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_IDEA|SSL_MD5|_SSL_NOT_EXP|SSL_SSLV2|SSL_MEDIUM,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +133,7 @@ SSL_CIPHER ssl2_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL2_TXT_DES_64_CBC_WITH_MD5,
 | 
			
		||||
	SSL2_CK_DES_64_CBC_WITH_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_DES|SSL_MD5|SSL_NOT_EXP|SSL_SSLV2|SSL_LOW,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_DES|SSL_MD5|_SSL_NOT_EXP|SSL_SSLV2|SSL_LOW,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -142,7 +142,7 @@ SSL_CIPHER ssl2_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5,
 | 
			
		||||
	SSL2_CK_DES_192_EDE3_CBC_WITH_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_3DES|SSL_MD5|SSL_NOT_EXP|SSL_SSLV2|SSL_HIGH,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_3DES|SSL_MD5|_SSL_NOT_EXP|SSL_SSLV2|SSL_HIGH,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -401,7 +401,7 @@ SSL *s;
 | 
			
		|||
		&(p[s->s2->tmp.clear]),&(p[s->s2->tmp.clear]),
 | 
			
		||||
		(s->s2->ssl2_rollback)?RSA_SSLV23_PADDING:RSA_PKCS1_PADDING);
 | 
			
		||||
 | 
			
		||||
	export=(s->session->cipher->algorithms & SSL_EXP)?1:0;
 | 
			
		||||
	export=SSL_C_IS_EXPORT(s->session->cipher);
 | 
			
		||||
	
 | 
			
		||||
	if (!ssl_cipher_get_evp(s->session,&c,&md,NULL))
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1689,12 +1689,13 @@ SSL *s;
 | 
			
		|||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	if ((algs & SSL_EXP) && !has_bits(i,EVP_PKT_EXP))
 | 
			
		||||
	if (SSL_IS_EXPORT(algs) && !has_bits(i,EVP_PKT_EXP))
 | 
			
		||||
		{
 | 
			
		||||
#ifndef NO_RSA
 | 
			
		||||
		if (algs & SSL_kRSA)
 | 
			
		||||
			{
 | 
			
		||||
			if ((rsa == NULL) || (RSA_size(rsa) > 512))
 | 
			
		||||
			if (rsa == NULL
 | 
			
		||||
			    || RSA_size(rsa) > SSL_EXPORT_PKEYLENGTH(algs))
 | 
			
		||||
				{
 | 
			
		||||
				SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_EXPORT_TMP_RSA_KEY);
 | 
			
		||||
				goto f_err;
 | 
			
		||||
| 
						 | 
				
			
			@ -1705,7 +1706,8 @@ SSL *s;
 | 
			
		|||
#ifndef NO_DH
 | 
			
		||||
			if (algs & (SSL_kEDH|SSL_kDHr|SSL_kDHd))
 | 
			
		||||
			    {
 | 
			
		||||
			if ((dh == NULL) || (DH_size(dh) > 512))
 | 
			
		||||
			    if (dh == NULL
 | 
			
		||||
				|| DH_size(dh) > SSL_EXPORT_PKEYLENGTH(algs))
 | 
			
		||||
				{
 | 
			
		||||
				SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_EXPORT_TMP_DH_KEY);
 | 
			
		||||
				goto f_err;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -141,7 +141,7 @@ int which;
 | 
			
		|||
	MD5_CTX md;
 | 
			
		||||
	int exp,n,i,j,k,cl;
 | 
			
		||||
 | 
			
		||||
	exp=(s->s3->tmp.new_cipher->algorithms & SSL_EXPORT)?1:0;
 | 
			
		||||
	exp=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher);
 | 
			
		||||
	c=s->s3->tmp.new_sym_enc;
 | 
			
		||||
	m=s->s3->tmp.new_hash;
 | 
			
		||||
	if (s->s3->tmp.new_compression == NULL)
 | 
			
		||||
| 
						 | 
				
			
			@ -213,7 +213,8 @@ int which;
 | 
			
		|||
	p=s->s3->tmp.key_block;
 | 
			
		||||
	i=EVP_MD_size(m);
 | 
			
		||||
	cl=EVP_CIPHER_key_length(c);
 | 
			
		||||
	j=exp ? (cl < 5 ? cl : 5) : cl;
 | 
			
		||||
	j=exp ? (cl < SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher) ?
 | 
			
		||||
		 cl : SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher)) : cl;
 | 
			
		||||
	/* Was j=(exp)?5:EVP_CIPHER_key_length(c); */
 | 
			
		||||
	k=EVP_CIPHER_iv_length(c);
 | 
			
		||||
	if (	(which == SSL3_CHANGE_CIPHER_CLIENT_WRITE) ||
 | 
			
		||||
| 
						 | 
				
			
			@ -283,7 +284,7 @@ SSL *s;
 | 
			
		|||
	unsigned char *p;
 | 
			
		||||
	EVP_CIPHER *c;
 | 
			
		||||
	EVP_MD *hash;
 | 
			
		||||
	int num,exp;
 | 
			
		||||
	int num;
 | 
			
		||||
	SSL_COMP *comp;
 | 
			
		||||
 | 
			
		||||
	if (s->s3->tmp.key_block_length != 0)
 | 
			
		||||
| 
						 | 
				
			
			@ -299,8 +300,6 @@ SSL *s;
 | 
			
		|||
	s->s3->tmp.new_hash=hash;
 | 
			
		||||
	s->s3->tmp.new_compression=comp;
 | 
			
		||||
 | 
			
		||||
	exp=(s->session->cipher->algorithms & SSL_EXPORT)?1:0;
 | 
			
		||||
 | 
			
		||||
	num=EVP_CIPHER_key_length(c)+EVP_MD_size(hash)+EVP_CIPHER_iv_length(c);
 | 
			
		||||
	num*=2;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										91
									
								
								ssl/s3_lib.c
								
								
								
								
							
							
						
						
									
										91
									
								
								ssl/s3_lib.c
								
								
								
								
							| 
						 | 
				
			
			@ -77,7 +77,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_RSA_NULL_MD5,
 | 
			
		||||
	SSL3_CK_RSA_NULL_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_eNULL |SSL_MD5|SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_eNULL |SSL_MD5|_SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +86,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_RSA_NULL_SHA,
 | 
			
		||||
	SSL3_CK_RSA_NULL_SHA,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_eNULL |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_eNULL |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +97,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_ADH_RC4_40_MD5,
 | 
			
		||||
	SSL3_CK_ADH_RC4_40_MD5,
 | 
			
		||||
	SSL_kEDH |SSL_aNULL|SSL_RC4  |SSL_MD5 |SSL_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kEDH |SSL_aNULL|SSL_RC4  |SSL_MD5 |SSL_EXP40|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -106,7 +106,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_ADH_RC4_128_MD5,
 | 
			
		||||
	SSL3_CK_ADH_RC4_128_MD5,
 | 
			
		||||
	SSL_kEDH |SSL_aNULL|SSL_RC4  |SSL_MD5|SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kEDH |SSL_aNULL|SSL_RC4  |SSL_MD5|_SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +115,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_ADH_DES_40_CBC_SHA,
 | 
			
		||||
	SSL3_CK_ADH_DES_40_CBC_SHA,
 | 
			
		||||
	SSL_kEDH |SSL_aNULL|SSL_DES|SSL_SHA1|SSL_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kEDH |SSL_aNULL|SSL_DES|SSL_SHA1|SSL_EXP40|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -124,7 +124,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_ADH_DES_64_CBC_SHA,
 | 
			
		||||
	SSL3_CK_ADH_DES_64_CBC_SHA,
 | 
			
		||||
	SSL_kEDH |SSL_aNULL|SSL_DES  |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kEDH |SSL_aNULL|SSL_DES  |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +133,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_ADH_DES_192_CBC_SHA,
 | 
			
		||||
	SSL3_CK_ADH_DES_192_CBC_SHA,
 | 
			
		||||
	SSL_kEDH |SSL_aNULL|SSL_3DES |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kEDH |SSL_aNULL|SSL_3DES |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -144,7 +144,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_RSA_RC4_40_MD5,
 | 
			
		||||
	SSL3_CK_RSA_RC4_40_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC4  |SSL_MD5 |SSL_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC4  |SSL_MD5 |SSL_EXP40|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +153,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_RSA_RC4_128_MD5,
 | 
			
		||||
	SSL3_CK_RSA_RC4_128_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC4  |SSL_MD5|SSL_NOT_EXP|SSL_SSLV3|SSL_MEDIUM,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC4  |SSL_MD5|_SSL_NOT_EXP|SSL_SSLV3|SSL_MEDIUM,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +162,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_RSA_RC4_128_SHA,
 | 
			
		||||
	SSL3_CK_RSA_RC4_128_SHA,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC4  |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_MEDIUM,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC4  |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_MEDIUM,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -171,7 +171,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_RSA_RC2_40_MD5,
 | 
			
		||||
	SSL3_CK_RSA_RC2_40_MD5,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC2  |SSL_MD5 |SSL_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_RC2  |SSL_MD5 |SSL_EXP40|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -180,7 +180,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_RSA_IDEA_128_SHA,
 | 
			
		||||
	SSL3_CK_RSA_IDEA_128_SHA,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_IDEA |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_MEDIUM,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_IDEA |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_MEDIUM,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -189,7 +189,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_RSA_DES_40_CBC_SHA,
 | 
			
		||||
	SSL3_CK_RSA_DES_40_CBC_SHA,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA1|SSL_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA1|SSL_EXP40|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -198,7 +198,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_RSA_DES_64_CBC_SHA,
 | 
			
		||||
	SSL3_CK_RSA_DES_64_CBC_SHA,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_DES  |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_LOW,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_DES  |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_LOW,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -207,7 +207,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_RSA_DES_192_CBC3_SHA,
 | 
			
		||||
	SSL3_CK_RSA_DES_192_CBC3_SHA,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_3DES |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_HIGH,
 | 
			
		||||
	SSL_kRSA|SSL_aRSA|SSL_3DES |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_HIGH,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -218,7 +218,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	0,
 | 
			
		||||
	SSL3_TXT_DH_DSS_DES_40_CBC_SHA,
 | 
			
		||||
	SSL3_CK_DH_DSS_DES_40_CBC_SHA,
 | 
			
		||||
	SSL_kDHd |SSL_aDH|SSL_DES|SSL_SHA1|SSL_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kDHd |SSL_aDH|SSL_DES|SSL_SHA1|SSL_EXP40|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -227,7 +227,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	0,
 | 
			
		||||
	SSL3_TXT_DH_DSS_DES_64_CBC_SHA,
 | 
			
		||||
	SSL3_CK_DH_DSS_DES_64_CBC_SHA,
 | 
			
		||||
	SSL_kDHd |SSL_aDH|SSL_DES  |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_LOW,
 | 
			
		||||
	SSL_kDHd |SSL_aDH|SSL_DES  |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_LOW,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -236,7 +236,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	0,
 | 
			
		||||
	SSL3_TXT_DH_DSS_DES_192_CBC3_SHA,
 | 
			
		||||
	SSL3_CK_DH_DSS_DES_192_CBC3_SHA,
 | 
			
		||||
	SSL_kDHd |SSL_aDH|SSL_3DES |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_HIGH,
 | 
			
		||||
	SSL_kDHd |SSL_aDH|SSL_3DES |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_HIGH,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -245,7 +245,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	0,
 | 
			
		||||
	SSL3_TXT_DH_RSA_DES_40_CBC_SHA,
 | 
			
		||||
	SSL3_CK_DH_RSA_DES_40_CBC_SHA,
 | 
			
		||||
	SSL_kDHr |SSL_aDH|SSL_DES|SSL_SHA1|SSL_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kDHr |SSL_aDH|SSL_DES|SSL_SHA1|SSL_EXP40|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -254,7 +254,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	0,
 | 
			
		||||
	SSL3_TXT_DH_RSA_DES_64_CBC_SHA,
 | 
			
		||||
	SSL3_CK_DH_RSA_DES_64_CBC_SHA,
 | 
			
		||||
	SSL_kDHr |SSL_aDH|SSL_DES  |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_LOW,
 | 
			
		||||
	SSL_kDHr |SSL_aDH|SSL_DES  |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_LOW,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -263,7 +263,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	0,
 | 
			
		||||
	SSL3_TXT_DH_RSA_DES_192_CBC3_SHA,
 | 
			
		||||
	SSL3_CK_DH_RSA_DES_192_CBC3_SHA,
 | 
			
		||||
	SSL_kDHr |SSL_aDH|SSL_3DES |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_HIGH,
 | 
			
		||||
	SSL_kDHr |SSL_aDH|SSL_3DES |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_HIGH,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -274,7 +274,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_EDH_DSS_DES_40_CBC_SHA,
 | 
			
		||||
	SSL3_CK_EDH_DSS_DES_40_CBC_SHA,
 | 
			
		||||
	SSL_kEDH|SSL_aDSS|SSL_DES|SSL_SHA1|SSL_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kEDH|SSL_aDSS|SSL_DES|SSL_SHA1|SSL_EXP40|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -283,7 +283,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_EDH_DSS_DES_64_CBC_SHA,
 | 
			
		||||
	SSL3_CK_EDH_DSS_DES_64_CBC_SHA,
 | 
			
		||||
	SSL_kEDH|SSL_aDSS|SSL_DES  |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_LOW,
 | 
			
		||||
	SSL_kEDH|SSL_aDSS|SSL_DES  |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_LOW,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -292,7 +292,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA,
 | 
			
		||||
	SSL3_CK_EDH_DSS_DES_192_CBC3_SHA,
 | 
			
		||||
	SSL_kEDH|SSL_aDSS|SSL_3DES |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_HIGH,
 | 
			
		||||
	SSL_kEDH|SSL_aDSS|SSL_3DES |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_HIGH,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -301,7 +301,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_EDH_RSA_DES_40_CBC_SHA,
 | 
			
		||||
	SSL3_CK_EDH_RSA_DES_40_CBC_SHA,
 | 
			
		||||
	SSL_kEDH|SSL_aRSA|SSL_DES|SSL_SHA1|SSL_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kEDH|SSL_aRSA|SSL_DES|SSL_SHA1|SSL_EXP40|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -310,7 +310,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_EDH_RSA_DES_64_CBC_SHA,
 | 
			
		||||
	SSL3_CK_EDH_RSA_DES_64_CBC_SHA,
 | 
			
		||||
	SSL_kEDH|SSL_aRSA|SSL_DES  |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_LOW,
 | 
			
		||||
	SSL_kEDH|SSL_aRSA|SSL_DES  |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_LOW,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -319,7 +319,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	1,
 | 
			
		||||
	SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA,
 | 
			
		||||
	SSL3_CK_EDH_RSA_DES_192_CBC3_SHA,
 | 
			
		||||
	SSL_kEDH|SSL_aRSA|SSL_3DES |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3|SSL_HIGH,
 | 
			
		||||
	SSL_kEDH|SSL_aRSA|SSL_3DES |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3|SSL_HIGH,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -330,7 +330,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	0,
 | 
			
		||||
	SSL3_TXT_FZA_DMS_NULL_SHA,
 | 
			
		||||
	SSL3_CK_FZA_DMS_NULL_SHA,
 | 
			
		||||
	SSL_kFZA|SSL_aFZA |SSL_eNULL |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kFZA|SSL_aFZA |SSL_eNULL |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -340,7 +340,7 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	0,
 | 
			
		||||
	SSL3_TXT_FZA_DMS_FZA_SHA,
 | 
			
		||||
	SSL3_CK_FZA_DMS_FZA_SHA,
 | 
			
		||||
	SSL_kFZA|SSL_aFZA |SSL_eFZA |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kFZA|SSL_aFZA |SSL_eFZA |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -350,11 +350,40 @@ SSL_CIPHER ssl3_ciphers[]={
 | 
			
		|||
	0,
 | 
			
		||||
	SSL3_TXT_FZA_DMS_RC4_SHA,
 | 
			
		||||
	SSL3_CK_FZA_DMS_RC4_SHA,
 | 
			
		||||
	SSL_kFZA|SSL_aFZA |SSL_RC4  |SSL_SHA1|SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	SSL_kFZA|SSL_aFZA |SSL_RC4  |SSL_SHA1|_SSL_NOT_EXP|SSL_SSLV3,
 | 
			
		||||
	0,
 | 
			
		||||
	SSL_ALL_CIPHERS,
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	/* New TLS Export CipherSuites */
 | 
			
		||||
	/* Cipher 60 */
 | 
			
		||||
	    {
 | 
			
		||||
	    1,
 | 
			
		||||
	    TLS1_TXT_RSA_EXPORT56_WITH_RC4_56_MD5,
 | 
			
		||||
	    TLS1_CK_RSA_EXPORT56_WITH_RC4_56_MD5,
 | 
			
		||||
	    SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5|SSL_EXP56|SSL_TLSV1,
 | 
			
		||||
	    0,
 | 
			
		||||
	    SSL_ALL_CIPHERS
 | 
			
		||||
	    },
 | 
			
		||||
	/* Cipher 61 */
 | 
			
		||||
	    {
 | 
			
		||||
	    1,
 | 
			
		||||
	    TLS1_TXT_RSA_EXPORT56_WITH_RC2_CBC_56_MD5,
 | 
			
		||||
	    TLS1_CK_RSA_EXPORT56_WITH_RC2_CBC_56_MD5,
 | 
			
		||||
	    SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5|SSL_EXP56|SSL_TLSV1,
 | 
			
		||||
	    0,
 | 
			
		||||
	    SSL_ALL_CIPHERS
 | 
			
		||||
	    },
 | 
			
		||||
	/* Cipher 62 */
 | 
			
		||||
	    {
 | 
			
		||||
	    1,
 | 
			
		||||
	    TLS1_TXT_RSA_EXPORT56_WITH_DES_CBC_SHA,
 | 
			
		||||
	    TLS1_CK_RSA_EXPORT56_WITH_DES_CBC_SHA,
 | 
			
		||||
	    SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA|SSL_EXP56|SSL_TLSV1,
 | 
			
		||||
	    0,
 | 
			
		||||
	    SSL_ALL_CIPHERS
 | 
			
		||||
	    },
 | 
			
		||||
 | 
			
		||||
/* end of list */
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -733,7 +762,7 @@ STACK *have,*pref;
 | 
			
		|||
		{
 | 
			
		||||
		c=(SSL_CIPHER *)sk_value(have,i);
 | 
			
		||||
		alg=c->algorithms&(SSL_MKEY_MASK|SSL_AUTH_MASK);
 | 
			
		||||
		if (alg & SSL_EXPORT)
 | 
			
		||||
		if (SSL_IS_EXPORT(alg))
 | 
			
		||||
			{
 | 
			
		||||
			ok=((alg & emask) == alg)?1:0;
 | 
			
		||||
#ifdef CIPHER_DEBUG
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -309,12 +309,12 @@ SSL *s;
 | 
			
		|||
 | 
			
		||||
			/* only send if a DH key exchange, fortezza or
 | 
			
		||||
			 * RSA but we have a sign only certificate */
 | 
			
		||||
			if ( s->s3->tmp.use_rsa_tmp ||
 | 
			
		||||
			    (l & (SSL_DH|SSL_kFZA)) ||
 | 
			
		||||
			    ((l & SSL_kRSA) &&
 | 
			
		||||
			     ((ct->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL)||
 | 
			
		||||
			      ((l & SSL_EXPORT) &&
 | 
			
		||||
			       (EVP_PKEY_size(ct->pkeys[SSL_PKEY_RSA_ENC].privatekey)*8 > 512)
 | 
			
		||||
			if (s->s3->tmp.use_rsa_tmp
 | 
			
		||||
			    || (l & (SSL_DH|SSL_kFZA))
 | 
			
		||||
			    || ((l & SSL_kRSA)
 | 
			
		||||
				&& (ct->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL
 | 
			
		||||
				    || (SSL_IS_EXPORT(l)
 | 
			
		||||
					&& EVP_PKEY_size(ct->pkeys[SSL_PKEY_RSA_ENC].privatekey)*8 > SSL_EXPORT_PKEYLENGTH(l)
 | 
			
		||||
					)
 | 
			
		||||
				    )
 | 
			
		||||
				)
 | 
			
		||||
| 
						 | 
				
			
			@ -777,7 +777,7 @@ SSL *s;
 | 
			
		|||
				c=(SSL_CIPHER *)sk_value(sk,i);
 | 
			
		||||
				if (c->algorithms & SSL_eNULL)
 | 
			
		||||
					nc=c;
 | 
			
		||||
				if (c->algorithms & SSL_EXP)
 | 
			
		||||
				if (SSL_C_IS_EXPORT(c))
 | 
			
		||||
					ec=c;
 | 
			
		||||
				}
 | 
			
		||||
			if (nc != NULL)
 | 
			
		||||
| 
						 | 
				
			
			@ -945,8 +945,7 @@ SSL *s;
 | 
			
		|||
			if ((rsa == NULL) && (s->ctx->default_cert->rsa_tmp_cb != NULL))
 | 
			
		||||
				{
 | 
			
		||||
				rsa=s->ctx->default_cert->rsa_tmp_cb(s,
 | 
			
		||||
					!(s->s3->tmp.new_cipher->algorithms
 | 
			
		||||
					  &SSL_NOT_EXP));
 | 
			
		||||
					!SSL_C_IS_EXPORT(s->s3->tmp.new_cipher));
 | 
			
		||||
				CRYPTO_add(&rsa->references,1,CRYPTO_LOCK_RSA);
 | 
			
		||||
				cert->rsa_tmp=rsa;
 | 
			
		||||
				}
 | 
			
		||||
| 
						 | 
				
			
			@ -968,8 +967,7 @@ SSL *s;
 | 
			
		|||
			dhp=cert->dh_tmp;
 | 
			
		||||
			if ((dhp == NULL) && (cert->dh_tmp_cb != NULL))
 | 
			
		||||
				dhp=cert->dh_tmp_cb(s,
 | 
			
		||||
					!(s->s3->tmp.new_cipher->algorithms
 | 
			
		||||
					  &SSL_NOT_EXP));
 | 
			
		||||
					!SSL_C_IS_EXPORT(s->s3->tmp.new_cipher));
 | 
			
		||||
			if (dhp == NULL)
 | 
			
		||||
				{
 | 
			
		||||
				al=SSL_AD_HANDSHAKE_FAILURE;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										15
									
								
								ssl/ssl.h
								
								
								
								
							
							
						
						
									
										15
									
								
								ssl/ssl.h
								
								
								
								
							| 
						 | 
				
			
			@ -132,8 +132,9 @@ extern "C" {
 | 
			
		|||
#define SSL_TXT_MD5		"MD5"
 | 
			
		||||
#define SSL_TXT_SHA1		"SHA1"
 | 
			
		||||
#define SSL_TXT_SHA		"SHA"
 | 
			
		||||
#define SSL_TXT_EXP		"EXP"
 | 
			
		||||
#define SSL_TXT_EXP40		"EXP"
 | 
			
		||||
#define SSL_TXT_EXPORT		"EXPORT"
 | 
			
		||||
#define SSL_TXT_EXP56		"EXP56"
 | 
			
		||||
#define SSL_TXT_SSLV2		"SSLv2"
 | 
			
		||||
#define SSL_TXT_SSLV3		"SSLv3"
 | 
			
		||||
#define SSL_TXT_TLSV1		"TLSv1"
 | 
			
		||||
| 
						 | 
				
			
			@ -988,18 +989,18 @@ int SSL_state(SSL *ssl);
 | 
			
		|||
void SSL_set_verify_result(SSL *ssl,long v);
 | 
			
		||||
long SSL_get_verify_result(SSL *ssl);
 | 
			
		||||
 | 
			
		||||
int SSL_set_ex_data(SSL *ssl,int idx,char *data);
 | 
			
		||||
char *SSL_get_ex_data(SSL *ssl,int idx);
 | 
			
		||||
int SSL_set_ex_data(SSL *ssl,int idx,void *data);
 | 
			
		||||
void *SSL_get_ex_data(SSL *ssl,int idx);
 | 
			
		||||
int SSL_get_ex_new_index(long argl, char *argp, int (*new_func)(),
 | 
			
		||||
	int (*dup_func)(), void (*free_func)());
 | 
			
		||||
 | 
			
		||||
int SSL_SESSION_set_ex_data(SSL_SESSION *ss,int idx,char *data);
 | 
			
		||||
char *SSL_SESSION_get_ex_data(SSL_SESSION *ss,int idx);
 | 
			
		||||
int SSL_SESSION_set_ex_data(SSL_SESSION *ss,int idx,void *data);
 | 
			
		||||
void *SSL_SESSION_get_ex_data(SSL_SESSION *ss,int idx);
 | 
			
		||||
int SSL_SESSION_get_ex_new_index(long argl, char *argp, int (*new_func)(),
 | 
			
		||||
	int (*dup_func)(), void (*free_func)());
 | 
			
		||||
 | 
			
		||||
int SSL_CTX_set_ex_data(SSL_CTX *ssl,int idx,char *data);
 | 
			
		||||
char *SSL_CTX_get_ex_data(SSL_CTX *ssl,int idx);
 | 
			
		||||
int SSL_CTX_set_ex_data(SSL_CTX *ssl,int idx,void *data);
 | 
			
		||||
void *SSL_CTX_get_ex_data(SSL_CTX *ssl,int idx);
 | 
			
		||||
int SSL_CTX_get_ex_new_index(long argl, char *argp, int (*new_func)(),
 | 
			
		||||
	int (*dup_func)(), void (*free_func)());
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -144,11 +144,12 @@ static SSL_CIPHER cipher_aliases[]={
 | 
			
		|||
	{0,SSL_TXT_ADH,	0,SSL_ADH,   0,SSL_AUTH_MASK|SSL_MKEY_MASK},
 | 
			
		||||
	{0,SSL_TXT_FZA,	0,SSL_FZA,   0,SSL_AUTH_MASK|SSL_MKEY_MASK|SSL_ENC_MASK},
 | 
			
		||||
 | 
			
		||||
	{0,SSL_TXT_EXP,	0,SSL_EXP,   0,SSL_EXP_MASK},
 | 
			
		||||
	{0,SSL_TXT_EXPORT,0,SSL_EXPORT,0,SSL_EXP_MASK},
 | 
			
		||||
	{0,SSL_TXT_EXP40, 0,SSL_EXP40, 0,_SSL_EXP_MASK},
 | 
			
		||||
	{0,SSL_TXT_EXPORT,0,SSL_EXP40, 0,_SSL_EXP_MASK},
 | 
			
		||||
	{0,SSL_TXT_EXP56, 0,SSL_EXP56, 0,_SSL_EXP_MASK},
 | 
			
		||||
	{0,SSL_TXT_SSLV2, 0,SSL_SSLV2, 0,SSL_SSL_MASK},
 | 
			
		||||
	{0,SSL_TXT_SSLV3, 0,SSL_SSLV3, 0,SSL_SSL_MASK},
 | 
			
		||||
	{0,SSL_TXT_TLSV1,0,SSL_SSLV3,0,SSL_SSL_MASK},
 | 
			
		||||
	{0,SSL_TXT_TLSV1, 0,SSL_TLSV1, 0,SSL_SSL_MASK},
 | 
			
		||||
	{0,SSL_TXT_LOW,   0,SSL_LOW,   0,SSL_STRONG_MASK},
 | 
			
		||||
	{0,SSL_TXT_MEDIUM,0,SSL_MEDIUM,0,SSL_STRONG_MASK},
 | 
			
		||||
	{0,SSL_TXT_HIGH,  0,SSL_HIGH,  0,SSL_STRONG_MASK},
 | 
			
		||||
| 
						 | 
				
			
			@ -615,7 +616,7 @@ SSL_CIPHER *cipher;
 | 
			
		|||
char *buf;
 | 
			
		||||
int len;
 | 
			
		||||
	{
 | 
			
		||||
	int export;
 | 
			
		||||
	int _export,pkl,kl;
 | 
			
		||||
	char *ver,*exp;
 | 
			
		||||
	char *kx,*au,*enc,*mac;
 | 
			
		||||
	unsigned long alg,alg2;
 | 
			
		||||
| 
						 | 
				
			
			@ -624,8 +625,10 @@ int len;
 | 
			
		|||
	alg=cipher->algorithms;
 | 
			
		||||
	alg2=cipher->algorithm2;
 | 
			
		||||
 | 
			
		||||
	export=(alg&SSL_EXP)?1:0;
 | 
			
		||||
	exp=(export)?" export":"";
 | 
			
		||||
	_export=SSL_IS_EXPORT(alg);
 | 
			
		||||
	pkl=SSL_EXPORT_PKEYLENGTH(alg);
 | 
			
		||||
	kl=SSL_EXPORT_KEYLENGTH(alg);
 | 
			
		||||
	exp=_export?" export":"";
 | 
			
		||||
 | 
			
		||||
	if (alg & SSL_SSLV2)
 | 
			
		||||
		ver="SSLv2";
 | 
			
		||||
| 
						 | 
				
			
			@ -637,7 +640,7 @@ int len;
 | 
			
		|||
	switch (alg&SSL_MKEY_MASK)
 | 
			
		||||
		{
 | 
			
		||||
	case SSL_kRSA:
 | 
			
		||||
		kx=(export)?"RSA(512)":"RSA";
 | 
			
		||||
		kx=_export?(pkl == 512 ? "RSA(512)" : "RSA(1024)"):"RSA";
 | 
			
		||||
		break;
 | 
			
		||||
	case SSL_kDHr:
 | 
			
		||||
		kx="DH/RSA";
 | 
			
		||||
| 
						 | 
				
			
			@ -649,7 +652,7 @@ int len;
 | 
			
		|||
		kx="Fortezza";
 | 
			
		||||
		break;
 | 
			
		||||
	case SSL_kEDH:
 | 
			
		||||
		kx=(export)?"DH(512)":"DH";
 | 
			
		||||
		kx=_export?(pkl == 512 ? "DH(512)" : "DH(1024)"):"DH";
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
		kx="unknown";
 | 
			
		||||
| 
						 | 
				
			
			@ -678,16 +681,17 @@ int len;
 | 
			
		|||
	switch (alg&SSL_ENC_MASK)
 | 
			
		||||
		{
 | 
			
		||||
	case SSL_DES:
 | 
			
		||||
		enc=export?"DES(40)":"DES(56)";
 | 
			
		||||
		enc=(_export && kl == 5)?"DES(40)":"DES(56)";
 | 
			
		||||
		break;
 | 
			
		||||
	case SSL_3DES:
 | 
			
		||||
		enc="3DES(168)";
 | 
			
		||||
		break;
 | 
			
		||||
	case SSL_RC4:
 | 
			
		||||
		enc=export?"RC4(40)":((alg2&SSL2_CF_8_BYTE_ENC)?"RC4(64)":"RC4(128)");
 | 
			
		||||
		enc=_export?(kl == 5 ? "RC4(40)" : "RC4(56)")
 | 
			
		||||
		  :((alg2&SSL2_CF_8_BYTE_ENC)?"RC4(64)":"RC4(128)");
 | 
			
		||||
		break;
 | 
			
		||||
	case SSL_RC2:
 | 
			
		||||
		enc=export?"RC2(40)":"RC2(128)";
 | 
			
		||||
		enc=_export?(kl == 5 ? "RC2(40)" : "RC2(56)"):"RC2(128)";
 | 
			
		||||
		break;
 | 
			
		||||
	case SSL_IDEA:
 | 
			
		||||
		enc="IDEA(128)";
 | 
			
		||||
| 
						 | 
				
			
			@ -770,9 +774,9 @@ int *alg_bits;
 | 
			
		|||
 | 
			
		||||
		a=EVP_CIPHER_key_length(enc)*8;
 | 
			
		||||
 | 
			
		||||
		if (c->algorithms & SSL_EXP)
 | 
			
		||||
		if (SSL_C_IS_EXPORT(c))
 | 
			
		||||
			{
 | 
			
		||||
			ret=40;
 | 
			
		||||
			ret=SSL_C_EXPORT_KEYLENGTH(c)*8;
 | 
			
		||||
			}
 | 
			
		||||
		else
 | 
			
		||||
			{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1236,13 +1236,13 @@ SSL *s;
 | 
			
		|||
	{
 | 
			
		||||
	unsigned long alg,mask,kalg;
 | 
			
		||||
	CERT *c;
 | 
			
		||||
	int i,export;
 | 
			
		||||
	int i,_export;
 | 
			
		||||
 | 
			
		||||
	c=s->cert;
 | 
			
		||||
	ssl_set_cert_masks(c);
 | 
			
		||||
	alg=s->s3->tmp.new_cipher->algorithms;
 | 
			
		||||
	export=(alg & SSL_EXPORT)?1:0;
 | 
			
		||||
	mask=(export)?c->export_mask:c->mask;
 | 
			
		||||
	_export=SSL_IS_EXPORT(alg);
 | 
			
		||||
	mask=_export?c->export_mask:c->mask;
 | 
			
		||||
	kalg=alg&(SSL_MKEY_MASK|SSL_AUTH_MASK);
 | 
			
		||||
 | 
			
		||||
	if 	(kalg & SSL_kDHr)
 | 
			
		||||
| 
						 | 
				
			
			@ -1822,12 +1822,12 @@ void (*free_func)();
 | 
			
		|||
int SSL_set_ex_data(s,idx,arg)
 | 
			
		||||
SSL *s;
 | 
			
		||||
int idx;
 | 
			
		||||
char *arg;
 | 
			
		||||
void *arg;
 | 
			
		||||
	{
 | 
			
		||||
	return(CRYPTO_set_ex_data(&s->ex_data,idx,arg));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
char *SSL_get_ex_data(s,idx)
 | 
			
		||||
void *SSL_get_ex_data(s,idx)
 | 
			
		||||
SSL *s;
 | 
			
		||||
int idx;
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -1849,12 +1849,12 @@ void (*free_func)();
 | 
			
		|||
int SSL_CTX_set_ex_data(s,idx,arg)
 | 
			
		||||
SSL_CTX *s;
 | 
			
		||||
int idx;
 | 
			
		||||
char *arg;
 | 
			
		||||
void *arg;
 | 
			
		||||
	{
 | 
			
		||||
	return(CRYPTO_set_ex_data(&s->ex_data,idx,arg));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
char *SSL_CTX_get_ex_data(s,idx)
 | 
			
		||||
void *SSL_CTX_get_ex_data(s,idx)
 | 
			
		||||
SSL_CTX *s;
 | 
			
		||||
int idx;
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -191,14 +191,25 @@
 | 
			
		|||
#define SSL_SHA1		0x00040000L
 | 
			
		||||
#define SSL_SHA			(SSL_SHA1)
 | 
			
		||||
 | 
			
		||||
#define SSL_EXP_MASK		0x00300000L
 | 
			
		||||
#define SSL_EXP			0x00100000L
 | 
			
		||||
#define SSL_NOT_EXP		0x00200000L
 | 
			
		||||
#define SSL_EXPORT		SSL_EXP
 | 
			
		||||
#define _SSL_EXP_MASK		0x00300000L
 | 
			
		||||
#define SSL_EXP40		0x00100000L
 | 
			
		||||
#define _SSL_NOT_EXP		0x00200000L
 | 
			
		||||
#define SSL_EXP56		0x00300000L
 | 
			
		||||
#define SSL_IS_EXPORT(a)	((a)&SSL_EXP40)
 | 
			
		||||
#define SSL_IS_EXPORT56(a)	(((a)&_SSL_EXP_MASK) == SSL_EXP56)
 | 
			
		||||
#define SSL_IS_EXPORT40(a)	(((a)&_SSL_EXP_MASK) == SSL_EXP40)
 | 
			
		||||
#define SSL_C_IS_EXPORT(c)	SSL_IS_EXPORT((c)->algorithms)
 | 
			
		||||
#define SSL_C_IS_EXPORT56(c)	SSL_IS_EXPORT56((c)->algorithms)
 | 
			
		||||
#define SSL_C_IS_EXPORT40(c)	SSL_IS_EXPORT40((c)->algorithms)
 | 
			
		||||
#define SSL_EXPORT_KEYLENGTH(a)	(SSL_IS_EXPORT40(a) ? 5 : 7)
 | 
			
		||||
#define SSL_EXPORT_PKEYLENGTH(a) (SSL_IS_EXPORT40(a) ? 512 : 1024)
 | 
			
		||||
#define SSL_C_EXPORT_KEYLENGTH(c)	SSL_EXPORT_KEYLENGTH((c)->algorithms)
 | 
			
		||||
#define SSL_C_EXPORT_PKEYLENGTH(c)	SSL_EXPORT_PKEYLENGTH((c)->algorithms)
 | 
			
		||||
 | 
			
		||||
#define SSL_SSL_MASK		0x00c00000L
 | 
			
		||||
#define SSL_SSLV2		0x00400000L
 | 
			
		||||
#define SSL_SSLV3		0x00800000L
 | 
			
		||||
#define SSL_TLSV1		SSL_SSLV3	/* for now */
 | 
			
		||||
 | 
			
		||||
#define SSL_STRONG_MASK		0x07000000L
 | 
			
		||||
#define SSL_LOW			0x01000000L
 | 
			
		||||
| 
						 | 
				
			
			@ -208,7 +219,7 @@
 | 
			
		|||
/* we have used 0fffffff - 4 bits left to go */
 | 
			
		||||
#define SSL_ALL			0xffffffffL
 | 
			
		||||
#define SSL_ALL_CIPHERS		(SSL_MKEY_MASK|SSL_AUTH_MASK|SSL_ENC_MASK|\
 | 
			
		||||
				SSL_MAC_MASK|SSL_EXP_MASK)
 | 
			
		||||
				SSL_MAC_MASK|_SSL_EXP_MASK)
 | 
			
		||||
 | 
			
		||||
/* Mostly for SSLv3 */
 | 
			
		||||
#define SSL_PKEY_RSA_ENC	0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -94,12 +94,12 @@ void (*free_func)();
 | 
			
		|||
int SSL_SESSION_set_ex_data(s,idx,arg)
 | 
			
		||||
SSL_SESSION *s;
 | 
			
		||||
int idx;
 | 
			
		||||
char *arg;
 | 
			
		||||
void *arg;
 | 
			
		||||
	{
 | 
			
		||||
	return(CRYPTO_set_ex_data(&s->ex_data,idx,arg));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
char *SSL_SESSION_get_ex_data(s,idx)
 | 
			
		||||
void *SSL_SESSION_get_ex_data(s,idx)
 | 
			
		||||
SSL_SESSION *s;
 | 
			
		||||
int idx;
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										13
									
								
								ssl/t1_enc.c
								
								
								
								
							
							
						
						
									
										13
									
								
								ssl/t1_enc.c
								
								
								
								
							| 
						 | 
				
			
			@ -178,9 +178,9 @@ int which;
 | 
			
		|||
	EVP_CIPHER *c;
 | 
			
		||||
	SSL_COMP *comp;
 | 
			
		||||
	EVP_MD *m;
 | 
			
		||||
	int exp,n,i,j,k,exp_label_len,cl;
 | 
			
		||||
	int _exp,n,i,j,k,exp_label_len,cl;
 | 
			
		||||
 | 
			
		||||
	exp=(s->s3->tmp.new_cipher->algorithms & SSL_EXPORT)?1:0;
 | 
			
		||||
	_exp=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher);
 | 
			
		||||
	c=s->s3->tmp.new_sym_enc;
 | 
			
		||||
	m=s->s3->tmp.new_hash;
 | 
			
		||||
	comp=s->s3->tmp.new_compression;
 | 
			
		||||
| 
						 | 
				
			
			@ -247,7 +247,8 @@ int which;
 | 
			
		|||
	p=s->s3->tmp.key_block;
 | 
			
		||||
	i=EVP_MD_size(m);
 | 
			
		||||
	cl=EVP_CIPHER_key_length(c);
 | 
			
		||||
	j=exp ? (cl < 5 ? cl : 5) : cl;
 | 
			
		||||
	j=_exp ? (cl < SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher) ?
 | 
			
		||||
		  cl : SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher)) : cl;
 | 
			
		||||
	/* Was j=(exp)?5:EVP_CIPHER_key_length(c); */
 | 
			
		||||
	k=EVP_CIPHER_iv_length(c);
 | 
			
		||||
	er1= &(s->s3->client_random[0]);
 | 
			
		||||
| 
						 | 
				
			
			@ -284,7 +285,7 @@ int which;
 | 
			
		|||
printf("which = %04X\nmac key=",which);
 | 
			
		||||
{ int z; for (z=0; z<i; z++) printf("%02X%c",ms[z],((z+1)%16)?' ':'\n'); }
 | 
			
		||||
#endif
 | 
			
		||||
	if (exp)
 | 
			
		||||
	if (_exp)
 | 
			
		||||
		{
 | 
			
		||||
		/* In here I set both the read and write key/iv to the
 | 
			
		||||
		 * same value since only the correct one will be used :-).
 | 
			
		||||
| 
						 | 
				
			
			@ -347,7 +348,7 @@ SSL *s;
 | 
			
		|||
	unsigned char *p1,*p2;
 | 
			
		||||
	EVP_CIPHER *c;
 | 
			
		||||
	EVP_MD *hash;
 | 
			
		||||
	int num,exp;
 | 
			
		||||
	int num;
 | 
			
		||||
	SSL_COMP *comp;
 | 
			
		||||
 | 
			
		||||
	if (s->s3->tmp.key_block_length != 0)
 | 
			
		||||
| 
						 | 
				
			
			@ -362,8 +363,6 @@ SSL *s;
 | 
			
		|||
	s->s3->tmp.new_sym_enc=c;
 | 
			
		||||
	s->s3->tmp.new_hash=hash;
 | 
			
		||||
 | 
			
		||||
	exp=(s->session->cipher->algorithms & SSL_EXPORT)?1:0;
 | 
			
		||||
 | 
			
		||||
	num=EVP_CIPHER_key_length(c)+EVP_MD_size(hash)+EVP_CIPHER_iv_length(c);
 | 
			
		||||
	num*=2;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -82,6 +82,14 @@ extern "C" {
 | 
			
		|||
#define TLS1_AD_USER_CANCLED		90
 | 
			
		||||
#define TLS1_AD_NO_RENEGOTIATION	100
 | 
			
		||||
 | 
			
		||||
#define TLS1_CK_RSA_EXPORT56_WITH_RC4_56_MD5		0x03000060
 | 
			
		||||
#define TLS1_CK_RSA_EXPORT56_WITH_RC2_CBC_56_MD5	0x03000061
 | 
			
		||||
#define TLS1_CK_RSA_EXPORT56_WITH_DES_CBC_SHA		0x03000062
 | 
			
		||||
 | 
			
		||||
#define TLS1_TXT_RSA_EXPORT56_WITH_RC4_56_MD5		"EXP56-RC4-MD5"
 | 
			
		||||
#define TLS1_TXT_RSA_EXPORT56_WITH_RC2_CBC_56_MD5	"EXP56-RC2-CBC-MD5"
 | 
			
		||||
#define TLS1_TXT_RSA_EXPORT56_WITH_DES_CBC_SHA		"EXP56-DES-CBC-SHA"
 | 
			
		||||
 | 
			
		||||
#define TLS_CT_RSA_SIGN			1
 | 
			
		||||
#define TLS_CT_DSS_SIGN			2
 | 
			
		||||
#define TLS_CT_RSA_FIXED_DH		3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue