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