diff --git a/providers/implementations/macs/kmac_prov.c.in b/providers/implementations/macs/kmac_prov.c.in index 14d9d53b6d..a1cf8ea2bb 100644 --- a/providers/implementations/macs/kmac_prov.c.in +++ b/providers/implementations/macs/kmac_prov.c.in @@ -189,15 +189,24 @@ static struct kmac_data_st *kmac_new(void *provctx) return kctx; } +#define kmac_new_list + +{- produce_param_decoder('kmac_new', + (['MAC_PARAM_DIGEST', 'digest', 'utf8_string'], + ['MAC_PARAM_PROPERTIES', 'propq', 'utf8_string'], + ['ALG_PARAM_ENGINE', 'engine', 'utf8_string', 'hidden'], + )); -} + static void *kmac_fetch_new(void *provctx, const OSSL_PARAM *params) { struct kmac_data_st *kctx = kmac_new(provctx); + struct kmac_new_st p; int md_size; - if (kctx == NULL) + if (kctx == NULL || !kmac_new_decoder(params, &p)) return 0; - if (!ossl_prov_digest_load_from_params(&kctx->digest, params, - PROV_LIBCTX_OF(provctx))) { + if (!ossl_prov_digest_load(&kctx->digest, p.digest, p.propq, p.engine, + PROV_LIBCTX_OF(provctx))) { kmac_free(kctx); return 0; }