| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed 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. |
| */ |
| |
| package tests.security.interfaces; |
| |
| import dalvik.annotation.TestLevel; |
| import dalvik.annotation.TestTargetNew; |
| import dalvik.annotation.TestTargetClass; |
| |
| import junit.framework.TestCase; |
| |
| import java.math.BigInteger; |
| import java.security.interfaces.DSAKeyPairGenerator; |
| import java.security.interfaces.DSAParams; |
| import java.security.SecureRandom; |
| import java.security.spec.DSAParameterSpec; |
| import java.security.InvalidParameterException; |
| |
| import org.apache.harmony.security.tests.support.interfaces.DSAKeyPairGeneratorImpl; |
| |
| @TestTargetClass(DSAKeyPairGenerator.class) |
| public class DSAKeyPairGeneratorTest extends TestCase { |
| |
| private final BigInteger p = new BigInteger("4"); |
| private final BigInteger q = BigInteger.TEN; |
| private final BigInteger g = BigInteger.ZERO; |
| |
| |
| class MyDSA extends DSAKeyPairGeneratorImpl { |
| public MyDSA(DSAParams dsaParams) { |
| super(dsaParams); |
| } |
| } |
| |
| /** |
| * @tests java.security.interfaces.DSAKeyPairGenerator |
| * #initialize(DSAParams params, SecureRandom random) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "initialize", |
| args = {java.security.interfaces.DSAParams.class, java.security.SecureRandom.class} |
| ) |
| public void test_DSAKeyPairGenerator01() { |
| DSAParams dsaParams = new DSAParameterSpec(p, q, g); |
| SecureRandom random = null; |
| MyDSA dsa = new MyDSA(dsaParams); |
| try { |
| random = SecureRandom.getInstance("SHA1PRNG"); |
| } catch (Exception e) { |
| fail("Unexpected exception for SecureRandom: " + e); |
| } |
| |
| try { |
| dsa.initialize(dsaParams, random); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| |
| try { |
| dsa.initialize(dsaParams, null); |
| fail("InvalidParameterException was not thrown"); |
| } catch (InvalidParameterException ipe) { |
| //expected |
| } catch (Exception e) { |
| fail(e + " was thrown instead of InvalidParameterException"); |
| } |
| try { |
| dsa.initialize(null, random); |
| fail("InvalidParameterException was not thrown"); |
| } catch (InvalidParameterException ipe) { |
| //expected |
| } catch (Exception e) { |
| fail(e + " was thrown instead of InvalidParameterException"); |
| } |
| } |
| |
| /** |
| * @tests java.security.interfaces.DSAKeyPairGenerator |
| * #initialize(int modlen, boolean genParams, SecureRandom randomm) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "initialize", |
| args = {int.class, boolean.class, java.security.SecureRandom.class} |
| ) |
| public void test_DSAKeyPairGenerator02() { |
| int[] invalidLen = {-1, 0, 511, 513, 650, 1023, 1025}; |
| DSAParams dsaParams = new DSAParameterSpec(p, q, g); |
| SecureRandom random = null; |
| MyDSA dsa = new MyDSA(null); |
| try { |
| random = SecureRandom.getInstance("SHA1PRNG"); |
| } catch (Exception e) { |
| fail("Unexpected exception for SecureRandom: " + e); |
| } |
| |
| //exception case |
| try { |
| dsa.initialize(520, false, random); |
| fail("InvalidParameterException was not thrown"); |
| } catch (InvalidParameterException ipe) { |
| String str = ipe.getMessage(); |
| if (!str.equals("there are not precomputed parameters")) { |
| fail("Incorrect exception's message: " + str); |
| } |
| } catch (Exception e) { |
| fail(e + " was thrown instead of InvalidParameterException"); |
| } |
| |
| //exception case |
| for (int i = 0; i < invalidLen.length; i++) { |
| try { |
| dsa.initialize(invalidLen[i], true, random); |
| fail("InvalidParameterException was not thrown"); |
| } catch (InvalidParameterException ipe) { |
| String str = ipe.getMessage(); |
| if (!str.equals("Incorrect modlen")) { |
| fail("Incorrect exception's message: " + str); |
| } |
| } catch (Exception e) { |
| fail(e + " was thrown instead of InvalidParameterException"); |
| } |
| } |
| |
| //positive case |
| dsa = new MyDSA(dsaParams); |
| try { |
| dsa.initialize(520, true, random); |
| } catch (Exception e) { |
| fail(e + " was thrown for subcase 1"); |
| } |
| |
| //positive case |
| try { |
| dsa.initialize(520, false, random); |
| } catch (Exception e) { |
| fail(e + " was thrown for subcase 1"); |
| } |
| } |
| } |