RSAMultiPrimePrivateCrtKeyTest.java revision adc854b798c1cfe3bfd4c27d68d5cee38ca617da
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 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 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 dalvik.annotation.TestTargets; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestLevel; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetNew; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetClass; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.BigInteger; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.interfaces.RSAMultiPrimePrivateCrtKey; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.spec.RSAOtherPrimeInfo; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.interfaces.RSAMultiPrimePrivateCrtKeyImpl; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project@TestTargetClass(RSAMultiPrimePrivateCrtKey.class) 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class RSAMultiPrimePrivateCrtKeyTest extends TestCase { 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Reference array of RSAOtherPrimeInfo. DO NOT MODIFY 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final RSAOtherPrimeInfo[] opi = new RSAOtherPrimeInfo[] { 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new RSAOtherPrimeInfo(BigInteger.ONE, BigInteger.ONE, BigInteger.ONE), 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new RSAOtherPrimeInfo(BigInteger.ONE, BigInteger.ONE, BigInteger.ONE), 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new RSAOtherPrimeInfo(BigInteger.ONE, BigInteger.ONE, BigInteger.ONE) 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final BigInteger publicExponent = BigInteger.ONE; 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final BigInteger primeExponentP = BigInteger.ONE; 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final BigInteger primeExponentQ = BigInteger.ONE; 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final BigInteger primeP = BigInteger.ONE; 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final BigInteger primeQ = BigInteger.ONE; 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final BigInteger crtCoefficient = BigInteger.ONE; 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class RSAMulti extends RSAMultiPrimePrivateCrtKeyImpl { 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public RSAMulti(BigInteger publicExp, 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger primeExpP, 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger primeExpQ, 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger prP, 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger prQ, 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger crtCft, 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project RSAOtherPrimeInfo[] otherPrmInfo) { 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(publicExp, primeExpP, primeExpQ, prP, prQ, crtCft, otherPrmInfo); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getCrtCoefficient() 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeExponentP() 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeExponentQ() 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeP() 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPrimeQ() 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getPublicExponent() 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargets({ 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getCrtCoefficient", 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getPrimeExponentP", 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getPrimeExponentQ", 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getPrimeP", 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getPrimeQ", 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getPublicExponent", 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }) 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_RSAMultiPrimePrivateCrtKey() { 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project RSAMulti rsam = new RSAMulti(publicExponent, primeExponentP, primeExponentQ, 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project primeP, primeQ, crtCoefficient, opi); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(rsam.getCrtCoefficient(), crtCoefficient); 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(rsam.getPrimeExponentP(), primeExponentP); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(rsam.getPrimeExponentQ(), primeExponentQ); 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(rsam.getPrimeP(), primeP); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(rsam.getPrimeQ(), primeQ); 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(rsam.getPublicExponent(), publicExponent); 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception: " + e); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.interfaces.RSAMultiPrimePrivateCrtKey#getOtherPrimeInfo() 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getOtherPrimeInfo", 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getOtherPrimeInfo() { 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project RSAMulti rsam = new RSAMulti(publicExponent, primeExponentP, primeExponentQ, 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project primeP, primeQ, crtCoefficient, null); 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Object RSAOtherPrimeInfo is not NULL", rsam.getOtherPrimeInfo()); 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception: " + e); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project rsam = new RSAMulti(publicExponent, primeExponentP, primeExponentQ, 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project primeP, primeQ, crtCoefficient, opi); 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(rsam.getOtherPrimeInfo(), opi); 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception: " + e); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}