if (data->force_store || !no_store) {
/* If we haven't been told not to store, add to the global store */
- data->mcm->put(data->libctx, NULL, method, provider,
- data->operation_id, algo->algorithm_names,
+ data->mcm->put(NULL, method, provider, algo->algorithm_names,
algo->property_definition, data->mcm_data);
} else {
/*
if ((data->store = data->mcm->get_tmp_store(data->mcm_data)) == NULL)
return;
- data->mcm->put(data->libctx, data->store, method, provider,
- data->operation_id, algo->algorithm_names,
+ data->mcm->put(data->store, method, provider, algo->algorithm_names,
algo->property_definition, data->mcm_data);
}
{
void *method = NULL;
- if ((method = mcm->get(libctx, NULL, mcm_data)) == NULL) {
+ if ((method = mcm->get(NULL, mcm_data)) == NULL) {
struct construct_data_st cbdata;
- cbdata.libctx = libctx;
cbdata.store = NULL;
- cbdata.operation_id = operation_id;
cbdata.force_store = force_store;
cbdata.mcm = mcm;
cbdata.mcm_data = mcm_data;
/* If there is a temporary store, try there first */
if (cbdata.store != NULL)
- method = mcm->get(libctx, cbdata.store, mcm_data);
+ method = mcm->get(cbdata.store, mcm_data);
/* If no method was found yet, try the global store */
if (method == NULL)
- method = mcm->get(libctx, NULL, mcm_data);
+ method = mcm->get(NULL, mcm_data);
}
return method;
/* Data to be passed through ossl_method_construct() */
struct decoder_data_st {
OSSL_LIB_CTX *libctx;
- OSSL_METHOD_CONSTRUCT_METHOD *mcm;
int id; /* For get_decoder_from_store() */
const char *names; /* For get_decoder_from_store() */
const char *propquery; /* For get_decoder_from_store() */
}
/* Get decoder methods from a store, or put one in */
-static void *get_decoder_from_store(OSSL_LIB_CTX *libctx, void *store,
- void *data)
+static void *get_decoder_from_store(void *store, void *data)
{
struct decoder_data_st *methdata = data;
void *method = NULL;
int id;
if ((id = methdata->id) == 0) {
- OSSL_NAMEMAP *namemap = ossl_namemap_stored(libctx);
+ OSSL_NAMEMAP *namemap = ossl_namemap_stored(methdata->libctx);
id = ossl_namemap_name2num(namemap, methdata->names);
}
if (store == NULL
- && (store = get_decoder_store(libctx)) == NULL)
+ && (store = get_decoder_store(methdata->libctx)) == NULL)
return NULL;
if (!ossl_method_store_fetch(store, id, methdata->propquery, &method))
return method;
}
-static int put_decoder_in_store(OSSL_LIB_CTX *libctx, void *store,
- void *method, const OSSL_PROVIDER *prov,
- int operation_id, const char *names,
- const char *propdef, void *unused)
+static int put_decoder_in_store(void *store, void *method,
+ const OSSL_PROVIDER *prov,
+ const char *names, const char *propdef,
+ void *data)
{
+ struct decoder_data_st *methdata = data;
OSSL_NAMEMAP *namemap;
int id;
- if ((namemap = ossl_namemap_stored(libctx)) == NULL
+ if ((namemap = ossl_namemap_stored(methdata->libctx)) == NULL
|| (id = ossl_namemap_name2num(namemap, names)) == 0)
return 0;
- if (store == NULL && (store = get_decoder_store(libctx)) == NULL)
+ if (store == NULL && (store = get_decoder_store(methdata->libctx)) == NULL)
return 0;
return ossl_method_store_add(store, prov, id, propdef, method,
destruct_decoder
};
- methdata->mcm = &mcm;
methdata->id = id;
methdata->names = name;
methdata->propquery = properties;
/* Data to be passed through ossl_method_construct() */
struct encoder_data_st {
OSSL_LIB_CTX *libctx;
- OSSL_METHOD_CONSTRUCT_METHOD *mcm;
int id; /* For get_encoder_from_store() */
const char *names; /* For get_encoder_from_store() */
const char *propquery; /* For get_encoder_from_store() */
}
/* Get encoder methods from a store, or put one in */
-static void *get_encoder_from_store(OSSL_LIB_CTX *libctx, void *store,
- void *data)
+static void *get_encoder_from_store(void *store, void *data)
{
struct encoder_data_st *methdata = data;
void *method = NULL;
int id;
if ((id = methdata->id) == 0) {
- OSSL_NAMEMAP *namemap = ossl_namemap_stored(libctx);
+ OSSL_NAMEMAP *namemap = ossl_namemap_stored(methdata->libctx);
id = ossl_namemap_name2num(namemap, methdata->names);
}
if (store == NULL
- && (store = get_encoder_store(libctx)) == NULL)
+ && (store = get_encoder_store(methdata->libctx)) == NULL)
return NULL;
if (!ossl_method_store_fetch(store, id, methdata->propquery, &method))
return method;
}
-static int put_encoder_in_store(OSSL_LIB_CTX *libctx, void *store,
- void *method, const OSSL_PROVIDER *prov,
- int operation_id, const char *names,
- const char *propdef, void *unused)
+static int put_encoder_in_store(void *store, void *method,
+ const OSSL_PROVIDER *prov,
+ const char *names, const char *propdef,
+ void *data)
{
+ struct encoder_data_st *methdata = data;
OSSL_NAMEMAP *namemap;
int id;
- if ((namemap = ossl_namemap_stored(libctx)) == NULL
+ if ((namemap = ossl_namemap_stored(methdata->libctx)) == NULL
|| (id = ossl_namemap_name2num(namemap, names)) == 0)
return 0;
- if (store == NULL && (store = get_encoder_store(libctx)) == NULL)
+ if (store == NULL && (store = get_encoder_store(methdata->libctx)) == NULL)
return 0;
return ossl_method_store_add(store, prov, id, propdef, method,
destruct_encoder
};
- methdata->mcm = &mcm;
methdata->id = id;
methdata->names = name;
methdata->propquery = properties;
/* Data to be passed through ossl_method_construct() */
struct evp_method_data_st {
OSSL_LIB_CTX *libctx;
- OSSL_METHOD_CONSTRUCT_METHOD *mcm;
int operation_id; /* For get_evp_method_from_store() */
int name_id; /* For get_evp_method_from_store() */
const char *names; /* For get_evp_method_from_store() */
| (operation_id & METHOD_ID_OPERATION_MASK));
}
-static void *get_evp_method_from_store(OSSL_LIB_CTX *libctx, void *store,
- void *data)
+static void *get_evp_method_from_store(void *store, void *data)
{
struct evp_method_data_st *methdata = data;
void *method = NULL;
* as the name or name id are passed via methdata.
*/
if ((name_id = methdata->name_id) == 0 && methdata->names != NULL) {
- OSSL_NAMEMAP *namemap = ossl_namemap_stored(libctx);
+ OSSL_NAMEMAP *namemap = ossl_namemap_stored(methdata->libctx);
const char *names = methdata->names;
const char *q = strchr(names, NAME_SEPARATOR);
size_t l = (q == NULL ? strlen(names) : (size_t)(q - names));
return NULL;
if (store == NULL
- && (store = get_evp_method_store(libctx)) == NULL)
+ && (store = get_evp_method_store(methdata->libctx)) == NULL)
return NULL;
if (!ossl_method_store_fetch(store, meth_id, methdata->propquery,
return method;
}
-static int put_evp_method_in_store(OSSL_LIB_CTX *libctx, void *store,
- void *method, const OSSL_PROVIDER *prov,
- int operation_id, const char *names,
- const char *propdef, void *data)
+static int put_evp_method_in_store(void *store, void *method,
+ const OSSL_PROVIDER *prov,
+ const char *names, const char *propdef,
+ void *data)
{
struct evp_method_data_st *methdata = data;
OSSL_NAMEMAP *namemap;
l = (q == NULL ? strlen(names) : (size_t)(q - names));
}
- if ((namemap = ossl_namemap_stored(libctx)) == NULL
+ if ((namemap = ossl_namemap_stored(methdata->libctx)) == NULL
|| (name_id = ossl_namemap_name2num_n(namemap, names, l)) == 0
- || (meth_id = evp_method_id(name_id, operation_id)) == 0)
+ || (meth_id = evp_method_id(name_id, methdata->operation_id)) == 0)
return 0;
if (store == NULL
- && (store = get_evp_method_store(libctx)) == NULL)
+ && (store = get_evp_method_store(methdata->libctx)) == NULL)
return 0;
return ossl_method_store_add(store, prov, meth_id, propdef, method,
destruct_evp_method
};
- methdata->mcm = &mcm;
methdata->operation_id = operation_id;
methdata->name_id = name_id;
methdata->names = name;
/* Data to be passed through ossl_method_construct() */
struct loader_data_st {
OSSL_LIB_CTX *libctx;
- OSSL_METHOD_CONSTRUCT_METHOD *mcm;
int scheme_id; /* For get_loader_from_store() */
const char *scheme; /* For get_loader_from_store() */
const char *propquery; /* For get_loader_from_store() */
}
/* Get loader methods from a store, or put one in */
-static void *get_loader_from_store(OSSL_LIB_CTX *libctx, void *store,
- void *data)
+static void *get_loader_from_store(void *store, void *data)
{
struct loader_data_st *methdata = data;
void *method = NULL;
int id;
if ((id = methdata->scheme_id) == 0) {
- OSSL_NAMEMAP *namemap = ossl_namemap_stored(libctx);
+ OSSL_NAMEMAP *namemap = ossl_namemap_stored(methdata->libctx);
id = ossl_namemap_name2num(namemap, methdata->scheme);
}
if (store == NULL
- && (store = get_loader_store(libctx)) == NULL)
+ && (store = get_loader_store(methdata->libctx)) == NULL)
return NULL;
if (!ossl_method_store_fetch(store, id, methdata->propquery, &method))
return method;
}
-static int put_loader_in_store(OSSL_LIB_CTX *libctx, void *store,
- void *method, const OSSL_PROVIDER *prov,
- int operation_id, const char *scheme,
- const char *propdef, void *unused)
+static int put_loader_in_store(void *store, void *method,
+ const OSSL_PROVIDER *prov,
+ const char *scheme, const char *propdef,
+ void *data)
{
+ struct loader_data_st *methdata = data;
OSSL_NAMEMAP *namemap;
int id;
- if ((namemap = ossl_namemap_stored(libctx)) == NULL
+ if ((namemap = ossl_namemap_stored(methdata->libctx)) == NULL
|| (id = ossl_namemap_name2num(namemap, scheme)) == 0)
return 0;
- if (store == NULL && (store = get_loader_store(libctx)) == NULL)
+ if (store == NULL && (store = get_loader_store(methdata->libctx)) == NULL)
return 0;
return ossl_method_store_add(store, prov, id, propdef, method,
destruct_loader
};
- methdata->mcm = &mcm;
methdata->scheme_id = id;
methdata->scheme = scheme;
methdata->propquery = properties;
/* Get a temporary store */
void *(*get_tmp_store)(void *data);
/* Get an already existing method from a store */
- void *(*get)(OSSL_LIB_CTX *libctx, void *store, void *data);
+ void *(*get)(void *store, void *data);
/* Store a method in a store */
- int (*put)(OSSL_LIB_CTX *libctx, void *store, void *method,
- const OSSL_PROVIDER *prov, int operation_id, const char *name,
- const char *propdef, void *data);
+ int (*put)(void *store, void *method, const OSSL_PROVIDER *prov,
+ const char *name, const char *propdef, void *data);
/* Construct a new method */
void *(*construct)(const OSSL_ALGORITHM *algodef, OSSL_PROVIDER *prov,
void *data);