getPrimes() public method

public getPrimes ( ) : BigInteger[]
return Jose\Util\BigInteger[]
Exemplo n.º 1
0
 /**
  * Exponentiate with or without Chinese Remainder Theorem.
  * Operation with primes 'p' and 'q' is appox. 2x faster.
  *
  * @param \Jose\KeyConverter\RSAKey $key
  * @param \Jose\Util\BigInteger     $c
  *
  * @return \Jose\Util\BigInteger
  */
 private static function exponentiate(RSAKey $key, BigInteger $c)
 {
     if ($key->isPublic() || empty($key->getPrimes())) {
         return $c->modPow($key->getExponent(), $key->getModulus());
     }
     $p = $key->getPrimes()[0];
     $q = $key->getPrimes()[1];
     $dP = $key->getExponents()[0];
     $dQ = $key->getExponents()[1];
     $qInv = $key->getCoefficient();
     $m1 = $c->modPow($dP, $p);
     $m2 = $c->modPow($dQ, $q);
     $h = $qInv->multiply($m1->subtract($m2)->add($p))->mod($p);
     $m = $m2->add($h->multiply($q));
     return $m;
 }