diff options
author | Georg Schmidt <gs-develop@gs-sys.de> | 2018-05-31 01:42:39 +0200 |
---|---|---|
committer | Dr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> | 2018-06-05 18:08:01 +0200 |
commit | 0336df2fa316a3e08b8f0d2d0e8d4bc175e46634 (patch) | |
tree | 02fa8e84b24a147a48580777445f56f1dc12f1da | |
parent | 630fe1da888490b7dfef3fe0928b813ddff5d51a (diff) |
Issue warnings for large DSA and RSA keys
Issue a warning when generating DSA or RSA keys of size greater than
OPENSSL_DSA_MAX_MODULUS_BITS resp. OPENSSL_RSA_MAX_MODULUS_BITS.
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/6380)
-rw-r--r-- | apps/dsaparam.c | 6 | ||||
-rw-r--r-- | apps/gendsa.c | 7 | ||||
-rw-r--r-- | apps/genrsa.c | 5 | ||||
-rw-r--r-- | apps/req.c | 12 |
4 files changed, 30 insertions, 0 deletions
diff --git a/apps/dsaparam.c b/apps/dsaparam.c index 341480b818..8e33ffd6b0 100644 --- a/apps/dsaparam.c +++ b/apps/dsaparam.c @@ -128,6 +128,12 @@ int dsaparam_main(int argc, char **argv) goto end; if (numbits > 0) { + if (numbits > OPENSSL_DSA_MAX_MODULUS_BITS) + BIO_printf(bio_err, + "Warning: It is not recommended to use more than %d bit for DSA keys.\n" + " Your key size is %d! Larger key size may behave not as expected.\n", + OPENSSL_DSA_MAX_MODULUS_BITS, numbits); + cb = BN_GENCB_new(); if (cb == NULL) { BIO_printf(bio_err, "Error allocating BN_GENCB object\n"); diff --git a/apps/gendsa.c b/apps/gendsa.c index 06e37924e4..401375420b 100644 --- a/apps/gendsa.c +++ b/apps/gendsa.c @@ -117,6 +117,13 @@ int gendsa_main(int argc, char **argv) goto end2; DSA_get0_pqg(dsa, &p, NULL, NULL); + + if (BN_num_bits(p) > OPENSSL_DSA_MAX_MODULUS_BITS) + BIO_printf(bio_err, + "Warning: It is not recommended to use more than %d bit for DSA keys.\n" + " Your key size is %d! Larger key size may behave not as expected.\n", + OPENSSL_DSA_MAX_MODULUS_BITS, BN_num_bits(p)); + BIO_printf(bio_err, "Generating DSA key, %d bits\n", BN_num_bits(p)); if (!DSA_generate_key(dsa)) goto end; diff --git a/apps/genrsa.c b/apps/genrsa.c index 2bc8fa0827..c17cd14715 100644 --- a/apps/genrsa.c +++ b/apps/genrsa.c @@ -123,6 +123,11 @@ opthelp: if (argc == 1) { if (!opt_int(argv[0], &num) || num <= 0) goto end; + if (num > OPENSSL_RSA_MAX_MODULUS_BITS) + BIO_printf(bio_err, + "Warning: It is not recommended to use more than %d bit for RSA keys.\n" + " Your key size is %d! Larger key size may behave not as expected.\n", + OPENSSL_RSA_MAX_MODULUS_BITS, num); } else if (argc > 0) { BIO_printf(bio_err, "Extra arguments given.\n"); goto opthelp; diff --git a/apps/req.c b/apps/req.c index ca4b7ec891..59baa89bcf 100644 --- a/apps/req.c +++ b/apps/req.c @@ -517,6 +517,18 @@ int req_main(int argc, char **argv) goto end; } + if (pkey_type == EVP_PKEY_RSA && newkey > OPENSSL_RSA_MAX_MODULUS_BITS) + BIO_printf(bio_err, + "Warning: It is not recommended to use more than %d bit for RSA keys.\n" + " Your key size is %ld! Larger key size may behave not as expected.\n", + OPENSSL_RSA_MAX_MODULUS_BITS, newkey); + + if (pkey_type == EVP_PKEY_DSA && newkey > OPENSSL_DSA_MAX_MODULUS_BITS) + BIO_printf(bio_err, + "Warning: It is not recommended to use more than %d bit for DSA keys.\n" + " Your key size is %ld! Larger key size may behave not as expected.\n", + OPENSSL_DSA_MAX_MODULUS_BITS, newkey); + if (genctx == NULL) { genctx = set_keygen_ctx(NULL, &pkey_type, &newkey, &keyalgstr, gen_eng); |