diff --git a/composer.json b/composer.json index 466a747..b492c91 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "php": ">=7.2.0", "ext-json": "*", "ext-openssl": "*", - "phpseclib/phpseclib": "^2.0" + "phpseclib/phpseclib": "^3.0" }, "autoload": { "psr-4": { diff --git a/src/KeyConverter.php b/src/KeyConverter.php index 1bdff2d..ad7dc4d 100644 --- a/src/KeyConverter.php +++ b/src/KeyConverter.php @@ -4,8 +4,9 @@ namespace Strobotti\JWK; -use phpseclib\Crypt\RSA; -use phpseclib\Math\BigInteger; +use phpseclib3\Crypt\RSA\PublicKey; +use phpseclib3\Crypt\PublicKeyLoader; +use phpseclib3\Math\BigInteger; use Strobotti\JWK\Key\KeyInterface; use Strobotti\JWK\Key\Rsa as RsaKey; use Strobotti\JWK\Util\Base64UrlConverter; @@ -42,16 +43,14 @@ public function keyToPem(KeyInterface $key): string throw new \InvalidArgumentException(); } - /** @var RsaKey $key */ - $rsa = new RSA(); - $modulus = $this->base64UrlConverter->decode($key->getModulus(), true); - $rsa->loadKey([ + /** @var PublicKey $loader */ + $loader = PublicKeyLoader::load([ 'e' => new BigInteger(\base64_decode($key->getExponent(), true), 256), 'n' => new BigInteger($modulus, 256), ]); - return $rsa->getPublicKey(); + return $loader->toString('PKCS8'); } }