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