1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes* @author Vladimir N. Molotkov 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes*/ 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security.spec; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.math.BigInteger; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.ECFieldFp; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for <code>ECFieldFp</code> class fields and methods. 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ECFieldFpTest extends TestCase { 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Constructor for ECFieldFpTest. 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param name 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public ECFieldFpTest(String name) { 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(name); 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Tests 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>ECFieldFp</code> constructor 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: creates new object of <code>ECFieldFp</code> class 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * using valid <code>p</code> (odd prime) 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testECFieldFp01() { 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ECFieldFp(BigInteger.valueOf(23L)); 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>ECFieldFp</code> constructor 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: creates new object of <code>ECFieldFp</code> class 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * using valid <code>p</code> (odd but not prime) 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testECFieldFp02() { 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ECFieldFp(BigInteger.valueOf(21L)); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for <code>ECFieldFp</code> constructor 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: IllegalArgumentException if <code>p</code> is not positive 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testECFieldFp03() { 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ECFieldFp(BigInteger.valueOf(-1L)); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes " FAILED: expected exception has not been thrown"); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>ECFieldFp</code> constructor 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: IllegalArgumentException if <code>p</code> is not positive 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testECFieldFp04() { 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ECFieldFp(BigInteger.valueOf(0L)); 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes " FAILED: expected exception has not been thrown"); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>ECFieldFp</code> constructor 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: NullPointerException if <code>p</code> is null 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testECFieldFp05() { 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ECFieldFp(null); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes " FAILED: expected exception has not been thrown"); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>hashCode()</code> method.<br> 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: must return the same value if invoked 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * repeatedly on the same object. 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testHashCode01() { 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldFp f = new ECFieldFp(BigInteger.valueOf(23L)); 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int hc = f.hashCode(); 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(hc == f.hashCode() && 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hc == f.hashCode() && 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hc == f.hashCode() && 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hc == f.hashCode() && 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hc == f.hashCode() && 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hc == f.hashCode() && 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hc == f.hashCode() && 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hc == f.hashCode()); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>hashCode()</code> method.<br> 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: must return the same value if invoked 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * on equal (according to the <code>equals(Object)</code> method) objects. 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testHashCode02() { 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(new ECFieldFp(BigInteger.valueOf(23L)).hashCode() == 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ECFieldFp(BigInteger.valueOf(23L)).hashCode()); 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>getFieldSize()()</code> method.<br> 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns field size in bits which is prime size 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetFieldSize() { 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, new ECFieldFp(BigInteger.valueOf(23L)).getFieldSize()); 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>getP()</code> method.<br> 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns prime 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetP() { 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes BigInteger p = BigInteger.valueOf(23L); 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(p.equals(new ECFieldFp(p).getP())); 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>equals()</code> method.<br> 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: object equals to itself. 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEqualsObject01() { 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldFp obj = new ECFieldFp(BigInteger.valueOf(23L)); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(obj.equals(obj)); 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>equals(Object obj)</code> method.<br> 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns false if <code>obj</code> is <code>null</code> 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEqualsObject02() { 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(new ECFieldFp(BigInteger.valueOf(23L)).equals(null)); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for <code>equals(Object obj)</code> method.<br> 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns false if <code>obj</code> 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * is not instance of <code>ECFieldFp</code> 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEqualsObject03() { 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(new ECFieldFp(BigInteger.valueOf(23L)).equals(new Object())); 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>equals()</code> method.<br> 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: true if prime values match. 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEqualsObject04() { 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(new ECFieldFp(BigInteger.valueOf(23L)).equals( 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ECFieldFp(BigInteger.valueOf(23L)))); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 198