parent
dbdcd8406e
commit
ac6455b4b8
@ -0,0 +1,49 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
use Chamilo\PluginBundle\Entity\LtiProvider\PlatformKey; |
||||
use Firebase\JWT\JWT; |
||||
use phpseclib\Crypt\RSA; |
||||
|
||||
$cidReset = true; |
||||
|
||||
require_once __DIR__.'/../../../main/inc/global.inc.php'; |
||||
|
||||
$plugin = LtiProviderPlugin::create(); |
||||
|
||||
if ('true' !== $plugin->get('enabled')) { |
||||
exit; |
||||
} |
||||
|
||||
/** @var PlatformKey $platformKey */ |
||||
$platformKey = Database::getManager() |
||||
->getRepository('ChamiloPluginBundle:LtiProvider\PlatformKey') |
||||
->findOneBy([]); |
||||
|
||||
if (!$platformKey) { |
||||
exit; |
||||
} |
||||
|
||||
$privateKey = $platformKey->getPrivateKey(); |
||||
|
||||
$jwks = []; |
||||
|
||||
$key = new RSA(); |
||||
$key->setHash('sha256'); |
||||
$key->loadKey($platformKey->getPrivateKey()); |
||||
$key->setPublicKey(false, RSA::PUBLIC_FORMAT_PKCS8); |
||||
|
||||
if ($key->publicExponent) { |
||||
$jwks = [ |
||||
'kty' => 'RSA', |
||||
'alg' => 'RS256', |
||||
'use' => 'sig', |
||||
'e' => JWT::urlsafeB64Encode($key->publicExponent->toBytes()), |
||||
'n' => JWT::urlsafeB64Encode($key->modulus->toBytes()), |
||||
'kid' => $platformKey->getKid(), |
||||
]; |
||||
} |
||||
|
||||
header('Content-Type: application/json'); |
||||
|
||||
echo json_encode(['keys' => [$jwks]]); |
||||
Loading…
Reference in new issue