1e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompackage org.bouncycastle.cms;
2e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
3e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.util.HashSet;
4e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.util.Set;
5e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
6e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.DERNull;
7e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
8e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
9e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
10e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.x509.AlgorithmIdentifier;
11e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
12e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompublic class DefaultCMSSignatureEncryptionAlgorithmFinder
13e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    implements CMSSignatureEncryptionAlgorithmFinder
14e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom{
15e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    private static final Set RSA_PKCS1d5 = new HashSet();
16e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
17e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    static
18e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
19e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // BEGIN android-removed
20e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(PKCSObjectIdentifiers.md2WithRSAEncryption);
21e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(PKCSObjectIdentifiers.md4WithRSAEncryption);
22e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // END android-removed
23e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(PKCSObjectIdentifiers.md5WithRSAEncryption);
24e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(PKCSObjectIdentifiers.sha1WithRSAEncryption);
2587490acd76f544251011cf49753d4d0a61f86a66Kenny Root        RSA_PKCS1d5.add(PKCSObjectIdentifiers.sha224WithRSAEncryption);
26e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(PKCSObjectIdentifiers.sha256WithRSAEncryption);
27e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(PKCSObjectIdentifiers.sha384WithRSAEncryption);
28e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(PKCSObjectIdentifiers.sha512WithRSAEncryption);
29e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // BEGIN android-removed
30e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(OIWObjectIdentifiers.md4WithRSAEncryption);
31e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(OIWObjectIdentifiers.md4WithRSA);
32e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // END android-removed
33e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(OIWObjectIdentifiers.md5WithRSA);
34e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(OIWObjectIdentifiers.sha1WithRSA);
35e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // BEGIN android-removed
36e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
37e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
38e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
39e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // END android-removed
40e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
41e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
42e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public AlgorithmIdentifier findEncryptionAlgorithm(AlgorithmIdentifier signatureAlgorithm)
43e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
44e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom               // RFC3370 section 3.2
45e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        if (RSA_PKCS1d5.contains(signatureAlgorithm.getAlgorithm()))
46e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        {
47e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom            return new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE);
48e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        }
49e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
50e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        return signatureAlgorithm;
51e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
52e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom}
53