1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.security.spec; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.math.BigInteger; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.spec.ECField; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.spec.ECFieldF2m; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.spec.ECFieldFp; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.spec.EllipticCurve; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Arrays; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tests for <code>EllipticCurve</code> class fields and methods. 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(EllipticCurve.class) 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class EllipticCurveTest extends TestCase { 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #1 for <code>EllipticCurve(ECField, BigInteger, BigInteger, byte[])</code> 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * constructor<br> 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: creates instance of EllipticCurve<br> 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: valid parameters passed<br> 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must pass without any exceptions 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies positive cases.", 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "EllipticCurve", 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.spec.ECField.class, java.math.BigInteger.class, java.math.BigInteger.class, byte[].class} 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEllipticCurveECFieldBigIntegerBigIntegerbyteArray01() { 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 1 parameters set 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldFp f = new ECFieldFp(BigInteger.valueOf(23L)); 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.ONE; 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] seed = new byte[24]; 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 1 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 2 parameters set 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldF2m f1 = new ECFieldF2m(5); 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.ZERO; 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(23L); 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 2 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f1, a, b, seed); 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 3 parameters set, 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // the seed parameter may be null 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.ONE; 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(19L); 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project seed = null; 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 3 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #2 for <code>EllipticCurve(ECField, BigInteger, BigInteger, byte[])</code> 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * constructor<br> 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: throws <code>NullPointerException</code> if <code>field</code>, 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>a</code> or <code>b</code> is <code>null</code><br> 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: pass <code>null</code> as mentioned parameters<br> 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must throw <code>NullPointerException</code> 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "EllipticCurve", 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.spec.ECField.class, java.math.BigInteger.class, java.math.BigInteger.class, byte[].class} 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEllipticCurveECFieldBigIntegerBigIntegerbyteArray02() { 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 1 parameters set 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldFp f = null; 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.ONE; 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] seed = new byte[24]; 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 1 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#1: Expected NPE not thrown"); 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException ok) {} 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 2 parameters set, 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = null; 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(19L); 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project seed = new byte[24]; 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 2 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#2: Expected NPE not thrown"); 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException ok) {} 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 3 parameters set, 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.ONE; 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = null; 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project seed = new byte[24]; 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 2 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#3: Expected NPE not thrown"); 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException ok) {} 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #3 for <code>EllipticCurve(ECField, BigInteger, BigInteger, byte[])</code> 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * constructor<br> 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: throws <code>IllegalArgumentException</code> if 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>a</code> or <code>b</code> is not <code>null</code> and not in 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the <code>field</code><br> 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: pass <code>a</code>, <code>b</code> which are 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * not in the <code>field</code> of type <code>ECFieldFp</code><br> 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must throw <code>IllegalArgumentException</code> 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "EllipticCurve", 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.spec.ECField.class, java.math.BigInteger.class, java.math.BigInteger.class, byte[].class} 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEllipticCurveECFieldBigIntegerBigIntegerbyteArray03() { 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 1 parameters set, 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // a is not in field 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldFp f = new ECFieldFp(BigInteger.valueOf(23L)); 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.valueOf(24L); 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] seed = new byte[24]; 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 1 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#1: Expected IAE not thrown"); 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 1.1 parameters set, 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // b is not in field 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.valueOf(1L); 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(23L); 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project seed = new byte[24]; 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 1.1 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#1.1: Expected IAE not thrown"); 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 2 parameters set, 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // b is not in field 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.valueOf(19L); 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(24L); 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project seed = new byte[24]; 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 2 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#2: Expected IAE not thrown"); 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 3 parameters set, 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // both a and b are not in field 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.valueOf(25L); 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(240L); 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project seed = new byte[24]; 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 3 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#3: Expected IAE not thrown"); 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #4 for <code>EllipticCurve(ECField, BigInteger, BigInteger, byte[])</code> 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * constructor<br> 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: throws <code>IllegalArgumentException</code> if 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>a</code> or <code>b</code> is not <code>null</code> and not in 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the <code>field</code><br> 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: pass <code>a</code>, <code>b</code> which are 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * not in the <code>field</code> of type <code>ECFieldF2m</code><br> 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must throw <code>IllegalArgumentException</code> 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "EllipticCurve", 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.spec.ECField.class, java.math.BigInteger.class, java.math.BigInteger.class, byte[].class} 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEllipticCurveECFieldBigIntegerBigIntegerbyteArray04() { 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 1 parameters set, 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // a is not in field 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldF2m f = new ECFieldF2m(5); 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.valueOf(32L); 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] seed = new byte[24]; 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 1 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#1: Expected IAE not thrown"); 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 2 parameters set, 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // b is not in field 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldF2m(5); 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.valueOf(19L); 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(32L); 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project seed = new byte[24]; 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 2 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#2: Expected IAE not thrown"); 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 3 parameters set, 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // both a and b are not in field 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldF2m(5); 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.valueOf(32L); 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(43L); 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project seed = new byte[24]; 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 3 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b, seed); 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#3: Expected IAE not thrown"); 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #5 for <code>EllipticCurve(ECField, BigInteger, BigInteger, byte[])</code> 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * constructor<br> 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: array <code>seed</code> is copied to prevent subsequent modification<br> 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: pass <code>seed</code> to the ctor then modify it<br> 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: getSeed() must return unmodified array 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that byte array of EllipticCurve can't be modified", 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "EllipticCurve", 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.spec.ECField.class, java.math.BigInteger.class, java.math.BigInteger.class, byte[].class} 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEllipticCurveECFieldBigIntegerBigIntegerbyteArray05() { 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldF2m f = new ECFieldF2m(5); 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.valueOf(0L); 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] seed = new byte[24]; 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] seedCopy = seed.clone(); 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EllipticCurve c = new EllipticCurve(f, a, b, seedCopy); 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // modify array passed 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project seedCopy[0] = (byte) 1; 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // check that above modification did not changed 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // internal state of test object 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(seed, c.getSeed())); 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #1 for <code>EllipticCurve(ECField, BigInteger, BigInteger)</code> 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * constructor<br> 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: creates instance of EllipticCurve<br> 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: valid parameters passed, field type is ECFieldFp<br> 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must pass without any exceptions 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify exceptions.", 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "EllipticCurve", 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.spec.ECField.class, java.math.BigInteger.class, java.math.BigInteger.class} 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEllipticCurveECFieldBigIntegerBigInteger01() { 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 1 parameters set 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldFp f = new ECFieldFp(BigInteger.valueOf(23L)); 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.ONE; 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 1 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 2 parameters set 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldF2m f1 = new ECFieldF2m(5); 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.ZERO; 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(23L); 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 2 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f1, a, b); 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 3 parameters set, 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // the seed parameter may be null 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.ONE; 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(19L); 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 3 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #2 for <code>EllipticCurve(ECField, BigInteger, BigInteger)</code> 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * constructor<br> 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: throws <code>NullPointerException</code> if <code>field</code>, 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>a</code> or <code>b</code> is <code>null</code><br> 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: pass <code>null</code> as mentioned parameters<br> 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must throw <code>NullPointerException</code> 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "EllipticCurve", 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.spec.ECField.class, java.math.BigInteger.class, java.math.BigInteger.class} 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEllipticCurveECFieldBigIntegerBigInteger02() { 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 1 parameters set 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldFp f = null; 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.ONE; 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 1 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#1: Expected NPE not thrown"); 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException ok) {} 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 2 parameters set, 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = null; 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(19L); 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 2 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#2: Expected NPE not thrown"); 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException ok) {} 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 3 parameters set, 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.ONE; 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = null; 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 3 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#3: Expected NPE not thrown"); 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException ok) {} 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #3 for <code>EllipticCurve(ECField, BigInteger, BigInteger)</code> 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * constructor<br> 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: throws <code>IllegalArgumentException</code> if 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>a</code> or <code>b</code> is not <code>null</code> and not in 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the <code>field</code><br> 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: pass <code>a</code>, <code>b</code> which are 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * not in the <code>field</code> of type <code>ECFieldFp</code><br> 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must throw <code>IllegalArgumentException</code> 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "EllipticCurve", 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.spec.ECField.class, java.math.BigInteger.class, java.math.BigInteger.class} 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEllipticCurveECFieldBigIntegerBigInteger03() { 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 1 parameters set, 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // a is not in field 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldFp f = new ECFieldFp(BigInteger.valueOf(23L)); 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.valueOf(24L); 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 1 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#1: Expected IAE not thrown"); 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 1.1 parameters set, 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // a is not in field 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.valueOf(23L); 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(19L); 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 1.1 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#1.1: Expected IAE not thrown"); 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 2 parameters set, 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // b is not in field 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.valueOf(19L); 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(24L); 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 2 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#2: Expected IAE not thrown"); 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 3 parameters set, 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // both a and b are not in field 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldFp(BigInteger.valueOf(23L)); 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.valueOf(25L); 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(240L); 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 3 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#3: Expected IAE not thrown"); 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #4 for <code>EllipticCurve(ECField, BigInteger, BigInteger, byte[])</code> 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * constructor<br> 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: throws <code>IllegalArgumentException</code> if 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>a</code> or <code>b</code> is not <code>null</code> and not in 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the <code>field</code><br> 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: pass <code>a</code>, <code>b</code> which are 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * not in the <code>field</code> of type <code>ECFieldF2m</code><br> 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must throw <code>IllegalArgumentException</code> 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "EllipticCurve", 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.spec.ECField.class, java.math.BigInteger.class, java.math.BigInteger.class} 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEllipticCurveECFieldBigIntegerBigInteger04() { 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 1 parameters set, 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // a is not in field 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldF2m f = new ECFieldF2m(5); 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.valueOf(32L); 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 1 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#1: Expected IAE not thrown"); 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 2 parameters set, 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // b is not in field 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldF2m(5); 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.valueOf(19L); 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(32L); 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 2 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#2: Expected IAE not thrown"); 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 3 parameters set, 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // both a and b are not in field 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project f = new ECFieldF2m(5); 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project a = BigInteger.valueOf(32L); 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b = BigInteger.valueOf(43L); 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // perform test case 3 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new EllipticCurve(f, a, b); 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("#3: Expected IAE not thrown"); 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ok) {} 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getA()</code> method<br> 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returns coefficient <code>a</code><br> 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: <code>ECFieldF2m</code> instance 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * created using valid parameters<br> 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must return coefficient <code>a</code> which is equal 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * to the one passed to the constructor; (both must refer 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the same object) 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getA", 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testGetA() { 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldF2m f = new ECFieldF2m(5); 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.valueOf(5L); 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EllipticCurve c = new EllipticCurve(f, a, b); 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(a, c.getA()); 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(a, c.getA()); 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java/security/spec/EllipticCurve#EllipticCurve(EcField,BigInteger,BigInteger) 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Regression test.", 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "EllipticCurve", 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.spec.ECField.class, java.math.BigInteger.class, java.math.BigInteger.class} 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEllipticCurveECFieldBigIntegerBigInteger05() { 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression for Harmony-731 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EllipticCurve ec = new EllipticCurve(new testECField(), BigInteger 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .valueOf(4L), BigInteger.ONE); 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("incorrect a", ec.getA(), BigInteger.valueOf(4L)); 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("incorrect b", ec.getB(), BigInteger.ONE); 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("incorrect size", ec.getField().getFieldSize(), 2); 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getB()</code> method<br> 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returns coefficient <code>b</code><br> 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: <code>ECFieldF2m</code> instance 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * created using valid parameters<br> 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must return coefficient <code>b</code> which is equal 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * to the one passed to the constructor; (both must refer 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the same object) 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getB", 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testGetB() { 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldF2m f = new ECFieldF2m(5); 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.valueOf(5L); 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EllipticCurve c = new EllipticCurve(f, a, b); 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(b, c.getB()); 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(b, c.getB()); 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getField()</code> method<br> 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returns <code>field</code><br> 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: <code>ECFieldF2m</code> instance 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * created using valid parameters<br> 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must return <code>field</code> which is equal 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * to the one passed to the constructor; (both must refer 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the same object) 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getField", 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testGetField() { 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldF2m f = new ECFieldF2m(5); 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.valueOf(5L); 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EllipticCurve c = new EllipticCurve(f, a, b); 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(f, c.getField()); 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(f, c.getField()); 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #1 for <code>getSeed()</code> method<br> 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returns <code>seed</code><br> 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: <code>ECFieldF2m</code> instance 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * created using valid parameters<br> 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: must return <code>seed</code> which is equal 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * to the one passed to the constructor 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies positive case.", 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSeed", 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testGetSeed01() { 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldFp f = new ECFieldFp(BigInteger.valueOf(23L)); 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.ONE; 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] seed = new byte[24]; 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EllipticCurve c = new EllipticCurve(f, a, b, seed); 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] seedRet = c.getSeed(); 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(seedRet); 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(seed, seedRet)); 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #2 for <code>getSeed()</code> method<br> 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returned array is copied to prevent subsequent modification<br> 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: <code>ECFieldF2m</code> instance 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * created using valid parameters; <code>getSeed()</code> 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * called and then returned array modified<br> 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: internal state must not be affected by the modification 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that modification of byte array doesn't change internal state of test object.", 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSeed", 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testGetSeed02() { 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldFp f = new ECFieldFp(BigInteger.valueOf(23L)); 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.ONE; 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] seed = new byte[24]; 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EllipticCurve c = new EllipticCurve(f, a, b, seed.clone()); 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] seedRet = c.getSeed(); 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // modify returned array 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project seedRet[0] = (byte) 1; 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // check that above modification did not changed 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // internal state of test object 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(seed, c.getSeed())); 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #3 for <code>getSeed()</code> method<br> 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returned array is copied to prevent subsequent modification<br> 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: <code>ECFieldF2m</code> instance 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * created using valid parameters<br> 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: repeated method calls must return different refs 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that repeated calls of getSeed method must return different refs.", 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSeed", 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testGetSeed03() { 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldFp f = new ECFieldFp(BigInteger.valueOf(23L)); 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.ONE; 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger b = BigInteger.valueOf(19L); 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] seed = new byte[24]; 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EllipticCurve c = new EllipticCurve(f, a, b, seed); 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c.getSeed(); 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotSame(c.getSeed(), c.getSeed()); 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.security.spec.EllipticCurve#getSeed() 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: null if not specified 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Regression test.", 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSeed", 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testGetSeed04() { 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //Regression for HARMONY-732 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ECFieldFp f = new ECFieldFp(BigInteger.valueOf(23L)); 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger a = BigInteger.ONE; 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(new EllipticCurve(f, a, a).getSeed()); 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #1 for <code>equals(Object other)</code> method<br> 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: return true if this and other objects are equal<br> 663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test preconditions: see test comments<br> 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Expected: all objects in this test must be equal 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "equals", 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.Object.class} 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEqualsObject01() { 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 1: must be equal to itself 674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EllipticCurve c2 = null, c1 = new EllipticCurve(new ECFieldFp( 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger.valueOf(23L)), BigInteger.ONE, BigInteger 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .valueOf(19L)); 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(c1.equals(c1)); 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 2: equal objects 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c1 = new EllipticCurve(new ECFieldFp(BigInteger.valueOf(23L)), 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger.ONE, BigInteger.valueOf(19L)); 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c2 = new EllipticCurve(new ECFieldFp(BigInteger.valueOf(23L)), 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger.valueOf(1L), BigInteger.valueOf(19L)); 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(c1.equals(c2) && c2.equals(c1)); 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 3: equal objects with seed not null 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c1 = new EllipticCurve(new ECFieldFp(BigInteger.valueOf(23L)), 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger.ONE, BigInteger.valueOf(19L), new byte[24]); 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c2 = new EllipticCurve(new ECFieldFp(BigInteger.valueOf(23L)), 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger.valueOf(1L), BigInteger.valueOf(19L), new byte[24]); 691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(c1.equals(c2) && c2.equals(c1)); 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 4: equal object and subclass object 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c1 = new EllipticCurve(new ECFieldFp(BigInteger.valueOf(23L)), 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger.ONE, BigInteger.valueOf(19L), new byte[24]); 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MyEllipticCurve c3 = new MyEllipticCurve(new ECFieldFp(BigInteger 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .valueOf(23L)), BigInteger.ONE, BigInteger.valueOf(19L), 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new byte[24]); 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(c1.equals(c3) && c3.equals(c1)); 700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test case 5: equal objects 702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c1 = new EllipticCurve(new ECFieldFp(BigInteger.valueOf(23L)), 703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger.ONE, BigInteger.valueOf(19L)); 704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c2 = new EllipticCurve(new ECFieldFp(BigInteger.valueOf(23L)), 705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger.valueOf(1L), BigInteger.valueOf(19L), null); 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(c1.equals(c2) && c2.equals(c1)); 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #1 for <code>hashCode()</code> method.<br> 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: must return the same value if invoked 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * repeatedly on the same object. 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that several calls of hashCode method for the same objects return the same values.", 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "hashCode", 719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testHashCode01() { 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int hc = 0; 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EllipticCurve f = new EllipticCurve(new ECFieldFp(BigInteger 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .valueOf(23L)), BigInteger.ONE, BigInteger.valueOf(19L), 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new byte[24]); 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project hc = f.hashCode(); 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(hc == f.hashCode() && hc == f.hashCode() 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && hc == f.hashCode() && hc == f.hashCode() 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && hc == f.hashCode() && hc == f.hashCode() 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && hc == f.hashCode() && hc == f.hashCode()); 731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #2 for <code>hashCode()</code> method.<br> 735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: must return the same value if invoked 737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * on equal (according to the <code>equals(Object)</code> method) objects. 738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "hashCode", 743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testHashCode02() { 746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(new EllipticCurve(new ECFieldFp(BigInteger.valueOf(23L)), 747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger.ONE, BigInteger.valueOf(19L), new byte[24]) 748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .hashCode(), new EllipticCurve(new ECFieldFp(BigInteger 749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .valueOf(23L)), BigInteger.ONE, BigInteger.valueOf(19L), 750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new byte[24]).hashCode()); 751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Private stuff 755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class testECField implements ECField { 758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int getFieldSize() { 760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 2; 761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * EllipticCurve subclass for testing purposes 766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static class MyEllipticCurve extends EllipticCurve { 769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MyEllipticCurve(ECField f, BigInteger a, BigInteger b, byte[] seed) { 771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(f, a, b, seed); 772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 775