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/**
19* @author Vladimir N. Molotkov
20* @version $Revision$
21*/
22
23package tests.security.spec;
24
25import junit.framework.TestCase;
26
27import java.math.BigInteger;
28import java.security.spec.KeySpec;
29import java.security.spec.RSAPrivateCrtKeySpec;
30import java.security.spec.RSAPrivateKeySpec;
31
32/**
33 * Tests for <code>RSAPrivateCrtKeySpec</code> class fields and methods
34 *
35 */
36public class RSAPrivateCrtKeySpecTest extends TestCase {
37
38    /**
39     * Test #1 for <code>RSAPrivateCrtKeySpec</code> constructor
40     * Assertion: Constructs <code>RSAPrivateCrtKeySpec</code>
41     * object using valid parameters
42     */
43    public final void testRSAPrivateCrtKeySpec01() {
44        KeySpec ks = new RSAPrivateCrtKeySpec(
45                BigInteger.ONE,
46                BigInteger.ONE,
47                BigInteger.ONE,
48                BigInteger.ONE,
49                BigInteger.ONE,
50                BigInteger.ONE,
51                BigInteger.ONE,
52                BigInteger.ONE);
53        assertTrue(ks instanceof RSAPrivateCrtKeySpec);
54    }
55
56    /**
57     * Test #2 for <code>RSAPrivateCrtKeySpec</code> constructor
58     * Assertion: Constructs <code>RSAPrivateCrtKeySpec</code>
59     * object using valid parameters
60     */
61    public final void testRSAPrivateCrtKeySpec02() {
62        KeySpec ks = new RSAPrivateCrtKeySpec(
63                BigInteger.ONE,
64                BigInteger.ONE,
65                BigInteger.ONE,
66                BigInteger.ONE,
67                BigInteger.ONE,
68                BigInteger.ONE,
69                BigInteger.ONE,
70                BigInteger.ONE);
71        assertTrue(ks instanceof RSAPrivateKeySpec);
72    }
73
74    /**
75     * Test #3 for <code>RSAPrivateCrtKeySpec</code> constructor
76     * Assertion: Constructs <code>RSAPrivateCrtKeySpec</code>
77     * object using valid parameters
78     */
79    public final void testRSAPrivateCrtKeySpec03() {
80        new RSAPrivateCrtKeySpec(
81                null,
82                null,
83                null,
84                null,
85                null,
86                null,
87                null,
88                null);
89    }
90
91    /**
92     * Test for <code>getCrtCoefficient()</code> method<br>
93     * Assertion: returns crt coefficient
94     */
95    public final void testGetCrtCoefficient() {
96        RSAPrivateCrtKeySpec ks = new RSAPrivateCrtKeySpec(
97                BigInteger.ONE,
98                BigInteger.ONE,
99                BigInteger.ONE,
100                BigInteger.ONE,
101                BigInteger.ONE,
102                BigInteger.ONE,
103                BigInteger.ONE,
104                BigInteger.valueOf(5L));
105        assertTrue(BigInteger.valueOf(5L).equals(ks.getCrtCoefficient()));
106    }
107
108    /**
109     * Test for <code>getPrimeExponentP()</code> method<br>
110     * Assertion: returns prime exponent P
111     */
112    public final void testGetPrimeExponentP() {
113        RSAPrivateCrtKeySpec ks = new RSAPrivateCrtKeySpec(
114                BigInteger.ONE,
115                BigInteger.ONE,
116                BigInteger.ONE,
117                BigInteger.ONE,
118                BigInteger.ONE,
119                BigInteger.valueOf(5L),
120                BigInteger.ONE,
121                BigInteger.ONE);
122        assertTrue(BigInteger.valueOf(5L).equals(ks.getPrimeExponentP()));
123    }
124
125    /**
126     * Test for <code>getPrimeExponentQ()</code> method<br>
127     * Assertion: returns prime exponent Q
128     */
129    public final void testGetPrimeExponentQ() {
130        RSAPrivateCrtKeySpec ks = new RSAPrivateCrtKeySpec(
131                BigInteger.ONE,
132                BigInteger.ONE,
133                BigInteger.ONE,
134                BigInteger.ONE,
135                BigInteger.ONE,
136                BigInteger.ONE,
137                BigInteger.valueOf(5L),
138                BigInteger.ONE);
139        assertTrue(BigInteger.valueOf(5L).equals(ks.getPrimeExponentQ()));
140    }
141
142    /**
143     * Test for <code>getPrimeP()</code> method<br>
144     * Assertion: returns prime P
145     */
146    public final void testGetPrimeP() {
147        RSAPrivateCrtKeySpec ks = new RSAPrivateCrtKeySpec(
148                BigInteger.ONE,
149                BigInteger.ONE,
150                BigInteger.ONE,
151                BigInteger.valueOf(5L),
152                BigInteger.ONE,
153                BigInteger.ONE,
154                BigInteger.ONE,
155                BigInteger.ONE);
156        assertTrue(BigInteger.valueOf(5L).equals(ks.getPrimeP()));
157    }
158
159    /**
160     * Test for <code>getPrimeQ()</code> method<br>
161     * Assertion: returns prime Q
162     */
163    public final void testGetPrimeQ() {
164        RSAPrivateCrtKeySpec ks = new RSAPrivateCrtKeySpec(
165                BigInteger.ONE,
166                BigInteger.ONE,
167                BigInteger.ONE,
168                BigInteger.ONE,
169                BigInteger.valueOf(5L),
170                BigInteger.ONE,
171                BigInteger.ONE,
172                BigInteger.ONE);
173        assertTrue(BigInteger.valueOf(5L).equals(ks.getPrimeQ()));
174    }
175
176    /**
177     * Test for <code>getPublicExponent()</code> method<br>
178     * Assertion: returns public exponent
179     */
180    public final void testGetPublicExponent() {
181        RSAPrivateCrtKeySpec ks = new RSAPrivateCrtKeySpec(
182                BigInteger.ONE,
183                BigInteger.valueOf(5L),
184                BigInteger.ONE,
185                BigInteger.ONE,
186                BigInteger.ONE,
187                BigInteger.ONE,
188                BigInteger.ONE,
189                BigInteger.ONE);
190        assertTrue(BigInteger.valueOf(5L).equals(ks.getPublicExponent()));
191    }
192
193    //
194    // Tests for inherited methods
195    //
196
197    /**
198     * Test for <code>getModulus()</code> method<br>
199     * Assertion: returns modulus
200     */
201    public final void testGetModulus() {
202        RSAPrivateCrtKeySpec ks = new RSAPrivateCrtKeySpec(
203                BigInteger.valueOf(5L),
204                BigInteger.ONE,
205                BigInteger.ONE,
206                BigInteger.ONE,
207                BigInteger.ONE,
208                BigInteger.ONE,
209                BigInteger.ONE,
210                BigInteger.ONE);
211        assertTrue(BigInteger.valueOf(5L).equals(ks.getModulus()));
212    }
213
214    /**
215     * Test for <code>getPrivateExponent()</code> method<br>
216     * Assertion: returns private exponent
217     */
218    public final void testGetPrivateExponent() {
219        RSAPrivateCrtKeySpec ks = new RSAPrivateCrtKeySpec(
220                BigInteger.ONE,
221                BigInteger.ONE,
222                BigInteger.valueOf(5L),
223                BigInteger.ONE,
224                BigInteger.ONE,
225                BigInteger.ONE,
226                BigInteger.ONE,
227                BigInteger.ONE);
228        assertTrue(BigInteger.valueOf(5L).equals(ks.getPrivateExponent()));
229    }
230
231}
232