187490acd76f544251011cf49753d4d0a61f86a66Kenny Rootpackage org.bouncycastle.jcajce.provider.digest;
287490acd76f544251011cf49753d4d0a61f86a66Kenny Root
387490acd76f544251011cf49753d4d0a61f86a66Kenny Rootimport org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
487490acd76f544251011cf49753d4d0a61f86a66Kenny Rootimport org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
587490acd76f544251011cf49753d4d0a61f86a66Kenny Rootimport org.bouncycastle.crypto.CipherKeyGenerator;
687490acd76f544251011cf49753d4d0a61f86a66Kenny Rootimport org.bouncycastle.crypto.digests.SHA224Digest;
787490acd76f544251011cf49753d4d0a61f86a66Kenny Rootimport org.bouncycastle.crypto.macs.HMac;
887490acd76f544251011cf49753d4d0a61f86a66Kenny Rootimport org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
987490acd76f544251011cf49753d4d0a61f86a66Kenny Rootimport org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
1087490acd76f544251011cf49753d4d0a61f86a66Kenny Rootimport org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
1187490acd76f544251011cf49753d4d0a61f86a66Kenny Root
1287490acd76f544251011cf49753d4d0a61f86a66Kenny Rootpublic class SHA224
1387490acd76f544251011cf49753d4d0a61f86a66Kenny Root{
1487490acd76f544251011cf49753d4d0a61f86a66Kenny Root    private SHA224()
1587490acd76f544251011cf49753d4d0a61f86a66Kenny Root    {
1687490acd76f544251011cf49753d4d0a61f86a66Kenny Root
1787490acd76f544251011cf49753d4d0a61f86a66Kenny Root    }
1887490acd76f544251011cf49753d4d0a61f86a66Kenny Root
1987490acd76f544251011cf49753d4d0a61f86a66Kenny Root    static public class Digest
2087490acd76f544251011cf49753d4d0a61f86a66Kenny Root        extends BCMessageDigest
2187490acd76f544251011cf49753d4d0a61f86a66Kenny Root        implements Cloneable
2287490acd76f544251011cf49753d4d0a61f86a66Kenny Root    {
2387490acd76f544251011cf49753d4d0a61f86a66Kenny Root        public Digest()
2487490acd76f544251011cf49753d4d0a61f86a66Kenny Root        {
2587490acd76f544251011cf49753d4d0a61f86a66Kenny Root            super(new SHA224Digest());
2687490acd76f544251011cf49753d4d0a61f86a66Kenny Root        }
2787490acd76f544251011cf49753d4d0a61f86a66Kenny Root
2887490acd76f544251011cf49753d4d0a61f86a66Kenny Root        public Object clone()
2987490acd76f544251011cf49753d4d0a61f86a66Kenny Root            throws CloneNotSupportedException
3087490acd76f544251011cf49753d4d0a61f86a66Kenny Root        {
3187490acd76f544251011cf49753d4d0a61f86a66Kenny Root            Digest d = (Digest)super.clone();
3287490acd76f544251011cf49753d4d0a61f86a66Kenny Root            d.digest = new SHA224Digest((SHA224Digest)digest);
3387490acd76f544251011cf49753d4d0a61f86a66Kenny Root
3487490acd76f544251011cf49753d4d0a61f86a66Kenny Root            return d;
3587490acd76f544251011cf49753d4d0a61f86a66Kenny Root        }
3687490acd76f544251011cf49753d4d0a61f86a66Kenny Root    }
3787490acd76f544251011cf49753d4d0a61f86a66Kenny Root
3887490acd76f544251011cf49753d4d0a61f86a66Kenny Root    public static class HashMac
3987490acd76f544251011cf49753d4d0a61f86a66Kenny Root        extends BaseMac
4087490acd76f544251011cf49753d4d0a61f86a66Kenny Root    {
4187490acd76f544251011cf49753d4d0a61f86a66Kenny Root        public HashMac()
4287490acd76f544251011cf49753d4d0a61f86a66Kenny Root        {
4387490acd76f544251011cf49753d4d0a61f86a66Kenny Root            super(new HMac(new SHA224Digest()));
4487490acd76f544251011cf49753d4d0a61f86a66Kenny Root        }
4587490acd76f544251011cf49753d4d0a61f86a66Kenny Root    }
4687490acd76f544251011cf49753d4d0a61f86a66Kenny Root
4787490acd76f544251011cf49753d4d0a61f86a66Kenny Root    public static class KeyGenerator
4887490acd76f544251011cf49753d4d0a61f86a66Kenny Root        extends BaseKeyGenerator
4987490acd76f544251011cf49753d4d0a61f86a66Kenny Root    {
5087490acd76f544251011cf49753d4d0a61f86a66Kenny Root        public KeyGenerator()
5187490acd76f544251011cf49753d4d0a61f86a66Kenny Root        {
5287490acd76f544251011cf49753d4d0a61f86a66Kenny Root            super("HMACSHA224", 224, new CipherKeyGenerator());
5387490acd76f544251011cf49753d4d0a61f86a66Kenny Root        }
5487490acd76f544251011cf49753d4d0a61f86a66Kenny Root    }
5587490acd76f544251011cf49753d4d0a61f86a66Kenny Root
5687490acd76f544251011cf49753d4d0a61f86a66Kenny Root    public static class Mappings
5787490acd76f544251011cf49753d4d0a61f86a66Kenny Root        extends DigestAlgorithmProvider
5887490acd76f544251011cf49753d4d0a61f86a66Kenny Root    {
5987490acd76f544251011cf49753d4d0a61f86a66Kenny Root        private static final String PREFIX = SHA224.class.getName();
6087490acd76f544251011cf49753d4d0a61f86a66Kenny Root
6187490acd76f544251011cf49753d4d0a61f86a66Kenny Root        public Mappings()
6287490acd76f544251011cf49753d4d0a61f86a66Kenny Root        {
6387490acd76f544251011cf49753d4d0a61f86a66Kenny Root        }
6487490acd76f544251011cf49753d4d0a61f86a66Kenny Root
6587490acd76f544251011cf49753d4d0a61f86a66Kenny Root        public void configure(ConfigurableProvider provider)
6687490acd76f544251011cf49753d4d0a61f86a66Kenny Root        {
6787490acd76f544251011cf49753d4d0a61f86a66Kenny Root            provider.addAlgorithm("MessageDigest.SHA-224", PREFIX + "$Digest");
6887490acd76f544251011cf49753d4d0a61f86a66Kenny Root            provider.addAlgorithm("Alg.Alias.MessageDigest.SHA224", "SHA-224");
6987490acd76f544251011cf49753d4d0a61f86a66Kenny Root            provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha224, "SHA-224");
7087490acd76f544251011cf49753d4d0a61f86a66Kenny Root
7187490acd76f544251011cf49753d4d0a61f86a66Kenny Root            addHMACAlgorithm(provider, "SHA224", PREFIX + "$HashMac",  PREFIX + "$KeyGenerator");
7287490acd76f544251011cf49753d4d0a61f86a66Kenny Root            addHMACAlias(provider, "SHA224", PKCSObjectIdentifiers.id_hmacWithSHA224);
7387490acd76f544251011cf49753d4d0a61f86a66Kenny Root
7487490acd76f544251011cf49753d4d0a61f86a66Kenny Root        }
7587490acd76f544251011cf49753d4d0a61f86a66Kenny Root    }
7687490acd76f544251011cf49753d4d0a61f86a66Kenny Root}
77