- if (pkctx->pidx > 0) {
- pkctx->params[pkctx->pidx] = OSSL_PARAM_construct_end();
- r = EVP_KDF_CTX_set_params(kctx, pkctx->params);
- pkey_kdf_free_param_data(pkctx);
+ if (pkctx->collected_seed != NULL) {
+ OSSL_PARAM params[] = { OSSL_PARAM_END, OSSL_PARAM_END };
+
+ params[0] =
+ OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_SEED,
+ pkctx->collected_seed->data,
+ pkctx->collected_seed->length);
+
+ r = EVP_KDF_CTX_set_params(kctx, params);
+ pkey_kdf_free_collected(pkctx);
+ if (!r)
+ return 0;
+ }
+ if (pkctx->collected_info != NULL) {
+ OSSL_PARAM params[] = { OSSL_PARAM_END, OSSL_PARAM_END };
+
+ params[0] =
+ OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_INFO,
+ pkctx->collected_info->data,
+ pkctx->collected_info->length);
+
+ r = EVP_KDF_CTX_set_params(kctx, params);
+ pkey_kdf_free_collected(pkctx);