return ret;
}
+int EVP_MD_get_params(const EVP_MD *digest, OSSL_PARAM params[])
+{
+ if (digest != NULL && digest->get_params != NULL)
+ return digest->get_params(params);
+ return 0;
+}
+
+const OSSL_PARAM *EVP_MD_gettable_params(const EVP_MD *digest)
+{
+ if (digest != NULL && digest->gettable_params != NULL)
+ return digest->gettable_params();
+ return NULL;
+}
+
int EVP_MD_CTX_set_params(EVP_MD_CTX *ctx, const OSSL_PARAM params[])
{
if (ctx->digest != NULL && ctx->digest->ctx_set_params != NULL)
return 0;
}
+const OSSL_PARAM *EVP_MD_CTX_settable_params(const EVP_MD *digest)
+{
+ if (digest != NULL && digest->settable_ctx_params != NULL)
+ return digest->settable_ctx_params();
+ return NULL;
+}
+
int EVP_MD_CTX_get_params(EVP_MD_CTX *ctx, OSSL_PARAM params[])
{
if (ctx->digest != NULL && ctx->digest->get_params != NULL)
return 0;
}
+const OSSL_PARAM *EVP_MD_CTX_gettable_params(const EVP_MD *digest)
+{
+ if (digest != NULL && digest->gettable_ctx_params != NULL)
+ return digest->gettable_ctx_params();
+ return NULL;
+}
+
/* TODO(3.0): Remove legacy code below - only used by engines & DigestSign */
int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2)
{
if (md->ctx_get_params == NULL)
md->ctx_get_params = OSSL_get_OP_digest_ctx_get_params(fns);
break;
+ case OSSL_FUNC_DIGEST_GETTABLE_PARAMS:
+ if (md->gettable_params == NULL)
+ md->gettable_params = OSSL_get_OP_digest_gettable_params(fns);
+ break;
+ case OSSL_FUNC_DIGEST_SETTABLE_CTX_PARAMS:
+ if (md->settable_ctx_params == NULL)
+ md->settable_ctx_params =
+ OSSL_get_OP_digest_settable_ctx_params(fns);
+ break;
+ case OSSL_FUNC_DIGEST_GETTABLE_CTX_PARAMS:
+ if (md->gettable_ctx_params == NULL)
+ md->gettable_ctx_params =
+ OSSL_get_OP_digest_gettable_ctx_params(fns);
+ break;
}
}
if ((fncnt != 0 && fncnt != 5)