PROV_CHACHA20_POLY1305_CTX *ctx = (PROV_CHACHA20_POLY1305_CTX *)vctx;
struct chacha20_poly1305_get_ctx_params_st p;
- p = chacha20_poly1305_get_ctx_params_decoder(params);
+ if (ctx == NULL || !chacha20_poly1305_get_ctx_params_decoder(params, &p))
+ return 0;
if (p.ivlen != NULL
&& !OSSL_PARAM_set_size_t(p.ivlen, CHACHA20_POLY1305_IVLEN)) {
(PROV_CIPHER_HW_CHACHA20_POLY1305 *)ctx->base.hw;
struct chacha20_poly1305_set_ctx_params_st p;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = chacha20_poly1305_set_ctx_params_decoder(params);
+ if (ctx == NULL || !chacha20_poly1305_set_ctx_params_decoder(params, &p))
+ return 0;
if (p.keylen != NULL) {
{
struct ossl_cipher_generic_get_params_st p;
- p = ossl_cipher_generic_get_params_decoder(params);
+ if (!ossl_cipher_generic_get_params_decoder(params, &p))
+ return 0;
if (p.mode != NULL && !OSSL_PARAM_set_uint(p.mode, md)) {
ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
PROV_CIPHER_CTX *ctx = (PROV_CIPHER_CTX *)vctx;
struct ossl_cipher_set_ctx_param_list_st p;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = cipher_var_keylen_set_ctx_params_decoder(params);
- if (!ossl_cipher_common_set_ctx_params(ctx, &p))
+ if (ctx == NULL
+ || !cipher_var_keylen_set_ctx_params_decoder(params, &p)
+ || !ossl_cipher_common_set_ctx_params(ctx, &p))
return 0;
if (p.keylen != NULL) {
PROV_CIPHER_CTX *ctx = (PROV_CIPHER_CTX *)vctx;
struct ossl_cipher_get_ctx_param_list_st p;
- p = cipher_generic_get_ctx_params_decoder(params);
+ if (ctx == NULL || !cipher_generic_get_ctx_params_decoder(params, &p))
+ return 0;
return ossl_cipher_common_get_ctx_params(ctx, &p);
}
if (ossl_param_is_empty(params))
return 1;
- p = cipher_generic_set_ctx_params_decoder(params);
+ if (ctx == NULL || !cipher_generic_set_ctx_params_decoder(params, &p))
+ return 0;
return ossl_cipher_common_set_ctx_params(ctx, &p);
}
size_t sz, ivlen;
struct ossl_cipher_ccm_set_ctx_params_st p;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = ossl_cipher_ccm_set_ctx_params_decoder(params);
+ if (ctx == NULL || !ossl_cipher_ccm_set_ctx_params_decoder(params, &p))
+ return 0;
if (p.tag != NULL) {
if (p.tag->data_type != OSSL_PARAM_OCTET_STRING) {
PROV_CCM_CTX *ctx = (PROV_CCM_CTX *)vctx;
struct ossl_cipher_ccm_get_ctx_params_st p;
- p = ossl_cipher_ccm_get_ctx_params_decoder(params);
+ if (ctx == NULL || !ossl_cipher_ccm_get_ctx_params_decoder(params, &p))
+ return 0;
if (p.ivlen != NULL && !OSSL_PARAM_set_size_t(p.ivlen, ccm_get_ivlen(ctx))) {
ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
size_t sz;
struct ossl_cipher_gcm_get_ctx_params_st p;
- p = ossl_cipher_gcm_get_ctx_params_decoder(params);
+ if (ctx == NULL || !ossl_cipher_gcm_get_ctx_params_decoder(params, &p))
+ return 0;
if (p.ivlen != NULL && !OSSL_PARAM_set_size_t(p.ivlen, ctx->ivlen)) {
ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
void *vp;
struct ossl_cipher_gcm_set_ctx_params_st p;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = ossl_cipher_gcm_set_ctx_params_decoder(params);
+ if (ctx == NULL || !ossl_cipher_gcm_set_ctx_params_decoder(params, &p))
+ return 0;
if (p.tag != NULL) {
vp = ctx->buf;
{
struct digest_default_get_params_st p;
- p = digest_default_get_params_decoder(params);
+ if (!digest_default_get_params_decoder(params, &p))
+ return 0;
if (p.bsize != NULL && !OSSL_PARAM_set_size_t(p.bsize, blksz)) {
ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
const ML_DSA_PARAMS *key_params = ossl_ml_dsa_key_params(key);
const uint8_t *pk = NULL, *sk = NULL, *seed = NULL;
size_t pk_len = 0, sk_len = 0, seed_len = 0;
- struct ml_dsa_key_type_params_st p = ml_dsa_key_type_params_decoder(params);
+ struct ml_dsa_key_type_params_st p;
+
+ if (key == NULL || !ml_dsa_key_type_params_decoder(params, &p))
+ return 0;
if (p.pubkey != NULL) {
if (!OSSL_PARAM_get_octet_string_ptr(p.pubkey, (const void **)&pk, &pk_len))
ML_DSA_KEY *key = keydata;
const uint8_t *d;
size_t len;
- struct ml_dsa_get_params_st p = ml_dsa_get_params_decoder(params);
+ struct ml_dsa_get_params_st p;
+
+ if (key == NULL || !ml_dsa_get_params_decoder(params, &p))
+ return 0;
if (p.bits != NULL
&& !OSSL_PARAM_set_size_t(p.bits, 8 * ossl_ml_dsa_key_get_pub_len(key)))
struct ml_dsa_gen_ctx *gctx = genctx;
struct ml_dsa_gen_set_params_st p;
- if (gctx == NULL)
+ if (gctx == NULL || !ml_dsa_gen_set_params_decoder(params, &p))
return 0;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = ml_dsa_gen_set_params_decoder(params);
if (p.seed != NULL) {
void *vp = gctx->entropy;
struct ml_kem_key_type_params_st p;
/* Invalid attempt to mutate a key, what is the right error to report? */
- if (key == NULL || ossl_ml_kem_have_pubkey(key))
+ if (key == NULL
+ || ossl_ml_kem_have_pubkey(key)
+ || !ml_kem_key_type_params_decoder(params, &p))
return 0;
v = ossl_ml_kem_key_vinfo(key);
- p = ml_kem_key_type_params_decoder(params);
/*
* When a private key is provided, without a seed, any public key also
{
ML_KEM_KEY *key = vkey;
const ML_KEM_VINFO *v = ossl_ml_kem_key_vinfo(key);
- struct ml_kem_get_params_st p = ml_kem_get_params_decoder(params);
+ struct ml_kem_get_params_st p;
+
+ if (key == NULL || !ml_kem_get_params_decoder(params, &p))
+ return 0;
if (p.bits != NULL && !OSSL_PARAM_set_size_t(p.bits, v->bits))
return 0;
size_t publen = 0;
struct ml_kem_set_params_st p;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = ml_kem_set_params_decoder(params);
+ if (key == NULL || !ml_kem_set_params_decoder(params, &p))
+ return 0;
/* Used in TLS via EVP_PKEY_set1_encoded_public_key(). */
if (p.pub != NULL
PROV_ML_KEM_GEN_CTX *gctx = vgctx;
struct ml_kem_gen_set_params_st p;
- if (gctx == NULL)
+ if (gctx == NULL || !ml_kem_gen_set_params_decoder(params, &p))
return 0;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = ml_kem_gen_set_params_decoder(params);
if (p.propq != NULL) {
if (p.propq->data_type != OSSL_PARAM_UTF8_STRING)
struct ml_kem_import_export_st p;
size_t len;
+ if (!ml_kem_import_export_decoder(params, &p))
+ return 0;
+
/*
* The caller will decide whether anything essential is missing, but, if
* some key material was returned, it should have the right (parameter)
* data type and length.
*/
- if (ossl_param_is_empty(params))
- return 1;
- p = ml_kem_import_export_decoder(params);
if (sub_arg->pubenc != NULL && p.pubkey != NULL) {
void *pub = sub_arg->pubenc + sub_arg->puboff;
pubkey_bytes = key->minfo->pubkey_bytes + key->xinfo->pubkey_bytes;
prvkey_bytes = key->minfo->prvkey_bytes + key->xinfo->prvkey_bytes;
- p = ml_kem_import_export_decoder(params);
+ if (!ml_kem_import_export_decoder(params, &p))
+ return 0;
/* What does the caller want to set? */
if (p.pubkey != NULL &&
size_t publen = key->minfo->pubkey_bytes + key->xinfo->pubkey_bytes;
size_t prvlen = key->minfo->prvkey_bytes + key->xinfo->prvkey_bytes;
- p = mlx_get_params_decoder(params);
+ if (key == NULL || !mlx_get_params_decoder(params, &p))
+ return 0;
/* The reported "bit" count is those of the ML-KEM key */
if (p.bits != NULL)
const void *pubenc = NULL;
size_t publen = 0;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = mlx_set_params_decoder(params);
+ if (key == NULL || !mlx_set_params_decoder(params, &p))
+ return 0;
if (p.propq != NULL) {
OPENSSL_free(key->propq);
PROV_ML_KEM_GEN_CTX *gctx = vgctx;
struct mlx_gen_set_params_st p;
- if (gctx == NULL)
+ if (gctx == NULL || !mlx_gen_set_params_decoder(params, &p))
return 0;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = mlx_gen_set_params_decoder(params);
if (p.propq != NULL) {
if (p.propq->data_type != OSSL_PARAM_UTF8_STRING)
PROV_EDDSA_CTX *peddsactx = (PROV_EDDSA_CTX *)vpeddsactx;
struct eddsa_get_ctx_params_st p;
- if (peddsactx == NULL)
+ if (peddsactx == NULL || !eddsa_get_ctx_params_decoder(params, &p))
return 0;
- p = eddsa_get_ctx_params_decoder(params);
-
if (p.id != NULL
&& !OSSL_PARAM_set_octet_string(p.id,
peddsactx->aid_len == 0 ? NULL : peddsactx->aid_buf,
PROV_EDDSA_CTX *peddsactx = (PROV_EDDSA_CTX *)vpeddsactx;
struct eddsa_set_ctx_params_st p;
- if (peddsactx == NULL)
+ if (peddsactx == NULL || !eddsa_set_ctx_params_decoder(params, &p))
return 0;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = eddsa_set_ctx_params_decoder(params);
return eddsa_set_ctx_params_internal(peddsactx, &p);
}
PROV_EDDSA_CTX *peddsactx = (PROV_EDDSA_CTX *)vpeddsactx;
struct eddsa_set_ctx_params_st p;
- if (peddsactx == NULL)
+ if (peddsactx == NULL || !eddsa_set_variant_ctx_params_decoder(params, &p))
return 0;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = eddsa_set_variant_ctx_params_decoder(params);
return eddsa_set_ctx_params_internal(peddsactx, &p);
}
PROV_ML_DSA_CTX *pctx = (PROV_ML_DSA_CTX *)vctx;
struct ml_dsa_verifymsg_set_ctx_params_st p;
- if (pctx == NULL)
+ if (pctx == NULL || !ml_dsa_verifymsg_set_ctx_params_decoder(params, &p))
return 0;
- if (ossl_param_is_empty(params))
- return 1;
-
- p = ml_dsa_verifymsg_set_ctx_params_decoder(params);
if (p.ctx != NULL) {
void *vp = pctx->context_string;
PROV_ML_DSA_CTX *ctx = (PROV_ML_DSA_CTX *)vctx;
struct ml_dsa_get_ctx_params_st p;
- if (ctx == NULL)
+ if (ctx == NULL || !ml_dsa_get_ctx_params_decoder(params, &p))
return 0;
- p = ml_dsa_get_ctx_params_decoder(params);
-
if (p.id != NULL
&& !OSSL_PARAM_set_octet_string(p.id,
ctx->aid_len == 0 ? NULL : ctx->aid_buf,