MD5.java revision 4c111300c39cb2e27f07fc2ae3b00e23ed4443b2
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;
104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jce.provider.JCEMac;
114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompublic class MD5
134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom{
144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    /**
154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     * MD5 HMac
164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     */
174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static class HashMac
184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        extends JCEMac
194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public HashMac()
214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            super(new HMac(new MD5Digest()));
234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static class KeyGenerator
274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        extends BaseKeyGenerator
284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public KeyGenerator()
304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            super("HMACMD5", 128, new CipherKeyGenerator());
324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    static public class Digest
364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        extends BCMessageDigest
374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        implements Cloneable
384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public Digest()
404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            super(new MD5Digest());
424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public Object clone()
454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            throws CloneNotSupportedException
464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
474c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            Digest d = (Digest)super.clone();
484c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            d.digest = new MD5Digest((MD5Digest)digest);
494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return d;
514c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static class Mappings
554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        extends DigestAlgorithmProvider
564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        private static final String PREFIX = MD5.class.getName();
584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public Mappings()
604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        public void configure(ConfigurableProvider provider)
644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            provider.addAlgorithm("MessageDigest.MD5", PREFIX + "$Digest");
664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            provider.addAlgorithm("Alg.Alias.MessageDigest." + PKCSObjectIdentifiers.md5, "MD5");
674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            addHMACAlgorithm(provider, "MD5", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            addHMACAlias(provider, "MD5", IANAObjectIdentifiers.hmacMD5);
704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom}
73