mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-05-02 04:29:38 +00:00
Replumbing: Add an OSSL_PROVIDER iterator with callback
Reviewed-by: Paul Dale <paul.dale@oracle.com> (Merged from https://github.com/openssl/openssl/pull/8340)
This commit is contained in:
parent
e2146e120f
commit
85e2417c0d
@ -328,6 +328,30 @@ int ossl_provider_activate(OSSL_PROVIDER *prov)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ossl_provider_forall_loaded(OPENSSL_CTX *ctx,
|
||||||
|
int (*cb)(OSSL_PROVIDER *provider,
|
||||||
|
void *cbdata),
|
||||||
|
void *cbdata)
|
||||||
|
{
|
||||||
|
int ret = 1;
|
||||||
|
int i;
|
||||||
|
struct provider_store_st *store = get_provider_store(ctx);
|
||||||
|
|
||||||
|
if (store != NULL) {
|
||||||
|
CRYPTO_THREAD_read_lock(store->lock);
|
||||||
|
for (i = 0; i < sk_OSSL_PROVIDER_num(store->providers); i++) {
|
||||||
|
OSSL_PROVIDER *prov = sk_OSSL_PROVIDER_value(store->providers, i);
|
||||||
|
|
||||||
|
if (prov->flag_initialized
|
||||||
|
&& !(ret = cb(prov, cbdata)))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
CRYPTO_THREAD_unlock(store->lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* Getters of Provider Object data */
|
/* Getters of Provider Object data */
|
||||||
const char *ossl_provider_name(OSSL_PROVIDER *prov)
|
const char *ossl_provider_name(OSSL_PROVIDER *prov)
|
||||||
{
|
{
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
ossl_provider_find, ossl_provider_new, ossl_provider_upref,
|
ossl_provider_find, ossl_provider_new, ossl_provider_upref,
|
||||||
ossl_provider_free, ossl_provider_add_module_location,
|
ossl_provider_free, ossl_provider_add_module_location,
|
||||||
ossl_provider_activate, ossl_provider_name, ossl_provider_dso,
|
ossl_provider_activate, ossl_provider_forall_loaded,
|
||||||
|
ossl_provider_name, ossl_provider_dso,
|
||||||
ossl_provider_module_name, ossl_provider_module_path,
|
ossl_provider_module_name, ossl_provider_module_path,
|
||||||
ossl_provider_teardown, ossl_provider_get_param_types,
|
ossl_provider_teardown, ossl_provider_get_param_types,
|
||||||
ossl_provider_get_params - internal provider routines
|
ossl_provider_get_params - internal provider routines
|
||||||
@ -25,6 +26,12 @@ ossl_provider_get_params - internal provider routines
|
|||||||
/* Load and initialize the Provider */
|
/* Load and initialize the Provider */
|
||||||
int ossl_provider_activate(OSSL_PROVIDER *prov);
|
int ossl_provider_activate(OSSL_PROVIDER *prov);
|
||||||
|
|
||||||
|
/* Iterate over all loaded providers */
|
||||||
|
int ossl_provider_forall_loaded(OPENSSL_CTX *,
|
||||||
|
int (*cb)(OSSL_PROVIDER *provider,
|
||||||
|
void *cbdata),
|
||||||
|
void *cbdata);
|
||||||
|
|
||||||
/* Getters for other library functions */
|
/* Getters for other library functions */
|
||||||
const char *ossl_provider_name(OSSL_PROVIDER *prov);
|
const char *ossl_provider_name(OSSL_PROVIDER *prov);
|
||||||
const DSO *ossl_provider_dso(OSSL_PROVIDER *prov);
|
const DSO *ossl_provider_dso(OSSL_PROVIDER *prov);
|
||||||
@ -102,6 +109,9 @@ be located in that module, and called.
|
|||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
ossl_provider_forall_loaded() iterates over all the currently
|
||||||
|
"activated" providers, and calls C<cb> for each of them.
|
||||||
|
|
||||||
ossl_provider_name() returns the name that was given with
|
ossl_provider_name() returns the name that was given with
|
||||||
ossl_provider_new().
|
ossl_provider_new().
|
||||||
|
|
||||||
|
@ -42,6 +42,12 @@ int ossl_provider_add_module_location(OSSL_PROVIDER *prov, const char *loc);
|
|||||||
*/
|
*/
|
||||||
int ossl_provider_activate(OSSL_PROVIDER *prov);
|
int ossl_provider_activate(OSSL_PROVIDER *prov);
|
||||||
|
|
||||||
|
/* Iterate over all loaded providers */
|
||||||
|
int ossl_provider_forall_loaded(OPENSSL_CTX *,
|
||||||
|
int (*cb)(OSSL_PROVIDER *provider,
|
||||||
|
void *cbdata),
|
||||||
|
void *cbdata);
|
||||||
|
|
||||||
/* Getters for other library functions */
|
/* Getters for other library functions */
|
||||||
const char *ossl_provider_name(OSSL_PROVIDER *prov);
|
const char *ossl_provider_name(OSSL_PROVIDER *prov);
|
||||||
const DSO *ossl_provider_dso(OSSL_PROVIDER *prov);
|
const DSO *ossl_provider_dso(OSSL_PROVIDER *prov);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user