53 lines
1.7 KiB
PHP
53 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Jose\Component\NestedToken;
|
|
|
|
use Jose\Component\Encryption\JWELoaderFactory;
|
|
use Jose\Component\Signature\JWSLoaderFactory;
|
|
|
|
class NestedTokenLoaderFactory
|
|
{
|
|
public function __construct(
|
|
private readonly JWELoaderFactory $jweLoaderFactory,
|
|
private readonly JWSLoaderFactory $jwsLoaderFactory
|
|
) {
|
|
}
|
|
|
|
/**
|
|
* This method creates a Nested Token Loader with the given encryption/signature algorithms, serializers,
|
|
* compression methods and header checkers.
|
|
*
|
|
* @param array<string> $jweSerializers
|
|
* @param array<string> $keyEncryptionAlgorithms
|
|
* @param array<string> $contentEncryptionAlgorithms
|
|
* @param null|array<string> $compressionMethods
|
|
* @param array<string> $jweHeaderCheckers
|
|
* @param array<string> $jwsSerializers
|
|
* @param array<string> $signatureAlgorithms
|
|
* @param array<string> $jwsHeaderCheckers
|
|
*/
|
|
public function create(
|
|
array $jweSerializers,
|
|
array $keyEncryptionAlgorithms,
|
|
null|array $contentEncryptionAlgorithms,
|
|
null|array $compressionMethods,
|
|
array $jweHeaderCheckers,
|
|
array $jwsSerializers,
|
|
array $signatureAlgorithms,
|
|
array $jwsHeaderCheckers
|
|
): NestedTokenLoader {
|
|
$jweLoader = $this->jweLoaderFactory->create(
|
|
$jweSerializers,
|
|
$keyEncryptionAlgorithms,
|
|
$contentEncryptionAlgorithms,
|
|
$compressionMethods,
|
|
$jweHeaderCheckers
|
|
);
|
|
$jwsLoader = $this->jwsLoaderFactory->create($jwsSerializers, $signatureAlgorithms, $jwsHeaderCheckers);
|
|
|
|
return new NestedTokenLoader($jweLoader, $jwsLoader);
|
|
}
|
|
}
|