| package org.bouncycastle.jcajce.provider.digest; |
| |
| import org.bouncycastle.crypto.CipherKeyGenerator; |
| import org.bouncycastle.crypto.digests.KeccakDigest; |
| 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 Keccak |
| { |
| private Keccak() |
| { |
| |
| } |
| |
| static public class DigestKeccak |
| extends BCMessageDigest |
| implements Cloneable |
| { |
| public DigestKeccak(int size) |
| { |
| super(new KeccakDigest(size)); |
| } |
| |
| public Object clone() |
| throws CloneNotSupportedException |
| { |
| BCMessageDigest d = (BCMessageDigest)super.clone(); |
| d.digest = new KeccakDigest((KeccakDigest)digest); |
| |
| return d; |
| } |
| } |
| |
| static public class Digest224 |
| extends DigestKeccak |
| { |
| public Digest224() |
| { |
| super(224); |
| } |
| } |
| |
| static public class Digest256 |
| extends DigestKeccak |
| { |
| public Digest256() |
| { |
| super(256); |
| } |
| } |
| |
| static public class Digest288 |
| extends DigestKeccak |
| { |
| public Digest288() |
| { |
| super(288); |
| } |
| } |
| |
| static public class Digest384 |
| extends DigestKeccak |
| { |
| public Digest384() |
| { |
| super(384); |
| } |
| } |
| |
| static public class Digest512 |
| extends DigestKeccak |
| { |
| public Digest512() |
| { |
| super(512); |
| } |
| } |
| |
| public static class HashMac224 |
| extends BaseMac |
| { |
| public HashMac224() |
| { |
| super(new HMac(new KeccakDigest(224))); |
| } |
| } |
| |
| public static class HashMac256 |
| extends BaseMac |
| { |
| public HashMac256() |
| { |
| super(new HMac(new KeccakDigest(256))); |
| } |
| } |
| |
| public static class HashMac288 |
| extends BaseMac |
| { |
| public HashMac288() |
| { |
| super(new HMac(new KeccakDigest(288))); |
| } |
| } |
| |
| public static class HashMac384 |
| extends BaseMac |
| { |
| public HashMac384() |
| { |
| super(new HMac(new KeccakDigest(384))); |
| } |
| } |
| |
| public static class HashMac512 |
| extends BaseMac |
| { |
| public HashMac512() |
| { |
| super(new HMac(new KeccakDigest(512))); |
| } |
| } |
| |
| public static class KeyGenerator224 |
| extends BaseKeyGenerator |
| { |
| public KeyGenerator224() |
| { |
| super("HMACKECCAK224", 224, new CipherKeyGenerator()); |
| } |
| } |
| |
| public static class KeyGenerator256 |
| extends BaseKeyGenerator |
| { |
| public KeyGenerator256() |
| { |
| super("HMACKECCAK256", 256, new CipherKeyGenerator()); |
| } |
| } |
| |
| public static class KeyGenerator288 |
| extends BaseKeyGenerator |
| { |
| public KeyGenerator288() |
| { |
| super("HMACKECCAK288", 288, new CipherKeyGenerator()); |
| } |
| } |
| |
| public static class KeyGenerator384 |
| extends BaseKeyGenerator |
| { |
| public KeyGenerator384() |
| { |
| super("HMACKECCAK384", 384, new CipherKeyGenerator()); |
| } |
| } |
| |
| public static class KeyGenerator512 |
| extends BaseKeyGenerator |
| { |
| public KeyGenerator512() |
| { |
| super("HMACKECCAK512", 512, new CipherKeyGenerator()); |
| } |
| } |
| |
| public static class Mappings |
| extends DigestAlgorithmProvider |
| { |
| private static final String PREFIX = Keccak.class.getName(); |
| |
| public Mappings() |
| { |
| } |
| |
| public void configure(ConfigurableProvider provider) |
| { |
| provider.addAlgorithm("MessageDigest.KECCAK-224", PREFIX + "$Digest224"); |
| provider.addAlgorithm("MessageDigest.KECCAK-288", PREFIX + "$Digest288"); |
| provider.addAlgorithm("MessageDigest.KECCAK-256", PREFIX + "$Digest256"); |
| provider.addAlgorithm("MessageDigest.KECCAK-384", PREFIX + "$Digest384"); |
| provider.addAlgorithm("MessageDigest.KECCAK-512", PREFIX + "$Digest512"); |
| |
| addHMACAlgorithm(provider, "KECCAK224", PREFIX + "$HashMac224", PREFIX + "$KeyGenerator224"); |
| addHMACAlgorithm(provider, "KECCAK256", PREFIX + "$HashMac256", PREFIX + "$KeyGenerator256"); |
| addHMACAlgorithm(provider, "KECCAK288", PREFIX + "$HashMac288", PREFIX + "$KeyGenerator288"); |
| addHMACAlgorithm(provider, "KECCAK384", PREFIX + "$HashMac384", PREFIX + "$KeyGenerator384"); |
| addHMACAlgorithm(provider, "KECCAK512", PREFIX + "$HashMac512", PREFIX + "$KeyGenerator512"); |
| } |
| } |
| } |