OSSL_PROVIDER, OSSL_PROVIDER_load, OSSL_PROVIDER_unload, OSSL_PROVIDER_available, OSSL_PROVIDER_gettable_params, OSSL_PROVIDER_get_params, OSSL_PROVIDER_add_builtin, OSSL_PROVIDER_name - provider routines
#include <openssl/provider.h>
typedef struct ossl_provider_st OSSL_PROVIDER;
OSSL_PROVIDER *OSSL_PROVIDER_load(OPENSSL_CTX *libctx, const char *name);
int OSSL_PROVIDER_unload(OSSL_PROVIDER *prov);
int OSSL_PROVIDER_available(OPENSSL_CTX *libctx, const char *name);
const OSSL_PARAM *OSSL_PROVIDER_gettable_params(OSSL_PROVIDER *prov);
int OSSL_PROVIDER_get_params(OSSL_PROVIDER *prov, OSSL_PARAM params[]);
int OSSL_PROVIDER_add_builtin(OPENSSL_CTX *libctx, const char *name,
ossl_provider_init_fn *init_fn);
const char *OSSL_PROVIDER_name(const OSSL_PROVIDER *prov);
OSSL_PROVIDER is a type that holds internal information about implementation providers (see OPENSSL_CTX(3) for further details.
OSSL_PROVIDER_add_builtin() is used to add a built in provider to OSSL_PROVIDER store in the given library context, by associating a provider name with a provider initialization function. This name can then be used with OSSL_PROVIDER_load().
OSSL_PROVIDER_load() loads and initializes a provider. This may simply initialize a provider that was previously added with OSSL_PROVIDER_add_builtin() and run its given initialization function, or load a provider module with the given name and run its provider entry point, OSSL_provider_init
.
OSSL_PROVIDER_unload() unloads the given provider. For a provider added with OSSL_PROVIDER_add_builtin(), this simply runs its teardown function.
OSSL_PROVIDER_available() checks if a named provider is available for use.
OSSL_PROVIDER_gettable_params() is used to get a provider parameter descriptor set as a constant OSSL_PARAM array. See RETURN VALUES
OSSL_PROVIDER_add() returns 1 on success, or 0 on error. OSSL_PROVIDER_load() returns a pointer to a provider object on success, or NULL on error. OSSL_PROVIDER_unload() returns 1 on success, or 0 on error. OSSL_PROVIDER_available() returns 1 if the named provider is available, otherwise 0. OSSL_PROVIDER_gettable_params() returns a pointer to an array of constant OSSL_PARAM, or NULL if none is provided. OSSL_PROVIDER_get_params() returns 1 on success, or 0 on error. This demonstrates how to load the provider module "foo" and ask for its build number. OPENSSL_CTX(3), HISTORY
The type and functions described here were added in OpenSSL 3.0. Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.EXAMPLES
OSSL_PROVIDER *prov = NULL;
const char *build = NULL;
size_t built_l = 0;
OSSL_PARAM request[] = {
{ "build", OSSL_PARAM_UTF8_STRING_PTR, &build, 0, &build_l },
{ NULL, 0, NULL, 0, NULL }
};
if ((prov = OSSL_PROVIDER_load(NULL, "foo")) != NULL
&& OSSL_PROVIDER_get_params(prov, request))
printf("Provider 'foo' build %s\n", build);
else
ERR_print_errors_fp(stderr);
SEE ALSO
COPYRIGHT