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);
25e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // BEGIN android-removed
26e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(PKCSObjectIdentifiers.sha224WithRSAEncryption);
27e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // END android-removed
28e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(PKCSObjectIdentifiers.sha256WithRSAEncryption);
29e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(PKCSObjectIdentifiers.sha384WithRSAEncryption);
30e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(PKCSObjectIdentifiers.sha512WithRSAEncryption);
31e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // BEGIN android-removed
32e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(OIWObjectIdentifiers.md4WithRSAEncryption);
33e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(OIWObjectIdentifiers.md4WithRSA);
34e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // END android-removed
35e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(OIWObjectIdentifiers.md5WithRSA);
36e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        RSA_PKCS1d5.add(OIWObjectIdentifiers.sha1WithRSA);
37e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // BEGIN android-removed
38e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
39e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
40e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // RSA_PKCS1d5.add(TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
41e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        // END android-removed
42e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
43e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
44e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public AlgorithmIdentifier findEncryptionAlgorithm(AlgorithmIdentifier signatureAlgorithm)
45e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
46e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom               // RFC3370 section 3.2
47e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        if (RSA_PKCS1d5.contains(signatureAlgorithm.getAlgorithm()))
48e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        {
49e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom            return new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE);
50e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        }
51e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
52e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        return signatureAlgorithm;
53e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
54e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom}
55