14c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompackage org.bouncycastle.jcajce.provider.digest; 24c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 34c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.iana.IANAObjectIdentifiers; 44c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; 54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.CipherKeyGenerator; 64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.digests.MD5Digest; 74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.macs.HMac; 84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.config.ConfigurableProvider; 94c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; 10a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; 114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompublic class MD5 134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom{ 14a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom private MD5() 15a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 16a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 17a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 18a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom /** 20a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * MD5 HashMac 214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom */ 224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class HashMac 23a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends BaseMac 244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public HashMac() 264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new HMac(new MD5Digest())); 284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class KeyGenerator 324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseKeyGenerator 334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public KeyGenerator() 354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super("HMACMD5", 128, new CipherKeyGenerator()); 374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom static public class Digest 414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BCMessageDigest 424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom implements Cloneable 434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Digest() 454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new MD5Digest()); 474c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 484c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Object clone() 504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom throws CloneNotSupportedException 514c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom Digest d = (Digest)super.clone(); 534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom d.digest = new MD5Digest((MD5Digest)digest); 544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return d; 564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class Mappings 604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends DigestAlgorithmProvider 614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private static final String PREFIX = MD5.class.getName(); 634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Mappings() 654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public void configure(ConfigurableProvider provider) 694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("MessageDigest.MD5", PREFIX + "$Digest"); 714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.MessageDigest." + PKCSObjectIdentifiers.md5, "MD5"); 724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 734c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom addHMACAlgorithm(provider, "MD5", PREFIX + "$HashMac", PREFIX + "$KeyGenerator"); 744c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom addHMACAlias(provider, "MD5", IANAObjectIdentifiers.hmacMD5); 754c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 774c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom} 78