14c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompackage org.bouncycastle.jcajce.provider.digest; 24c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 34c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.nist.NISTObjectIdentifiers; 44c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; 54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.CipherKeyGenerator; 64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.digests.SHA256Digest; 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; 11a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; 124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompublic class SHA256 144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom{ 15a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom private SHA256() 16a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 17a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 18a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 19a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom static public class Digest 214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BCMessageDigest 224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom implements Cloneable 234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Digest() 254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new SHA256Digest()); 274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Object clone() 304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom throws CloneNotSupportedException 314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom Digest d = (Digest)super.clone(); 334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom d.digest = new SHA256Digest((SHA256Digest)digest); 344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return d; 364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class HashMac 40a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends BaseMac 414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public HashMac() 434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new HMac(new SHA256Digest())); 454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 474c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 48a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // BEGIN android-removed 49a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // /** 50a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // * PBEWithHmacSHA 51a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // */ 52a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public static class PBEWithMacKeyFactory 53a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // extends PBESecretKeyFactory 54a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 55a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public PBEWithMacKeyFactory() 56a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 57a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // super("PBEwithHmacSHA256", null, false, PKCS12, SHA256, 256, 0); 58a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 59a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 60a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // END android-removed 61a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 62a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * HMACSHA256 644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom */ 654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class KeyGenerator 664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseKeyGenerator 674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public KeyGenerator() 694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super("HMACSHA256", 256, new CipherKeyGenerator()); 714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 734c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 744c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class Mappings 754c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends DigestAlgorithmProvider 764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 774c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private static final String PREFIX = SHA256.class.getName(); 784c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 794c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Mappings() 804c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 814c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 824c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 834c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public void configure(ConfigurableProvider provider) 844c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 854c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("MessageDigest.SHA-256", PREFIX + "$Digest"); 864c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.MessageDigest.SHA256", "SHA-256"); 874c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha256, "SHA-256"); 884c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 89a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // BEGIN android-removed 90a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // provider.addAlgorithm("SecretKeyFactory.PBEWITHHMACSHA256", PREFIX + "$PBEWithMacKeyFactory"); 91a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHHMACSHA-256", "PBEWITHHMACSHA256"); 92a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + NISTObjectIdentifiers.id_sha256, "PBEWITHHMACSHA256"); 93a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // END android-removed 94a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 954c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom addHMACAlgorithm(provider, "SHA256", PREFIX + "$HashMac", PREFIX + "$KeyGenerator"); 964c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom addHMACAlias(provider, "SHA256", PKCSObjectIdentifiers.id_hmacWithSHA256); 97a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom addHMACAlias(provider, "SHA256", NISTObjectIdentifiers.id_sha256); 984c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 994c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1004c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom} 101