diff options
Diffstat (limited to 'providers/implementations/signature/sm2sig.c')
-rw-r--r-- | providers/implementations/signature/sm2sig.c | 17 |
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) { |