algorithmManagerFactory) { $this->algorithmManagerFactory = new AlgorithmManagerFactory(); $this->algorithmManagerFactory->add('A128GCM', new ContentEncryption\A128GCM()); $this->algorithmManagerFactory->add('A192GCM', new ContentEncryption\A192GCM()); $this->algorithmManagerFactory->add('A256GCM', new ContentEncryption\A256GCM()); $this->algorithmManagerFactory->add('A128CBC-HS256', new ContentEncryption\A128CBCHS256()); $this->algorithmManagerFactory->add('A192CBC-HS384', new ContentEncryption\A192CBCHS384()); $this->algorithmManagerFactory->add('A256CBC-HS512', new ContentEncryption\A256CBCHS512()); $this->algorithmManagerFactory->add('A128GCMKW', new KeyEncryption\A128GCMKW()); $this->algorithmManagerFactory->add('A192GCMKW', new KeyEncryption\A192GCMKW()); $this->algorithmManagerFactory->add('A256GCMKW', new KeyEncryption\A256GCMKW()); $this->algorithmManagerFactory->add('A128KW', new KeyEncryption\A128KW()); $this->algorithmManagerFactory->add('A192KW', new KeyEncryption\A192KW()); $this->algorithmManagerFactory->add('A256KW', new KeyEncryption\A256KW()); $this->algorithmManagerFactory->add('dir', new KeyEncryption\Dir()); $this->algorithmManagerFactory->add('ECDH-ES', new KeyEncryption\ECDHES()); $this->algorithmManagerFactory->add('ECDH-ES+A128KW', new KeyEncryption\ECDHESA128KW()); $this->algorithmManagerFactory->add('ECDH-ES+A192KW', new KeyEncryption\ECDHESA192KW()); $this->algorithmManagerFactory->add('ECDH-ES+A256KW', new KeyEncryption\ECDHESA256KW()); $this->algorithmManagerFactory->add('PBES2-HS256+A128KW', new KeyEncryption\PBES2HS256A128KW()); $this->algorithmManagerFactory->add('PBES2-HS384+A192KW', new KeyEncryption\PBES2HS384A192KW()); $this->algorithmManagerFactory->add('PBES2-HS512+A256KW', new KeyEncryption\PBES2HS512A256KW()); $this->algorithmManagerFactory->add('RSA1_5', new KeyEncryption\RSA15()); $this->algorithmManagerFactory->add('RSA-OAEP', new KeyEncryption\RSAOAEP()); $this->algorithmManagerFactory->add('RSA-OAEP-256', new KeyEncryption\RSAOAEP256()); } return $this->algorithmManagerFactory; } protected function getCompressionMethodManagerFactory(): CompressionMethodManagerFactory { if (null === $this->compressionMethodManagerFactory) { $this->compressionMethodManagerFactory = new CompressionMethodManagerFactory(); $this->compressionMethodManagerFactory->add('DEF', new Compression\Deflate()); } return $this->compressionMethodManagerFactory; } protected function getJWEBuilderFactory(): JWEBuilderFactory { if (null === $this->jweBuilderFactory) { $this->jweBuilderFactory = new JWEBuilderFactory( $this->getAlgorithmManagerFactory(), $this->getCompressionMethodManagerFactory() ); } return $this->jweBuilderFactory; } protected function getJWEDecrypterFactory(): JWEDecrypterFactory { if (null === $this->jweDecrypterFactory) { $this->jweDecrypterFactory = new JWEDecrypterFactory( $this->getAlgorithmManagerFactory(), $this->getCompressionMethodManagerFactory() ); } return $this->jweDecrypterFactory; } protected function getJWELoaderFactory(): JWELoaderFactory { if (null === $this->jweLoaderFactory) { $this->jweLoaderFactory = new JWELoaderFactory( $this->getJWESerializerManagerFactory(), $this->getJWEDecrypterFactory(), null ); } return $this->jweLoaderFactory; } protected function getJWESerializerManagerFactory(): Serializer\JWESerializerManagerFactory { if (null === $this->jwsSerializerManagerFactory) { $this->jwsSerializerManagerFactory = new Serializer\JWESerializerManagerFactory(); $this->jwsSerializerManagerFactory->add(new Serializer\CompactSerializer()); $this->jwsSerializerManagerFactory->add(new Serializer\JSONFlattenedSerializer()); $this->jwsSerializerManagerFactory->add(new Serializer\JSONGeneralSerializer()); } return $this->jwsSerializerManagerFactory; } protected function getJWESerializerManager(): Serializer\JWESerializerManager { if (null === $this->jwsSerializerManager) { $this->jwsSerializerManager = new Serializer\JWESerializerManager([ new Serializer\CompactSerializer(), new Serializer\JSONFlattenedSerializer(), new Serializer\JSONGeneralSerializer(), ]); } return $this->jwsSerializerManager; } }