SHA1.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.jcajce.provider.digest;
2
3import org.bouncycastle.asn1.iana.IANAObjectIdentifiers;
4import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
5import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
6import org.bouncycastle.crypto.CipherKeyGenerator;
7import org.bouncycastle.crypto.digests.SHA1Digest;
8import org.bouncycastle.crypto.macs.HMac;
9import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
10import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
11import org.bouncycastle.jce.provider.JCEMac;
12
13public class SHA1
14{
15    static public class Digest
16        extends BCMessageDigest
17        implements Cloneable
18    {
19        public Digest()
20        {
21            super(new SHA1Digest());
22        }
23
24        public Object clone()
25            throws CloneNotSupportedException
26        {
27            Digest d = (Digest)super.clone();
28            d.digest = new SHA1Digest((SHA1Digest)digest);
29
30            return d;
31        }
32    }
33
34    /**
35     * SHA1 HMac
36     */
37    public static class HashMac
38        extends JCEMac
39    {
40        public HashMac()
41        {
42            super(new HMac(new SHA1Digest()));
43        }
44    }
45
46    public static class KeyGenerator
47        extends BaseKeyGenerator
48    {
49        public KeyGenerator()
50        {
51            super("HMACSHA1", 160, new CipherKeyGenerator());
52        }
53    }
54
55    public static class Mappings
56        extends DigestAlgorithmProvider
57    {
58        private static final String PREFIX = SHA1.class.getName();
59
60        public Mappings()
61        {
62        }
63
64        public void configure(ConfigurableProvider provider)
65        {
66            provider.addAlgorithm("MessageDigest.SHA-1", PREFIX + "$Digest");
67            provider.addAlgorithm("Alg.Alias.MessageDigest.SHA1", "SHA-1");
68            provider.addAlgorithm("Alg.Alias.MessageDigest.SHA", "SHA-1");
69            provider.addAlgorithm("Alg.Alias.MessageDigest." + OIWObjectIdentifiers.idSHA1, "SHA-1");
70
71            addHMACAlgorithm(provider, "SHA1", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
72            addHMACAlias(provider, "SHA1", PKCSObjectIdentifiers.id_hmacWithSHA1);
73            addHMACAlias(provider, "SHA1", IANAObjectIdentifiers.hmacSHA1);
74        }
75    }
76}
77