diff --git a/phpseclib/Math/PrimeField.php b/phpseclib/Math/PrimeField.php index 58ea1181..289cfcbb 100644 --- a/phpseclib/Math/PrimeField.php +++ b/phpseclib/Math/PrimeField.php @@ -46,9 +46,9 @@ class PrimeField extends FiniteField */ public function __construct(BigInteger $modulo) { - //if (!$modulo->isPrime()) { - // throw new \phpseclib3\Exception\UnexpectedValueException('PrimeField requires a prime number be passed to the constructor'); - //} + if (!$modulo->isPrime()) { + throw new \phpseclib3\Exception\UnexpectedValueException('PrimeField requires a prime number be passed to the constructor'); + } $this->instanceID = self::$instanceCounter++; Integer::setModulo($this->instanceID, $modulo); diff --git a/phpseclib/Math/PrimeField/Integer.php b/phpseclib/Math/PrimeField/Integer.php index dee3a8e3..c24f4e18 100644 --- a/phpseclib/Math/PrimeField/Integer.php +++ b/phpseclib/Math/PrimeField/Integer.php @@ -249,13 +249,13 @@ class Integer extends Base $r = $this->value->powMod($temp, static::$modulo[$this->instanceID]); while (!$t->equals($one)) { - $i = clone $one; - - while (!$t->powMod($two->pow($i), static::$modulo[$this->instanceID])->equals($one)) { - $i = $i->add($one); + for ($i == clone $one; $i->compare($m) < 0; $i = $i->add($one)) { + if ($t->powMod($two->pow($i), static::$modulo[$this->instanceID])->equals($one)) { + break; + } } - if ($i->compare($m) >= 0) { + if ($i->compare($m) == 0) { return false; } $b = $c->powMod($two->pow($m->subtract($i)->subtract($one)), static::$modulo[$this->instanceID]);