+static void collect_cipher_names(void *method,
+ STACK_OF(OPENSSL_CSTRING) *names)
+{
+ EVP_CIPHER_names_do_all(method, collect_names, names);
+}
+
+static void collect_digest_names(void *method,
+ STACK_OF(OPENSSL_CSTRING) *names)
+{
+ EVP_MD_names_do_all(method, collect_names, names);
+}
+
+static void collect_mac_names(void *method,
+ STACK_OF(OPENSSL_CSTRING) *names)
+{
+ EVP_MAC_names_do_all(method, collect_names, names);
+}
+
+static void collect_keymgmt_names(void *method,
+ STACK_OF(OPENSSL_CSTRING) *names)
+{
+ EVP_KEYMGMT_names_do_all(method, collect_names, names);
+}
+
+static void collect_keyexch_names(void *method,
+ STACK_OF(OPENSSL_CSTRING) *names)
+{
+ EVP_KEYEXCH_names_do_all(method, collect_names, names);
+}
+
+static void collect_signature_names(void *method,
+ STACK_OF(OPENSSL_CSTRING) *names)
+{
+ EVP_SIGNATURE_names_do_all(method, collect_names, names);
+}
+
+static void print_method_names(BIO *out, INFO *info)
+{
+ STACK_OF(OPENSSL_CSTRING) *names = sk_OPENSSL_CSTRING_new(name_cmp);
+
+ info->collect_names_fn(info->method, names);
+ print_names(out, names);
+ sk_OPENSSL_CSTRING_free(names);
+}
+