14c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompackage org.bouncycastle.jcajce.provider.symmetric; 24c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 35db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootimport java.io.IOException; 45db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootimport java.lang.reflect.Constructor; 55db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootimport java.lang.reflect.Method; 64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import java.security.AlgorithmParameters; 84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import java.security.InvalidAlgorithmParameterException; 94c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport java.security.SecureRandom; 115db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootimport java.security.spec.AlgorithmParameterSpec; 125db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootimport java.security.spec.InvalidParameterSpecException; 135db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import javax.crypto.spec.IvParameterSpec; 164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 18a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.asn1.bc.BCObjectIdentifiers; 195db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootimport org.bouncycastle.asn1.cms.GCMParameters; 204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.nist.NISTObjectIdentifiers; 21a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.crypto.BlockCipher; 224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.BufferedBlockCipher; 234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.CipherKeyGenerator; 244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.engines.AESFastEngine; 254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.engines.AESWrapEngine; 264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import org.bouncycastle.crypto.engines.RFC3211WrapEngine; 285db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root// import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; 294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import org.bouncycastle.crypto.macs.CMac; 30a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom// import org.bouncycastle.crypto.macs.GMac; 314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.modes.CBCBlockCipher; 334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.modes.CFBBlockCipher; 34a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.crypto.modes.GCMBlockCipher; 354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.modes.OFBBlockCipher; 364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.config.ConfigurableProvider; 374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; 394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 405db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootimport org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters; 414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; 424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; 434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; 454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher; 47a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider; 484c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; 49a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; 504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 514c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import org.bouncycastle.jce.provider.BouncyCastleProvider; 524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 535db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Rootimport org.bouncycastle.util.Integers; 544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompublic final class AES 564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom{ 575db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root private static final Class gcmSpecClass = lookup("javax.crypto.spec.GCMParameterSpec"); 585db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private AES() 604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class ECB 644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseBlockCipher 654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ECB() 674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 68a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super(new BlockCipherProvider() 69a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 70a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public BlockCipher get() 71a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 72a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom return new AESFastEngine(); 73a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 74a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom }); 754c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 774c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 784c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class CBC 794c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseBlockCipher 804c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 814c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public CBC() 824c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 834c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new CBCBlockCipher(new AESFastEngine()), 128); 844c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 854c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 864c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 874c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom static public class CFB 884c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseBlockCipher 894c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 904c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public CFB() 914c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 924c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new BufferedBlockCipher(new CFBBlockCipher(new AESFastEngine(), 128)), 128); 934c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 944c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 954c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 964c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom static public class OFB 974c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseBlockCipher 984c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 994c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public OFB() 1004c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 1014c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new BufferedBlockCipher(new OFBBlockCipher(new AESFastEngine(), 128)), 128); 1024c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1034c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1044c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 1055db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root static public class GCM 1065db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root extends BaseBlockCipher 1075db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 1085db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root public GCM() 1095db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 1105db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root super(new GCMBlockCipher(new AESFastEngine())); 1115db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 1125db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 1135db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 1144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 1154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class AESCMAC 1164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends BaseMac 1174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public AESCMAC() 1194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // super(new CMac(new AESFastEngine())); 1214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 123a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // 124a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public static class AESGMAC 125a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // extends BaseMac 126a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 127a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // public AESGMAC() 128a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // { 129a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // super(new GMac(new GCMBlockCipher(new AESFastEngine()))); 130a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 131a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // } 1325db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // 1335db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // public static class Poly1305 1345db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // extends BaseMac 1355db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // { 1365db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // public Poly1305() 1375db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // { 1385db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // super(new org.bouncycastle.crypto.macs.Poly1305(new AESFastEngine())); 1395db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // } 1405db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // } 1415db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // 1425db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // public static class Poly1305KeyGen 1435db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // extends BaseKeyGenerator 1445db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // { 1455db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // public Poly1305KeyGen() 1465db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // { 1475db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // super("Poly1305-AES", 256, new Poly1305KeyGenerator()); 1485db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // } 1495db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // } 1504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 151a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 1524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom static public class Wrap 1534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseWrapCipher 1544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 1554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Wrap() 1564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 1574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new AESWrapEngine()); 1584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 1614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 1624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class RFC3211Wrap 1634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends BaseWrapCipher 1644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public RFC3211Wrap() 1664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // super(new RFC3211WrapEngine(new AESFastEngine()), 16); 1684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 1714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 172a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 173a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 174a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithAES-CBC 175a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 176a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithAESCBC 177a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends BaseBlockCipher 178a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 179a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithAESCBC() 180a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 181a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super(new CBCBlockCipher(new AESFastEngine())); 182a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 183a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 184a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 1854c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class KeyGen 1864c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseKeyGenerator 1874c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 1884c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public KeyGen() 1894c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 1904c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom this(192); 1914c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1924c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 1934c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public KeyGen(int keySize) 1944c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 1954c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super("AES", keySize, new CipherKeyGenerator()); 1964c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1974c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1984c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 1994c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 2004c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class KeyGen128 2014c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends KeyGen 2024c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 2034c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public KeyGen128() 2044c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 2054c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // super(128); 2064c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 2074c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 2084c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 2094c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class KeyGen192 2104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends KeyGen 2114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 2124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public KeyGen192() 2134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 2144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // super(192); 2154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 2164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 2174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 2184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class KeyGen256 2194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends KeyGen 2204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 2214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public KeyGen256() 2224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 2234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // super(256); 2244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 2254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 226a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // END android-removed 227a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 228a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 229a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHA1And128BitAES-BC 230a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 231a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHAAnd128BitAESBC 232a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 233a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 234a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHAAnd128BitAESBC() 235a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 236a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEWithSHA1And128BitAES-CBC-BC", null, true, PKCS12, SHA1, 128, 128); 237a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 238a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 239a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 240a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 241a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHA1And192BitAES-BC 242a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 243a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHAAnd192BitAESBC 244a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 245a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 246a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHAAnd192BitAESBC() 247a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 248a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEWithSHA1And192BitAES-CBC-BC", null, true, PKCS12, SHA1, 192, 128); 249a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 250a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 251a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 252a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 253a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHA1And256BitAES-BC 254a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 255a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHAAnd256BitAESBC 256a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 257a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 258a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHAAnd256BitAESBC() 259a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 260a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEWithSHA1And256BitAES-CBC-BC", null, true, PKCS12, SHA1, 256, 128); 261a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 262a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 263a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 264a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 265a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHA256And128BitAES-BC 266a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 267a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHA256And128BitAESBC 268a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 269a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 270a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHA256And128BitAESBC() 271a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 272a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEWithSHA256And128BitAES-CBC-BC", null, true, PKCS12, SHA256, 128, 128); 273a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 274a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 275a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 276a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 277a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHA256And192BitAES-BC 278a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 279a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHA256And192BitAESBC 280a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 281a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 282a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHA256And192BitAESBC() 283a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 284a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEWithSHA256And192BitAES-CBC-BC", null, true, PKCS12, SHA256, 192, 128); 285a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 286a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 287a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 288a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 289a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithSHA256And256BitAES-BC 290a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 291a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithSHA256And256BitAESBC 292a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 293a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 294a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithSHA256And256BitAESBC() 295a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 296a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEWithSHA256And256BitAES-CBC-BC", null, true, PKCS12, SHA256, 256, 128); 297a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 298a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 299a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 300a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 301a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithMD5And128BitAES-OpenSSL 302a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 303a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithMD5And128BitAESCBCOpenSSL 304a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 305a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 306a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithMD5And128BitAESCBCOpenSSL() 307a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 308a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEWithMD5And128BitAES-CBC-OpenSSL", null, true, OPENSSL, MD5, 128, 128); 309a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 310a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 311a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 312a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 313a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithMD5And192BitAES-OpenSSL 314a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 315a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithMD5And192BitAESCBCOpenSSL 316a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 317a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 318a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithMD5And192BitAESCBCOpenSSL() 319a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 320a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEWithMD5And192BitAES-CBC-OpenSSL", null, true, OPENSSL, MD5, 192, 128); 321a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 322a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 323a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 324a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom /** 325a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom * PBEWithMD5And256BitAES-OpenSSL 326a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom */ 327a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom static public class PBEWithMD5And256BitAESCBCOpenSSL 328a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends PBESecretKeyFactory 329a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 330a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom public PBEWithMD5And256BitAESCBCOpenSSL() 331a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom { 332a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom super("PBEWithMD5And256BitAES-CBC-OpenSSL", null, true, OPENSSL, MD5, 256, 128); 333a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 334a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom } 335a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 336a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // BEGIN android-removed 3374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class AlgParamGen 3384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends BaseAlgorithmParameterGenerator 3394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 3404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // protected void engineInit( 3414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // AlgorithmParameterSpec genParamSpec, 3424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // SecureRandom random) 3434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // throws InvalidAlgorithmParameterException 3444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 3454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for AES parameter generation."); 3464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 3474c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 3484c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // protected AlgorithmParameters engineGenerateParameters() 3494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 3504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // byte[] iv = new byte[16]; 3514c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 3524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // if (random == null) 3534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 3544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // random = new SecureRandom(); 3554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 3564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 3574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // random.nextBytes(iv); 3584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 3594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // AlgorithmParameters params; 3604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 3614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // try 3624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 3634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // params = AlgorithmParameters.getInstance("AES", BouncyCastleProvider.PROVIDER_NAME); 3644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // params.init(new IvParameterSpec(iv)); 3654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 3664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // catch (Exception e) 3674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 3684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // throw new RuntimeException(e.getMessage()); 3694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 3704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 3714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // return params; 3724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 3734c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 3744c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 3754c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 3764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class AlgParams 3774c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends IvAlgorithmParameters 3784c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 3794c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom protected String engineToString() 3804c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 3814c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return "AES IV"; 3824c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 3834c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 3844c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 3855db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root public static class AlgParamsGCM 3865db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root extends BaseAlgorithmParameters 3875db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 3885db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root private GCMParameters gcmParams; 3895db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 3905db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root protected void engineInit(AlgorithmParameterSpec paramSpec) 3915db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throws InvalidParameterSpecException 3925db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 3935db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root if (gcmSpecClass != null) 3945db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 3955db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root try 3965db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 3975db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root Method tLen = gcmSpecClass.getDeclaredMethod("getTLen", new Class[0]); 3985db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root Method iv= gcmSpecClass.getDeclaredMethod("getIV", new Class[0]); 3995db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4005db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4015db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root gcmParams = new GCMParameters((byte[])iv.invoke(paramSpec, new Object[0]), ((Integer)tLen.invoke(paramSpec, new Object[0])).intValue()); 4025db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4035db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root catch (Exception e) 4045db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4055db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throw new InvalidParameterSpecException("Cannot process GCMParameterSpec."); 4065db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4075db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4085db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4095db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4105db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root protected void engineInit(byte[] params) 4115db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throws IOException 4125db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4135db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root gcmParams = GCMParameters.getInstance(params); 4145db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4155db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4165db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root protected void engineInit(byte[] params, String format) 4175db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throws IOException 4185db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4195db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root if (!isASN1FormatString(format)) 4205db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4215db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throw new IOException("unknown format specified"); 4225db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4235db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4245db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root gcmParams = GCMParameters.getInstance(params); 4255db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4265db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4275db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root protected byte[] engineGetEncoded() 4285db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throws IOException 4295db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4305db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root return gcmParams.getEncoded(); 4315db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4325db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4335db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root protected byte[] engineGetEncoded(String format) 4345db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throws IOException 4355db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4365db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root if (!isASN1FormatString(format)) 4375db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4385db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throw new IOException("unknown format specified"); 4395db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4405db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4415db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root return gcmParams.getEncoded(); 4425db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4435db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4445db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root protected String engineToString() 4455db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4465db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root return "GCM"; 4475db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4485db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4495db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root protected AlgorithmParameterSpec localEngineGetParameterSpec(Class paramSpec) 4505db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throws InvalidParameterSpecException 4515db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4525db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root if (gcmSpecClass != null) 4535db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4545db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root try 4555db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4565db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root Constructor constructor = gcmSpecClass.getConstructor(new Class[] { byte[].class, Integer.class }); 4575db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4585db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root return (AlgorithmParameterSpec)constructor.newInstance(new Object[] { gcmParams.getNonce(), Integers.valueOf(gcmParams.getIcvLen()) }); 4595db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4605db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root catch (NoSuchMethodException e) 4615db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4625db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throw new InvalidParameterSpecException("no constructor found!"); // should never happen 4635db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4645db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root catch (Exception e) 4655db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 4665db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throw new InvalidParameterSpecException("construction failed: " + e.getMessage()); // should never happen 4675db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4685db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4695db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4705db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root throw new InvalidParameterSpecException("unknown parameter spec: " + paramSpec.getName()); 4715db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4725db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 4735db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 4744c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class Mappings 475a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom extends SymmetricAlgorithmProvider 4764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 4774c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private static final String PREFIX = AES.class.getName(); 4784c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 4794c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom /** 4804c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * These three got introduced in some messages as a result of a typo in an 4814c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * early document. We don't produce anything using these OID values, but we'll 4824c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * read them. 4834c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom */ 4844c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private static final String wrongAES128 = "2.16.840.1.101.3.4.2"; 4854c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private static final String wrongAES192 = "2.16.840.1.101.3.4.22"; 4864c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private static final String wrongAES256 = "2.16.840.1.101.3.4.42"; 4874c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 4884c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Mappings() 4894c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 4904c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 4914c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 4924c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public void configure(ConfigurableProvider provider) 4934c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 4944c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("AlgorithmParameters.AES", PREFIX + "$AlgParams"); 4954c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES128, "AES"); 4964c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES192, "AES"); 4974c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES256, "AES"); 4984c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); 4994c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); 5004c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); 5014c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 5025db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root provider.addAlgorithm("AlgorithmParameters.GCM", PREFIX + "$AlgParamsGCM"); 5035db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes128_GCM, "GCM"); 5045db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_GCM, "GCM"); 5055db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_GCM, "GCM"); 5065db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 5074c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 5084c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("AlgorithmParameterGenerator.AES", PREFIX + "$AlgParamGen"); 5094c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES128, "AES"); 5104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES192, "AES"); 5114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES256, "AES"); 5124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); 5134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); 5144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); 5154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 5164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 5174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Cipher.AES", PREFIX + "$ECB"); 5184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES128, "AES"); 5194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES192, "AES"); 5204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES256, "AES"); 5214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 5224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$ECB"); 5234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$ECB"); 5244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$ECB"); 5254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$CBC"); 5264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$CBC"); 5274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$CBC"); 5284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$OFB"); 5294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$OFB"); 5304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$OFB"); 5314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$CFB"); 5324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$CFB"); 5334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$CFB"); 5344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 5354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Cipher.AESWRAP", PREFIX + "$Wrap"); 5364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes128_wrap, "AESWRAP"); 5374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes192_wrap, "AESWRAP"); 5384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes256_wrap, "AESWRAP"); 5394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 5404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher.AESRFC3211WRAP", PREFIX + "$RFC3211Wrap"); 5414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 5424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 5435db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root provider.addAlgorithm("Cipher.GCM", PREFIX + "$GCM"); 5445db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes128_GCM, "GCM"); 5455db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes192_GCM, "GCM"); 5465db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes256_GCM, "GCM"); 5475db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 5484c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("KeyGenerator.AES", PREFIX + "$KeyGen"); 5494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 5504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + wrongAES128, PREFIX + "$KeyGen128"); 5514c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + wrongAES192, PREFIX + "$KeyGen192"); 5524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + wrongAES256, PREFIX + "$KeyGen256"); 5534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$KeyGen128"); 5544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$KeyGen128"); 5554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$KeyGen128"); 5564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$KeyGen128"); 5574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$KeyGen192"); 5584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$KeyGen192"); 5594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$KeyGen192"); 5604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$KeyGen192"); 5614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$KeyGen256"); 5624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$KeyGen256"); 5634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$KeyGen256"); 5644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$KeyGen256"); 5654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator.AESWRAP", PREFIX + "$KeyGen"); 5664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_wrap, PREFIX + "$KeyGen128"); 5674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_wrap, PREFIX + "$KeyGen192"); 5684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_wrap, PREFIX + "$KeyGen256"); 5694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 5704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Mac.AESCMAC", PREFIX + "$AESCMAC"); 5714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 572a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 573a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PBEWITHSHAAND128BITAES-CBC-BC"); 574a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PBEWITHSHAAND192BITAES-CBC-BC"); 575a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.getId(), "PBEWITHSHAAND256BITAES-CBC-BC"); 576a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), "PBEWITHSHA256AND128BITAES-CBC-BC"); 577a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PBEWITHSHA256AND192BITAES-CBC-BC"); 578a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PBEWITHSHA256AND256BITAES-CBC-BC"); 579a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 580a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHSHAAND128BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 581a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHSHAAND192BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 582a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHSHAAND256BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 583a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHSHA256AND128BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 584a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHSHA256AND192BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 585a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHSHA256AND256BITAES-CBC-BC", PREFIX + "$PBEWithAESCBC"); 586a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 587a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); 588a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); 589a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); 590a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); 591a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); 592a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); 593a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-256AND128BITAES-CBC-BC","PBEWITHSHA256AND128BITAES-CBC-BC"); 594a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-256AND192BITAES-CBC-BC","PBEWITHSHA256AND192BITAES-CBC-BC"); 595a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA-256AND256BITAES-CBC-BC","PBEWITHSHA256AND256BITAES-CBC-BC"); 596a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 597a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHMD5AND128BITAES-CBC-OPENSSL", PREFIX + "$PBEWithAESCBC"); 598a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHMD5AND192BITAES-CBC-OPENSSL", PREFIX + "$PBEWithAESCBC"); 599a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Cipher.PBEWITHMD5AND256BITAES-CBC-OPENSSL", PREFIX + "$PBEWithAESCBC"); 600a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 601a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5AND128BITAES-CBC-OPENSSL", PREFIX + "$PBEWithMD5And128BitAESCBCOpenSSL"); 602a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5AND192BITAES-CBC-OPENSSL", PREFIX + "$PBEWithMD5And192BitAESCBCOpenSSL"); 603a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5AND256BITAES-CBC-OPENSSL", PREFIX + "$PBEWithMD5And256BitAESCBCOpenSSL"); 604a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 605a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND128BITAES-CBC-BC", PREFIX + "$PBEWithSHAAnd128BitAESBC"); 606a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND192BITAES-CBC-BC", PREFIX + "$PBEWithSHAAnd192BitAESBC"); 607a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND256BITAES-CBC-BC", PREFIX + "$PBEWithSHAAnd256BitAESBC"); 608a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA256AND128BITAES-CBC-BC", PREFIX + "$PBEWithSHA256And128BitAESBC"); 609a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA256AND192BITAES-CBC-BC", PREFIX + "$PBEWithSHA256And192BitAESBC"); 610a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA256AND256BITAES-CBC-BC", PREFIX + "$PBEWithSHA256And256BitAESBC"); 611a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); 612a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); 613a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); 614a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-1AND128BITAES-CBC-BC","PBEWITHSHAAND128BITAES-CBC-BC"); 615a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-1AND192BITAES-CBC-BC","PBEWITHSHAAND192BITAES-CBC-BC"); 616a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-1AND256BITAES-CBC-BC","PBEWITHSHAAND256BITAES-CBC-BC"); 617a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-256AND128BITAES-CBC-BC","PBEWITHSHA256AND128BITAES-CBC-BC"); 618a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-256AND192BITAES-CBC-BC","PBEWITHSHA256AND192BITAES-CBC-BC"); 619a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA-256AND256BITAES-CBC-BC","PBEWITHSHA256AND256BITAES-CBC-BC"); 620a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PBEWITHSHAAND128BITAES-CBC-BC"); 621a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PBEWITHSHAAND192BITAES-CBC-BC"); 622a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.getId(), "PBEWITHSHAAND256BITAES-CBC-BC"); 623a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), "PBEWITHSHA256AND128BITAES-CBC-BC"); 624a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PBEWITHSHA256AND192BITAES-CBC-BC"); 625a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PBEWITHSHA256AND256BITAES-CBC-BC"); 626a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 627a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITAES-CBC-BC", "PKCS12PBE"); 628a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND192BITAES-CBC-BC", "PKCS12PBE"); 629a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND256BITAES-CBC-BC", "PKCS12PBE"); 630a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA256AND128BITAES-CBC-BC", "PKCS12PBE"); 631a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA256AND192BITAES-CBC-BC", "PKCS12PBE"); 632a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA256AND256BITAES-CBC-BC", "PKCS12PBE"); 633a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA1AND128BITAES-CBC-BC","PKCS12PBE"); 634a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA1AND192BITAES-CBC-BC","PKCS12PBE"); 635a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA1AND256BITAES-CBC-BC","PKCS12PBE"); 636a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-1AND128BITAES-CBC-BC","PKCS12PBE"); 637a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-1AND192BITAES-CBC-BC","PKCS12PBE"); 638a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-1AND256BITAES-CBC-BC","PKCS12PBE"); 639a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND128BITAES-CBC-BC","PKCS12PBE"); 640a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND192BITAES-CBC-BC","PKCS12PBE"); 641a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND256BITAES-CBC-BC","PKCS12PBE"); 642a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 643a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PKCS12PBE"); 644a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PKCS12PBE"); 645a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.getId(), "PKCS12PBE"); 646a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), "PKCS12PBE"); 647a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PKCS12PBE"); 648a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PKCS12PBE"); 649a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom 650a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // BEGIN android-removed 651a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // addGMacAlgorithm(provider, "AES", PREFIX + "$AESGMAC", PREFIX + "$KeyGen128"); 6525db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root // addPoly1305Algorithm(provider, "AES", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen"); 653a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom // END android-removed 6544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 6554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 6565db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 6575db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root private static Class lookup(String className) 6585db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 6595db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root try 6605db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 6615db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root Class def = AES.class.getClassLoader().loadClass(className); 6625db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root 6635db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root return def; 6645db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 6655db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root catch (Exception e) 6665db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root { 6675db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root return null; 6685db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 6695db505e1f6a68c8d5dfdb0fed0b8607dea7bed96Kenny Root } 6704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom} 671