diff options
author | Kenny Root <kroot@google.com> | 2013-09-26 11:06:21 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2013-09-26 15:11:08 -0700 |
commit | 87490acd76f544251011cf49753d4d0a61f86a66 (patch) | |
tree | 513062f7012702afe1bc056430292e7d0e646990 /bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest | |
parent | 711ae8b4bcf0b2c456392439d72e7700067a6d87 (diff) | |
download | android_external_bouncycastle-87490acd76f544251011cf49753d4d0a61f86a66.tar.gz android_external_bouncycastle-87490acd76f544251011cf49753d4d0a61f86a66.tar.bz2 android_external_bouncycastle-87490acd76f544251011cf49753d4d0a61f86a66.zip |
Restore SHA-224
In the StandardNames 8 document, SHA-224 has made a comeback.
Change-Id: I2cfd04df026502efa3ccbae17eb509588f43292f
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest')
-rw-r--r-- | bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA224.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA224.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA224.java new file mode 100644 index 0000000..ba06a0f --- /dev/null +++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA224.java @@ -0,0 +1,76 @@ +package org.bouncycastle.jcajce.provider.digest; + +import org.bouncycastle.asn1.nist.NISTObjectIdentifiers; +import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; +import org.bouncycastle.crypto.CipherKeyGenerator; +import org.bouncycastle.crypto.digests.SHA224Digest; +import org.bouncycastle.crypto.macs.HMac; +import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; +import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; +import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; + +public class SHA224 +{ + private SHA224() + { + + } + + static public class Digest + extends BCMessageDigest + implements Cloneable + { + public Digest() + { + super(new SHA224Digest()); + } + + public Object clone() + throws CloneNotSupportedException + { + Digest d = (Digest)super.clone(); + d.digest = new SHA224Digest((SHA224Digest)digest); + + return d; + } + } + + public static class HashMac + extends BaseMac + { + public HashMac() + { + super(new HMac(new SHA224Digest())); + } + } + + public static class KeyGenerator + extends BaseKeyGenerator + { + public KeyGenerator() + { + super("HMACSHA224", 224, new CipherKeyGenerator()); + } + } + + public static class Mappings + extends DigestAlgorithmProvider + { + private static final String PREFIX = SHA224.class.getName(); + + public Mappings() + { + } + + public void configure(ConfigurableProvider provider) + { + provider.addAlgorithm("MessageDigest.SHA-224", PREFIX + "$Digest"); + provider.addAlgorithm("Alg.Alias.MessageDigest.SHA224", "SHA-224"); + provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha224, "SHA-224"); + + addHMACAlgorithm(provider, "SHA224", PREFIX + "$HashMac", PREFIX + "$KeyGenerator"); + addHMACAlias(provider, "SHA224", PKCSObjectIdentifiers.id_hmacWithSHA224); + + } + } +} |