const OSSL_PARAM params[])
{
KDF_HMAC_DRBG *hmac = (KDF_HMAC_DRBG *)vctx;
- PROV_DRBG_HMAC *drbg = &hmac->base;
- OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(hmac->provctx);
+ PROV_DRBG_HMAC *drbg;
+ OSSL_LIB_CTX *libctx;
const EVP_MD *md;
struct hmac_drbg_kdf_set_ctx_params_st p;
void *ptr = NULL;
size_t size = 0;
int md_size;
- if (!hmac_drbg_kdf_set_ctx_params_decoder(params, &p))
+ if (hmac == NULL || !hmac_drbg_kdf_set_ctx_params_decoder(params, &p))
return 0;
+ drbg = &hmac->base;
+ libctx = PROV_LIBCTX_OF(hmac->provctx);
+
if (p.ent != NULL) {
if (!OSSL_PARAM_get_octet_string(p.ent, &ptr, 0, &size))
return 0;
static int kbkdf_set_ctx_params(void *vctx, const OSSL_PARAM params[])
{
KBKDF *ctx = (KBKDF *)vctx;
- OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(ctx->provctx);
+ OSSL_LIB_CTX *libctx;
struct kbkdf_set_ctx_params_st p;
const char *s;
- if (!kbkdf_set_ctx_params_decoder(params, &p))
+ if (ctx == NULL || !kbkdf_set_ctx_params_decoder(params, &p))
return 0;
+ libctx = PROV_LIBCTX_OF(ctx->provctx);
+
if (!OSSL_FIPS_IND_SET_CTX_FROM_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, p.ind_k))
return 0;
{
struct krb5kdf_set_ctx_params_st p;
KRB5KDF_CTX *ctx = vctx;
- OSSL_LIB_CTX *provctx = PROV_LIBCTX_OF(ctx->provctx);
+ OSSL_LIB_CTX *provctx;
- if (!krb5kdf_set_ctx_params_decoder(params, &p))
+ if (ctx == NULL || !krb5kdf_set_ctx_params_decoder(params, &p))
return 0;
+ provctx = PROV_LIBCTX_OF(ctx->provctx);
+
if (!ossl_prov_cipher_load(&ctx->cipher, p.cipher, p.propq, p.engine, provctx))
return 0;
{
struct pbkdf1_set_ctx_params_st p;
KDF_PBKDF1 *ctx = vctx;
- OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(ctx->provctx);
+ OSSL_LIB_CTX *libctx;
- if (!pbkdf1_set_ctx_params_decoder(params, &p))
+ if (ctx == NULL || !pbkdf1_set_ctx_params_decoder(params, &p))
return 0;
+ libctx = PROV_LIBCTX_OF(ctx->provctx);
+
if (!ossl_prov_digest_load(&ctx->digest, p.digest,
p.propq, p.engine, libctx))
return 0;
{
struct pbkdf2_set_ctx_params_st p;
KDF_PBKDF2 *ctx = vctx;
- OSSL_LIB_CTX *provctx = PROV_LIBCTX_OF(ctx->provctx);
+ OSSL_LIB_CTX *provctx;
int pkcs5;
uint64_t iter;
const EVP_MD *md;
- if (!pbkdf2_set_ctx_params_decoder(params, &p))
+ if (ctx == NULL || !pbkdf2_set_ctx_params_decoder(params, &p))
return 0;
+ provctx = PROV_LIBCTX_OF(ctx->provctx);
+
if (p.digest != NULL) {
if (!ossl_prov_digest_load(&ctx->digest, p.digest,
p.propq, p.engine, provctx))
{
struct pkcs12_set_ctx_params_st p;
KDF_PKCS12 *ctx = vctx;
- OSSL_LIB_CTX *provctx = PROV_LIBCTX_OF(ctx->provctx);
+ OSSL_LIB_CTX *provctx;
- if (!pkcs12_set_ctx_params_decoder(params, &p))
+ if (ctx == NULL || !pkcs12_set_ctx_params_decoder(params, &p))
return 0;
+ provctx = PROV_LIBCTX_OF(ctx->provctx);
+
if (!ossl_prov_digest_load(&ctx->digest, p.digest,
p.propq, p.engine, provctx))
return 0;
{
struct pvk_set_ctx_params_st p;
KDF_PVK *ctx = vctx;
- OSSL_LIB_CTX *provctx = PROV_LIBCTX_OF(ctx->provctx);
+ OSSL_LIB_CTX *provctx;
- if (!pvk_set_ctx_params_decoder(params, &p))
+ if (ctx == NULL || !pvk_set_ctx_params_decoder(params, &p))
return 0;
+ provctx = PROV_LIBCTX_OF(ctx->provctx);
+
if (!ossl_prov_digest_load(&ctx->digest, p.digest, p.propq, p.engine,
provctx))
return 0;
{
struct sshkdf_set_ctx_params_st p;
KDF_SSHKDF *ctx = vctx;
- OSSL_LIB_CTX *provctx = PROV_LIBCTX_OF(ctx->provctx);
+ OSSL_LIB_CTX *provctx;
- if (!sshkdf_set_ctx_params_decoder(params, &p))
+ if (ctx == NULL || !sshkdf_set_ctx_params_decoder(params, &p))
return 0;
+ provctx = PROV_LIBCTX_OF(ctx->provctx);
+
if (!OSSL_FIPS_IND_SET_CTX_FROM_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, p.ind_d))
return 0;
if (!OSSL_FIPS_IND_SET_CTX_FROM_PARAM(ctx, OSSL_FIPS_IND_SETTABLE1, p.ind_k))
{
struct tls1prf_set_ctx_params_st p;
TLS1_PRF *ctx = vctx;
- OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(ctx->provctx);
+ OSSL_LIB_CTX *libctx;
- if (!tls1prf_set_ctx_params_decoder(params, &p))
+ if (ctx == NULL || !tls1prf_set_ctx_params_decoder(params, &p))
return 0;
+ libctx = PROV_LIBCTX_OF(ctx->provctx);
+
if (!OSSL_FIPS_IND_SET_CTX_FROM_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, p.ind_e))
return 0;
if (!OSSL_FIPS_IND_SET_CTX_FROM_PARAM(ctx, OSSL_FIPS_IND_SETTABLE1, p.ind_d))
{
struct sshkdf_set_ctx_params_st p;
KDF_X942 *ctx = vctx;
- OSSL_LIB_CTX *provctx = PROV_LIBCTX_OF(ctx->provctx);
+ OSSL_LIB_CTX *provctx;
const char *cekalg, *propq = NULL;
const EVP_MD *md;
size_t id;
- if (!sshkdf_set_ctx_params_decoder(params, &p))
+ if (ctx == NULL || !sshkdf_set_ctx_params_decoder(params, &p))
return 0;
+ provctx = PROV_LIBCTX_OF(ctx->provctx);
+
if (!OSSL_FIPS_IND_SET_CTX_FROM_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, p.ind_k))
return 0;
static int ml_kem_get_params(void *vkey, OSSL_PARAM params[])
{
ML_KEM_KEY *key = vkey;
- const ML_KEM_VINFO *v = ossl_ml_kem_key_vinfo(key);
+ const ML_KEM_VINFO *v;
struct ml_kem_get_params_st p;
- if (!ml_kem_get_params_decoder(params, &p))
+ if (key == NULL || !ml_kem_get_params_decoder(params, &p))
return 0;
+ v = ossl_ml_kem_key_vinfo(key);
+
if (p.bits != NULL && !OSSL_PARAM_set_size_t(p.bits, v->bits))
return 0;
EXPORT_CB_ARG sub_arg;
int selection;
struct mlx_get_params_st p;
- size_t publen = key->minfo->pubkey_bytes + key->xinfo->pubkey_bytes;
- size_t prvlen = key->minfo->prvkey_bytes + key->xinfo->prvkey_bytes;
- if (!mlx_get_params_decoder(params, &p))
+ if (key == NULL || !mlx_get_params_decoder(params, &p))
return 0;
/* The reported "bit" count is those of the ML-KEM key */
memset(&sub_arg, 0, sizeof(sub_arg));
if ((pub = p.pub) != NULL) {
+ size_t publen = key->minfo->pubkey_bytes + key->xinfo->pubkey_bytes;
+
if (pub->data_type != OSSL_PARAM_OCTET_STRING)
return 0;
pub->return_size = publen;
}
if (mlx_kem_have_prvkey(key)) {
if ((prv = p.priv) != NULL) {
+ size_t prvlen = key->minfo->prvkey_bytes + key->xinfo->prvkey_bytes;
+
if (prv->data_type != OSSL_PARAM_OCTET_STRING)
return 0;
prv->return_size = prvlen;