41 lines
1.4 KiB
PHP
41 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Jose\Component\Signature;
|
|
|
|
use Jose\Component\Checker\HeaderCheckerManagerFactory;
|
|
use Jose\Component\Signature\Serializer\JWSSerializerManagerFactory;
|
|
|
|
class JWSLoaderFactory
|
|
{
|
|
public function __construct(
|
|
private readonly JWSSerializerManagerFactory $jwsSerializerManagerFactory,
|
|
private readonly JWSVerifierFactory $jwsVerifierFactory,
|
|
private readonly ?HeaderCheckerManagerFactory $headerCheckerManagerFactory
|
|
) {
|
|
}
|
|
|
|
/**
|
|
* Creates a JWSLoader using the given serializer aliases, signature algorithm aliases and (optionally) the header
|
|
* checker aliases.
|
|
*/
|
|
/**
|
|
* @param array<string> $serializers
|
|
* @param array<string> $algorithms
|
|
* @param array<string> $headerCheckers
|
|
*/
|
|
public function create(array $serializers, array $algorithms, array $headerCheckers = []): JWSLoader
|
|
{
|
|
$serializerManager = $this->jwsSerializerManagerFactory->create($serializers);
|
|
$jwsVerifier = $this->jwsVerifierFactory->create($algorithms);
|
|
if ($this->headerCheckerManagerFactory !== null) {
|
|
$headerCheckerManager = $this->headerCheckerManagerFactory->create($headerCheckers);
|
|
} else {
|
|
$headerCheckerManager = null;
|
|
}
|
|
|
|
return new JWSLoader($serializerManager, $jwsVerifier, $headerCheckerManager);
|
|
}
|
|
}
|