Author: nextgens
Date: 2008-03-13 03:51:27 +0000 (Thu, 13 Mar 2008)
New Revision: 18503
Modified:
trunk/freenet/src/freenet/crypt/DSAGroupGenerator.java
trunk/freenet/test/freenet/crypt/DSAGroupGeneratorTest.java
Log:
fix IsProbablyPrime() and its test
Modified: trunk/freenet/src/freenet/crypt/DSAGroupGenerator.java
===================================================================
--- trunk/freenet/src/freenet/crypt/DSAGroupGenerator.java 2008-03-13
03:29:50 UTC (rev 18502)
+++ trunk/freenet/src/freenet/crypt/DSAGroupGenerator.java 2008-03-13
03:51:27 UTC (rev 18503)
@@ -188,14 +188,14 @@
return obuf;
}
- /**
- * WARNING: it won't work reliably for integers below 30
- */
public static boolean isPrime(BigInteger b) {
- for (int i = 0; i < smallPrimes.length; i++) {
- if (b.mod(smallPrimes[i]).equals(BigInteger.ZERO)) return false;
- }
- // FIPS 186-2 recommends 2^100:1 confidence
+ if(BigInteger.ONE.compareTo(b) > -1)
+ throw new IllegalArgumentException("Can't be a prime
number!");
+ for(int i = 0; i < smallPrimes.length; i++) {
+ if(b.mod(smallPrimes[i]).equals(BigInteger.ZERO))
+ return false;
+ }
+ // FIPS 186-2 recommends 2^100:1 confidence
return b.isProbablePrime(200);
}
Modified: trunk/freenet/test/freenet/crypt/DSAGroupGeneratorTest.java
===================================================================
--- trunk/freenet/test/freenet/crypt/DSAGroupGeneratorTest.java 2008-03-13
03:29:50 UTC (rev 18502)
+++ trunk/freenet/test/freenet/crypt/DSAGroupGeneratorTest.java 2008-03-13
03:51:27 UTC (rev 18503)
@@ -18,19 +18,18 @@
import java.math.BigInteger;
-import freenet.crypt.DSAGroupGenerator;
import junit.framework.TestCase;
/**
* Test case for the {@link freenet.crypt.DSAGroupGeneratorTest} class.
*
- * @author Florent Daigni?re <nextgens at freenetproject.org>
+ * @author Florent Daigni???re <nextgens at freenetproject.org>
*/
public class DSAGroupGeneratorTest extends TestCase {
public void testIsPrime() { // No need to test below 30 as it won't
work anyway
- assertFalse(DSAGroupGenerator.isPrime(BigInteger.ZERO));
- assertFalse(DSAGroupGenerator.isPrime(BigInteger.ONE));
+ try { DSAGroupGenerator.isPrime(BigInteger.ZERO); fail(); }
catch (IllegalArgumentException e) {}
+ try { DSAGroupGenerator.isPrime(BigInteger.ONE); fail(); }
catch (IllegalArgumentException e) {}
assertTrue(DSAGroupGenerator.isPrime(BigInteger.valueOf(2)));
assertTrue(DSAGroupGenerator.isPrime(BigInteger.valueOf(1021)));