primo commit
This commit is contained in:
44
libraries/vendor/web-token/jwt-library/KeyManagement/X5UFactory.php
vendored
Normal file
44
libraries/vendor/web-token/jwt-library/KeyManagement/X5UFactory.php
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Jose\Component\KeyManagement;
|
||||
|
||||
use Jose\Component\Core\JWK;
|
||||
use Jose\Component\Core\JWKSet;
|
||||
use Jose\Component\Core\Util\JsonConverter;
|
||||
use Jose\Component\KeyManagement\KeyConverter\KeyConverter;
|
||||
use RuntimeException;
|
||||
use function is_array;
|
||||
use function is_string;
|
||||
|
||||
class X5UFactory extends UrlKeySetFactory
|
||||
{
|
||||
/**
|
||||
* This method will try to fetch the url a retrieve the key set. Throws an exception in case of failure.
|
||||
*/
|
||||
public function loadFromUrl(string $url, array $header = []): JWKSet
|
||||
{
|
||||
$content = $this->getContent($url, $header);
|
||||
$data = JsonConverter::decode($content);
|
||||
if (! is_array($data)) {
|
||||
throw new RuntimeException('Invalid content.');
|
||||
}
|
||||
|
||||
$keys = [];
|
||||
foreach ($data as $kid => $cert) {
|
||||
if (mb_strpos((string) $cert, '-----BEGIN CERTIFICATE-----') === false) {
|
||||
$cert = '-----BEGIN CERTIFICATE-----' . "\n" . $cert . "\n" . '-----END CERTIFICATE-----';
|
||||
}
|
||||
$jwk = KeyConverter::loadKeyFromCertificate($cert);
|
||||
if (is_string($kid)) {
|
||||
$jwk['kid'] = $kid;
|
||||
$keys[$kid] = new JWK($jwk);
|
||||
} else {
|
||||
$keys[] = new JWK($jwk);
|
||||
}
|
||||
}
|
||||
|
||||
return new JWKSet($keys);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user