From ac38115c1a4fb61c66c2a8cd2a9800751828d328 Mon Sep 17 00:00:00 2001 From: Kurt Roeckx Date: Sat, 18 Apr 2015 12:50:25 +0200 Subject: [PATCH] Correctly check for export size limit 40 bit ciphers are limited to 512 bit RSA, 56 bit ciphers to 1024 bit. Reviewed-by: Rich Salz --- crypto/x509/x509type.c | 3 --- include/openssl/evp.h | 1 - ssl/s3_clnt.c | 5 ++++- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/crypto/x509/x509type.c b/crypto/x509/x509type.c index bc93697a2d..97e5babab1 100644 --- a/crypto/x509/x509type.c +++ b/crypto/x509/x509type.c @@ -121,9 +121,6 @@ int X509_certificate_type(X509 *x, EVP_PKEY *pkey) } } - /* /8 because it's 1024 bits we look for, not bytes */ - if (EVP_PKEY_size(pk) <= 1024 / 8) - ret |= EVP_PKT_EXP; if (pkey == NULL) EVP_PKEY_free(pk); return (ret); diff --git a/include/openssl/evp.h b/include/openssl/evp.h index 2af823f236..d5af5ed192 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h @@ -94,7 +94,6 @@ # define EVP_PKS_RSA 0x0100 # define EVP_PKS_DSA 0x0200 # define EVP_PKS_EC 0x0400 -# define EVP_PKT_EXP 0x1000 /* <= 512 bit key */ # define EVP_PKEY_NONE NID_undef # define EVP_PKEY_RSA NID_rsaEncryption diff --git a/ssl/s3_clnt.c b/ssl/s3_clnt.c index 46f9909830..4977e9c5a1 100644 --- a/ssl/s3_clnt.c +++ b/ssl/s3_clnt.c @@ -3324,6 +3324,7 @@ int ssl3_check_cert_and_algorithm(SSL *s) int i, idx; long alg_k, alg_a; EVP_PKEY *pkey = NULL; + int pkey_bits; SESS_CERT *sc; #ifndef OPENSSL_NO_RSA RSA *rsa; @@ -3373,6 +3374,7 @@ int ssl3_check_cert_and_algorithm(SSL *s) } #endif pkey = X509_get_pubkey(sc->peer_pkeys[idx].x509); + pkey_bits = EVP_PKEY_bits(pkey); i = X509_certificate_type(sc->peer_pkeys[idx].x509, pkey); EVP_PKEY_free(pkey); @@ -3418,7 +3420,8 @@ int ssl3_check_cert_and_algorithm(SSL *s) # endif #endif - if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && !has_bits(i, EVP_PKT_EXP)) { + if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && + pkey_bits > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) { #ifndef OPENSSL_NO_RSA if (alg_k & SSL_kRSA) { if (rsa == NULL -- 2.40.0