SHA512.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
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.SHA512Digest;
7import org.bouncycastle.crypto.macs.HMac;
8import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
9import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
10import org.bouncycastle.jce.provider.JCEMac;
11
12public class SHA512
13{
14    static public class Digest
15        extends BCMessageDigest
16        implements Cloneable
17    {
18        public Digest()
19        {
20            super(new SHA512Digest());
21        }
22
23        public Object clone()
24            throws CloneNotSupportedException
25        {
26            Digest d = (Digest)super.clone();
27            d.digest = new SHA512Digest((SHA512Digest)digest);
28
29            return d;
30        }
31    }
32
33    public static class HashMac
34        extends JCEMac
35    {
36        public HashMac()
37        {
38            super(new HMac(new SHA512Digest()));
39        }
40    }
41
42    /**
43     * HMACSHA512
44     */
45    public static class KeyGenerator
46        extends BaseKeyGenerator
47    {
48        public KeyGenerator()
49        {
50            super("HMACSHA512", 512, new CipherKeyGenerator());
51        }
52    }
53
54    public static class Mappings
55        extends DigestAlgorithmProvider
56    {
57        private static final String PREFIX = SHA512.class.getName();
58
59        public Mappings()
60        {
61        }
62
63        public void configure(ConfigurableProvider provider)
64        {
65            provider.addAlgorithm("MessageDigest.SHA-512", PREFIX + "$Digest");
66            provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512", "SHA-512");
67            provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512, "SHA-512");
68
69            addHMACAlgorithm(provider, "SHA512", PREFIX + "$HashMac",  PREFIX + "$KeyGenerator");
70            addHMACAlias(provider, "SHA512", PKCSObjectIdentifiers.id_hmacWithSHA512);
71        }
72    }
73
74}
75