diff options
author | Richard Levitte <levitte@openssl.org> | 2019-01-20 13:14:58 +0100 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2019-03-11 20:40:13 +0100 |
commit | 4c2883a9bf59c5ee31e8e2e101b3894a16c06950 (patch) | |
tree | 5a46bea7ea5815cfa540b0ca81d2a063c9a27aea /include/internal/provider.h | |
parent | 3f4e8d6604842db4f416d029e9bbeddf90976c00 (diff) |
Replumbing: Add the Provider Object, type OSSL_PROVIDER
The OSSL_PROVIDER is the core object involved in loading a provider
module, initialize a provider and do the initial communication of
provider wide and core wide dispatch tables.
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8287)
Diffstat (limited to 'include/internal/provider.h')
-rw-r--r-- | include/internal/provider.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/include/internal/provider.h b/include/internal/provider.h new file mode 100644 index 0000000000..44d1d70461 --- /dev/null +++ b/include/internal/provider.h @@ -0,0 +1,61 @@ +/* + * 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 + */ + +#ifndef OSSL_INTERNAL_PROVIDER_H +# define OSSL_INTERNAL_PROVIDER_H + +# include <openssl/core.h> +# include "internal/dso.h" +# include "internal/symhacks.h" + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * namespaces: + * + * ossl_provider_ Provider Object internal API + * OSSL_PROVIDER Provider Object + */ + +/* Provider Object finder, constructor and destructor */ +OSSL_PROVIDER *ossl_provider_find(OPENSSL_CTX *libctx, const char *name); +OSSL_PROVIDER *ossl_provider_new(OPENSSL_CTX *libctx, const char *name, + OSSL_provider_init_fn *init_function); +int ossl_provider_upref(OSSL_PROVIDER *prov); +void ossl_provider_free(OSSL_PROVIDER *prov); + +/* Setters */ +int ossl_provider_add_module_location(OSSL_PROVIDER *prov, const char *loc); + +/* + * Activate the Provider + * If the Provider is a module, the module will be loaded + * Inactivation is done by freeing the Provider + */ +int ossl_provider_activate(OSSL_PROVIDER *prov); + +/* Getters for other library functions */ +const char *ossl_provider_name(OSSL_PROVIDER *prov); +const DSO *ossl_provider_dso(OSSL_PROVIDER *prov); +const char *ossl_provider_module_name(OSSL_PROVIDER *prov); +const char *ossl_provider_module_path(OSSL_PROVIDER *prov); + +/* Thin wrappers around calls to the provider */ +void ossl_provider_teardown(const OSSL_PROVIDER *prov); +const OSSL_ITEM *ossl_provider_get_param_types(const OSSL_PROVIDER *prov); +int ossl_provider_get_params(const OSSL_PROVIDER *prov, + const OSSL_PARAM params[]); + +# ifdef __cplusplus +} +# endif + +#endif |