提交 f91ded1f 编写于 作者: R Richard Levitte

STORE: add ENGINE information to loaders

Reviewed-by: NMatt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3542)
上级 d32e10d6
...@@ -1041,6 +1041,7 @@ static int file_close(OSSL_STORE_LOADER_CTX *ctx) ...@@ -1041,6 +1041,7 @@ static int file_close(OSSL_STORE_LOADER_CTX *ctx)
static OSSL_STORE_LOADER file_loader = static OSSL_STORE_LOADER file_loader =
{ {
"file", "file",
NULL,
file_open, file_open,
NULL, NULL,
file_load, file_load,
......
...@@ -72,6 +72,7 @@ OSSL_STORE_LOADER *ossl_store_unregister_loader_int(const char *scheme); ...@@ -72,6 +72,7 @@ OSSL_STORE_LOADER *ossl_store_unregister_loader_int(const char *scheme);
/* loader stuff */ /* loader stuff */
struct ossl_store_loader_st { struct ossl_store_loader_st {
const char *scheme; const char *scheme;
ENGINE *engine;
OSSL_STORE_open_fn open; OSSL_STORE_open_fn open;
OSSL_STORE_ctrl_fn ctrl; OSSL_STORE_ctrl_fn ctrl;
OSSL_STORE_load_fn load; OSSL_STORE_load_fn load;
......
...@@ -28,7 +28,7 @@ DEFINE_RUN_ONCE_STATIC(do_registry_init) ...@@ -28,7 +28,7 @@ DEFINE_RUN_ONCE_STATIC(do_registry_init)
* Functions for manipulating OSSL_STORE_LOADERs * Functions for manipulating OSSL_STORE_LOADERs
*/ */
OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(const char *scheme) OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme)
{ {
OSSL_STORE_LOADER *res = OPENSSL_zalloc(sizeof(*res)); OSSL_STORE_LOADER *res = OPENSSL_zalloc(sizeof(*res));
...@@ -49,10 +49,16 @@ OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(const char *scheme) ...@@ -49,10 +49,16 @@ OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(const char *scheme)
return NULL; return NULL;
} }
res->engine = e;
res->scheme = scheme; res->scheme = scheme;
return res; return res;
} }
const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader)
{
return loader->engine;
}
const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader) const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader)
{ {
return loader->scheme; return loader->scheme;
...@@ -257,3 +263,16 @@ void ossl_store_destroy_loaders_int(void) ...@@ -257,3 +263,16 @@ void ossl_store_destroy_loaders_int(void)
CRYPTO_THREAD_lock_free(registry_lock); CRYPTO_THREAD_lock_free(registry_lock);
registry_lock = NULL; registry_lock = NULL;
} }
/*
* Functions to list OSSL_STORE loaders
*/
IMPLEMENT_LHASH_DOALL_ARG_CONST(OSSL_STORE_LOADER, void);
int OSSL_STORE_do_all_loaders(void (*do_function) (const OSSL_STORE_LOADER
*loader, void *do_arg),
void *do_arg)
{
lh_OSSL_STORE_LOADER_doall_void(loader_register, do_function, do_arg);
return 1;
}
...@@ -159,7 +159,8 @@ void OSSL_STORE_INFO_free(OSSL_STORE_INFO *info); ...@@ -159,7 +159,8 @@ void OSSL_STORE_INFO_free(OSSL_STORE_INFO *info);
*/ */
typedef struct ossl_store_loader_st OSSL_STORE_LOADER; typedef struct ossl_store_loader_st OSSL_STORE_LOADER;
OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(const char *scheme); OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme);
const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader);
const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader);
/* struct ossl_store_loader_ctx_st is defined differently by each loader */ /* struct ossl_store_loader_ctx_st is defined differently by each loader */
typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX; typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX;
...@@ -193,6 +194,14 @@ void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); ...@@ -193,6 +194,14 @@ void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader);
int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader);
OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme);
/*-
* Functions to list STORE loaders
* -------------------------------
*/
int OSSL_STORE_do_all_loaders(void (*do_function) (const OSSL_STORE_LOADER
*loader, void *do_arg),
void *do_arg);
/* /*
* Error strings * Error strings
......
...@@ -4340,3 +4340,5 @@ OSSL_STORE_ctrl 4282 1_1_1 EXIST::FUNCTION: ...@@ -4340,3 +4340,5 @@ OSSL_STORE_ctrl 4282 1_1_1 EXIST::FUNCTION:
OSSL_STORE_INFO_get0_NAME_description 4283 1_1_1 EXIST::FUNCTION: OSSL_STORE_INFO_get0_NAME_description 4283 1_1_1 EXIST::FUNCTION:
OSSL_STORE_INFO_set0_NAME_description 4284 1_1_1 EXIST::FUNCTION: OSSL_STORE_INFO_set0_NAME_description 4284 1_1_1 EXIST::FUNCTION:
OSSL_STORE_INFO_get1_NAME_description 4285 1_1_1 EXIST::FUNCTION: OSSL_STORE_INFO_get1_NAME_description 4285 1_1_1 EXIST::FUNCTION:
OSSL_STORE_do_all_loaders 4286 1_1_1 EXIST::FUNCTION:
OSSL_STORE_LOADER_get0_engine 4287 1_1_1 EXIST::FUNCTION:
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册