#include "prov/implementations.h"
#include "prov/provider_ctx.h"
#include "prov/kdfexchange.h"
+#include "prov/providercommon.h"
static OSSL_FUNC_keyexch_newctx_fn kdf_tls1_prf_newctx;
static OSSL_FUNC_keyexch_newctx_fn kdf_hkdf_newctx;
static void *kdf_newctx(const char *kdfname, void *provctx)
{
- PROV_KDF_CTX *kdfctx = OPENSSL_zalloc(sizeof(PROV_KDF_CTX));
+ PROV_KDF_CTX *kdfctx;
EVP_KDF *kdf = NULL;
+ if (!ossl_prov_is_running())
+ return NULL;
+
+ kdfctx = OPENSSL_zalloc(sizeof(PROV_KDF_CTX));
if (kdfctx == NULL)
return NULL;
{
PROV_KDF_CTX *pkdfctx = (PROV_KDF_CTX *)vpkdfctx;
- if (pkdfctx == NULL || vkdf == NULL || !kdf_data_up_ref(vkdf))
+ if (!ossl_prov_is_running()
+ || pkdfctx == NULL
+ || vkdf == NULL
+ || !kdf_data_up_ref(vkdf))
return 0;
pkdfctx->kdfdata = vkdf;
{
PROV_KDF_CTX *pkdfctx = (PROV_KDF_CTX *)vpkdfctx;
+ if (!ossl_prov_is_running())
+ return 0;
return EVP_KDF_derive(pkdfctx->kdfctx, secret, *secretlen);
}
PROV_KDF_CTX *srcctx = (PROV_KDF_CTX *)vpkdfctx;
PROV_KDF_CTX *dstctx;
+ if (!ossl_prov_is_running())
+ return NULL;
+
dstctx = OPENSSL_zalloc(sizeof(*srcctx));
if (dstctx == NULL)
return NULL;