Home | History | Annotate | Download | only in digest
      1 package org.bouncycastle.jcajce.provider.digest;
      2 
      3 import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
      4 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
      5 import org.bouncycastle.crypto.CipherKeyGenerator;
      6 import org.bouncycastle.crypto.digests.SHA512Digest;
      7 // BEGIN android-removed
      8 // import org.bouncycastle.crypto.digests.SHA512tDigest;
      9 // END android-removed
     10 import org.bouncycastle.crypto.macs.HMac;
     11 // BEGIN android-removed
     12 // import org.bouncycastle.crypto.macs.OldHMac;
     13 // END android-removed
     14 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
     15 import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
     16 import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
     17 
     18 public class SHA512
     19 {
     20     private SHA512()
     21     {
     22 
     23     }
     24 
     25     static public class Digest
     26         extends BCMessageDigest
     27         implements Cloneable
     28     {
     29         public Digest()
     30         {
     31             super(new SHA512Digest());
     32         }
     33 
     34         public Object clone()
     35             throws CloneNotSupportedException
     36         {
     37             Digest d = (Digest)super.clone();
     38             d.digest = new SHA512Digest((SHA512Digest)digest);
     39 
     40             return d;
     41         }
     42     }
     43 
     44     // BEGIN android-removed
     45     // static public class DigestT
     46     //     extends BCMessageDigest
     47     //     implements Cloneable
     48     // {
     49     //     public DigestT(int bitLength)
     50     //     {
     51     //         super(new SHA512tDigest(bitLength));
     52     //     }
     53     //
     54     //     public Object clone()
     55     //         throws CloneNotSupportedException
     56     //     {
     57     //         DigestT d = (DigestT)super.clone();
     58     //         d.digest = new SHA512tDigest((SHA512tDigest)digest);
     59     //
     60     //         return d;
     61     //     }
     62     // }
     63     //
     64     // static public class DigestT224
     65     //     extends DigestT
     66     // {
     67     //     public DigestT224()
     68     //     {
     69     //         super(224);
     70     //     }
     71     // }
     72     //
     73     // static public class DigestT256
     74     //     extends DigestT
     75     // {
     76     //     public DigestT256()
     77     //     {
     78     //         super(256);
     79     //     }
     80     // }
     81     // END android-removed
     82 
     83     public static class HashMac
     84         extends BaseMac
     85     {
     86         public HashMac()
     87         {
     88             super(new HMac(new SHA512Digest()));
     89         }
     90     }
     91 
     92     // BEGIN android-removed
     93     // public static class HashMacT224
     94     //     extends BaseMac
     95     // {
     96     //     public HashMacT224()
     97     //     {
     98     //         super(new HMac(new SHA512tDigest(224)));
     99     //     }
    100     // }
    101     //
    102     // public static class HashMacT256
    103     //     extends BaseMac
    104     // {
    105     //     public HashMacT256()
    106     //     {
    107     //         super(new HMac(new SHA512tDigest(256)));
    108     //     }
    109     // }
    110     //
    111     // /**
    112     //  * SHA-512 HMac
    113     //  */
    114     // public static class OldSHA512
    115     //     extends BaseMac
    116     // {
    117     //     public OldSHA512()
    118     //     {
    119     //         super(new OldHMac(new SHA512Digest()));
    120     //     }
    121     // }
    122     // END android-removed
    123 
    124     /**
    125      * HMACSHA512
    126      */
    127     public static class KeyGenerator
    128         extends BaseKeyGenerator
    129     {
    130         public KeyGenerator()
    131         {
    132             super("HMACSHA512", 512, new CipherKeyGenerator());
    133         }
    134     }
    135 
    136     // BEGIN android-removed
    137     // public static class KeyGeneratorT224
    138     //     extends BaseKeyGenerator
    139     // {
    140     //     public KeyGeneratorT224()
    141     //     {
    142     //         super("HMACSHA512/224", 224, new CipherKeyGenerator());
    143     //     }
    144     // }
    145     //
    146     // public static class KeyGeneratorT256
    147     //     extends BaseKeyGenerator
    148     // {
    149     //     public KeyGeneratorT256()
    150     //     {
    151     //         super("HMACSHA512/256", 256, new CipherKeyGenerator());
    152     //     }
    153     // }
    154     // END android-removed
    155 
    156     public static class Mappings
    157         extends DigestAlgorithmProvider
    158     {
    159         private static final String PREFIX = SHA512.class.getName();
    160 
    161         public Mappings()
    162         {
    163         }
    164 
    165         public void configure(ConfigurableProvider provider)
    166         {
    167             provider.addAlgorithm("MessageDigest.SHA-512", PREFIX + "$Digest");
    168             provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512", "SHA-512");
    169             provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512, "SHA-512");
    170 
    171             // BEGIN android-removed
    172             // provider.addAlgorithm("MessageDigest.SHA-512/224", PREFIX + "$DigestT224");
    173             // provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512/224", "SHA-512/224");
    174             // provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512_224, "SHA-512/224");
    175             //
    176             // provider.addAlgorithm("MessageDigest.SHA-512/256", PREFIX + "$DigestT256");
    177             // provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512256", "SHA-512/256");
    178             // provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512_256, "SHA-512/256");
    179             //
    180             // provider.addAlgorithm("Mac.OLDHMACSHA512", PREFIX + "$OldSHA512");
    181             // END android-removed
    182 
    183             provider.addAlgorithm("Mac.PBEWITHHMACSHA512", PREFIX + "$HashMac");
    184 
    185             addHMACAlgorithm(provider, "SHA512", PREFIX + "$HashMac",  PREFIX + "$KeyGenerator");
    186             addHMACAlias(provider, "SHA512", PKCSObjectIdentifiers.id_hmacWithSHA512);
    187 
    188             // BEGIN android-removed
    189             // addHMACAlgorithm(provider, "SHA512/224", PREFIX + "$HashMacT224",  PREFIX + "$KeyGeneratorT224");
    190             // addHMACAlgorithm(provider, "SHA512/256", PREFIX + "$HashMacT256",  PREFIX + "$KeyGeneratorT256");
    191             // END android-removed
    192         }
    193     }
    194 
    195 }
    196