summaryrefslogtreecommitdiffstats
path: root/apps/req.c
diff options
context:
space:
mode:
authorPauli <pauli@openssl.org>2021-06-03 14:27:28 +1000
committerPauli <pauli@openssl.org>2021-06-04 18:03:25 +1000
commit51cda01c61870c2433fbbd54d69f2267362ea608 (patch)
treef837383f807b57de6874c02a8bf2b72ee0399e31 /apps/req.c
parent6a2f82b439924a2e096ec3288041b7f2d02f58fc (diff)
req: detect a bad choice of digest early
This is a regression against 1.1.1 when an unknown digest was detected early. Fixes #15285 Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15602)
Diffstat (limited to 'apps/req.c')
-rw-r--r--apps/req.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/apps/req.c b/apps/req.c
index acb98e3560..9fbe4e250f 100644
--- a/apps/req.c
+++ b/apps/req.c
@@ -242,6 +242,7 @@ int req_main(int argc, char **argv)
X509 *new_x509 = NULL, *CAcert = NULL;
X509_REQ *req = NULL;
EVP_CIPHER *cipher = NULL;
+ EVP_MD *md = NULL;
int ext_copy = EXT_COPY_UNSET;
BIO *addext_bio = NULL;
char *extensions = NULL;
@@ -527,7 +528,15 @@ int req_main(int argc, char **argv)
if (!add_oid_section(req_conf))
goto end;
- if (digest == NULL) {
+ /* Check that any specified digest is fetchable */
+ if (digest != NULL) {
+ if (!opt_md(digest, &md)) {
+ ERR_clear_error();
+ goto opthelp;
+ }
+ EVP_MD_free(md);
+ } else {
+ /* No digest specified, default to configuration */
p = NCONF_get_string(req_conf, section, "default_md");
if (p == NULL)
ERR_clear_error();