1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License.
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at
7f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.security.interfaces;
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.BigInteger;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.interfaces.RSAMultiPrimePrivateCrtKey;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.spec.RSAOtherPrimeInfo;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.interfaces.RSAMultiPrimePrivateCrtKeyImpl;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class RSAMultiPrimePrivateCrtKeyTest extends TestCase {
28f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Reference array of RSAOtherPrimeInfo. DO NOT MODIFY
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private static final RSAOtherPrimeInfo[] opi = new RSAOtherPrimeInfo[] {
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new RSAOtherPrimeInfo(BigInteger.ONE, BigInteger.ONE, BigInteger.ONE),
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new RSAOtherPrimeInfo(BigInteger.ONE, BigInteger.ONE, BigInteger.ONE),
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new RSAOtherPrimeInfo(BigInteger.ONE, BigInteger.ONE, BigInteger.ONE)
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    };
37f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private final BigInteger publicExponent = BigInteger.ONE;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private final BigInteger primeExponentP = BigInteger.ONE;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private final BigInteger primeExponentQ = BigInteger.ONE;
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private final BigInteger primeP = BigInteger.ONE;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private final BigInteger primeQ = BigInteger.ONE;
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private final BigInteger crtCoefficient = BigInteger.ONE;
44f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class RSAMulti extends RSAMultiPrimePrivateCrtKeyImpl {
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public RSAMulti(BigInteger publicExp,
47f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                        BigInteger primeExpP,
48f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                        BigInteger primeExpQ,
49f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                        BigInteger prP,
50f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                        BigInteger prQ,
51f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                        BigInteger crtCft,
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        RSAOtherPrimeInfo[] otherPrmInfo) {
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super(publicExp, primeExpP, primeExpQ, prP, prQ, crtCft, otherPrmInfo);
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
56f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
58229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.security.interfaces.RSAMultiPrimePrivateCrtKey#getCrtCoefficient()
59229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeExponentP()
60229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeExponentQ()
61229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeP()
62229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeQ()
63229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPublicExponent()
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_RSAMultiPrimePrivateCrtKey() {
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        RSAMulti rsam = new RSAMulti(publicExponent, primeExponentP, primeExponentQ,
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                     primeP, primeQ, crtCoefficient, opi);
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(rsam.getCrtCoefficient(), crtCoefficient);
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(rsam.getPrimeExponentP(), primeExponentP);
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(rsam.getPrimeExponentQ(), primeExponentQ);
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(rsam.getPrimeP(), primeP);
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(rsam.getPrimeQ(), primeQ);
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(rsam.getPublicExponent(), publicExponent);
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception: " + e);
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
79f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
81229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.security.interfaces.RSAMultiPrimePrivateCrtKey#getOtherPrimeInfo()
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getOtherPrimeInfo() {
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        RSAMulti rsam = new RSAMulti(publicExponent, primeExponentP, primeExponentQ,
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                     primeP, primeQ, crtCoefficient, null);
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNull("Object RSAOtherPrimeInfo is not NULL", rsam.getOtherPrimeInfo());
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception: " + e);
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        rsam = new RSAMulti(publicExponent, primeExponentP, primeExponentQ,
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            primeP, primeQ, crtCoefficient, opi);
93f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(rsam.getOtherPrimeInfo(), opi);
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception: " + e);
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
100229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom}
101