]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
openssl: Log loaded providers
authorTobias Brunner <tobias@strongswan.org>
Mon, 22 Nov 2021 09:38:29 +0000 (10:38 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 8 Dec 2021 10:34:22 +0000 (11:34 +0100)
src/libstrongswan/plugins/openssl/openssl_plugin.c

index e7e3dc456be9a1b87d61b2e9be655e9103a17a99..c93ea60482150319b757f48ad785fac4e813fd03 100644 (file)
@@ -916,6 +916,31 @@ METHOD(plugin_t, destroy, void,
        free(this);
 }
 
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+typedef struct {
+       char names[BUF_LEN];
+       int len;
+} ossl_provider_names_t;
+
+/**
+ * Callback to produce a list of the names of loaded providers
+ */
+static int concat_ossl_providers(OSSL_PROVIDER *provider, void *cbdata)
+{
+       ossl_provider_names_t *data = cbdata;
+       int len;
+
+       len = snprintf(&data->names[data->len], sizeof(data->names) - data->len,
+                                  " %s", OSSL_PROVIDER_get0_name(provider));
+       if (len < (sizeof(data->names) - data->len))
+       {
+               data->len += len;
+               return 1;
+       }
+       return 0;
+}
+#endif
+
 /*
  * see header file
  */
@@ -999,6 +1024,10 @@ plugin_t *openssl_plugin_create()
                array_insert_create(&this->providers, ARRAY_TAIL,
                                                        OSSL_PROVIDER_load(NULL, "default"));
        }
+       ossl_provider_names_t data = {};
+       OSSL_PROVIDER_do_all(NULL, concat_ossl_providers, &data);
+       dbg(DBG_LIB, strpfx(lib->ns, "charon") ? 1 : 2,
+               "providers loaded by OpenSSL:%s", data.names);
 #endif /* OPENSSL_VERSION_NUMBER */
 
 #ifdef OPENSSL_FIPS