summaryrefslogtreecommitdiffstats
path: root/apps/dsaparam.c
diff options
context:
space:
mode:
authorPhilip Prindeville <philipp@redfish-solutions.com>2018-08-09 15:19:19 -0600
committerPauli <paul.dale@oracle.com>2019-05-01 16:41:49 +1000
commitb6a07f676071b2b9fdc0e625896ebd57563028cd (patch)
tree252e299684d6e5407f0dec94be57df52c09179a9 /apps/dsaparam.c
parentc43fa566ea3918ec3b468d214fd9eb80d79e0d0d (diff)
gendsa: dsaparam: introduce -verbose option to enable output
Other commands like 'req' support -verbose, so why not gendsa and dsaparam? Part of a larger and more ambitious effort to add -verbose to all apps that might be used in scripts and need to otherwise run silently (well, without belching out anything that isn't a warning or error... which ties into a later scrub of using STDOUT were appropriate for informative messages instead of STDERR)... so that scripts also have the option of doing >/dev/null without losing anything critical. Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com> Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Paul Dale <paul.dale@oracle.com> (Merged from https://github.com/openssl/openssl/pull/6908)
Diffstat (limited to 'apps/dsaparam.c')
-rw-r--r--apps/dsaparam.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/apps/dsaparam.c b/apps/dsaparam.c
index 70135a694c..959c33126a 100644
--- a/apps/dsaparam.c
+++ b/apps/dsaparam.c
@@ -25,12 +25,15 @@ NON_EMPTY_TRANSLATION_UNIT
# include <openssl/x509.h>
# include <openssl/pem.h>
+static int verbose = 0;
+
static int dsa_cb(int p, int n, BN_GENCB *cb);
typedef enum OPTION_choice {
OPT_ERR = -1, OPT_EOF = 0, OPT_HELP,
OPT_INFORM, OPT_OUTFORM, OPT_IN, OPT_OUT, OPT_TEXT, OPT_C,
- OPT_NOOUT, OPT_GENKEY, OPT_ENGINE, OPT_R_ENUM
+ OPT_NOOUT, OPT_GENKEY, OPT_ENGINE, OPT_VERBOSE,
+ OPT_R_ENUM
} OPTION_CHOICE;
const OPTIONS dsaparam_options[] = {
@@ -47,6 +50,7 @@ const OPTIONS dsaparam_options[] = {
# ifndef OPENSSL_NO_ENGINE
{"engine", OPT_ENGINE, 's', "Use engine e, possibly a hardware device"},
# endif
+ {"verbose", OPT_VERBOSE, '-', "Verbose output"},
{NULL}
};
@@ -107,6 +111,9 @@ int dsaparam_main(int argc, char **argv)
case OPT_NOOUT:
noout = 1;
break;
+ case OPT_VERBOSE:
+ verbose = 1;
+ break;
}
}
argc = opt_num_rest();
@@ -145,9 +152,11 @@ int dsaparam_main(int argc, char **argv)
BIO_printf(bio_err, "Error allocating DSA object\n");
goto end;
}
- BIO_printf(bio_err, "Generating DSA parameters, %d bit long prime\n",
- num);
- BIO_printf(bio_err, "This could take some time\n");
+ if (verbose) {
+ BIO_printf(bio_err, "Generating DSA parameters, %d bit long prime\n",
+ num);
+ BIO_printf(bio_err, "This could take some time\n");
+ }
if (!DSA_generate_parameters_ex(dsa, num, NULL, 0, NULL, NULL, cb)) {
ERR_print_errors(bio_err);
BIO_printf(bio_err, "Error, DSA key generation failed\n");
@@ -251,6 +260,9 @@ static int dsa_cb(int p, int n, BN_GENCB *cb)
static const char symbols[] = ".+*\n";
char c = (p >= 0 && (size_t)p < sizeof(symbols) - 1) ? symbols[p] : '?';
+ if (!verbose)
+ return 1;
+
BIO_write(BN_GENCB_get_arg(cb), &c, 1);
(void)BIO_flush(BN_GENCB_get_arg(cb));
return 1;