if (sigret == NULL || (ctx->flags & EVP_MD_CTX_FLAG_FINALISE) != 0)
return pctx->op.sig.signature->digest_sign_final(pctx->op.sig.algctx,
sigret, siglen,
- SIZE_MAX);
+ (sigret == NULL) ? 0 : *siglen);
dctx = EVP_PKEY_CTX_dup(pctx);
if (dctx == NULL)
return 0;
r = dctx->op.sig.signature->digest_sign_final(dctx->op.sig.algctx,
sigret, siglen,
- SIZE_MAX);
+ (sigret == NULL) ? 0 : *siglen);
EVP_PKEY_CTX_free(dctx);
return r;
&& pctx->op.sig.signature != NULL) {
if (pctx->op.sig.signature->digest_sign != NULL)
return pctx->op.sig.signature->digest_sign(pctx->op.sig.algctx,
- sigret, siglen, SIZE_MAX,
+ sigret, siglen,
+ sigret == NULL ? 0 : *siglen,
tbs, tbslen);
} else {
/* legacy */
if ((p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_PRIV_KEY))
!= NULL)
return OSSL_PARAM_get_octet_string(p, (void **)raw_key->key,
- SIZE_MAX, raw_key->len);
+ raw_key->key == NULL ? 0 : *raw_key->len,
+ raw_key->len);
} else if (raw_key->selection == OSSL_KEYMGMT_SELECT_PUBLIC_KEY) {
if ((p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_PUB_KEY))
!= NULL)
return OSSL_PARAM_get_octet_string(p, (void **)raw_key->key,
- SIZE_MAX, raw_key->len);
+ raw_key->key == NULL ? 0 : *raw_key->len,
+ raw_key->len);
}
return 0;
goto legacy;
ret = ctx->op.sig.signature->sign(ctx->op.sig.algctx, sig, siglen,
- SIZE_MAX, tbs, tbslen);
+ (sig == NULL) ? 0 : *siglen, tbs, tbslen);
return ret;
legacy: