OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / libcore / luni / src / test / java / tests / security / interfaces / RSAMultiPrimePrivateCrtKeyTest.java
1 /*
2  * Copyright (C) 2007 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package tests.security.interfaces;
18
19 import dalvik.annotation.TestTargets;
20 import dalvik.annotation.TestLevel;
21 import dalvik.annotation.TestTargetNew;
22 import dalvik.annotation.TestTargetClass;
23
24 import junit.framework.TestCase;
25
26 import java.math.BigInteger;
27 import java.security.interfaces.RSAMultiPrimePrivateCrtKey;
28 import java.security.spec.RSAOtherPrimeInfo;
29
30 import org.apache.harmony.security.tests.support.interfaces.RSAMultiPrimePrivateCrtKeyImpl;
31
32 @TestTargetClass(RSAMultiPrimePrivateCrtKey.class)
33 public class RSAMultiPrimePrivateCrtKeyTest extends TestCase {
34
35     /**
36      * Reference array of RSAOtherPrimeInfo. DO NOT MODIFY
37      */
38     private static final RSAOtherPrimeInfo[] opi = new RSAOtherPrimeInfo[] {
39             new RSAOtherPrimeInfo(BigInteger.ONE, BigInteger.ONE, BigInteger.ONE),
40             new RSAOtherPrimeInfo(BigInteger.ONE, BigInteger.ONE, BigInteger.ONE),
41             new RSAOtherPrimeInfo(BigInteger.ONE, BigInteger.ONE, BigInteger.ONE)
42     };
43
44     private final BigInteger publicExponent = BigInteger.ONE;
45     private final BigInteger primeExponentP = BigInteger.ONE;
46     private final BigInteger primeExponentQ = BigInteger.ONE;
47     private final BigInteger primeP = BigInteger.ONE;
48     private final BigInteger primeQ = BigInteger.ONE;
49     private final BigInteger crtCoefficient = BigInteger.ONE;
50
51     class RSAMulti extends RSAMultiPrimePrivateCrtKeyImpl {
52         public RSAMulti(BigInteger publicExp,
53                         BigInteger primeExpP,
54                         BigInteger primeExpQ,
55                         BigInteger prP,
56                         BigInteger prQ,
57                         BigInteger crtCft,
58                         RSAOtherPrimeInfo[] otherPrmInfo) {
59             super(publicExp, primeExpP, primeExpQ, prP, prQ, crtCft, otherPrmInfo);
60         }
61     }
62
63     /**
64      * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getCrtCoefficient()
65      * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeExponentP()
66      * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeExponentQ()
67      * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeP()
68      * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeQ()
69      * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPublicExponent()
70      */
71     @TestTargets({
72         @TestTargetNew(
73             level = TestLevel.COMPLETE,
74             notes = "",
75             method = "getCrtCoefficient",
76             args = {}
77         ),
78         @TestTargetNew(
79             level = TestLevel.COMPLETE,
80             notes = "",
81             method = "getPrimeExponentP",
82             args = {}
83         ),
84         @TestTargetNew(
85             level = TestLevel.COMPLETE,
86             notes = "",
87             method = "getPrimeExponentQ",
88             args = {}
89         ),
90         @TestTargetNew(
91             level = TestLevel.COMPLETE,
92             notes = "",
93             method = "getPrimeP",
94             args = {}
95         ),
96         @TestTargetNew(
97             level = TestLevel.COMPLETE,
98             notes = "",
99             method = "getPrimeQ",
100             args = {}
101         ),
102         @TestTargetNew(
103             level = TestLevel.COMPLETE,
104             notes = "",
105             method = "getPublicExponent",
106             args = {}
107         )
108     })
109     public void test_RSAMultiPrimePrivateCrtKey() {
110         RSAMulti rsam = new RSAMulti(publicExponent, primeExponentP, primeExponentQ,
111                                      primeP, primeQ, crtCoefficient, opi);
112         try {
113             assertEquals(rsam.getCrtCoefficient(), crtCoefficient);
114             assertEquals(rsam.getPrimeExponentP(), primeExponentP);
115             assertEquals(rsam.getPrimeExponentQ(), primeExponentQ);
116             assertEquals(rsam.getPrimeP(), primeP);
117             assertEquals(rsam.getPrimeQ(), primeQ);
118             assertEquals(rsam.getPublicExponent(), publicExponent);
119         } catch (Exception e) {
120             fail("Unexpected exception: " + e);
121         }
122     }
123
124     /**
125      * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getOtherPrimeInfo()
126      */
127     @TestTargetNew(
128         level = TestLevel.COMPLETE,
129         notes = "",
130         method = "getOtherPrimeInfo",
131         args = {}
132     )
133     public void test_getOtherPrimeInfo() {
134         RSAMulti rsam = new RSAMulti(publicExponent, primeExponentP, primeExponentQ,
135                                      primeP, primeQ, crtCoefficient, null);
136         try {
137             assertNull("Object RSAOtherPrimeInfo is not NULL", rsam.getOtherPrimeInfo());
138         } catch (Exception e) {
139             fail("Unexpected exception: " + e);
140         }
141         rsam = new RSAMulti(publicExponent, primeExponentP, primeExponentQ,
142                             primeP, primeQ, crtCoefficient, opi);
143
144         try {
145             assertEquals(rsam.getOtherPrimeInfo(), opi);
146         } catch (Exception e) {
147             fail("Unexpected exception: " + e);
148         }
149     }
150 }