b0y-101 Mini Shell


Current Path : E:/www/b-group.old/spfin/mainpay/jwt-framework/tests/Component/Encryption/
File Upload :
Current File : E:/www/b-group.old/spfin/mainpay/jwt-framework/tests/Component/Encryption/EncryptionTestCase.php

<?php

declare(strict_types=1);

namespace Jose\Tests\Component\Encryption;

use Jose\Component\Core\AlgorithmManagerFactory;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A128CBCHS256;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A128GCM;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A192CBCHS384;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A192GCM;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A256CBCHS512;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A256GCM;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A128GCMKW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A128KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A192GCMKW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A192KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A256GCMKW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A256KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\Dir;
use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHES;
use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHESA128KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHESA192KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHESA256KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHSS;
use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHSSA128KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHSSA192KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHSSA256KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\PBES2HS256A128KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\PBES2HS384A192KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\PBES2HS512A256KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\RSA15;
use Jose\Component\Encryption\Algorithm\KeyEncryption\RSAOAEP;
use Jose\Component\Encryption\Algorithm\KeyEncryption\RSAOAEP256;
use Jose\Component\Encryption\Compression\CompressionMethodManagerFactory;
use Jose\Component\Encryption\Compression\Deflate;
use Jose\Component\Encryption\JWEBuilderFactory;
use Jose\Component\Encryption\JWEDecrypterFactory;
use Jose\Component\Encryption\JWELoaderFactory;
use Jose\Component\Encryption\Serializer\CompactSerializer;
use Jose\Component\Encryption\Serializer\JSONFlattenedSerializer;
use Jose\Component\Encryption\Serializer\JSONGeneralSerializer;
use Jose\Component\Encryption\Serializer\JWESerializerManager;
use Jose\Component\Encryption\Serializer\JWESerializerManagerFactory;
use PHPUnit\Framework\TestCase;

abstract class EncryptionTestCase extends TestCase
{
    private ?AlgorithmManagerFactory $algorithmManagerFactory = null;

    private ?CompressionMethodManagerFactory $compressionMethodManagerFactory = null;

    private ?JWEBuilderFactory $jweBuilderFactory = null;

    private ?JWEDecrypterFactory $jweDecrypterFactory = null;

    private ?JWELoaderFactory $jweLoaderFactory = null;

    private ?JWESerializerManagerFactory $jwsSerializerManagerFactory = null;

    private ?JWESerializerManager $jwsSerializerManager = null;

    protected function getAlgorithmManagerFactory(): AlgorithmManagerFactory
    {
        if ($this->algorithmManagerFactory === null) {
            $this->algorithmManagerFactory = new AlgorithmManagerFactory();
            $this->algorithmManagerFactory->add('A128GCM', new A128GCM());
            $this->algorithmManagerFactory->add('A192GCM', new A192GCM());
            $this->algorithmManagerFactory->add('A256GCM', new A256GCM());
            $this->algorithmManagerFactory->add('A128CBC-HS256', new A128CBCHS256());
            $this->algorithmManagerFactory->add('A192CBC-HS384', new A192CBCHS384());
            $this->algorithmManagerFactory->add('A256CBC-HS512', new A256CBCHS512());
            $this->algorithmManagerFactory->add('A128GCMKW', new A128GCMKW());
            $this->algorithmManagerFactory->add('A192GCMKW', new A192GCMKW());
            $this->algorithmManagerFactory->add('A256GCMKW', new A256GCMKW());
            $this->algorithmManagerFactory->add('A128KW', new A128KW());
            $this->algorithmManagerFactory->add('A192KW', new A192KW());
            $this->algorithmManagerFactory->add('A256KW', new A256KW());
            $this->algorithmManagerFactory->add('dir', new Dir());
            $this->algorithmManagerFactory->add('ECDH-ES', new ECDHES());
            $this->algorithmManagerFactory->add('ECDH-ES+A128KW', new ECDHESA128KW());
            $this->algorithmManagerFactory->add('ECDH-ES+A192KW', new ECDHESA192KW());
            $this->algorithmManagerFactory->add('ECDH-ES+A256KW', new ECDHESA256KW());
            $this->algorithmManagerFactory->add('ECDH-SS', new ECDHSS());
            $this->algorithmManagerFactory->add('ECDH-SS+A128KW', new ECDHSSA128KW());
            $this->algorithmManagerFactory->add('ECDH-SS+A192KW', new ECDHSSA192KW());
            $this->algorithmManagerFactory->add('ECDH-SS+A256KW', new ECDHSSA256KW());
            $this->algorithmManagerFactory->add('PBES2-HS256+A128KW', new PBES2HS256A128KW());
            $this->algorithmManagerFactory->add('PBES2-HS384+A192KW', new PBES2HS384A192KW());
            $this->algorithmManagerFactory->add('PBES2-HS512+A256KW', new PBES2HS512A256KW());
            $this->algorithmManagerFactory->add('RSA1_5', new RSA15());
            $this->algorithmManagerFactory->add('RSA-OAEP', new RSAOAEP());
            $this->algorithmManagerFactory->add('RSA-OAEP-256', new RSAOAEP256());
        }

        return $this->algorithmManagerFactory;
    }

    protected function getCompressionMethodManagerFactory(): CompressionMethodManagerFactory
    {
        if ($this->compressionMethodManagerFactory === null) {
            $this->compressionMethodManagerFactory = new CompressionMethodManagerFactory();
            $this->compressionMethodManagerFactory->add('DEF', new Deflate());
        }

        return $this->compressionMethodManagerFactory;
    }

    protected function getJWEBuilderFactory(): JWEBuilderFactory
    {
        if ($this->jweBuilderFactory === null) {
            $this->jweBuilderFactory = new JWEBuilderFactory(
                $this->getAlgorithmManagerFactory(),
                $this->getCompressionMethodManagerFactory()
            );
        }

        return $this->jweBuilderFactory;
    }

    protected function getJWEDecrypterFactory(): JWEDecrypterFactory
    {
        if ($this->jweDecrypterFactory === null) {
            $this->jweDecrypterFactory = new JWEDecrypterFactory(
                $this->getAlgorithmManagerFactory(),
                $this->getCompressionMethodManagerFactory()
            );
        }

        return $this->jweDecrypterFactory;
    }

    protected function getJWELoaderFactory(): JWELoaderFactory
    {
        if ($this->jweLoaderFactory === null) {
            $this->jweLoaderFactory = new JWELoaderFactory(
                $this->getJWESerializerManagerFactory(),
                $this->getJWEDecrypterFactory(),
                null
            );
        }

        return $this->jweLoaderFactory;
    }

    protected function getJWESerializerManagerFactory(): JWESerializerManagerFactory
    {
        if ($this->jwsSerializerManagerFactory === null) {
            $this->jwsSerializerManagerFactory = new JWESerializerManagerFactory();
            $this->jwsSerializerManagerFactory->add(new CompactSerializer());
            $this->jwsSerializerManagerFactory->add(new JSONFlattenedSerializer());
            $this->jwsSerializerManagerFactory->add(new JSONGeneralSerializer());
        }

        return $this->jwsSerializerManagerFactory;
    }

    protected function getJWESerializerManager(): JWESerializerManager
    {
        if ($this->jwsSerializerManager === null) {
            $this->jwsSerializerManager = new JWESerializerManager([
                new CompactSerializer(),
                new JSONFlattenedSerializer(),
                new JSONGeneralSerializer(),
            ]);
        }

        return $this->jwsSerializerManager;
    }
}

Copyright © 2019 by b0y-101