summaryrefslogtreecommitdiffstats
path: root/providers/implementations/signature/sm2sig.c
diff options
context:
space:
mode:
Diffstat (limited to 'providers/implementations/signature/sm2sig.c')
-rw-r--r--providers/implementations/signature/sm2sig.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/providers/implementations/signature/sm2sig.c b/providers/implementations/signature/sm2sig.c
index 5463b000e0..4201e825b1 100644
--- a/providers/implementations/signature/sm2sig.c
+++ b/providers/implementations/signature/sm2sig.c
@@ -113,7 +113,8 @@ static void *sm2sig_newctx(void *provctx, const char *propq)
return ctx;
}
-static int sm2sig_signature_init(void *vpsm2ctx, void *ec)
+static int sm2sig_signature_init(void *vpsm2ctx, void *ec,
+ const OSSL_PARAM params[])
{
PROV_SM2_CTX *psm2ctx = (PROV_SM2_CTX *)vpsm2ctx;
@@ -121,7 +122,7 @@ static int sm2sig_signature_init(void *vpsm2ctx, void *ec)
return 0;
EC_KEY_free(psm2ctx->ec);
psm2ctx->ec = ec;
- return 1;
+ return sm2sig_set_ctx_params(psm2ctx, params);
}
static int sm2sig_sign(void *vpsm2ctx, unsigned char *sig, size_t *siglen,
@@ -173,7 +174,7 @@ static void free_md(PROV_SM2_CTX *ctx)
}
static int sm2sig_digest_signverify_init(void *vpsm2ctx, const char *mdname,
- void *ec)
+ void *ec, const OSSL_PARAM params[])
{
PROV_SM2_CTX *ctx = (PROV_SM2_CTX *)vpsm2ctx;
int md_nid = NID_sm3;
@@ -182,7 +183,7 @@ static int sm2sig_digest_signverify_init(void *vpsm2ctx, const char *mdname,
free_md(ctx);
- if (!sm2sig_signature_init(vpsm2ctx, ec))
+ if (!sm2sig_signature_init(vpsm2ctx, ec, params))
return ret;
ctx->md = EVP_MD_fetch(ctx->libctx, mdname, ctx->propq);
@@ -207,7 +208,7 @@ static int sm2sig_digest_signverify_init(void *vpsm2ctx, const char *mdname,
}
WPACKET_cleanup(&pkt);
- if (!EVP_DigestInit_ex(ctx->mdctx, ctx->md, NULL))
+ if (!EVP_DigestInit_ex2(ctx->mdctx, ctx->md, params))
goto error;
ctx->flag_compute_z_digest = 1;
@@ -353,7 +354,7 @@ static int sm2sig_get_ctx_params(void *vpsm2ctx, OSSL_PARAM *params)
PROV_SM2_CTX *psm2ctx = (PROV_SM2_CTX *)vpsm2ctx;
OSSL_PARAM *p;
- if (psm2ctx == NULL || params == NULL)
+ if (psm2ctx == NULL)
return 0;
p = OSSL_PARAM_locate(params, OSSL_SIGNATURE_PARAM_ALGORITHM_ID);
@@ -393,8 +394,10 @@ static int sm2sig_set_ctx_params(void *vpsm2ctx, const OSSL_PARAM params[])
const OSSL_PARAM *p;
char *mdname;
- if (psm2ctx == NULL || params == NULL)
+ if (psm2ctx == NULL)
return 0;
+ if (params == NULL)
+ return 1;
p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_DIST_ID);
if (p != NULL) {