56 lines
1.8 KiB
PHP
56 lines
1.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/*
|
|
* The MIT License (MIT)
|
|
*
|
|
* Copyright (c) 2014-2020 Spomky-Labs
|
|
*
|
|
* This software may be modified and distributed under the terms
|
|
* of the MIT license. See the LICENSE file for details.
|
|
*/
|
|
|
|
namespace Jose\Component\Encryption;
|
|
|
|
use Jose\Component\Core\AlgorithmManagerFactory;
|
|
use Jose\Component\Encryption\Compression\CompressionMethodManagerFactory;
|
|
|
|
class JWEBuilderFactory
|
|
{
|
|
/**
|
|
* @var AlgorithmManagerFactory
|
|
*/
|
|
private $algorithmManagerFactory;
|
|
|
|
/**
|
|
* @var CompressionMethodManagerFactory
|
|
*/
|
|
private $compressionMethodManagerFactory;
|
|
|
|
/**
|
|
* JWEBuilderFactory constructor.
|
|
*/
|
|
public function __construct(AlgorithmManagerFactory $algorithmManagerFactory, CompressionMethodManagerFactory $compressionMethodManagerFactory)
|
|
{
|
|
$this->algorithmManagerFactory = $algorithmManagerFactory;
|
|
$this->compressionMethodManagerFactory = $compressionMethodManagerFactory;
|
|
}
|
|
|
|
/**
|
|
* Creates a JWE Builder object using the given key encryption algorithms, content encryption algorithms and compression methods.
|
|
*
|
|
* @param string[] $keyEncryptionAlgorithms
|
|
* @param string[] $contentEncryptionAlgorithm
|
|
* @param string[] $compressionMethods
|
|
*/
|
|
public function create(array $keyEncryptionAlgorithms, array $contentEncryptionAlgorithm, array $compressionMethods): JWEBuilder
|
|
{
|
|
$keyEncryptionAlgorithmManager = $this->algorithmManagerFactory->create($keyEncryptionAlgorithms);
|
|
$contentEncryptionAlgorithmManager = $this->algorithmManagerFactory->create($contentEncryptionAlgorithm);
|
|
$compressionMethodManager = $this->compressionMethodManagerFactory->create($compressionMethods);
|
|
|
|
return new JWEBuilder($keyEncryptionAlgorithmManager, $contentEncryptionAlgorithmManager, $compressionMethodManager);
|
|
}
|
|
}
|