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/** 198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @author Vladimir N. Molotkov 208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security.spec; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.math.BigInteger; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.ECFieldF2m; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for <code>ECFieldF2m</code> class fields and methods. 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ECFieldF2mTest extends TestCase { 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Support class for this test. 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Encapsulates <code>ECFieldF2m</code> testing 388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * domain parameters. 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final class ECFieldF2mDomainParams { 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>NPE</code> reference object of class NullPointerException. 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * NullPointerException must be thrown by <code>ECFieldF2m</code> 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ctors in some circumstances 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static final NullPointerException NPE = new NullPointerException(); 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>IArgE</code> reference object of class IllegalArgumentException. 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * IllegalArgumentException must be thrown by <code>ECFieldF2m</code> 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ctors in some circumstances 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static final IllegalArgumentException IArgE = new IllegalArgumentException(); 548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The <code>m</code> parameter for <code>ECFieldF2m</code> 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ctor for the current test. 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final int m; 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The <code>rp</code> parameter for <code>ECFieldF2m</code> 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ctor for the current test. 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final BigInteger rp; 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The <code>ks</code> parameter for <code>ECFieldF2m</code> 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ctor for the current test. 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final int[] ks; 708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Exception expected with this parameters set or <code>null</code> 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * if no exception expected. 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Exception x; 778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Constructs ECFieldF2mDomainParams 808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param m 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param rp 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param ks 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param expectedException 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldF2mDomainParams(final int m, 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final BigInteger rp, 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final int[] ks, 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Exception expectedException) { 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.m = m; 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.rp = rp; 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.ks = ks; 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.x = expectedException; 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Constructor for ECFieldF2mTest. 998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param name 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public ECFieldF2mTest(String name) { 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(name); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Tests 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Set of parameters used for <code>ECFieldF2m(int)</code> 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor tests. 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final ECFieldF2mDomainParams[] intCtorTestParameters = 1158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams[] { 1168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 0: valid m 1178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams(1, null, null, null), 1188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 1: valid m 1198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams(Integer.MAX_VALUE, null, null, null), 1208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 2: invalid m 1218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams(0, null, null, ECFieldF2mDomainParams.IArgE), 1228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 3: invalid m 1238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams(-1, null, null, ECFieldF2mDomainParams.IArgE) 1248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath }; 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for constructor <code>ECFieldF2m(int)</code><br> 1288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: constructs new <code>ECFieldF2m</code> object 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * using valid parameter m. 1318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: IllegalArgumentException if m is not positive. 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testECFieldF2mint() { 1358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < intCtorTestParameters.length; i++) { 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldF2mDomainParams tp = intCtorTestParameters[i]; 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // perform test 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ECFieldF2m(tp.m); 1408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (tp.x != null) { 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // exception has been expected 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ", set " + i + 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes " FAILED: expected exception has not been thrown"); 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (tp.x == null || !e.getClass().isInstance(tp.x)) { 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // exception: failure 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // if it has not been expected 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // or wrong one has been thrown 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ", set " + i + 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes " FAILED: unexpected " + e); 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Set of parameters used for <code>ECFieldF2m(int, BigInteger)</code> 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor tests. 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final ECFieldF2mDomainParams[] intIntArrayCtorTestParameters = 1638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams[] { 1648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 0: valid m and ks - trinomial basis params 1658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1999, 1678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 367 }, 1698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null), 1708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 1: valid m and ks - pentanomial basis params 1718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 1738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 981, 2, 1 }, 1758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null), 1768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 2: valid m, invalid (null) ks 1778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1963, 1798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.NPE), 1828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 3: valid m, invalid ks - wrong length 1838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1963, 1858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 981, 2 }, 1878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 1888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 4: valid m, invalid ks - wrong length 1898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1963, 1918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 981, 124, 2, 1 }, 1938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 1948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 5: valid m, invalid ks - wrong value 1958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1999, 1978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 1999 }, 1998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 2008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 6: valid m, invalid ks - wrong value 2018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 2028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1999, 2038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 2048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 0 }, 2058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 2068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 7: valid m, invalid ks - wrong values 2078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 2088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 2098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 2108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 2000, 2, 1 }, 2118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 2128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 8: valid m, invalid ks - wrong values 2138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 2148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 2158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 2168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 981, 2, 0 }, 2178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 2188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 9: invalid m 2198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 2208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath -5, 2218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 2228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 981, 2, 1 }, 2238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 2248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 10: valid m, invalid ks - wrong order 2258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 2268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 2278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 2288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 981, 1, 2 }, 2298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 2308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 11: valid m, invalid ks - no content 2318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 2328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 2338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 2348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[3], 2358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 2368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 12: valid m, invalid ks - length is 0 2378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 2388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 2398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 2408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[0], 2418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 2428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath }; 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for constructor <code>ECFieldF2m(int m, int[] ks)</code><br> 2468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: constructs new <code>ECFieldF2m</code> object 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * using valid parameters m and rp. ks represents trinomial basis. 2498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: constructs new <code>ECFieldF2m</code> object 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * using valid parameters m and ks. ks represents pentanomial basis. 2528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: IllegalArgumentException if m is not positive. 2548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: NullPointerException if ks is null. 2568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: IllegalArgumentException if ks is invalid. 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testECFieldF2mintintArray() { 2608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < intIntArrayCtorTestParameters.length; i++) { 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldF2mDomainParams tp = intIntArrayCtorTestParameters[i]; 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // perform test 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ECFieldF2m(tp.m, tp.ks); 2658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (tp.x != null) { 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // exception has been expected 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ", set " + i + 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes " FAILED: expected exception has not been thrown"); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (tp.x == null || !e.getClass().isInstance(tp.x)) { 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // exception: failure 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // if it has not been expected 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // or wrong one has been thrown 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ", set " + i + 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes " FAILED: unexpected " + e); 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>hashCode()</code> method.<br> 2858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: must return the same value if invoked 2878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * repeatedly on the same object. 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testHashCode01() { 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldF2m f = new ECFieldF2m(2000); 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int hc = f.hashCode(); 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(hc == f.hashCode() && 2938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 2948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 2958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 2968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 2978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 2988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 2998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode()); 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>hashCode()</code> method.<br> 3048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: must return the same value if invoked 3068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * repeatedly on the same object. 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testHashCode02() { 3098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2m f = new ECFieldF2m(2000, new int[] { 981, 2, 1 }); 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int hc = f.hashCode(); 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(hc == f.hashCode() && 3128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 3138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 3148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 3158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 3168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 3178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode() && 3188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath hc == f.hashCode()); 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for <code>hashCode()</code> method.<br> 3238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: must return the same value if invoked 3258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * on equal (according to the <code>equals(Object)</code> method) objects. 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testHashCode03() { 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(new ECFieldF2m(111).hashCode() == 3298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2m(111).hashCode()); 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>hashCode()</code> method.<br> 3348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: must return the same value if invoked 3368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * on equal (according to the <code>equals(Object)</code> method) objects. 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testHashCode04() { 3398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(new ECFieldF2m(2000, new int[] { 981, 2, 1 }).hashCode() == 3408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2m(2000, new int[] { 981, 2, 1 }).hashCode()); 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #5 for <code>hashCode()</code> method.<br> 3458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: must return the same value if invoked 3478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * on equal (according to the <code>equals(Object)</code> method) objects. 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testHashCode05() { 3508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(new ECFieldF2m(2000, new int[] { 981, 2, 1 }).hashCode() == 3518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2m(2000, BigInteger.valueOf(0L). 3528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath setBit(0).setBit(1).setBit(2). 3538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath setBit(981).setBit(2000)).hashCode()); 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>equals()</code> method.<br> 3588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 3598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Assertion: object equals to itself. 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEqualsObject01() { 3628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2m obj = new ECFieldF2m(1999, new int[] { 367 }); 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(obj.equals(obj)); 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>equals()</code> method.<br> 3688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 3698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Assertion: normal basis - objects equal if their m are equal. 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEqualsObject02() { 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(new ECFieldF2m(43).equals(new ECFieldF2m(43))); 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for <code>equals()</code> method.<br> 3778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: trinomial basis - objects equal if their m, and rp 3798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * are mutually equal. 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEqualsObject03() { 3828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(new ECFieldF2m(1999, new int[] { 367 }).equals( 3838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2m(1999, BigInteger.valueOf(0L). 3848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath setBit(0).setBit(367).setBit(1999)))); 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>equals()</code> method.<br> 3898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: pentanomial basis - objects equal if their m, and rp 3918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * are mutually equal. 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEqualsObject04() { 3948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2m f1 = new ECFieldF2m(2000, new int[] { 981, 2, 1 }); 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldF2m f2 = new ECFieldF2m(2000, BigInteger.valueOf(0L). 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes setBit(0).setBit(1).setBit(2). 3978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath setBit(981).setBit(2000)); 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(f1.equals(f2) && f2.equals(f1)); 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #5 for <code>equals()</code> method.<br> 4038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 4048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Assertion: objects equal if their m, and rp are mutually equal. 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEqualsObject05() { 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldF2m f1 = new ECFieldF2m(2000); 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldF2m f2 = new ECFieldF2m(2000, BigInteger.valueOf(0L). 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes setBit(0).setBit(1).setBit(2). 4108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath setBit(981).setBit(2000)); 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(f1.equals(f2) || f2.equals(f1)); 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #6 for <code>equals(Object obj)</code> method.<br> 4168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns false if obj is <code>null</code> 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEqualsObject06() { 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(new ECFieldF2m(2000).equals(null)); 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #7 for <code>equals(Object obj)</code> method.<br> 4258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns false if obj is not instance of <code>ECFieldF2m</code> 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEqualsObject07() { 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(new ECFieldF2m(2000).equals(new Object())); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>getFieldSize()</code> method.<br> 4348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns m value for <code>ECFieldF2m</code> 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetFieldSize() { 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2000, new ECFieldF2m(2000).getFieldSize()); 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>getM()</code> method.<br> 4438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns m value for <code>ECFieldF2m</code> 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetM() { 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2000, new ECFieldF2m(2000).getM()); 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>getMidTermsOfReductionPolynomial()</code> method.<br> 4528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns mid terms of reduction polynomial 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetMidTermsOfReductionPolynomial01() { 4568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int[] a = new int[] { 981, 2, 1 }; 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] b = new ECFieldF2m(2000, 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes BigInteger.valueOf(0L).setBit(0).setBit(1). 4598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath setBit(2).setBit(981).setBit(2000)). 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes getMidTermsOfReductionPolynomial(); 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(a, b)); 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>getMidTermsOfReductionPolynomial()</code> method.<br> 4668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns null for normal basis 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetMidTermsOfReductionPolynomial02() { 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(new ECFieldF2m(2000).getMidTermsOfReductionPolynomial()); 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for <code>getMidTermsOfReductionPolynomial()</code> method.<br> 4758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns mid terms of reduction polynomial 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetMidTermsOfReductionPolynomial03() { 4798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int[] a = new int[] { 367 }; 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] b = new ECFieldF2m(1999, a).getMidTermsOfReductionPolynomial(); 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(a, b)); 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>getReductionPolynomial()</code> method.<br> 4868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns reduction polynomial 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetReductionPolynomial01() { 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes BigInteger rp = BigInteger.valueOf(0L).setBit(0).setBit(1).setBit(2). 4918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath setBit(981).setBit(2000); 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(new ECFieldF2m(2000, rp).getReductionPolynomial().equals(rp)); 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>getReductionPolynomial()</code> method.<br> 4978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns null for normal basis 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetReductionPolynomial02() { 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(new ECFieldF2m(2000).getReductionPolynomial()); 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests that object state is preserved against modifications 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * through array reference passed to the constructor. 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testIsStatePreserved01() { 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // reference array 5108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int[] a = new int[] { 367 }; 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // reference array copy 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] aCopy = a.clone(); 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create obj using copy 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldF2m f = new ECFieldF2m(1999, aCopy); 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // modify copy 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes aCopy[0] = 5; 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // compare reference with returned array 5188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(Arrays.equals(a, f.getMidTermsOfReductionPolynomial())); 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests that object state is preserved against 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * modifications through array reference returned by 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>getMidTermsOfReductionPolynomial()</code> method. 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testIsStatePreserved02() { 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // reference array 5288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int[] a = new int[] { 981, 2, 1 }; 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // reference array copy 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] aCopy = a.clone(); 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create obj using copy 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldF2m f = new ECFieldF2m(2000, aCopy); 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // get array reference and modify returned array 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes f.getMidTermsOfReductionPolynomial()[0] = 1532; 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // compare reference with returned for the second time array 5368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(Arrays.equals(a, f.getMidTermsOfReductionPolynomial())); 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 540