genrsa: introduce -verbose option to enable output

Other commands like 'req' support -verbose, so why not genrsa?

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/6897)
This commit is contained in:
Philip Prindeville 2018-08-08 11:51:23 -06:00 committed by Pauli
parent 39147079fc
commit c43fa566ea
2 changed files with 19 additions and 4 deletions

View File

@ -30,12 +30,14 @@ NON_EMPTY_TRANSLATION_UNIT
# define DEFBITS 2048 # define DEFBITS 2048
# define DEFPRIMES 2 # define DEFPRIMES 2
static int verbose = 0;
static int genrsa_cb(int p, int n, BN_GENCB *cb); static int genrsa_cb(int p, int n, BN_GENCB *cb);
typedef enum OPTION_choice { typedef enum OPTION_choice {
OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, OPT_ERR = -1, OPT_EOF = 0, OPT_HELP,
OPT_3, OPT_F4, OPT_ENGINE, OPT_3, OPT_F4, OPT_ENGINE,
OPT_OUT, OPT_PASSOUT, OPT_CIPHER, OPT_PRIMES, OPT_OUT, OPT_PASSOUT, OPT_CIPHER, OPT_PRIMES, OPT_VERBOSE,
OPT_R_ENUM OPT_R_ENUM
} OPTION_CHOICE; } OPTION_CHOICE;
@ -52,6 +54,7 @@ const OPTIONS genrsa_options[] = {
{"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"}, {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"},
# endif # endif
{"primes", OPT_PRIMES, 'p', "Specify number of primes"}, {"primes", OPT_PRIMES, 'p', "Specify number of primes"},
{"verbose", OPT_VERBOSE, '-', "Verbose output"},
{NULL} {NULL}
}; };
@ -115,6 +118,9 @@ opthelp:
if (!opt_int(opt_arg(), &primes)) if (!opt_int(opt_arg(), &primes))
goto end; goto end;
break; break;
case OPT_VERBOSE:
verbose = 1;
break;
} }
} }
argc = opt_num_rest(); argc = opt_num_rest();
@ -143,6 +149,7 @@ opthelp:
if (out == NULL) if (out == NULL)
goto end; goto end;
if (verbose)
BIO_printf(bio_err, "Generating RSA private key, %d bit long modulus (%d primes)\n", BIO_printf(bio_err, "Generating RSA private key, %d bit long modulus (%d primes)\n",
num, primes); num, primes);
rsa = eng ? RSA_new_method(eng) : RSA_new(); rsa = eng ? RSA_new_method(eng) : RSA_new();
@ -156,7 +163,7 @@ opthelp:
RSA_get0_key(rsa, NULL, &e, NULL); RSA_get0_key(rsa, NULL, &e, NULL);
hexe = BN_bn2hex(e); hexe = BN_bn2hex(e);
dece = BN_bn2dec(e); dece = BN_bn2dec(e);
if (hexe && dece) { if (hexe && dece && verbose) {
BIO_printf(bio_err, "e is %s (0x%s)\n", dece, hexe); BIO_printf(bio_err, "e is %s (0x%s)\n", dece, hexe);
} }
OPENSSL_free(hexe); OPENSSL_free(hexe);
@ -186,6 +193,9 @@ static int genrsa_cb(int p, int n, BN_GENCB *cb)
{ {
char c = '*'; char c = '*';
if (!verbose)
return 1;
if (p == 0) if (p == 0)
c = '.'; c = '.';
if (p == 1) if (p == 1)

View File

@ -29,6 +29,7 @@ B<openssl> B<genrsa>
[B<-writerand file>] [B<-writerand file>]
[B<-engine id>] [B<-engine id>]
[B<-primes num>] [B<-primes num>]
[B<-verbose>]
[B<numbits>] [B<numbits>]
=head1 DESCRIPTION =head1 DESCRIPTION
@ -91,6 +92,10 @@ parameter must be a positive integer that is greater than 1 and less than 16.
If B<num> is greater than 2, then the generated key is called a 'multi-prime' If B<num> is greater than 2, then the generated key is called a 'multi-prime'
RSA key, which is defined in RFC 8017. RSA key, which is defined in RFC 8017.
=item B<-verbose>
Print extra details about the operations being performed.
=item B<numbits> =item B<numbits>
The size of the private key to generate in bits. This must be the last option The size of the private key to generate in bits. This must be the last option