Home | History | Annotate | Download | only in digest
      1 package org.bouncycastle.jcajce.provider.digest;
      2 
      3 import org.bouncycastle.asn1.iana.IANAObjectIdentifiers;
      4 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
      5 import org.bouncycastle.crypto.CipherKeyGenerator;
      6 import org.bouncycastle.crypto.digests.MD5Digest;
      7 import org.bouncycastle.crypto.macs.HMac;
      8 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
      9 import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
     10 import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
     11 
     12 public class MD5
     13 {
     14     private MD5()
     15     {
     16 
     17     }
     18 
     19     /**
     20      * MD5 HashMac
     21      */
     22     public static class HashMac
     23         extends BaseMac
     24     {
     25         public HashMac()
     26         {
     27             super(new HMac(new MD5Digest()));
     28         }
     29     }
     30 
     31     public static class KeyGenerator
     32         extends BaseKeyGenerator
     33     {
     34         public KeyGenerator()
     35         {
     36             super("HMACMD5", 128, new CipherKeyGenerator());
     37         }
     38     }
     39 
     40     static public class Digest
     41         extends BCMessageDigest
     42         implements Cloneable
     43     {
     44         public Digest()
     45         {
     46             super(new MD5Digest());
     47         }
     48 
     49         public Object clone()
     50             throws CloneNotSupportedException
     51         {
     52             Digest d = (Digest)super.clone();
     53             d.digest = new MD5Digest((MD5Digest)digest);
     54 
     55             return d;
     56         }
     57     }
     58 
     59     public static class Mappings
     60         extends DigestAlgorithmProvider
     61     {
     62         private static final String PREFIX = MD5.class.getName();
     63 
     64         public Mappings()
     65         {
     66         }
     67 
     68         public void configure(ConfigurableProvider provider)
     69         {
     70             provider.addAlgorithm("MessageDigest.MD5", PREFIX + "$Digest");
     71             provider.addAlgorithm("Alg.Alias.MessageDigest." + PKCSObjectIdentifiers.md5, "MD5");
     72 
     73             addHMACAlgorithm(provider, "MD5", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
     74             addHMACAlias(provider, "MD5", IANAObjectIdentifiers.hmacMD5);
     75         }
     76     }
     77 }
     78