提交 665d9d1c 编写于 作者: B Bryan Donlan 提交者: Andy Polyakov

Remove DSA digest length checks when no digest is passed

FIPS 186-4 does not specify a hard requirement on DSA digest lengths,
and in any case the current check rejects the FIPS recommended digest
lengths for key sizes != 1024 bits.

Fixes: #6748
Reviewed-by: NRich Salz <rsalz@openssl.org>
Reviewed-by: NAndy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6749)
上级 bd93f1ac
...@@ -77,13 +77,8 @@ static int pkey_dsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, ...@@ -77,13 +77,8 @@ static int pkey_dsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig,
DSA_PKEY_CTX *dctx = ctx->data; DSA_PKEY_CTX *dctx = ctx->data;
DSA *dsa = ctx->pkey->pkey.dsa; DSA *dsa = ctx->pkey->pkey.dsa;
if (dctx->md) { if (dctx->md != NULL && tbslen != (size_t)EVP_MD_size(dctx->md))
if (tbslen != (size_t)EVP_MD_size(dctx->md)) return 0;
return 0;
} else {
if (tbslen != SHA_DIGEST_LENGTH)
return 0;
}
ret = DSA_sign(0, tbs, tbslen, sig, &sltmp, dsa); ret = DSA_sign(0, tbs, tbslen, sig, &sltmp, dsa);
...@@ -101,13 +96,8 @@ static int pkey_dsa_verify(EVP_PKEY_CTX *ctx, ...@@ -101,13 +96,8 @@ static int pkey_dsa_verify(EVP_PKEY_CTX *ctx,
DSA_PKEY_CTX *dctx = ctx->data; DSA_PKEY_CTX *dctx = ctx->data;
DSA *dsa = ctx->pkey->pkey.dsa; DSA *dsa = ctx->pkey->pkey.dsa;
if (dctx->md) { if (dctx->md != NULL && tbslen != (size_t)EVP_MD_size(dctx->md))
if (tbslen != (size_t)EVP_MD_size(dctx->md)) return 0;
return 0;
} else {
if (tbslen != SHA_DIGEST_LENGTH)
return 0;
}
ret = DSA_verify(0, tbs, tbslen, sig, siglen, dsa); ret = DSA_verify(0, tbs, tbslen, sig, siglen, dsa);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册