Remove DSA-based cipher suites and client auth.
DSA is not connected up to EVP, so it wouldn't work anyway. We shouldn't advertise a cipher suite we don't support. Chrome UMA data says virtually no handshakes end up negotiating one of these. Change-Id: I874d934432da6318f05782ebd149432c1d1e5275 Reviewed-on: https://boringssl-review.googlesource.com/1566 Reviewed-by: Adam Langley <agl@google.com>
This commit is contained in:
committed by
Adam Langley
parent
cff6472442
commit
ef2116d33c
@@ -200,11 +200,9 @@ extern "C" {
|
||||
#define SSL_TXT_kPSK "kPSK"
|
||||
|
||||
#define SSL_TXT_aRSA "aRSA"
|
||||
#define SSL_TXT_aDSS "aDSS"
|
||||
#define SSL_TXT_aECDSA "aECDSA"
|
||||
#define SSL_TXT_aPSK "aPSK"
|
||||
|
||||
#define SSL_TXT_DSS "DSS"
|
||||
#define SSL_TXT_DH "DH"
|
||||
#define SSL_TXT_EDH "EDH" /* same as "kEDH:-ADH" */
|
||||
#define SSL_TXT_ADH "ADH"
|
||||
|
||||
@@ -1365,10 +1365,6 @@ int ssl3_get_server_key_exchange(SSL *s)
|
||||
|
||||
if (alg_a & SSL_aRSA)
|
||||
pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509);
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
else if (alg_a & SSL_aDSS)
|
||||
pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_DSA_SIGN].x509);
|
||||
#endif
|
||||
/* else anonymous DH, so no certificate or pkey. */
|
||||
|
||||
s->session->sess_cert->peer_dh_tmp=dh;
|
||||
@@ -2599,13 +2595,6 @@ int ssl3_check_cert_and_algorithm(SSL *s)
|
||||
OPENSSL_PUT_ERROR(SSL, ssl3_check_cert_and_algorithm, SSL_R_MISSING_RSA_SIGNING_CERT);
|
||||
goto f_err;
|
||||
}
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
else if ((alg_a & SSL_aDSS) && !has_bits(i,EVP_PK_DSA|EVP_PKT_SIGN))
|
||||
{
|
||||
OPENSSL_PUT_ERROR(SSL, ssl3_check_cert_and_algorithm, SSL_R_MISSING_DSA_SIGNING_CERT);
|
||||
goto f_err;
|
||||
}
|
||||
#endif
|
||||
if ((alg_k & SSL_kRSA) &&
|
||||
!(has_bits(i,EVP_PK_RSA|EVP_PKT_ENC) || (rsa != NULL)))
|
||||
{
|
||||
|
||||
+1
-122
@@ -250,21 +250,6 @@ const SSL_CIPHER ssl3_ciphers[]={
|
||||
128,
|
||||
128,
|
||||
},
|
||||
/* Cipher 32 */
|
||||
{
|
||||
1,
|
||||
TLS1_TXT_DHE_DSS_WITH_AES_128_SHA,
|
||||
TLS1_CK_DHE_DSS_WITH_AES_128_SHA,
|
||||
SSL_kEDH,
|
||||
SSL_aDSS,
|
||||
SSL_AES128,
|
||||
SSL_SHA1,
|
||||
SSL_TLSV1,
|
||||
SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
|
||||
SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
|
||||
128,
|
||||
128,
|
||||
},
|
||||
/* Cipher 33 */
|
||||
{
|
||||
1,
|
||||
@@ -312,22 +297,6 @@ const SSL_CIPHER ssl3_ciphers[]={
|
||||
256,
|
||||
},
|
||||
|
||||
/* Cipher 38 */
|
||||
{
|
||||
1,
|
||||
TLS1_TXT_DHE_DSS_WITH_AES_256_SHA,
|
||||
TLS1_CK_DHE_DSS_WITH_AES_256_SHA,
|
||||
SSL_kEDH,
|
||||
SSL_aDSS,
|
||||
SSL_AES256,
|
||||
SSL_SHA1,
|
||||
SSL_TLSV1,
|
||||
SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
|
||||
SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
|
||||
256,
|
||||
256,
|
||||
},
|
||||
|
||||
/* Cipher 39 */
|
||||
{
|
||||
1,
|
||||
@@ -393,40 +362,6 @@ const SSL_CIPHER ssl3_ciphers[]={
|
||||
256,
|
||||
},
|
||||
|
||||
/* Cipher 40 */
|
||||
{
|
||||
1,
|
||||
TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256,
|
||||
TLS1_CK_DHE_DSS_WITH_AES_128_SHA256,
|
||||
SSL_kEDH,
|
||||
SSL_aDSS,
|
||||
SSL_AES128,
|
||||
SSL_SHA256,
|
||||
SSL_TLSV1_2,
|
||||
SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
|
||||
SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
|
||||
128,
|
||||
128,
|
||||
},
|
||||
|
||||
|
||||
#if TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES
|
||||
/* Cipher 66 */
|
||||
{
|
||||
1,
|
||||
TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA,
|
||||
TLS1_CK_DHE_DSS_WITH_RC4_128_SHA,
|
||||
SSL_kEDH,
|
||||
SSL_aDSS,
|
||||
SSL_RC4,
|
||||
SSL_SHA1,
|
||||
SSL_TLSV1,
|
||||
SSL_NOT_EXP|SSL_MEDIUM,
|
||||
SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
|
||||
128,
|
||||
128,
|
||||
},
|
||||
#endif
|
||||
|
||||
/* TLS v1.2 ciphersuites */
|
||||
/* Cipher 67 */
|
||||
@@ -445,22 +380,6 @@ const SSL_CIPHER ssl3_ciphers[]={
|
||||
128,
|
||||
},
|
||||
|
||||
/* Cipher 6A */
|
||||
{
|
||||
1,
|
||||
TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256,
|
||||
TLS1_CK_DHE_DSS_WITH_AES_256_SHA256,
|
||||
SSL_kEDH,
|
||||
SSL_aDSS,
|
||||
SSL_AES256,
|
||||
SSL_SHA256,
|
||||
SSL_TLSV1_2,
|
||||
SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
|
||||
SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
|
||||
256,
|
||||
256,
|
||||
},
|
||||
|
||||
/* Cipher 6B */
|
||||
{
|
||||
1,
|
||||
@@ -626,39 +545,6 @@ const SSL_CIPHER ssl3_ciphers[]={
|
||||
256,
|
||||
},
|
||||
|
||||
/* Cipher A2 */
|
||||
{
|
||||
1,
|
||||
TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256,
|
||||
TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256,
|
||||
SSL_kEDH,
|
||||
SSL_aDSS,
|
||||
SSL_AES128GCM,
|
||||
SSL_AEAD,
|
||||
SSL_TLSV1_2,
|
||||
SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
|
||||
SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256|SSL_CIPHER_ALGORITHM2_AEAD|FIXED_NONCE_LEN(4)|SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD,
|
||||
128,
|
||||
128,
|
||||
},
|
||||
|
||||
/* Cipher A3 */
|
||||
{
|
||||
1,
|
||||
TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384,
|
||||
TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384,
|
||||
SSL_kEDH,
|
||||
SSL_aDSS,
|
||||
SSL_AES256GCM,
|
||||
SSL_AEAD,
|
||||
SSL_TLSV1_2,
|
||||
SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
|
||||
SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384|SSL_CIPHER_ALGORITHM2_AEAD|FIXED_NONCE_LEN(4)|
|
||||
SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_INCLUDED_IN_RECORD,
|
||||
256,
|
||||
256,
|
||||
},
|
||||
|
||||
/* Cipher A6 */
|
||||
{
|
||||
1,
|
||||
@@ -2117,7 +2003,7 @@ int ssl3_get_req_cert_type(SSL *s, unsigned char *p)
|
||||
int ret=0;
|
||||
const unsigned char *sig;
|
||||
size_t i, siglen;
|
||||
int have_rsa_sign = 0, have_dsa_sign = 0;
|
||||
int have_rsa_sign = 0;
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
int have_ecdsa_sign = 0;
|
||||
#endif
|
||||
@@ -2139,9 +2025,6 @@ int ssl3_get_req_cert_type(SSL *s, unsigned char *p)
|
||||
have_rsa_sign = 1;
|
||||
break;
|
||||
|
||||
case TLSEXT_signature_dsa:
|
||||
have_dsa_sign = 1;
|
||||
break;
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
case TLSEXT_signature_ecdsa:
|
||||
have_ecdsa_sign = 1;
|
||||
@@ -2152,10 +2035,6 @@ int ssl3_get_req_cert_type(SSL *s, unsigned char *p)
|
||||
|
||||
if (have_rsa_sign)
|
||||
p[ret++]=SSL3_CT_RSA_SIGN;
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
if (have_dsa_sign)
|
||||
p[ret++]=SSL3_CT_DSS_SIGN;
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
/* ECDSA certs can be used with RSA cipher suites as well
|
||||
|
||||
@@ -2448,23 +2448,6 @@ int ssl3_get_cert_verify(SSL *s)
|
||||
}
|
||||
}
|
||||
else
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
if (pkey->type == EVP_PKEY_DSA)
|
||||
{
|
||||
if (DSA_verify(pkey->save_type,
|
||||
&(s->s3->tmp.cert_verify_md[MD5_DIGEST_LENGTH]),
|
||||
SHA_DIGEST_LENGTH,
|
||||
CBS_data(&signature), CBS_len(&signature),
|
||||
pkey->pkey.dsa) <= 0)
|
||||
{
|
||||
/* bad signature */
|
||||
al = SSL_AD_DECRYPT_ERROR;
|
||||
OPENSSL_PUT_ERROR(SSL, ssl3_get_cert_verify, SSL_R_BAD_DSA_SIGNATURE);
|
||||
goto f_err;
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
if (pkey->type == EVP_PKEY_EC)
|
||||
{
|
||||
|
||||
@@ -213,8 +213,6 @@ static const SSL_CIPHER cipher_aliases[]={
|
||||
|
||||
/* server authentication aliases */
|
||||
{0,SSL_TXT_aRSA,0, 0,SSL_aRSA, 0,0,0,0,0,0,0},
|
||||
{0,SSL_TXT_aDSS,0, 0,SSL_aDSS, 0,0,0,0,0,0,0},
|
||||
{0,SSL_TXT_DSS,0, 0,SSL_aDSS, 0,0,0,0,0,0,0},
|
||||
{0,SSL_TXT_aNULL,0, 0,SSL_aNULL, 0,0,0,0,0,0,0},
|
||||
{0,SSL_TXT_aECDSA,0, 0,SSL_aECDSA,0,0,0,0,0,0,0},
|
||||
{0,SSL_TXT_ECDSA,0, 0,SSL_aECDSA, 0,0,0,0,0,0,0},
|
||||
@@ -487,23 +485,6 @@ static void ssl_cipher_get_disabled(unsigned long *mkey, unsigned long *auth, un
|
||||
*mac = 0;
|
||||
*ssl = 0;
|
||||
|
||||
#ifdef OPENSSL_NO_DSA
|
||||
*auth |= SSL_aDSS;
|
||||
#endif
|
||||
#ifdef OPENSSL_NO_DH
|
||||
*mkey |= SSL_kDHr|SSL_kDHd|SSL_kEDH;
|
||||
*auth |= SSL_aDH;
|
||||
#endif
|
||||
#ifdef OPENSSL_NO_ECDSA
|
||||
*auth |= SSL_aECDSA;
|
||||
#endif
|
||||
#ifdef OPENSSL_NO_ECDH
|
||||
*mkey |= SSL_kECDHe|SSL_kECDHr;
|
||||
*auth |= SSL_aECDH;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
*enc |= (ssl_cipher_methods[SSL_ENC_3DES_IDX] == NULL) ? SSL_3DES:0;
|
||||
*enc |= (ssl_cipher_methods[SSL_ENC_RC4_IDX ] == NULL) ? SSL_RC4 :0;
|
||||
*enc |= (ssl_cipher_methods[SSL_ENC_AES128_IDX] == NULL) ? SSL_AES128:0;
|
||||
@@ -1414,9 +1395,6 @@ const char *SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len)
|
||||
case SSL_aRSA:
|
||||
au="RSA";
|
||||
break;
|
||||
case SSL_aDSS:
|
||||
au="DSS";
|
||||
break;
|
||||
case SSL_aNULL:
|
||||
au="None";
|
||||
break;
|
||||
@@ -1551,8 +1529,6 @@ const char *SSL_CIPHER_get_kx_name(const SSL_CIPHER *cipher) {
|
||||
return SSL_TXT_RSA;
|
||||
case SSL_kEDH:
|
||||
switch (cipher->algorithm_auth) {
|
||||
case SSL_aDSS:
|
||||
return "DHE_" SSL_TXT_DSS;
|
||||
case SSL_aRSA:
|
||||
return "DHE_" SSL_TXT_RSA;
|
||||
case SSL_aNULL:
|
||||
@@ -1615,8 +1591,6 @@ int ssl_cipher_get_cert_index(const SSL_CIPHER *c)
|
||||
|
||||
if (alg_a & SSL_aECDSA)
|
||||
return SSL_PKEY_ECC;
|
||||
else if (alg_a & SSL_aDSS)
|
||||
return SSL_PKEY_DSA_SIGN;
|
||||
else if (alg_a & SSL_aRSA)
|
||||
return SSL_PKEY_RSA_ENC;
|
||||
return -1;
|
||||
|
||||
+2
-12
@@ -2168,7 +2168,7 @@ void SSL_set_cert_cb(SSL *s, int (*cb)(SSL *ssl, void *arg), void *arg)
|
||||
void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher)
|
||||
{
|
||||
CERT_PKEY *cpk;
|
||||
int rsa_enc,rsa_sign,dh_tmp,dsa_sign;
|
||||
int rsa_enc,rsa_sign,dh_tmp;
|
||||
unsigned long mask_k,mask_a;
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
int have_ecc_cert, ecdsa_ok;
|
||||
@@ -2194,8 +2194,6 @@ void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher)
|
||||
rsa_enc= cpk->valid_flags & CERT_PKEY_VALID;
|
||||
cpk= &(c->pkeys[SSL_PKEY_RSA_SIGN]);
|
||||
rsa_sign= cpk->valid_flags & CERT_PKEY_SIGN;
|
||||
cpk= &(c->pkeys[SSL_PKEY_DSA_SIGN]);
|
||||
dsa_sign= cpk->valid_flags & CERT_PKEY_SIGN;
|
||||
cpk= &(c->pkeys[SSL_PKEY_ECC]);
|
||||
#ifndef OPENSSL_NO_EC
|
||||
have_ecc_cert= cpk->valid_flags & CERT_PKEY_VALID;
|
||||
@@ -2220,11 +2218,6 @@ void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher)
|
||||
mask_a|=SSL_aRSA;
|
||||
}
|
||||
|
||||
if (dsa_sign)
|
||||
{
|
||||
mask_a|=SSL_aDSS;
|
||||
}
|
||||
|
||||
mask_a|=SSL_aNULL;
|
||||
|
||||
/* An ECC certificate may be usable for ECDSA cipher suites depending on
|
||||
@@ -2355,10 +2348,7 @@ EVP_PKEY *ssl_get_sign_pkey(SSL *s,const SSL_CIPHER *cipher, const EVP_MD **pmd)
|
||||
else
|
||||
#endif
|
||||
|
||||
if ((alg_a & SSL_aDSS) &&
|
||||
(c->pkeys[SSL_PKEY_DSA_SIGN].privatekey != NULL))
|
||||
idx = SSL_PKEY_DSA_SIGN;
|
||||
else if (alg_a & SSL_aRSA)
|
||||
if (alg_a & SSL_aRSA)
|
||||
{
|
||||
if (c->pkeys[SSL_PKEY_RSA_SIGN].privatekey != NULL)
|
||||
idx = SSL_PKEY_RSA_SIGN;
|
||||
|
||||
+3
-4
@@ -281,10 +281,9 @@
|
||||
|
||||
/* Bits for algorithm_auth (server authentication) */
|
||||
#define SSL_aRSA 0x00000001L /* RSA auth */
|
||||
#define SSL_aDSS 0x00000002L /* DSS auth */
|
||||
#define SSL_aNULL 0x00000004L /* no auth (i.e. use ADH or AECDH) */
|
||||
#define SSL_aECDSA 0x00000008L /* ECDSA auth*/
|
||||
#define SSL_aPSK 0x00000010L /* PSK auth */
|
||||
#define SSL_aNULL 0x00000002L /* no auth (i.e. use ADH or AECDH) */
|
||||
#define SSL_aECDSA 0x00000004L /* ECDSA auth*/
|
||||
#define SSL_aPSK 0x00000008L /* PSK auth */
|
||||
|
||||
|
||||
/* Bits for algorithm_enc (symmetric encryption) */
|
||||
|
||||
+1
-28
@@ -720,12 +720,6 @@ static int tls1_check_cert_param(SSL *s, X509 *x, int set_ee_md)
|
||||
|
||||
#define tlsext_sigalg_rsa(md) md, TLSEXT_signature_rsa,
|
||||
|
||||
#ifdef OPENSSL_NO_DSA
|
||||
#define tlsext_sigalg_dsa(md) /* */
|
||||
#else
|
||||
#define tlsext_sigalg_dsa(md) md, TLSEXT_signature_dsa,
|
||||
#endif
|
||||
|
||||
#ifdef OPENSSL_NO_ECDSA
|
||||
#define tlsext_sigalg_ecdsa(md) /* */
|
||||
#else
|
||||
@@ -734,7 +728,6 @@ static int tls1_check_cert_param(SSL *s, X509 *x, int set_ee_md)
|
||||
|
||||
#define tlsext_sigalg(md) \
|
||||
tlsext_sigalg_rsa(md) \
|
||||
tlsext_sigalg_dsa(md) \
|
||||
tlsext_sigalg_ecdsa(md)
|
||||
|
||||
static const uint8_t tls12_sigalgs[] = {
|
||||
@@ -859,7 +852,7 @@ void ssl_set_client_disabled(SSL *s)
|
||||
CERT *c = s->cert;
|
||||
const unsigned char *sigalgs;
|
||||
size_t i, sigalgslen;
|
||||
int have_rsa = 0, have_dsa = 0, have_ecdsa = 0;
|
||||
int have_rsa = 0, have_ecdsa = 0;
|
||||
c->mask_a = 0;
|
||||
c->mask_k = 0;
|
||||
/* Don't allow TLS 1.2 only ciphers if we don't suppport them */
|
||||
@@ -879,11 +872,6 @@ void ssl_set_client_disabled(SSL *s)
|
||||
case TLSEXT_signature_rsa:
|
||||
have_rsa = 1;
|
||||
break;
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
case TLSEXT_signature_dsa:
|
||||
have_dsa = 1;
|
||||
break;
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
case TLSEXT_signature_ecdsa:
|
||||
have_ecdsa = 1;
|
||||
@@ -898,10 +886,6 @@ void ssl_set_client_disabled(SSL *s)
|
||||
{
|
||||
c->mask_a |= SSL_aRSA;
|
||||
}
|
||||
if (!have_dsa)
|
||||
{
|
||||
c->mask_a |= SSL_aDSS;
|
||||
}
|
||||
if (!have_ecdsa)
|
||||
{
|
||||
c->mask_a |= SSL_aECDSA;
|
||||
@@ -2747,7 +2731,6 @@ static const tls12_lookup tls12_md[] = {
|
||||
|
||||
static const tls12_lookup tls12_sig[] = {
|
||||
{EVP_PKEY_RSA, TLSEXT_signature_rsa},
|
||||
{EVP_PKEY_DSA, TLSEXT_signature_dsa},
|
||||
{EVP_PKEY_EC, TLSEXT_signature_ecdsa}
|
||||
};
|
||||
|
||||
@@ -2830,10 +2813,6 @@ static int tls12_get_pkey_idx(unsigned char sig_alg)
|
||||
{
|
||||
case TLSEXT_signature_rsa:
|
||||
return SSL_PKEY_RSA_SIGN;
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
case TLSEXT_signature_dsa:
|
||||
return SSL_PKEY_DSA_SIGN;
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
case TLSEXT_signature_ecdsa:
|
||||
return SSL_PKEY_ECC;
|
||||
@@ -3396,12 +3375,6 @@ int tls1_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain,
|
||||
default_nid = NID_sha1WithRSAEncryption;
|
||||
break;
|
||||
|
||||
case SSL_PKEY_DSA_SIGN:
|
||||
case SSL_PKEY_DH_DSA:
|
||||
rsign = TLSEXT_signature_dsa;
|
||||
default_nid = NID_dsaWithSHA1;
|
||||
break;
|
||||
|
||||
case SSL_PKEY_ECC:
|
||||
rsign = TLSEXT_signature_ecdsa;
|
||||
default_nid = NID_ecdsa_with_SHA1;
|
||||
|
||||
Reference in New Issue
Block a user