Skip to content

Commit fee80dd

Browse files
committed
refactored f2m m check.
1 parent b24dcaa commit fee80dd

2 files changed

Lines changed: 24 additions & 5 deletions

File tree

core/src/main/java/org/bouncycastle/math/ec/ECCurve.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -845,6 +845,11 @@ public static BigInteger inverse(int m, int[] ks, BigInteger x)
845845

846846
private static FiniteField buildField(int m, int k1, int k2, int k3)
847847
{
848+
if (m > Properties.asInteger("org.bouncycastle.ec.max_f2m_field_size", 1142)) // twice 571
849+
{
850+
throw new IllegalArgumentException("field size out of range: " + m);
851+
}
852+
848853
int[] exponents = (k2 | k3) == 0
849854
? new int[]{ 0, k1, m }
850855
: new int[]{ 0, k1, k2, k3, m };
@@ -1006,11 +1011,6 @@ protected ECFieldElement solveQuadraticEquation(ECFieldElement beta)
10061011
}
10071012

10081013
int m = this.getFieldSize();
1009-
1010-
if (m > Properties.asInteger("org.bouncycastle.ec.max_f2m_field_size", 1142)) // twice 571
1011-
{
1012-
throw new IllegalStateException("field size out of range: " + m);
1013-
}
10141014

10151015
// For odd m, use the half-trace
10161016
if (0 != (m & 1))

core/src/test/java/org/bouncycastle/math/ec/test/ECPointTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,25 @@ private void implTestAdd(ECPoint[] p, ECPoint infinity)
196196
}
197197
}
198198

199+
public void testLargeMInF2m()
200+
{
201+
int m = 2048;
202+
int k1 = 1;
203+
BigInteger aTpb = new BigInteger("1000", 2);
204+
BigInteger bTpb = new BigInteger("1001", 2);
205+
BigInteger n = new BigInteger("23");
206+
BigInteger h = new BigInteger("1");
207+
208+
try
209+
{
210+
ECCurve.F2m curve = new ECCurve.F2m(m, k1, aTpb, bTpb, n, h);
211+
}
212+
catch (IllegalArgumentException e)
213+
{
214+
assertEquals("field size out of range: 2048", e.getMessage());
215+
}
216+
}
217+
199218
/**
200219
* Calls <code>implTestAdd()</code> for <code>Fp</code> and
201220
* <code>F2m</code>.

0 commit comments

Comments
 (0)