Reviewed-by: Ben Laurie <ben@openssl.org>
DSA_PKEY_CTX *dctx = ctx->data;
DSA *dsa = ctx->pkey->pkey.dsa;
DSA_PKEY_CTX *dctx = ctx->data;
DSA *dsa = ctx->pkey->pkey.dsa;
+ if (dctx->md) {
+ if (tbslen != (size_t)EVP_MD_size(dctx->md))
+ return 0;
type = EVP_MD_type(dctx->md);
type = EVP_MD_type(dctx->md);
+ } else {
+ if (tbslen != SHA_DIGEST_LENGTH)
+ return 0;
ret = DSA_sign(type, tbs, tbslen, sig, &sltmp, dsa);
ret = DSA_sign(type, tbs, tbslen, sig, &sltmp, dsa);
DSA_PKEY_CTX *dctx = ctx->data;
DSA *dsa = ctx->pkey->pkey.dsa;
DSA_PKEY_CTX *dctx = ctx->data;
DSA *dsa = ctx->pkey->pkey.dsa;
+ if (dctx->md) {
+ if (tbslen != (size_t)EVP_MD_size(dctx->md))
+ return 0;
type = EVP_MD_type(dctx->md);
type = EVP_MD_type(dctx->md);
+ } else {
+ if (tbslen != SHA_DIGEST_LENGTH)
+ return 0;
ret = DSA_verify(type, tbs, tbslen, sig, siglen, dsa);
ret = DSA_verify(type, tbs, tbslen, sig, siglen, dsa);