1package org.bouncycastle.jcajce.provider.digest; 2 3import org.bouncycastle.asn1.nist.NISTObjectIdentifiers; 4import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; 5import org.bouncycastle.crypto.CipherKeyGenerator; 6import org.bouncycastle.crypto.digests.SHA384Digest; 7import org.bouncycastle.crypto.macs.HMac; 8// Android-removed: Unsupported algorithms 9// import org.bouncycastle.crypto.macs.OldHMac; 10import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; 11import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; 12import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; 13 14public class SHA384 15{ 16 private SHA384() 17 { 18 19 } 20 21 static public class Digest 22 extends BCMessageDigest 23 implements Cloneable 24 { 25 public Digest() 26 { 27 super(new SHA384Digest()); 28 } 29 30 public Object clone() 31 throws CloneNotSupportedException 32 { 33 Digest d = (Digest)super.clone(); 34 d.digest = new SHA384Digest((SHA384Digest)digest); 35 36 return d; 37 } 38 } 39 40 public static class HashMac 41 extends BaseMac 42 { 43 public HashMac() 44 { 45 super(new HMac(new SHA384Digest())); 46 } 47 } 48 49 /** 50 * HMACSHA384 51 */ 52 public static class KeyGenerator 53 extends BaseKeyGenerator 54 { 55 public KeyGenerator() 56 { 57 super("HMACSHA384", 384, new CipherKeyGenerator()); 58 } 59 } 60 61 // BEGIN Android-removed: Unsupported algorithms 62 /* 63 public static class OldSHA384 64 extends BaseMac 65 { 66 public OldSHA384() 67 { 68 super(new OldHMac(new SHA384Digest())); 69 } 70 } 71 */ 72 // END Android-removed: Unsupported algorithms 73 74 public static class Mappings 75 extends DigestAlgorithmProvider 76 { 77 private static final String PREFIX = SHA384.class.getName(); 78 79 public Mappings() 80 { 81 } 82 83 public void configure(ConfigurableProvider provider) 84 { 85 provider.addAlgorithm("MessageDigest.SHA-384", PREFIX + "$Digest"); 86 provider.addAlgorithm("Alg.Alias.MessageDigest.SHA384", "SHA-384"); 87 provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha384, "SHA-384"); 88 // Android-removed: Unsupported algorithms 89 // provider.addAlgorithm("Mac.OLDHMACSHA384", PREFIX + "$OldSHA384"); 90 91 provider.addAlgorithm("Mac.PBEWITHHMACSHA384", PREFIX + "$HashMac"); 92 93 addHMACAlgorithm(provider, "SHA384", PREFIX + "$HashMac", PREFIX + "$KeyGenerator"); 94 addHMACAlias(provider, "SHA384", PKCSObjectIdentifiers.id_hmacWithSHA384); 95 } 96 } 97} 98