blob: a48ea4372be8c54abe551c6cdf88bfc5e0b96c26 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @author Vera Y. Petrashkova
* @version $Revision$
*/
package org.apache.harmony.security.tests.java.security;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import java.security.AlgorithmParameters;
import java.security.AlgorithmParametersSpi;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Provider;
import java.security.SecureRandom;
import org.apache.harmony.security.tests.java.security.AlgorithmParametersTest.MyAlgorithmParameters;
import org.apache.harmony.security.tests.java.security.AlgorithmParametersTest.myAlgP;
import org.apache.harmony.security.tests.support.SpiEngUtils;
import junit.framework.TestCase;
@TestTargetClass(KeyPairGenerator.class)
/**
* Tests for KeyPairGenerator class
*
*/
public class KeyPairGenerator3Test extends TestCase {
private static String validProviderName = null;
public static Provider validProvider = null;
private static boolean DSASupported = false;
private static String NotSupportMsg = KeyPairGenerator1Test.NotSupportMsg;
static {
validProvider = SpiEngUtils.isSupport(
KeyPairGenerator1Test.validAlgName,
KeyPairGenerator1Test.srvKeyPairGenerator);
DSASupported = (validProvider != null);
validProviderName = (DSASupported ? validProvider.getName() : null);
}
protected KeyPairGenerator[] createKPGen() {
if (!DSASupported) {
fail(KeyPairGenerator1Test.validAlgName
+ " algorithm is not supported");
return null;
}
KeyPairGenerator[] kpg = new KeyPairGenerator[3];
try {
kpg[0] = KeyPairGenerator
.getInstance(KeyPairGenerator1Test.validAlgName);
kpg[1] = KeyPairGenerator.getInstance(
KeyPairGenerator1Test.validAlgName, validProvider);
kpg[2] = KeyPairGenerator.getInstance(
KeyPairGenerator1Test.validAlgName, validProviderName);
return kpg;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* Test for <code>generateKeyPair()</code> and <code>genKeyPair()</code>
* methods
* Assertion: KeyPairGenerator was initialized before the invocation
* of these methods
*/
@TestTargets({
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "generateKeyPair",
args = {}
),
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "genKeyPair",
args = {}
)
})
public void testGenKeyPair01() throws NoSuchAlgorithmException,
NoSuchProviderException, IllegalArgumentException {
if (!DSASupported) {
fail(NotSupportMsg);
return;
}
KeyPairGenerator[] kpg = createKPGen();
assertNotNull("KeyPairGenerator objects were not created", kpg);
KeyPair kp, kp1;
SecureRandom rr = new SecureRandom();
for (int i = 0; i < kpg.length; i++) {
kpg[i].initialize(512, rr);
kp = kpg[i].generateKeyPair();
kp1 = kpg[i].genKeyPair();
assertFalse("Incorrect private key", kp.getPrivate().equals(
kp1.getPrivate()));
assertFalse("Incorrect public key", kp.getPublic().equals(
kp1.getPublic()));
}
}
/**
* Test for <code>generateKeyPair()</code> and <code>genKeyPair()</code>
* methods
* Assertion: these methods are used without previously initialization
*/
@TestTargets({
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "generateKeyPair",
args = {}
),
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "genKeyPair",
args = {}
)
})
public void testGenKeyPair02() throws NoSuchAlgorithmException,
NoSuchProviderException, IllegalArgumentException {
if (!DSASupported) {
fail(NotSupportMsg);
return;
}
KeyPairGenerator[] kpg = createKPGen();
assertNotNull("KeyPairGenerator objects were not created", kpg);
KeyPair kp, kp1;
for (int i = 0; i < kpg.length; i++) {
kp = kpg[i].generateKeyPair();
kp1 = kpg[i].genKeyPair();
assertFalse("Incorrect private key", kp.getPrivate().equals(
kp1.getPrivate()));
assertFalse("Incorrect public key", kp.getPublic().equals(
kp1.getPublic()));
}
}
/**
* Test for <code>KeyPairGenerator</code> constructor
* Assertion: returns KeyPairGenerator object
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "KeyPairGenerator",
args = {java.lang.String.class}
)
public void testKeyPairGeneratorConst() {
String[] alg = {null, "", "AsDfGh!#$*", "DSA", "RSA"};
MykeyPGen kpg;
for (int i = 0; i < alg.length; i++) {
try {
kpg = new MykeyPGen(alg[i]);
assertNotNull(kpg);
assertTrue(kpg instanceof KeyPairGenerator);
} catch (Exception e){
fail("Exception should not be thrown");
}
}
}
/**
* Additional class to verify KeyPairGenerator constructor
*/
class MykeyPGen extends KeyPairGenerator {
public MykeyPGen(String alg) {
super(alg);
}
}
}