From 0d1f7ae3c928486120b682a6ce6efcaeb36229d6 Mon Sep 17 00:00:00 2001 From: Pauli Date: Thu, 1 Nov 2018 14:25:20 +1000 Subject: [PATCH] openssl list -mac-algorithms support. Reviewed-by: Richard Levitte Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/7541) --- apps/openssl.c | 21 ++++++++++++++++++++- doc/man1/list.pod | 8 ++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/apps/openssl.c b/apps/openssl.c index 3d6b276c40..67b75e4cfd 100644 --- a/apps/openssl.c +++ b/apps/openssl.c @@ -297,6 +297,20 @@ static void list_md_fn(const EVP_MD *m, } } +static void list_mac_fn(const EVP_MAC *m, + const char *from, const char *to, void *arg) +{ + if (m != NULL) { + BIO_printf(arg, "%s\n", EVP_MAC_name(m)); + } else { + if (from == NULL) + from = ""; + if (to == NULL) + to = ""; + BIO_printf(arg, "%s => %s\n", from, to); + } +} + static void list_missing_help(void) { const FUNCTION *fp; @@ -396,7 +410,7 @@ static void list_options_for_command(const char *command) /* Unified enum for help and list commands. */ typedef enum HELPLIST_CHOICE { OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, OPT_ONE, - OPT_COMMANDS, OPT_DIGEST_COMMANDS, OPT_OPTIONS, + 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, OPT_MISSING_HELP, OPT_OBJECTS @@ -410,6 +424,8 @@ const OPTIONS list_options[] = { "List of message digest commands"}, {"digest-algorithms", OPT_DIGEST_ALGORITHMS, '-', "List of message digest algorithms"}, + {"mac-algorithms", OPT_MAC_ALGORITHMS, '-', + "List of message authentication code algorithms"}, {"cipher-commands", OPT_CIPHER_COMMANDS, '-', "List of cipher commands"}, {"cipher-algorithms", OPT_CIPHER_ALGORITHMS, '-', "List of cipher algorithms"}, @@ -457,6 +473,9 @@ opthelp: case OPT_DIGEST_ALGORITHMS: EVP_MD_do_all_sorted(list_md_fn, bio_out); break; + case OPT_MAC_ALGORITHMS: + EVP_MAC_do_all_sorted(list_mac_fn, bio_out); + break; case OPT_CIPHER_COMMANDS: list_type(FT_cipher, one); break; diff --git a/doc/man1/list.pod b/doc/man1/list.pod index f2fd06bb1f..eeb099b697 100644 --- a/doc/man1/list.pod +++ b/doc/man1/list.pod @@ -13,6 +13,7 @@ B [B<-commands>] [B<-digest-commands>] [B<-digest-algorithms>] +[B<-mac-algorithms>] [B<-cipher-commands>] [B<-cipher-algorithms>] [B<-public-key-algorithms>] @@ -53,6 +54,13 @@ If a line is of the form foo => bar then B is an alias for the official algorithm name, B. +=item B<-mac-algorithms> + +Display a list of message authentication code algorithms. +If a line is of the form + foo => bar +then B is an alias for the official algorithm name, B. + =item B<-cipher-commands> Display a list of cipher commands, which are typically used as input -- 2.34.1