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