1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.bouncycastle.jce.provider;
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.AlgorithmParameterGeneratorSpi;
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.AlgorithmParameters;
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.InvalidAlgorithmParameterException;
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.SecureRandom;
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.spec.AlgorithmParameterSpec;
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.spec.DSAParameterSpec;
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.spec.DHGenParameterSpec;
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.spec.DHParameterSpec;
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.spec.IvParameterSpec;
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.spec.RC2ParameterSpec;
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.bouncycastle.crypto.generators.DHParametersGenerator;
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.bouncycastle.crypto.generators.DSAParametersGenerator;
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// BEGIN android-removed
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// import org.bouncycastle.crypto.generators.ElGamalParametersGenerator;
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// import org.bouncycastle.crypto.generators.GOST3410ParametersGenerator;
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// END android-removed
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.bouncycastle.crypto.params.DHParameters;
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.bouncycastle.crypto.params.DSAParameters;
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// BEGIN android-removed
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// import org.bouncycastle.crypto.params.ElGamalParameters;
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// import org.bouncycastle.crypto.params.GOST3410Parameters;
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// import org.bouncycastle.jce.spec.GOST3410ParameterSpec;
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// import org.bouncycastle.jce.spec.GOST3410PublicKeyParameterSetSpec;
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// END android-removed
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic abstract class JDKAlgorithmParameterGenerator
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    extends AlgorithmParameterGeneratorSpi
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project{
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected SecureRandom  random;
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected int           strength = 1024;
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void engineInit(
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int             strength,
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        SecureRandom    random)
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.strength = strength;
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.random = random;
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static class DH
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        extends JDKAlgorithmParameterGenerator
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private int l = 0;
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected void engineInit(
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameterSpec  genParamSpec,
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            SecureRandom            random)
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throws InvalidAlgorithmParameterException
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (!(genParamSpec instanceof DHGenParameterSpec))
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                throw new InvalidAlgorithmParameterException("DH parameter generator requires a DHGenParameterSpec for initialisation");
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            DHGenParameterSpec  spec = (DHGenParameterSpec)genParamSpec;
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            this.strength = spec.getPrimeSize();
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            this.l = spec.getExponentSize();
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            this.random = random;
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected AlgorithmParameters engineGenerateParameters()
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            DHParametersGenerator        pGen = new DHParametersGenerator();
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (random != null)
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                pGen.init(strength, 20, random);
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            else
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                pGen.init(strength, 20, new SecureRandom());
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            DHParameters                p = pGen.generateParameters();
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameters params;
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params = AlgorithmParameters.getInstance("DH", "BC");
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params.init(new DHParameterSpec(p.getP(), p.getG(), l));
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            catch (Exception e)
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                throw new RuntimeException(e.getMessage());
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return params;
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static class DSA
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        extends JDKAlgorithmParameterGenerator
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected void engineInit(
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameterSpec  genParamSpec,
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            SecureRandom            random)
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throws InvalidAlgorithmParameterException
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DSA parameter generation.");
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected AlgorithmParameters engineGenerateParameters()
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            DSAParametersGenerator pGen = new DSAParametersGenerator();
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (random != null)
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                pGen.init(strength, 20, random);
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            else
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                pGen.init(strength, 20, new SecureRandom());
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            DSAParameters p = pGen.generateParameters();
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameters params;
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params = AlgorithmParameters.getInstance("DSA", "BC");
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params.init(new DSAParameterSpec(p.getP(), p.getQ(), p.getG()));
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            catch (Exception e)
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                throw new RuntimeException(e.getMessage());
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return params;
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// BEGIN android-removed
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//    public static class GOST3410
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        extends JDKAlgorithmParameterGenerator
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//    {
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        protected void engineInit(
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                AlgorithmParameterSpec  genParamSpec,
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                SecureRandom            random)
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        throws InvalidAlgorithmParameterException
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        {
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for GOST3410 parameter generation.");
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        }
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        protected AlgorithmParameters engineGenerateParameters()
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        {
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            GOST3410ParametersGenerator pGen = new GOST3410ParametersGenerator();
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            if (random != null)
155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            {
156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                pGen.init(strength, 2, random);
157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            }
158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            else
159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            {
160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                pGen.init(strength, 2, new SecureRandom());
161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            }
162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            GOST3410Parameters p = pGen.generateParameters();
164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            AlgorithmParameters params;
166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            try
168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            {
169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                params = AlgorithmParameters.getInstance("GOST3410", "BC");
170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                params.init(new GOST3410ParameterSpec(new GOST3410PublicKeyParameterSetSpec(p.getP(), p.getQ(), p.getA())));
171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            }
172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            catch (Exception e)
173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            {
174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                throw new RuntimeException(e.getMessage());
175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            }
176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            return params;
178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        }
179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//    }
180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//    public static class ElGamal
182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        extends JDKAlgorithmParameterGenerator
183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//    {
184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        private int l = 0;
185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        protected void engineInit(
187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            AlgorithmParameterSpec  genParamSpec,
188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            SecureRandom            random)
189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            throws InvalidAlgorithmParameterException
190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        {
191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            if (!(genParamSpec instanceof DHGenParameterSpec))
192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            {
193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                throw new InvalidAlgorithmParameterException("DH parameter generator requires a DHGenParameterSpec for initialisation");
194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            }
195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            DHGenParameterSpec  spec = (DHGenParameterSpec)genParamSpec;
196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            this.strength = spec.getPrimeSize();
198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            this.l = spec.getExponentSize();
199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            this.random = random;
200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        }
201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        protected AlgorithmParameters engineGenerateParameters()
203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        {
204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            ElGamalParametersGenerator pGen = new ElGamalParametersGenerator();
205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            if (random != null)
207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            {
208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                pGen.init(strength, 20, random);
209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            }
210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            else
211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            {
212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                pGen.init(strength, 20, new SecureRandom());
213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            }
214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            ElGamalParameters p = pGen.generateParameters();
216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            AlgorithmParameters params;
218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            try
220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            {
221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                params = AlgorithmParameters.getInstance("ElGamal", "BC");
222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                params.init(new DHParameterSpec(p.getP(), p.getG(), l));
223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            }
224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            catch (Exception e)
225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            {
226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//                throw new RuntimeException(e.getMessage());
227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            }
228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//
229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//            return params;
230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        }
231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//    }
232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// END android-removed
233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static class DES
235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        extends JDKAlgorithmParameterGenerator
236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected void engineInit(
238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameterSpec  genParamSpec,
239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            SecureRandom            random)
240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throws InvalidAlgorithmParameterException
241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation.");
243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected AlgorithmParameters engineGenerateParameters()
246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            byte[]  iv = new byte[8];
248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (random == null)
250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                random = new SecureRandom();
252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            random.nextBytes(iv);
255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameters params;
257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try
259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params = AlgorithmParameters.getInstance("DES", "BC");
261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params.init(new IvParameterSpec(iv));
262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            catch (Exception e)
264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                throw new RuntimeException(e.getMessage());
266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return params;
269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static class RC2
273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        extends JDKAlgorithmParameterGenerator
274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        RC2ParameterSpec    spec = null;
276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected void engineInit(
278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameterSpec  genParamSpec,
279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            SecureRandom            random)
280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throws InvalidAlgorithmParameterException
281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (genParamSpec instanceof RC2ParameterSpec)
283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                spec = (RC2ParameterSpec)genParamSpec;
285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                return;
286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for RC2 parameter generation.");
289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected AlgorithmParameters engineGenerateParameters()
292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameters params;
294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (spec == null)
296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                byte[]  iv = new byte[8];
298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                if (random == null)
300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                {
301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    random = new SecureRandom();
302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                random.nextBytes(iv);
305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                try
307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                {
308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    params = AlgorithmParameters.getInstance("RC2", "BC");
309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    params.init(new IvParameterSpec(iv));
310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                catch (Exception e)
312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                {
313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    throw new RuntimeException(e.getMessage());
314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            else
317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                try
319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                {
320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    params = AlgorithmParameters.getInstance("RC2", "BC");
321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    params.init(spec);
322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                catch (Exception e)
324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                {
325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    throw new RuntimeException(e.getMessage());
326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return params;
330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static class AES
334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        extends JDKAlgorithmParameterGenerator
335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected void engineInit(
337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameterSpec  genParamSpec,
338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            SecureRandom            random)
339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throws InvalidAlgorithmParameterException
340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for AES parameter generation.");
342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected AlgorithmParameters engineGenerateParameters()
345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            byte[]  iv = new byte[16];
347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (random == null)
349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                random = new SecureRandom();
351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            random.nextBytes(iv);
354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameters params;
356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try
358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params = AlgorithmParameters.getInstance("AES", "BC");
360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params.init(new IvParameterSpec(iv));
361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            catch (Exception e)
363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                throw new RuntimeException(e.getMessage());
365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return params;
368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static class IDEA
372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        extends JDKAlgorithmParameterGenerator
373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected void engineInit(
375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameterSpec  genParamSpec,
376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            SecureRandom            random)
377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throws InvalidAlgorithmParameterException
378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for IDEA parameter generation.");
380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected AlgorithmParameters engineGenerateParameters()
383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            byte[]  iv = new byte[8];
385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (random == null)
387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                random = new SecureRandom();
389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            random.nextBytes(iv);
392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameters params;
394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try
396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params = AlgorithmParameters.getInstance("IDEA", "BC");
398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params.init(new IvParameterSpec(iv));
399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            catch (Exception e)
401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                throw new RuntimeException(e.getMessage());
403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return params;
406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static class CAST5
410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        extends JDKAlgorithmParameterGenerator
411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected void engineInit(
413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameterSpec  genParamSpec,
414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            SecureRandom            random)
415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throws InvalidAlgorithmParameterException
416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for CAST5 parameter generation.");
418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected AlgorithmParameters engineGenerateParameters()
421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            byte[]  iv = new byte[8];
423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (random == null)
425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                random = new SecureRandom();
427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            random.nextBytes(iv);
430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            AlgorithmParameters params;
432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try
434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params = AlgorithmParameters.getInstance("CAST5", "BC");
436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                params.init(new IvParameterSpec(iv));
437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            catch (Exception e)
439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                throw new RuntimeException(e.getMessage());
441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return params;
444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
447