14c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompackage org.bouncycastle.jcajce.provider.symmetric; 24c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 34c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 44c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import java.security.AlgorithmParameters; 54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import java.security.InvalidAlgorithmParameterException; 64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport java.security.SecureRandom; 84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 94c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import java.security.spec.AlgorithmParameterSpec; 104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// 114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import javax.crypto.spec.IvParameterSpec; 124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.nist.NISTObjectIdentifiers; 154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.BufferedBlockCipher; 164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.CipherKeyGenerator; 174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.engines.AESFastEngine; 184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.engines.AESWrapEngine; 194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import org.bouncycastle.crypto.engines.RFC3211WrapEngine; 214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import org.bouncycastle.crypto.macs.CMac; 224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.modes.CBCBlockCipher; 244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.modes.CFBBlockCipher; 254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.crypto.modes.OFBBlockCipher; 264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.config.ConfigurableProvider; 274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; 294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; 314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; 324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; 344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher; 364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; 374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.jcajce.provider.util.AlgorithmProvider; 384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// BEGIN android-removed 394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// import org.bouncycastle.jce.provider.BouncyCastleProvider; 404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom// END android-removed 414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompublic final class AES 434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom{ 444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private AES() 454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 474c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 484c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class ECB 494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseBlockCipher 504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 514c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ECB() 524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new AESFastEngine()); 544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class CBC 584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseBlockCipher 594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public CBC() 614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new CBCBlockCipher(new AESFastEngine()), 128); 634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom static public class CFB 674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseBlockCipher 684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public CFB() 704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new BufferedBlockCipher(new CFBBlockCipher(new AESFastEngine(), 128)), 128); 724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 734c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 744c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 754c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom static public class OFB 764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseBlockCipher 774c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 784c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public OFB() 794c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 804c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new BufferedBlockCipher(new OFBBlockCipher(new AESFastEngine(), 128)), 128); 814c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 824c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 834c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 844c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 854c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class AESCMAC 864c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends BaseMac 874c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 884c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public AESCMAC() 894c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 904c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // super(new CMac(new AESFastEngine())); 914c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 924c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 934c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 944c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 954c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom static public class Wrap 964c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseWrapCipher 974c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 984c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Wrap() 994c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 1004c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super(new AESWrapEngine()); 1014c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1024c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1034c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 1044c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 1054c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class RFC3211Wrap 1064c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends BaseWrapCipher 1074c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1084c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public RFC3211Wrap() 1094c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // super(new RFC3211WrapEngine(new AESFastEngine()), 16); 1114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 1144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 1154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class KeyGen 1164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends BaseKeyGenerator 1174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 1184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public KeyGen() 1194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 1204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom this(192); 1214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 1234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public KeyGen(int keySize) 1244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 1254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom super("AES", keySize, new CipherKeyGenerator()); 1264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 1284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 1294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 1304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class KeyGen128 1314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends KeyGen 1324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public KeyGen128() 1344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // super(128); 1364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 1394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class KeyGen192 1404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends KeyGen 1414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public KeyGen192() 1434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // super(192); 1454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1474c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 1484c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class KeyGen256 1494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends KeyGen 1504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1514c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public KeyGen256() 1524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // super(256); 1544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 1574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // public static class AlgParamGen 1584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // extends BaseAlgorithmParameterGenerator 1594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // protected void engineInit( 1614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // AlgorithmParameterSpec genParamSpec, 1624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // SecureRandom random) 1634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // throws InvalidAlgorithmParameterException 1644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for AES parameter generation."); 1664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 1684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // protected AlgorithmParameters engineGenerateParameters() 1694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // byte[] iv = new byte[16]; 1714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 1724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // if (random == null) 1734c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1744c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // random = new SecureRandom(); 1754c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 1774c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // random.nextBytes(iv); 1784c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 1794c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // AlgorithmParameters params; 1804c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 1814c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // try 1824c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1834c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // params = AlgorithmParameters.getInstance("AES", BouncyCastleProvider.PROVIDER_NAME); 1844c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // params.init(new IvParameterSpec(iv)); 1854c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1864c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // catch (Exception e) 1874c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // { 1884c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // throw new RuntimeException(e.getMessage()); 1894c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1904c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 1914c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // return params; 1924c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1934c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // } 1944c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 1954c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 1964c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class AlgParams 1974c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends IvAlgorithmParameters 1984c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 1994c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom protected String engineToString() 2004c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 2014c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return "AES IV"; 2024c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 2034c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 2044c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 2054c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static class Mappings 2064c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends AlgorithmProvider 2074c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 2084c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private static final String PREFIX = AES.class.getName(); 2094c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 2104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom /** 2114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * These three got introduced in some messages as a result of a typo in an 2124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * early document. We don't produce anything using these OID values, but we'll 2134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * read them. 2144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom */ 2154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private static final String wrongAES128 = "2.16.840.1.101.3.4.2"; 2164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private static final String wrongAES192 = "2.16.840.1.101.3.4.22"; 2174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private static final String wrongAES256 = "2.16.840.1.101.3.4.42"; 2184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 2194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public Mappings() 2204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 2214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 2224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 2234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public void configure(ConfigurableProvider provider) 2244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 2254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("AlgorithmParameters.AES", PREFIX + "$AlgParams"); 2264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES128, "AES"); 2274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES192, "AES"); 2284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + wrongAES256, "AES"); 2294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); 2304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); 2314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); 2324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 2334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 2344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("AlgorithmParameterGenerator.AES", PREFIX + "$AlgParamGen"); 2354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES128, "AES"); 2364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES192, "AES"); 2374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES256, "AES"); 2384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); 2394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); 2404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); 2414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 2424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 2434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Cipher.AES", PREFIX + "$ECB"); 2444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES128, "AES"); 2454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES192, "AES"); 2464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES256, "AES"); 2474c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 2484c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$ECB"); 2494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$ECB"); 2504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$ECB"); 2514c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$CBC"); 2524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$CBC"); 2534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$CBC"); 2544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$OFB"); 2554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$OFB"); 2564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$OFB"); 2574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$CFB"); 2584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$CFB"); 2594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$CFB"); 2604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 2614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Cipher.AESWRAP", PREFIX + "$Wrap"); 2624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes128_wrap, "AESWRAP"); 2634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes192_wrap, "AESWRAP"); 2644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes256_wrap, "AESWRAP"); 2654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 2664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Cipher.AESRFC3211WRAP", PREFIX + "$RFC3211Wrap"); 2674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 2684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 2694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom provider.addAlgorithm("KeyGenerator.AES", PREFIX + "$KeyGen"); 2704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // BEGIN android-removed 2714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + wrongAES128, PREFIX + "$KeyGen128"); 2724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + wrongAES192, PREFIX + "$KeyGen192"); 2734c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + wrongAES256, PREFIX + "$KeyGen256"); 2744c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$KeyGen128"); 2754c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$KeyGen128"); 2764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$KeyGen128"); 2774c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$KeyGen128"); 2784c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$KeyGen192"); 2794c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$KeyGen192"); 2804c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$KeyGen192"); 2814c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$KeyGen192"); 2824c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$KeyGen256"); 2834c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$KeyGen256"); 2844c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$KeyGen256"); 2854c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$KeyGen256"); 2864c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator.AESWRAP", PREFIX + "$KeyGen"); 2874c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_wrap, PREFIX + "$KeyGen128"); 2884c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_wrap, PREFIX + "$KeyGen192"); 2894c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_wrap, PREFIX + "$KeyGen256"); 2904c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // 2914c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // provider.addAlgorithm("Mac.AESCMAC", PREFIX + "$AESCMAC"); 2924c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom // END android-removed 2934c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 2944c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 2954c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom} 296