14c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompackage org.bouncycastle.jcajce.provider.digest;
24c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
34c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.iana.IANAObjectIdentifiers;
44c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.CipherKeyGenerator;
74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.digests.SHA1Digest;
84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.macs.HMac;
94c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jce.provider.JCEMac;
124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompublic class SHA1
144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom{
154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    static public class Digest
164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        extends BCMessageDigest
174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        implements Cloneable
184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public Digest()
204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            super(new SHA1Digest());
224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public Object clone()
254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            throws CloneNotSupportedException
264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            Digest d = (Digest)super.clone();
284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            d.digest = new SHA1Digest((SHA1Digest)digest);
294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return d;
314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    /**
354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     * SHA1 HMac
364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     */
374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static class HashMac
384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        extends JCEMac
394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public HashMac()
414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            super(new HMac(new SHA1Digest()));
434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static class KeyGenerator
474c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        extends BaseKeyGenerator
484c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public KeyGenerator()
504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
514c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            super("HMACSHA1", 160, new CipherKeyGenerator());
524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static class Mappings
564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        extends DigestAlgorithmProvider
574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        private static final String PREFIX = SHA1.class.getName();
594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public Mappings()
614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public void configure(ConfigurableProvider provider)
654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            provider.addAlgorithm("MessageDigest.SHA-1", PREFIX + "$Digest");
674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            provider.addAlgorithm("Alg.Alias.MessageDigest.SHA1", "SHA-1");
684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            provider.addAlgorithm("Alg.Alias.MessageDigest.SHA", "SHA-1");
694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            provider.addAlgorithm("Alg.Alias.MessageDigest." + OIWObjectIdentifiers.idSHA1, "SHA-1");
704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            addHMACAlgorithm(provider, "SHA1", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            addHMACAlias(provider, "SHA1", PKCSObjectIdentifiers.id_hmacWithSHA1);
734c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            addHMACAlias(provider, "SHA1", IANAObjectIdentifiers.hmacSHA1);
744c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
754c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom}
77