Home | History | Annotate | Download | only in interfaces
      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 }