Commit 3a98f9cf 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.
parent f04665a6
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;
	}