diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c index 0a39b9755a5cfc52a888ab0c7637e98e2e56056d..4f28818c33bb7fa780f6ba7afb0868ce581765ee 100644 --- a/ssl/t1_lib.c +++ b/ssl/t1_lib.c @@ -1447,6 +1447,12 @@ static int tls12_sigalg_allowed(SSL *s, int op, const SIGALG_LOOKUP *lu) /* DSA is not allowed in TLS 1.3 */ if (SSL_IS_TLS13(s) && lu->sig == EVP_PKEY_DSA) return 0; + /* TODO(OpenSSL1.2) fully axe DSA/etc. in ClientHello per TLS 1.3 spec */ + if (!s->server && !SSL_IS_DTLS(s) && s->s3->tmp.min_ver >= TLS1_3_VERSION + && (lu->sig == EVP_PKEY_DSA || lu->hash_idx == SSL_MD_SHA1_IDX + || lu->hash_idx == SSL_MD_MD5_IDX + || lu->hash_idx == SSL_MD_SHA224_IDX)) + return 0; /* See if public key algorithm allowed */ if (tls12_get_pkey_idx(lu->sig) == -1) return 0;