SHA1.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)package org.bouncycastle.jcajce.provider.digest;
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.bouncycastle.asn1.iana.IANAObjectIdentifiers;
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.bouncycastle.crypto.CipherKeyGenerator;
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.bouncycastle.crypto.digests.SHA1Digest;
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.bouncycastle.crypto.macs.HMac;
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.bouncycastle.jce.provider.JCEMac;
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)public class SHA1
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    static public class Digest
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        extends BCMessageDigest
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        implements Cloneable
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        public Digest()
20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)        {
21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)            super(new SHA1Digest());
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
23a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        public Object clone()
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            throws CloneNotSupportedException
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        {
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            Digest d = (Digest)super.clone();
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            d.digest = new SHA1Digest((SHA1Digest)digest);
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return d;
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * SHA1 HMac
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public static class HashMac
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        extends JCEMac
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        public HashMac()
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        {
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)            super(new HMac(new SHA1Digest()));
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    }
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public static class KeyGenerator
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        extends BaseKeyGenerator
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    {
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        public KeyGenerator()
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        {
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            super("HMACSHA1", 160, new CipherKeyGenerator());
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public static class Mappings
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        extends DigestAlgorithmProvider
57b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    {
58b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)        private static final String PREFIX = SHA1.class.getName();
59b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
60b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)        public Mappings()
61b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)        {
62b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)        }
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        public void configure(ConfigurableProvider provider)
65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        {
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            provider.addAlgorithm("MessageDigest.SHA-1", PREFIX + "$Digest");
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            provider.addAlgorithm("Alg.Alias.MessageDigest.SHA1", "SHA-1");
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            provider.addAlgorithm("Alg.Alias.MessageDigest.SHA", "SHA-1");
6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)            provider.addAlgorithm("Alg.Alias.MessageDigest." + OIWObjectIdentifiers.idSHA1, "SHA-1");
7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            addHMACAlgorithm(provider, "SHA1", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            addHMACAlias(provider, "SHA1", PKCSObjectIdentifiers.id_hmacWithSHA1);
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            addHMACAlias(provider, "SHA1", IANAObjectIdentifiers.hmacSHA1);
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)