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