#include <openssl/x509.h>
#include <openssl/x509v3.h>
#include <openssl/trace.h>
+#include "crypto/evp.h"
DEFINE_STACK_OF(CONF_VALUE)
return 0;
}
} else if (strcmp(oval->name, "default_properties") == 0) {
- if (!EVP_set_default_properties(cnf->libctx, oval->value)) {
+ if (!evp_set_default_properties_int(cnf->libctx, oval->value, 0)) {
EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_SET_DEFAULT_PROPERTY_FAILURE);
return 0;
}
ossl_method_store_flush_cache(store, 1);
}
-static int evp_set_default_properties(OPENSSL_CTX *libctx,
- OSSL_PROPERTY_LIST *def_prop)
+static int evp_set_parsed_default_properties(OPENSSL_CTX *libctx,
+ OSSL_PROPERTY_LIST *def_prop,
+ int loadconfig)
{
OSSL_METHOD_STORE *store = get_evp_method_store(libctx);
- OSSL_PROPERTY_LIST **plp = ossl_ctx_global_properties(libctx);
+ OSSL_PROPERTY_LIST **plp = ossl_ctx_global_properties(libctx, loadconfig);
if (plp != NULL) {
ossl_property_free(*plp);
return 0;
}
-int EVP_set_default_properties(OPENSSL_CTX *libctx, const char *propq)
+int evp_set_default_properties_int(OPENSSL_CTX *libctx, const char *propq,
+ int loadconfig)
{
OSSL_PROPERTY_LIST *pl = NULL;
EVPerr(0, EVP_R_DEFAULT_QUERY_PARSE_ERROR);
return 0;
}
- return evp_set_default_properties(libctx, pl);
+ return evp_set_parsed_default_properties(libctx, pl, loadconfig);
}
+int EVP_set_default_properties(OPENSSL_CTX *libctx, const char *propq)
+{
+ return evp_set_default_properties_int(libctx, propq, 1);
+}
static int evp_default_properties_merge(OPENSSL_CTX *libctx, const char *propq)
{
- OSSL_PROPERTY_LIST **plp = ossl_ctx_global_properties(libctx);
+ OSSL_PROPERTY_LIST **plp = ossl_ctx_global_properties(libctx, 1);
OSSL_PROPERTY_LIST *pl1, *pl2;
if (propq == NULL)
EVPerr(0, ERR_R_MALLOC_FAILURE);
return 0;
}
- return evp_set_default_properties(libctx, pl2);
+ return evp_set_parsed_default_properties(libctx, pl2, 0);
}
static int evp_default_property_is_enabled(OPENSSL_CTX *libctx,
const char *prop_name)
{
- OSSL_PROPERTY_LIST **plp = ossl_ctx_global_properties(libctx);
+ OSSL_PROPERTY_LIST **plp = ossl_ctx_global_properties(libctx, 1);
return plp != NULL && ossl_property_is_enabled(libctx, prop_name, *plp);
}
ossl_ctx_global_properties_free,
};
-OSSL_PROPERTY_LIST **ossl_ctx_global_properties(OPENSSL_CTX *libctx)
+OSSL_PROPERTY_LIST **ossl_ctx_global_properties(OPENSSL_CTX *libctx,
+ int loadconfig)
{
+#ifndef FIPS_MODULE
+ if (loadconfig && !OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL))
+ return NULL;
+#endif
return openssl_ctx_get_data(libctx, OPENSSL_CTX_GLOBAL_PROPERTIES,
&ossl_ctx_global_properties_method);
}
if (prop_query != NULL)
p2 = pq = ossl_parse_query(store->ctx, prop_query);
- plp = ossl_ctx_global_properties(store->ctx);
+ plp = ossl_ctx_global_properties(store->ctx, 1);
if (plp != NULL && *plp != NULL) {
if (pq == NULL) {
pq = *plp;
const char *prop_query, void **method);
/* Get the global properties associate with the specified library context */
-OSSL_PROPERTY_LIST **ossl_ctx_global_properties(OPENSSL_CTX *ctx);
+OSSL_PROPERTY_LIST **ossl_ctx_global_properties(OPENSSL_CTX *ctx, int loadconfig);
/* property query cache functions */
int ossl_method_store_cache_get(OSSL_METHOD_STORE *store, int nid,