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