DigestFactory.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.jcajce.provider.util; 2 3import java.util.HashMap; 4import java.util.HashSet; 5import java.util.Map; 6import java.util.Set; 7 8import org.bouncycastle.asn1.ASN1ObjectIdentifier; 9import org.bouncycastle.asn1.nist.NISTObjectIdentifiers; 10import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; 11import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; 12import org.bouncycastle.crypto.Digest; 13// BEGIN android-removed 14// import org.bouncycastle.crypto.digests.MD5Digest; 15// import org.bouncycastle.crypto.digests.SHA1Digest; 16// import org.bouncycastle.crypto.digests.SHA224Digest; 17// import org.bouncycastle.crypto.digests.SHA256Digest; 18// import org.bouncycastle.crypto.digests.SHA384Digest; 19// import org.bouncycastle.crypto.digests.SHA512Digest; 20// END android-removed 21// BEGIN android-added 22import org.bouncycastle.crypto.digests.AndroidDigestFactory; 23// END android-added 24import org.bouncycastle.util.Strings; 25 26public class DigestFactory 27{ 28 private static Set md5 = new HashSet(); 29 private static Set sha1 = new HashSet(); 30 // BEGIN android-removed 31 // private static Set sha224 = new HashSet(); 32 // END android-removed 33 private static Set sha256 = new HashSet(); 34 private static Set sha384 = new HashSet(); 35 private static Set sha512 = new HashSet(); 36 37 private static Map oids = new HashMap(); 38 39 static 40 { 41 md5.add("MD5"); 42 md5.add(PKCSObjectIdentifiers.md5.getId()); 43 44 sha1.add("SHA1"); 45 sha1.add("SHA-1"); 46 sha1.add(OIWObjectIdentifiers.idSHA1.getId()); 47 48 // BEGIN android-removed 49 // sha224.add("SHA224"); 50 // sha224.add("SHA-224"); 51 // sha224.add(NISTObjectIdentifiers.id_sha224.getId()); 52 // END android-removed 53 54 sha256.add("SHA256"); 55 sha256.add("SHA-256"); 56 sha256.add(NISTObjectIdentifiers.id_sha256.getId()); 57 58 sha384.add("SHA384"); 59 sha384.add("SHA-384"); 60 sha384.add(NISTObjectIdentifiers.id_sha384.getId()); 61 62 sha512.add("SHA512"); 63 sha512.add("SHA-512"); 64 sha512.add(NISTObjectIdentifiers.id_sha512.getId()); 65 66 oids.put("MD5", PKCSObjectIdentifiers.md5); 67 oids.put(PKCSObjectIdentifiers.md5.getId(), PKCSObjectIdentifiers.md5); 68 69 oids.put("SHA1", OIWObjectIdentifiers.idSHA1); 70 oids.put("SHA-1", OIWObjectIdentifiers.idSHA1); 71 oids.put(OIWObjectIdentifiers.idSHA1.getId(), OIWObjectIdentifiers.idSHA1); 72 73 // BEGIN android-removed 74 // oids.put("SHA224", NISTObjectIdentifiers.id_sha224); 75 // oids.put("SHA-224", NISTObjectIdentifiers.id_sha224); 76 // oids.put(NISTObjectIdentifiers.id_sha224.getId(), NISTObjectIdentifiers.id_sha224); 77 // END android-removed 78 79 oids.put("SHA256", NISTObjectIdentifiers.id_sha256); 80 oids.put("SHA-256", NISTObjectIdentifiers.id_sha256); 81 oids.put(NISTObjectIdentifiers.id_sha256.getId(), NISTObjectIdentifiers.id_sha256); 82 83 oids.put("SHA384", NISTObjectIdentifiers.id_sha384); 84 oids.put("SHA-384", NISTObjectIdentifiers.id_sha384); 85 oids.put(NISTObjectIdentifiers.id_sha384.getId(), NISTObjectIdentifiers.id_sha384); 86 87 oids.put("SHA512", NISTObjectIdentifiers.id_sha512); 88 oids.put("SHA-512", NISTObjectIdentifiers.id_sha512); 89 oids.put(NISTObjectIdentifiers.id_sha512.getId(), NISTObjectIdentifiers.id_sha512); 90 } 91 92 public static Digest getDigest( 93 String digestName) 94 { 95 digestName = Strings.toUpperCase(digestName); 96 97 if (sha1.contains(digestName)) 98 { 99 // BEGIN android-changed 100 return AndroidDigestFactory.getSHA1(); 101 // END android-changed 102 } 103 if (md5.contains(digestName)) 104 { 105 // BEGIN android-changed 106 return AndroidDigestFactory.getMD5(); 107 // END android-changed 108 } 109 // BEGIN android-removed 110 // if (sha224.contains(digestName)) 111 // { 112 // return new SHA224Digest(); 113 // } 114 // END android-removed 115 if (sha256.contains(digestName)) 116 { 117 // BEGIN android-changed 118 return AndroidDigestFactory.getSHA256(); 119 // END android-changed 120 } 121 if (sha384.contains(digestName)) 122 { 123 // BEGIN android-changed 124 return AndroidDigestFactory.getSHA384(); 125 // END android-changed 126 } 127 if (sha512.contains(digestName)) 128 { 129 // BEGIN android-changed 130 return AndroidDigestFactory.getSHA512(); 131 // END android-changed 132 } 133 134 return null; 135 } 136 137 public static boolean isSameDigest( 138 String digest1, 139 String digest2) 140 { 141 return (sha1.contains(digest1) && sha1.contains(digest2)) 142 // BEGIN android-removed 143 // || (sha224.contains(digest1) && sha224.contains(digest2)) 144 // END android-removed 145 || (sha256.contains(digest1) && sha256.contains(digest2)) 146 || (sha384.contains(digest1) && sha384.contains(digest2)) 147 || (sha512.contains(digest1) && sha512.contains(digest2)) 148 || (md5.contains(digest1) && md5.contains(digest2)); 149 } 150 151 public static ASN1ObjectIdentifier getOID( 152 String digestName) 153 { 154 return (ASN1ObjectIdentifier)oids.get(digestName); 155 } 156} 157