Commit 66243398 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Workaround for some CMS signature formats.

Some CMS SignedData structure use a signature algorithm OID such
as SHA1WithRSA instead of the RSA algorithm OID. Workaround this
case by tolerating the signature if we recognise the OID.
(cherry picked from commit 3a98f9cf)
parent aa10982c
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -700,7 +700,7 @@ static int rsa_pss_to_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pkctx,

static int rsa_cms_verify(CMS_SignerInfo *si)
	{
	int nid;
	int nid, nid2;
	X509_ALGOR *alg;
	EVP_PKEY_CTX *pkctx = CMS_SignerInfo_get0_pkey_ctx(si);
	CMS_SignerInfo_get0_algs(si, NULL, NULL, NULL, &alg);
@@ -709,6 +709,12 @@ static int rsa_cms_verify(CMS_SignerInfo *si)
		return 1;
	if (nid == NID_rsassaPss)
		return rsa_pss_to_ctx(NULL, pkctx, alg, NULL);
	/* Workaround for some implementation that use a signature OID */
	if (OBJ_find_sigid_algs(nid, NULL, &nid2))
		{
		if (nid2 == NID_rsaEncryption)
			return 1;
		}
	return 0;
	}