summaryrefslogtreecommitdiffstats
path: root/apps/list.c
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2019-09-23 11:30:05 +0200
committerRichard Levitte <levitte@openssl.org>2019-10-17 09:16:45 +0200
commit031873fe03610aa191031b5a36089bc29c67db29 (patch)
tree5e53f1cbc9f57a504b9ccf5807e1eaa0122bd33c /apps/list.c
parent506cb0f6322b24c980273ff5cd8f2c973a12b42f (diff)
'openssl list' and 'openssl provider': adapt display of multiple names
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org> (Merged from https://github.com/openssl/openssl/pull/9979)
Diffstat (limited to 'apps/list.c')
-rw-r--r--apps/list.c65
1 files changed, 48 insertions, 17 deletions
diff --git a/apps/list.c b/apps/list.c
index 1a43e43c56..2e8867df20 100644
--- a/apps/list.c
+++ b/apps/list.c
@@ -17,6 +17,7 @@
#include "app_params.h"
#include "progs.h"
#include "opt.h"
+#include "names.h"
static int verbose = 0;
@@ -38,7 +39,7 @@ DEFINE_STACK_OF(EVP_CIPHER)
static int cipher_cmp(const EVP_CIPHER * const *a,
const EVP_CIPHER * const *b)
{
- int ret = strcasecmp(EVP_CIPHER_name(*a), EVP_CIPHER_name(*b));
+ int ret = EVP_CIPHER_number(*a) - EVP_CIPHER_number(*b);
if (ret == 0)
ret = strcmp(OSSL_PROVIDER_name(EVP_CIPHER_provider(*a)),
@@ -64,14 +65,22 @@ static void list_ciphers(void)
EVP_CIPHER_do_all_sorted(legacy_cipher_fn, bio_out);
BIO_printf(bio_out, "Provided:\n");
- EVP_CIPHER_do_all_ex(NULL, collect_ciphers, ciphers);
+ EVP_CIPHER_do_all_provided(NULL, collect_ciphers, ciphers);
sk_EVP_CIPHER_sort(ciphers);
for (i = 0; i < sk_EVP_CIPHER_num(ciphers); i++) {
const EVP_CIPHER *c = sk_EVP_CIPHER_value(ciphers, i);
+ STACK_OF(OPENSSL_CSTRING) *names =
+ sk_OPENSSL_CSTRING_new(name_cmp);
- BIO_printf(bio_out, " %s", EVP_CIPHER_name(c));
+ EVP_CIPHER_names_do_all(c, collect_names, names);
+
+ BIO_printf(bio_out, " ");
+ print_names(bio_out, names);
BIO_printf(bio_out, " @ %s\n",
OSSL_PROVIDER_name(EVP_CIPHER_provider(c)));
+
+ sk_OPENSSL_CSTRING_free(names);
+
if (verbose) {
print_param_types("retrievable algorithm parameters",
EVP_CIPHER_gettable_params(c), 4);
@@ -101,7 +110,7 @@ static void list_md_fn(const EVP_MD *m,
DEFINE_STACK_OF(EVP_MD)
static int md_cmp(const EVP_MD * const *a, const EVP_MD * const *b)
{
- int ret = strcasecmp(EVP_MD_name(*a), EVP_MD_name(*b));
+ int ret = EVP_MD_number(*a) - EVP_MD_number(*b);
if (ret == 0)
ret = strcmp(OSSL_PROVIDER_name(EVP_MD_provider(*a)),
@@ -127,14 +136,22 @@ static void list_digests(void)
EVP_MD_do_all_sorted(list_md_fn, bio_out);
BIO_printf(bio_out, "Provided:\n");
- EVP_MD_do_all_ex(NULL, collect_digests, digests);
+ EVP_MD_do_all_provided(NULL, collect_digests, digests);
sk_EVP_MD_sort(digests);
for (i = 0; i < sk_EVP_MD_num(digests); i++) {
const EVP_MD *m = sk_EVP_MD_value(digests, i);
+ STACK_OF(OPENSSL_CSTRING) *names =
+ sk_OPENSSL_CSTRING_new(name_cmp);
- BIO_printf(bio_out, " %s", EVP_MD_name(m));
+ EVP_MD_names_do_all(m, collect_names, names);
+
+ BIO_printf(bio_out, " ");
+ print_names(bio_out, names);
BIO_printf(bio_out, " @ %s\n",
OSSL_PROVIDER_name(EVP_MD_provider(m)));
+
+ sk_OPENSSL_CSTRING_free(names);
+
if (verbose) {
print_param_types("retrievable algorithm parameters",
EVP_MD_gettable_params(m), 4);
@@ -150,7 +167,7 @@ static void list_digests(void)
DEFINE_STACK_OF(EVP_MAC)
static int mac_cmp(const EVP_MAC * const *a, const EVP_MAC * const *b)
{
- int ret = strcasecmp(EVP_MAC_name(*a), EVP_MAC_name(*b));
+ int ret = EVP_MAC_number(*a) - EVP_MAC_number(*b);
if (ret == 0)
ret = strcmp(OSSL_PROVIDER_name(EVP_MAC_provider(*a)),
@@ -173,15 +190,22 @@ static void list_macs(void)
int i;
BIO_printf(bio_out, "Provided MACs:\n");
- EVP_MAC_do_all_ex(NULL, collect_macs, macs);
+ EVP_MAC_do_all_provided(NULL, collect_macs, macs);
sk_EVP_MAC_sort(macs);
for (i = 0; i < sk_EVP_MAC_num(macs); i++) {
const EVP_MAC *m = sk_EVP_MAC_value(macs, i);
+ STACK_OF(OPENSSL_CSTRING) *names =
+ sk_OPENSSL_CSTRING_new(name_cmp);
+
+ EVP_MAC_names_do_all(m, collect_names, names);
- BIO_printf(bio_out, " %s", EVP_MAC_name(m));
+ BIO_printf(bio_out, " ");
+ print_names(bio_out, names);
BIO_printf(bio_out, " @ %s\n",
OSSL_PROVIDER_name(EVP_MAC_provider(m)));
+ sk_OPENSSL_CSTRING_free(names);
+
if (verbose) {
print_param_types("retrievable algorithm parameters",
EVP_MAC_gettable_params(m), 4);
@@ -200,7 +224,7 @@ static void list_macs(void)
DEFINE_STACK_OF(EVP_KDF)
static int kdf_cmp(const EVP_KDF * const *a, const EVP_KDF * const *b)
{
- int ret = strcasecmp(EVP_KDF_name(*a), EVP_KDF_name(*b));
+ int ret = EVP_KDF_number(*a) - EVP_KDF_number(*b);
if (ret == 0)
ret = strcmp(OSSL_PROVIDER_name(EVP_KDF_provider(*a)),
@@ -223,22 +247,29 @@ static void list_kdfs(void)
int i;
BIO_printf(bio_out, "Provided KDFs and PDFs:\n");
- EVP_KDF_do_all_ex(NULL, collect_kdfs, kdfs);
+ EVP_KDF_do_all_provided(NULL, collect_kdfs, kdfs);
sk_EVP_KDF_sort(kdfs);
for (i = 0; i < sk_EVP_KDF_num(kdfs); i++) {
- const EVP_KDF *m = sk_EVP_KDF_value(kdfs, i);
+ const EVP_KDF *k = sk_EVP_KDF_value(kdfs, i);
+ STACK_OF(OPENSSL_CSTRING) *names =
+ sk_OPENSSL_CSTRING_new(name_cmp);
- BIO_printf(bio_out, " %s", EVP_KDF_name(m));
+ EVP_KDF_names_do_all(k, collect_names, names);
+
+ BIO_printf(bio_out, " ");
+ print_names(bio_out, names);
BIO_printf(bio_out, " @ %s\n",
- OSSL_PROVIDER_name(EVP_KDF_provider(m)));
+ OSSL_PROVIDER_name(EVP_KDF_provider(k)));
+
+ sk_OPENSSL_CSTRING_free(names);
if (verbose) {
print_param_types("retrievable algorithm parameters",
- EVP_KDF_gettable_params(m), 4);
+ EVP_KDF_gettable_params(k), 4);
print_param_types("retrievable operation parameters",
- EVP_KDF_gettable_ctx_params(m), 4);
+ EVP_KDF_gettable_ctx_params(k), 4);
print_param_types("settable operation parameters",
- EVP_KDF_settable_ctx_params(m), 4);
+ EVP_KDF_settable_ctx_params(k), 4);
}
}
sk_EVP_KDF_pop_free(kdfs, EVP_KDF_free);