mirror of
https://github.com/openssl/openssl.git
synced 2025-02-23 14:42:15 +08:00
list: add an option to list all available algorithms
Fixes #19145 Reviewed-by: Hugo Landau <hlandau@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com> (Merged from https://github.com/openssl/openssl/pull/19168)
This commit is contained in:
parent
8e39049d38
commit
35b6707024
45
apps/list.c
45
apps/list.c
@ -102,7 +102,7 @@ static void collect_ciphers(EVP_CIPHER *cipher, void *stack)
|
||||
EVP_CIPHER_up_ref(cipher);
|
||||
}
|
||||
|
||||
static void list_ciphers(void)
|
||||
static void list_ciphers(const char *prefix)
|
||||
{
|
||||
STACK_OF(EVP_CIPHER) *ciphers = sk_EVP_CIPHER_new(cipher_cmp);
|
||||
int i;
|
||||
@ -113,12 +113,12 @@ static void list_ciphers(void)
|
||||
}
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
if (include_legacy()) {
|
||||
BIO_printf(bio_out, "Legacy:\n");
|
||||
BIO_printf(bio_out, "%sLegacy:\n", prefix);
|
||||
EVP_CIPHER_do_all_sorted(legacy_cipher_fn, bio_out);
|
||||
}
|
||||
#endif
|
||||
|
||||
BIO_printf(bio_out, "Provided:\n");
|
||||
BIO_printf(bio_out, "%sProvided:\n", prefix);
|
||||
EVP_CIPHER_do_all_provided(app_get0_libctx(), collect_ciphers, ciphers);
|
||||
sk_EVP_CIPHER_sort(ciphers);
|
||||
for (i = 0; i < sk_EVP_CIPHER_num(ciphers); i++) {
|
||||
@ -186,7 +186,7 @@ static void collect_digests(EVP_MD *digest, void *stack)
|
||||
EVP_MD_up_ref(digest);
|
||||
}
|
||||
|
||||
static void list_digests(void)
|
||||
static void list_digests(const char *prefix)
|
||||
{
|
||||
STACK_OF(EVP_MD) *digests = sk_EVP_MD_new(md_cmp);
|
||||
int i;
|
||||
@ -197,12 +197,12 @@ static void list_digests(void)
|
||||
}
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
if (include_legacy()) {
|
||||
BIO_printf(bio_out, "Legacy:\n");
|
||||
BIO_printf(bio_out, "%sLegacy:\n", prefix);
|
||||
EVP_MD_do_all_sorted(legacy_md_fn, bio_out);
|
||||
}
|
||||
#endif
|
||||
|
||||
BIO_printf(bio_out, "Provided:\n");
|
||||
BIO_printf(bio_out, "%sProvided:\n", prefix);
|
||||
EVP_MD_do_all_provided(app_get0_libctx(), collect_digests, digests);
|
||||
sk_EVP_MD_sort(digests);
|
||||
for (i = 0; i < sk_EVP_MD_num(digests); i++) {
|
||||
@ -1430,6 +1430,7 @@ static void list_disabled(void)
|
||||
typedef enum HELPLIST_CHOICE {
|
||||
OPT_COMMON,
|
||||
OPT_ONE, OPT_VERBOSE,
|
||||
OPT_ALL_ARGORITHMS,
|
||||
OPT_COMMANDS, OPT_DIGEST_COMMANDS, OPT_MAC_ALGORITHMS, OPT_OPTIONS,
|
||||
OPT_DIGEST_ALGORITHMS, OPT_CIPHER_COMMANDS, OPT_CIPHER_ALGORITHMS,
|
||||
OPT_PK_ALGORITHMS, OPT_PK_METHOD, OPT_DISABLED,
|
||||
@ -1455,6 +1456,7 @@ const OPTIONS list_options[] = {
|
||||
{"select", OPT_SELECT_NAME, 's', "Select a single algorithm"},
|
||||
{"commands", OPT_COMMANDS, '-', "List of standard commands"},
|
||||
{"standard-commands", OPT_COMMANDS, '-', "List of standard commands"},
|
||||
{"all-algorithms", OPT_ALL_ARGORITHMS, '-', "List of all algorithms"},
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
{"digest-commands", OPT_DIGEST_COMMANDS, '-',
|
||||
"List of message digest commands (deprecated)"},
|
||||
@ -1515,6 +1517,7 @@ int list_main(int argc, char **argv)
|
||||
int one = 0, done = 0;
|
||||
struct {
|
||||
unsigned int commands:1;
|
||||
unsigned int all_algorithms:1;
|
||||
unsigned int random_instances:1;
|
||||
unsigned int random_generators:1;
|
||||
unsigned int digest_commands:1;
|
||||
@ -1558,6 +1561,9 @@ opthelp:
|
||||
case OPT_ONE:
|
||||
one = 1;
|
||||
break;
|
||||
case OPT_ALL_ARGORITHMS:
|
||||
todo.all_algorithms = 1;
|
||||
break;
|
||||
case OPT_COMMANDS:
|
||||
todo.commands = 1;
|
||||
break;
|
||||
@ -1652,6 +1658,29 @@ opthelp:
|
||||
|
||||
if (todo.commands)
|
||||
list_type(FT_general, one);
|
||||
if (todo.all_algorithms) {
|
||||
BIO_printf(bio_out, "Digests:\n");
|
||||
list_digests(" ");
|
||||
BIO_printf(bio_out, "Symmetric Ciphers:\n");
|
||||
list_ciphers(" ");
|
||||
list_kdfs();
|
||||
list_macs();
|
||||
|
||||
BIO_printf(bio_out, "Provided Asymmetric Encryption:\n");
|
||||
list_asymciphers();
|
||||
BIO_printf(bio_out, "Provided Key Exchange:\n");
|
||||
list_keyexchanges();
|
||||
BIO_printf(bio_out, "Provided Signatures:\n");
|
||||
list_signatures();
|
||||
BIO_printf(bio_out, "Provided Key encapsulation:\n");
|
||||
list_kems();
|
||||
BIO_printf(bio_out, "Provided Key managers:\n");
|
||||
list_keymanagers();
|
||||
|
||||
list_encoders();
|
||||
list_decoders();
|
||||
list_store_loaders();
|
||||
}
|
||||
if (todo.random_instances)
|
||||
list_random_instances();
|
||||
if (todo.random_generators)
|
||||
@ -1659,7 +1688,7 @@ opthelp:
|
||||
if (todo.digest_commands)
|
||||
list_type(FT_md, one);
|
||||
if (todo.digest_algorithms)
|
||||
list_digests();
|
||||
list_digests("");
|
||||
if (todo.kdf_algorithms)
|
||||
list_kdfs();
|
||||
if (todo.mac_algorithms)
|
||||
@ -1667,7 +1696,7 @@ opthelp:
|
||||
if (todo.cipher_commands)
|
||||
list_type(FT_cipher, one);
|
||||
if (todo.cipher_algorithms)
|
||||
list_ciphers();
|
||||
list_ciphers("");
|
||||
if (todo.encoder_algorithms)
|
||||
list_encoders();
|
||||
if (todo.decoder_algorithms)
|
||||
|
@ -12,6 +12,7 @@ B<openssl list>
|
||||
[B<-verbose>]
|
||||
[B<-select> I<name>]
|
||||
[B<-1>]
|
||||
[B<-all-algorithms>]
|
||||
[B<-commands>]
|
||||
[B<-standard-commands>]
|
||||
[B<-digest-algorithms>]
|
||||
@ -72,6 +73,40 @@ Only list algorithms that match this name.
|
||||
List the commands, digest-commands, or cipher-commands in a single column.
|
||||
If used, this option must be given first.
|
||||
|
||||
=item B<-all-algorithms>
|
||||
|
||||
Display lists of all algorithms. These include:
|
||||
|
||||
=over 4
|
||||
|
||||
=item Asymmetric ciphers
|
||||
|
||||
=item Decoders
|
||||
|
||||
=item Digests
|
||||
|
||||
=item Encoders
|
||||
|
||||
=item Key derivation algorithms (KDF)
|
||||
|
||||
=item Key encapsulation methods (KEM)
|
||||
|
||||
=item Key exchange algorithms (KEX)
|
||||
|
||||
=item Key managers
|
||||
|
||||
=item Message authentication code algorithms (MAC)
|
||||
|
||||
=item Random number generators (RNG, DRBG)
|
||||
|
||||
=item Signature algorithms
|
||||
|
||||
=item Store loaders
|
||||
|
||||
=item Symmetric ciphers
|
||||
|
||||
=back
|
||||
|
||||
=item B<-commands>
|
||||
|
||||
Display a list of standard commands.
|
||||
|
Loading…
Reference in New Issue
Block a user