sm2: Allow setting 0 length SM2 dist ID param
Fixes
@@ -430,7 +430,7 @@ static int sm2sig_set_ctx_params(void *vpsm2ctx, const OSSL_PARAM params[])
p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_DIST_ID);
if (p != NULL) {
void *tmp_id = NULL;
- size_t tmp_idlen;
+ size_t tmp_idlen = 0;
/*
* If the 'z' digest has already been computed, the ID is set too late
@@ -438,7 +438,8 @@ static int sm2sig_set_ctx_params(void *vpsm2ctx, const OSSL_PARAM params[])
if (!psm2ctx->flag_compute_z_digest)
return 0;
- if (!OSSL_PARAM_get_octet_string(p, &tmp_id, 0, &tmp_idlen))
+ if (p->data_size != 0
+ && !OSSL_PARAM_get_octet_string(p, &tmp_id, 0, &tmp_idlen))
return 0;
OPENSSL_free(psm2ctx->id);
psm2ctx->id = tmp_id;
