OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / libcore / luni / src / test / java / org / apache / harmony / security / tests / java / security / KeyPairGenerator4Test.java
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 package org.apache.harmony.security.tests.java.security;
19
20 import dalvik.annotation.TestTargetClass;
21 import dalvik.annotation.TestTargets;
22 import dalvik.annotation.TestLevel;
23 import dalvik.annotation.TestTargetNew;
24
25 import java.security.KeyPairGenerator;
26 import java.security.Provider;
27 import java.security.SecureRandom;
28 import java.security.Security;
29 import java.security.spec.DSAParameterSpec;
30 import java.security.interfaces.DSAPublicKey;
31 import java.security.interfaces.DSAParams;
32
33 @TestTargetClass(KeyPairGenerator.class)
34 public class KeyPairGenerator4Test extends junit.framework.TestCase {
35
36     /**
37      * @tests java.security.KeyPairGenerator#genKeyPair()
38      */
39     @TestTargetNew(
40         level = TestLevel.COMPLETE,
41         notes = "",
42         method = "genKeyPair",
43         args = {}
44     )
45     public void test_genKeyPair() throws Exception {
46         KeyPairGenerator gen = KeyPairGenerator.getInstance("DSA");
47         gen.initialize(1024);
48         assertNotNull("KeyPair is null", gen.genKeyPair());
49     }
50
51     /**
52      * @tests java.security.KeyPairGenerator#getAlgorithm()
53      */
54     @TestTargetNew(
55         level = TestLevel.COMPLETE,
56         notes = "",
57         method = "getAlgorithm",
58         args = {}
59     )
60     public void test_getAlgorithm() throws Exception {
61         String alg = KeyPairGenerator.getInstance("DSA").getAlgorithm();
62         assertEquals("getAlgorithm returned unexpected value", "DSA", alg);
63     }
64
65     /**
66      * @tests java.security.KeyPairGenerator#getInstance(java.lang.String)
67      */
68     @TestTargetNew(
69         level = TestLevel.PARTIAL,
70         notes = "Verification of other string parameters and exception cases missed",
71         method = "getInstance",
72         args = {java.lang.String.class}
73     )
74     public void test_getInstanceLjava_lang_String() throws Exception {
75         KeyPairGenerator.getInstance("DSA");
76     }
77
78     /**
79      * @tests java.security.KeyPairGenerator#getInstance(java.lang.String,
80      *        java.lang.String)
81      */
82     @TestTargetNew(
83         level = TestLevel.PARTIAL,
84         notes = "NoSuchAlgorithmException, NoSuchProviderException checking missed",
85         method = "getInstance",
86         args = {java.lang.String.class, java.lang.String.class}
87     )
88     public void test_getInstanceLjava_lang_StringLjava_lang_String()
89             throws Exception {
90
91         // Test1: Test with named provider
92         Provider[] providers = Security.getProviders("KeyPairGenerator.DSA");
93
94         for (int i = 0; i < providers.length; i++) {
95             KeyPairGenerator.getInstance("DSA", providers[i].getName());
96         }// end for
97
98         // Test2: Test with empty provider name - should raise
99         // IllegalArgumentException
100         try {
101             KeyPairGenerator.getInstance("DSA", "");
102             fail("Should have thrown IllegalArgumentException");
103         } catch (IllegalArgumentException e) {
104             // expected
105         }
106     }
107
108     /**
109      * @tests java.security.KeyPairGenerator#getProvider()
110      */
111     @TestTargetNew(
112         level = TestLevel.COMPLETE,
113         notes = "",
114         method = "getProvider",
115         args = {}
116     )
117     public void test_getProvider() throws Exception {
118         Provider p = KeyPairGenerator.getInstance("DSA").getProvider();
119         assertNotNull("provider is null", p);
120     }
121
122     /**
123      * @tests java.security.KeyPairGenerator#initialize(int)
124      */
125     @TestTargetNew(
126         level = TestLevel.PARTIAL,
127         notes = "InvalidParameterException checking missed",
128         method = "initialize",
129         args = {int.class}
130     )
131     public void test_initializeI() throws Exception {
132         KeyPairGenerator keyPair = KeyPairGenerator.getInstance("DSA");
133         keyPair.initialize(1024);
134     }
135
136     /**
137      * @tests java.security.KeyPairGenerator#initialize(int,
138      *        java.security.SecureRandom)
139      */
140     @TestTargetNew(
141         level = TestLevel.PARTIAL,
142         notes = "InvalidParameterException checking missed",
143         method = "initialize",
144         args = {int.class, java.security.SecureRandom.class}
145     )
146     public void test_initializeILjava_security_SecureRandom() throws Exception {
147         KeyPairGenerator keyPair = KeyPairGenerator.getInstance("DSA");
148         keyPair.initialize(1024, new SecureRandom());
149     }
150
151
152     /**
153      * @tests java.security.KeyPairGenerator#initialize(java.security.spec.AlgorithmParameterSpec)
154      */
155     @TestTargetNew(
156         level = TestLevel.PARTIAL,
157         notes = "InvalidAlgorithmParameterException checking missed",
158         method = "initialize",
159         args = {java.security.spec.AlgorithmParameterSpec.class}
160     )
161     public void test_initializeLjava_security_spec_AlgorithmParameterSpec()
162             throws Exception {
163         // create DSAParams
164         KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA");
165         keyPairGenerator.initialize(1024);
166         DSAPublicKey key = (DSAPublicKey) keyPairGenerator.genKeyPair()
167                 .getPublic();
168         DSAParams params = key.getParams();
169
170         KeyPairGenerator keyPair = KeyPairGenerator.getInstance("DSA");
171         keyPair.initialize(new DSAParameterSpec(params.getP(), params.getQ(),
172                 params.getG()));
173     }
174
175     /**
176      * @tests java.security.KeyPairGenerator#initialize(java.security.spec.AlgorithmParameterSpec,
177      *        java.security.SecureRandom)
178      */
179     @TestTargetNew(
180         level = TestLevel.PARTIAL,
181         notes = "InvalidAlgorithmParameterException checking missed",
182         method = "initialize",
183         args = {java.security.spec.AlgorithmParameterSpec.class, java.security.SecureRandom.class}
184     )
185     public void test_initializeLjava_security_spec_AlgorithmParameterSpecLjava_security_SecureRandom()
186             throws Exception {
187         // create DSAParams
188         KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA");
189         keyPairGenerator.initialize(1024);
190         DSAPublicKey key = (DSAPublicKey) keyPairGenerator.genKeyPair()
191                 .getPublic();
192         DSAParams params = key.getParams();
193
194         KeyPairGenerator keyPair = KeyPairGenerator.getInstance("DSA");
195         keyPair.initialize(new DSAParameterSpec(params.getP(), params.getQ(),
196                 params.getG()), new SecureRandom());
197     }
198 }