rtcp_new: return failure if allocation of bi->ptr failed
[openssl.git] / crypto / rsa / rsa_ameth.c
index db926b0e4260a8f67959c4502c37dd7002bf11ae..c6e083f8705768ffa48dd36d834bb11a21d4304f 100644 (file)
@@ -170,6 +170,11 @@ static int rsa_bits(const EVP_PKEY *pkey)
        return BN_num_bits(pkey->pkey.rsa->n);
        }
 
+static int rsa_security_bits(const EVP_PKEY *pkey)
+       {
+       return RSA_security_bits(pkey->pkey.rsa);
+       }
+
 static void int_rsa_free(EVP_PKEY *pkey)
        {
        RSA_free(pkey->pkey.rsa);
@@ -370,7 +375,7 @@ static int rsa_pss_param_print(BIO *bp, RSA_PSS_PARAMS *pss,
                if (i2a_ASN1_INTEGER(bp, pss->saltLength) <= 0)
                        goto err;
                }
-       else if (BIO_puts(bp, "0x14 (default)") <= 0)
+       else if (BIO_puts(bp, "14 (default)") <= 0)
                goto err;
        BIO_puts(bp, "\n");
 
@@ -700,7 +705,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 +714,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;
        }
 
@@ -987,6 +998,7 @@ const EVP_PKEY_ASN1_METHOD rsa_asn1_meths[] =
 
                int_rsa_size,
                rsa_bits,
+               rsa_security_bits,
 
                0,0,0,0,0,0,