1package org.bouncycastle.jcajce.util;
2
3import java.util.HashMap;
4import java.util.Map;
5
6import org.bouncycastle.asn1.ASN1ObjectIdentifier;
7// BEGIN android-removed
8// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
9// import org.bouncycastle.asn1.gnu.GNUObjectIdentifiers;
10// import org.bouncycastle.asn1.iso.ISOIECObjectIdentifiers;
11// END android-removed
12import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
13import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
14import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
15// BEGIN android-removed
16// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
17// END android-removed
18
19public class MessageDigestUtils
20{
21    private static Map<ASN1ObjectIdentifier, String> digestOidMap = new HashMap<ASN1ObjectIdentifier, String>();
22
23    static
24    {
25        // BEGIN android-removed
26        // digestOidMap.put(PKCSObjectIdentifiers.md2, "MD2");
27        // digestOidMap.put(PKCSObjectIdentifiers.md4, "MD4");
28        // END android-removed
29        digestOidMap.put(PKCSObjectIdentifiers.md5, "MD5");
30        digestOidMap.put(OIWObjectIdentifiers.idSHA1, "SHA-1");
31        digestOidMap.put(NISTObjectIdentifiers.id_sha224, "SHA-224");
32        digestOidMap.put(NISTObjectIdentifiers.id_sha256, "SHA-256");
33        digestOidMap.put(NISTObjectIdentifiers.id_sha384, "SHA-384");
34        digestOidMap.put(NISTObjectIdentifiers.id_sha512, "SHA-512");
35        // BEGIN android-removed
36        // digestOidMap.put(TeleTrusTObjectIdentifiers.ripemd128, "RIPEMD-128");
37        // digestOidMap.put(TeleTrusTObjectIdentifiers.ripemd160, "RIPEMD-160");
38        // digestOidMap.put(TeleTrusTObjectIdentifiers.ripemd256, "RIPEMD-128");
39        // digestOidMap.put(ISOIECObjectIdentifiers.ripemd128, "RIPEMD-128");
40        // digestOidMap.put(ISOIECObjectIdentifiers.ripemd160, "RIPEMD-160");
41        // digestOidMap.put(CryptoProObjectIdentifiers.gostR3411, "GOST3411");
42        // digestOidMap.put(GNUObjectIdentifiers.Tiger_192, "Tiger");
43        // digestOidMap.put(ISOIECObjectIdentifiers.whirlpool, "Whirlpool");
44        // digestOidMap.put(NISTObjectIdentifiers.id_sha3_224, "SHA3-224");
45        // digestOidMap.put(NISTObjectIdentifiers.id_sha3_256, "SHA3-256");
46        // digestOidMap.put(NISTObjectIdentifiers.id_sha3_384, "SHA3-384");
47        // digestOidMap.put(NISTObjectIdentifiers.id_sha3_512, "SHA3-512");
48        // END android-removed
49    }
50
51    /**
52     * Attempt to find a standard JCA name for the digest represented by the passed in OID.
53     *
54     * @param digestAlgOID the OID of the digest algorithm of interest.
55     * @return a string representing the standard name - the OID as a string if none available.
56     */
57    public static String getDigestName(ASN1ObjectIdentifier digestAlgOID)
58    {
59        String name = (String)digestOidMap.get(digestAlgOID);  // for pre 1.5 JDK
60        if (name != null)
61        {
62            return name;
63        }
64
65        return digestAlgOID.getId();
66    }
67}
68