Index: modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/spec/EllipticCurveTest.java =================================================================== --- modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/spec/EllipticCurveTest.java (revision 421552) +++ modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/spec/EllipticCurveTest.java (working copy) @@ -466,6 +466,18 @@ } /** + * Regression for Harmony-731 + * + */ + public final void testEllipticCurveECFieldBigIntegerBigInteger05() { + EllipticCurve ec = new EllipticCurve(new testECField(), BigInteger + .valueOf(4L), BigInteger.ONE); + assertEquals("incorrect a", ec.getA(), BigInteger.valueOf(4L)); + assertEquals("incorrect b", ec.getB(), BigInteger.ONE); + assertEquals("incorrect size", ec.getField().getFieldSize(), 2); + } + + /** * Test for getB() method
* Assertion: returns coefficient b
* Test preconditions: ECFieldF2m instance @@ -672,6 +684,12 @@ // Private stuff // + class testECField implements ECField { + public int getFieldSize() { + return 2; + } + } + /** * EllipticCurve subclass for testing purposes * Index: modules/security/src/main/java/common/java/security/spec/EllipticCurve.java =================================================================== --- modules/security/src/main/java/common/java/security/spec/EllipticCurve.java (revision 421552) +++ modules/security/src/main/java/common/java/security/spec/EllipticCurve.java (working copy) @@ -65,8 +65,9 @@ this.seed = new byte[seed.length]; System.arraycopy(seed, 0, this.seed, 0, this.seed.length); } - // check parameters + // check parameters for ECFieldFp and ECFieldF2m. // Check invariant: a and b must be in the field. + // Check conditions for custom ECField are not specified. if (this.field instanceof ECFieldFp) { BigInteger p = ((ECFieldFp)this.field).getP(); if (this.a.signum() < 0 || @@ -78,7 +79,7 @@ throw new IllegalArgumentException( "the a is not in the field"); } - } else { + } else if (this.field instanceof ECFieldF2m) { int fieldSizeInBits = this.field.getFieldSize(); if (!(this.a.bitLength() <= fieldSizeInBits)) { throw new IllegalArgumentException("the a is not in the field");