diff --git a/.gitsplit.yml b/.gitsplit.yml
index 29f4cbfc..716a03d8 100644
--- a/.gitsplit.yml
+++ b/.gitsplit.yml
@@ -51,8 +51,6 @@ splits:
target: "https://${GH_TOKEN}@github.com/web-token/encryption-pack.git"
- prefix: "packs/signature"
target: "https://${GH_TOKEN}@github.com/web-token/signature-pack.git"
- - prefix: "src/Easy"
- target: "https://${GH_TOKEN}@github.com/web-token/jwt-easy.git"
origins:
- ^master$
diff --git a/.php_cs.dist b/.php_cs.dist
deleted file mode 100644
index a4333568..00000000
--- a/.php_cs.dist
+++ /dev/null
@@ -1,80 +0,0 @@
-in(__DIR__.'/src')
- ->in(__DIR__.'/performance')
-;
-
-return PhpCsFixer\Config::create()
- ->setRules([
- '@PSR1' => true,
- '@PSR2' => true,
- '@Symfony' => true,
- '@PhpCsFixer' => true,
- '@DoctrineAnnotation' => true,
- '@PHP70Migration' => true,
- '@PHP71Migration' => true,
- 'strict_param' => true,
- 'strict_comparison' => true,
- 'array_syntax' => ['syntax' => 'short'],
- 'array_indentation' => true,
- 'ordered_imports' => true,
- 'protected_to_private' => true,
- 'declare_strict_types' => true,
- 'native_function_invocation' => [
- 'include' => ['@compiler_optimized'],
- 'scope' => 'namespaced',
- 'strict' => true,
- ],
- 'mb_str_functions' => true,
- 'method_chaining_indentation' => true,
- 'linebreak_after_opening_tag' => true,
- 'combine_consecutive_issets' => true,
- 'combine_consecutive_unsets' => true,
- 'compact_nullable_typehint' => true,
- 'no_superfluous_elseif' => true,
- 'phpdoc_trim_consecutive_blank_line_separation' => true,
- 'phpdoc_order' => true,
- 'pow_to_exponentiation' => true,
- 'simplified_null_return' => true,
- 'header_comment' => [
- 'header' => $header,
- ],
- 'align_multiline_comment' => [
- 'comment_type' => 'all_multiline',
- ],
- 'php_unit_test_annotation' => [
- 'case' => 'snake',
- 'style' => 'annotation',
- ],
- 'php_unit_test_case_static_method_calls' => true,
- 'php_unit_expectation' => true,
- 'php_unit_test_class_requires_covers' => false,
- 'global_namespace_import' => [
- 'import_classes' => true,
- 'import_constants' => true,
- 'import_functions' => true,
- ],
- ])
- ->setRiskyAllowed(true)
- ->setUsingCache(true)
- ->setFinder($finder)
- ;
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..494ca61e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,53 @@
+.PHONY: it
+it: coding-standards tests static-analyse performance-tests mutation-tests
+
+.PHONY: code-coverage
+code-coverage: vendor ## Show test coverage rates
+ vendor/bin/phpunit --coverage-text
+
+.PHONY: fix-coding-standards
+fix-coding-standards: vendor ## Fix all files using defined PHP-CS-FIXER rules
+ vendor/bin/ecs --fix
+
+.PHONY: coding-standards
+coding-standards: vendor ## Check all files using defined PHP-CS-FIXER rules
+ vendor/bin/ecs
+
+.PHONY: mutation-tests
+mutation-tests: vendor ## Run mutation tests with minimum MSI and covered MSI enabled
+ vendor/bin/infection --logger-github -s --threads=$(nproc) --min-msi=80 --min-covered-msi=85
+
+.PHONY: tests
+tests: vendor ## Run all tests
+ vendor/bin/phpunit --color
+
+vendor: composer.json composer.lock
+ composer validate
+ composer install
+ composer normalize
+
+.PHONY: tu
+tu: vendor ## Run all unit tests
+ vendor/bin/phpunit --color --group Unit
+
+.PHONY: tf
+tf: vendor ## Run all functional tests
+ vendor/bin/phpunit --color --group Functional
+
+.PHONY: static-analyse
+static-analyse: vendor ## Run static analyse
+ vendor/bin/phpstan analyse
+
+.PHONY: performance-tests
+performance-tests: vendor ## Run performance test suite
+ vendor/bin/phpbench run -l dots --report aggregate
+
+.PHONY: rector
+rector: vendor ## Check all files using Rector
+ vendor/bin/rector process --ansi --dry-run --xdebug
+
+
+.DEFAULT_GOAL := help
+help:
+ @grep -E '(^[a-zA-Z_-]+:.*?##.*$$)|(^##)' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[32m%-30s\033[0m %s\n", $$1, $$2}' | sed -e 's/\[32m##/[33m/'
+.PHONY: help
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 5ff61e81..61533fb1 100644
--- a/composer.json
+++ b/composer.json
@@ -58,23 +58,23 @@
}
},
"require": {
- "php": ">=7.2",
+ "php": ">=8.0",
"ext-json": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
"ext-sodium": "*",
- "brick/math": "^0.8.17|^0.9",
+ "brick/math": "^0.9",
"fgrosse/phpasn1": "^2.0",
"paragonie/constant_time_encoding": "^2.4",
"psr/event-dispatcher": "^1.0",
"psr/http-client": "^1.0",
"psr/http-factory": "^1.0",
- "spomky-labs/aes-key-wrap": "^5.0|^6.0",
- "symfony/config": "^4.2|^5.0",
- "symfony/console": "^4.2|^5.0",
- "symfony/dependency-injection": "^4.2|^5.0",
- "symfony/event-dispatcher": "^4.2|^5.0",
- "symfony/http-kernel": "^4.2|^5.0",
+ "spomky-labs/aes-key-wrap": "^7.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
"symfony/polyfill-mbstring": "^1.12"
},
"require-dev": {
@@ -82,8 +82,7 @@
"ext-gmp": "*",
"bjeavons/zxcvbn-php": "^1.0",
"blackfire/php-sdk": "^1.14",
- "friendsofphp/php-cs-fixer": "^2.16",
- "infection/infection": "^0.15|^0.16|^0.17|^0.18|^0.19|^0.20",
+ "infection/infection": "^0.25",
"matthiasnoback/symfony-config-test": "^3.1|^4.0",
"nyholm/psr7": "^1.3",
"php-http/mock-client": "^1.0",
@@ -93,15 +92,17 @@
"phpstan/phpstan-phpunit": "^1.0",
"phpstan/phpstan-strict-rules": "^1.0",
"phpunit/phpunit": "^8.0|^9.0",
+ "rector/rector": "^0.12.5",
"roave/security-advisories": "dev-latest",
- "symfony/browser-kit": "^4.2|^5.0",
- "symfony/finder": "^4.2|^5.0",
- "symfony/framework-bundle": "^4.2|^5.0",
- "symfony/http-client": "^5.2",
- "symfony/phpunit-bridge": "^4.2|^5.0",
- "symfony/serializer": "^4.2|^5.0",
- "symfony/var-dumper": "^4.2|^5.0",
- "symfony/yaml": "^4.2|^5.0"
+ "symfony/browser-kit": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/framework-bundle": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/phpunit-bridge": "^5.4|^6.0",
+ "symfony/serializer": "^5.4|^6.0",
+ "symfony/var-dumper": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0",
+ "symplify/easy-coding-standard": "^10.0"
},
"replace": {
"web-token/jwt-easy": "self.version",
diff --git a/ecs.php b/ecs.php
new file mode 100644
index 00000000..d489c290
--- /dev/null
+++ b/ecs.php
@@ -0,0 +1,124 @@
+import(SetList::PSR_12);
+ $containerConfigurator->import(SetList::PHP_CS_FIXER);
+ $containerConfigurator->import(SetList::PHP_CS_FIXER_RISKY);
+ $containerConfigurator->import(SetList::CLEAN_CODE);
+ $containerConfigurator->import(SetList::SYMFONY);
+ $containerConfigurator->import(SetList::DOCTRINE_ANNOTATIONS);
+ $containerConfigurator->import(SetList::SPACES);
+ $containerConfigurator->import(SetList::PHPUNIT);
+ $containerConfigurator->import(SetList::SYMPLIFY);
+ $containerConfigurator->import(SetList::ARRAY);
+ $containerConfigurator->import(SetList::COMMON);
+ $containerConfigurator->import(SetList::COMMENTS);
+ $containerConfigurator->import(SetList::CONTROL_STRUCTURES);
+ $containerConfigurator->import(SetList::DOCBLOCK);
+ $containerConfigurator->import(SetList::NAMESPACES);
+ $containerConfigurator->import(SetList::STRICT);
+
+ $services = $containerConfigurator->services();
+ $services->set(StrictParamFixer::class);
+ $services->set(StrictComparisonFixer::class);
+ $services->set(ArraySyntaxFixer::class)
+ ->call('configure', [[
+ 'syntax' => 'short',
+ ]])
+ ;
+ $services->set(ArrayIndentationFixer::class);
+ $services->set(OrderedImportsFixer::class);
+ $services->set(ProtectedToPrivateFixer::class);
+ $services->set(DeclareStrictTypesFixer::class);
+ $services->set(NativeConstantInvocationFixer::class);
+ $services->set(NativeFunctionInvocationFixer::class)
+ ->call('configure', [[
+ 'include' => ['@compiler_optimized'],
+ 'scope' => 'namespaced',
+ 'strict' => true,
+ ]])
+ ;
+ $services->set(MbStrFunctionsFixer::class);
+ $services->set(LinebreakAfterOpeningTagFixer::class);
+ $services->set(CombineConsecutiveIssetsFixer::class);
+ $services->set(CombineConsecutiveUnsetsFixer::class);
+ $services->set(CompactNullableTypehintFixer::class);
+ $services->set(NoSuperfluousElseifFixer::class);
+ $services->set(NoSuperfluousPhpdocTagsFixer::class);
+ $services->set(PhpdocTrimConsecutiveBlankLineSeparationFixer::class);
+ $services->set(PhpdocOrderFixer::class);
+ $services->set(SimplifiedNullReturnFixer::class);
+ $services->set(HeaderCommentFixer::class)
+ ->call('configure', [[
+ 'header' => $header,
+ ]])
+ ;
+ $services->set(AlignMultilineCommentFixer::class)
+ ->call('configure', [[
+ 'comment_type' => 'all_multiline',
+ ]])
+ ;
+ $services->set(PhpUnitTestAnnotationFixer::class)
+ ->call('configure', [[
+ 'style' => 'annotation',
+ ]])
+ ;
+ $services->set(PhpUnitTestCaseStaticMethodCallsFixer::class);
+ $services->set(GlobalNamespaceImportFixer::class)
+ ->call('configure', [[
+ 'import_classes' => true,
+ 'import_constants' => true,
+ 'import_functions' => true,
+ ]])
+ ;
+
+ $services->remove(PhpUnitTestClassRequiresCoversFixer::class);
+
+ $parameters = $containerConfigurator->parameters();
+ $parameters
+ ->set(Option::PARALLEL, true)
+ ->set(Option::PATHS, [__DIR__])
+ ->set(Option::SKIP, [
+ __DIR__ . '/src/Kernel.php',
+ __DIR__ . '/assets',
+ __DIR__ . '/bin',
+ __DIR__ . '/config',
+ __DIR__ . '/heroku',
+ __DIR__ . '/public',
+ __DIR__ . '/var',
+ ])
+ ;
+};
diff --git a/infection.json.dist b/infection.json.dist
new file mode 100644
index 00000000..9568eaf3
--- /dev/null
+++ b/infection.json.dist
@@ -0,0 +1,24 @@
+{
+ "source": {
+ "directories": [
+ "src"
+ ]
+ },
+ "logs": {
+ "text": "infection.log"
+ },
+ "mutators": {
+ "@default": true,
+ "global-ignoreSourceCodeByRegex": [
+ "\\$this->logger.*",
+ "\\$this->cache->save.*",
+ "parent::build(\\$container);"
+ ],
+ "MBString": {
+ "settings": {
+ "mb_substr": false,
+ "mb_strlen": false
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/performance/JWE/A128GCMKWBench.php b/performance/JWE/A128GCMKWBench.php
index b299ef29..2bb55609 100644
--- a/performance/JWE/A128GCMKWBench.php
+++ b/performance/JWE/A128GCMKWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'A128GCMKW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128GCMKW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A128GCMKW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128GCMKW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A128GCMKW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128GCMKW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A128GCMKW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128GCMKW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A128GCMKW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128GCMKW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A128GCMKW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128GCMKW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,7 +67,9 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"crbOdBQqlc8WJZ9ZTb42xYoy2i5_KBoSOeJSg_6aeG0V1gxfVqe_AIkS9Nv8Vmil785R909ntom9Fo1GPZnt9mv-UfBeON7V1shRYjtOog6KouOvnA0YROvNr32AhE_tVrxzFyFVLRwJE0kfXvG29GhwTxhz2ugCqNZdIPJL5awM5BXosxlSiZRsHRMYSsULvfOTPqb2JkWbT1Z7bgCmm885-U01uaA","iv":"RUYx0bI8ywiHbgOI","tag":"rRPgmpp8UvOOhT_SVOGaIg","aad":"QSxCLEMsRA","protected":"eyJpdiI6Ikd4V1R2ZG96Zk1KZUcxQmMiLCJ0YWciOiJXYlM1Nk93NnUwUl9oZDZJQzZaZU9RIiwiYWxnIjoiQTEyOEdDTUtXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"r3zhEPolUXhQ0kHvg-wyxOYDDilfL4WJWAlfxlwIIm4"}'],
+ [
+ 'input' => '{"ciphertext":"crbOdBQqlc8WJZ9ZTb42xYoy2i5_KBoSOeJSg_6aeG0V1gxfVqe_AIkS9Nv8Vmil785R909ntom9Fo1GPZnt9mv-UfBeON7V1shRYjtOog6KouOvnA0YROvNr32AhE_tVrxzFyFVLRwJE0kfXvG29GhwTxhz2ugCqNZdIPJL5awM5BXosxlSiZRsHRMYSsULvfOTPqb2JkWbT1Z7bgCmm885-U01uaA","iv":"RUYx0bI8ywiHbgOI","tag":"rRPgmpp8UvOOhT_SVOGaIg","aad":"QSxCLEMsRA","protected":"eyJpdiI6Ikd4V1R2ZG96Zk1KZUcxQmMiLCJ0YWciOiJXYlM1Nk93NnUwUl9oZDZJQzZaZU9RIiwiYWxnIjoiQTEyOEdDTUtXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"r3zhEPolUXhQ0kHvg-wyxOYDDilfL4WJWAlfxlwIIm4"}',
+ ],
];
}
@@ -66,10 +77,12 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'oct',
- 'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'oct',
+ 'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/A128KWBench.php b/performance/JWE/A128KWBench.php
index 93616747..d20b99df 100644
--- a/performance/JWE/A128KWBench.php
+++ b/performance/JWE/A128KWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'A128KW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128KW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A128KW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128KW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A128KW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128KW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A128KW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128KW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A128KW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128KW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A128KW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A128KW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,7 +67,9 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"CGRKzNX-H6vQCdP3T_1ftzz6hFMMBWKSysDWPVmTG9TCviDXZh0u8k9WX42PiX-BrdRxxjIw9JMKgq3pxw8kQu4KyHeta4iio8OHr1Qjy24LPGRg9_Dv4Yt2i_ytHV_QbUX1Dg_YPMcca9G4BJA56927fvtGXA0ke0pjmPYceWSdZGxKO4MLLGJCHmi5xceIxhCy7QZnEfQOEv5bR2v_G0UDAi_eQM8","iv":"_PsWB_V0xIxq8ulL","tag":"RkfU2WT1DKGXFLgGZeCTnA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"BX5Kx_b0rd5qUH0UqJe3h8Tu6bAPHLg-ZMFi7qHnEO7t46orRoW-xQ"}'],
+ [
+ 'input' => '{"ciphertext":"CGRKzNX-H6vQCdP3T_1ftzz6hFMMBWKSysDWPVmTG9TCviDXZh0u8k9WX42PiX-BrdRxxjIw9JMKgq3pxw8kQu4KyHeta4iio8OHr1Qjy24LPGRg9_Dv4Yt2i_ytHV_QbUX1Dg_YPMcca9G4BJA56927fvtGXA0ke0pjmPYceWSdZGxKO4MLLGJCHmi5xceIxhCy7QZnEfQOEv5bR2v_G0UDAi_eQM8","iv":"_PsWB_V0xIxq8ulL","tag":"RkfU2WT1DKGXFLgGZeCTnA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"BX5Kx_b0rd5qUH0UqJe3h8Tu6bAPHLg-ZMFi7qHnEO7t46orRoW-xQ"}',
+ ],
];
}
@@ -66,10 +77,12 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'oct',
- 'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'oct',
+ 'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/A192GCMKWBench.php b/performance/JWE/A192GCMKWBench.php
index 5101406f..594555b8 100644
--- a/performance/JWE/A192GCMKWBench.php
+++ b/performance/JWE/A192GCMKWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'A192GCMKW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192GCMKW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A192GCMKW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192GCMKW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A192GCMKW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192GCMKW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A192GCMKW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192GCMKW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A192GCMKW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192GCMKW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A192GCMKW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192GCMKW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,7 +67,9 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"8-zEiA24sXMcmZl33nvu7sdP5gIupkNAcWkg2qE5bfRdReOiocGlYOr0GPj9SjJDEJUCdbMbsn3qx6cFkZaPmV_G5w7dNfX8ALhLVhSkbypW2C2TGGxaEEAnGJgjwBhi-wDd-k1bAU0htRszUi_RsY3sfb5ssDJZQkyslxtubVSTqWkpH0tuotxQxac2mDHrWAp0VYnpGSJSKPy3q3UGlxY812zaEOc","iv":"dCoOw5_olUz_kCjN","tag":"TGiZO1fqeb0pfdTlc5VYJQ","aad":"QSxCLEMsRA","protected":"eyJpdiI6IkNST0xGWS1CbVVUSmoxQlIiLCJ0YWciOiJVVTFtdExPcldCeFRaYW5OM2FKZWpBIiwiYWxnIjoiQTE5MkdDTUtXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"Z8_qLErKWsleFJuq1jBXWcJovvHUdhvJfZa9ecDbLJw"}'],
+ [
+ 'input' => '{"ciphertext":"8-zEiA24sXMcmZl33nvu7sdP5gIupkNAcWkg2qE5bfRdReOiocGlYOr0GPj9SjJDEJUCdbMbsn3qx6cFkZaPmV_G5w7dNfX8ALhLVhSkbypW2C2TGGxaEEAnGJgjwBhi-wDd-k1bAU0htRszUi_RsY3sfb5ssDJZQkyslxtubVSTqWkpH0tuotxQxac2mDHrWAp0VYnpGSJSKPy3q3UGlxY812zaEOc","iv":"dCoOw5_olUz_kCjN","tag":"TGiZO1fqeb0pfdTlc5VYJQ","aad":"QSxCLEMsRA","protected":"eyJpdiI6IkNST0xGWS1CbVVUSmoxQlIiLCJ0YWciOiJVVTFtdExPcldCeFRaYW5OM2FKZWpBIiwiYWxnIjoiQTE5MkdDTUtXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"Z8_qLErKWsleFJuq1jBXWcJovvHUdhvJfZa9ecDbLJw"}',
+ ],
];
}
@@ -66,10 +77,12 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'oct',
- 'k' => 'KuFiR-n2ngkDNZfBXWS6cCGXrYonVUiH',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'oct',
+ 'k' => 'KuFiR-n2ngkDNZfBXWS6cCGXrYonVUiH',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/A192KWBench.php b/performance/JWE/A192KWBench.php
index f5d48184..b5f98ba0 100644
--- a/performance/JWE/A192KWBench.php
+++ b/performance/JWE/A192KWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'A192KW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192KW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A192KW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192KW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A192KW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192KW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A192KW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192KW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A192KW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192KW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A192KW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A192KW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,7 +67,9 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"0TnU-JWyzWNe_u5lzwI1PmI1P1A_9rDJSy-1-aVqgu5I4h9L7nGaqMpfJ2VRnEky8BG8khRJ9ytdgPEr5xlMw5Me1OHhcALIvjdtUO_yQvj4ndn6VWSAuyfC4WzyBdRhwufh4RYPhXhh4mXYmvCzfQYD9KCiCB2PyA-WFg6vOgp5_kBbm1auxsarPkqFwfqNAMBavnKnuliaZviJE0708kWMJE8PuBA","iv":"4K9DpGqWCJ6MNNRn","tag":"s5EsBBRfzlFMnLuUU8TMPg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJBMTkyS1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"GU6WSPFGiMK2hMXOQv6jbSZlTQ0p1hQL3KOIPTr9BYw6PtoTbrdUrg"}'],
+ [
+ 'input' => '{"ciphertext":"0TnU-JWyzWNe_u5lzwI1PmI1P1A_9rDJSy-1-aVqgu5I4h9L7nGaqMpfJ2VRnEky8BG8khRJ9ytdgPEr5xlMw5Me1OHhcALIvjdtUO_yQvj4ndn6VWSAuyfC4WzyBdRhwufh4RYPhXhh4mXYmvCzfQYD9KCiCB2PyA-WFg6vOgp5_kBbm1auxsarPkqFwfqNAMBavnKnuliaZviJE0708kWMJE8PuBA","iv":"4K9DpGqWCJ6MNNRn","tag":"s5EsBBRfzlFMnLuUU8TMPg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJBMTkyS1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"GU6WSPFGiMK2hMXOQv6jbSZlTQ0p1hQL3KOIPTr9BYw6PtoTbrdUrg"}',
+ ],
];
}
@@ -66,10 +77,12 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'oct',
- 'k' => 'KuFiR-n2ngkDNZfBXWS6cCGXrYonVUiH',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'oct',
+ 'k' => 'KuFiR-n2ngkDNZfBXWS6cCGXrYonVUiH',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/A256GCMKWBench.php b/performance/JWE/A256GCMKWBench.php
index cb73152c..06808b29 100644
--- a/performance/JWE/A256GCMKWBench.php
+++ b/performance/JWE/A256GCMKWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'A256GCMKW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256GCMKW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A256GCMKW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256GCMKW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A256GCMKW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256GCMKW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A256GCMKW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256GCMKW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A256GCMKW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256GCMKW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A256GCMKW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256GCMKW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,7 +67,9 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"mdruX2DotBCFo0eYa0Hb1yOCdv2Dpg6tWBgTWUZ6Y9dLvZ2N-rJRjqgbyV3otZ_fpCurFdY5cX4Nk2G6A4tSw9Ixp5aQDaZgXasR_EhQjjiPSDjcSbQmpz0w8qGYmPX6OhH2G0iKtp2aFjgHK4tHvTl4abu72mqmJgoOTzYCiyin0BujbTB33v1TsM-0uPWdY9LziVkf4z2DV81ehj9iHbj7_cq9ABk","iv":"aeHHwTKalLxq-s_2","tag":"9lF1kYUWyvkXFT-r9hwsoA","aad":"QSxCLEMsRA","protected":"eyJpdiI6IjdHVEJDcXBjQktORnktN20iLCJ0YWciOiJGV29vY1dESDhSb1NfZVVQREQ1UVlBIiwiYWxnIjoiQTI1NkdDTUtXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"3nTasDHjqnzYhjJRwcxpCfs_lnrrT2YUzI8EdnbVI4I"}'],
+ [
+ 'input' => '{"ciphertext":"mdruX2DotBCFo0eYa0Hb1yOCdv2Dpg6tWBgTWUZ6Y9dLvZ2N-rJRjqgbyV3otZ_fpCurFdY5cX4Nk2G6A4tSw9Ixp5aQDaZgXasR_EhQjjiPSDjcSbQmpz0w8qGYmPX6OhH2G0iKtp2aFjgHK4tHvTl4abu72mqmJgoOTzYCiyin0BujbTB33v1TsM-0uPWdY9LziVkf4z2DV81ehj9iHbj7_cq9ABk","iv":"aeHHwTKalLxq-s_2","tag":"9lF1kYUWyvkXFT-r9hwsoA","aad":"QSxCLEMsRA","protected":"eyJpdiI6IjdHVEJDcXBjQktORnktN20iLCJ0YWciOiJGV29vY1dESDhSb1NfZVVQREQ1UVlBIiwiYWxnIjoiQTI1NkdDTUtXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"3nTasDHjqnzYhjJRwcxpCfs_lnrrT2YUzI8EdnbVI4I"}',
+ ],
];
}
@@ -66,10 +77,12 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'oct',
- 'k' => 'OgUyABAPIkI-zFg3doqsv_GH-4GTGOu3HGnuG9wdxCo',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'oct',
+ 'k' => 'OgUyABAPIkI-zFg3doqsv_GH-4GTGOu3HGnuG9wdxCo',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/A256KWBench.php b/performance/JWE/A256KWBench.php
index 4e88d509..b7cb0c9a 100644
--- a/performance/JWE/A256KWBench.php
+++ b/performance/JWE/A256KWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'A256KW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256KW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A256KW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256KW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A256KW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256KW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A256KW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256KW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A256KW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256KW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'A256KW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'A256KW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,7 +67,9 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"Js4OCNZs2s0En9-JTEzHntCLjUYHwd9mgEuMgTlQQCACrTcwctobqEyEXIEnHhFqQb6FDi7z6gXrY4pJdMnZAbY-DF2KlzPewPJdPCtncGMJ6Q-tJ7_aNoBQbR9yFpcdPqzZKG5l_g3JjI5n2z1pP2T3-tvwFN6UJvUBy-gQJgkosXlEXEcDcpGcGl41wLUwv-uVg-T6_i52_MDHg4CqST_5qugu6_Y","iv":"nqT3ZOuxL5i-6zFa","tag":"6XRD6atZ3kX1AXMFw9Np5g","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"L7ZhHtUPPSyrxyE36QFyt7dlb6GSmPZSoP-1HUkAe0d8PDKIXLwjAw"}'],
+ [
+ 'input' => '{"ciphertext":"Js4OCNZs2s0En9-JTEzHntCLjUYHwd9mgEuMgTlQQCACrTcwctobqEyEXIEnHhFqQb6FDi7z6gXrY4pJdMnZAbY-DF2KlzPewPJdPCtncGMJ6Q-tJ7_aNoBQbR9yFpcdPqzZKG5l_g3JjI5n2z1pP2T3-tvwFN6UJvUBy-gQJgkosXlEXEcDcpGcGl41wLUwv-uVg-T6_i52_MDHg4CqST_5qugu6_Y","iv":"nqT3ZOuxL5i-6zFa","tag":"6XRD6atZ3kX1AXMFw9Np5g","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"L7ZhHtUPPSyrxyE36QFyt7dlb6GSmPZSoP-1HUkAe0d8PDKIXLwjAw"}',
+ ],
];
}
@@ -66,10 +77,12 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'oct',
- 'k' => 'OgUyABAPIkI-zFg3doqsv_GH-4GTGOu3HGnuG9wdxCo',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'oct',
+ 'k' => 'OgUyABAPIkI-zFg3doqsv_GH-4GTGOu3HGnuG9wdxCo',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/ECDHESA128KWBench.php b/performance/JWE/ECDHESA128KWBench.php
index cc693de9..4eaff11d 100644
--- a/performance/JWE/ECDHESA128KWBench.php
+++ b/performance/JWE/ECDHESA128KWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A128KW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A128KW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A128KW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A128KW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A128KW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A128KW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A128KW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A128KW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A128KW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A128KW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A128KW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A128KW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,30 +67,78 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"8WWzoKIrl16O3boPiTvVivn28js5b6S3JbOMySZ-ujmMCvOeyoEIdLXSxycB0gQeTFsHZ6g-oZqkuJDPNBTbSZznmLjRZQoarfVfxe5jzzJfvK3t89Rkd-phVyUgD4-RNXjuUItMjje3fMTTpw_E1ai6PuGmrZedvscj6BuSkvS4qWzxcZ9234xZzlCRgMzEBG3h4IUu5sWhXwictyMwVUHMBeq0mLSBJO9FEk_TyHI","iv":"aSNbaiq7SIh-6u9FjvhV_w","tag":"uf32NOEXoG-kHG19cc3T6A","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiI3bUFZY0VKWkJXYTR5Yk0tT1JsaFBnSUtMeFh4OEszNXU2S0FjNzZBUFVJIiwieSI6InhESzQ3eVJFYlI1OGdHNF9FTVdCTnZ0UThZVXRCN2dTc2pSeld1aG1iQVEifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"TTZg275GMEwpqiuHVwBi_1vu1hmR5juJOPRB_pPWjUUQ7zUtDAIp3w"}'],
- ['input' => '{"ciphertext":"--WXckNnEfBZgO50CgXLkNSwAHnWhzBlwyMl-JlPYzicmw_P5I9oX5kb-Hz8nstSyhwgrepcX1Q0ALDOD3Pdbf-wVuA-AryGP-dT9aWkgtopsHZv0bI1Hvreb6tmtI2qDq5zwM03bBlKzVMort6g3NXqvIBto1wskRsTmfDVnBwGXbEPWVPAHDHCxFJGZ6iQ8DeGjEgwQNdt565ZgOsgTqBV3dNUY0hhnXYDkEmteiE","iv":"L8ZADssAMXIy8bSmHF7B4Q","tag":"l0fPMEEIiml_GoAPppneYQafGgrvCHvM","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJoT3NXMzRIeWRTZEswcHNmd09sbW81ZFlMaU9UNllBX2tOU3RUN1BxQ0I4IiwieSI6ImE0c2RqMTBJakYzcUpCVWJwcS13NEh6QzI2ODF1UjY5TXl2MVFYNVFQX1UifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"6edmcKAhRI1HkZssnFGMDHkYwwlzZ_d8Ij6ZoW27BMtOmueRI7JXivdikiB4Te7HzGPyoygN3X0"}'],
- ['input' => '{"ciphertext":"ElP-FfX2PlRU6xQL4auDQejBqnwYcDLXMpyY7snEtoSj4ITHwJmNpGSD1yh0N_yDeSPf5HFqLDlzM8JZZQ83pOY_Sn5iO452WFeWtjNYOD9XB1AwPOQdBg25MSZxIdwKvzbYAs3FILw1swuHgXfdomGDJhIKQbKSBinAziGuvrCAio1phqwLrRG2vJApmWBHXjbuJzwv_K2ZBDLf8SDFvmTbuZZ6mm4fPZSWyEo71p4","iv":"w2LROvAqZDdkyiTv5CTMIg","tag":"QF0y2Be8wRWiAONqVwYFfoPQjc0NRrL8lO3if-SpBq4","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiIxTWtRWlc3MzRqZ1l1V0tFSjFrWXdNa1lGclZJeXd2QVJaMXdvTEhNOUg0IiwieSI6ImdSTktaOFZpQ2hJM3Y0RXhiVzUzYmNSY3diS1MxYlQxLVRQc0p5TURfaU0ifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"r0cwT0y_zzbV4zVXEY5Sh66bKtX32971vZ5ygeoCTtpN1oEuTANEZ9bWzJMuC3EPnuYO4XWopaac5FFJxBQt3hX4wvah9kkJ"}'],
- ['input' => '{"ciphertext":"vxE_6ULATftYhRAW86hSchRc49VscHXtg3bLhSFHZns3tVd6zIMo0xG0q6psAEGRmGs2Z4DwUAbrrZ-6YSPn1xjMEgMhSyXqZSM7rEca0bFeaM5N9cIKuiaSOLKGNiJ8SATtoUlg9wu3CU_ycCYoXo1dlmfwaRHD419ycqVDI2DVZDg6iuhPR2rIW4FZujn-psbQhZClozNOWkORkJSp2lJGIOs0jkI","iv":"lAOeapEH6BRLDmQl","tag":"6RoKYl11I-iu_-nn_qxTPQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiItSHlUVWhHUXR1dDVxTUJrdGIyLUVyQTRrRnFQZ2dYU1ppN2ZkMjJ6YXZVIiwieSI6ImpsUGhad0w3S0I4YmJtZ1Y2eC05R2JJZFh0N1NaaFJlZldFYUVCWTN5YXcifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"HzkOCsTSv-V9-QwEJbMt7rpHoU-rPgIE"}'],
- ['input' => '{"ciphertext":"L2Z_gtDHQyWWcI6VMZzje4dxVbKGX6tS6DsJITn5HzkaaQlXK8w2h4RD7VGNVbA2lg1yeGWf3i2Z_3gZPTYKLUMtDEUIJMSOyNZHzRWvcaCkgBLp3vBbkJevH0Wc-P1QIdhIByUvgPTo6OrTKMT1yonlQ8U3g6_xovTID1yoc2qdEVB0inx3Tq7HVRlto7nMI6Z48VT9CN5r4SmS3jXAZsortsG2k54","iv":"wol3soUEVXh0OYxF","tag":"tYvCovXomiyroVCYT74iig","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJhQXQ2V1FIVFduVDdUV0JPaHBPNEN4ZmNXUUFUNFhMcFl6Y3lpTTluZmZjIiwieSI6IjFwWEpmVkZwamQ1QWdSTEY4UUprNEZ5QUN3TElJaE90U0plb1FIQnU1NWsifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"FiU_lrERwsTL4qvnevyf2DxkjhxQ5v-ArGaHg7G4D24"}'],
- ['input' => '{"ciphertext":"6G-SHyO3wk8rAnYTGwxIOmG-1Aq7ujSC__aqG5iaDI6RX9YtcZdOAqIjtzKG_itRHa1uxGMzJqROG7haHEJpA62NGt8et5njC6oqsYNl2RC8YwwtJysK6_hvcHlxaIDFKp7ZQ3vgKvips4Ro8AkR58XpH1GF_Rk1RsFbJONWMDe_vK98tf6CSruK9LLu6LYU8JlwL0bUGptsdHPJRKQkM02yg4jA9nM","iv":"ih0vR-rb80lr_WVg","tag":"L7-8h3JG_st0sedwDHC4iA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJOWU1lbjlQcmE0Nm5XZFlBbW5KQ0FmcmNtZjBfT243cEVkWllkMFhBSmZjIiwieSI6InZYYXZxQmlNblhUUkZud2N3OXg5WVc5NDk1enQ3X3hBbDNFN2ZBdkxvYTAifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"Bgdqgux6pY8oUbufB7iHfMgb-EsffDBtOIOEDOqS45K85QY5dmotPw"}'],
- ['input' => '{"ciphertext":"f3sJ-VeUMSCDCs6_ym7mG0bGOJZwD54qu6xTULFgV_LZHLhLpzUFG1MX38EHSLay70c6g1Ob9nxFYc-EYiULNkfUfvpTFK6E146zQZmuKCS2u04KpDHrriBPutvJue60HWVuejkscDiP2-wzRuU4qskGzWCDTzj-YvZw5ftdhYztgolCZQDDfe67yC6ywpdOS4WLsk6s4yZJfK4TIRlsVxCPueU6wyQvkvO_EF8_PY0","iv":"eGtwRbrxNeaBdTp6yIiZtg","tag":"ur27HEz8ch7Oqs2uZKpybw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJ2b1dyQkd5SGJ2R1ZJR0piOU5lV3lPcm9VRkZZWl83ZkN6TE1sV1dlQUROSU8za09BMU4zNkZnelVaYW93eUdkIiwieSI6InlqWGtWUVdKQi0yWWl3azdDRFpySk1yd2NPald6dEV2czVUVzdYV2pZSVFYTTMtOFZncW1BMGt4d3ZsSjZFQm8ifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"d8JZuYKkoEYF-DveajkvDTUouMun6X4OmsAGDb9p1qOMX2KmwNfvUQ"}'],
- ['input' => '{"ciphertext":"TiMVN3-mo0Rcu2SG04FNiYqDSIk60BH-soXYLQgq4J457UFWDCMPBf6oVRAYTZJwiDEONWdc2iFEW7CfRU_dMc2DsO0kHMME3w5Uqptm5Nay5dcIJrcoICptnlPxupM_qyDgKOmF-x5oelgWdy5erSrQ-JX7bxTTw5TAHQ-iRlSZFb_eecYaf92V8CKqS9K2KqPTiZ_1fIiZnqQHyLmggqmifeWPHiO8ox3kI-LtebA","iv":"B9a80FX3up3SuV1Qqs9ydQ","tag":"rsvZ-bvbD2pMoCvYT8Hsag4STmKjcAi2","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiI3SDhjU0xzeWFmck5McFlZWFRTWmRLMlIwLURZUFFfVkkzNFA5WkgtM0VPSGV3aU0tdk41SkxxSE1HMzRFay1VIiwieSI6ImoxR0FmMjVCNm1SUE1lT3lwS2VpQk50ZmphNVZYMV9DRE1YcGIyRmlaajhxckc1WnBFOWtKZlV2Q3M0VC1PVU4ifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"yELqAjD6BDP4BjRf8Wbfb9vLj4tWpjjUiYLyb69Zo7x2BP7Dp1LhpWSDwKugswmRK5Tmhlqt1OM"}'],
- ['input' => '{"ciphertext":"NssjbtiTmnZrm5A5QMC-wS8oY8jVNRhs3b0cZWpEYdbFhtMMEOv0yI2JNLEkaA2utQs2O_GnIZbodCp6Dr1UoirPmX5GPiBa3wRQo4hflfCLY_tZ2JBaXB0ZFSokUEOZSOnbSNZ1Pa6EAy8QhAOwCgj5yrPbq6bvBv-JMfBS6YxhA3b7q1PV6VSkLWHn-FTvsMp3HMjzMRgj_l_Fz5n5Z-st0td8rq45PR0nlKgEnKI","iv":"l8XxXvQp-M8rIgA-_xkuCg","tag":"c2GrOJR84Xdjp-i4QtIYrjIbtDKtPvQ3Or4g9cGQP5Y","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJ4NHBOLWEwd2NkbVl5RW1kb09uUUJFR1o2OHVXNmVPUUlaZ29sMHhDaGU4V0pjcU1lMkQ0MC1UcEc5S2VhSzZqIiwieSI6ImVfQXNZM3pPSktYYUcwNG15RFFmUFdZSkJ3eUlXRVJyNGJZMTExTnJsc2x4VWRTT2laa0ZLTWtGdzUtQkF2VmYifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"jWzJiC_cdSHreMdQ2MChUWDGiE_QFY7KkTtLTEuHHzG7E-5PCFMfnkSeZ75vrqtawqm0XwsVBPir1lDkC-mKMUe7mHEr1dPQ"}'],
- ['input' => '{"ciphertext":"Mi_2P4e8uiptwMNQrUfTeQyY9-UpHdCsqTtCgHyX2k2wkKCEksmO5uGqgFS4vP9js76i-baltDNes-xH2tGYEFZpv9hpT5Mh784RpChxPC_LneCsN9_52SibnJO8u4umCyF3pJfkUUB9QXPIQQ4qTuuBgzfAXthK9cMxNZPP94hRRZgj3ZnbE3I36_NgANfQ2XVuGF3q6KQ-55KIFDL837SPRuNfzEM","iv":"O6u6sfSNvozzYC7k","tag":"e55FLRLwxKbKh5uudliVCA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJueU9UVURWUTBmV3RmcHFWc2lCZC1jLWdBRFdhVExoZEFiTmNiazBaMjVWc3Jhd29uQkZyQVVIYk51Tl95Z181IiwieSI6Im9nWkZlWVhVS25CUkhpbzJLYWJvTllNXzVCU3l0UzFDVHZ0SzZqMkxXb2JjWGhjSzJvU2cwdGJpQS1YRmxGNl8ifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"6hywjs7eY_AGzE0r4AcmM1pw_ET6hwFO"}'],
- ['input' => '{"ciphertext":"B---FvtsBS1ABH1Fz6PbtVU5t_WxpPGUhIRvrpEP3_YKVu36i4TImczF-L3cgeeFjypkmbM6hblJQmek2QFL5x9GJF6KzobCv_3g5KkFBNfEH8NwOcdUbmsSsPOEI_5ZTwcno-hHcc1PrEueUREwpLyJ0oP-1IgOHJn4j8NqeqWEAtcxzvQbWonBDF6o2c70SgPzCGZy01dJvSEosudOGpJtsCm4hvE","iv":"WUxQgfmtQWZtX3Bk","tag":"B08AHwCsv5zO1ZmX9wbQHw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJYbUlNX1NVY3J0Ymd0VjBYOERrY19zVFl3bHphdnJPRGJFRFhmb1NNaF9FU2pFN185UkIwNXhIaWw5R29zTFNwIiwieSI6InlEZmdzSEFWaVdxVUZHaWdSNy1XYml3UWRhWldOLTFyeFpyNVJCR2dTV1NBdXVuUnRoQzRxQ3JOQ2FiblV0bVYifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"04KAt72HccxdDIiSjuzRXm9hpNwJcRkRLG6dzuQvBcw"}'],
- ['input' => '{"ciphertext":"2l8m7S7WgvbAgg5JvvxpHTkpIeHTVcJDDjZdJX3a-pakoEqw9UDbsIHGJE_W6Gl4bMaRhRTMTsg8_xoqoIiif-NYGZKhKvJ2CBifeVaTZJjdcQJKovjvpJGUBMtev7F4pPnTnLPnRnLax4MXgpkOTv9ryh69Knn8zbcktnO93kO6ImzRCK5hwRE9hS82Bg-2Y4eNBsnsHAfkFCU8UX5z9nTOLDyQVns","iv":"aWjEAIckOJ5SxsrB","tag":"UNJ1ghRwzGG9wDzbnAdwrg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJ4UUNhckRYU0tRMG81TlZOTVE1RmptWFFoNWFFdWpzV2pJRUM2Q24zdGdybG92OHl1VlkxWEh1cUdpTXF4MUplIiwieSI6IjQxMG9vLUsxRDVoTGxPekxIV0NjREV0eGsybnJVYkVLTUdoMEpZYWxZaFNiR0pXWkd1Vy1OV09zeDY4dzR1dHgifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"M1FUr3rtiak6u_GUN0gm3Ahn7sjIMon5RmO3lVOrgXhnmHvLfgw6Uw"}'],
- ['input' => '{"ciphertext":"7kFxr0VKVbmJg_ro-7Fj8e6sQBKsQefPB1xQ-_FuUL1wS8w5CA7lnIpQTXoAwbFMClP3U62mrfz26d3EVHDi1b5sWoUui3V2OnLD6CxqpmJdAHQUgHeYaOglgfJWLJryqn6b1X2CJ8qcg5vy8rqPHHghAY0tgA3iA_OcPuYc9383yLWTcLmghRKwa5yw6zbYKXBXdT2WY8Leum9nqvZT4rTMeO0_QiOlgn-qFk2n5yM","iv":"FluGprT7jlECz74k2s6R_g","tag":"nNRf2uQSRZwNNubODrXSrQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBWlI2VEdpbFRVdmxoZFVnWktyYjNIbkZ6alp6LTRJMzdrSDBxR3BQaUlYenQ5bEwtSnh4QVRiV09sblNLSm5FbUJVVFZ0empYS0l6cFA5eklfUGR1TTFSIiwieSI6IkFid1VHaTVTaFRtR2dEaVlGSko5LThjUGh4b1U0elZ3clQwWmtmLXpkZWIxYy1nRk8yUWF4a0JVYTFqT3FQeGxnUDJYeEpXSlBqNHlGS21ISlR6bzN4NWEifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"ZJAvb1EpUU7CI7Kr8NkGswvdCsumf1JVUF2IaAKGrxOdIJEbTocVPw"}'],
- ['input' => '{"ciphertext":"eUpwHP_TPDMYTRJl7rPvo1UI0EqM8JJtdcJ-D1MWmwF-xQFxSvnWz5P761SgRCu82FlMrrByl25n_XUo1GQs07FqeKWa4eGhOGGxVH3aKW_z6lfAG9inr_-Qh7iwZ2wZsvUsNyCJJJstFqRWSZSxplEeju-e-WOIJ-ztMNVn91DHfeTIiOvXfC1ZOgrrs5S9PpNA_NYXlzrMbgNTrq_i40CUcWKDZbKKNMQ3Fziegrc","iv":"gbzsDnsImZqjm_orj5JmYQ","tag":"MVARiMCpmzlErYES9-DfIWHAJbh0pwvz","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVXNDYWFtVzBsQW5XQWRlekZfZjU2Ml9yaTA5TllYcC1CRE1pU202OV9LakJqSkpwX2t1bWFrZVdTb1RGaEdVSnVONkVsYTl6WUZPVEUxdTVFSWJ4ZHQzIiwieSI6IkFBRnl1WEpuWlVOMnBrb3l2NHdLODhvaWJ3UENXckNYbGFUdkFVVXp2YlR3UUVmYnUtS0NxaUx5aFJZXzVCZkVvajJyZEVTU3ZJY1V0aE9tNFJNc3RjVncifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"8YEgqLWBvvBqyMymZ-Kpq9Bu_Z_NI01IqhJoSd8w2tTkTZTD4L95bSqa8JV-0z3sHjTiMYk6CwQ"}'],
- ['input' => '{"ciphertext":"w6l_-xk8sPZQALFwL_9P-PgatydHCrtTLk0adnp0f82x4uNGyViSq89VlOVYoztGr3nhklu7MjpoWXndPOYTEGWkZgfakAoWx_6ISGkz6D37__xDgJGdbbtzICJm-4Y3LeHJeuIQiO-CNiB3Rm2y6tvDjSEy9_xiy8D3c7ysZf9SeBNJDpQxSF3OKl4uc4OMa2om5DL_StA-AscWfDJOBLAJui3647g-SB-K4YWEkgk","iv":"bKfRWGKG6UPNSszCasPinQ","tag":"4VA0oS4q3qjwiqNjj4TI56qGlpIuG0D7UElG5DzisJo","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBYkgyUWxfd045Rkh5MzdzUmQwYlN4Y0N3aGRZRnFzY0ZfRXR5TmxXOWxtUy00ZHlSTTdibXFFVEcwSlZXMUp4SkpLZFF6eThMX2FIdUNLNUtzN01OdDR2IiwieSI6IkFIbXJmeDVrRS1kb0dfSGliM1FzV004QmROaVhZcDBQdUM5Rl9PRVI0cGhSM0hDMGRkSHRodnZrSmlWd1E4U0U0QW9IeVNKb2JDbUlxUzYyU1ZFT1BjMXIifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"kKII7fRYCmcPPEawSTbo3owo4zF2vDBSXNuDf3C-iqwqeF3GH8Fniz_nrWm5KW0Sed3lOtqI_1Hd24-coM-S7V6LAr4Cj2hU"}'],
- ['input' => '{"ciphertext":"JKi2Jhq-aOlzScwO3jc5rgcKGbtKwpnhsX1AxyfI9Wa2-AyKItYk3SBwRrHLjN0_xZ5eHXdIDHijcEy1dS03nAwY-skEejCcb8RAW2vmezBEzM0gBCciJ1s6kndKOHn8Jmz2-GmhD6JCK9by0J9BX9_Es0346tXe8d78lPjOxoGloJU2gnFJAU-bdSROAq9YSRo-_vUCzfoAT1f3PykDbZyiIaFlPow","iv":"wv9ZZWV6ifGu4vS3","tag":"tYQxcfD_FyTNNXI9a71Ffg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBTGJoYXNDektjbzBOeFhyUkhHNjFCOWFWQnJVSDRSYklGcnZ0VFJRMVliSDFHTjdhVVFLVktnc2pBM2tuY2tIMmRtOGJ2RDVFSVR6TnhkRUpyV0RyXzZHIiwieSI6IkFlY2xFZmtoRzlvSk9BQk44VjBqREh5Y0hZa3RjRjhsV3FIcVBXekxzNEJla0xURy11c1d2WmF6ZVFlbllsMndTbzBBVE81VFU0MGVzNmg5a1J5QVA5TDIifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"jANGIh49o4xDo0TQMPgf4duV4YGmtgon"}'],
- ['input' => '{"ciphertext":"OWkwZ0i9ldnjtjkBgZ93lsg3xm0l4OnP87tRuejocgTq6WYjs0QJ2U41A2akSVIG9T37T0SYnNKi41QGPWPeDpUcmp6u_xEg3-fsLn80eg6_xbjzU0lUNc42hSgRY2ADWM6osW4z0PKVGd22a2cH1be9wUn1BemDbop2RjKRTtocfVtJrqdjgIpVSelezRozQU22rM4GeF8bqLyc1VRaDkkKpkYkjXw","iv":"ihJleRGdOQ-v4d0M","tag":"yEqVOwAw4q1RodSCCWAVzA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBQkZlenV0NVFTWjdMM2hXZXliTmttbVZRQW5YNnduY01XUC1CU1JJYktkUmF2YlpIbDR3eTNDTkdGWTVpMG9YWHJaR0l3U3A0MVNXMWdOVTlVQm15UFVTIiwieSI6IkFUeW5yMmlMTV9wcXBSdUxkX3B5WlN4S2NYTEpBS2loZHZkRkszbkJJemhOWnhfMV8wZHlENGpVX2xqeHZUdm4xc1NUUHY4cmlOVzFpdmJCeFVvWmhsM1QifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"IKXDD3gFCARveeX9ziSCe0r31nCDv6Uwj4OILcAlvbU"}'],
- ['input' => '{"ciphertext":"mb1uW7cpr4CtkWbmp6r7sX9hNX12jZZTOwGg-5XQJsVQ3PQPkkn_N8Dr2EoKd9IyLqe9OYWrE_LBDd34mZKHYxhOYGXFR9xABwhop6fiBwDp7VGm5Oj_wv9cl2X3dCJ29WmAUTnGh4OEhBygBM39M9wUNib78Gmjz-iv5N5jceCEN-RMfnuIB0WL1OLq9n-bkRLDTXjSqFUxCkgrE9_nS_Sejoc4KsM","iv":"rnCX9ilzmkw1aose","tag":"K5bqlN1JpPHSQlMv7zFaWg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBU2FJT2FHZGNKWUZtaWtNREFRNkgwdVNZRkRuRGwwY01qYkxobnloN0ppUy1qZWQ3bDlENGc1R19vMUV1M0RCNEc5QVd5UEFmWEhJWWtWYmU3WV95YTBHIiwieSI6IkFWcDZUOG1taGxCSjZRdFBrSW81elFXOVlzd3FVQzRGTEUxVnE0VVhHTDRENjNxSWg4aWpWLVYwa0NZMndGWktKMkVzWTUyYnlMX1lENi1rcTJVaXNOUUUifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"n5DIQLcd4xliTvB-NioJe0A-STuCOVuU-JcHe70BCnWyoPvu4Xe9Dw"}'],
- ['input' => '{"ciphertext":"TTjx6GrYn8IphU_XqrzpnLscpDxvG0GTlb1UPulp9m6PwYwSE5IyqwyJef1UQ6-bHLSlWm7CSkp243d0QM3ysv-cdGwRkOG7aMmdUVoZkg6T_grmbm7nO-mvmmxawwwYOQI2Bxv0IPjR_-NdEldbMYf3HE_ZTNcBVvh-uWjYngHC7KqyVFeDc5Ye8FJp5tfr1ujrxAAjTXjRG5mkB6gF1QzMTUaP3PtrB6CIiUNfXJ8","iv":"ZJgv-pIn5y02EdJrLDykFg","tag":"WWOLFNkHRp042hZTLNzN5w","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6InRaZUVkYnZnWnUxQXhVU1NPZTZwcXJpUlF1d2IzdnZXNXQ1Z2ZtNWU2QjQifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"M7-Ghrpqtc3MWKvgfuzUrZY9ZOLsnX3u83WxPR--m2VoKsmmNueKpQ"}'],
- ['input' => '{"ciphertext":"YW-S0VU-C7aILn2lTDae6eDVB-1PBx3-xtjGNMIgkAhDmKw5h90HZa8Bf1xMPOYXDfJpD-_IZczeJE9v_nVjRXKux6ki8ldmPgchk48YA3rULAChVv5wwdzJWKQQ-MbrVeJLlBGfRKxrUKiUdLYOiYPaSHpE5eD3HAVhjh1HCw2emlSeyrFjB2ms8LaO9pFc4KHL0r0XBiGnui3We9buky4pYhsXazJq0JW5dO4yUUE","iv":"IlnmwXuwhzGvSxa330IzUQ","tag":"avy5dCCba8TduBUIdS59yQa39P3OhNyw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IkxjRnpxaDRjcnJGai1mcmhjVVNCcmUwcnRrakZJbVgxZEh0TlJYVnpqM1EifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"h7UDx4lLIhRBxrLweTs6pn5xYfvC3dLmmgZbPzxyEE4lkx0ANdsKIluO3EDhAZylmgMtSDaB4X8"}'],
- ['input' => '{"ciphertext":"_jUi2qOplWRy_udDIRaMFbzGtdNzT4YuoXzR7CKy5FEJfVdO26zZuBjqqxC1Pd-WUyhVdEh13AdfPV7ZToeG8kCGFZU_OrgrFB1gAbeQKoNOdiflFSI2KcjpoY4MH_UAeUPsmuBHJtDDogCCVrte4gYm1On9-6tLamq4pu3RPDKWLQZD_s2oHdgPdqi7vEptgvM7Uah3YDOdz5GRJnBEJKoimrxFEmvzIVGvQkSzmnM","iv":"wPRiBUHyAVQl9LgSEG6_EQ","tag":"kTRaUSmoyWuRWz18rBWibRY5F5qBWgEVDU3MQtfo418","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Ik1hOVRrMGJqeUJCVWtESnMwSjhibGw5dFluTHlrenptZzdiRFdJSWVIVkEifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"vTnxL_DFkfYJv_KxgbyqaWL0HQm2EnMLcFMf6ctT0T-BdhjZklCfo4kyJjCcrS1PP3ai1dKAlsENKHs4S2NPazriAoHrFpYQ"}'],
- ['input' => '{"ciphertext":"IK1g25wS9-ZrhP0F3UFvuX_mmy9V4Zc7QLpZ2rjIAyH3RQAcW2Lo3uC1VcG9MBHfvvehHYymtuHaS-jfHTkqlkAM8Umw9NfmUIjQvRyiW-1CECei2R-l1dlKAkoRwAgyj49CED3YkPb6PbybjHl0OCgLo4rUbimOxiRFayuLx51J4sODu-L8QmW2HKKqL0R9ULKKqhhIplGZWiLIdETXnkJPvX2y_uc","iv":"6LVsbG7JkJksn_eM","tag":"4GVV0TtMTLkKXriNKPspvg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlVYWVdDNk9PdHlsZzZqTVpidVFqblhSX2FpdXdVdzg0dDRSS3ZyRy1TMkkifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"9yDT0CM9r87O8RgN7tMLlMRT0J-PCN0b"}'],
- ['input' => '{"ciphertext":"S_NBXzk1YBP8AQURXaNk0fhLaIJWygBT2y51fQQRS26y2QgHoeF1uuC-anNPOQBDvWzYaz1dqvsqYjQ2Mr3TZr-i5VtFSxgQsIKBpSqiTw8-lAH3I2VCJFtlAWgL1rksAlVZqm0EzJJMWhhRVIgBOFlFX4bm4-osO-um2jU0y6YGvUknmoE4rk2yckTgNFbxJGgXlCg8eqAdBw6L7JmJH2GKFKluRk8","iv":"CFPOv1KwEy_rQsxq","tag":"2QNLpLlRtHCH4qdvrflUcQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6ImYyWkl4R1hNS3VIOXoyOC1hUTVLdzJYSjBLUlZ3VWhuYVBRdE9NUkd2aGsifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"A0CdqfbHoJUsAy53D_Zawqm_GvgcMIRLEuROny57LAs"}'],
- ['input' => '{"ciphertext":"U0YAR0NAlroFurFBi4JW6RcAIaWTEIhhoc-onI9cql6y2Az7g-Da5z0ZZXP-dmDAnEqdxLMdz9sSFou1_uvimrLWftlcxyYr1yzkFFbIblPw-hKkNUJNwbq6maTbFLuDeinCQYo7Z18qjihH22BCIhzcNGDUIOPtH9gnhtWlTx_FTNF2d85fUqDKU48vzWE_KU7jEPwLUM7mbldC6u-my95UaPkCeTE","iv":"qYDygzVjWQq9MHdb","tag":"GqfBJ_ucdjWKSLYMZKe-yA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlBXdE81ank0Yi1hQTU1b3V1eXoyT0FUek5WVFpyb1FpcXpqR1ZKSGlYWEkifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"nAXozH72PRPzt1qQNZbHdII6I7Pcbxxg7wqymlMNiWKh-_cILuFC0w"}'],
+ [
+ 'input' => '{"ciphertext":"8WWzoKIrl16O3boPiTvVivn28js5b6S3JbOMySZ-ujmMCvOeyoEIdLXSxycB0gQeTFsHZ6g-oZqkuJDPNBTbSZznmLjRZQoarfVfxe5jzzJfvK3t89Rkd-phVyUgD4-RNXjuUItMjje3fMTTpw_E1ai6PuGmrZedvscj6BuSkvS4qWzxcZ9234xZzlCRgMzEBG3h4IUu5sWhXwictyMwVUHMBeq0mLSBJO9FEk_TyHI","iv":"aSNbaiq7SIh-6u9FjvhV_w","tag":"uf32NOEXoG-kHG19cc3T6A","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiI3bUFZY0VKWkJXYTR5Yk0tT1JsaFBnSUtMeFh4OEszNXU2S0FjNzZBUFVJIiwieSI6InhESzQ3eVJFYlI1OGdHNF9FTVdCTnZ0UThZVXRCN2dTc2pSeld1aG1iQVEifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"TTZg275GMEwpqiuHVwBi_1vu1hmR5juJOPRB_pPWjUUQ7zUtDAIp3w"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"--WXckNnEfBZgO50CgXLkNSwAHnWhzBlwyMl-JlPYzicmw_P5I9oX5kb-Hz8nstSyhwgrepcX1Q0ALDOD3Pdbf-wVuA-AryGP-dT9aWkgtopsHZv0bI1Hvreb6tmtI2qDq5zwM03bBlKzVMort6g3NXqvIBto1wskRsTmfDVnBwGXbEPWVPAHDHCxFJGZ6iQ8DeGjEgwQNdt565ZgOsgTqBV3dNUY0hhnXYDkEmteiE","iv":"L8ZADssAMXIy8bSmHF7B4Q","tag":"l0fPMEEIiml_GoAPppneYQafGgrvCHvM","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJoT3NXMzRIeWRTZEswcHNmd09sbW81ZFlMaU9UNllBX2tOU3RUN1BxQ0I4IiwieSI6ImE0c2RqMTBJakYzcUpCVWJwcS13NEh6QzI2ODF1UjY5TXl2MVFYNVFQX1UifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"6edmcKAhRI1HkZssnFGMDHkYwwlzZ_d8Ij6ZoW27BMtOmueRI7JXivdikiB4Te7HzGPyoygN3X0"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"ElP-FfX2PlRU6xQL4auDQejBqnwYcDLXMpyY7snEtoSj4ITHwJmNpGSD1yh0N_yDeSPf5HFqLDlzM8JZZQ83pOY_Sn5iO452WFeWtjNYOD9XB1AwPOQdBg25MSZxIdwKvzbYAs3FILw1swuHgXfdomGDJhIKQbKSBinAziGuvrCAio1phqwLrRG2vJApmWBHXjbuJzwv_K2ZBDLf8SDFvmTbuZZ6mm4fPZSWyEo71p4","iv":"w2LROvAqZDdkyiTv5CTMIg","tag":"QF0y2Be8wRWiAONqVwYFfoPQjc0NRrL8lO3if-SpBq4","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiIxTWtRWlc3MzRqZ1l1V0tFSjFrWXdNa1lGclZJeXd2QVJaMXdvTEhNOUg0IiwieSI6ImdSTktaOFZpQ2hJM3Y0RXhiVzUzYmNSY3diS1MxYlQxLVRQc0p5TURfaU0ifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"r0cwT0y_zzbV4zVXEY5Sh66bKtX32971vZ5ygeoCTtpN1oEuTANEZ9bWzJMuC3EPnuYO4XWopaac5FFJxBQt3hX4wvah9kkJ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"vxE_6ULATftYhRAW86hSchRc49VscHXtg3bLhSFHZns3tVd6zIMo0xG0q6psAEGRmGs2Z4DwUAbrrZ-6YSPn1xjMEgMhSyXqZSM7rEca0bFeaM5N9cIKuiaSOLKGNiJ8SATtoUlg9wu3CU_ycCYoXo1dlmfwaRHD419ycqVDI2DVZDg6iuhPR2rIW4FZujn-psbQhZClozNOWkORkJSp2lJGIOs0jkI","iv":"lAOeapEH6BRLDmQl","tag":"6RoKYl11I-iu_-nn_qxTPQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiItSHlUVWhHUXR1dDVxTUJrdGIyLUVyQTRrRnFQZ2dYU1ppN2ZkMjJ6YXZVIiwieSI6ImpsUGhad0w3S0I4YmJtZ1Y2eC05R2JJZFh0N1NaaFJlZldFYUVCWTN5YXcifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"HzkOCsTSv-V9-QwEJbMt7rpHoU-rPgIE"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"L2Z_gtDHQyWWcI6VMZzje4dxVbKGX6tS6DsJITn5HzkaaQlXK8w2h4RD7VGNVbA2lg1yeGWf3i2Z_3gZPTYKLUMtDEUIJMSOyNZHzRWvcaCkgBLp3vBbkJevH0Wc-P1QIdhIByUvgPTo6OrTKMT1yonlQ8U3g6_xovTID1yoc2qdEVB0inx3Tq7HVRlto7nMI6Z48VT9CN5r4SmS3jXAZsortsG2k54","iv":"wol3soUEVXh0OYxF","tag":"tYvCovXomiyroVCYT74iig","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJhQXQ2V1FIVFduVDdUV0JPaHBPNEN4ZmNXUUFUNFhMcFl6Y3lpTTluZmZjIiwieSI6IjFwWEpmVkZwamQ1QWdSTEY4UUprNEZ5QUN3TElJaE90U0plb1FIQnU1NWsifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"FiU_lrERwsTL4qvnevyf2DxkjhxQ5v-ArGaHg7G4D24"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"6G-SHyO3wk8rAnYTGwxIOmG-1Aq7ujSC__aqG5iaDI6RX9YtcZdOAqIjtzKG_itRHa1uxGMzJqROG7haHEJpA62NGt8et5njC6oqsYNl2RC8YwwtJysK6_hvcHlxaIDFKp7ZQ3vgKvips4Ro8AkR58XpH1GF_Rk1RsFbJONWMDe_vK98tf6CSruK9LLu6LYU8JlwL0bUGptsdHPJRKQkM02yg4jA9nM","iv":"ih0vR-rb80lr_WVg","tag":"L7-8h3JG_st0sedwDHC4iA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJOWU1lbjlQcmE0Nm5XZFlBbW5KQ0FmcmNtZjBfT243cEVkWllkMFhBSmZjIiwieSI6InZYYXZxQmlNblhUUkZud2N3OXg5WVc5NDk1enQ3X3hBbDNFN2ZBdkxvYTAifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"Bgdqgux6pY8oUbufB7iHfMgb-EsffDBtOIOEDOqS45K85QY5dmotPw"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"f3sJ-VeUMSCDCs6_ym7mG0bGOJZwD54qu6xTULFgV_LZHLhLpzUFG1MX38EHSLay70c6g1Ob9nxFYc-EYiULNkfUfvpTFK6E146zQZmuKCS2u04KpDHrriBPutvJue60HWVuejkscDiP2-wzRuU4qskGzWCDTzj-YvZw5ftdhYztgolCZQDDfe67yC6ywpdOS4WLsk6s4yZJfK4TIRlsVxCPueU6wyQvkvO_EF8_PY0","iv":"eGtwRbrxNeaBdTp6yIiZtg","tag":"ur27HEz8ch7Oqs2uZKpybw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJ2b1dyQkd5SGJ2R1ZJR0piOU5lV3lPcm9VRkZZWl83ZkN6TE1sV1dlQUROSU8za09BMU4zNkZnelVaYW93eUdkIiwieSI6InlqWGtWUVdKQi0yWWl3azdDRFpySk1yd2NPald6dEV2czVUVzdYV2pZSVFYTTMtOFZncW1BMGt4d3ZsSjZFQm8ifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"d8JZuYKkoEYF-DveajkvDTUouMun6X4OmsAGDb9p1qOMX2KmwNfvUQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"TiMVN3-mo0Rcu2SG04FNiYqDSIk60BH-soXYLQgq4J457UFWDCMPBf6oVRAYTZJwiDEONWdc2iFEW7CfRU_dMc2DsO0kHMME3w5Uqptm5Nay5dcIJrcoICptnlPxupM_qyDgKOmF-x5oelgWdy5erSrQ-JX7bxTTw5TAHQ-iRlSZFb_eecYaf92V8CKqS9K2KqPTiZ_1fIiZnqQHyLmggqmifeWPHiO8ox3kI-LtebA","iv":"B9a80FX3up3SuV1Qqs9ydQ","tag":"rsvZ-bvbD2pMoCvYT8Hsag4STmKjcAi2","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiI3SDhjU0xzeWFmck5McFlZWFRTWmRLMlIwLURZUFFfVkkzNFA5WkgtM0VPSGV3aU0tdk41SkxxSE1HMzRFay1VIiwieSI6ImoxR0FmMjVCNm1SUE1lT3lwS2VpQk50ZmphNVZYMV9DRE1YcGIyRmlaajhxckc1WnBFOWtKZlV2Q3M0VC1PVU4ifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"yELqAjD6BDP4BjRf8Wbfb9vLj4tWpjjUiYLyb69Zo7x2BP7Dp1LhpWSDwKugswmRK5Tmhlqt1OM"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"NssjbtiTmnZrm5A5QMC-wS8oY8jVNRhs3b0cZWpEYdbFhtMMEOv0yI2JNLEkaA2utQs2O_GnIZbodCp6Dr1UoirPmX5GPiBa3wRQo4hflfCLY_tZ2JBaXB0ZFSokUEOZSOnbSNZ1Pa6EAy8QhAOwCgj5yrPbq6bvBv-JMfBS6YxhA3b7q1PV6VSkLWHn-FTvsMp3HMjzMRgj_l_Fz5n5Z-st0td8rq45PR0nlKgEnKI","iv":"l8XxXvQp-M8rIgA-_xkuCg","tag":"c2GrOJR84Xdjp-i4QtIYrjIbtDKtPvQ3Or4g9cGQP5Y","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJ4NHBOLWEwd2NkbVl5RW1kb09uUUJFR1o2OHVXNmVPUUlaZ29sMHhDaGU4V0pjcU1lMkQ0MC1UcEc5S2VhSzZqIiwieSI6ImVfQXNZM3pPSktYYUcwNG15RFFmUFdZSkJ3eUlXRVJyNGJZMTExTnJsc2x4VWRTT2laa0ZLTWtGdzUtQkF2VmYifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"jWzJiC_cdSHreMdQ2MChUWDGiE_QFY7KkTtLTEuHHzG7E-5PCFMfnkSeZ75vrqtawqm0XwsVBPir1lDkC-mKMUe7mHEr1dPQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"Mi_2P4e8uiptwMNQrUfTeQyY9-UpHdCsqTtCgHyX2k2wkKCEksmO5uGqgFS4vP9js76i-baltDNes-xH2tGYEFZpv9hpT5Mh784RpChxPC_LneCsN9_52SibnJO8u4umCyF3pJfkUUB9QXPIQQ4qTuuBgzfAXthK9cMxNZPP94hRRZgj3ZnbE3I36_NgANfQ2XVuGF3q6KQ-55KIFDL837SPRuNfzEM","iv":"O6u6sfSNvozzYC7k","tag":"e55FLRLwxKbKh5uudliVCA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJueU9UVURWUTBmV3RmcHFWc2lCZC1jLWdBRFdhVExoZEFiTmNiazBaMjVWc3Jhd29uQkZyQVVIYk51Tl95Z181IiwieSI6Im9nWkZlWVhVS25CUkhpbzJLYWJvTllNXzVCU3l0UzFDVHZ0SzZqMkxXb2JjWGhjSzJvU2cwdGJpQS1YRmxGNl8ifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"6hywjs7eY_AGzE0r4AcmM1pw_ET6hwFO"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"B---FvtsBS1ABH1Fz6PbtVU5t_WxpPGUhIRvrpEP3_YKVu36i4TImczF-L3cgeeFjypkmbM6hblJQmek2QFL5x9GJF6KzobCv_3g5KkFBNfEH8NwOcdUbmsSsPOEI_5ZTwcno-hHcc1PrEueUREwpLyJ0oP-1IgOHJn4j8NqeqWEAtcxzvQbWonBDF6o2c70SgPzCGZy01dJvSEosudOGpJtsCm4hvE","iv":"WUxQgfmtQWZtX3Bk","tag":"B08AHwCsv5zO1ZmX9wbQHw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJYbUlNX1NVY3J0Ymd0VjBYOERrY19zVFl3bHphdnJPRGJFRFhmb1NNaF9FU2pFN185UkIwNXhIaWw5R29zTFNwIiwieSI6InlEZmdzSEFWaVdxVUZHaWdSNy1XYml3UWRhWldOLTFyeFpyNVJCR2dTV1NBdXVuUnRoQzRxQ3JOQ2FiblV0bVYifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"04KAt72HccxdDIiSjuzRXm9hpNwJcRkRLG6dzuQvBcw"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"2l8m7S7WgvbAgg5JvvxpHTkpIeHTVcJDDjZdJX3a-pakoEqw9UDbsIHGJE_W6Gl4bMaRhRTMTsg8_xoqoIiif-NYGZKhKvJ2CBifeVaTZJjdcQJKovjvpJGUBMtev7F4pPnTnLPnRnLax4MXgpkOTv9ryh69Knn8zbcktnO93kO6ImzRCK5hwRE9hS82Bg-2Y4eNBsnsHAfkFCU8UX5z9nTOLDyQVns","iv":"aWjEAIckOJ5SxsrB","tag":"UNJ1ghRwzGG9wDzbnAdwrg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJ4UUNhckRYU0tRMG81TlZOTVE1RmptWFFoNWFFdWpzV2pJRUM2Q24zdGdybG92OHl1VlkxWEh1cUdpTXF4MUplIiwieSI6IjQxMG9vLUsxRDVoTGxPekxIV0NjREV0eGsybnJVYkVLTUdoMEpZYWxZaFNiR0pXWkd1Vy1OV09zeDY4dzR1dHgifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"M1FUr3rtiak6u_GUN0gm3Ahn7sjIMon5RmO3lVOrgXhnmHvLfgw6Uw"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"7kFxr0VKVbmJg_ro-7Fj8e6sQBKsQefPB1xQ-_FuUL1wS8w5CA7lnIpQTXoAwbFMClP3U62mrfz26d3EVHDi1b5sWoUui3V2OnLD6CxqpmJdAHQUgHeYaOglgfJWLJryqn6b1X2CJ8qcg5vy8rqPHHghAY0tgA3iA_OcPuYc9383yLWTcLmghRKwa5yw6zbYKXBXdT2WY8Leum9nqvZT4rTMeO0_QiOlgn-qFk2n5yM","iv":"FluGprT7jlECz74k2s6R_g","tag":"nNRf2uQSRZwNNubODrXSrQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBWlI2VEdpbFRVdmxoZFVnWktyYjNIbkZ6alp6LTRJMzdrSDBxR3BQaUlYenQ5bEwtSnh4QVRiV09sblNLSm5FbUJVVFZ0empYS0l6cFA5eklfUGR1TTFSIiwieSI6IkFid1VHaTVTaFRtR2dEaVlGSko5LThjUGh4b1U0elZ3clQwWmtmLXpkZWIxYy1nRk8yUWF4a0JVYTFqT3FQeGxnUDJYeEpXSlBqNHlGS21ISlR6bzN4NWEifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"ZJAvb1EpUU7CI7Kr8NkGswvdCsumf1JVUF2IaAKGrxOdIJEbTocVPw"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"eUpwHP_TPDMYTRJl7rPvo1UI0EqM8JJtdcJ-D1MWmwF-xQFxSvnWz5P761SgRCu82FlMrrByl25n_XUo1GQs07FqeKWa4eGhOGGxVH3aKW_z6lfAG9inr_-Qh7iwZ2wZsvUsNyCJJJstFqRWSZSxplEeju-e-WOIJ-ztMNVn91DHfeTIiOvXfC1ZOgrrs5S9PpNA_NYXlzrMbgNTrq_i40CUcWKDZbKKNMQ3Fziegrc","iv":"gbzsDnsImZqjm_orj5JmYQ","tag":"MVARiMCpmzlErYES9-DfIWHAJbh0pwvz","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVXNDYWFtVzBsQW5XQWRlekZfZjU2Ml9yaTA5TllYcC1CRE1pU202OV9LakJqSkpwX2t1bWFrZVdTb1RGaEdVSnVONkVsYTl6WUZPVEUxdTVFSWJ4ZHQzIiwieSI6IkFBRnl1WEpuWlVOMnBrb3l2NHdLODhvaWJ3UENXckNYbGFUdkFVVXp2YlR3UUVmYnUtS0NxaUx5aFJZXzVCZkVvajJyZEVTU3ZJY1V0aE9tNFJNc3RjVncifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"8YEgqLWBvvBqyMymZ-Kpq9Bu_Z_NI01IqhJoSd8w2tTkTZTD4L95bSqa8JV-0z3sHjTiMYk6CwQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"w6l_-xk8sPZQALFwL_9P-PgatydHCrtTLk0adnp0f82x4uNGyViSq89VlOVYoztGr3nhklu7MjpoWXndPOYTEGWkZgfakAoWx_6ISGkz6D37__xDgJGdbbtzICJm-4Y3LeHJeuIQiO-CNiB3Rm2y6tvDjSEy9_xiy8D3c7ysZf9SeBNJDpQxSF3OKl4uc4OMa2om5DL_StA-AscWfDJOBLAJui3647g-SB-K4YWEkgk","iv":"bKfRWGKG6UPNSszCasPinQ","tag":"4VA0oS4q3qjwiqNjj4TI56qGlpIuG0D7UElG5DzisJo","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBYkgyUWxfd045Rkh5MzdzUmQwYlN4Y0N3aGRZRnFzY0ZfRXR5TmxXOWxtUy00ZHlSTTdibXFFVEcwSlZXMUp4SkpLZFF6eThMX2FIdUNLNUtzN01OdDR2IiwieSI6IkFIbXJmeDVrRS1kb0dfSGliM1FzV004QmROaVhZcDBQdUM5Rl9PRVI0cGhSM0hDMGRkSHRodnZrSmlWd1E4U0U0QW9IeVNKb2JDbUlxUzYyU1ZFT1BjMXIifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"kKII7fRYCmcPPEawSTbo3owo4zF2vDBSXNuDf3C-iqwqeF3GH8Fniz_nrWm5KW0Sed3lOtqI_1Hd24-coM-S7V6LAr4Cj2hU"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"JKi2Jhq-aOlzScwO3jc5rgcKGbtKwpnhsX1AxyfI9Wa2-AyKItYk3SBwRrHLjN0_xZ5eHXdIDHijcEy1dS03nAwY-skEejCcb8RAW2vmezBEzM0gBCciJ1s6kndKOHn8Jmz2-GmhD6JCK9by0J9BX9_Es0346tXe8d78lPjOxoGloJU2gnFJAU-bdSROAq9YSRo-_vUCzfoAT1f3PykDbZyiIaFlPow","iv":"wv9ZZWV6ifGu4vS3","tag":"tYQxcfD_FyTNNXI9a71Ffg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBTGJoYXNDektjbzBOeFhyUkhHNjFCOWFWQnJVSDRSYklGcnZ0VFJRMVliSDFHTjdhVVFLVktnc2pBM2tuY2tIMmRtOGJ2RDVFSVR6TnhkRUpyV0RyXzZHIiwieSI6IkFlY2xFZmtoRzlvSk9BQk44VjBqREh5Y0hZa3RjRjhsV3FIcVBXekxzNEJla0xURy11c1d2WmF6ZVFlbllsMndTbzBBVE81VFU0MGVzNmg5a1J5QVA5TDIifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"jANGIh49o4xDo0TQMPgf4duV4YGmtgon"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"OWkwZ0i9ldnjtjkBgZ93lsg3xm0l4OnP87tRuejocgTq6WYjs0QJ2U41A2akSVIG9T37T0SYnNKi41QGPWPeDpUcmp6u_xEg3-fsLn80eg6_xbjzU0lUNc42hSgRY2ADWM6osW4z0PKVGd22a2cH1be9wUn1BemDbop2RjKRTtocfVtJrqdjgIpVSelezRozQU22rM4GeF8bqLyc1VRaDkkKpkYkjXw","iv":"ihJleRGdOQ-v4d0M","tag":"yEqVOwAw4q1RodSCCWAVzA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBQkZlenV0NVFTWjdMM2hXZXliTmttbVZRQW5YNnduY01XUC1CU1JJYktkUmF2YlpIbDR3eTNDTkdGWTVpMG9YWHJaR0l3U3A0MVNXMWdOVTlVQm15UFVTIiwieSI6IkFUeW5yMmlMTV9wcXBSdUxkX3B5WlN4S2NYTEpBS2loZHZkRkszbkJJemhOWnhfMV8wZHlENGpVX2xqeHZUdm4xc1NUUHY4cmlOVzFpdmJCeFVvWmhsM1QifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"IKXDD3gFCARveeX9ziSCe0r31nCDv6Uwj4OILcAlvbU"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"mb1uW7cpr4CtkWbmp6r7sX9hNX12jZZTOwGg-5XQJsVQ3PQPkkn_N8Dr2EoKd9IyLqe9OYWrE_LBDd34mZKHYxhOYGXFR9xABwhop6fiBwDp7VGm5Oj_wv9cl2X3dCJ29WmAUTnGh4OEhBygBM39M9wUNib78Gmjz-iv5N5jceCEN-RMfnuIB0WL1OLq9n-bkRLDTXjSqFUxCkgrE9_nS_Sejoc4KsM","iv":"rnCX9ilzmkw1aose","tag":"K5bqlN1JpPHSQlMv7zFaWg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBU2FJT2FHZGNKWUZtaWtNREFRNkgwdVNZRkRuRGwwY01qYkxobnloN0ppUy1qZWQ3bDlENGc1R19vMUV1M0RCNEc5QVd5UEFmWEhJWWtWYmU3WV95YTBHIiwieSI6IkFWcDZUOG1taGxCSjZRdFBrSW81elFXOVlzd3FVQzRGTEUxVnE0VVhHTDRENjNxSWg4aWpWLVYwa0NZMndGWktKMkVzWTUyYnlMX1lENi1rcTJVaXNOUUUifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"n5DIQLcd4xliTvB-NioJe0A-STuCOVuU-JcHe70BCnWyoPvu4Xe9Dw"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"TTjx6GrYn8IphU_XqrzpnLscpDxvG0GTlb1UPulp9m6PwYwSE5IyqwyJef1UQ6-bHLSlWm7CSkp243d0QM3ysv-cdGwRkOG7aMmdUVoZkg6T_grmbm7nO-mvmmxawwwYOQI2Bxv0IPjR_-NdEldbMYf3HE_ZTNcBVvh-uWjYngHC7KqyVFeDc5Ye8FJp5tfr1ujrxAAjTXjRG5mkB6gF1QzMTUaP3PtrB6CIiUNfXJ8","iv":"ZJgv-pIn5y02EdJrLDykFg","tag":"WWOLFNkHRp042hZTLNzN5w","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6InRaZUVkYnZnWnUxQXhVU1NPZTZwcXJpUlF1d2IzdnZXNXQ1Z2ZtNWU2QjQifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"M7-Ghrpqtc3MWKvgfuzUrZY9ZOLsnX3u83WxPR--m2VoKsmmNueKpQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"YW-S0VU-C7aILn2lTDae6eDVB-1PBx3-xtjGNMIgkAhDmKw5h90HZa8Bf1xMPOYXDfJpD-_IZczeJE9v_nVjRXKux6ki8ldmPgchk48YA3rULAChVv5wwdzJWKQQ-MbrVeJLlBGfRKxrUKiUdLYOiYPaSHpE5eD3HAVhjh1HCw2emlSeyrFjB2ms8LaO9pFc4KHL0r0XBiGnui3We9buky4pYhsXazJq0JW5dO4yUUE","iv":"IlnmwXuwhzGvSxa330IzUQ","tag":"avy5dCCba8TduBUIdS59yQa39P3OhNyw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IkxjRnpxaDRjcnJGai1mcmhjVVNCcmUwcnRrakZJbVgxZEh0TlJYVnpqM1EifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"h7UDx4lLIhRBxrLweTs6pn5xYfvC3dLmmgZbPzxyEE4lkx0ANdsKIluO3EDhAZylmgMtSDaB4X8"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"_jUi2qOplWRy_udDIRaMFbzGtdNzT4YuoXzR7CKy5FEJfVdO26zZuBjqqxC1Pd-WUyhVdEh13AdfPV7ZToeG8kCGFZU_OrgrFB1gAbeQKoNOdiflFSI2KcjpoY4MH_UAeUPsmuBHJtDDogCCVrte4gYm1On9-6tLamq4pu3RPDKWLQZD_s2oHdgPdqi7vEptgvM7Uah3YDOdz5GRJnBEJKoimrxFEmvzIVGvQkSzmnM","iv":"wPRiBUHyAVQl9LgSEG6_EQ","tag":"kTRaUSmoyWuRWz18rBWibRY5F5qBWgEVDU3MQtfo418","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Ik1hOVRrMGJqeUJCVWtESnMwSjhibGw5dFluTHlrenptZzdiRFdJSWVIVkEifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"vTnxL_DFkfYJv_KxgbyqaWL0HQm2EnMLcFMf6ctT0T-BdhjZklCfo4kyJjCcrS1PP3ai1dKAlsENKHs4S2NPazriAoHrFpYQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"IK1g25wS9-ZrhP0F3UFvuX_mmy9V4Zc7QLpZ2rjIAyH3RQAcW2Lo3uC1VcG9MBHfvvehHYymtuHaS-jfHTkqlkAM8Umw9NfmUIjQvRyiW-1CECei2R-l1dlKAkoRwAgyj49CED3YkPb6PbybjHl0OCgLo4rUbimOxiRFayuLx51J4sODu-L8QmW2HKKqL0R9ULKKqhhIplGZWiLIdETXnkJPvX2y_uc","iv":"6LVsbG7JkJksn_eM","tag":"4GVV0TtMTLkKXriNKPspvg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlVYWVdDNk9PdHlsZzZqTVpidVFqblhSX2FpdXdVdzg0dDRSS3ZyRy1TMkkifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"9yDT0CM9r87O8RgN7tMLlMRT0J-PCN0b"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"S_NBXzk1YBP8AQURXaNk0fhLaIJWygBT2y51fQQRS26y2QgHoeF1uuC-anNPOQBDvWzYaz1dqvsqYjQ2Mr3TZr-i5VtFSxgQsIKBpSqiTw8-lAH3I2VCJFtlAWgL1rksAlVZqm0EzJJMWhhRVIgBOFlFX4bm4-osO-um2jU0y6YGvUknmoE4rk2yckTgNFbxJGgXlCg8eqAdBw6L7JmJH2GKFKluRk8","iv":"CFPOv1KwEy_rQsxq","tag":"2QNLpLlRtHCH4qdvrflUcQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6ImYyWkl4R1hNS3VIOXoyOC1hUTVLdzJYSjBLUlZ3VWhuYVBRdE9NUkd2aGsifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"A0CdqfbHoJUsAy53D_Zawqm_GvgcMIRLEuROny57LAs"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"U0YAR0NAlroFurFBi4JW6RcAIaWTEIhhoc-onI9cql6y2Az7g-Da5z0ZZXP-dmDAnEqdxLMdz9sSFou1_uvimrLWftlcxyYr1yzkFFbIblPw-hKkNUJNwbq6maTbFLuDeinCQYo7Z18qjihH22BCIhzcNGDUIOPtH9gnhtWlTx_FTNF2d85fUqDKU48vzWE_KU7jEPwLUM7mbldC6u-my95UaPkCeTE","iv":"qYDygzVjWQq9MHdb","tag":"GqfBJ_ucdjWKSLYMZKe-yA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlBXdE81ank0Yi1hQTU1b3V1eXoyT0FUek5WVFpyb1FpcXpqR1ZKSGlYWEkifSwiYWxnIjoiRUNESC1FUytBMTI4S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"nAXozH72PRPzt1qQNZbHdII6I7Pcbxxg7wqymlMNiWKh-_cILuFC0w"}',
+ ],
];
}
@@ -89,30 +146,32 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'crv' => 'P-256',
- 'kty' => 'EC',
- 'd' => '_gUgAjx9zU5BKlHq--TiCjZmsdNQAgrv536DCTUM2vo',
- 'x' => 'Kuh77MGkweIENgR_3WjzJ4gEF47yn6yQWAeeNqYC5qo',
- 'y' => '1koAqIfb5C2PkCT1GYEcW4IcIEdrgOdMcua6G0Eyhtc',
- ], [
- 'crv' => 'P-384',
- 'kty' => 'EC',
- 'd' => 'Fn_Le74znJfY33TkqCoskx1pkgA_1sLnKvfvM_78lTZT2zfj4XC6uY_L8iRknOii',
- 'x' => 'o5CqgE0jIlCVwGKMXDsQmkOgxohJcod4hv7jo4h7qeRoysAV0YPtokMgv7CUpSCG',
- 'y' => 'Z3ZGVhyv3T-MudQI5fYNmkO1BzqlHQJHCQ9RQzqa05QOsUZo39gjVC2EhRv1Z9kz',
- ], [
- 'crv' => 'P-521',
- 'kty' => 'EC',
- 'd' => 'ACebnk5N5RV4VFhrCmvp-5w6rsQJvHdvvBdJkIKmq3pDDreKC0vU-K2oYrQaX5vPuI1umnVw9qxFq6QCsShJ38Fh',
- 'x' => 'AR05Z1Xe74_lcrJbhKg12jijs5LPbLwcpHDGETssYKRgbO3-4l7egk_WtLjSeXmDvRfkww9kKpFdKHTqmDYSIzxf',
- 'y' => 'AL7NyrGpwcXqfvmQb4d7N6vO7REegUaFv8ea-_EXyA2eJciZJSmvipwpxRnoSfkNuJ5yJUGdjg_FtaddKaLdJEf_',
- ], [
- 'crv' => 'X25519',
- 'kty' => 'OKP',
- 'x' => 'LD7PfRPxq03bd0WJyf_1z-LQevmrbcYx7jJafep3gmk',
- 'd' => 'pSdgXFRYMvOa7giAm3Rrf5Mf8GnvLz7HtZKu_KN06KY',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'crv' => 'P-256',
+ 'kty' => 'EC',
+ 'd' => '_gUgAjx9zU5BKlHq--TiCjZmsdNQAgrv536DCTUM2vo',
+ 'x' => 'Kuh77MGkweIENgR_3WjzJ4gEF47yn6yQWAeeNqYC5qo',
+ 'y' => '1koAqIfb5C2PkCT1GYEcW4IcIEdrgOdMcua6G0Eyhtc',
+ ], [
+ 'crv' => 'P-384',
+ 'kty' => 'EC',
+ 'd' => 'Fn_Le74znJfY33TkqCoskx1pkgA_1sLnKvfvM_78lTZT2zfj4XC6uY_L8iRknOii',
+ 'x' => 'o5CqgE0jIlCVwGKMXDsQmkOgxohJcod4hv7jo4h7qeRoysAV0YPtokMgv7CUpSCG',
+ 'y' => 'Z3ZGVhyv3T-MudQI5fYNmkO1BzqlHQJHCQ9RQzqa05QOsUZo39gjVC2EhRv1Z9kz',
+ ], [
+ 'crv' => 'P-521',
+ 'kty' => 'EC',
+ 'd' => 'ACebnk5N5RV4VFhrCmvp-5w6rsQJvHdvvBdJkIKmq3pDDreKC0vU-K2oYrQaX5vPuI1umnVw9qxFq6QCsShJ38Fh',
+ 'x' => 'AR05Z1Xe74_lcrJbhKg12jijs5LPbLwcpHDGETssYKRgbO3-4l7egk_WtLjSeXmDvRfkww9kKpFdKHTqmDYSIzxf',
+ 'y' => 'AL7NyrGpwcXqfvmQb4d7N6vO7REegUaFv8ea-_EXyA2eJciZJSmvipwpxRnoSfkNuJ5yJUGdjg_FtaddKaLdJEf_',
+ ], [
+ 'crv' => 'X25519',
+ 'kty' => 'OKP',
+ 'x' => 'LD7PfRPxq03bd0WJyf_1z-LQevmrbcYx7jJafep3gmk',
+ 'd' => 'pSdgXFRYMvOa7giAm3Rrf5Mf8GnvLz7HtZKu_KN06KY',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/ECDHESA192KWBench.php b/performance/JWE/ECDHESA192KWBench.php
index 114c59a3..0c2ac8c4 100644
--- a/performance/JWE/ECDHESA192KWBench.php
+++ b/performance/JWE/ECDHESA192KWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A192KW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A192KW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A192KW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A192KW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A192KW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A192KW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A192KW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A192KW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A192KW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A192KW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A192KW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A192KW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,30 +67,78 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"239HNO--jJWqy20I6I9aQ5x86whqVQjFPlN9YRYjOi8ekbOM5YGIuyhbYF3Gdo2-MTqxjFZPOQ8VZVN8hdIL0n1hPIeD0IKl7Um1NcKShGtQtu2Sduyxa4hi6jAqf8LwvzjpVtI7o9DXE8HHUr1-XG4J4-mzDxSBFgbmIR3O0pWqp5-NdaGNOVkVlfbcTRimuDBsKZdJ6jWF6dM0SLq91rHC5mgtfPtYgvV38U8shvE","iv":"3iT5_YJ5uoslgv6uTlRgSw","tag":"Cxpt_nE_2RFs44A2G92Cow","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJpWVRydzFaaXZtdGh2TjVIYndGX3d4WkNoNVJmNFV0WTJjV04waVlVeHlvIiwieSI6ImRISlVpdDFkSVVFM0hjOS1OaUtHS1FNNnp1djBaY3Rwa045NDdxOWxFZkkifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"Gvg1uxRX6GpWKaLL6Bry2q454RfZR7psyruGv3kuf9kNPJD5-j0RWg"}'],
- ['input' => '{"ciphertext":"RDFW5wr_AqtcHGKv654vUBzFzHE9DQHExhS9r3uPxSDjI9NikzsjHEV8YjXVX9if06gzoHHb-cGXuJRoJI1gC9TY6kx77oll12fEu3FgXVuL1gZ7U9Ujj5wgI-scT5UmdxgUravP9Qim0kwTmTqXAn0RRuI2jVIZUhshzHUhuj-QsPDR4wrccMjmjyk6HLGpPpsegQb-f9u_GSg8EhUQuMWr1GYbHU4jawm9WtzOOh4","iv":"DGyn-kYAyVxGw3fJ1pGZ8A","tag":"AeF6-aceyQDUOtJreAS-BBWjGUu4T_re","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ2RHdRMXc0eWhZY29QLUlSX05zY254bUhmRnFGdWp1bUFFTWVJaVo3ZVJZIiwieSI6IjJyUHRWVkJiZmlwN21ZMTktb2Q2YjdiX0w5SjFNZ0FfQ2U4NTc2VUQzbDAifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"6c67kMrZe11m540xts24zTVGWeTq-H8MTIzWW_pRVXcrGEHyc7N4PeZHngPDY_Mxi1GiW1r5e0s"}'],
- ['input' => '{"ciphertext":"lKWsvlYaWoSsnw-NuywVrHgp0LaC8_g6ZRcCHJmnCErqApTi4Sn2sfz9Ew23xguK3qH5bwYqhqQQSpihQ-BLMZ8XkUrwWTPcp6UsQ1QlEevaBi9_cichIl81-HQyPINgIM-t6klxXK9X2n9DB-BKmhVHYbdwyBsHvWgbS3PHOyBKwGa-pb5thQLcPC0fJn9tRmCbGXoMuAFLtm86TFq20hMBoNNLmwW122x--zz8XUg","iv":"FXV6iLlbpLaFDFoYgUo4Ig","tag":"5aTUQ9M79YYJHROzeQozQI6QvUaxqYPOOomrz7s7CuE","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJubS1vZ0N6TmdKUjc1MHdlWWlFcnRHNUE5Y2U4X3pOYWp0dFozcVZfeUg0IiwieSI6Ii1ta3dKU1pidTlFV05sS256cXBQRFZkU293TUpOVXA4Mmstc1VVcURZbHcifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"NNqou4kIX5HdcXCauOIg8T2gj7OMnZs4fNOuKBV7C1oue44ctUO6wZfbh5U-0pwt3Y4q5l73JGCisLaQICJGVnRcFmk2ZfHo"}'],
- ['input' => '{"ciphertext":"F_zLcuR6OO3TBQ7uouORvGAvdNT_6eMt_ck0U-nXSQ5sqMEgKYuFMP7FMLRYTKZyzYQjj5DNCntbdQb5_31ifDCuOIVIRG9SsD0M9ZhKEXm3hM9pDCb90MbC3FD6fwcR6HbQfriq73WmBFbM1xtfVPsrAnrdNRlAaSJtV1Owf5yAvv7qx0vebMrOAOi_SBO0Qd_Gx9RjbHHEEZG18a_ZlLgwfrP1Ihs","iv":"FST1A5XpZBVfvn0B","tag":"lH1Q_KJUrPbp5r2n0P2WIg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ5cFhDYXJ2VUZWVS1CeDBiVkVITDZGRjZXQ3dkSm5WMndfa0NlREFnN1hVIiwieSI6Ik9hYWdraDJ1ckxZZkRrVWZQZ1VhRXNCcWs2dDBHaUZWd19BSWxjZFJnZ2cifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"tzWnuZV3HCXQbXSxkN6TryKZVVK57PHE"}'],
- ['input' => '{"ciphertext":"YJDo9qQwMeCiCqiJykAPUae1LPzMTGq7DoxaV9bagXlys1Z_SZqek70xY1gVH2Q1vV19IPuVHQR4gSt4yFv2ePgvVXA-xegNn5qxIKznA_i2JaIMAGUp3AqILexDL6G6ZUtd26-FWTuTxbCs74PU8MnXFikRzPUg-G7fEl7VFusBdGFpJMWRGPOf_ks1o7qsJ9SwWILm09cg-ocGdlxeExDSXQmv90E","iv":"So5obfP02IyBbwEJ","tag":"r3L8mDu9XB7um6nqIiEBbA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ0cEFvWng5MDRtSGV6TTRWRjNVdm9CaGxXb1RLZDV1NUFVMjF4ME5YNVhJIiwieSI6InJpcEM3SFhTWEpYY0JrdHZJREd0MnFrY0RvYnNUbzZ2WGg3MUdyazV3OEUifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"0cR22N7j0lVozgmmL3btagXSeM7CrOkVPJ-XPTrxq9Q"}'],
- ['input' => '{"ciphertext":"HODrPL6IRoK0wuith9tf-LauitCaYxthq_l0DKwT6b8ez0uxg6EDCAK9tI0qoU6ajTZSaULiRxZZO5L5TJ6rWg7uCNO6dKWLmBNjiHXqa2GrlSP4KU8CuaIKvmUYO3CU7YvrL8MIOxeSTzV4Ka-uYx3PgBHYpGU-wsqUFF4r-YEzMbzKZ2nwdaGJo4E6CWWFrJKhz5UJZ0YdeLrZl45cN3W4sqDNvBE","iv":"4Fjj5FMKqndJJyk0","tag":"L68T5CnQ8aWfs5sodrIn-g","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJORnA3YWZ6bWM4ZlBIc3NwNUwyNjU1UktoQ2VwTG9PZjZyVk50LTREYThzIiwieSI6IkVJOGVrTktNbXFUeXFsVHk5YWRjY2xLT3JqYzFMZGh5LWZrXzQzejN5U2sifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"nhk7cste11u4dffZrnc1j4h5W33sZvq9WSAplivutVp0CQe-lZRHKg"}'],
- ['input' => '{"ciphertext":"GYce4M2vWZY8CUCr53v-mKvCqCPofaopLtLBrZJ78ddZ5pTdcR66t9dG943IyzdOEeEuRLp_4ynpyyXR0GWkiMmj7kEZRFPRboM5XzmeOomcnUAVW3Sm69WBYFLzs0DAottiT1RBz4S3vHZI68hhXF6NIyIFHD-8jD3zSlGzN_ubaEaWLb0WrlpSnCMm50T-zwuofyQtIxca0mkOWag4_AYC0bDJRxnOJh3G1t_X6ow","iv":"eFr9ZZlankeXbKpd05JpVw","tag":"LN9E6S9vjgqcOjq3-zrvyg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJDWExfbUFqRUhCaWVRazBHOWlyNzZ6em5RNFd3Qm9TdXRld2l2ZWh2YVhJekh3YS1UbjRjanJmRVZJS1J6ZWN2IiwieSI6Ik9sX20yX3BYVFVWNDlDbklBNXpMMTR3R2IxT203Y0U1VFlnaG0zRGtuYjlHb0RnTUJGVVFwZUstR3VJWHpYOG0ifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"vJ07JrMlgmu-iH6fbq9KJ77QGGt8w1V899c24zNThQczborr2uEsig"}'],
- ['input' => '{"ciphertext":"l3wx9_nYWMb3JDPKA5gwEm_rjdpgbHO5qLhuz8DXoLjV-lLYculNw9FWS8_nJ9xC_xzBP0-IpjWLAYkGRXFZ7lbGHfDmQkWdUJsy_obgT945Vp38hwEqsstWFJO-7c09CnJYl9UVzP2grTg3oAM6TV__ZHg6ITHq3OsixVHJTSnlh11VRCOP3rjFONpnUJtDxoT9VZTR5goxj5hgwFGpoj-xcfmIFK2wiRehQqgPLPs","iv":"YQ7KrEk1MkbaTv3hQMwbVw","tag":"TdR4YFqBGQcchKlBgxsI4_m_1uzHx7y9","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJTS3NUVGN2VHB0ZFNPcmxnZ3hNakxVWWZyZzdZcE5rbVNuSG90a2ZpMU1LbER3R0VoLXdSX0I0T2p0WWptVUM5IiwieSI6IkZWY2Q2bmNWWDhBZUJiTEtiMllheHJUUlJoVHhrczNqelAzUnlKdHliSXRjSEZZc1NYcEFERWlTV1pzWkd2Wm4ifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"AtxkQKn58RtEUCj1hxL60bji2uB8IvbUWqpDSM_s5L-TRa93jnSptN0pRDyv3CDaqAPgrOPd64o"}'],
- ['input' => '{"ciphertext":"wZb26S54HHh970h3uuQ_t7zZUWAJPBTdLkps6Am5lgwzDEoYk7jz_xHt4PZspPaCgdJv8BDxvAZw-wJ3uSu42Rus6uAXNOm_x0hHDAFvKxw-uyvnWB-Afp_BDpdjjOuESwVrP-QOSKVfVdWiR57J0NwQ3q3JOKAJuH70GtefdJufCdEN-WhGlJ-PM82D4TcWo-ZK52PoE-M_bktCj0h3FekNmH7NBuB45mBTHqshCnI","iv":"T6SPZ_ZNi8RGWpcRN1Ht4A","tag":"y1IHOEbLxyYvI7NIRCEaDi3HWon9_mOTdNMz7Vr3DzA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJzOFg2WDNjYlMyVjQtb2dQQWhjZW5YTGg0T1VJazhqZFVLdkFCdzB5YXlZLWExUGxNR0JuLTk4S1hLcUI0OU1GIiwieSI6ImV1Zm1uN2NaVDNzT192d0RyNjh5WDc1UTVXSm5mRGw0THVoSjhucF9LVlREZ29WSktyVTJhVDVZVHl2SmdmNmUifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"Bkx_LYfu8Oq-VrhX5WaWmNwafhCyKX-UWXdF22pX86PHaKaPwR60EWFapuCfMZfAK69RShDv0qWYhqe2AyGu7AWmz94Q0HVn"}'],
- ['input' => '{"ciphertext":"yfsGSfJFyDHot5QyTfOssDQaXOcLGKGL8Z6pMApnCpmqLIUpghj8uIS2eLmKSaS4S2v-pcQ6nIVpCet1FdHLbGOghQuRzfUz24nBJuJ_q4QP8A9dCqfZEeRqXmRXoEbEQUb0H-TuSlLO6B7zLPWno7I7hm6kd93vGlqzpUNFnpJ4sCaNoOhYOQhb82HE7jHpi2ZLThOGWaV_ES8qa8jMAJRoV7DECTU","iv":"wUSgo24M5Qg_d6ZZ","tag":"4YpxsSQfzf-fcJS5Vl6t_Q","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiI2R3ZrT0VWam5MVm9RVHF6enpTLXFHUktFRDRTT1ZxQUZ4V21mdW5ieUlMX0hneGx1Q1RIcU95YUdKMkNjNEZvIiwieSI6IjJLWWRMMmx6ZmdlWVE4NURlQW9lYk9VU055RmZHd0NGVkI4VUVvMlZxN2pQSW5femV4MDZHME10eW9rUnYtRWcifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"2qqa5QibBfaz3nxk672G683yLNyJYV9F"}'],
- ['input' => '{"ciphertext":"TNqwuqUzTB08s7Z7hfq_OyHsNCvUVp0Xxd3kdD0YFjtCFk7WVWn30Pjq4nB7cnHyeqPqrg-Fo4h1NRf0lb7Zs1N_zLgykncOloskS6BS8AhwAq-W2VSOI3r5QLqqfpTSAwSOtzwrU2L4HB6_ECxOK84z3g4Ful42BQZIWZWk8QFz8PCmbZNYimFPgJsxAFjuFLpN1Yb5o175OEOWjbRzOKyUcQK1OBk","iv":"Q6AywXdiikOweOOt","tag":"sTJ1Sm40q8pNITtcCRR1Cw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJoZm1jRmNvNWhNM0VOc1dXMVJIdmFnN0JDNi0tR19NZkxPVURPazE2ajB6VkZYb2JJS0REeXhDdnRaaFN0ZWxTIiwieSI6InMxR2pJWk1LTVYxMkQ0XzNjQ3dCeS1ncnJyTEZpSlVOQjFtWnVpblRrSW1va3pNamxnbGppMkQ0YTRoQlFLWk0ifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"g-aHetEzX4KdFm4_Nvu9G0IrAx_5KqVW3-4FItNh7Ac"}'],
- ['input' => '{"ciphertext":"oZOcfdA_CMch6AnzcdbOrCoYTl33Iw2FFDvtv2dxlyARM-0bNUDZ0pBC3Kdih8NiX-sVkSHVP0h_AulUcZcq0DDCqx04Un-GXaisRouJFQXiM6sGLYuCCqXGBzGCs48b_V8OVdo0-QLtfjO4rFs0ENqwBdBDOlAr4IwYMKbvzQyBfM73_CZ6lqC5CzVUwp4esKqUDwEMW4GKllTxhkQ16g5V_342fxI","iv":"Keo2DAQHmBUhz5ys","tag":"Knq8qFH8MD6m8iHnsAtjHw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJUb0gyeWQxYlZHUFpUdFVrb0NaRjlYaTIzTEk4WXBUc1lUNXpSalRFbkJTdmN1a2M2SnhjNDhUc0RxR2djV2NQIiwieSI6IjRHb19ycWpDMUhZNGhseWlaTGktT0poY3BCUFNuOXBHeXltakxMTVlTMURPOTNGa0o4OHgtcFJYSk5CSE5BcDEifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"rDj5fMM4frMBQbFokE9JQ8p7QEA8RWlYwf5gwtagaLnxYEkJrvXlnA"}'],
- ['input' => '{"ciphertext":"0yIJmTaLfA-nnb4FpziO5DZVjX4eHkKPz0Fa1tG_wFMKm11JGa-HdiYXXeN2_dORth7NlhhEcIHu50kQL9u2rFe0E5wFZ3oDDp-M5DTwKjQNSKGxfzIaD4l2fT6Ou9YgWXYMBuI9b7i3gGrOPLPFc5kuVpKrHsV6ynXTlgmMc9NyhQpt2WFCH4CCBohv9LpKQu0hx_U1nf6Q7JXpr79JKU5W_nCwIyhmhaKmFNs1Zdg","iv":"2NkLaDO6rEjiJ6GQEYCY5A","tag":"YKTqfroqK9o0OYtsPl-NOg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBTkFlSENrQy05LUlXeWlzeThHTG9yYjZYb3JtMXFIOGR0TTBVeC1YWV9LWDlqWXY0bk04VUdfa1JkS0hsaHF3WUg1QnJ1U09oUVBKZmNYVHlxdzQzNGEzIiwieSI6IkFEdUZRQWVRT19hdF9xWlE1SFJ3aWlkT2dmaGhZMVFIR0pOMjNUNnUwUnktSHlFZ3l5dmhmVjhFVUJZcFNUVmNKblJBVTRyZzZST1ZkSG4tNmFEZWpCVlIifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"2P_Hjy1PpS6TJN6zjzx7dQSDdy4OFz7qCzvEv7PZkTXfe9dNkHTvAQ"}'],
- ['input' => '{"ciphertext":"Y1ld7kIgk-lvVL3YoW-qO8WWfXi92WmI24b5gCHMD1TDXcQob46ldsqQ9J3LSohrm5VqUbHg5oSa9JBW9W0uGzZdvyEDEnUYkg2qY4o-el7-Wnda8z9rm7XCO8xK6IICPnOSMSWiu8A3rwn81nHKOGHC68H7WLazCZgaxaLgmgLcP5Do17Wgi3carjjxm4iN4ohXSGA9ZJDzHkNsT2V-GmMzl4cKbyGqD-SspzfHsIA","iv":"4hkKVXthg1p_4LIx658vqg","tag":"KlLLT77fB60fxfRUYoG3-BNTgP8_D19M","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBT0l6SlM5cmZvdGxCWTZweXpKNGttQlpuMFdFN2plQkpzVVFpUWduQzQzNjdyZW1rYU9IbFI2cFZoWlNfZlVMSnVvNXo2SnBKYzNGSTJxazJqNW41TkVBIiwieSI6IkFCd2ZjQThzekYxVVAxS1ZERmFiX3ZJQXo4NVVtVlRRRlJpVi1lckZwNFBHc3lmSUNyZVVNZk5ISHhFdUpsUEdJN3RtZWpUcFJYVjlmRm41YWxScVZxaHkifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"ju9tngs61CQuw3Ii9iXY0wkrz6TocdyzvjG7PldRiom9n8yfL8ZB6cQsDzHsrbxrplQfcyMc74I"}'],
- ['input' => '{"ciphertext":"QeGhuHxKId6XeFggipgUpvwn-xLZEpTOdq2LnBq9KQ21uLdkcbLfAQNEdRdilIspMAhE6WzqCKODowj2EyBOVWLddDqn8wff6OXEv0_5j_zqJDJBXVTTxWeip4FkVnygHWO4VG0VW_XLQR0k2JAShiS_uR5sAZwT9CJXlxyQV7BcZSfqfpLw-eJtWe_mhgTbbqFrnYFI5Cf5jI4Hdl1c8E7h7BUrwzfgnPP6TXjyxoI","iv":"CYYW0DMM4pUOtH8iA1T88w","tag":"DPcpOlTfxxTFbn_s4VakwM0lby-Fp3yBQxd8nM2JaDU","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBUm5qRDRjdlJEenREdnF2TW42YTRlZkZoeG5DcGRqRzFzaExFU1BLWHNxZDFSbUdERTRqZDN1ZVpZUFlKaGZlMEhLX2tKQ1BHMmxpNE5HRF9vQmd6eEdEIiwieSI6IkFibGQteWtadjNnei0xaXNvMkpqVTlNWnY0VENscVY5T3E5ZVZuQktWWTExSVJDc18waTVXY1JNV2lnS3NvVXVwR2lOUDVTb3Q3REFBSkhoektQSGxacksifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"gLE_kfglbHj0lkBRrEAIouunrpGjomr4cCNSOYeZTOLtphojXyYB5hhHQjwnk0-FmMIEj-JHLVogstn-qY9keVajYAMqf9Rc"}'],
- ['input' => '{"ciphertext":"t-U9vLZqvJWJdJLBXuYDR4OO3mqBVfc8ITGXk5ciVFsslWTp2fO7_yFdcEcK_QX2o8bg0YTa5Jl3EjYKDSA73u3_KzzPJMLTWD4wYqL8LO9MM7H-Fuu3y6NFggqceTX0CJezI4ZoiEhhhWJSy3aZBaQlqtIKUI4xGe-tnUgjVuYOS9JaDgFVgfQG4EFW9zFDFfu30lkKYKMqaPth2dWxFDLCFwX3yVg","iv":"VhUPBzS216Xo5H_h","tag":"t9tPsHH90Ary6G_jmMGKWA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBSjhoNGRTdXhLTmRLaVpWZEI2QnctX2h0TmE0ZFVHdlZsTGRvd2hjci1hR0tnX0VYdjNqUFZUYkM5OFIzbWpTbEh1bU5OZUZoOEp4cG5KZXN4RkZpeWlCIiwieSI6IkFEb2JvNzBaOGRYbFVQdGNZMHpKVXNLZndram51OEJkRXRDZDlSbmxFSFpxOGtMd1AwSDQxdERyZENGYmJ4MWp6Y1hUSUNsMzBxSFlxb2hvZXFrTlBHNVkifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"ntSlDVjrsvlVyGPqWeMIr7g_dVLCDivi"}'],
- ['input' => '{"ciphertext":"l6zDd7w1JND51dGDutFYoxn-seZdShpYz5tlFr0KsllMLPoi6wEpeGywz-1BTU3-e-BazdTB7KPlVMmb6F-rGCD7h1rqsxlZU9JH_Zs6TjspqQasMTKVOl3MH_oTgMKS-DI60lFmLUAj-KwdXjIVTPqqSEmxXxme_udtQFk6LNXKkIAS_u3rXObfbG_WA3xIi-2ZiY8ea2GOl42ZIddqpuFc-teiGYw","iv":"X4YYyKC6S2EAq5e7","tag":"SYFTMuHqADqfHw_mUxX8UQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVlBBbERkUDRpbHRNM2pKOGVycDcyc0VqVWVmLV9EVXdZMUt6NjhWZHo2dG1RNDJqVEx5T0NsM2JsNjY5bmpHZnhDeVRieVI5VkJ0QWlDcGFpWENrdFZRIiwieSI6IkFYVDFPWks0X200cjJSOHYwUlE3cEZPQXZJV1E3TFhsSmtyOGo0dzJrQURrR1JtR2Y0a0xLRnJqUXZ4UmNGNFJ2dUd4YWtMRlAwV2Y0eHpVUjNYc29LZTcifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"5dMOaFexxy32yZuMhgqO6mJEGdQ16_rw5etgRSiH11w"}'],
- ['input' => '{"ciphertext":"zHKGZ3lcidk_ED9M9NHr-CgZ8i9OWMXo3IKWaxmf5f6w5Hy_9rrbY-E4NTyRi9pySEN6Qyi6gIT7n6nFWeROLIsOpp8vRlKRbkmGnOjbUs2QvjGiH8CV81HRvYCXLa6DwFUI_J9bmAhuB79CuEVBzxE7F2IT6GNimxxkW5Tg-Kwc_VL4mboOkE0ngHAdTdWQJrVzNFINl2E3KEYsWtY3lbt1pojH6XQ","iv":"i8SZR0geZRtCWk5_","tag":"tP_C7rRSn8mqUVD29r9LUw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBSmZyNnhibmpjRlZqQjR1TkM0MTkwaTJNZ1JRZng1NXhlY0tkZmNGeTRmY29tSlJqYWItSWRHQTFYcFBVN3VUSnpuajI4RXBLSkttWFFnZEhvTHdja3FSIiwieSI6IkFiOVlYbENZQWk2dUhhazRWV015d2pfdFcxUWs1Y1RabS1VVmZtNWRKVUZTTzVHZDJZM3VCZklyY0NLZko1Y2NLLXl1X2NNanp0T0F0TlRvS0IxNTE3M1YifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"jr2rPS0sxlRi_oeIBT0B8XlxJOUZJREKDpJd0FoAgRM0OsjwKbwRow"}'],
- ['input' => '{"ciphertext":"86pUnoLJhflU8LURtiF5RjyZKa5QpppQaUkih4huZDYR6xAHcb_Ou5hl7GHfMvWZW8BkeaPPV3QV4C7jcFlnFfyHdGDLE7KyPzEQ_YMHxzhG4LsO_d5PxMaQBYe8cJJDXvgaE6_8iXTlBxjqxoNuETTr5VZxQtrP27m4j2lklykZibyvFydZNGx9lP-QUdTM_hv0M-M7_Zy2PXHZJsrhcyPgUAVtVIOLxoK3d0nL1e0","iv":"UiBIMQwpjZP6HyfxVbw7MQ","tag":"Z5x6KIETZMcul0LvFufeKw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Ik5KUFVVbHlYem9RSE81dEJKckFEOWVnZXVsclZCYkJwMXIycUY3UzdNbm8ifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"cM5amByozetCbGao__aREhlUcJdUIFZWqBxcSa1WeYAUeHaA8welag"}'],
- ['input' => '{"ciphertext":"ZYX7Y1H0tmnso16nn-9s_Rhiw9E0CcjpKn6Mef5UHZxvZFFZlH-ndeeMi-T2O0NLagJcA72dCZycelmKnQ3B_junRnj0pg_1Izy4_XagmWL3T2bgZQY7RA5YXBzNbZrPV_Tfh93STo3w1CoDsYGJ5KPh-cfwaKXRhzCaeaxLbcSES0LiT_4Xpr1f4-XTwwyJsnENoxNrTX_GMqNFHC861HZhcY54pDBrVywXn7_TiIU","iv":"E5HkYh-_3Cu7b3J2RDp1Hw","tag":"K_Tjr-bxbTGGrEgZ4MyNJmbo_QppAKTP","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Inpfd2ZKVFVUU0pjUFROWkkxZlFldGdwTWI4NFU0UHJhZFgwWm92NDl6a2sifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"8O9y0-Ugge5rEp3-mpVL3oL1R2uC90TYQy7f0-wa9tuSFAF5vi5tg438PTfxoviFGHxForj3_VI"}'],
- ['input' => '{"ciphertext":"yK78enqyEQEvwujprdQ00IT9eyuKOcA4_VuUaogLJKxehTZRSznsh4lb0RjWomV37v-crUbUklvxXpaKYd0W6xN64J5VV2c3lqWn5-7FDspDLn5Hrsi0qX2RuJvhr4-2tiL3QCxataw6MtiVSj8ib7d7BARFS0lorRXW6S0IVwbzdyuasHIul9W4hx_ervrJ4MHPs83KMWOZuDppXjNj_ym46VpmC9XpWxfDVTyKlKQ","iv":"O0hq-ZfavALet7EQdKPtPA","tag":"Q2u3JBdq_mJM8vOnhw_MLZWw8OHrerRFcO44m18Fnrc","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IjQ4NDRSWUpxQWQ3Mzk1YmlrbmJGZHpNRWJZRTk1UXU1TTZXY2tsejFublEifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"1hnj3G3e8zqJMNyW2JgLtQvr76-idfysmqX7Z_K5AAxpen6UmT4jwfCxuUjKfdw1k33u7hz4U6hTCgRDzvIGhnpwAWXKIjaX"}'],
- ['input' => '{"ciphertext":"pncq1HNXbejvYCVFvzXn2I8XwBqE3ol07_qus64hlEIb7VcOxiMl1t7mVo4lsSEyipgYZCFxEVgR_C-auI36XdYqvKCQdbzTFzETBsb8y6WbBFQjCupYUa8IkDRsa7ZaT0ooy6meARQoDsomSH0ubEXIBSowJpygNjkBlCTmwP2RyWYKYboyjK5awI6nTDM92a3ZfFxdOJ2dA3ydlaJLicVfbqBSIlk","iv":"7m-i5f9Wer32W6mU","tag":"36R98AoUarAAJTTyuaBikw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IkNTQU5TZkJucGtQSkZyVGw3ajNZYzEyWjRqU3AtR0NBWUJvYXJicVg4VEUifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"M_beaZXdtVd63YAMgGaUmLxPzqCIVO-K"}'],
- ['input' => '{"ciphertext":"gVrYYC1cq5Q7aV9QTBeH83R7PTbXnH6tHRauApdcn-Knd5W6j4TyOM4wtSldO34ycjB_o0dsjZ_HPHtMw9e-a14qT5LQCeNDSb9cMb-MU399HDiT5QQ5kst0MX_ZpJXGvNx7uwAWYe1Rz58U-QG6J5J0wiSwqPtpI4SqFEXzrf88PExpLkiQ23IEjW4CnCmDrKpafaE6-ngKzkSmoc3j90Hh3NlIsdc","iv":"d_xuS_WzYJJsACgD","tag":"632n9At2zamWTVRGr08aKg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Ii1CS003UTNZTGZ2T083NVN1M2lkUEhFTnNfdVlBMFgwdDJZU0pXeHo1akkifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"OEJ6fL_dz-jXjfe0w3h1yAWAkUC0Vd0k9hgtf5iwfqY"}'],
- ['input' => '{"ciphertext":"zk3qRHTYEdyLMh9JPEDaicjGnieRpP-AOKMNJlPioZ1w2WOR5Fts3356R9dDGxI1HuUC-g6_D5kQjROwxbeAtycj8G4CBQVhh8f6bM2eXNv9SgIyIePe6wpc8NcFNJ7mx4TsvAKly2RR0b67u3n__tUkTsiJxiVbZoRC9T4Ez7wX-TmphmFRLtsMQxxIdJEcFmUkS42toechllYS0EjqX-Yeqb8MAQM","iv":"UlDeGbl5QXgpTOUn","tag":"gsupckNy1QZFPqDVfYhkfA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6ImE3MjhSbEw5a04tX0JYOHE2OS1VcHdqQ3RldnFCMHdZYlhhMy11eXUyQk0ifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"DNpDD2Q3JEgZce6kP8lt-YPcKf0HdSiHvDeM0OaQ4-j6YkPLMBZ00A"}'],
+ [
+ 'input' => '{"ciphertext":"239HNO--jJWqy20I6I9aQ5x86whqVQjFPlN9YRYjOi8ekbOM5YGIuyhbYF3Gdo2-MTqxjFZPOQ8VZVN8hdIL0n1hPIeD0IKl7Um1NcKShGtQtu2Sduyxa4hi6jAqf8LwvzjpVtI7o9DXE8HHUr1-XG4J4-mzDxSBFgbmIR3O0pWqp5-NdaGNOVkVlfbcTRimuDBsKZdJ6jWF6dM0SLq91rHC5mgtfPtYgvV38U8shvE","iv":"3iT5_YJ5uoslgv6uTlRgSw","tag":"Cxpt_nE_2RFs44A2G92Cow","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJpWVRydzFaaXZtdGh2TjVIYndGX3d4WkNoNVJmNFV0WTJjV04waVlVeHlvIiwieSI6ImRISlVpdDFkSVVFM0hjOS1OaUtHS1FNNnp1djBaY3Rwa045NDdxOWxFZkkifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"Gvg1uxRX6GpWKaLL6Bry2q454RfZR7psyruGv3kuf9kNPJD5-j0RWg"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"RDFW5wr_AqtcHGKv654vUBzFzHE9DQHExhS9r3uPxSDjI9NikzsjHEV8YjXVX9if06gzoHHb-cGXuJRoJI1gC9TY6kx77oll12fEu3FgXVuL1gZ7U9Ujj5wgI-scT5UmdxgUravP9Qim0kwTmTqXAn0RRuI2jVIZUhshzHUhuj-QsPDR4wrccMjmjyk6HLGpPpsegQb-f9u_GSg8EhUQuMWr1GYbHU4jawm9WtzOOh4","iv":"DGyn-kYAyVxGw3fJ1pGZ8A","tag":"AeF6-aceyQDUOtJreAS-BBWjGUu4T_re","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ2RHdRMXc0eWhZY29QLUlSX05zY254bUhmRnFGdWp1bUFFTWVJaVo3ZVJZIiwieSI6IjJyUHRWVkJiZmlwN21ZMTktb2Q2YjdiX0w5SjFNZ0FfQ2U4NTc2VUQzbDAifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"6c67kMrZe11m540xts24zTVGWeTq-H8MTIzWW_pRVXcrGEHyc7N4PeZHngPDY_Mxi1GiW1r5e0s"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"lKWsvlYaWoSsnw-NuywVrHgp0LaC8_g6ZRcCHJmnCErqApTi4Sn2sfz9Ew23xguK3qH5bwYqhqQQSpihQ-BLMZ8XkUrwWTPcp6UsQ1QlEevaBi9_cichIl81-HQyPINgIM-t6klxXK9X2n9DB-BKmhVHYbdwyBsHvWgbS3PHOyBKwGa-pb5thQLcPC0fJn9tRmCbGXoMuAFLtm86TFq20hMBoNNLmwW122x--zz8XUg","iv":"FXV6iLlbpLaFDFoYgUo4Ig","tag":"5aTUQ9M79YYJHROzeQozQI6QvUaxqYPOOomrz7s7CuE","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJubS1vZ0N6TmdKUjc1MHdlWWlFcnRHNUE5Y2U4X3pOYWp0dFozcVZfeUg0IiwieSI6Ii1ta3dKU1pidTlFV05sS256cXBQRFZkU293TUpOVXA4Mmstc1VVcURZbHcifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"NNqou4kIX5HdcXCauOIg8T2gj7OMnZs4fNOuKBV7C1oue44ctUO6wZfbh5U-0pwt3Y4q5l73JGCisLaQICJGVnRcFmk2ZfHo"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"F_zLcuR6OO3TBQ7uouORvGAvdNT_6eMt_ck0U-nXSQ5sqMEgKYuFMP7FMLRYTKZyzYQjj5DNCntbdQb5_31ifDCuOIVIRG9SsD0M9ZhKEXm3hM9pDCb90MbC3FD6fwcR6HbQfriq73WmBFbM1xtfVPsrAnrdNRlAaSJtV1Owf5yAvv7qx0vebMrOAOi_SBO0Qd_Gx9RjbHHEEZG18a_ZlLgwfrP1Ihs","iv":"FST1A5XpZBVfvn0B","tag":"lH1Q_KJUrPbp5r2n0P2WIg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ5cFhDYXJ2VUZWVS1CeDBiVkVITDZGRjZXQ3dkSm5WMndfa0NlREFnN1hVIiwieSI6Ik9hYWdraDJ1ckxZZkRrVWZQZ1VhRXNCcWs2dDBHaUZWd19BSWxjZFJnZ2cifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"tzWnuZV3HCXQbXSxkN6TryKZVVK57PHE"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"YJDo9qQwMeCiCqiJykAPUae1LPzMTGq7DoxaV9bagXlys1Z_SZqek70xY1gVH2Q1vV19IPuVHQR4gSt4yFv2ePgvVXA-xegNn5qxIKznA_i2JaIMAGUp3AqILexDL6G6ZUtd26-FWTuTxbCs74PU8MnXFikRzPUg-G7fEl7VFusBdGFpJMWRGPOf_ks1o7qsJ9SwWILm09cg-ocGdlxeExDSXQmv90E","iv":"So5obfP02IyBbwEJ","tag":"r3L8mDu9XB7um6nqIiEBbA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ0cEFvWng5MDRtSGV6TTRWRjNVdm9CaGxXb1RLZDV1NUFVMjF4ME5YNVhJIiwieSI6InJpcEM3SFhTWEpYY0JrdHZJREd0MnFrY0RvYnNUbzZ2WGg3MUdyazV3OEUifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"0cR22N7j0lVozgmmL3btagXSeM7CrOkVPJ-XPTrxq9Q"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"HODrPL6IRoK0wuith9tf-LauitCaYxthq_l0DKwT6b8ez0uxg6EDCAK9tI0qoU6ajTZSaULiRxZZO5L5TJ6rWg7uCNO6dKWLmBNjiHXqa2GrlSP4KU8CuaIKvmUYO3CU7YvrL8MIOxeSTzV4Ka-uYx3PgBHYpGU-wsqUFF4r-YEzMbzKZ2nwdaGJo4E6CWWFrJKhz5UJZ0YdeLrZl45cN3W4sqDNvBE","iv":"4Fjj5FMKqndJJyk0","tag":"L68T5CnQ8aWfs5sodrIn-g","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJORnA3YWZ6bWM4ZlBIc3NwNUwyNjU1UktoQ2VwTG9PZjZyVk50LTREYThzIiwieSI6IkVJOGVrTktNbXFUeXFsVHk5YWRjY2xLT3JqYzFMZGh5LWZrXzQzejN5U2sifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"nhk7cste11u4dffZrnc1j4h5W33sZvq9WSAplivutVp0CQe-lZRHKg"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"GYce4M2vWZY8CUCr53v-mKvCqCPofaopLtLBrZJ78ddZ5pTdcR66t9dG943IyzdOEeEuRLp_4ynpyyXR0GWkiMmj7kEZRFPRboM5XzmeOomcnUAVW3Sm69WBYFLzs0DAottiT1RBz4S3vHZI68hhXF6NIyIFHD-8jD3zSlGzN_ubaEaWLb0WrlpSnCMm50T-zwuofyQtIxca0mkOWag4_AYC0bDJRxnOJh3G1t_X6ow","iv":"eFr9ZZlankeXbKpd05JpVw","tag":"LN9E6S9vjgqcOjq3-zrvyg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJDWExfbUFqRUhCaWVRazBHOWlyNzZ6em5RNFd3Qm9TdXRld2l2ZWh2YVhJekh3YS1UbjRjanJmRVZJS1J6ZWN2IiwieSI6Ik9sX20yX3BYVFVWNDlDbklBNXpMMTR3R2IxT203Y0U1VFlnaG0zRGtuYjlHb0RnTUJGVVFwZUstR3VJWHpYOG0ifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"vJ07JrMlgmu-iH6fbq9KJ77QGGt8w1V899c24zNThQczborr2uEsig"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"l3wx9_nYWMb3JDPKA5gwEm_rjdpgbHO5qLhuz8DXoLjV-lLYculNw9FWS8_nJ9xC_xzBP0-IpjWLAYkGRXFZ7lbGHfDmQkWdUJsy_obgT945Vp38hwEqsstWFJO-7c09CnJYl9UVzP2grTg3oAM6TV__ZHg6ITHq3OsixVHJTSnlh11VRCOP3rjFONpnUJtDxoT9VZTR5goxj5hgwFGpoj-xcfmIFK2wiRehQqgPLPs","iv":"YQ7KrEk1MkbaTv3hQMwbVw","tag":"TdR4YFqBGQcchKlBgxsI4_m_1uzHx7y9","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJTS3NUVGN2VHB0ZFNPcmxnZ3hNakxVWWZyZzdZcE5rbVNuSG90a2ZpMU1LbER3R0VoLXdSX0I0T2p0WWptVUM5IiwieSI6IkZWY2Q2bmNWWDhBZUJiTEtiMllheHJUUlJoVHhrczNqelAzUnlKdHliSXRjSEZZc1NYcEFERWlTV1pzWkd2Wm4ifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"AtxkQKn58RtEUCj1hxL60bji2uB8IvbUWqpDSM_s5L-TRa93jnSptN0pRDyv3CDaqAPgrOPd64o"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"wZb26S54HHh970h3uuQ_t7zZUWAJPBTdLkps6Am5lgwzDEoYk7jz_xHt4PZspPaCgdJv8BDxvAZw-wJ3uSu42Rus6uAXNOm_x0hHDAFvKxw-uyvnWB-Afp_BDpdjjOuESwVrP-QOSKVfVdWiR57J0NwQ3q3JOKAJuH70GtefdJufCdEN-WhGlJ-PM82D4TcWo-ZK52PoE-M_bktCj0h3FekNmH7NBuB45mBTHqshCnI","iv":"T6SPZ_ZNi8RGWpcRN1Ht4A","tag":"y1IHOEbLxyYvI7NIRCEaDi3HWon9_mOTdNMz7Vr3DzA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJzOFg2WDNjYlMyVjQtb2dQQWhjZW5YTGg0T1VJazhqZFVLdkFCdzB5YXlZLWExUGxNR0JuLTk4S1hLcUI0OU1GIiwieSI6ImV1Zm1uN2NaVDNzT192d0RyNjh5WDc1UTVXSm5mRGw0THVoSjhucF9LVlREZ29WSktyVTJhVDVZVHl2SmdmNmUifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"Bkx_LYfu8Oq-VrhX5WaWmNwafhCyKX-UWXdF22pX86PHaKaPwR60EWFapuCfMZfAK69RShDv0qWYhqe2AyGu7AWmz94Q0HVn"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"yfsGSfJFyDHot5QyTfOssDQaXOcLGKGL8Z6pMApnCpmqLIUpghj8uIS2eLmKSaS4S2v-pcQ6nIVpCet1FdHLbGOghQuRzfUz24nBJuJ_q4QP8A9dCqfZEeRqXmRXoEbEQUb0H-TuSlLO6B7zLPWno7I7hm6kd93vGlqzpUNFnpJ4sCaNoOhYOQhb82HE7jHpi2ZLThOGWaV_ES8qa8jMAJRoV7DECTU","iv":"wUSgo24M5Qg_d6ZZ","tag":"4YpxsSQfzf-fcJS5Vl6t_Q","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiI2R3ZrT0VWam5MVm9RVHF6enpTLXFHUktFRDRTT1ZxQUZ4V21mdW5ieUlMX0hneGx1Q1RIcU95YUdKMkNjNEZvIiwieSI6IjJLWWRMMmx6ZmdlWVE4NURlQW9lYk9VU055RmZHd0NGVkI4VUVvMlZxN2pQSW5femV4MDZHME10eW9rUnYtRWcifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"2qqa5QibBfaz3nxk672G683yLNyJYV9F"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"TNqwuqUzTB08s7Z7hfq_OyHsNCvUVp0Xxd3kdD0YFjtCFk7WVWn30Pjq4nB7cnHyeqPqrg-Fo4h1NRf0lb7Zs1N_zLgykncOloskS6BS8AhwAq-W2VSOI3r5QLqqfpTSAwSOtzwrU2L4HB6_ECxOK84z3g4Ful42BQZIWZWk8QFz8PCmbZNYimFPgJsxAFjuFLpN1Yb5o175OEOWjbRzOKyUcQK1OBk","iv":"Q6AywXdiikOweOOt","tag":"sTJ1Sm40q8pNITtcCRR1Cw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJoZm1jRmNvNWhNM0VOc1dXMVJIdmFnN0JDNi0tR19NZkxPVURPazE2ajB6VkZYb2JJS0REeXhDdnRaaFN0ZWxTIiwieSI6InMxR2pJWk1LTVYxMkQ0XzNjQ3dCeS1ncnJyTEZpSlVOQjFtWnVpblRrSW1va3pNamxnbGppMkQ0YTRoQlFLWk0ifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"g-aHetEzX4KdFm4_Nvu9G0IrAx_5KqVW3-4FItNh7Ac"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"oZOcfdA_CMch6AnzcdbOrCoYTl33Iw2FFDvtv2dxlyARM-0bNUDZ0pBC3Kdih8NiX-sVkSHVP0h_AulUcZcq0DDCqx04Un-GXaisRouJFQXiM6sGLYuCCqXGBzGCs48b_V8OVdo0-QLtfjO4rFs0ENqwBdBDOlAr4IwYMKbvzQyBfM73_CZ6lqC5CzVUwp4esKqUDwEMW4GKllTxhkQ16g5V_342fxI","iv":"Keo2DAQHmBUhz5ys","tag":"Knq8qFH8MD6m8iHnsAtjHw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJUb0gyeWQxYlZHUFpUdFVrb0NaRjlYaTIzTEk4WXBUc1lUNXpSalRFbkJTdmN1a2M2SnhjNDhUc0RxR2djV2NQIiwieSI6IjRHb19ycWpDMUhZNGhseWlaTGktT0poY3BCUFNuOXBHeXltakxMTVlTMURPOTNGa0o4OHgtcFJYSk5CSE5BcDEifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"rDj5fMM4frMBQbFokE9JQ8p7QEA8RWlYwf5gwtagaLnxYEkJrvXlnA"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"0yIJmTaLfA-nnb4FpziO5DZVjX4eHkKPz0Fa1tG_wFMKm11JGa-HdiYXXeN2_dORth7NlhhEcIHu50kQL9u2rFe0E5wFZ3oDDp-M5DTwKjQNSKGxfzIaD4l2fT6Ou9YgWXYMBuI9b7i3gGrOPLPFc5kuVpKrHsV6ynXTlgmMc9NyhQpt2WFCH4CCBohv9LpKQu0hx_U1nf6Q7JXpr79JKU5W_nCwIyhmhaKmFNs1Zdg","iv":"2NkLaDO6rEjiJ6GQEYCY5A","tag":"YKTqfroqK9o0OYtsPl-NOg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBTkFlSENrQy05LUlXeWlzeThHTG9yYjZYb3JtMXFIOGR0TTBVeC1YWV9LWDlqWXY0bk04VUdfa1JkS0hsaHF3WUg1QnJ1U09oUVBKZmNYVHlxdzQzNGEzIiwieSI6IkFEdUZRQWVRT19hdF9xWlE1SFJ3aWlkT2dmaGhZMVFIR0pOMjNUNnUwUnktSHlFZ3l5dmhmVjhFVUJZcFNUVmNKblJBVTRyZzZST1ZkSG4tNmFEZWpCVlIifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"2P_Hjy1PpS6TJN6zjzx7dQSDdy4OFz7qCzvEv7PZkTXfe9dNkHTvAQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"Y1ld7kIgk-lvVL3YoW-qO8WWfXi92WmI24b5gCHMD1TDXcQob46ldsqQ9J3LSohrm5VqUbHg5oSa9JBW9W0uGzZdvyEDEnUYkg2qY4o-el7-Wnda8z9rm7XCO8xK6IICPnOSMSWiu8A3rwn81nHKOGHC68H7WLazCZgaxaLgmgLcP5Do17Wgi3carjjxm4iN4ohXSGA9ZJDzHkNsT2V-GmMzl4cKbyGqD-SspzfHsIA","iv":"4hkKVXthg1p_4LIx658vqg","tag":"KlLLT77fB60fxfRUYoG3-BNTgP8_D19M","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBT0l6SlM5cmZvdGxCWTZweXpKNGttQlpuMFdFN2plQkpzVVFpUWduQzQzNjdyZW1rYU9IbFI2cFZoWlNfZlVMSnVvNXo2SnBKYzNGSTJxazJqNW41TkVBIiwieSI6IkFCd2ZjQThzekYxVVAxS1ZERmFiX3ZJQXo4NVVtVlRRRlJpVi1lckZwNFBHc3lmSUNyZVVNZk5ISHhFdUpsUEdJN3RtZWpUcFJYVjlmRm41YWxScVZxaHkifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"ju9tngs61CQuw3Ii9iXY0wkrz6TocdyzvjG7PldRiom9n8yfL8ZB6cQsDzHsrbxrplQfcyMc74I"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"QeGhuHxKId6XeFggipgUpvwn-xLZEpTOdq2LnBq9KQ21uLdkcbLfAQNEdRdilIspMAhE6WzqCKODowj2EyBOVWLddDqn8wff6OXEv0_5j_zqJDJBXVTTxWeip4FkVnygHWO4VG0VW_XLQR0k2JAShiS_uR5sAZwT9CJXlxyQV7BcZSfqfpLw-eJtWe_mhgTbbqFrnYFI5Cf5jI4Hdl1c8E7h7BUrwzfgnPP6TXjyxoI","iv":"CYYW0DMM4pUOtH8iA1T88w","tag":"DPcpOlTfxxTFbn_s4VakwM0lby-Fp3yBQxd8nM2JaDU","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBUm5qRDRjdlJEenREdnF2TW42YTRlZkZoeG5DcGRqRzFzaExFU1BLWHNxZDFSbUdERTRqZDN1ZVpZUFlKaGZlMEhLX2tKQ1BHMmxpNE5HRF9vQmd6eEdEIiwieSI6IkFibGQteWtadjNnei0xaXNvMkpqVTlNWnY0VENscVY5T3E5ZVZuQktWWTExSVJDc18waTVXY1JNV2lnS3NvVXVwR2lOUDVTb3Q3REFBSkhoektQSGxacksifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"gLE_kfglbHj0lkBRrEAIouunrpGjomr4cCNSOYeZTOLtphojXyYB5hhHQjwnk0-FmMIEj-JHLVogstn-qY9keVajYAMqf9Rc"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"t-U9vLZqvJWJdJLBXuYDR4OO3mqBVfc8ITGXk5ciVFsslWTp2fO7_yFdcEcK_QX2o8bg0YTa5Jl3EjYKDSA73u3_KzzPJMLTWD4wYqL8LO9MM7H-Fuu3y6NFggqceTX0CJezI4ZoiEhhhWJSy3aZBaQlqtIKUI4xGe-tnUgjVuYOS9JaDgFVgfQG4EFW9zFDFfu30lkKYKMqaPth2dWxFDLCFwX3yVg","iv":"VhUPBzS216Xo5H_h","tag":"t9tPsHH90Ary6G_jmMGKWA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBSjhoNGRTdXhLTmRLaVpWZEI2QnctX2h0TmE0ZFVHdlZsTGRvd2hjci1hR0tnX0VYdjNqUFZUYkM5OFIzbWpTbEh1bU5OZUZoOEp4cG5KZXN4RkZpeWlCIiwieSI6IkFEb2JvNzBaOGRYbFVQdGNZMHpKVXNLZndram51OEJkRXRDZDlSbmxFSFpxOGtMd1AwSDQxdERyZENGYmJ4MWp6Y1hUSUNsMzBxSFlxb2hvZXFrTlBHNVkifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"ntSlDVjrsvlVyGPqWeMIr7g_dVLCDivi"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"l6zDd7w1JND51dGDutFYoxn-seZdShpYz5tlFr0KsllMLPoi6wEpeGywz-1BTU3-e-BazdTB7KPlVMmb6F-rGCD7h1rqsxlZU9JH_Zs6TjspqQasMTKVOl3MH_oTgMKS-DI60lFmLUAj-KwdXjIVTPqqSEmxXxme_udtQFk6LNXKkIAS_u3rXObfbG_WA3xIi-2ZiY8ea2GOl42ZIddqpuFc-teiGYw","iv":"X4YYyKC6S2EAq5e7","tag":"SYFTMuHqADqfHw_mUxX8UQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVlBBbERkUDRpbHRNM2pKOGVycDcyc0VqVWVmLV9EVXdZMUt6NjhWZHo2dG1RNDJqVEx5T0NsM2JsNjY5bmpHZnhDeVRieVI5VkJ0QWlDcGFpWENrdFZRIiwieSI6IkFYVDFPWks0X200cjJSOHYwUlE3cEZPQXZJV1E3TFhsSmtyOGo0dzJrQURrR1JtR2Y0a0xLRnJqUXZ4UmNGNFJ2dUd4YWtMRlAwV2Y0eHpVUjNYc29LZTcifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"5dMOaFexxy32yZuMhgqO6mJEGdQ16_rw5etgRSiH11w"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"zHKGZ3lcidk_ED9M9NHr-CgZ8i9OWMXo3IKWaxmf5f6w5Hy_9rrbY-E4NTyRi9pySEN6Qyi6gIT7n6nFWeROLIsOpp8vRlKRbkmGnOjbUs2QvjGiH8CV81HRvYCXLa6DwFUI_J9bmAhuB79CuEVBzxE7F2IT6GNimxxkW5Tg-Kwc_VL4mboOkE0ngHAdTdWQJrVzNFINl2E3KEYsWtY3lbt1pojH6XQ","iv":"i8SZR0geZRtCWk5_","tag":"tP_C7rRSn8mqUVD29r9LUw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBSmZyNnhibmpjRlZqQjR1TkM0MTkwaTJNZ1JRZng1NXhlY0tkZmNGeTRmY29tSlJqYWItSWRHQTFYcFBVN3VUSnpuajI4RXBLSkttWFFnZEhvTHdja3FSIiwieSI6IkFiOVlYbENZQWk2dUhhazRWV015d2pfdFcxUWs1Y1RabS1VVmZtNWRKVUZTTzVHZDJZM3VCZklyY0NLZko1Y2NLLXl1X2NNanp0T0F0TlRvS0IxNTE3M1YifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"jr2rPS0sxlRi_oeIBT0B8XlxJOUZJREKDpJd0FoAgRM0OsjwKbwRow"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"86pUnoLJhflU8LURtiF5RjyZKa5QpppQaUkih4huZDYR6xAHcb_Ou5hl7GHfMvWZW8BkeaPPV3QV4C7jcFlnFfyHdGDLE7KyPzEQ_YMHxzhG4LsO_d5PxMaQBYe8cJJDXvgaE6_8iXTlBxjqxoNuETTr5VZxQtrP27m4j2lklykZibyvFydZNGx9lP-QUdTM_hv0M-M7_Zy2PXHZJsrhcyPgUAVtVIOLxoK3d0nL1e0","iv":"UiBIMQwpjZP6HyfxVbw7MQ","tag":"Z5x6KIETZMcul0LvFufeKw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Ik5KUFVVbHlYem9RSE81dEJKckFEOWVnZXVsclZCYkJwMXIycUY3UzdNbm8ifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"cM5amByozetCbGao__aREhlUcJdUIFZWqBxcSa1WeYAUeHaA8welag"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"ZYX7Y1H0tmnso16nn-9s_Rhiw9E0CcjpKn6Mef5UHZxvZFFZlH-ndeeMi-T2O0NLagJcA72dCZycelmKnQ3B_junRnj0pg_1Izy4_XagmWL3T2bgZQY7RA5YXBzNbZrPV_Tfh93STo3w1CoDsYGJ5KPh-cfwaKXRhzCaeaxLbcSES0LiT_4Xpr1f4-XTwwyJsnENoxNrTX_GMqNFHC861HZhcY54pDBrVywXn7_TiIU","iv":"E5HkYh-_3Cu7b3J2RDp1Hw","tag":"K_Tjr-bxbTGGrEgZ4MyNJmbo_QppAKTP","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Inpfd2ZKVFVUU0pjUFROWkkxZlFldGdwTWI4NFU0UHJhZFgwWm92NDl6a2sifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"8O9y0-Ugge5rEp3-mpVL3oL1R2uC90TYQy7f0-wa9tuSFAF5vi5tg438PTfxoviFGHxForj3_VI"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"yK78enqyEQEvwujprdQ00IT9eyuKOcA4_VuUaogLJKxehTZRSznsh4lb0RjWomV37v-crUbUklvxXpaKYd0W6xN64J5VV2c3lqWn5-7FDspDLn5Hrsi0qX2RuJvhr4-2tiL3QCxataw6MtiVSj8ib7d7BARFS0lorRXW6S0IVwbzdyuasHIul9W4hx_ervrJ4MHPs83KMWOZuDppXjNj_ym46VpmC9XpWxfDVTyKlKQ","iv":"O0hq-ZfavALet7EQdKPtPA","tag":"Q2u3JBdq_mJM8vOnhw_MLZWw8OHrerRFcO44m18Fnrc","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IjQ4NDRSWUpxQWQ3Mzk1YmlrbmJGZHpNRWJZRTk1UXU1TTZXY2tsejFublEifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"1hnj3G3e8zqJMNyW2JgLtQvr76-idfysmqX7Z_K5AAxpen6UmT4jwfCxuUjKfdw1k33u7hz4U6hTCgRDzvIGhnpwAWXKIjaX"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"pncq1HNXbejvYCVFvzXn2I8XwBqE3ol07_qus64hlEIb7VcOxiMl1t7mVo4lsSEyipgYZCFxEVgR_C-auI36XdYqvKCQdbzTFzETBsb8y6WbBFQjCupYUa8IkDRsa7ZaT0ooy6meARQoDsomSH0ubEXIBSowJpygNjkBlCTmwP2RyWYKYboyjK5awI6nTDM92a3ZfFxdOJ2dA3ydlaJLicVfbqBSIlk","iv":"7m-i5f9Wer32W6mU","tag":"36R98AoUarAAJTTyuaBikw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IkNTQU5TZkJucGtQSkZyVGw3ajNZYzEyWjRqU3AtR0NBWUJvYXJicVg4VEUifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"M_beaZXdtVd63YAMgGaUmLxPzqCIVO-K"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"gVrYYC1cq5Q7aV9QTBeH83R7PTbXnH6tHRauApdcn-Knd5W6j4TyOM4wtSldO34ycjB_o0dsjZ_HPHtMw9e-a14qT5LQCeNDSb9cMb-MU399HDiT5QQ5kst0MX_ZpJXGvNx7uwAWYe1Rz58U-QG6J5J0wiSwqPtpI4SqFEXzrf88PExpLkiQ23IEjW4CnCmDrKpafaE6-ngKzkSmoc3j90Hh3NlIsdc","iv":"d_xuS_WzYJJsACgD","tag":"632n9At2zamWTVRGr08aKg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Ii1CS003UTNZTGZ2T083NVN1M2lkUEhFTnNfdVlBMFgwdDJZU0pXeHo1akkifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"OEJ6fL_dz-jXjfe0w3h1yAWAkUC0Vd0k9hgtf5iwfqY"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"zk3qRHTYEdyLMh9JPEDaicjGnieRpP-AOKMNJlPioZ1w2WOR5Fts3356R9dDGxI1HuUC-g6_D5kQjROwxbeAtycj8G4CBQVhh8f6bM2eXNv9SgIyIePe6wpc8NcFNJ7mx4TsvAKly2RR0b67u3n__tUkTsiJxiVbZoRC9T4Ez7wX-TmphmFRLtsMQxxIdJEcFmUkS42toechllYS0EjqX-Yeqb8MAQM","iv":"UlDeGbl5QXgpTOUn","tag":"gsupckNy1QZFPqDVfYhkfA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6ImE3MjhSbEw5a04tX0JYOHE2OS1VcHdqQ3RldnFCMHdZYlhhMy11eXUyQk0ifSwiYWxnIjoiRUNESC1FUytBMTkyS1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"DNpDD2Q3JEgZce6kP8lt-YPcKf0HdSiHvDeM0OaQ4-j6YkPLMBZ00A"}',
+ ],
];
}
@@ -89,30 +146,32 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'crv' => 'P-256',
- 'kty' => 'EC',
- 'd' => '_gUgAjx9zU5BKlHq--TiCjZmsdNQAgrv536DCTUM2vo',
- 'x' => 'Kuh77MGkweIENgR_3WjzJ4gEF47yn6yQWAeeNqYC5qo',
- 'y' => '1koAqIfb5C2PkCT1GYEcW4IcIEdrgOdMcua6G0Eyhtc',
- ], [
- 'crv' => 'P-384',
- 'kty' => 'EC',
- 'd' => 'Fn_Le74znJfY33TkqCoskx1pkgA_1sLnKvfvM_78lTZT2zfj4XC6uY_L8iRknOii',
- 'x' => 'o5CqgE0jIlCVwGKMXDsQmkOgxohJcod4hv7jo4h7qeRoysAV0YPtokMgv7CUpSCG',
- 'y' => 'Z3ZGVhyv3T-MudQI5fYNmkO1BzqlHQJHCQ9RQzqa05QOsUZo39gjVC2EhRv1Z9kz',
- ], [
- 'crv' => 'P-521',
- 'kty' => 'EC',
- 'd' => 'ACebnk5N5RV4VFhrCmvp-5w6rsQJvHdvvBdJkIKmq3pDDreKC0vU-K2oYrQaX5vPuI1umnVw9qxFq6QCsShJ38Fh',
- 'x' => 'AR05Z1Xe74_lcrJbhKg12jijs5LPbLwcpHDGETssYKRgbO3-4l7egk_WtLjSeXmDvRfkww9kKpFdKHTqmDYSIzxf',
- 'y' => 'AL7NyrGpwcXqfvmQb4d7N6vO7REegUaFv8ea-_EXyA2eJciZJSmvipwpxRnoSfkNuJ5yJUGdjg_FtaddKaLdJEf_',
- ], [
- 'crv' => 'X25519',
- 'kty' => 'OKP',
- 'x' => 'LD7PfRPxq03bd0WJyf_1z-LQevmrbcYx7jJafep3gmk',
- 'd' => 'pSdgXFRYMvOa7giAm3Rrf5Mf8GnvLz7HtZKu_KN06KY',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'crv' => 'P-256',
+ 'kty' => 'EC',
+ 'd' => '_gUgAjx9zU5BKlHq--TiCjZmsdNQAgrv536DCTUM2vo',
+ 'x' => 'Kuh77MGkweIENgR_3WjzJ4gEF47yn6yQWAeeNqYC5qo',
+ 'y' => '1koAqIfb5C2PkCT1GYEcW4IcIEdrgOdMcua6G0Eyhtc',
+ ], [
+ 'crv' => 'P-384',
+ 'kty' => 'EC',
+ 'd' => 'Fn_Le74znJfY33TkqCoskx1pkgA_1sLnKvfvM_78lTZT2zfj4XC6uY_L8iRknOii',
+ 'x' => 'o5CqgE0jIlCVwGKMXDsQmkOgxohJcod4hv7jo4h7qeRoysAV0YPtokMgv7CUpSCG',
+ 'y' => 'Z3ZGVhyv3T-MudQI5fYNmkO1BzqlHQJHCQ9RQzqa05QOsUZo39gjVC2EhRv1Z9kz',
+ ], [
+ 'crv' => 'P-521',
+ 'kty' => 'EC',
+ 'd' => 'ACebnk5N5RV4VFhrCmvp-5w6rsQJvHdvvBdJkIKmq3pDDreKC0vU-K2oYrQaX5vPuI1umnVw9qxFq6QCsShJ38Fh',
+ 'x' => 'AR05Z1Xe74_lcrJbhKg12jijs5LPbLwcpHDGETssYKRgbO3-4l7egk_WtLjSeXmDvRfkww9kKpFdKHTqmDYSIzxf',
+ 'y' => 'AL7NyrGpwcXqfvmQb4d7N6vO7REegUaFv8ea-_EXyA2eJciZJSmvipwpxRnoSfkNuJ5yJUGdjg_FtaddKaLdJEf_',
+ ], [
+ 'crv' => 'X25519',
+ 'kty' => 'OKP',
+ 'x' => 'LD7PfRPxq03bd0WJyf_1z-LQevmrbcYx7jJafep3gmk',
+ 'd' => 'pSdgXFRYMvOa7giAm3Rrf5Mf8GnvLz7HtZKu_KN06KY',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/ECDHESA256KWBench.php b/performance/JWE/ECDHESA256KWBench.php
index df48275e..0e3e0a6d 100644
--- a/performance/JWE/ECDHESA256KWBench.php
+++ b/performance/JWE/ECDHESA256KWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A256KW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A256KW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A256KW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A256KW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A256KW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A256KW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A256KW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A256KW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A256KW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A256KW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES+A256KW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES+A256KW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,30 +67,78 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"_2ZDM1eBLjU6k1XygQn5q8FcTZf9Bu_dlbjQ-MPh1jyQ14YplP2r1iZSnVke-UbDTFUGj97RZw4ab5PRxaWdo--OEY9MBDK-PK4HaLuM8mgxM_VY2VNLROSuZZc2Rk0UYWr5JLAq9l3N-6Ayjbn4L1EAslENOArzG05EdNcUFzkYjEm4dk5lN0_1ueL-8sy4CN088iUBm2ypygiVt00dnWd3d0W3zwgZiH53GE7zzQs","iv":"11dtOFD32AesbnRi4DKTMA","tag":"naveS2vDGMoeTyV0_eEv9w","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJmRDhiSXJkZEFkQUpSMEhsajV2eHdSSFl0eE44QU95c2loX2phcWtNLXFFIiwieSI6IjFZbmZmcGNiVzNWOXhmYU9mcWg0REZ1d1NFblhwaWdESnFvS2k0V25BejQifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"-lbBek3DTQlQm9LY7NoBdSdiLUsea94bCjEq__slnG1oAnO3OugDow"}'],
- ['input' => '{"ciphertext":"5IBzhh0acduGMoWjyRw0RTqI8byRTqE7jIR9So25ioKmYRRzHTUi2rIKvQzWY80u8wGe1hh7bX_nK5HyQztvyMZnECR2Z1xAWmZlNqEcV_QH6VUqfvnw0w6od2FMkraq7b-MFXTyVtUyqaW87OeDo1WTRrMOc64SfsVpQ5xLhhppC_LM3iTFOG7R-ldjyzWpoSqy6VkYGqTM5_EYnYiMfdPikr752uUnO97HiXQ3bcY","iv":"UJpFJkgRWQ2FDDHuHsizpg","tag":"ANvdf48Jr6ixFdCTgzj512kksNmKdV0L","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxNjI2TTBFaG9jalRFVmNwSVZvNWduNmxuRWpOVXVIbHgzb05mU0pJTndFIiwieSI6IkFCOHZJR0RWWU5HNkhBSi1jMU91RjVUd0d0TkhVNUJqUzlKbUs1UVBCYVEifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"CTUn875mWqvFzSqrz3YEpIXscd6pgMurvMjESuFNUmjE3E_CBrdq6IngiJVByr-z20PczS-ovD4"}'],
- ['input' => '{"ciphertext":"2-ph7JTQllkn5k59nLjyCvPFmC9Wo2-t9ec671GNRJ21CGDoCcevjESNfP_3cXnPBRneKotf8h7Vz1oC0hcZeMPXVGZUD5LXmgMrsWrXGF0vFN910E3ToOnOPhduYe1dM61DoYzwrgoP0t13IFWG7KQU0SjLDgAkiC2QChTIhLk81G52u1DWshpQdc7UT9Lfv8RBPCkltsfu3NlT8fpB4JABXDIJbXv_1M2ybfqqg24","iv":"tc8wFvNZ2I-fcHNhFxJtzA","tag":"9iJNeBy0m2JkHfHSMFT9j1rGj_RwdjDB5X4VQssehvQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiI0cWFsb0dBWUVHRFhQVThmWVQ4UzhtU3N0SUFXcUtHb1FKUlhkRVcwaW1ZIiwieSI6Im5lUGhqc1UzNlRGYV8tZFR6R1RlR1hZTjFnNmNIMTBkVk44WmpEcmZYU1EifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"zEVPN1GHM033Q7Ghz6uBSdgjC3CJZZOca89-iG8lIPdiIwI0OPoIOMWiPIGs_hwR_RMgdhnPa70MV4XtmMgo8FyyjOkwOsfF"}'],
- ['input' => '{"ciphertext":"2EZFKdOiXzI0ZXAd7F8eOM1csiDF5eJCKusj7jVGYEQgj3uJy4Tdm372CynBIop5jHQgCk_o4lGcJzQvnUC03x5ayR0u9g-6PYr7lvpPcJ5NSr1mfehN4whG4K33wGR9YY3FigDOZMWCSj3-qnTcw4mKvixnrhNd_lEYbcXp_foBH7L2kIs7YkoiLLr8__2va8aWBIY8vw7W6_44p4YjDU_i0JS2-GA","iv":"ZflD-9NFEjppvYSx","tag":"mcdC1NSqbjmD_imWCZxbYA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJDSFpiT0xQYXhReU9pMndpem8tUjh3QjAtRVFFTHhBQnJ6bS1TdVRHMFZnIiwieSI6IjFNOHZyVnRINVE0QnFjSWROUnVfNkctbVBWVDFqaEw2LWxkdHBDQzBSckUifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"ZFrUs0U01E3Sccm31VHeHAnzDaYMAO6i"}'],
- ['input' => '{"ciphertext":"3Hi4-hGfQ9CNzmkhKPg-uAAHiEzjxMz4jtSDmTuYkEo3-Ribc8H4M_Bqj0adpAS58mnPz9I-uEqrflUXeHAJ-d2Vb90gf1R8RKVjV-7Mqi5Bxhv98GFIZrHGFqmQuJ95yh8TdxSJXvMvKDkhe8u8rA2MgxNKbs63EVBr4GMCqRWGqagfOVHpkcobTdcDDpS6RKXwBfNyLVv4QdqyBUyjGAH-FgF2Ims","iv":"LV_MzlgZlIuEXYxQ","tag":"ui3S0bL6TSCgNaCSov7Vvg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ1NUhFLWRIV2FyU2NzdDRQQWlDZ1RKUVlnbWFCdDR6SE5aZkduV1NqTlIwIiwieSI6IllRQzAwUnpOWUNSWl8wNXdHelN5WmVwY2t0bTRaV3JQemtOdmtGbEExSEEifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"8dCnxob-1n2tC6HgfsLTFvc41WzriaHlV_qIbdjKY0g"}'],
- ['input' => '{"ciphertext":"pt41hd0_vaDa0O5HMf6E78OtCZlZ_r4-lwtUl48kZqqoz7k9tdmu_zrAIFA_wW7ieCp8-GBu9R_Ny2vH4FFvvQgMtSXx2h_YBAH8oPCDKBoiNRM2AFlC4T7palBNkFS-01y9eJkxwjmRgdJJYXWnCDSK6AyEsPEVZMOqVNK-fnp9-U3bUPBPSGFTH48Bs7NTB7hAMuLZWbMoJKQAQdz-wius40-nof4","iv":"dkYB6DStRMEOOT1v","tag":"XA304bY0KsYBu39T2IDjBA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJtVExiaF9LaFpKaGR0SWVXYXZENi16Nmg4blJjSHNrUWhXcU9VMUNiVWg4IiwieSI6Im53VnRYSmcwSU1WbFpXM2NYaU9ReXFmSGFvMFVXNXY0czNhOGtsT3BXV1EifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"C1B2p6_G8v2HuDH4ElWQzdCbaTepSxLNh9l_a3Nw-vTkwQgXtzDq9A"}'],
- ['input' => '{"ciphertext":"9qoT_yY1nVIwztNUHOfP6dtTfJQpvcrQ1uLAm8aFSZhSpIyg9xyJ_BVtAAyv7Grtfxt1f4N5YUK6M5zMf-ybhK-0ybudJHkLWoj0YtAvP1KkM3Wvq_GTCQ2ZdBjqIVKJTnUEfWmlGV6BXPVXLWM0X3svSJBCEwEOSQEufX_cI-mfcUi92VLN9rTTkDokvTLVntSGThcqydm8ZtmOg8u02liuHqEhXy0_gYFC_XY4Am0","iv":"abExYU1ldE0GO8_K-Wy4_A","tag":"uSMzfuP6WQzmTWn0OHa10Q","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJjSVlwT3RfVFR5X015UE96VjNJQ3gxd0prdGZZLTM3SWV2bmFVNnRtaWZJdG9qNWpkTkwxZmd0VkplMDRfXzJrIiwieSI6Ik1ZM1B6LTQzeUNjdlUzYmUwMExrMnBIel9IaTZQYl9RTWUxeXk4MWpvMDB6Qm5sUHFMdVg2d29uaGhGWTFnNE8ifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"zw5MEB3t4bAJ8GIa7x0DGQzybmnhR_ADOb9kNZI2-F87hHLi1-LTPg"}'],
- ['input' => '{"ciphertext":"GKfqg-1I9ItJSCsiDY9yIhYxnGuskdxPy_rXbz9MYOtmDNnRWNez8DlVmPf0AWhJSkYvCIohhCmbtighJJNJq0wGbriU9MjZogtWTzrUUhzEkKaZqgg-ofHcF_eow9h3GsQ1TEdBk3bOFLVxqBkauOR4qw7KFi42l5MNjJs1zLRihJvB3FxqJ79Dbc-1KZBcMmdNyoWFlzDCQazaZBpgPz5OYmN60SzhWcIkfaWXwX8","iv":"7AsW-AFjgNJyxSeLNQ5WdA","tag":"_E3l8ER_XQmNeFGrZnaE5HB6cOFs2gQf","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJoUUVxMVNaX3dpQ3k0enlNeVRJU2k0WmpfSGhNVXk5ZWo2TVVWYUhvelUxV1JJNXZ0QjdWUGFGVHc2QmUxejhLIiwieSI6Ijh3S2dhbVpLWW9EQUsydVFCeXpMWnBCaTRUVGpfZE5XR0dXbzZTSVc4RkRIaExPSjY1M2RFZ3VmREREVFI2WFIifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"en1pp2tN0ZgevdS8KwYpbcnTgxyKKbIs1qsETtGEbXJ8dUz59q4dw5P5LNGgs3ITQkKyAHIy-po"}'],
- ['input' => '{"ciphertext":"Q-FDEcUo_6zIyfnH_NApjUH7V4A4eQ8XJ6BF8SHg7qP6a8gjweAdYtHmy7CxvWOcvRdmyLNvfz93muQvHihRMZKvM7Cyl0BLuqKlQkwVmln94PypmsoYxoopl97zcdCTpkFYNvL4PLBomAVaagX-q9Xs7LL6r1hi1kf_drgoivfVQxRGrOkVw7Hm6us3dWG57Wpe8wWAGmJAY_I97owJC8-8zczJTMDLTiIFmPIo2pU","iv":"9aC-2rcP3gIKjMe4M_iOtg","tag":"IPNDjw-b6cbTuNuj8DWWhJTFW38IQQQbjuq9ftxCVms","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJBRmVfajJ3WDBNaFJMbmMyUVBwMjZrR1FEOXBTUUtiYW16a0xYX2l2NEFKeGsyVU55cnkwd3NZZ2JMeTREQUdFIiwieSI6IlJ1YlhZM0tvaXM1UzVZeVhOczhLTER1aDhTQThwYV9ocm44ajdNc0t0OWdKRnFWcDhVaUFDcVJDR2VnNzNtcG0ifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"43lvgJ17neOuzGkKKe-4FJi7YKkoXpfVNJsqdjBUzRD9FNkun8cmVuVS1TBt-PsQJIugykuhCv5tMihMzSODbZk8P46_4oG3"}'],
- ['input' => '{"ciphertext":"tqQ3LzEqIGZE94SoOskld4xuAmX3kguPPN26_Bj_MTrWEqUlbQ7D6dI1jcbXZZb-iOnIuto9CYb7uSniY4pR-klRH-9hrTX7dMGhZzuzY3hLn6JL-zlr5bZcbGl0Wsd5TZ8jxPJx6BMQ6ncCFCi4EhraSt2ty5Z3H5RaGXKhMOcER0vqfIxIQ7ij-yrJ_e11zRRxCxPgWjpNIkvvZzMC3XMMLgSHjls","iv":"kdmy4535OG2eGe5t","tag":"XwtRf4h8Bry_NAh2ReW-zg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJQQ1JXelloWDF2RTA0Sm9LNTlzQkN2UVloRWRKc0NhbWRTV1oxSlVhWGVHZWs4T1plNjJaNGdxVkRMMVF2aVAzIiwieSI6IndsVEZjMDJFdW5kUnFnTDBEbmFqcnFHYWMxbjEtNWx3TlgtOFVGWnZzQ2F0OFpyMFcxbWVvcDdzckRTdnliLXkifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"wRHEx-f-GthCfVhqjVJNF-h8PKLt8smF"}'],
- ['input' => '{"ciphertext":"_s0KJ5Wqqk2xsM4zlACqSX-VGZHsXhyGisdymCnGMuLh3oJnAX6hSDCVHCxNxduRXCF2WSsTAUfa1yLWs3GsN5ndbqLZZYDVHGSjtCSI4oBODo3Xp8NLpf676xjGJUem_VtqmiLLiV9etJieOB7kfZOa-DwGVc3RQkOabne_EmsornckgS0YXN2s61qOMCrZehPqP_Jj4JjzRIxuDKYVtyIN5rCGe4s","iv":"1XPPKja0ZDqv0o4G","tag":"bS5OAUL4-sK4Vo2bmMt7wQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJxTGVQUnVNNmtaTkZuUGhMMC01QktpOVBIZGJKdDJxZUM1REpiMXhlUTNWbThpNllwUmc4SFJqZVZPdmpJeWIwIiwieSI6InpiTlk3YnhtZ3FyZ1hxQ3IxdDNPVkZxdXgyY1lqRl85YUNOV1RvcDBXaV9HY0tNREJkLTVqZGNvZG1KcUhxZk0ifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"cA5I7NM1g16i1K3fFNapEajLRWlTY8Xi7ICLD9iICPk"}'],
- ['input' => '{"ciphertext":"7bAhp0XwPvbnVoLW7CD51u86heDUrp2CpUKSQXtcouS-LtY6ytvf7rC7ZVfe_-t6apo1jUIGaswxTl-ma_xOxuG2oybLwhXirKnRRryDHQsPwyMMLPMt2t-cXSW9QCa21KtkY-mxTpn0JZusIrT7F2zzovJmIR-4jlBqd_YlTT_BsoB8TWgSBoUMeoeZ9RFW-uBSeqCWBWeNyZH1lzjefYALYJ333Ns","iv":"4RZE4V9VHKPDIvIP","tag":"zQ27iVw3u6CW9JHhKvTdsw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJvTmRQNV9LT2lEWG9sMWhFNmRaakxnZURIOU5kREJfQ3paWEtqWC1VWkRaLWQ4NmhxN3hGWUwyWHhac2Y3dll0IiwieSI6Il9pZGpKLThiUjhnSVl2cWdzZDU1QUJkTl9pSmluSURETXBBb25uMnRFRE5KZ2dOajgwYVgwN0hYS194SVlhZUcifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"O2qIqAxybaUIEAC3NKq450ptzk3pHJ33DOg0xfajJ9sv_w4_OfHrgg"}'],
- ['input' => '{"ciphertext":"cEE2ph6vE0gyDsCGsJZ_N6cRRxvJtuFiLIwLMHntzIDrAiJb3DR0ks1dtgjTpAm4hKmkgG4ftZQ8zDQRk9mDMCKabO-eXo-evzxerqKIQBV5EysgmKojXfiG1f5MH5wKK-UwPgcMmnodQ_AAZMflrXXo2PbXL8OQIyIMbm7Mdx1NxbDKhFP00qS2ad0fdhNRL1dB5yzLHDMNPenYL3A1sDyAWcItRj8u-mP6V9z3K5w","iv":"ol8jKetABAiwv2QDNEJLUg","tag":"GFZsZlXowylyG5OTrzhcvA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBSGJlY2VBTEcxbVBXWmtuLWlqdjI1RkZFS0xnS1hqczVpMzgwRi1KdWZmd0lZYmx4ZklfanRCWnlBZnhBdFZFWDdkQWJqbGp1WFBPbFk0aTJGWFRfSmV3IiwieSI6IkFXc1Z2Q3d0Nk5SblBQMWlqTXNFd285RnlxbzFEV2dEeGlZbmdSLXZFTFIyQW1lVV82UWRwQlY4VUI4cnA2RndER1d4Mlc1aW93bkd5TmM0azJTeF8wcmEifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"RbuaR9R6aYWKqWBOFi517v8P5IjBjOmj9ev0T4EsNHuDACV4Zh_xoQ"}'],
- ['input' => '{"ciphertext":"tX2AOnAGCPECJc6w9zlsW_MAq9XC3JOQ6wg6zxDll3vmnRJ9j9CXkr56DMMFD-C1zmeiDgEIhcpMCPfkgJzdYz5hTygm-gK0EHNiwoNjHoNTMY1l-W2dy4J1ICxC_2ZRuZIs__ePHwcmvQE-JZhbxi087akNRIZ6A5Ujz8Y6MKdLODxL48Hr-qd1gyle-1QRodceu1deqmnLC62k0n_WNy7dyy9M0FUF-YHnHO_MLnY","iv":"vr_5AlQqrn4pS1T67DgzwQ","tag":"0tqhT1oHgUpKqWag0Rge49L4Ktrw2fA-","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVzZPTjFOVzNiaWFYMWlWTXA1dWJZRjJKc0VzRE5JWW82MFdkdVBVaHBwTWg5UUNpNkl2bWtSTWd3SWhtX29icUo5WmhkU2I1cWpsOTdUYmdrLUpqYnV4IiwieSI6IkFFR0VFSVlYMkJEZ2xCSlF0SC1idFlIRV8tbXBKUWRpdGFpVFhndkNXQWpRZEp3cnU4VVU3S0JvdC1od0pCWVBYMjlKUEdzOEE5TTlfUW1Za0diMEZzb2EifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"EM3zGRZ3IXp58aqF9-ISJVmYyDrp19fCd2UHpWD3HPukYsYgZHzqHo8v0vlVsYFvGlahiStIfKc"}'],
- ['input' => '{"ciphertext":"__hNdjyA4YeCtHlz1fNjcajEx4S32PjNs1uKdgXKmas5UbNNFpuY2ITR6bu31EGs4FTOokFfxkf0FanWbqLOT0FFqSbh0jB5y_gg32xLrXpNWUZrSHsb6Q8WaNfl5j-lWnKowrSPxPXATZhSBCgDFbRp1Y-nck77x7qdvk4u7qAxpUImvQ3bOWdoOjAyxxj6BU-uP-yNJgml3BzEya-qU-8nGTxnlTjyvaeLDDjXPX8","iv":"OOuRSCC7nvWaZaYXOcXnwA","tag":"Jl9rPZU04Do3bJMvHTS9DEuOlVkQ31Z9b39qWfxZvp0","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVXhfaUVwV1ZQUGk3Ui1Vbm02UlE1dEdRX3hqNWZIQUJXeldkMEdfVWdSOC1UeldvbDZRUXVBZW9mdVRxbm5KbHYyajZFTE9ScjI4Tnc2MVZ6UTcxdkFFIiwieSI6IkFFWG91RXB3bjBMcU5DcHJIYnpsby11WHRQazZWUXd0TkE2WTY1S05uZkhUVXpDWF9lVGVUY3pwTmRnY0dPaWE4RklRZ3A4OXRlUWw2Q1c2eVZFeFZiZWIifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"Q-hZp5Ts6maPrD7e5GhOfw8eMxEWlWmR256N7LH--4yIRVhfIcs7KGF0LfmiovdlLIGLPDPCI5UOBWj7V5lt4q4QNx_qHWqu"}'],
- ['input' => '{"ciphertext":"5eU_XuShpboU9NilrZWfcPlUMSN-VNw-aF9BMioU7aq-CllNT0y0l_JQYw8Z6L0QJN1Xd8zG6-EOVVlwZDTGgmfcl8xPdDbhmDqkZKIE__ejHs05wkE9d-VVDaPMBr6-qz9PMZh_rI-Io7jlbRL6b4E25okNlB4vfmv21hWP6-V4FDefqk-KI8-8uhcX3TXTTjvIm6XN9T9qjHxGC3V5AwqdM9vS2ns","iv":"kuM67zZvVGjHCp-l","tag":"FJxF24EhYJfRceXxPThaiw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBQ2QzWi1GNURGdXdvUWhRS21uR2R1M2Jza0paeG1yN2pWMVRHLXhFeXluWTV3bFM1REhVRU1FX3dtVkV4d0FEd09HMzdYZGx3ZUI2THZpR1JhWUR3VjZsIiwieSI6IkFYM1dGM25VYl9sZktfelhyYjQ4OEdtQmYzYlVSck5jZjdPc2RGSGlDMk5UYUVzZkd4aFhOdjNEdWxEcUdwUVBxMWtOSmVKb2l5N3NLcVpGWm5KeDM5SloifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"YcVE0diKwm0751TE9PnT-Y5SlowoRhg_"}'],
- ['input' => '{"ciphertext":"uei5DL8ETBiQkCrCBSHCrkpMKYGKf5pnG5DfY2LQO0rCub8t72uQy_9_M0mxN-2KymlIJ2xXzevaciv1AiJKKZ2dw_MqAotMKkbY3-CWoLcui3J621DTPdInRWa_yBfEaZjcAyROkMXGCCwSFstSi6NxJCoepw_-N4DEpHnNOdDp18AmSEZyiUVVEoWyVzGKNnNi1IZfpPiUPlGUoMhMqcdO5N9l0QY","iv":"9-6zjl-SYClhgSMH","tag":"vGghyBNPbX0b4WAZ_yGOLg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBV1oxSnlEbjBieVJfQ2VYUjRvak04Tkd4ekt3R0xsandNeDNuY0VzbG90eXM1eFVWZG1zQzd5V3NFSkVZdG5sNllJQ2lUdC1QeUZUTkp1NkdZb3FpNThjIiwieSI6IkFCR1g1NC1MNEhEc3FZSkY0dFpZMVFyUi1ndVhyajh6dVZmZnlUbXJBQU9QWDExdXk2R3g2YXdxNkVZMWRjb3l0SnkxN05ZZUxFZHlvdV9tMXlZTW1FWTYifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"zGy_4_TYMQrn9t-8oJCB4YngUFGj2jSpMnMTCosDLyQ"}'],
- ['input' => '{"ciphertext":"lzyAnuakQHLY86oQDPvNBov7rCZ14F8jCbsGhqAAakAi5I25s3qdIrUQkCL4gf8odOtsXYIDV7aQfgE8KFr9cU4dz57f76kuHoOxSpcoAS95nWdsUVyEIngmIxA2-zsP_9XlCvxR10MdcJMRc1rJBx7cl__DLcv5gPXQExETloHEBEgZsY1CX_RQ6KQhY36MPHVyWTg_UA-2hlJECg2y9drTMTaKp5w","iv":"eYdDBftinJCe944e","tag":"2UJDc2WZ0_cKQ3ARMxBM4A","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBUFVDYlhQeEVlbUllc1Q2UGNvUkM5VzZFMVcxaUMtc3VqdTBUQ0o0N3NZV19qMTdobHdidWhtRzBSSTdUdzZfQTRic3JFMXU5WEwwanBQMUN3RmNXRmRpIiwieSI6IkFRc3NfT05JaXZxMnhYeWg2YkZPYzE3b2U4RVNxV21Kb2VTZnk3Qy1tSDFUX1g3SEZ1eFVuSS0tbkF4ZkRlbVNfOVZhQmhXLVhDSjBJSU5BMXNmYVFvS2wifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"VESVX1LZuNBiAIbwRmkpVRcnJJl9pZW28nLqqLo9F2EWz6tMYa6t8g"}'],
- ['input' => '{"ciphertext":"8qZDYzB4oNkaZ9fuP7VbBq_tgav-f4GRlm1LqlfSjru8CjaJlazysmCyTmiLMnlzRK8SBsJJHl3cD6mzE9th3cUXNnZDv8zWDyGJG1cqSBN9l1eNjm211wApKYS0Br4VeYvmCe-UqicQ9oY9HSTGfvOmoS2muUOcjq_E3NoaMBy9aCfCxpI0zbLToU1Pi6XX0067COb2-bYdubqkvvWv8hp8PHjWaXvL43IHQnzhopo","iv":"YS-zbeYANkS6GEVpMpJIew","tag":"1DnLg_8Ih2ZCSFUplq12QA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IkQtWGk1Wm10TWU0bDh1cVZfc3ZBUmdxa3NYRFFnMl9adGVncG5LbFYza0UifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"u9-hFbvn6zywUw5BXi-bq4xyGRSnfnZWwptY6M4yoO9LyKHsocB6Gw"}'],
- ['input' => '{"ciphertext":"Xuc77DY9PAIQ_yoVkKToDlhW9uk0Uzfaz9MciGY8eWGh9VrFcmuNG2H8gSsUStt-baNm-4VDeQMHslrsitzbr5J_oOidGO8W9zbkzPmBPTZC_5QjXnbXzjt9K7nV-Hj_gm1GCrvWWUhV_3wBqu_ImGvxBKwok7lbDuGzPl34emq9fuwgZm1hMsVB1ceG4GdT7gyWI-l3_ZWiPZ9PnohNiiEweOqXPIxM3SKlfZccUeA","iv":"B_4Jk2jT8k1gbL7kBA4UGw","tag":"014BQVWe_gTnHHO2KiTjvXTQkmjcQGDR","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IkljUDBwQVdVX2xhdHRSZnFLYzg5NnRWdHN3b3FMVGdpbkR0Nmo2RGZyV0EifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"rLPSUu69AesWy5JDXfVWf_013-rTvXTJ4Oee6kGkGMU9dE8HvoH_i71r8DeSso8-U2jys27HL-o"}'],
- ['input' => '{"ciphertext":"3WxZ-AFPhFmAFyB-pVPIexSD4WE2oLLPkUx03a_-CQFauAssjHo0qVANrolX_orqi1mv_bpy9BHN448JkWPmR67ceGh9QA0wJFf7murMjMQDsc7tOcmUUx6_r8stuT7otp8HpDER9-p9tIIStAFcHmfOoS7e47Zim3dl7dp9aiN4KJIobVnlURd3ea5IgDxWRA_h6GEZsZR30X-DWkMgxzy3Ww6JB3t5RNOp4cLghlw","iv":"U5mvwDvMQo2jUg8KE9eUmw","tag":"R3AXFz5R1u7hsdo4hs-LdbNKSn-l3YkMr0itx8yRYKU","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlhUXzU5SVltd3FnM0dYX3NVZ0p3V2h2ZjRwVWxVNjk5YU9wS3BQRGV1dzAifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"YXkavPBVx5ofJMT-KFm_ejahySbtIl8zYgZYM7ldnE4RXRdd0uTyVrpe-IQPXiw1GwulX6Wru0_yx53KhhHm0dreUdNlDhKf"}'],
- ['input' => '{"ciphertext":"WAdVz48yPbEzv5v1V9HNMoF5VaBhPwz5vRseWAPZKTIyNqdA6umpTZ9qm96yWuqYb2yH0w5Cxe9dpR5YmLFPSqOs3Gps_kjJR-jOxwgQ8HcF7NM03H8RuBFHbDmUJnbmDTmsGL7zd2ETcTFojzZGw3mH-WGpb4DngVGVB7N9NtKLA7fo8DkO80pcjz0KXAPVQZ521NitqLf3XMwOoT3VPC-MAl4_6C4","iv":"LzUS-9qKaROPKhDT","tag":"CcYTnLTMuA5yy04akakr7Q","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6InRYeXp4QjR0M3h1aEQtdEd3MW9teVhCb2xpbVlWRFVBMXVUVDV0UlVxa2MifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"TmWcX0cXisnCFjD_cWaBYmkKkruAx9Vk"}'],
- ['input' => '{"ciphertext":"SXzp2Qqa5YD1JrO4OSkrCSDvPc2zggmY3cu1hbKm-gLCGPsaEyx1HB3M9mWGJRUV2puLfx9YgKqwSaEtVfb8K2eMh1DcX21UYGl6ZJnL6nYhWOQ-VXqXgMme8aQxoG0-pv_i_ktUcH0Q8Y9X-dO5NxHYR250-TC3K3DdvBXguqAZaNxXt6QZLAJR70NUS0ckmI1G0-_HgAQ9otf5kl5XuJCCiwTpTn4","iv":"LflxldeSJrkcI-sa","tag":"Qtb2B4ya3Y80Asrbt2ZPTg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Il90Mk9yamEwUWQ4Y250TndwTEJWemdlRmxJek9GbE12MmNnZTFUZ2NIU00ifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"XVGVJ_M9SqL7mCdWsytLbhy9yVkjnBHwcnG0880GSx0"}'],
- ['input' => '{"ciphertext":"3RiKN4NFaGrmu9o4VJqqt1VfH6HtVhIyTkY5BPFOgGefdUrmLZ6i7pnz9CXwrajoroFyyISUqMe-qJqhZgnzE6n-WPnYRd6pyYRlqfqK5W63YtWWNCKvRI33Cyoro4EITxACqzU58hH7I9Q1UNETkT5UcrK3ICZKngsTafTfhAC-YitjnXc_AmRsycRK75bUiNJeutyaPBTwAFCqB_IA-4FlGwtV79U","iv":"1zrIIE5dPwAA7RcB","tag":"mlFjdaJAn5bB9Yvk71GvFw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Ik05ZVpVQlQ5OWU3bHNmUlBCZGs4b0kxaW5ERjRPUzZhUHJpaDQ4dGlSVVkifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"jMlWsTieWwXF7Izuj0pa-g-bwJadXhV6EtFEcGZBbWIRcNgeO7tUNg"}'],
+ [
+ 'input' => '{"ciphertext":"_2ZDM1eBLjU6k1XygQn5q8FcTZf9Bu_dlbjQ-MPh1jyQ14YplP2r1iZSnVke-UbDTFUGj97RZw4ab5PRxaWdo--OEY9MBDK-PK4HaLuM8mgxM_VY2VNLROSuZZc2Rk0UYWr5JLAq9l3N-6Ayjbn4L1EAslENOArzG05EdNcUFzkYjEm4dk5lN0_1ueL-8sy4CN088iUBm2ypygiVt00dnWd3d0W3zwgZiH53GE7zzQs","iv":"11dtOFD32AesbnRi4DKTMA","tag":"naveS2vDGMoeTyV0_eEv9w","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJmRDhiSXJkZEFkQUpSMEhsajV2eHdSSFl0eE44QU95c2loX2phcWtNLXFFIiwieSI6IjFZbmZmcGNiVzNWOXhmYU9mcWg0REZ1d1NFblhwaWdESnFvS2k0V25BejQifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"-lbBek3DTQlQm9LY7NoBdSdiLUsea94bCjEq__slnG1oAnO3OugDow"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"5IBzhh0acduGMoWjyRw0RTqI8byRTqE7jIR9So25ioKmYRRzHTUi2rIKvQzWY80u8wGe1hh7bX_nK5HyQztvyMZnECR2Z1xAWmZlNqEcV_QH6VUqfvnw0w6od2FMkraq7b-MFXTyVtUyqaW87OeDo1WTRrMOc64SfsVpQ5xLhhppC_LM3iTFOG7R-ldjyzWpoSqy6VkYGqTM5_EYnYiMfdPikr752uUnO97HiXQ3bcY","iv":"UJpFJkgRWQ2FDDHuHsizpg","tag":"ANvdf48Jr6ixFdCTgzj512kksNmKdV0L","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxNjI2TTBFaG9jalRFVmNwSVZvNWduNmxuRWpOVXVIbHgzb05mU0pJTndFIiwieSI6IkFCOHZJR0RWWU5HNkhBSi1jMU91RjVUd0d0TkhVNUJqUzlKbUs1UVBCYVEifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"CTUn875mWqvFzSqrz3YEpIXscd6pgMurvMjESuFNUmjE3E_CBrdq6IngiJVByr-z20PczS-ovD4"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"2-ph7JTQllkn5k59nLjyCvPFmC9Wo2-t9ec671GNRJ21CGDoCcevjESNfP_3cXnPBRneKotf8h7Vz1oC0hcZeMPXVGZUD5LXmgMrsWrXGF0vFN910E3ToOnOPhduYe1dM61DoYzwrgoP0t13IFWG7KQU0SjLDgAkiC2QChTIhLk81G52u1DWshpQdc7UT9Lfv8RBPCkltsfu3NlT8fpB4JABXDIJbXv_1M2ybfqqg24","iv":"tc8wFvNZ2I-fcHNhFxJtzA","tag":"9iJNeBy0m2JkHfHSMFT9j1rGj_RwdjDB5X4VQssehvQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiI0cWFsb0dBWUVHRFhQVThmWVQ4UzhtU3N0SUFXcUtHb1FKUlhkRVcwaW1ZIiwieSI6Im5lUGhqc1UzNlRGYV8tZFR6R1RlR1hZTjFnNmNIMTBkVk44WmpEcmZYU1EifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"zEVPN1GHM033Q7Ghz6uBSdgjC3CJZZOca89-iG8lIPdiIwI0OPoIOMWiPIGs_hwR_RMgdhnPa70MV4XtmMgo8FyyjOkwOsfF"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"2EZFKdOiXzI0ZXAd7F8eOM1csiDF5eJCKusj7jVGYEQgj3uJy4Tdm372CynBIop5jHQgCk_o4lGcJzQvnUC03x5ayR0u9g-6PYr7lvpPcJ5NSr1mfehN4whG4K33wGR9YY3FigDOZMWCSj3-qnTcw4mKvixnrhNd_lEYbcXp_foBH7L2kIs7YkoiLLr8__2va8aWBIY8vw7W6_44p4YjDU_i0JS2-GA","iv":"ZflD-9NFEjppvYSx","tag":"mcdC1NSqbjmD_imWCZxbYA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJDSFpiT0xQYXhReU9pMndpem8tUjh3QjAtRVFFTHhBQnJ6bS1TdVRHMFZnIiwieSI6IjFNOHZyVnRINVE0QnFjSWROUnVfNkctbVBWVDFqaEw2LWxkdHBDQzBSckUifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"ZFrUs0U01E3Sccm31VHeHAnzDaYMAO6i"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"3Hi4-hGfQ9CNzmkhKPg-uAAHiEzjxMz4jtSDmTuYkEo3-Ribc8H4M_Bqj0adpAS58mnPz9I-uEqrflUXeHAJ-d2Vb90gf1R8RKVjV-7Mqi5Bxhv98GFIZrHGFqmQuJ95yh8TdxSJXvMvKDkhe8u8rA2MgxNKbs63EVBr4GMCqRWGqagfOVHpkcobTdcDDpS6RKXwBfNyLVv4QdqyBUyjGAH-FgF2Ims","iv":"LV_MzlgZlIuEXYxQ","tag":"ui3S0bL6TSCgNaCSov7Vvg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ1NUhFLWRIV2FyU2NzdDRQQWlDZ1RKUVlnbWFCdDR6SE5aZkduV1NqTlIwIiwieSI6IllRQzAwUnpOWUNSWl8wNXdHelN5WmVwY2t0bTRaV3JQemtOdmtGbEExSEEifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"8dCnxob-1n2tC6HgfsLTFvc41WzriaHlV_qIbdjKY0g"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"pt41hd0_vaDa0O5HMf6E78OtCZlZ_r4-lwtUl48kZqqoz7k9tdmu_zrAIFA_wW7ieCp8-GBu9R_Ny2vH4FFvvQgMtSXx2h_YBAH8oPCDKBoiNRM2AFlC4T7palBNkFS-01y9eJkxwjmRgdJJYXWnCDSK6AyEsPEVZMOqVNK-fnp9-U3bUPBPSGFTH48Bs7NTB7hAMuLZWbMoJKQAQdz-wius40-nof4","iv":"dkYB6DStRMEOOT1v","tag":"XA304bY0KsYBu39T2IDjBA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJtVExiaF9LaFpKaGR0SWVXYXZENi16Nmg4blJjSHNrUWhXcU9VMUNiVWg4IiwieSI6Im53VnRYSmcwSU1WbFpXM2NYaU9ReXFmSGFvMFVXNXY0czNhOGtsT3BXV1EifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"C1B2p6_G8v2HuDH4ElWQzdCbaTepSxLNh9l_a3Nw-vTkwQgXtzDq9A"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"9qoT_yY1nVIwztNUHOfP6dtTfJQpvcrQ1uLAm8aFSZhSpIyg9xyJ_BVtAAyv7Grtfxt1f4N5YUK6M5zMf-ybhK-0ybudJHkLWoj0YtAvP1KkM3Wvq_GTCQ2ZdBjqIVKJTnUEfWmlGV6BXPVXLWM0X3svSJBCEwEOSQEufX_cI-mfcUi92VLN9rTTkDokvTLVntSGThcqydm8ZtmOg8u02liuHqEhXy0_gYFC_XY4Am0","iv":"abExYU1ldE0GO8_K-Wy4_A","tag":"uSMzfuP6WQzmTWn0OHa10Q","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJjSVlwT3RfVFR5X015UE96VjNJQ3gxd0prdGZZLTM3SWV2bmFVNnRtaWZJdG9qNWpkTkwxZmd0VkplMDRfXzJrIiwieSI6Ik1ZM1B6LTQzeUNjdlUzYmUwMExrMnBIel9IaTZQYl9RTWUxeXk4MWpvMDB6Qm5sUHFMdVg2d29uaGhGWTFnNE8ifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"zw5MEB3t4bAJ8GIa7x0DGQzybmnhR_ADOb9kNZI2-F87hHLi1-LTPg"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"GKfqg-1I9ItJSCsiDY9yIhYxnGuskdxPy_rXbz9MYOtmDNnRWNez8DlVmPf0AWhJSkYvCIohhCmbtighJJNJq0wGbriU9MjZogtWTzrUUhzEkKaZqgg-ofHcF_eow9h3GsQ1TEdBk3bOFLVxqBkauOR4qw7KFi42l5MNjJs1zLRihJvB3FxqJ79Dbc-1KZBcMmdNyoWFlzDCQazaZBpgPz5OYmN60SzhWcIkfaWXwX8","iv":"7AsW-AFjgNJyxSeLNQ5WdA","tag":"_E3l8ER_XQmNeFGrZnaE5HB6cOFs2gQf","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJoUUVxMVNaX3dpQ3k0enlNeVRJU2k0WmpfSGhNVXk5ZWo2TVVWYUhvelUxV1JJNXZ0QjdWUGFGVHc2QmUxejhLIiwieSI6Ijh3S2dhbVpLWW9EQUsydVFCeXpMWnBCaTRUVGpfZE5XR0dXbzZTSVc4RkRIaExPSjY1M2RFZ3VmREREVFI2WFIifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"en1pp2tN0ZgevdS8KwYpbcnTgxyKKbIs1qsETtGEbXJ8dUz59q4dw5P5LNGgs3ITQkKyAHIy-po"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"Q-FDEcUo_6zIyfnH_NApjUH7V4A4eQ8XJ6BF8SHg7qP6a8gjweAdYtHmy7CxvWOcvRdmyLNvfz93muQvHihRMZKvM7Cyl0BLuqKlQkwVmln94PypmsoYxoopl97zcdCTpkFYNvL4PLBomAVaagX-q9Xs7LL6r1hi1kf_drgoivfVQxRGrOkVw7Hm6us3dWG57Wpe8wWAGmJAY_I97owJC8-8zczJTMDLTiIFmPIo2pU","iv":"9aC-2rcP3gIKjMe4M_iOtg","tag":"IPNDjw-b6cbTuNuj8DWWhJTFW38IQQQbjuq9ftxCVms","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJBRmVfajJ3WDBNaFJMbmMyUVBwMjZrR1FEOXBTUUtiYW16a0xYX2l2NEFKeGsyVU55cnkwd3NZZ2JMeTREQUdFIiwieSI6IlJ1YlhZM0tvaXM1UzVZeVhOczhLTER1aDhTQThwYV9ocm44ajdNc0t0OWdKRnFWcDhVaUFDcVJDR2VnNzNtcG0ifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"43lvgJ17neOuzGkKKe-4FJi7YKkoXpfVNJsqdjBUzRD9FNkun8cmVuVS1TBt-PsQJIugykuhCv5tMihMzSODbZk8P46_4oG3"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"tqQ3LzEqIGZE94SoOskld4xuAmX3kguPPN26_Bj_MTrWEqUlbQ7D6dI1jcbXZZb-iOnIuto9CYb7uSniY4pR-klRH-9hrTX7dMGhZzuzY3hLn6JL-zlr5bZcbGl0Wsd5TZ8jxPJx6BMQ6ncCFCi4EhraSt2ty5Z3H5RaGXKhMOcER0vqfIxIQ7ij-yrJ_e11zRRxCxPgWjpNIkvvZzMC3XMMLgSHjls","iv":"kdmy4535OG2eGe5t","tag":"XwtRf4h8Bry_NAh2ReW-zg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJQQ1JXelloWDF2RTA0Sm9LNTlzQkN2UVloRWRKc0NhbWRTV1oxSlVhWGVHZWs4T1plNjJaNGdxVkRMMVF2aVAzIiwieSI6IndsVEZjMDJFdW5kUnFnTDBEbmFqcnFHYWMxbjEtNWx3TlgtOFVGWnZzQ2F0OFpyMFcxbWVvcDdzckRTdnliLXkifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"wRHEx-f-GthCfVhqjVJNF-h8PKLt8smF"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"_s0KJ5Wqqk2xsM4zlACqSX-VGZHsXhyGisdymCnGMuLh3oJnAX6hSDCVHCxNxduRXCF2WSsTAUfa1yLWs3GsN5ndbqLZZYDVHGSjtCSI4oBODo3Xp8NLpf676xjGJUem_VtqmiLLiV9etJieOB7kfZOa-DwGVc3RQkOabne_EmsornckgS0YXN2s61qOMCrZehPqP_Jj4JjzRIxuDKYVtyIN5rCGe4s","iv":"1XPPKja0ZDqv0o4G","tag":"bS5OAUL4-sK4Vo2bmMt7wQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJxTGVQUnVNNmtaTkZuUGhMMC01QktpOVBIZGJKdDJxZUM1REpiMXhlUTNWbThpNllwUmc4SFJqZVZPdmpJeWIwIiwieSI6InpiTlk3YnhtZ3FyZ1hxQ3IxdDNPVkZxdXgyY1lqRl85YUNOV1RvcDBXaV9HY0tNREJkLTVqZGNvZG1KcUhxZk0ifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"cA5I7NM1g16i1K3fFNapEajLRWlTY8Xi7ICLD9iICPk"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"7bAhp0XwPvbnVoLW7CD51u86heDUrp2CpUKSQXtcouS-LtY6ytvf7rC7ZVfe_-t6apo1jUIGaswxTl-ma_xOxuG2oybLwhXirKnRRryDHQsPwyMMLPMt2t-cXSW9QCa21KtkY-mxTpn0JZusIrT7F2zzovJmIR-4jlBqd_YlTT_BsoB8TWgSBoUMeoeZ9RFW-uBSeqCWBWeNyZH1lzjefYALYJ333Ns","iv":"4RZE4V9VHKPDIvIP","tag":"zQ27iVw3u6CW9JHhKvTdsw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJvTmRQNV9LT2lEWG9sMWhFNmRaakxnZURIOU5kREJfQ3paWEtqWC1VWkRaLWQ4NmhxN3hGWUwyWHhac2Y3dll0IiwieSI6Il9pZGpKLThiUjhnSVl2cWdzZDU1QUJkTl9pSmluSURETXBBb25uMnRFRE5KZ2dOajgwYVgwN0hYS194SVlhZUcifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"O2qIqAxybaUIEAC3NKq450ptzk3pHJ33DOg0xfajJ9sv_w4_OfHrgg"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"cEE2ph6vE0gyDsCGsJZ_N6cRRxvJtuFiLIwLMHntzIDrAiJb3DR0ks1dtgjTpAm4hKmkgG4ftZQ8zDQRk9mDMCKabO-eXo-evzxerqKIQBV5EysgmKojXfiG1f5MH5wKK-UwPgcMmnodQ_AAZMflrXXo2PbXL8OQIyIMbm7Mdx1NxbDKhFP00qS2ad0fdhNRL1dB5yzLHDMNPenYL3A1sDyAWcItRj8u-mP6V9z3K5w","iv":"ol8jKetABAiwv2QDNEJLUg","tag":"GFZsZlXowylyG5OTrzhcvA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBSGJlY2VBTEcxbVBXWmtuLWlqdjI1RkZFS0xnS1hqczVpMzgwRi1KdWZmd0lZYmx4ZklfanRCWnlBZnhBdFZFWDdkQWJqbGp1WFBPbFk0aTJGWFRfSmV3IiwieSI6IkFXc1Z2Q3d0Nk5SblBQMWlqTXNFd285RnlxbzFEV2dEeGlZbmdSLXZFTFIyQW1lVV82UWRwQlY4VUI4cnA2RndER1d4Mlc1aW93bkd5TmM0azJTeF8wcmEifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"RbuaR9R6aYWKqWBOFi517v8P5IjBjOmj9ev0T4EsNHuDACV4Zh_xoQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"tX2AOnAGCPECJc6w9zlsW_MAq9XC3JOQ6wg6zxDll3vmnRJ9j9CXkr56DMMFD-C1zmeiDgEIhcpMCPfkgJzdYz5hTygm-gK0EHNiwoNjHoNTMY1l-W2dy4J1ICxC_2ZRuZIs__ePHwcmvQE-JZhbxi087akNRIZ6A5Ujz8Y6MKdLODxL48Hr-qd1gyle-1QRodceu1deqmnLC62k0n_WNy7dyy9M0FUF-YHnHO_MLnY","iv":"vr_5AlQqrn4pS1T67DgzwQ","tag":"0tqhT1oHgUpKqWag0Rge49L4Ktrw2fA-","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVzZPTjFOVzNiaWFYMWlWTXA1dWJZRjJKc0VzRE5JWW82MFdkdVBVaHBwTWg5UUNpNkl2bWtSTWd3SWhtX29icUo5WmhkU2I1cWpsOTdUYmdrLUpqYnV4IiwieSI6IkFFR0VFSVlYMkJEZ2xCSlF0SC1idFlIRV8tbXBKUWRpdGFpVFhndkNXQWpRZEp3cnU4VVU3S0JvdC1od0pCWVBYMjlKUEdzOEE5TTlfUW1Za0diMEZzb2EifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"EM3zGRZ3IXp58aqF9-ISJVmYyDrp19fCd2UHpWD3HPukYsYgZHzqHo8v0vlVsYFvGlahiStIfKc"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"__hNdjyA4YeCtHlz1fNjcajEx4S32PjNs1uKdgXKmas5UbNNFpuY2ITR6bu31EGs4FTOokFfxkf0FanWbqLOT0FFqSbh0jB5y_gg32xLrXpNWUZrSHsb6Q8WaNfl5j-lWnKowrSPxPXATZhSBCgDFbRp1Y-nck77x7qdvk4u7qAxpUImvQ3bOWdoOjAyxxj6BU-uP-yNJgml3BzEya-qU-8nGTxnlTjyvaeLDDjXPX8","iv":"OOuRSCC7nvWaZaYXOcXnwA","tag":"Jl9rPZU04Do3bJMvHTS9DEuOlVkQ31Z9b39qWfxZvp0","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVXhfaUVwV1ZQUGk3Ui1Vbm02UlE1dEdRX3hqNWZIQUJXeldkMEdfVWdSOC1UeldvbDZRUXVBZW9mdVRxbm5KbHYyajZFTE9ScjI4Tnc2MVZ6UTcxdkFFIiwieSI6IkFFWG91RXB3bjBMcU5DcHJIYnpsby11WHRQazZWUXd0TkE2WTY1S05uZkhUVXpDWF9lVGVUY3pwTmRnY0dPaWE4RklRZ3A4OXRlUWw2Q1c2eVZFeFZiZWIifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"Q-hZp5Ts6maPrD7e5GhOfw8eMxEWlWmR256N7LH--4yIRVhfIcs7KGF0LfmiovdlLIGLPDPCI5UOBWj7V5lt4q4QNx_qHWqu"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"5eU_XuShpboU9NilrZWfcPlUMSN-VNw-aF9BMioU7aq-CllNT0y0l_JQYw8Z6L0QJN1Xd8zG6-EOVVlwZDTGgmfcl8xPdDbhmDqkZKIE__ejHs05wkE9d-VVDaPMBr6-qz9PMZh_rI-Io7jlbRL6b4E25okNlB4vfmv21hWP6-V4FDefqk-KI8-8uhcX3TXTTjvIm6XN9T9qjHxGC3V5AwqdM9vS2ns","iv":"kuM67zZvVGjHCp-l","tag":"FJxF24EhYJfRceXxPThaiw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBQ2QzWi1GNURGdXdvUWhRS21uR2R1M2Jza0paeG1yN2pWMVRHLXhFeXluWTV3bFM1REhVRU1FX3dtVkV4d0FEd09HMzdYZGx3ZUI2THZpR1JhWUR3VjZsIiwieSI6IkFYM1dGM25VYl9sZktfelhyYjQ4OEdtQmYzYlVSck5jZjdPc2RGSGlDMk5UYUVzZkd4aFhOdjNEdWxEcUdwUVBxMWtOSmVKb2l5N3NLcVpGWm5KeDM5SloifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"YcVE0diKwm0751TE9PnT-Y5SlowoRhg_"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"uei5DL8ETBiQkCrCBSHCrkpMKYGKf5pnG5DfY2LQO0rCub8t72uQy_9_M0mxN-2KymlIJ2xXzevaciv1AiJKKZ2dw_MqAotMKkbY3-CWoLcui3J621DTPdInRWa_yBfEaZjcAyROkMXGCCwSFstSi6NxJCoepw_-N4DEpHnNOdDp18AmSEZyiUVVEoWyVzGKNnNi1IZfpPiUPlGUoMhMqcdO5N9l0QY","iv":"9-6zjl-SYClhgSMH","tag":"vGghyBNPbX0b4WAZ_yGOLg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBV1oxSnlEbjBieVJfQ2VYUjRvak04Tkd4ekt3R0xsandNeDNuY0VzbG90eXM1eFVWZG1zQzd5V3NFSkVZdG5sNllJQ2lUdC1QeUZUTkp1NkdZb3FpNThjIiwieSI6IkFCR1g1NC1MNEhEc3FZSkY0dFpZMVFyUi1ndVhyajh6dVZmZnlUbXJBQU9QWDExdXk2R3g2YXdxNkVZMWRjb3l0SnkxN05ZZUxFZHlvdV9tMXlZTW1FWTYifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"zGy_4_TYMQrn9t-8oJCB4YngUFGj2jSpMnMTCosDLyQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"lzyAnuakQHLY86oQDPvNBov7rCZ14F8jCbsGhqAAakAi5I25s3qdIrUQkCL4gf8odOtsXYIDV7aQfgE8KFr9cU4dz57f76kuHoOxSpcoAS95nWdsUVyEIngmIxA2-zsP_9XlCvxR10MdcJMRc1rJBx7cl__DLcv5gPXQExETloHEBEgZsY1CX_RQ6KQhY36MPHVyWTg_UA-2hlJECg2y9drTMTaKp5w","iv":"eYdDBftinJCe944e","tag":"2UJDc2WZ0_cKQ3ARMxBM4A","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBUFVDYlhQeEVlbUllc1Q2UGNvUkM5VzZFMVcxaUMtc3VqdTBUQ0o0N3NZV19qMTdobHdidWhtRzBSSTdUdzZfQTRic3JFMXU5WEwwanBQMUN3RmNXRmRpIiwieSI6IkFRc3NfT05JaXZxMnhYeWg2YkZPYzE3b2U4RVNxV21Kb2VTZnk3Qy1tSDFUX1g3SEZ1eFVuSS0tbkF4ZkRlbVNfOVZhQmhXLVhDSjBJSU5BMXNmYVFvS2wifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"VESVX1LZuNBiAIbwRmkpVRcnJJl9pZW28nLqqLo9F2EWz6tMYa6t8g"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"8qZDYzB4oNkaZ9fuP7VbBq_tgav-f4GRlm1LqlfSjru8CjaJlazysmCyTmiLMnlzRK8SBsJJHl3cD6mzE9th3cUXNnZDv8zWDyGJG1cqSBN9l1eNjm211wApKYS0Br4VeYvmCe-UqicQ9oY9HSTGfvOmoS2muUOcjq_E3NoaMBy9aCfCxpI0zbLToU1Pi6XX0067COb2-bYdubqkvvWv8hp8PHjWaXvL43IHQnzhopo","iv":"YS-zbeYANkS6GEVpMpJIew","tag":"1DnLg_8Ih2ZCSFUplq12QA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IkQtWGk1Wm10TWU0bDh1cVZfc3ZBUmdxa3NYRFFnMl9adGVncG5LbFYza0UifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"u9-hFbvn6zywUw5BXi-bq4xyGRSnfnZWwptY6M4yoO9LyKHsocB6Gw"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"Xuc77DY9PAIQ_yoVkKToDlhW9uk0Uzfaz9MciGY8eWGh9VrFcmuNG2H8gSsUStt-baNm-4VDeQMHslrsitzbr5J_oOidGO8W9zbkzPmBPTZC_5QjXnbXzjt9K7nV-Hj_gm1GCrvWWUhV_3wBqu_ImGvxBKwok7lbDuGzPl34emq9fuwgZm1hMsVB1ceG4GdT7gyWI-l3_ZWiPZ9PnohNiiEweOqXPIxM3SKlfZccUeA","iv":"B_4Jk2jT8k1gbL7kBA4UGw","tag":"014BQVWe_gTnHHO2KiTjvXTQkmjcQGDR","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IkljUDBwQVdVX2xhdHRSZnFLYzg5NnRWdHN3b3FMVGdpbkR0Nmo2RGZyV0EifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"rLPSUu69AesWy5JDXfVWf_013-rTvXTJ4Oee6kGkGMU9dE8HvoH_i71r8DeSso8-U2jys27HL-o"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"3WxZ-AFPhFmAFyB-pVPIexSD4WE2oLLPkUx03a_-CQFauAssjHo0qVANrolX_orqi1mv_bpy9BHN448JkWPmR67ceGh9QA0wJFf7murMjMQDsc7tOcmUUx6_r8stuT7otp8HpDER9-p9tIIStAFcHmfOoS7e47Zim3dl7dp9aiN4KJIobVnlURd3ea5IgDxWRA_h6GEZsZR30X-DWkMgxzy3Ww6JB3t5RNOp4cLghlw","iv":"U5mvwDvMQo2jUg8KE9eUmw","tag":"R3AXFz5R1u7hsdo4hs-LdbNKSn-l3YkMr0itx8yRYKU","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlhUXzU5SVltd3FnM0dYX3NVZ0p3V2h2ZjRwVWxVNjk5YU9wS3BQRGV1dzAifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"YXkavPBVx5ofJMT-KFm_ejahySbtIl8zYgZYM7ldnE4RXRdd0uTyVrpe-IQPXiw1GwulX6Wru0_yx53KhhHm0dreUdNlDhKf"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"WAdVz48yPbEzv5v1V9HNMoF5VaBhPwz5vRseWAPZKTIyNqdA6umpTZ9qm96yWuqYb2yH0w5Cxe9dpR5YmLFPSqOs3Gps_kjJR-jOxwgQ8HcF7NM03H8RuBFHbDmUJnbmDTmsGL7zd2ETcTFojzZGw3mH-WGpb4DngVGVB7N9NtKLA7fo8DkO80pcjz0KXAPVQZ521NitqLf3XMwOoT3VPC-MAl4_6C4","iv":"LzUS-9qKaROPKhDT","tag":"CcYTnLTMuA5yy04akakr7Q","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6InRYeXp4QjR0M3h1aEQtdEd3MW9teVhCb2xpbVlWRFVBMXVUVDV0UlVxa2MifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"TmWcX0cXisnCFjD_cWaBYmkKkruAx9Vk"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"SXzp2Qqa5YD1JrO4OSkrCSDvPc2zggmY3cu1hbKm-gLCGPsaEyx1HB3M9mWGJRUV2puLfx9YgKqwSaEtVfb8K2eMh1DcX21UYGl6ZJnL6nYhWOQ-VXqXgMme8aQxoG0-pv_i_ktUcH0Q8Y9X-dO5NxHYR250-TC3K3DdvBXguqAZaNxXt6QZLAJR70NUS0ckmI1G0-_HgAQ9otf5kl5XuJCCiwTpTn4","iv":"LflxldeSJrkcI-sa","tag":"Qtb2B4ya3Y80Asrbt2ZPTg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Il90Mk9yamEwUWQ4Y250TndwTEJWemdlRmxJek9GbE12MmNnZTFUZ2NIU00ifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"XVGVJ_M9SqL7mCdWsytLbhy9yVkjnBHwcnG0880GSx0"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"3RiKN4NFaGrmu9o4VJqqt1VfH6HtVhIyTkY5BPFOgGefdUrmLZ6i7pnz9CXwrajoroFyyISUqMe-qJqhZgnzE6n-WPnYRd6pyYRlqfqK5W63YtWWNCKvRI33Cyoro4EITxACqzU58hH7I9Q1UNETkT5UcrK3ICZKngsTafTfhAC-YitjnXc_AmRsycRK75bUiNJeutyaPBTwAFCqB_IA-4FlGwtV79U","iv":"1zrIIE5dPwAA7RcB","tag":"mlFjdaJAn5bB9Yvk71GvFw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Ik05ZVpVQlQ5OWU3bHNmUlBCZGs4b0kxaW5ERjRPUzZhUHJpaDQ4dGlSVVkifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"jMlWsTieWwXF7Izuj0pa-g-bwJadXhV6EtFEcGZBbWIRcNgeO7tUNg"}',
+ ],
];
}
@@ -89,30 +146,32 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'crv' => 'P-256',
- 'kty' => 'EC',
- 'd' => '_gUgAjx9zU5BKlHq--TiCjZmsdNQAgrv536DCTUM2vo',
- 'x' => 'Kuh77MGkweIENgR_3WjzJ4gEF47yn6yQWAeeNqYC5qo',
- 'y' => '1koAqIfb5C2PkCT1GYEcW4IcIEdrgOdMcua6G0Eyhtc',
- ], [
- 'crv' => 'P-384',
- 'kty' => 'EC',
- 'd' => 'Fn_Le74znJfY33TkqCoskx1pkgA_1sLnKvfvM_78lTZT2zfj4XC6uY_L8iRknOii',
- 'x' => 'o5CqgE0jIlCVwGKMXDsQmkOgxohJcod4hv7jo4h7qeRoysAV0YPtokMgv7CUpSCG',
- 'y' => 'Z3ZGVhyv3T-MudQI5fYNmkO1BzqlHQJHCQ9RQzqa05QOsUZo39gjVC2EhRv1Z9kz',
- ], [
- 'crv' => 'P-521',
- 'kty' => 'EC',
- 'd' => 'ACebnk5N5RV4VFhrCmvp-5w6rsQJvHdvvBdJkIKmq3pDDreKC0vU-K2oYrQaX5vPuI1umnVw9qxFq6QCsShJ38Fh',
- 'x' => 'AR05Z1Xe74_lcrJbhKg12jijs5LPbLwcpHDGETssYKRgbO3-4l7egk_WtLjSeXmDvRfkww9kKpFdKHTqmDYSIzxf',
- 'y' => 'AL7NyrGpwcXqfvmQb4d7N6vO7REegUaFv8ea-_EXyA2eJciZJSmvipwpxRnoSfkNuJ5yJUGdjg_FtaddKaLdJEf_',
- ], [
- 'crv' => 'X25519',
- 'kty' => 'OKP',
- 'x' => 'LD7PfRPxq03bd0WJyf_1z-LQevmrbcYx7jJafep3gmk',
- 'd' => 'pSdgXFRYMvOa7giAm3Rrf5Mf8GnvLz7HtZKu_KN06KY',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'crv' => 'P-256',
+ 'kty' => 'EC',
+ 'd' => '_gUgAjx9zU5BKlHq--TiCjZmsdNQAgrv536DCTUM2vo',
+ 'x' => 'Kuh77MGkweIENgR_3WjzJ4gEF47yn6yQWAeeNqYC5qo',
+ 'y' => '1koAqIfb5C2PkCT1GYEcW4IcIEdrgOdMcua6G0Eyhtc',
+ ], [
+ 'crv' => 'P-384',
+ 'kty' => 'EC',
+ 'd' => 'Fn_Le74znJfY33TkqCoskx1pkgA_1sLnKvfvM_78lTZT2zfj4XC6uY_L8iRknOii',
+ 'x' => 'o5CqgE0jIlCVwGKMXDsQmkOgxohJcod4hv7jo4h7qeRoysAV0YPtokMgv7CUpSCG',
+ 'y' => 'Z3ZGVhyv3T-MudQI5fYNmkO1BzqlHQJHCQ9RQzqa05QOsUZo39gjVC2EhRv1Z9kz',
+ ], [
+ 'crv' => 'P-521',
+ 'kty' => 'EC',
+ 'd' => 'ACebnk5N5RV4VFhrCmvp-5w6rsQJvHdvvBdJkIKmq3pDDreKC0vU-K2oYrQaX5vPuI1umnVw9qxFq6QCsShJ38Fh',
+ 'x' => 'AR05Z1Xe74_lcrJbhKg12jijs5LPbLwcpHDGETssYKRgbO3-4l7egk_WtLjSeXmDvRfkww9kKpFdKHTqmDYSIzxf',
+ 'y' => 'AL7NyrGpwcXqfvmQb4d7N6vO7REegUaFv8ea-_EXyA2eJciZJSmvipwpxRnoSfkNuJ5yJUGdjg_FtaddKaLdJEf_',
+ ], [
+ 'crv' => 'X25519',
+ 'kty' => 'OKP',
+ 'x' => 'LD7PfRPxq03bd0WJyf_1z-LQevmrbcYx7jJafep3gmk',
+ 'd' => 'pSdgXFRYMvOa7giAm3Rrf5Mf8GnvLz7HtZKu_KN06KY',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/ECDHESBench.php b/performance/JWE/ECDHESBench.php
index 7b5a398d..841f703e 100644
--- a/performance/JWE/ECDHESBench.php
+++ b/performance/JWE/ECDHESBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'ECDH-ES', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'ECDH-ES',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,54 +67,150 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"KsRIKGTIm8Zf_AgLI5D1ymISA63OIamKsYk1VB7xsw4j2mwDuKR9MA1mhUbc-Ps_s7VIOzK0qaKwPhdEjDcIb-Vut2yQ0E_HxpFyjNr5T-RbbJ1kdy1hXK3THo-Fcdrw2i3SoLYKi7pTh06CmYyv42iePtr1tq2t68MiUeRI9ZElD4Maf4ONcPWsG9QwmQzzui8kGdEJ58IzpAaqLzXAzYsj6K6Dd6rFHA9Gdd8lCtA","iv":"Ssta2D7cbN7ohhZ_IEirGQ","tag":"FOYasMqq5L_D7McwEcFbUg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiItT3czODhtbDc0dEhkbDd6TDFwbENoTFFyVHdyOWRNRnN0VmlUUFFEWGJBIiwieSI6IjJSSmlpMF9xVmJxZGhtV3dWbUhzUDN6X2hFeFpRNUZJaElGWEg3d2hXRFkifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}'],
- ['input' => '{"ciphertext":"AbyYGNhmhfPp1losLrlcwLupvYHOpq_qUj3fCWYRGUwqE8z6G8ZKMC6kPaKfN7cepJIgxi6vP7Dxb_X-e0uJlD8mofiramMujc5w5gS91H_4LDfjA0hPsQNZsevvQ6H9Wb6KQfEH_ADw3Qo2lq-C9gjZdtpvOosvoph8D3E6jA9-DdC3Q1X0vSHgTKKwUVOiCAGXVUxclSvSIwkai1jIEKQDdch2So4ZGg2jGM9Mu0Q","iv":"QNuVRp1d7frRChaUKCFwOw","tag":"8zf7asVXbIBlD5M5_tGvynUDYCHkxCks","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJNWDhyTWthUHVzcHlMem12RFJUMWFzSmE4ZGVSQWZ0eEF5WVVqWFJWOUtvIiwieSI6ImlsaHFZRnF3eGRqZGM5UWQwYUp6Y0N5U1Y4U054endpVFdqUE9QWEtJa2sifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}'],
- ['input' => '{"ciphertext":"UTHlayhPiU24oSypsNfRxpcbbCEJCrF3AtjNShs0LwflvY2m6CgwBLhKulw8HHtnDaxcLYjXutm5pXgzbgflwtHoAwh5WOwpnXkceAYm9vVUkRPwcRCeczvYy8__FSAzjJXRfFloy4E9cZtv8culFh5I-kbaEEs_E-3RQD3fvlbo3JLB4rrhccWjgM-qyF8eIHGFhAWa2Ez87dXCde9d8dvnn6StnfV4u-lTleOe5wE","iv":"6AnITEM_hi0oTJSI1EroVQ","tag":"pgFbCS8Jchp1z0qrdIS2mgiheApFT3aG20iyFOXk7_U","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJzd0ktbThvY2tNZlg3MjhxQkRoRkJ6MjNta1JZS2xJSXd2S1ZObmdZYmpnIiwieSI6IjNIb05TWHZ0QkdRX3pKTlE1ZmM3RVNqUmVhVFU1WF9pc0kxVzV2MG0zUG8ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}'],
- ['input' => '{"ciphertext":"j0e5K7z08DEb8rkYCdtQimnNlO5VJ8OCipL1LmBxDWJ3FIxq2yxunhbzqYr5OsbBu2nsi26enhgxdf9utxYcUMhXY1BV-VOSaFVZHkKowSCco0H95a6sNhJVVGaLHFE2dLUl-Ooxlc0g6tDJC-Lyi9cBFuJlm-KeDZwrhd25g2Dpk38DSFN5ZUujstiLq-gibsm97DB5FDZvhk-elgJ5sBsM-k8wz3s","iv":"KG2bIjAFOXMY2_A0","tag":"4lrGURacjerWUN_szorv5Q","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJTaUxhQ2cya0ZuRldoOHFvZTJoblM1UXhPQy1BbUY1X0I4UkVhSkZzZEVZIiwieSI6IjhEOXJPaXQwbjh4ZjcxekZsallXRnhjMVI2SjUySlpvNFNvaGNuNFNmUTQifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}'],
- ['input' => '{"ciphertext":"EmExZLBtuOMeu436MGmVpPGL1Oxl0pE8viy88rlyll-K4o7rWViqqxms7V4UgPs2FnZgdL8CJ6W_NY2QlPQlzrANPc9oUinD_OjScH-0Ff6Lb-LskWlGNebqyyl74XStzGO7K67jCnc0oXoU36yfuZFcjf5t3RI1Wh0hL_RL22OxVIk3k_WkurIgA-F2WkXDVuxlRW-nWkoNoxpRceZgDQmBVD0cfb0","iv":"lk2StauExilwOfql","tag":"1fXcCfufql4eRHvfsvRoNA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJqRG8wN0t6TkRuUjJrVERDVEFFWWZpclpKR1h6V2EwcE00UFlUWjg5ZUlrIiwieSI6IlNIaUpFNGdDUzBvZG1sdTNrcTF0VXNFenFoQnNvOWxtaHZpREE2Y2xoMVEifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}'],
- ['input' => '{"ciphertext":"m8LhdFezEohHDHP1MR8mY26PF2qP1Ay9KHfQGXeCGJmLwR2U_V50MFP9_ehlHq3QrMXlM6EpbGEaa7BSuiZg9bhNbVWAHx9_S-NmZ8NcimPuRAexc6303fNoIyIwMBkAHdHED4IbRMfzdsJg9v05aMTzv3SqW7dJezyTPN_rWuFpYDFlqPg-c5HK90OOY5BR_zW5OK5XAVz5bxsi21HW0Ti0yHBiCgg","iv":"X6u2KRH0g-OOH2M5","tag":"h_xvwqzXIu5HRJn5OTy6zQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJDZ25yYklpWmVXb00xUzJVRDdXcHVhRnNHeW50RzI2b1Y3Wm0tWHRRODVBIiwieSI6IkZiTkZLdEZDaDdoUTNyV2tfZWVTNnNiemUwQ01SZkNCbkdsOHBKbU5YMEEifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}'],
- ['input' => '{"ciphertext":"DmmkxBraJ0QZj5ZWb2QA0XMopoqxLVOC3DI1DmDLkrFOlqu1kTZhvI0Hx9EcST1YbvZ0Z77s9SpvXlHNW36vWBOqZQxWpGysh1lazijSYjN28lw5wKkhqBDEu_6_K__S6I-EA6PI8cl2wdA3LOIauA9_0smfmVcA2Ka3umN1EayDMIaMuwU2B45zuJrhHDxVk_9mV51fmVq7-lKyyAeu5sVy3KTn9FLWxcnkrZ3ajog","iv":"eoG62aPTiTdhUg1ZCt_QUw","tag":"IrYMVE6U87oo_LsNr0nHDg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJBNDZpY3FwRjNYX2h3R3RRQndkOUw2d1NlajdiZGk0WnlRaVBsLVNlMllBS1BMT0kwbU9hQmw0SFZNNl9uMWJPIiwieSI6Im44cjZjSEpKOTF0SlFLLWhscnlGUlROQXo1SVNfbThkR05wVHcyd1lxMXVnRlVfc19nSGczUkJhTnFiblZ1c3MifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}'],
- ['input' => '{"ciphertext":"S81Z4p-qRKFcMNqQwG-pKd8dGhy1wuYG5tQN8FvEyW0A3R2d9jmChe71LEU7p4cdljlZPI19f7eVH6GvJ8drY-bcck5MobZuePcs2bCJVR4u2UGGQKiowbaeuquzErDKSq8p59yRCsEuIKfEHOUEQiLILs7dMUTFUgrv22vn6UVI781h3qOrSa74tGuwthTdSvaTgTE17Wfc3jj7BTgngY828updPsXEsDdSLs-qrMo","iv":"JJeemphZk_34coLYqxoyNQ","tag":"dq93EO-2TId_55J3GJ5gLAPKVEsHLJoI","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJMNU9EYmRQdmZmOU9RZWROYU5sVmtPUk94VlNCY01RUEtLN29PWnRZU3RZaXpFTi1sZzhNbTFSMHR5bmtZVWwxIiwieSI6IjhTYmc1WXJZbnljVzl1QVBZYndCYXNvTERnbXdFUk12Y0VnUHN6dmFPNTdIMUxLWF9hTmpnXzg3aGw5ZUNJcXkifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}'],
- ['input' => '{"ciphertext":"r-Fr1h9QP-jkTQr_72bTxMEfZeL7loJSfuam2ifuR6nxkfWLsmPFvtuTPlNW2qpddP3b2vVl-MUFjzj5KSkM9FeTMlDzcYhrdWnsnPzpnKlR_dmqnQqtpH1mudHLjzBxOylL3TAao4RRZGFWhPSgplqjR-bkxI0TgMLi3UIjI_8xaTOE7OLfw-xf5a99oegPzodcKw2J1_Hbcg8XWwTXkNHdpVdm-p_OfZXsABYRKe8","iv":"vjiEqMMHjngniUPvbgBWDw","tag":"_wcGyo5Kgwu6Bx4gQtIC2B37br443LevIA6sveBG7_k","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJzenExTmtBN3MtanpfN3BmTENXMzgtR3hxcmRCc2drUHNVX0pheFBmanpwTmdoYkFCcGIxYzVJd0NDTG80VHRqIiwieSI6IlVxRlNtb2RDa3EtV1pqZzYxLXplQ21vMF9mb0tnQXItVzgzRlhYQWpONG9mQi1UUmt1d25HbFlVM3hEN2x6VGwifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}'],
- ['input' => '{"ciphertext":"YaBX6UK6DiJHZEx0VcHIiiLIIsgotyKhBpcXzKc5mGx-adCb29Fvz1mHz6NEaR-MGs_Lbyr1_Iz63fAgH4MHbeLVhLNR986suo9t6kIXghe6jBHFuzwubEW41w3HwFXTGTQAdAP1VdDzrNp3YiwTO9sxugGNaO7QcxUCoogT60a3sNc1bMe16Hf3adrj58eWYZccnpTRnNWULfiu_fb_e_0vDfKjtek","iv":"ExgS-jAeC0B8cFoe","tag":"eD6oYHjnAgbQivjazEpR_w","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiI1VHVGcE9GaUtWb0czdWRKd3ZVM1JfM01OSVdhdWxJZm44ekg2a3l4MEhscWE2QktISjFxWHlVNlVlWm5hdzVtIiwieSI6IjJTX0tfYkttN0xtdHI5MG14V1YxNHNTaW1Nczh5WUtDdWNqZnZpZmc2Q1UybjBMMTQ5cG5aamx1MEdBSnM5akUifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}'],
- ['input' => '{"ciphertext":"tsFjmeszfXnah0CPF2_2xAWHD_P8isIhVShnJ1AQ15IR4aTXB37l5nIo4kVXCLaNgR4N-CjR6pumn7NLNFzfgqQpbQeXFx8dqCMkbDlQBMAuPeu4AoxhVGaDqRsHM_k2H51WVayAjkFpgrItc6XEjIu2y4o8Hy0-_hD6c3-lK22U6ZRLg-10Cq-pDN1Nq6ZRxTZx3mvzWeRIrko8t-k9p4yKcJVmOpk","iv":"wD7u4GcP0EjHR_mm","tag":"I8g2nTz3UaLDqrLWsuN4pQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJ2V0dQOGJRRDVwdTZHTkxYWkpCNnlfN3hzQ1J0TjZCeDdDRU1DR1lRRWxuQTZUYjFXOUkzRklyak40eDFLZ3c4IiwieSI6ImVodWExdE05bzF5OHhXS3ljUU1sby0waVctell1bVBUYmxPbUlZaWxKVkVadDVpbGg4VU9FTDNZZjRrU1RxTFYifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}'],
- ['input' => '{"ciphertext":"ZT1Nli-gjvAtYCmEWyMsuQ792N6Shse-YVEcKBdg5iJzK5Xjpt8ZfhGnLoeBcpYZIiFxmNbXvwJLnRrtzl_Yvt5KYVu4XAQY5CyMUfJi5i35j3SY0C9PT-TymiwOj_8fLmmookDbQpgWeQs3RcHCUCR3OpjSrlR3Xf3nVzhFMaC4MYOoS1TTL6Cq0bSxPRE74i_lvL6cR9sBgPIIUvW5I4EkmzgCokk","iv":"Pw4u5IW-j6TCPEpP","tag":"kndBhMtDYRX4rEp01ndQFQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJkZUJOazd4ZUN0R1ZtUk1RSDJSVUw2Q2twNXFCWS1OU2Q3Tjd0TjNPbmwzRGMwaXJvMm1faGVqUG1KUGJyYkNkIiwieSI6Iks2S0RRMklwMENubTcwaGxkSnRMM2t5R0wzdGgtUjFYOTdQNVFVS3VnWlkwMnZ2QUpvbGE4Q1FZQ1AtTHlEYUUifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}'],
- ['input' => '{"ciphertext":"VP3msKx3uJKdWkeC6Cz5gM2thvDzSyGyccTgQbxHemaO6Egq8afzTnoj841yY5EczIRfBT9QsSlhu7nWFUY5i8RXHhIgAQHaBPv7sutT6_ISDRWdxgpd27tTMP5bzsPsAyX2jvtQx4gCvte1BI-RR19qCQRiRanq3JvbStpgYYRSzo5b4BhP5ik1WJy_b2_NK2mAXXtYo0WgBqjBDXm7t46euLxScMBhwRtuUWddGis","iv":"qfyMAIJhyeROiM_u5DBLHQ","tag":"CVs13nkHgx1IJ67NvcAYJw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBU3VpVEtOSzVsejZQcnBoWFlhNDdWcXZtT0RDbk84clRQUUU5aExkM19TRm5RQ2JoU1Rua3NYZktYb0RaZ2lTa3hqWkpXOGh4Q0VNVkFkWDlnUzl2M0x5IiwieSI6IkFPWXJEZ082VGFwQ2hzc0c4NFJEWXNGejVzT1NBR056MURsLWtHQnFSRVUwNkZYbkVkYUVxSF9vOXdkUkxmY01QZWxkaEpGR3ZnT0k1bGowU0p0OUZ4aXkifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}'],
- ['input' => '{"ciphertext":"JzSiCguosSsOArvPlmaLyZIfOfPIKjwU4bhHmkMtRmgFk2Go4spQT1WF9vHXBVZSf6itljYZAHSMrERLAjNwovX69anddc3eaZSNvgvKb1oH_bcHb-uDLVIcktEVqIopajbBaDOU57tQEWSuHN88odCJTjolchcwqSYmXtPjS6J1nOxy7ulapbWgMGqFMqiZtX0Iq6YcyzJVimvOvshERVy6Y3BwYAaLARrOugWSB2E","iv":"BM1ts9JitMS3izCW0YJy1Q","tag":"mcfyHYGEuiynDfnod-yHU8Uoe_SrSaHf","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBUU9pdklxVi0ycnU3MDNaYVRxTEpMQlRwVUVKdWhQMXhPaGNlOWdOS2lkLVJ5LUtEY1JCNVZkR3c0TE4xNHlNOGVHcmZUN2NqVXFVWlBaMkJqMUpSQVczIiwieSI6IkFXRGxrcHRXNWl0Q3h6MEEtbmN1SmpFWDhoWlUxUElwQ3RJWkRobDBYVThUMFVqeEFsdzUwRGx3TlRtUzdUcmM0dEtRdjd0cTRPNVFHdFdOWW96eHJxbE0ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}'],
- ['input' => '{"ciphertext":"BriyWYaD3yOINglVHQmdOaveAUZYHU5zS46aTYvLA1pzP0-S5r_MBF3qgZOH9iLEdl8KgTCOolKBDjLXOG5YsL9KqMTHAmTBTxvIhIx-O57KBvl12MsGxb65TU6IX2bLVkc8Zg7A8-m6A2v2zb_DsfVZ1chxW7fsTKl218R6_0TTwtP_7T-4ctlc81vEZqOLquTpaieWoG-ASOehfB3CN4J7Dp_sJ-okeqNArmWq3tE","iv":"Ly3eUiXkIGMok1n4SjSfOg","tag":"RDj7osy5t7NREXO0I5eULOP5So1s_A3X2dbQHws9Qtk","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBYTQzUDdEblhyS2Fwc2hZNmZMWTJXbV9ScHRqUVc1MklpT20tb0VDV080elZtSVV1ZGtNeE4zSV9IY0psbThmR1hFeEp3NUx4MHp4V2lDZm9sRG05eGVmIiwieSI6IkFmSUNkY0dqTlEtdmZDUXl2M1k4bG1kckhVV1hZQjdoaU9rQUp4UUVlYVpJNjJuZnpMeHdBcUg1VnhIQTFNTHhYSWhJb3J4TkV5Y2RPRmo0aGZCbXhRT0EifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}'],
- ['input' => '{"ciphertext":"UbVIUUAKozSZNbzQd6PCP7WK6o_sE2bo30UYWdyn1YDw1_trpfmaI3w-YnlyOiGwPr-zC_vmZ454W_Ryn0AGXKXqiTaekS53WbG8Th8wDlwS14AQultrF9qk9OnOvkTrOJP_O5iQD2TcqRGKTayVuDCmqdoQuy75peY-9l0aFhEEvt11DaDxCPjghE2oeL7tJZeOkWJklW3C4fXhzO1JApC88yeNNGM","iv":"eQprJb7oLn_UofHS","tag":"nn2X8aNEZi4tyhFMa1wxfQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBWTBLc0JobmlJcmRzZUZNMWtYcTh4bmdyNFhkbEphZHNxTF96SjI2TUc2VWY2STFlbkhOTDN0R3ZrU3Bqa2Q4Sm1HR1pZR2pfQXI2cnd0V28tS2FVRmd2IiwieSI6IkFWN19fUzJqLXQ1TE9ndHRnNEtlLXQ0SlpaUVMzb1llak51anRYSTJLU2pGVXBhUkdGRUNxUmh6TlBoMnVpU1Jya3kwMEx4X18tSWNSS3htclhTVndaR0IifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}'],
- ['input' => '{"ciphertext":"kbNXtTo5NBpqdJB5eF4gq2wYrVfytSoq7fRsbZ8jCwMeHc3WwM3HsrHPwQk5FfQRPLlTkNsMausVpV28n-aYHevMXL4RI-8_IbuMgXVtJGY2aJ-9KhuEAV3O8Wr1Pcrc_2QF7GRQph0X3dVoQduPpiOqzclcKQqmWjKNx7LWMtUoAkKjMxLaMPkFGm0APFqaDyNomQp4Xtzw9r3PW88PSrne4LMGDYY","iv":"O5M7KXZc2lUSaMXz","tag":"z0BQpTdE94FETudknErpLQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBV0hfSFd2SDNXanIwOGx5OG5MRzlpUXlwb1JsVDNZS2JBc1h0YXdKcE5UYlhjVWJKOWpmYXlieWVRYzJmeWJYUEhCNF9CVnBodU1nQTBzSFBrandESFd6IiwieSI6IkFBSDJhaTZJdkdNYXRNTFZNa1RMSlplQTJuZC1rZm5Ydk93Yi10Q0pwMzRsVGozdlZYVmhMZWNqRTM5M2NrYTczWGQwYXh0VWpqdFRiR1ZacmJ6dkswd1YifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}'],
- ['input' => '{"ciphertext":"Va0dxUmDCHgUIILlr7ynQgIx7sejkmPc4C5KtTBx8mSPsOh0RHKuSpG_Kl0_T4xG7_kB6V1L0sr_3GZ1VQyOk55gzt5VuhJbaJGur8le_0tzxzxdunUPut2Dg28qCk4x0EIftxaqRojhne5okleBx9AJdbeAALVpiPnNU5AmThU3648Go9LnrcPDUS__pNxI7Jmoo3o6CtW8nCy-EZI-bBi9nx2sr1E","iv":"T_Wkl0uQ6EILdiGo","tag":"niqwhxpUw5T8nqXIIvkwag","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVU5tRDJFbDZ6X3B6aFNhTE5qcDVuNUJtNDJDSDl0b0JiTmFCWko3eHJCUm15bFlWUmpfcHU4VVlfeTlsQ0Q5U19wWDFlRllwLTFaY1NYc09XSjBWM2FPIiwieSI6IkFSeDh5WkNmTHgxN2U0ZHAydS1mNmJ0eXg2eFZkY1l1Y0o5a1R6YU5RRGpEZ3NDNFc4cGN4UmlQeUduWnN2bHNSeG5aNXRLb3VSUldqWXpQaEZ1WnJ3TFMifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}'],
- ['input' => '{"ciphertext":"lpybkrid_-PJmz9mbc7tN0ILbiN7O_5p69Py8v7zdZ7eWsMpARzVsZDh4cS3Pr6PEo644h9cdonDZT3X-E5C_pLiquR44wti9djlZkz_DVuC8V2owUuY7J3KtNsJ0wgAzw4IKB52XAvZ_k8B8DkO_HizPh9GOlLvfiq0JZavLxUlDUa4liMM87d4Ab09A9syExrb2AF73f2h9Fh6t5zaoEut5qiwLKapaRNg_qm5zy4","iv":"Jf-mYDmKK3ted8lok_GIGw","tag":"DT90e1pDUOnMevNQA1CMDA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IkRpMmFYalpMTDBvb2lJSW9uODVsOVh4WmJRQ2FHbVdLVlU4azJIeXRYR00ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}'],
- ['input' => '{"ciphertext":"XMtu-ILvqQAw34cvWxFAjcla3BPp_b_V6I_4WG-htpcMpwgu-gG-LVrb_82b8PF52DhH6Ddb6LTXvgLo61Fmu3NnE9JKuxK9x3rKS1FwMaRjfLOHQxDjWfvc6sBhtCkXptcyb6PGu7Cf_Gqefc6EUtuv1mg8oFRcHHyh3oKwodfejhKv498BBOapYpMbShvJ_vFm_-POK166Ar6lXkT2J2v_hcLgvEqdg9cblhbq6fY","iv":"0-53nsstdwvjKg-2AiQ39w","tag":"5B6nXRG3VcnQ77uooFvuu6hbKkYW7buD","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlBqTXhyNHpfcWp3NXJjQmFWMTBlS1MtWWJFLTBVQWVrYjNDWkpfOVptbncifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}'],
- ['input' => '{"ciphertext":"frDISfZ73cpq6Dr3fZrV30NFvVhpIg4BqW6sBHiGqKi69vsLyXKGvtrl1VHK27_6PO3xmApdLPfHITEFuwmyggOX4_bSVgArkWgpgXlUJzwbDgbCsJKf7FuVXK5O1wy4_I_JYSiO0J1YUONjUrt6Ex343Ibq3vDB2KiHeemoGRKLhoM6ejdyY_YPeHKr7fOopYviZGPPh2bt8dEXe8lNpAJVDh8cgGIkVvDrmjzDk6I","iv":"xzKxcIuy56ORbMN21dVk2g","tag":"Y_OPobOVDz_lIwDoMqsXcosVQFCvCfMSmWCpY3W7nN8","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Il96QzJ3QTUyYmZtTFllTUlObUc0NWVYRkJhWndpV3c2bWk1dm05NmM3WHcifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}'],
- ['input' => '{"ciphertext":"_5muNolwL4qVUB_a2Sc5jxJXDyLOoiXUWKGshvhtK9pnEEvlHKUirPuFV5hAd4x8nw4zt3vrh7ELEUBeMQ_z252svnMVrStFWg7Bg5qbI6h63IEM4o9XlnyXcwoYcm967H-3-UZ8j66Y2R9ztc2pRR2zs2pO0pNhJP78VjWL6j2tyRu3Qr3Ifxf3Y69tzDCZXzUs6y1KEsmay4X75OrUZbFrs7Kbg6Q","iv":"Ifn2b8VX6mfBEdmd","tag":"N60_66GG2jMw9NBYHIGaGw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IldVeHQwUGFUMmkzalp2Vkx2MHNac2ZOYkg1cnpPVGFnYmU3V2JpV0Z6bGMifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}'],
- ['input' => '{"ciphertext":"IUmY2ePgZiNynhrTxcNbDJtNBL59UEJ2ocggcuXrLF0ucFNORX0CVOO1GN28Ymre9C8SRQkMB1fLel7i33Zi03QT_znEguRo0Ytx2QpCWItxjqzbCuOd9506xSQjA09-ydriciNFHgbnxFMm91W-5ETNg-gNMCNBLg2fYNVjUFLXPSUe-yfcGViFTUcCJzPwnw60GhOTbxI5VkQPZicZM_u_hTVOWhk","iv":"YqKvjace4bjVQjjc","tag":"uhBYYEQ3SuIAFMzjhmT7Mg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6ImZya2RpdmdKZUFacHB5MGdSME9lcjM4ZXZ3TDVjbENmaXJxRXFDcFR5VFUifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}'],
- ['input' => '{"ciphertext":"QbcGBRt2ARS1K3k4A1mktK4ks4WYuoga06gHjGMvEIesam5sFMOS8bqgSI4rOa_a_TLkSNCHlSOXFy2gs_zaXg3YEgwTWNdtH1B47D3Wc8DRTygbwdTAsnGMB1aVnvj2qb2OvSRCk4uMg-oD8WvFkTgp0iyxYw97IKyhH8FU6PjzKwiYGAUTCNcia6iyAzTFStlicyH7VvhLzXInS49X4EzlptNjtS0","iv":"O3HOMyDYmyFi9-L1","tag":"dODnhRWtPxEBE_PtBZrENg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IndsYnVwRzJuaUpxOTR2U0pCaWt5RXl5NXoyRzNhcDhBWHJjWVdOdFgxZ28ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}'],
- ['input' => '{"ciphertext":"ACg_nLboBecsud2uTRPZE9lhnGFXdNwdWzykX50dXKU2UBc68T1XSS_YsqGH_XuEKheWa-gwgMxbLsvBpbnelkm84UiavaefBlKGDjTZZZfzJmEE0UdWzSsfJ6DZQ66qk-denN-K_Va46Om7Pkv5Z2CNpIF7miAHeCCHnF2z4O7D6IRrw5pQUUnvHzrUz72lKPZDYj8JlOYENjFblP32cKl011ve1Cwk-pgAhoJ0FBE","iv":"aF28SnQOmrc-gEdIlTewWw","tag":"wTECGcrV42tlC7RON78stg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ4MEJvVHhfXzJITnhRQVd2UDNBa1A5TDRFeHA1ZlJzdy10RjlfdEZMTk5RIiwieSI6IlNDREpNYXlJRlBrdW5URkIzV1FvQWZYbEc5MFN2ZkUxN1U4TkxMWTFib2sifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}'],
- ['input' => '{"ciphertext":"wzktIqgfTWJk5-6h9pt9_djnVmt9XL4Zf1kX84xg14_EmES9peZgu1dBq0omUfTP10QgXPPvHEwhzJn6tcLPEpmgvH4UenDvPul6ZoQemLxQKojERrJROD9FTRITKCKe1K0jrRAkKXlzeYs0et6Ju_rHtUHq3I97hmT6mQkwkeJFXQ-qkBaItRLVbXBq5Ph3TTYjDubOBoCHWAKZ-pPiJ-4f6Whx7fDDVsV_hXdooJc","iv":"bDZvQ89OmNYHEREWyBYPZw","tag":"k5NO-VRlL8MaijOD_C8jHSB9dq_0L3Wk","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJrdkNVbHF5aGY1YTM1N3YyN1ZwV1l3Y1RsdTdvLUtQUEt0QXBQN0ZLc0wwIiwieSI6IkxwdDlRalZwcW9JUEJzUFJQY1VCb0o0OFExR050cXg5QWxRM0ZoZHhIMGsifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}'],
- ['input' => '{"ciphertext":"d1au1N8eU8qMQ4D93HYnb5-cFtqyIdrJXV2OdaJCcA65s2g2rEM1k261lnnbJ-C_OgK60oQQxTc70d_YOXZOMsBDmraDmpjr2AODtwohSSe9e35QpyD0S2TT-FL64CiSk0TodtitlQ00UTCs0vHSDy7gesHvwG5cmiXKBr0_2ybW2LnOwpJZZpZGTIX5cuocfVVecoN_cS5G6RIVTEsT6YS0WAnVUAiWsifdvuJp1tg","iv":"XloO4Wm_70slo5FVj-lHUQ","tag":"LBuBOaorE7-XSFf0ed-s7cugHaNbtrsOmFCXa8lsZLM","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJvSmZobld0SjRGOGxCUENic1p5cGRWbjZUZERxUEZZX2dlWXdpQmxLZlRBIiwieSI6IjB5ckFhRXlnQkNhYW80bE51eEgtVUtXZUJuODVNNmEyTXdsTnhJQVpleEkifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}'],
- ['input' => '{"ciphertext":"vnoovMxbZ_Ie878pnkzg1MftrJOyKxlj53qwxtCdUduyQVx1IYZTcpmC3bqqLm3Tm4A1VPi3U1uFp8X_tHUNW_AkIlCQvtlISjUmlq2VZqvQodynYzcLE_bEf49b0gky39Jk-U7uq51pZdkCn_Dnm-2k8xQKtnrkISsl96JjTw69D_pGBR0DdQFcEfJO1HpUsUQlOOX8fsdW2DURmNsvEAtSBn0faCg","iv":"NstpkansL9xPOrad","tag":"cXTsEsWSV2Ipy1EGVzfcow","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ1V2NLajVDdl9vdzZZTWlMdVlfLUNWMFJxeGhSZDdLQ3FWMC1LNmtwYlk0IiwieSI6IlItMlF0U1FxUWpSOEpYT0NYa1hkSnROM0VycHpDNjJEbVhoREl3b3dkWXMifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}'],
- ['input' => '{"ciphertext":"FR74oS4SHGmbgi2qb-DNgQ5i37g2JZlVy47AR40MoGfoVGgrcL0i_7sDlWBeC8RWCVCkBMBNUR7-fkp8rwNvwC9DN1E8GoiFVtmi5D-wYXVwMksx8oeFGT0FeDRKHDa2ZDUzcVttDSmU0xiYi_2wjkW6q1CozlZGB_1Mu9xEogd3e749LJx4FNm22EGI7JM4ioyKCxNQfBDMxt6XXFqtEaQFIUY4Y2g","iv":"KAJVHEqL0ZafC7Nf","tag":"_XkJWzjIqfW3AVlvl7fHww","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ3d3RUUXN6MlFMX2t3aURIMkRVMXhzQ09lT19haFlvZU41NFhZa0xibXlvIiwieSI6Ik5CZ0RFV2syZTJlaGNramZXVnl5V3hCYy1fVk9zWVpadHJlZlhibTZGU1kifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}'],
- ['input' => '{"ciphertext":"1gjDAJA1A9K3IJ_nQZiZCND1kP94iTELtYwti-qX893MS7ggBYrlrCNqotCvwKgmn_CMRcWd9y04U2IMQnL-R2juVIkEC3vZvfOH9c_UTLxjKN-CPyRj9frk7uP2EyQWNet9rjPsMoO25cmorlwtSwusQ5AIuZRXhRjtE26W1O1wbBK5CBg0ybf4B37N50beFRo_DzcBiUQsvJJLJyo_ehDVxgjW4gg","iv":"h5m9rU_ULBMdfb45","tag":"LgYeq5xlP3TMXMG5PduO6A","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ6TlhNU0RIdktSdmRkNzRvdHFHRzRwU1RPV09MR1RkVWlESTY1bXJWcHkwIiwieSI6InNCaTJSbXdHQmhjTC1IaS1PZVF1WWFCYndYLTlTaDV4ZXhGM2htaEtWbGMifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}'],
- ['input' => '{"ciphertext":"IxQQfxuR1TZ6ntuADjsnvtgZTL3yIHobBImiIhM2OXkh0yoM1MZXwSC_c1UlJdf6cGdacPIgmcJlsZdAbsi7WzZ5JxZQOL-pjAeab5t_L_4e2Lqtu10l812w_yXQ-szKc2meyj3o928lg9AwyNi48GVXCCGAuGZUBfAbXCp0ORC9UP4Q0pVIAo7XhWCVvxk8Vl2XR7kPVofEwr2mvMJ8OoCAmYAIKfnw3AfkkIzyLCw","iv":"r9WX61qWE40c5oqAu9b7Sg","tag":"vo65keQh_Q_ID8O4y0zINQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJiRGlIR0JRMmNmWGQzTm5ua1ZQcVdtYXpHUHJVcWwzVGRMYXNDcDJVQUhwMXVlUWtxU2xpdjhSUnIxQ0U3SjZBIiwieSI6IlBzU0p2ekJCRDRPUU1qLWFXMHZaalBySFlwU1NhYnZMWGtaUmxZSXA4Mm11cTFZaUg0OE1ha3MwTXNvSnk5UGEifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}'],
- ['input' => '{"ciphertext":"m50AsW6xfm1_u5fGHbPRg6Im8bpWA-uNjl6sek90seFgGuV21HQssW4n6ksAFH-1CGloNngHxQUAO6nYgAPuGJpGJyYARLEjIZhP6RYcW2wk8TVK-8MHQ3o07Uhui_jb6vVvwX8NHWNlZQDupeEfS19GEzE6s---C4IA_U8BP9Vd_UVjgtE9TyOCPntIuUr0frJTDAEffesDvPQEgtUNtMr4M-uhb0G0M7BkaIvgSJU","iv":"C4923TvD5M_TIie45JPBHA","tag":"HoMhtMrjJ5GDsMLGjo_WUryqilRnRsLA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJNbEZVdWVEWmYxZlFma2I0ZFUwdFQ0eGlOdHVlbDAtQ1htdVE5VktOVjh1S3NaS19ORmFuRjlSODYwYUptS3dGIiwieSI6IlNMRUZCX0FnMjhhWWRwaUJ4SlU4NzBYaVRkXy1DeURRNTVZTWluZWhBd2FpNGJNWFlqMUdHMmd5ai1EQ0h6TFYifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}'],
- ['input' => '{"ciphertext":"_7FRQBjsuN4kY2iOBO4ObmO5AlMoCzSsNXPJsdryxgjTpPLR84xN2oYoU4g_oPAssTFzUJh8yXp-Fx-AH0mnf5lVP_NIexF_NHLrFar35F9d94PJBkwiv7CtNefXeuO_XsMjZn7TWB0Qhw_oX52JWVsybS23M3zSM8iSVrYCDUgLdivrc4x5-BCMBgUmHz_Efee-iFjnPRUGPg-oqwYZ9RzmVdMjV9-zbyfWGs9T2bM","iv":"gCKV_Z0VgExxHOfkxNJ5dg","tag":"ALFmpaym_S7k4eGPfUpJGm9GG-JbH_N9xOd_JJ_RpRk","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiItakhrN2FtbTI5OXExdHd1UVJaS0JnbWU1Ny1Td2lJdjVQZWNta2VHOWVNMi0wb0NkWExHWDRXUnFLQUttNXQxIiwieSI6IlNkeXl4MWVjZThpY01FT0pNZ2ljMjhrMWdzUjkzQmJJa281UFptSFN0ajRqbHZPYVFZYlJNVm9vSFotYVA4M1MifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}'],
- ['input' => '{"ciphertext":"eajyqCw1RJ8ev7RuWyhaqaRIJg72QibdSryd36CMxhhOUB2fIzGX9gZ8hHp_D7Pd7tRHFGt4ydavddqGaaCBjaMizHFdcZxMJQ6t_57BFFTTn3t_Vh08HVyE5caBariXMKb-0YGBwh8shLrBHEYTYE_LMbEJI-sBWePbtCbXb6n8ObzI7hVNq5Brq7ZmKBrGVZGPp1w64bJzGNPol9IRY_sBekHMmcw","iv":"-4w0zo1ACWTWK_lw","tag":"OPBIsx9UaSjxE2mrPlb88g","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJ6T1NOcE1EOE9aMkR3YWVFamFDTFFCNXZ5NlFWaklGYmNmbE0wOXMwRmZqRlduQUpwNFk3ckVPWl9CYkszVlAzIiwieSI6Ii03SEt0Um5kNlN5LVd6c01KVHBNSzltSU5adFVSSE82dmZKV1N5MWR0NWdPWWVqZmxKLXgxcWE1dE13SUVER2EifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}'],
- ['input' => '{"ciphertext":"SRBspbq8aCKsLjyb4ZwkU7bNf5387pvKDJt95MonIP2IVsI_yLQyn9RC0cOe_INnF9kfaE2nPyjYX7d4D4i70kdxOkmWK9UBWMyXUOHuyolWPJ8zooTbV6TgN-of21Xty_S2d_fxpQmrpwrrNfTFW2NRxiiRZeeIUVzuQD5CVqMEut1H0WgRGbUsKKMFEAhSMSfY3sGeZGsbAfRjneGJrEiA6A9FZWw","iv":"KgtjGk7lEaJVhvXe","tag":"1TtHcxNEG1Ie12vHEHxikw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiIzLVJ2QmdsQWhta211QjNaNUk0NHMxQ0stY25hX1YzaUFlWlgwUVhBZWoxVF9XN2Y5RDFsNXZMcmlJUWJTMl9KIiwieSI6InhJRTJORHQzNW1VN0QyVzhQUHA5SHlrVVJRWnN2NEJOVHBCamRidVZ5TzJWYWxjdlFmQkg0ZjJla2hQb3hvRW4ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}'],
- ['input' => '{"ciphertext":"uRubb-NLklXJ9LeTeT7SbOUBj8iWksOohM0EAbxFSP7U7Q--SSNzp4kJxjTDweT1njB7soMNEPPIKHe3Je7e6JofQVhG17SmNKOo3VKvDCYRB8B_Ky2o4y5ZKpm8RzgvnfWLXRMu6497m_jNaQifaiWCCVsTedJiBT8F71gE_HYCQ-0mpAnbNwGwrQHCbNjXf2xjUbHWROF2hVASIjHCon_vXQPb0BI","iv":"K2PUZUoPd4v5gajx","tag":"IP9kcdZ7PWVaIJwTYDub4g","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJOZndiVF9BcnVzRk1pNkdKWkFiR0dHQXlPZ2ZkQVNaaDg4RXNEMkJReEFKRy1xOGFEcHAtc1NOYTViRy1kMDhBIiwieSI6Imwzei11b1daUzhzT1Y3SHZiVkZwTDF5VnhPY0duYkhiWEMyVlBHUVV6aV82VEpPLXdYT0dKcHlPaFJTVmdfSmYifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}'],
- ['input' => '{"ciphertext":"evFbDMHEqVePkdpNlexRjAyX5mf0RCjYH2SfEI5BrW1Qz09z5T8OvsQDdy2UDvoDKnJQXZNAyEicA-N1QMjsAeMD6xRZ7WcPb4jbGWsnk5Da2xYdVvKOlqa35D7s2eQsmxFI8nzPydT0V9I-M6J-sljp6kIbQYhkRzlF-1Yj3P0pD6ExNOEJiqqneei0CpxiUMDo_mH3Yqxv4aLevfhOLSGfL_RNlA41wvL7pqvmpnU","iv":"0gChfHukWucTP9jDU2sOHA","tag":"jytdfKao99CTm-QxlgUADg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVHNOSWdJNFgzLVk2dXNBT2tRTHhjemtTX2k5amtWQnhiRHBmQlVzMEl1QjJpR1BwNWZkUFl5RHh4Y0QxMHhXdXZpVFF4TW1GODExS2NTaXNlUVlGX2dWIiwieSI6IkFHT1ltc0ZRY0UwOVFZYTZxQWFNbVh4bS1BRGMwcTVPSHk0aUdnNUppVTZ6UHRrQUFyQlVoaGNvR2pfUm85OUloTEJqbEVtc0J3amtsUzZPLWdaYkk4X3AifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}'],
- ['input' => '{"ciphertext":"sQGLMdFoGIU6hBqLqd5mScIvv7JL5YOVX_a2fPdk1nSMhT6Qzp16Gfc_hCUAUCjrhgMOXYt6ENH0efgCR9WTOp6OI2PUJY-cF425yW7w2uQ7cng86FzqEr6gx0JOhSMED3BJ2lwUNJ1hX3XyZi9zm7SeMYxibbEtrioFzvr5QriESsSw9O46_pJg_JmrUywJECJtmGhve-4xjhbX3J3WfFvQIB69S8t5N9FynjZ_Cx8","iv":"E3J-49EPWe3yG_S5uXXDpA","tag":"wO0cMmpjutiE5QMvJl-jj-GqGld0otfg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBV0JWR05GdzBYR1RaVEhyYlpTNFJrOTZlLW52M25WVTdzLWwxY1lJeXJmVi1sZXpvc2h6bF9SN1M3ejg5ajhxWVFhY25kOGN0V3F1d2F4aW1zZHlBYzRyIiwieSI6IkFFRzcxWWVweWMwZlNtZVo2VGxGaTNENUVnMVBYdWg5SnZ5ZXJVOEVZMkt3Wkx4Y25ydG1rQng1ZllRNlVkcGRTbDJESjkwNFhnMWhoMVRPY2tSTTFhV1MifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}'],
- ['input' => '{"ciphertext":"SQBbU-lyu_CtmFf7pHYukUfAEo8T-ck2WslHQ62APpJ480LuM9yZwzPlwTHG1uvQextL4cbFj9vvyLMeh3wYLj5AEhUHEVrpdvtlRi1rbEFqQiZUEooEPN2qJoxH2mWtn8nh2DjsuWpod8UDee-8hOrW3xc-qHcZvcSrmehZmpVWbBLEiylEAineyRPYYwTMvlLA3PcHqXARPO-41K8xUzrrXJI7xBiNLmOQlYA1z6s","iv":"jw_8tRsVnCFVKGS9IIzG4g","tag":"OcFTJXfkTicHumLC50Gmb63D8nDqwanhIOxH6fMLKNc","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBT1hpa3dFRTZ6Q3JBaEc1aU9tLXV6c0hmZjBHTnhxOXdWVTFFbWtobEh1OG04Zm5wRTlRS2hfdEc1cHhRMkR2N0ZCemFkR3RzajJESXlzT0wyMUdKNXNYIiwieSI6IkFhd0FZcjV0UzVLQ2NfSXJfLS1qN3ZjeDRFVzJpeTVRWVV1b1FQUlJvRmpGREFqT0twX3ZaLWhYTnFHbnlqREQ1VnV1QzlrdDNPVUJjVHNZeTVfallESkgifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}'],
- ['input' => '{"ciphertext":"MReNRX6Nce0_UQYaLxDa4AR2b-db9_FMVUXD73qAvENn-oXx4jJog4X76oVfl1-nqta5RBWg5mCT04TMRG7QtGxCEgpsS0w5ELKTJughVn9XHuPx3XXrjgSbiZZgYr69wx2hS7qnxTgdmVH1xo1Cpp-SH_9aE5CT9PwROcJOYkg5GhUTkKmDHXb1jdPMlrUzLxTaVl9Ric-YpGxcNy84Llgm6JA2FhA","iv":"uTLsVACz4yoGmTC3","tag":"igbfFg0uysWev5Uk5qm5lw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBT0luVjk4a2tjUW9sTUVWTk5wQlhQUkUzdXkyZm00ZzZKU1RKMnJYSFpYMnlac0lic2lqLU1tNEpXNVlJeUpJY3kzRTdheFFuRENpeDZUMEpKdGhWMXNIIiwieSI6IkFDVFJaTkNxYllSeTgySTR2b1pubktVVV8yTEdyVXNUZjVIOGxCTDdSZ1NfNVJ0UEFqU3RQSjRraU41QUtneWkteDB3VXBEX2JXUllKa096SmdFeHB5clkifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}'],
- ['input' => '{"ciphertext":"JrZd5PNga94b7YDyXyqNOrcPhEr2zEKyjC4e-iqdqcJw2zgjK_7zzw3e-MBVJ5JWRh8iepeveux8sMbZJoXB9v8R_72ykjadHXhXgwliPqcFA4wDg1NKGG99ZKnvPydlg2_0SAqxvX8C0aJVG25x4CdU2D2k4AWISgJMU1sgEk3buMGG3UuIYqwtOv6uhGsY0OMxMy4D-_02mR4V9NZDTHql9kXYESQ","iv":"b2W4yc1XDBs56hDP","tag":"VJD86DkO8ZEMsP4Xp3MJ-g","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVmYxc1NWekVsZzNkNVJvMVJDdzI2by1hdi1kRjVVdENwQXJiMlJfVkRjZ1hCbWthakdOdTZnLXBDTHlBS04tVkc3dWJKNzd1WWxjSnNaS0tYa2l3aGhmIiwieSI6IkFLc1pheGQzOU92N3VMT1drU2tzYjZnRTY4c3NMRGpTekt1NGVhaWlZYUlpelhXNGFxUEM3TWl1LXg0bzcxOTlUV3J4MU10b2pRQ05SelZBcVJkTmhDT2IifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}'],
- ['input' => '{"ciphertext":"QLLxRxkzsJIaVXT5fjX8Nq0qsXOB4hRcxu-91dDvVji3nruAlMYEeHEZOZIUqq0Y1AaJRJQmN2kDZL2mmdRuRcpzvHXI4pbwlLnZLtIqnAA77lEVMHXzWPYHvQ0kHWtnkr0-6Iq0TvVduJOZQUaTDhjWy7wIDN-bsZV6XIjcNRMgI7df6L3h5D5CrKR2DIPEiFKg-Ijl3lwcvgV7q1tMySQmiV5xRTw","iv":"vnVi5xfl5HFCclqT","tag":"eqT0exOdsEPeULmdG-wklw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBSzEtYk9DSVoxV2JFaFE0ODR2THRzLWliTGdNOU43eG0yUTBnLVpxMWkzcjhXdF8tdTZBenRCMzNWMjhRVjh0MGJ3TmZYZUE4cVZjZnJSR1hGNXZSeHRLIiwieSI6IkFQcFk0V3M0Y01UQU5GNURiTzRZN0QtSDZ0UjVOWnQ4aGR2bWsza1dHYlJKeXNpdkE4ZVk3aFFlV3BmbVdQQm9IQ0FUYTdUQmRhcHlqQS1VZ1lIMWRRVEcifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}'],
- ['input' => '{"ciphertext":"cy6eI7vOAEC1PXvkVQcea1rl73JB_Se3busbGZ4PUy7VPVeIzYFcdHbe9qzqE2xwNigmja79m3DaduWyD5GDrywm0kUG3FVnNF5FkKsKzKBpdX5ubEDfXisfh4CGIu6ncESr7llGX5d4rCHd6If7NBvE9dsmonnOr28D6LpsrGFHS1vTs1mZW0IJ9ZIJJODO6l4nnTtpW4qw6WhIs5ZHVrTf18QtRdV0Zn2dqIlbjw4","iv":"JfjmVUk0rt5wgjxtJG9dcQ","tag":"dWe9-40TN3xItxfaVDJOvA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlFORWtJZmtMamozVjhxV1l6VFBob3c2T3dRY0JSb3RVb0RiX0RvTDYtVzQifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}'],
- ['input' => '{"ciphertext":"o1AEWAYqwcfcK9gdrK9BJMc1-3sbbQsfmNbDRiFYPLM-ikkbhkkwvR5Jj-E_qwKhvix6D4nK6NMvO8h0Rjjg4taj1EPtvBOA-Ppl_tI023O-VOlOBVaaiPNTuRjeHdWnFnbZ2NOf7r9SUaXnKQlhboBqmzAlV_9iId04A2U52jV9YCe-QRC4PMiwiB7QaLOIWAp3pZDg_cdVqIOFegrHiZx2gcwhPTdCRl6xjF86YTQ","iv":"sgrJT1GnLW6GPZxQ2sE4fA","tag":"M4WVnIMxLAK3oVaqsVKZ4KqvgGObGAw9","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlJYWFZQNHoyS2RjR1Zfb1Nrc0c5emdKQVhLWlJTR1ZfSWl2NDZHRklDaG8ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}'],
- ['input' => '{"ciphertext":"1b0hOYd2iw-p6_BEkP6bwkc-ghNzU-8c0oz9Lk9-ksIKn3_uO3jaiCSPpgzrIWdtwM2shJuiS2awtVsVqqap2kUBI_mLxMUkNu8vIdLVMDOG4JnGu8xQekzOyEJnh3t8iJqukVeHXBOHSahuOSJm1wT9I7c94qziBxWcBfUTnPhk2erZID51iUcgXXT6ccnX3bVhGh7MRAh7Ayub9N7vhIlET_drNv1-nDytpP1VHI8","iv":"XfKwJSAkFOMfbhIzok1ViQ","tag":"b_kD9-BadXRR7VVlArO2NbJ57JDk5q69d-6V9izO8pU","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6ImdLSHp0UW1IdzgwcE05MkhjMkxZVUtzN2RGU2hEWWtBRkhWZ21nU3JReE0ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}'],
- ['input' => '{"ciphertext":"XR-qBJ6l7-VNRgTzLsVkniRY7oDNd0r_ooUofbMqNDSXTHqcSQWhBayA88gfRybwITBuM2TcOClRQ1LPiGW8PceWgu-kXzRU3U0oUkhgwRdk19ZMbtBHkg-g8GX3VEr4rawUri4ofCFBL7dV9WshLolOY6R_L4IGXSGhpH7HPTht4It773TfAo2LPTFllfN0NYcRJD180VSAYtTEpK-BiwneRhHd6O0","iv":"T8_T58NnIjrQ3v0B","tag":"Xg2J1jQNHlpVGow6NWEopQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6InI1TXJlSmlFNDdLSkcydGdzTWI0LUkzajgtS3lLbzNMU3E3SHM0aFoyakEifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}'],
- ['input' => '{"ciphertext":"fkavWJbNKcmu6HkbHjOyjAEylDh2EyLcJSLry-bHi8t2g31UZimNTW7aKPgGVN97T3_jJkOpSdOYoRWs9nparpNce0Fqd79LaGgB0a_XOeRZNRzkfXZkTr71r-o7XRC2xTNHdqMQEd8mWXeFmsZD9I_ZTjyF6FCW_ljWtccJ1VBPe4bvTdnuHCFNzHLcp334LJTxuc0sgwlTb4Mby8acJkS4LNt1S8o","iv":"-eYt0kU6UUhUZccg","tag":"P-PGnb40IoWdhX2VluueSw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlVnLWlGcWdpWHJ4VmlCWGxaUEN6UXVydWR2T2U2LW1UaHd6YzJJVlZyMzQifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}'],
- ['input' => '{"ciphertext":"u42pqwl2jiwX6oRjilAdTjlE8-0I6WXXi5DxjdT3NjAG1F6tFhn0WHDRZZVmzLfA5JKciwW7_GhBFL8EqWksLDu84PWATcsJwS2PEp3P3B9QGkqgoNoRstExXpYHHpPoFsgBhyO7mxGJ-0RWdKLPf9Ck2Z6Hn8JoSVLbIa28FGTNj46rhYg5Aep8BxYJf9csTRfPQQ33ZgupifET9oamSF32HVq6gO4","iv":"0cIuo8Jv_Vv0kyiV","tag":"8lebqo_Vzy8Xf8OPiuNNVA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6ImpMR09HTUl6QmtRVzkxWElSV0VtM1pyV25WOEpqRExlZjFsRVBvRTBNa1kifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}'],
+ [
+ 'input' => '{"ciphertext":"KsRIKGTIm8Zf_AgLI5D1ymISA63OIamKsYk1VB7xsw4j2mwDuKR9MA1mhUbc-Ps_s7VIOzK0qaKwPhdEjDcIb-Vut2yQ0E_HxpFyjNr5T-RbbJ1kdy1hXK3THo-Fcdrw2i3SoLYKi7pTh06CmYyv42iePtr1tq2t68MiUeRI9ZElD4Maf4ONcPWsG9QwmQzzui8kGdEJ58IzpAaqLzXAzYsj6K6Dd6rFHA9Gdd8lCtA","iv":"Ssta2D7cbN7ohhZ_IEirGQ","tag":"FOYasMqq5L_D7McwEcFbUg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiItT3czODhtbDc0dEhkbDd6TDFwbENoTFFyVHdyOWRNRnN0VmlUUFFEWGJBIiwieSI6IjJSSmlpMF9xVmJxZGhtV3dWbUhzUDN6X2hFeFpRNUZJaElGWEg3d2hXRFkifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"AbyYGNhmhfPp1losLrlcwLupvYHOpq_qUj3fCWYRGUwqE8z6G8ZKMC6kPaKfN7cepJIgxi6vP7Dxb_X-e0uJlD8mofiramMujc5w5gS91H_4LDfjA0hPsQNZsevvQ6H9Wb6KQfEH_ADw3Qo2lq-C9gjZdtpvOosvoph8D3E6jA9-DdC3Q1X0vSHgTKKwUVOiCAGXVUxclSvSIwkai1jIEKQDdch2So4ZGg2jGM9Mu0Q","iv":"QNuVRp1d7frRChaUKCFwOw","tag":"8zf7asVXbIBlD5M5_tGvynUDYCHkxCks","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJNWDhyTWthUHVzcHlMem12RFJUMWFzSmE4ZGVSQWZ0eEF5WVVqWFJWOUtvIiwieSI6ImlsaHFZRnF3eGRqZGM5UWQwYUp6Y0N5U1Y4U054endpVFdqUE9QWEtJa2sifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"UTHlayhPiU24oSypsNfRxpcbbCEJCrF3AtjNShs0LwflvY2m6CgwBLhKulw8HHtnDaxcLYjXutm5pXgzbgflwtHoAwh5WOwpnXkceAYm9vVUkRPwcRCeczvYy8__FSAzjJXRfFloy4E9cZtv8culFh5I-kbaEEs_E-3RQD3fvlbo3JLB4rrhccWjgM-qyF8eIHGFhAWa2Ez87dXCde9d8dvnn6StnfV4u-lTleOe5wE","iv":"6AnITEM_hi0oTJSI1EroVQ","tag":"pgFbCS8Jchp1z0qrdIS2mgiheApFT3aG20iyFOXk7_U","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJzd0ktbThvY2tNZlg3MjhxQkRoRkJ6MjNta1JZS2xJSXd2S1ZObmdZYmpnIiwieSI6IjNIb05TWHZ0QkdRX3pKTlE1ZmM3RVNqUmVhVFU1WF9pc0kxVzV2MG0zUG8ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"j0e5K7z08DEb8rkYCdtQimnNlO5VJ8OCipL1LmBxDWJ3FIxq2yxunhbzqYr5OsbBu2nsi26enhgxdf9utxYcUMhXY1BV-VOSaFVZHkKowSCco0H95a6sNhJVVGaLHFE2dLUl-Ooxlc0g6tDJC-Lyi9cBFuJlm-KeDZwrhd25g2Dpk38DSFN5ZUujstiLq-gibsm97DB5FDZvhk-elgJ5sBsM-k8wz3s","iv":"KG2bIjAFOXMY2_A0","tag":"4lrGURacjerWUN_szorv5Q","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJTaUxhQ2cya0ZuRldoOHFvZTJoblM1UXhPQy1BbUY1X0I4UkVhSkZzZEVZIiwieSI6IjhEOXJPaXQwbjh4ZjcxekZsallXRnhjMVI2SjUySlpvNFNvaGNuNFNmUTQifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"EmExZLBtuOMeu436MGmVpPGL1Oxl0pE8viy88rlyll-K4o7rWViqqxms7V4UgPs2FnZgdL8CJ6W_NY2QlPQlzrANPc9oUinD_OjScH-0Ff6Lb-LskWlGNebqyyl74XStzGO7K67jCnc0oXoU36yfuZFcjf5t3RI1Wh0hL_RL22OxVIk3k_WkurIgA-F2WkXDVuxlRW-nWkoNoxpRceZgDQmBVD0cfb0","iv":"lk2StauExilwOfql","tag":"1fXcCfufql4eRHvfsvRoNA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJqRG8wN0t6TkRuUjJrVERDVEFFWWZpclpKR1h6V2EwcE00UFlUWjg5ZUlrIiwieSI6IlNIaUpFNGdDUzBvZG1sdTNrcTF0VXNFenFoQnNvOWxtaHZpREE2Y2xoMVEifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"m8LhdFezEohHDHP1MR8mY26PF2qP1Ay9KHfQGXeCGJmLwR2U_V50MFP9_ehlHq3QrMXlM6EpbGEaa7BSuiZg9bhNbVWAHx9_S-NmZ8NcimPuRAexc6303fNoIyIwMBkAHdHED4IbRMfzdsJg9v05aMTzv3SqW7dJezyTPN_rWuFpYDFlqPg-c5HK90OOY5BR_zW5OK5XAVz5bxsi21HW0Ti0yHBiCgg","iv":"X6u2KRH0g-OOH2M5","tag":"h_xvwqzXIu5HRJn5OTy6zQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJDZ25yYklpWmVXb00xUzJVRDdXcHVhRnNHeW50RzI2b1Y3Wm0tWHRRODVBIiwieSI6IkZiTkZLdEZDaDdoUTNyV2tfZWVTNnNiemUwQ01SZkNCbkdsOHBKbU5YMEEifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"DmmkxBraJ0QZj5ZWb2QA0XMopoqxLVOC3DI1DmDLkrFOlqu1kTZhvI0Hx9EcST1YbvZ0Z77s9SpvXlHNW36vWBOqZQxWpGysh1lazijSYjN28lw5wKkhqBDEu_6_K__S6I-EA6PI8cl2wdA3LOIauA9_0smfmVcA2Ka3umN1EayDMIaMuwU2B45zuJrhHDxVk_9mV51fmVq7-lKyyAeu5sVy3KTn9FLWxcnkrZ3ajog","iv":"eoG62aPTiTdhUg1ZCt_QUw","tag":"IrYMVE6U87oo_LsNr0nHDg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJBNDZpY3FwRjNYX2h3R3RRQndkOUw2d1NlajdiZGk0WnlRaVBsLVNlMllBS1BMT0kwbU9hQmw0SFZNNl9uMWJPIiwieSI6Im44cjZjSEpKOTF0SlFLLWhscnlGUlROQXo1SVNfbThkR05wVHcyd1lxMXVnRlVfc19nSGczUkJhTnFiblZ1c3MifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"S81Z4p-qRKFcMNqQwG-pKd8dGhy1wuYG5tQN8FvEyW0A3R2d9jmChe71LEU7p4cdljlZPI19f7eVH6GvJ8drY-bcck5MobZuePcs2bCJVR4u2UGGQKiowbaeuquzErDKSq8p59yRCsEuIKfEHOUEQiLILs7dMUTFUgrv22vn6UVI781h3qOrSa74tGuwthTdSvaTgTE17Wfc3jj7BTgngY828updPsXEsDdSLs-qrMo","iv":"JJeemphZk_34coLYqxoyNQ","tag":"dq93EO-2TId_55J3GJ5gLAPKVEsHLJoI","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJMNU9EYmRQdmZmOU9RZWROYU5sVmtPUk94VlNCY01RUEtLN29PWnRZU3RZaXpFTi1sZzhNbTFSMHR5bmtZVWwxIiwieSI6IjhTYmc1WXJZbnljVzl1QVBZYndCYXNvTERnbXdFUk12Y0VnUHN6dmFPNTdIMUxLWF9hTmpnXzg3aGw5ZUNJcXkifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"r-Fr1h9QP-jkTQr_72bTxMEfZeL7loJSfuam2ifuR6nxkfWLsmPFvtuTPlNW2qpddP3b2vVl-MUFjzj5KSkM9FeTMlDzcYhrdWnsnPzpnKlR_dmqnQqtpH1mudHLjzBxOylL3TAao4RRZGFWhPSgplqjR-bkxI0TgMLi3UIjI_8xaTOE7OLfw-xf5a99oegPzodcKw2J1_Hbcg8XWwTXkNHdpVdm-p_OfZXsABYRKe8","iv":"vjiEqMMHjngniUPvbgBWDw","tag":"_wcGyo5Kgwu6Bx4gQtIC2B37br443LevIA6sveBG7_k","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJzenExTmtBN3MtanpfN3BmTENXMzgtR3hxcmRCc2drUHNVX0pheFBmanpwTmdoYkFCcGIxYzVJd0NDTG80VHRqIiwieSI6IlVxRlNtb2RDa3EtV1pqZzYxLXplQ21vMF9mb0tnQXItVzgzRlhYQWpONG9mQi1UUmt1d25HbFlVM3hEN2x6VGwifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"YaBX6UK6DiJHZEx0VcHIiiLIIsgotyKhBpcXzKc5mGx-adCb29Fvz1mHz6NEaR-MGs_Lbyr1_Iz63fAgH4MHbeLVhLNR986suo9t6kIXghe6jBHFuzwubEW41w3HwFXTGTQAdAP1VdDzrNp3YiwTO9sxugGNaO7QcxUCoogT60a3sNc1bMe16Hf3adrj58eWYZccnpTRnNWULfiu_fb_e_0vDfKjtek","iv":"ExgS-jAeC0B8cFoe","tag":"eD6oYHjnAgbQivjazEpR_w","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiI1VHVGcE9GaUtWb0czdWRKd3ZVM1JfM01OSVdhdWxJZm44ekg2a3l4MEhscWE2QktISjFxWHlVNlVlWm5hdzVtIiwieSI6IjJTX0tfYkttN0xtdHI5MG14V1YxNHNTaW1Nczh5WUtDdWNqZnZpZmc2Q1UybjBMMTQ5cG5aamx1MEdBSnM5akUifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"tsFjmeszfXnah0CPF2_2xAWHD_P8isIhVShnJ1AQ15IR4aTXB37l5nIo4kVXCLaNgR4N-CjR6pumn7NLNFzfgqQpbQeXFx8dqCMkbDlQBMAuPeu4AoxhVGaDqRsHM_k2H51WVayAjkFpgrItc6XEjIu2y4o8Hy0-_hD6c3-lK22U6ZRLg-10Cq-pDN1Nq6ZRxTZx3mvzWeRIrko8t-k9p4yKcJVmOpk","iv":"wD7u4GcP0EjHR_mm","tag":"I8g2nTz3UaLDqrLWsuN4pQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJ2V0dQOGJRRDVwdTZHTkxYWkpCNnlfN3hzQ1J0TjZCeDdDRU1DR1lRRWxuQTZUYjFXOUkzRklyak40eDFLZ3c4IiwieSI6ImVodWExdE05bzF5OHhXS3ljUU1sby0waVctell1bVBUYmxPbUlZaWxKVkVadDVpbGg4VU9FTDNZZjRrU1RxTFYifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"ZT1Nli-gjvAtYCmEWyMsuQ792N6Shse-YVEcKBdg5iJzK5Xjpt8ZfhGnLoeBcpYZIiFxmNbXvwJLnRrtzl_Yvt5KYVu4XAQY5CyMUfJi5i35j3SY0C9PT-TymiwOj_8fLmmookDbQpgWeQs3RcHCUCR3OpjSrlR3Xf3nVzhFMaC4MYOoS1TTL6Cq0bSxPRE74i_lvL6cR9sBgPIIUvW5I4EkmzgCokk","iv":"Pw4u5IW-j6TCPEpP","tag":"kndBhMtDYRX4rEp01ndQFQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJkZUJOazd4ZUN0R1ZtUk1RSDJSVUw2Q2twNXFCWS1OU2Q3Tjd0TjNPbmwzRGMwaXJvMm1faGVqUG1KUGJyYkNkIiwieSI6Iks2S0RRMklwMENubTcwaGxkSnRMM2t5R0wzdGgtUjFYOTdQNVFVS3VnWlkwMnZ2QUpvbGE4Q1FZQ1AtTHlEYUUifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"VP3msKx3uJKdWkeC6Cz5gM2thvDzSyGyccTgQbxHemaO6Egq8afzTnoj841yY5EczIRfBT9QsSlhu7nWFUY5i8RXHhIgAQHaBPv7sutT6_ISDRWdxgpd27tTMP5bzsPsAyX2jvtQx4gCvte1BI-RR19qCQRiRanq3JvbStpgYYRSzo5b4BhP5ik1WJy_b2_NK2mAXXtYo0WgBqjBDXm7t46euLxScMBhwRtuUWddGis","iv":"qfyMAIJhyeROiM_u5DBLHQ","tag":"CVs13nkHgx1IJ67NvcAYJw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBU3VpVEtOSzVsejZQcnBoWFlhNDdWcXZtT0RDbk84clRQUUU5aExkM19TRm5RQ2JoU1Rua3NYZktYb0RaZ2lTa3hqWkpXOGh4Q0VNVkFkWDlnUzl2M0x5IiwieSI6IkFPWXJEZ082VGFwQ2hzc0c4NFJEWXNGejVzT1NBR056MURsLWtHQnFSRVUwNkZYbkVkYUVxSF9vOXdkUkxmY01QZWxkaEpGR3ZnT0k1bGowU0p0OUZ4aXkifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"JzSiCguosSsOArvPlmaLyZIfOfPIKjwU4bhHmkMtRmgFk2Go4spQT1WF9vHXBVZSf6itljYZAHSMrERLAjNwovX69anddc3eaZSNvgvKb1oH_bcHb-uDLVIcktEVqIopajbBaDOU57tQEWSuHN88odCJTjolchcwqSYmXtPjS6J1nOxy7ulapbWgMGqFMqiZtX0Iq6YcyzJVimvOvshERVy6Y3BwYAaLARrOugWSB2E","iv":"BM1ts9JitMS3izCW0YJy1Q","tag":"mcfyHYGEuiynDfnod-yHU8Uoe_SrSaHf","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBUU9pdklxVi0ycnU3MDNaYVRxTEpMQlRwVUVKdWhQMXhPaGNlOWdOS2lkLVJ5LUtEY1JCNVZkR3c0TE4xNHlNOGVHcmZUN2NqVXFVWlBaMkJqMUpSQVczIiwieSI6IkFXRGxrcHRXNWl0Q3h6MEEtbmN1SmpFWDhoWlUxUElwQ3RJWkRobDBYVThUMFVqeEFsdzUwRGx3TlRtUzdUcmM0dEtRdjd0cTRPNVFHdFdOWW96eHJxbE0ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"BriyWYaD3yOINglVHQmdOaveAUZYHU5zS46aTYvLA1pzP0-S5r_MBF3qgZOH9iLEdl8KgTCOolKBDjLXOG5YsL9KqMTHAmTBTxvIhIx-O57KBvl12MsGxb65TU6IX2bLVkc8Zg7A8-m6A2v2zb_DsfVZ1chxW7fsTKl218R6_0TTwtP_7T-4ctlc81vEZqOLquTpaieWoG-ASOehfB3CN4J7Dp_sJ-okeqNArmWq3tE","iv":"Ly3eUiXkIGMok1n4SjSfOg","tag":"RDj7osy5t7NREXO0I5eULOP5So1s_A3X2dbQHws9Qtk","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBYTQzUDdEblhyS2Fwc2hZNmZMWTJXbV9ScHRqUVc1MklpT20tb0VDV080elZtSVV1ZGtNeE4zSV9IY0psbThmR1hFeEp3NUx4MHp4V2lDZm9sRG05eGVmIiwieSI6IkFmSUNkY0dqTlEtdmZDUXl2M1k4bG1kckhVV1hZQjdoaU9rQUp4UUVlYVpJNjJuZnpMeHdBcUg1VnhIQTFNTHhYSWhJb3J4TkV5Y2RPRmo0aGZCbXhRT0EifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"UbVIUUAKozSZNbzQd6PCP7WK6o_sE2bo30UYWdyn1YDw1_trpfmaI3w-YnlyOiGwPr-zC_vmZ454W_Ryn0AGXKXqiTaekS53WbG8Th8wDlwS14AQultrF9qk9OnOvkTrOJP_O5iQD2TcqRGKTayVuDCmqdoQuy75peY-9l0aFhEEvt11DaDxCPjghE2oeL7tJZeOkWJklW3C4fXhzO1JApC88yeNNGM","iv":"eQprJb7oLn_UofHS","tag":"nn2X8aNEZi4tyhFMa1wxfQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBWTBLc0JobmlJcmRzZUZNMWtYcTh4bmdyNFhkbEphZHNxTF96SjI2TUc2VWY2STFlbkhOTDN0R3ZrU3Bqa2Q4Sm1HR1pZR2pfQXI2cnd0V28tS2FVRmd2IiwieSI6IkFWN19fUzJqLXQ1TE9ndHRnNEtlLXQ0SlpaUVMzb1llak51anRYSTJLU2pGVXBhUkdGRUNxUmh6TlBoMnVpU1Jya3kwMEx4X18tSWNSS3htclhTVndaR0IifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"kbNXtTo5NBpqdJB5eF4gq2wYrVfytSoq7fRsbZ8jCwMeHc3WwM3HsrHPwQk5FfQRPLlTkNsMausVpV28n-aYHevMXL4RI-8_IbuMgXVtJGY2aJ-9KhuEAV3O8Wr1Pcrc_2QF7GRQph0X3dVoQduPpiOqzclcKQqmWjKNx7LWMtUoAkKjMxLaMPkFGm0APFqaDyNomQp4Xtzw9r3PW88PSrne4LMGDYY","iv":"O5M7KXZc2lUSaMXz","tag":"z0BQpTdE94FETudknErpLQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBV0hfSFd2SDNXanIwOGx5OG5MRzlpUXlwb1JsVDNZS2JBc1h0YXdKcE5UYlhjVWJKOWpmYXlieWVRYzJmeWJYUEhCNF9CVnBodU1nQTBzSFBrandESFd6IiwieSI6IkFBSDJhaTZJdkdNYXRNTFZNa1RMSlplQTJuZC1rZm5Ydk93Yi10Q0pwMzRsVGozdlZYVmhMZWNqRTM5M2NrYTczWGQwYXh0VWpqdFRiR1ZacmJ6dkswd1YifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"Va0dxUmDCHgUIILlr7ynQgIx7sejkmPc4C5KtTBx8mSPsOh0RHKuSpG_Kl0_T4xG7_kB6V1L0sr_3GZ1VQyOk55gzt5VuhJbaJGur8le_0tzxzxdunUPut2Dg28qCk4x0EIftxaqRojhne5okleBx9AJdbeAALVpiPnNU5AmThU3648Go9LnrcPDUS__pNxI7Jmoo3o6CtW8nCy-EZI-bBi9nx2sr1E","iv":"T_Wkl0uQ6EILdiGo","tag":"niqwhxpUw5T8nqXIIvkwag","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVU5tRDJFbDZ6X3B6aFNhTE5qcDVuNUJtNDJDSDl0b0JiTmFCWko3eHJCUm15bFlWUmpfcHU4VVlfeTlsQ0Q5U19wWDFlRllwLTFaY1NYc09XSjBWM2FPIiwieSI6IkFSeDh5WkNmTHgxN2U0ZHAydS1mNmJ0eXg2eFZkY1l1Y0o5a1R6YU5RRGpEZ3NDNFc4cGN4UmlQeUduWnN2bHNSeG5aNXRLb3VSUldqWXpQaEZ1WnJ3TFMifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"lpybkrid_-PJmz9mbc7tN0ILbiN7O_5p69Py8v7zdZ7eWsMpARzVsZDh4cS3Pr6PEo644h9cdonDZT3X-E5C_pLiquR44wti9djlZkz_DVuC8V2owUuY7J3KtNsJ0wgAzw4IKB52XAvZ_k8B8DkO_HizPh9GOlLvfiq0JZavLxUlDUa4liMM87d4Ab09A9syExrb2AF73f2h9Fh6t5zaoEut5qiwLKapaRNg_qm5zy4","iv":"Jf-mYDmKK3ted8lok_GIGw","tag":"DT90e1pDUOnMevNQA1CMDA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IkRpMmFYalpMTDBvb2lJSW9uODVsOVh4WmJRQ2FHbVdLVlU4azJIeXRYR00ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"XMtu-ILvqQAw34cvWxFAjcla3BPp_b_V6I_4WG-htpcMpwgu-gG-LVrb_82b8PF52DhH6Ddb6LTXvgLo61Fmu3NnE9JKuxK9x3rKS1FwMaRjfLOHQxDjWfvc6sBhtCkXptcyb6PGu7Cf_Gqefc6EUtuv1mg8oFRcHHyh3oKwodfejhKv498BBOapYpMbShvJ_vFm_-POK166Ar6lXkT2J2v_hcLgvEqdg9cblhbq6fY","iv":"0-53nsstdwvjKg-2AiQ39w","tag":"5B6nXRG3VcnQ77uooFvuu6hbKkYW7buD","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlBqTXhyNHpfcWp3NXJjQmFWMTBlS1MtWWJFLTBVQWVrYjNDWkpfOVptbncifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"frDISfZ73cpq6Dr3fZrV30NFvVhpIg4BqW6sBHiGqKi69vsLyXKGvtrl1VHK27_6PO3xmApdLPfHITEFuwmyggOX4_bSVgArkWgpgXlUJzwbDgbCsJKf7FuVXK5O1wy4_I_JYSiO0J1YUONjUrt6Ex343Ibq3vDB2KiHeemoGRKLhoM6ejdyY_YPeHKr7fOopYviZGPPh2bt8dEXe8lNpAJVDh8cgGIkVvDrmjzDk6I","iv":"xzKxcIuy56ORbMN21dVk2g","tag":"Y_OPobOVDz_lIwDoMqsXcosVQFCvCfMSmWCpY3W7nN8","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6Il96QzJ3QTUyYmZtTFllTUlObUc0NWVYRkJhWndpV3c2bWk1dm05NmM3WHcifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"_5muNolwL4qVUB_a2Sc5jxJXDyLOoiXUWKGshvhtK9pnEEvlHKUirPuFV5hAd4x8nw4zt3vrh7ELEUBeMQ_z252svnMVrStFWg7Bg5qbI6h63IEM4o9XlnyXcwoYcm967H-3-UZ8j66Y2R9ztc2pRR2zs2pO0pNhJP78VjWL6j2tyRu3Qr3Ifxf3Y69tzDCZXzUs6y1KEsmay4X75OrUZbFrs7Kbg6Q","iv":"Ifn2b8VX6mfBEdmd","tag":"N60_66GG2jMw9NBYHIGaGw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IldVeHQwUGFUMmkzalp2Vkx2MHNac2ZOYkg1cnpPVGFnYmU3V2JpV0Z6bGMifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"IUmY2ePgZiNynhrTxcNbDJtNBL59UEJ2ocggcuXrLF0ucFNORX0CVOO1GN28Ymre9C8SRQkMB1fLel7i33Zi03QT_znEguRo0Ytx2QpCWItxjqzbCuOd9506xSQjA09-ydriciNFHgbnxFMm91W-5ETNg-gNMCNBLg2fYNVjUFLXPSUe-yfcGViFTUcCJzPwnw60GhOTbxI5VkQPZicZM_u_hTVOWhk","iv":"YqKvjace4bjVQjjc","tag":"uhBYYEQ3SuIAFMzjhmT7Mg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6ImZya2RpdmdKZUFacHB5MGdSME9lcjM4ZXZ3TDVjbENmaXJxRXFDcFR5VFUifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"QbcGBRt2ARS1K3k4A1mktK4ks4WYuoga06gHjGMvEIesam5sFMOS8bqgSI4rOa_a_TLkSNCHlSOXFy2gs_zaXg3YEgwTWNdtH1B47D3Wc8DRTygbwdTAsnGMB1aVnvj2qb2OvSRCk4uMg-oD8WvFkTgp0iyxYw97IKyhH8FU6PjzKwiYGAUTCNcia6iyAzTFStlicyH7VvhLzXInS49X4EzlptNjtS0","iv":"O3HOMyDYmyFi9-L1","tag":"dODnhRWtPxEBE_PtBZrENg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IndsYnVwRzJuaUpxOTR2U0pCaWt5RXl5NXoyRzNhcDhBWHJjWVdOdFgxZ28ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"ACg_nLboBecsud2uTRPZE9lhnGFXdNwdWzykX50dXKU2UBc68T1XSS_YsqGH_XuEKheWa-gwgMxbLsvBpbnelkm84UiavaefBlKGDjTZZZfzJmEE0UdWzSsfJ6DZQ66qk-denN-K_Va46Om7Pkv5Z2CNpIF7miAHeCCHnF2z4O7D6IRrw5pQUUnvHzrUz72lKPZDYj8JlOYENjFblP32cKl011ve1Cwk-pgAhoJ0FBE","iv":"aF28SnQOmrc-gEdIlTewWw","tag":"wTECGcrV42tlC7RON78stg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ4MEJvVHhfXzJITnhRQVd2UDNBa1A5TDRFeHA1ZlJzdy10RjlfdEZMTk5RIiwieSI6IlNDREpNYXlJRlBrdW5URkIzV1FvQWZYbEc5MFN2ZkUxN1U4TkxMWTFib2sifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"wzktIqgfTWJk5-6h9pt9_djnVmt9XL4Zf1kX84xg14_EmES9peZgu1dBq0omUfTP10QgXPPvHEwhzJn6tcLPEpmgvH4UenDvPul6ZoQemLxQKojERrJROD9FTRITKCKe1K0jrRAkKXlzeYs0et6Ju_rHtUHq3I97hmT6mQkwkeJFXQ-qkBaItRLVbXBq5Ph3TTYjDubOBoCHWAKZ-pPiJ-4f6Whx7fDDVsV_hXdooJc","iv":"bDZvQ89OmNYHEREWyBYPZw","tag":"k5NO-VRlL8MaijOD_C8jHSB9dq_0L3Wk","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJrdkNVbHF5aGY1YTM1N3YyN1ZwV1l3Y1RsdTdvLUtQUEt0QXBQN0ZLc0wwIiwieSI6IkxwdDlRalZwcW9JUEJzUFJQY1VCb0o0OFExR050cXg5QWxRM0ZoZHhIMGsifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"d1au1N8eU8qMQ4D93HYnb5-cFtqyIdrJXV2OdaJCcA65s2g2rEM1k261lnnbJ-C_OgK60oQQxTc70d_YOXZOMsBDmraDmpjr2AODtwohSSe9e35QpyD0S2TT-FL64CiSk0TodtitlQ00UTCs0vHSDy7gesHvwG5cmiXKBr0_2ybW2LnOwpJZZpZGTIX5cuocfVVecoN_cS5G6RIVTEsT6YS0WAnVUAiWsifdvuJp1tg","iv":"XloO4Wm_70slo5FVj-lHUQ","tag":"LBuBOaorE7-XSFf0ed-s7cugHaNbtrsOmFCXa8lsZLM","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJvSmZobld0SjRGOGxCUENic1p5cGRWbjZUZERxUEZZX2dlWXdpQmxLZlRBIiwieSI6IjB5ckFhRXlnQkNhYW80bE51eEgtVUtXZUJuODVNNmEyTXdsTnhJQVpleEkifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"vnoovMxbZ_Ie878pnkzg1MftrJOyKxlj53qwxtCdUduyQVx1IYZTcpmC3bqqLm3Tm4A1VPi3U1uFp8X_tHUNW_AkIlCQvtlISjUmlq2VZqvQodynYzcLE_bEf49b0gky39Jk-U7uq51pZdkCn_Dnm-2k8xQKtnrkISsl96JjTw69D_pGBR0DdQFcEfJO1HpUsUQlOOX8fsdW2DURmNsvEAtSBn0faCg","iv":"NstpkansL9xPOrad","tag":"cXTsEsWSV2Ipy1EGVzfcow","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ1V2NLajVDdl9vdzZZTWlMdVlfLUNWMFJxeGhSZDdLQ3FWMC1LNmtwYlk0IiwieSI6IlItMlF0U1FxUWpSOEpYT0NYa1hkSnROM0VycHpDNjJEbVhoREl3b3dkWXMifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"FR74oS4SHGmbgi2qb-DNgQ5i37g2JZlVy47AR40MoGfoVGgrcL0i_7sDlWBeC8RWCVCkBMBNUR7-fkp8rwNvwC9DN1E8GoiFVtmi5D-wYXVwMksx8oeFGT0FeDRKHDa2ZDUzcVttDSmU0xiYi_2wjkW6q1CozlZGB_1Mu9xEogd3e749LJx4FNm22EGI7JM4ioyKCxNQfBDMxt6XXFqtEaQFIUY4Y2g","iv":"KAJVHEqL0ZafC7Nf","tag":"_XkJWzjIqfW3AVlvl7fHww","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ3d3RUUXN6MlFMX2t3aURIMkRVMXhzQ09lT19haFlvZU41NFhZa0xibXlvIiwieSI6Ik5CZ0RFV2syZTJlaGNramZXVnl5V3hCYy1fVk9zWVpadHJlZlhibTZGU1kifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"1gjDAJA1A9K3IJ_nQZiZCND1kP94iTELtYwti-qX893MS7ggBYrlrCNqotCvwKgmn_CMRcWd9y04U2IMQnL-R2juVIkEC3vZvfOH9c_UTLxjKN-CPyRj9frk7uP2EyQWNet9rjPsMoO25cmorlwtSwusQ5AIuZRXhRjtE26W1O1wbBK5CBg0ybf4B37N50beFRo_DzcBiUQsvJJLJyo_ehDVxgjW4gg","iv":"h5m9rU_ULBMdfb45","tag":"LgYeq5xlP3TMXMG5PduO6A","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJ6TlhNU0RIdktSdmRkNzRvdHFHRzRwU1RPV09MR1RkVWlESTY1bXJWcHkwIiwieSI6InNCaTJSbXdHQmhjTC1IaS1PZVF1WWFCYndYLTlTaDV4ZXhGM2htaEtWbGMifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"IxQQfxuR1TZ6ntuADjsnvtgZTL3yIHobBImiIhM2OXkh0yoM1MZXwSC_c1UlJdf6cGdacPIgmcJlsZdAbsi7WzZ5JxZQOL-pjAeab5t_L_4e2Lqtu10l812w_yXQ-szKc2meyj3o928lg9AwyNi48GVXCCGAuGZUBfAbXCp0ORC9UP4Q0pVIAo7XhWCVvxk8Vl2XR7kPVofEwr2mvMJ8OoCAmYAIKfnw3AfkkIzyLCw","iv":"r9WX61qWE40c5oqAu9b7Sg","tag":"vo65keQh_Q_ID8O4y0zINQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJiRGlIR0JRMmNmWGQzTm5ua1ZQcVdtYXpHUHJVcWwzVGRMYXNDcDJVQUhwMXVlUWtxU2xpdjhSUnIxQ0U3SjZBIiwieSI6IlBzU0p2ekJCRDRPUU1qLWFXMHZaalBySFlwU1NhYnZMWGtaUmxZSXA4Mm11cTFZaUg0OE1ha3MwTXNvSnk5UGEifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"m50AsW6xfm1_u5fGHbPRg6Im8bpWA-uNjl6sek90seFgGuV21HQssW4n6ksAFH-1CGloNngHxQUAO6nYgAPuGJpGJyYARLEjIZhP6RYcW2wk8TVK-8MHQ3o07Uhui_jb6vVvwX8NHWNlZQDupeEfS19GEzE6s---C4IA_U8BP9Vd_UVjgtE9TyOCPntIuUr0frJTDAEffesDvPQEgtUNtMr4M-uhb0G0M7BkaIvgSJU","iv":"C4923TvD5M_TIie45JPBHA","tag":"HoMhtMrjJ5GDsMLGjo_WUryqilRnRsLA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJNbEZVdWVEWmYxZlFma2I0ZFUwdFQ0eGlOdHVlbDAtQ1htdVE5VktOVjh1S3NaS19ORmFuRjlSODYwYUptS3dGIiwieSI6IlNMRUZCX0FnMjhhWWRwaUJ4SlU4NzBYaVRkXy1DeURRNTVZTWluZWhBd2FpNGJNWFlqMUdHMmd5ai1EQ0h6TFYifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"_7FRQBjsuN4kY2iOBO4ObmO5AlMoCzSsNXPJsdryxgjTpPLR84xN2oYoU4g_oPAssTFzUJh8yXp-Fx-AH0mnf5lVP_NIexF_NHLrFar35F9d94PJBkwiv7CtNefXeuO_XsMjZn7TWB0Qhw_oX52JWVsybS23M3zSM8iSVrYCDUgLdivrc4x5-BCMBgUmHz_Efee-iFjnPRUGPg-oqwYZ9RzmVdMjV9-zbyfWGs9T2bM","iv":"gCKV_Z0VgExxHOfkxNJ5dg","tag":"ALFmpaym_S7k4eGPfUpJGm9GG-JbH_N9xOd_JJ_RpRk","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiItakhrN2FtbTI5OXExdHd1UVJaS0JnbWU1Ny1Td2lJdjVQZWNta2VHOWVNMi0wb0NkWExHWDRXUnFLQUttNXQxIiwieSI6IlNkeXl4MWVjZThpY01FT0pNZ2ljMjhrMWdzUjkzQmJJa281UFptSFN0ajRqbHZPYVFZYlJNVm9vSFotYVA4M1MifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"eajyqCw1RJ8ev7RuWyhaqaRIJg72QibdSryd36CMxhhOUB2fIzGX9gZ8hHp_D7Pd7tRHFGt4ydavddqGaaCBjaMizHFdcZxMJQ6t_57BFFTTn3t_Vh08HVyE5caBariXMKb-0YGBwh8shLrBHEYTYE_LMbEJI-sBWePbtCbXb6n8ObzI7hVNq5Brq7ZmKBrGVZGPp1w64bJzGNPol9IRY_sBekHMmcw","iv":"-4w0zo1ACWTWK_lw","tag":"OPBIsx9UaSjxE2mrPlb88g","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJ6T1NOcE1EOE9aMkR3YWVFamFDTFFCNXZ5NlFWaklGYmNmbE0wOXMwRmZqRlduQUpwNFk3ckVPWl9CYkszVlAzIiwieSI6Ii03SEt0Um5kNlN5LVd6c01KVHBNSzltSU5adFVSSE82dmZKV1N5MWR0NWdPWWVqZmxKLXgxcWE1dE13SUVER2EifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"SRBspbq8aCKsLjyb4ZwkU7bNf5387pvKDJt95MonIP2IVsI_yLQyn9RC0cOe_INnF9kfaE2nPyjYX7d4D4i70kdxOkmWK9UBWMyXUOHuyolWPJ8zooTbV6TgN-of21Xty_S2d_fxpQmrpwrrNfTFW2NRxiiRZeeIUVzuQD5CVqMEut1H0WgRGbUsKKMFEAhSMSfY3sGeZGsbAfRjneGJrEiA6A9FZWw","iv":"KgtjGk7lEaJVhvXe","tag":"1TtHcxNEG1Ie12vHEHxikw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiIzLVJ2QmdsQWhta211QjNaNUk0NHMxQ0stY25hX1YzaUFlWlgwUVhBZWoxVF9XN2Y5RDFsNXZMcmlJUWJTMl9KIiwieSI6InhJRTJORHQzNW1VN0QyVzhQUHA5SHlrVVJRWnN2NEJOVHBCamRidVZ5TzJWYWxjdlFmQkg0ZjJla2hQb3hvRW4ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"uRubb-NLklXJ9LeTeT7SbOUBj8iWksOohM0EAbxFSP7U7Q--SSNzp4kJxjTDweT1njB7soMNEPPIKHe3Je7e6JofQVhG17SmNKOo3VKvDCYRB8B_Ky2o4y5ZKpm8RzgvnfWLXRMu6497m_jNaQifaiWCCVsTedJiBT8F71gE_HYCQ-0mpAnbNwGwrQHCbNjXf2xjUbHWROF2hVASIjHCon_vXQPb0BI","iv":"K2PUZUoPd4v5gajx","tag":"IP9kcdZ7PWVaIJwTYDub4g","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC0zODQiLCJrdHkiOiJFQyIsIngiOiJOZndiVF9BcnVzRk1pNkdKWkFiR0dHQXlPZ2ZkQVNaaDg4RXNEMkJReEFKRy1xOGFEcHAtc1NOYTViRy1kMDhBIiwieSI6Imwzei11b1daUzhzT1Y3SHZiVkZwTDF5VnhPY0duYkhiWEMyVlBHUVV6aV82VEpPLXdYT0dKcHlPaFJTVmdfSmYifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"evFbDMHEqVePkdpNlexRjAyX5mf0RCjYH2SfEI5BrW1Qz09z5T8OvsQDdy2UDvoDKnJQXZNAyEicA-N1QMjsAeMD6xRZ7WcPb4jbGWsnk5Da2xYdVvKOlqa35D7s2eQsmxFI8nzPydT0V9I-M6J-sljp6kIbQYhkRzlF-1Yj3P0pD6ExNOEJiqqneei0CpxiUMDo_mH3Yqxv4aLevfhOLSGfL_RNlA41wvL7pqvmpnU","iv":"0gChfHukWucTP9jDU2sOHA","tag":"jytdfKao99CTm-QxlgUADg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVHNOSWdJNFgzLVk2dXNBT2tRTHhjemtTX2k5amtWQnhiRHBmQlVzMEl1QjJpR1BwNWZkUFl5RHh4Y0QxMHhXdXZpVFF4TW1GODExS2NTaXNlUVlGX2dWIiwieSI6IkFHT1ltc0ZRY0UwOVFZYTZxQWFNbVh4bS1BRGMwcTVPSHk0aUdnNUppVTZ6UHRrQUFyQlVoaGNvR2pfUm85OUloTEJqbEVtc0J3amtsUzZPLWdaYkk4X3AifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"sQGLMdFoGIU6hBqLqd5mScIvv7JL5YOVX_a2fPdk1nSMhT6Qzp16Gfc_hCUAUCjrhgMOXYt6ENH0efgCR9WTOp6OI2PUJY-cF425yW7w2uQ7cng86FzqEr6gx0JOhSMED3BJ2lwUNJ1hX3XyZi9zm7SeMYxibbEtrioFzvr5QriESsSw9O46_pJg_JmrUywJECJtmGhve-4xjhbX3J3WfFvQIB69S8t5N9FynjZ_Cx8","iv":"E3J-49EPWe3yG_S5uXXDpA","tag":"wO0cMmpjutiE5QMvJl-jj-GqGld0otfg","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBV0JWR05GdzBYR1RaVEhyYlpTNFJrOTZlLW52M25WVTdzLWwxY1lJeXJmVi1sZXpvc2h6bF9SN1M3ejg5ajhxWVFhY25kOGN0V3F1d2F4aW1zZHlBYzRyIiwieSI6IkFFRzcxWWVweWMwZlNtZVo2VGxGaTNENUVnMVBYdWg5SnZ5ZXJVOEVZMkt3Wkx4Y25ydG1rQng1ZllRNlVkcGRTbDJESjkwNFhnMWhoMVRPY2tSTTFhV1MifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"SQBbU-lyu_CtmFf7pHYukUfAEo8T-ck2WslHQ62APpJ480LuM9yZwzPlwTHG1uvQextL4cbFj9vvyLMeh3wYLj5AEhUHEVrpdvtlRi1rbEFqQiZUEooEPN2qJoxH2mWtn8nh2DjsuWpod8UDee-8hOrW3xc-qHcZvcSrmehZmpVWbBLEiylEAineyRPYYwTMvlLA3PcHqXARPO-41K8xUzrrXJI7xBiNLmOQlYA1z6s","iv":"jw_8tRsVnCFVKGS9IIzG4g","tag":"OcFTJXfkTicHumLC50Gmb63D8nDqwanhIOxH6fMLKNc","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBT1hpa3dFRTZ6Q3JBaEc1aU9tLXV6c0hmZjBHTnhxOXdWVTFFbWtobEh1OG04Zm5wRTlRS2hfdEc1cHhRMkR2N0ZCemFkR3RzajJESXlzT0wyMUdKNXNYIiwieSI6IkFhd0FZcjV0UzVLQ2NfSXJfLS1qN3ZjeDRFVzJpeTVRWVV1b1FQUlJvRmpGREFqT0twX3ZaLWhYTnFHbnlqREQ1VnV1QzlrdDNPVUJjVHNZeTVfallESkgifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"MReNRX6Nce0_UQYaLxDa4AR2b-db9_FMVUXD73qAvENn-oXx4jJog4X76oVfl1-nqta5RBWg5mCT04TMRG7QtGxCEgpsS0w5ELKTJughVn9XHuPx3XXrjgSbiZZgYr69wx2hS7qnxTgdmVH1xo1Cpp-SH_9aE5CT9PwROcJOYkg5GhUTkKmDHXb1jdPMlrUzLxTaVl9Ric-YpGxcNy84Llgm6JA2FhA","iv":"uTLsVACz4yoGmTC3","tag":"igbfFg0uysWev5Uk5qm5lw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBT0luVjk4a2tjUW9sTUVWTk5wQlhQUkUzdXkyZm00ZzZKU1RKMnJYSFpYMnlac0lic2lqLU1tNEpXNVlJeUpJY3kzRTdheFFuRENpeDZUMEpKdGhWMXNIIiwieSI6IkFDVFJaTkNxYllSeTgySTR2b1pubktVVV8yTEdyVXNUZjVIOGxCTDdSZ1NfNVJ0UEFqU3RQSjRraU41QUtneWkteDB3VXBEX2JXUllKa096SmdFeHB5clkifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"JrZd5PNga94b7YDyXyqNOrcPhEr2zEKyjC4e-iqdqcJw2zgjK_7zzw3e-MBVJ5JWRh8iepeveux8sMbZJoXB9v8R_72ykjadHXhXgwliPqcFA4wDg1NKGG99ZKnvPydlg2_0SAqxvX8C0aJVG25x4CdU2D2k4AWISgJMU1sgEk3buMGG3UuIYqwtOv6uhGsY0OMxMy4D-_02mR4V9NZDTHql9kXYESQ","iv":"b2W4yc1XDBs56hDP","tag":"VJD86DkO8ZEMsP4Xp3MJ-g","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBVmYxc1NWekVsZzNkNVJvMVJDdzI2by1hdi1kRjVVdENwQXJiMlJfVkRjZ1hCbWthakdOdTZnLXBDTHlBS04tVkc3dWJKNzd1WWxjSnNaS0tYa2l3aGhmIiwieSI6IkFLc1pheGQzOU92N3VMT1drU2tzYjZnRTY4c3NMRGpTekt1NGVhaWlZYUlpelhXNGFxUEM3TWl1LXg0bzcxOTlUV3J4MU10b2pRQ05SelZBcVJkTmhDT2IifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"QLLxRxkzsJIaVXT5fjX8Nq0qsXOB4hRcxu-91dDvVji3nruAlMYEeHEZOZIUqq0Y1AaJRJQmN2kDZL2mmdRuRcpzvHXI4pbwlLnZLtIqnAA77lEVMHXzWPYHvQ0kHWtnkr0-6Iq0TvVduJOZQUaTDhjWy7wIDN-bsZV6XIjcNRMgI7df6L3h5D5CrKR2DIPEiFKg-Ijl3lwcvgV7q1tMySQmiV5xRTw","iv":"vnVi5xfl5HFCclqT","tag":"eqT0exOdsEPeULmdG-wklw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiUC01MjEiLCJrdHkiOiJFQyIsIngiOiJBSzEtYk9DSVoxV2JFaFE0ODR2THRzLWliTGdNOU43eG0yUTBnLVpxMWkzcjhXdF8tdTZBenRCMzNWMjhRVjh0MGJ3TmZYZUE4cVZjZnJSR1hGNXZSeHRLIiwieSI6IkFQcFk0V3M0Y01UQU5GNURiTzRZN0QtSDZ0UjVOWnQ4aGR2bWsza1dHYlJKeXNpdkE4ZVk3aFFlV3BmbVdQQm9IQ0FUYTdUQmRhcHlqQS1VZ1lIMWRRVEcifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"cy6eI7vOAEC1PXvkVQcea1rl73JB_Se3busbGZ4PUy7VPVeIzYFcdHbe9qzqE2xwNigmja79m3DaduWyD5GDrywm0kUG3FVnNF5FkKsKzKBpdX5ubEDfXisfh4CGIu6ncESr7llGX5d4rCHd6If7NBvE9dsmonnOr28D6LpsrGFHS1vTs1mZW0IJ9ZIJJODO6l4nnTtpW4qw6WhIs5ZHVrTf18QtRdV0Zn2dqIlbjw4","iv":"JfjmVUk0rt5wgjxtJG9dcQ","tag":"dWe9-40TN3xItxfaVDJOvA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlFORWtJZmtMamozVjhxV1l6VFBob3c2T3dRY0JSb3RVb0RiX0RvTDYtVzQifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"o1AEWAYqwcfcK9gdrK9BJMc1-3sbbQsfmNbDRiFYPLM-ikkbhkkwvR5Jj-E_qwKhvix6D4nK6NMvO8h0Rjjg4taj1EPtvBOA-Ppl_tI023O-VOlOBVaaiPNTuRjeHdWnFnbZ2NOf7r9SUaXnKQlhboBqmzAlV_9iId04A2U52jV9YCe-QRC4PMiwiB7QaLOIWAp3pZDg_cdVqIOFegrHiZx2gcwhPTdCRl6xjF86YTQ","iv":"sgrJT1GnLW6GPZxQ2sE4fA","tag":"M4WVnIMxLAK3oVaqsVKZ4KqvgGObGAw9","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlJYWFZQNHoyS2RjR1Zfb1Nrc0c5emdKQVhLWlJTR1ZfSWl2NDZHRklDaG8ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJDQkMtSFMzODQifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"1b0hOYd2iw-p6_BEkP6bwkc-ghNzU-8c0oz9Lk9-ksIKn3_uO3jaiCSPpgzrIWdtwM2shJuiS2awtVsVqqap2kUBI_mLxMUkNu8vIdLVMDOG4JnGu8xQekzOyEJnh3t8iJqukVeHXBOHSahuOSJm1wT9I7c94qziBxWcBfUTnPhk2erZID51iUcgXXT6ccnX3bVhGh7MRAh7Ayub9N7vhIlET_drNv1-nDytpP1VHI8","iv":"XfKwJSAkFOMfbhIzok1ViQ","tag":"b_kD9-BadXRR7VVlArO2NbJ57JDk5q69d-6V9izO8pU","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6ImdLSHp0UW1IdzgwcE05MkhjMkxZVUtzN2RGU2hEWWtBRkhWZ21nU3JReE0ifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"XR-qBJ6l7-VNRgTzLsVkniRY7oDNd0r_ooUofbMqNDSXTHqcSQWhBayA88gfRybwITBuM2TcOClRQ1LPiGW8PceWgu-kXzRU3U0oUkhgwRdk19ZMbtBHkg-g8GX3VEr4rawUri4ofCFBL7dV9WshLolOY6R_L4IGXSGhpH7HPTht4It773TfAo2LPTFllfN0NYcRJD180VSAYtTEpK-BiwneRhHd6O0","iv":"T8_T58NnIjrQ3v0B","tag":"Xg2J1jQNHlpVGow6NWEopQ","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6InI1TXJlSmlFNDdLSkcydGdzTWI0LUkzajgtS3lLbzNMU3E3SHM0aFoyakEifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExMjhHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"fkavWJbNKcmu6HkbHjOyjAEylDh2EyLcJSLry-bHi8t2g31UZimNTW7aKPgGVN97T3_jJkOpSdOYoRWs9nparpNce0Fqd79LaGgB0a_XOeRZNRzkfXZkTr71r-o7XRC2xTNHdqMQEd8mWXeFmsZD9I_ZTjyF6FCW_ljWtccJ1VBPe4bvTdnuHCFNzHLcp334LJTxuc0sgwlTb4Mby8acJkS4LNt1S8o","iv":"-eYt0kU6UUhUZccg","tag":"P-PGnb40IoWdhX2VluueSw","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6IlVnLWlGcWdpWHJ4VmlCWGxaUEN6UXVydWR2T2U2LW1UaHd6YzJJVlZyMzQifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkExOTJHQ00ifQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"u42pqwl2jiwX6oRjilAdTjlE8-0I6WXXi5DxjdT3NjAG1F6tFhn0WHDRZZVmzLfA5JKciwW7_GhBFL8EqWksLDu84PWATcsJwS2PEp3P3B9QGkqgoNoRstExXpYHHpPoFsgBhyO7mxGJ-0RWdKLPf9Ck2Z6Hn8JoSVLbIa28FGTNj46rhYg5Aep8BxYJf9csTRfPQQ33ZgupifET9oamSF32HVq6gO4","iv":"0cIuo8Jv_Vv0kyiV","tag":"8lebqo_Vzy8Xf8OPiuNNVA","aad":"QSxCLEMsRA","protected":"eyJlcGsiOnsiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwieCI6ImpMR09HTUl6QmtRVzkxWElSV0VtM1pyV25WOEpqRExlZjFsRVBvRTBNa1kifSwiYWxnIjoiRUNESC1FUyIsImVuYyI6IkEyNTZHQ00ifQ"}',
+ ],
];
}
@@ -113,30 +218,32 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'crv' => 'P-256',
- 'kty' => 'EC',
- 'd' => '_gUgAjx9zU5BKlHq--TiCjZmsdNQAgrv536DCTUM2vo',
- 'x' => 'Kuh77MGkweIENgR_3WjzJ4gEF47yn6yQWAeeNqYC5qo',
- 'y' => '1koAqIfb5C2PkCT1GYEcW4IcIEdrgOdMcua6G0Eyhtc',
- ], [
- 'crv' => 'P-384',
- 'kty' => 'EC',
- 'd' => 'Fn_Le74znJfY33TkqCoskx1pkgA_1sLnKvfvM_78lTZT2zfj4XC6uY_L8iRknOii',
- 'x' => 'o5CqgE0jIlCVwGKMXDsQmkOgxohJcod4hv7jo4h7qeRoysAV0YPtokMgv7CUpSCG',
- 'y' => 'Z3ZGVhyv3T-MudQI5fYNmkO1BzqlHQJHCQ9RQzqa05QOsUZo39gjVC2EhRv1Z9kz',
- ], [
- 'crv' => 'P-521',
- 'kty' => 'EC',
- 'd' => 'ACebnk5N5RV4VFhrCmvp-5w6rsQJvHdvvBdJkIKmq3pDDreKC0vU-K2oYrQaX5vPuI1umnVw9qxFq6QCsShJ38Fh',
- 'x' => 'AR05Z1Xe74_lcrJbhKg12jijs5LPbLwcpHDGETssYKRgbO3-4l7egk_WtLjSeXmDvRfkww9kKpFdKHTqmDYSIzxf',
- 'y' => 'AL7NyrGpwcXqfvmQb4d7N6vO7REegUaFv8ea-_EXyA2eJciZJSmvipwpxRnoSfkNuJ5yJUGdjg_FtaddKaLdJEf_',
- ], [
- 'crv' => 'X25519',
- 'kty' => 'OKP',
- 'x' => 'LD7PfRPxq03bd0WJyf_1z-LQevmrbcYx7jJafep3gmk',
- 'd' => 'pSdgXFRYMvOa7giAm3Rrf5Mf8GnvLz7HtZKu_KN06KY',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'crv' => 'P-256',
+ 'kty' => 'EC',
+ 'd' => '_gUgAjx9zU5BKlHq--TiCjZmsdNQAgrv536DCTUM2vo',
+ 'x' => 'Kuh77MGkweIENgR_3WjzJ4gEF47yn6yQWAeeNqYC5qo',
+ 'y' => '1koAqIfb5C2PkCT1GYEcW4IcIEdrgOdMcua6G0Eyhtc',
+ ], [
+ 'crv' => 'P-384',
+ 'kty' => 'EC',
+ 'd' => 'Fn_Le74znJfY33TkqCoskx1pkgA_1sLnKvfvM_78lTZT2zfj4XC6uY_L8iRknOii',
+ 'x' => 'o5CqgE0jIlCVwGKMXDsQmkOgxohJcod4hv7jo4h7qeRoysAV0YPtokMgv7CUpSCG',
+ 'y' => 'Z3ZGVhyv3T-MudQI5fYNmkO1BzqlHQJHCQ9RQzqa05QOsUZo39gjVC2EhRv1Z9kz',
+ ], [
+ 'crv' => 'P-521',
+ 'kty' => 'EC',
+ 'd' => 'ACebnk5N5RV4VFhrCmvp-5w6rsQJvHdvvBdJkIKmq3pDDreKC0vU-K2oYrQaX5vPuI1umnVw9qxFq6QCsShJ38Fh',
+ 'x' => 'AR05Z1Xe74_lcrJbhKg12jijs5LPbLwcpHDGETssYKRgbO3-4l7egk_WtLjSeXmDvRfkww9kKpFdKHTqmDYSIzxf',
+ 'y' => 'AL7NyrGpwcXqfvmQb4d7N6vO7REegUaFv8ea-_EXyA2eJciZJSmvipwpxRnoSfkNuJ5yJUGdjg_FtaddKaLdJEf_',
+ ], [
+ 'crv' => 'X25519',
+ 'kty' => 'OKP',
+ 'x' => 'LD7PfRPxq03bd0WJyf_1z-LQevmrbcYx7jJafep3gmk',
+ 'd' => 'pSdgXFRYMvOa7giAm3Rrf5Mf8GnvLz7HtZKu_KN06KY',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/EncryptionBench.php b/performance/JWE/EncryptionBench.php
index 5208eaf7..ff1bcfce 100644
--- a/performance/JWE/EncryptionBench.php
+++ b/performance/JWE/EncryptionBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
use Jose\Component\Core\AlgorithmManager;
@@ -35,8 +26,11 @@
abstract class EncryptionBench
{
private $contentEncryptionAlgorithmsManager;
+
private $keyEncryptionAlgorithmsManager;
+
private $compressionMethodsManager;
+
private $serializerManager;
public function init()
@@ -68,9 +62,7 @@ public function init()
new ContentEncryption\A192GCM(),
new ContentEncryption\A256GCM(),
]);
- $this->compressionMethodsManager = new CompressionMethodManager([
- new Compression\Deflate(),
- ]);
+ $this->compressionMethodsManager = new CompressionMethodManager([new Compression\Deflate()]);
$this->serializerManager = new JWESerializerManager([
new CompactSerializer(),
new JSONFlattenedSerializer(),
diff --git a/performance/JWE/PBES2HS256A128KWBench.php b/performance/JWE/PBES2HS256A128KWBench.php
index a021179d..855e0753 100644
--- a/performance/JWE/PBES2HS256A128KWBench.php
+++ b/performance/JWE/PBES2HS256A128KWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS256+A128KW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS256+A128KW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS256+A128KW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS256+A128KW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS256+A128KW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS256+A128KW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS256+A128KW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS256+A128KW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS256+A128KW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS256+A128KW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS256+A128KW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS256+A128KW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,7 +67,9 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"zDsBLNwrRjNHCEfiQ9exd62CC3ZF4XIXpW2pcVfME_ckTbCfrdCkMdhRLD6WZ0Ai-s2PF0esh536u56pJEWJkF5WKnCPCb4AowGleEBlh8yiR2i9KCLzIPUpyf3AH-ffKwIwEgYO33oGOJ55KBR6eYuFePhzxErgTTC4JA9KNxbRvoL-9TSqhOhYwYuMs9DoNmNTHPbh7AZiZyF-ZrZSZ7fEp4rMK8Y","iv":"B8c5oGxoX8I-7yKk","tag":"sh-wabbT17__NQqafuIKtQ","aad":"QSxCLEMsRA","protected":"eyJwMnMiOiJ2bG95RkN0MmhVc1hpQllDQVJlWGhHcjNYM3BOLWpldFFzVEFHc0doLUVBTThzbGFZMDNIUVNHQXVkaXFRV09pQndJSFdyTDdMcEFPMS1PQ0ttMEJEdyIsInAyYyI6NDA5NiwiYWxnIjoiUEJFUzItSFMyNTYrQTEyOEtXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"NYmhb9gVwG1AxG68L_jU4CuiuV7Z0UEg8vTpd0HVtkxCrF-oVzPmoQ"}'],
+ [
+ 'input' => '{"ciphertext":"zDsBLNwrRjNHCEfiQ9exd62CC3ZF4XIXpW2pcVfME_ckTbCfrdCkMdhRLD6WZ0Ai-s2PF0esh536u56pJEWJkF5WKnCPCb4AowGleEBlh8yiR2i9KCLzIPUpyf3AH-ffKwIwEgYO33oGOJ55KBR6eYuFePhzxErgTTC4JA9KNxbRvoL-9TSqhOhYwYuMs9DoNmNTHPbh7AZiZyF-ZrZSZ7fEp4rMK8Y","iv":"B8c5oGxoX8I-7yKk","tag":"sh-wabbT17__NQqafuIKtQ","aad":"QSxCLEMsRA","protected":"eyJwMnMiOiJ2bG95RkN0MmhVc1hpQllDQVJlWGhHcjNYM3BOLWpldFFzVEFHc0doLUVBTThzbGFZMDNIUVNHQXVkaXFRV09pQndJSFdyTDdMcEFPMS1PQ0ttMEJEdyIsInAyYyI6NDA5NiwiYWxnIjoiUEJFUzItSFMyNTYrQTEyOEtXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"NYmhb9gVwG1AxG68L_jU4CuiuV7Z0UEg8vTpd0HVtkxCrF-oVzPmoQ"}',
+ ],
];
}
@@ -66,10 +77,12 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'oct',
- 'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'oct',
+ 'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/PBES2HS384A192KWBench.php b/performance/JWE/PBES2HS384A192KWBench.php
index 386bed26..6395bef0 100644
--- a/performance/JWE/PBES2HS384A192KWBench.php
+++ b/performance/JWE/PBES2HS384A192KWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS384+A192KW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS384+A192KW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS384+A192KW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS384+A192KW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS384+A192KW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS384+A192KW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS384+A192KW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS384+A192KW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS384+A192KW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS384+A192KW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS384+A192KW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS384+A192KW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,7 +67,9 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"eG8lMbMf784k-Vxb9Da6jci9O6GxT2aH88RhoKkmTslRrlsP6VCPTeQVj7-J0SPfuRYid9tFIft2taBGUKcCVO_Sx7hsQUUu0dvwo1L5F5biOzg0l1EdsSgiDBYAG5-vgHTq2_1SOeqtJ-m9Yk1LV_-SwFEnHd8il02bWq20l7LazfVy4pU1NCdS3Y2qwYET7RZeNetxR09LKf4XNY5GLy-vtDzou3w","iv":"3I-Tv6gEXNbjB48h","tag":"RwNOwY8c_cTHmwyIBckSUQ","aad":"QSxCLEMsRA","protected":"eyJwMnMiOiJaZThzQnUzdnd6Y0ZmVlJXOXhXSVdKN2tGYWxvSS1OUFZZUW85NW9kemF0VFAwRzN0RkVZVGVWVWFqelJzV2xXTGoyWmJXWnpHV2pOQzBsVDRQMVdJdyIsInAyYyI6NDA5NiwiYWxnIjoiUEJFUzItSFMzODQrQTE5MktXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"eGor6-Vqm9qVKpYHTmkZtQuUFeYSdkMmM9nx8_pq_dtm4NVlaXfaZg"}'],
+ [
+ 'input' => '{"ciphertext":"eG8lMbMf784k-Vxb9Da6jci9O6GxT2aH88RhoKkmTslRrlsP6VCPTeQVj7-J0SPfuRYid9tFIft2taBGUKcCVO_Sx7hsQUUu0dvwo1L5F5biOzg0l1EdsSgiDBYAG5-vgHTq2_1SOeqtJ-m9Yk1LV_-SwFEnHd8il02bWq20l7LazfVy4pU1NCdS3Y2qwYET7RZeNetxR09LKf4XNY5GLy-vtDzou3w","iv":"3I-Tv6gEXNbjB48h","tag":"RwNOwY8c_cTHmwyIBckSUQ","aad":"QSxCLEMsRA","protected":"eyJwMnMiOiJaZThzQnUzdnd6Y0ZmVlJXOXhXSVdKN2tGYWxvSS1OUFZZUW85NW9kemF0VFAwRzN0RkVZVGVWVWFqelJzV2xXTGoyWmJXWnpHV2pOQzBsVDRQMVdJdyIsInAyYyI6NDA5NiwiYWxnIjoiUEJFUzItSFMzODQrQTE5MktXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"eGor6-Vqm9qVKpYHTmkZtQuUFeYSdkMmM9nx8_pq_dtm4NVlaXfaZg"}',
+ ],
];
}
@@ -66,10 +77,12 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'oct',
- 'k' => 'KuFiR-n2ngkDNZfBXWS6cCGXrYonVUiH',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'oct',
+ 'k' => 'KuFiR-n2ngkDNZfBXWS6cCGXrYonVUiH',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/PBES2HS512A256KWBench.php b/performance/JWE/PBES2HS512A256KWBench.php
index f7255e4a..4dd78960 100644
--- a/performance/JWE/PBES2HS512A256KWBench.php
+++ b/performance/JWE/PBES2HS512A256KWBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS512+A256KW', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS512+A256KW',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS512+A256KW', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS512+A256KW',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS512+A256KW', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS512+A256KW',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS512+A256KW', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS512+A256KW',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS512+A256KW', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS512+A256KW',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'PBES2-HS512+A256KW', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'PBES2-HS512+A256KW',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,7 +67,9 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"GwXyadX97ssIytJawPP4112MOuBSxRXpiH-Ur7wtsThL3f0QZ2mjYoLYbFCql2A4j4avuSHjZH0LrIYX5Tt6zdLPVCZtUj_R_5mlFIfQW5cSVHTKBFLNA_xsn03eU3ANIq2CUdq6Sypk3f9UqJXgxN8XTR4wsFSSM11MEfWU3uSsgR1GTUOw04BPCMONi-gi-Fx1CTlTOGOQngDCNrLEnRR5KQpZ36c","iv":"byyjW61x3VFA2Bbi","tag":"cFjxlfvdpJqDepENC0bGNA","aad":"QSxCLEMsRA","protected":"eyJwMnMiOiI1QzI2YUpCZktVR2ZMaElkY0E0OVVONnNEX05aQnpjNC1xSDc0d1BNc0xhaTZUYnU0RXJRT2JRRFZxWFdtU2JvVzd4aGxFNUJUMkZ3VHFvY21NRHoydyIsInAyYyI6NDA5NiwiYWxnIjoiUEJFUzItSFM1MTIrQTI1NktXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"mxZpygw38j8rYa_qZP3Vb2RZf6n3s--7H1oxECBZGoaC_I0-qERoww"}'],
+ [
+ 'input' => '{"ciphertext":"GwXyadX97ssIytJawPP4112MOuBSxRXpiH-Ur7wtsThL3f0QZ2mjYoLYbFCql2A4j4avuSHjZH0LrIYX5Tt6zdLPVCZtUj_R_5mlFIfQW5cSVHTKBFLNA_xsn03eU3ANIq2CUdq6Sypk3f9UqJXgxN8XTR4wsFSSM11MEfWU3uSsgR1GTUOw04BPCMONi-gi-Fx1CTlTOGOQngDCNrLEnRR5KQpZ36c","iv":"byyjW61x3VFA2Bbi","tag":"cFjxlfvdpJqDepENC0bGNA","aad":"QSxCLEMsRA","protected":"eyJwMnMiOiI1QzI2YUpCZktVR2ZMaElkY0E0OVVONnNEX05aQnpjNC1xSDc0d1BNc0xhaTZUYnU0RXJRT2JRRFZxWFdtU2JvVzd4aGxFNUJUMkZ3VHFvY21NRHoydyIsInAyYyI6NDA5NiwiYWxnIjoiUEJFUzItSFM1MTIrQTI1NktXIiwiZW5jIjoiQTI1NkdDTSJ9","encrypted_key":"mxZpygw38j8rYa_qZP3Vb2RZf6n3s--7H1oxECBZGoaC_I0-qERoww"}',
+ ],
];
}
@@ -66,10 +77,12 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'oct',
- 'k' => 'OgUyABAPIkI-zFg3doqsv_GH-4GTGOu3HGnuG9wdxCo',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'oct',
+ 'k' => 'OgUyABAPIkI-zFg3doqsv_GH-4GTGOu3HGnuG9wdxCo',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/RSA1_5Bench.php b/performance/JWE/RSA1_5Bench.php
index 62e6e942..e628b4fc 100644
--- a/performance/JWE/RSA1_5Bench.php
+++ b/performance/JWE/RSA1_5Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'RSA1_5', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA1_5',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA1_5', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA1_5',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA1_5', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA1_5',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA1_5', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA1_5',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA1_5', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA1_5',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA1_5', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA1_5',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,24 +67,60 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"2z1-hUCmtdU1It5AmfiJ-3VAc5OHuF7_8fMID9U6viZOTo7prG-OHoAulMYXAuEAh_y295NRSz093E_MO2geP2D9V3goFk6mhiVgGgwVnHk6eD-CM3oQjw_n9FzNRAsVuJkrFY8dFALFfUJOghhHpnPGwAuPCsHWJzCPQ9-N9lT2YQJZKnmrsclVERw_8ITywsfPfgGU0mb8Sh24m2TtUA8RDBtVmiHfAN1aJa0OC_w","iv":"6N4gVau8qYbK3w1JA8Ntwg","tag":"dnijlOO44TBcn-fpPKbchg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"N4aLO3KjTxM3odA-CWd2pxb-EG_LHzvbSkP0hXVlQh9mvP7bQt3FdKgnQUGd6_8P2IxEgYakZi7WemhkYKlxluSEyzymNMQ1RhOPuXcZAx04FVB3uGr5Jw7ig2HrCgG9HoX2Vp_CAb1baCicn4HA9vtH7O7SfUYpBUyyEbBLdYo"}'],
- ['input' => '{"ciphertext":"npQhGahpoW-x0M2zo-SMwREnoioINehE62pSP3z6AU0wQpYoDCa51r0RDjrrO290a3x0HoxCzlNUSnZJ_zhYePCTgIv7YJI0LXXcdZ0ImeoSg3OFxUJVuBBHE_tH8Xv4ttDziKUDGlQUeNtfahMtMa80ThTxnWL1jMrEwTWioBsgrAh3orLbNazdKKEzQqyE3hqdoj2BTfe5Vu18lSCUK4EZvYRTM3gUPKFJhmcYRJ4","iv":"tbj0JpNlArzfEDwjStBzfg","tag":"640hn-iRtO6tK_lLpzTB-lxKLm-xCaGk","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"hAcykh0bUdqlIrJB4RP5AiWjxeTH749gHY3giajV5NYpZa2lEXnscF5fjJWB4wXJfFI5gwoSPgoQ2ZeIjjxFqNMe3ionaG_gMmyfLcP7g43uMo9ppNeg0oHhq7LDg55AfSHsJXbMbx_3IfR8EKqpSEBd9a_NqnZX9_Zie16jQZ8"}'],
- ['input' => '{"ciphertext":"AmzqGzmRbyfdN4nti5YFtFQc-rpDJTn_rzfkfOxq-Y36b2QMXW6LJbzNfkY7niDI5YpgfELi4cwqJ0eagtoNstYpyOCBCmzKKzWAH6_6Qek2yrKwjEVwEst6OeeC97lg0OuYkcgBwDz-txmdz6lEeBj0X9yJiU6V5Gj8OHjYEl_FqmDRnypeBvYIuuiVAisut4xIeZvOZRN9sn15wuWnD1AGRTZDxCtpiaryaJeOeR4","iv":"EfKTRiKxAU0FRyfyAcMmnQ","tag":"mKWAfC9J8bZ4CMxrQkUH1NKJIkXgAKHQKtPqPZoJPxk","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"oH_69gE8MbmPG61PxU99j1mbwht9aEpXg9-PWp92eHQw8A_q-eVaZ1N_LEUxzmXZ71HvH_kigMqhl7k5GzGpqCR0eka80FuUtCvcfOBtd-MIcW4OfFGyQb71sRE-N7fbqXkQdTVtSqK4ZfjLUbGDTRewkK2YqwjWiK8_20p6ANw"}'],
- ['input' => '{"ciphertext":"Jyq1XGPri1anp3kXia0ElK12k6A7B7SNfLJ94g6W1DCXGPZQ-tgf6Ha7l2rezAHDjv9I595sWmTJd7eb-pum_bi2gbfMPCxX3j_7-jNRHZLVWzMZLe_5YH5Tp8I69IRQ-2fbgtGfhe77t2JugkWI03IamdjvvArSErV1neAp7g1W1WQ1SZ6p81ZODbIVlJ6kA9WRFcb9tHmzrK6DOogsyTcFbbnqJ-M","iv":"XxSTUZuJ4Izr_xMK","tag":"3HDxqZ1CdfTYi5umzknang","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"KcPwU6CsXF5kHxWHAuRl-z6qXlPfEv_HxNAp0IlbzBW4Ohk5YTd4QNHJgKhmRlRThC76HOwMLRmFjhq0ZUppvLtId0Ff1ZOxitcdxc52exyKex5tz05WlHIuTVESSoDv_65G4czpb8H3fvyRb4JA1raCfX12g5YwRK-v9wv3laM"}'],
- ['input' => '{"ciphertext":"6thPEeJm29Lb7M0v2-e6PKk-ztLYEfICpgwq5kQUgsHscr7pVqxHixMylukiQMuJ14s1TSm7a0s6qaQafz1S39D8jzqSFVJ0100rxGjmQTtlHvF1zO5v-itpVjPdVfMoC6VmZCmntsibPR2GQ61GczX7_TFCGeFwZ5pY7_-oxFZe7JZNj8nbWAKRn8gWXsQKsxQ9l_keA4qg_79UATbPCvJj6D-d8CA","iv":"bsiniVmwmyyWEyN0","tag":"wdrd1r7j8Jxh61YWMMSjFw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"WmC4orIjl4wB0czXIDvE-75NAoq0XlYkDcEczuWhMFNK7sXWUta7rV4-KV8z2DZ94TePx_GXEi-WUQFhl5Py0NcnCioRza31nN368NCv4-i0BFU6RdOw_pR3u8TddZMe-HjgRoUZmNcQR-2_Xg-ccBiHqaZecTN39o_FaGeqibE"}'],
- ['input' => '{"ciphertext":"VkrQfQR6Qwm7HiTIeWnVkb4KAfueOKfi4_6bthBwE0kyB1eGntSzTq_4ciFeqdlgsVvNAt4uwD_i8Ji4sOT5Nf8B5EKpDCTr7DdjyRlEzA1_bijS9LO3pwDL2T7zkIjfl_pnNtMGwAflxmTNIVobFLJdhBAVxrj1wOWod8a2aa_lpo_hyiKadng1937s7Wboz0wMlcTeUzUDCJvI57luXBLuLM0cmsI","iv":"yb1EBwSncsmKa5Km","tag":"EJKqSYbBoLxrb533aLrJHw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"SYecg8HD-cFZ-7Dv7zzBDGxa0GUrdv2GEEwcI91cqhTix-hzWDINWkV5RFbAs2KUZFxP05C4OnQKZt-NlqnOPsyoOVnNVfRGa6AGScVZOeEoTjW2ZK-zQ-AiNR-DbHHtqU5vO9j7-ChkyyWpszFdxIJ8FQaYS_RQLBMrPajUAmQ"}'],
- ['input' => '{"ciphertext":"WR5oOrLE1p_D5aZeSxvXBL1YI-uzzdDPBrgiCR7Fqm8Oabc17Ak-BsnW579zozTDklDrF-761n0k1BQD4rD7pKfLqa7yCfi8iqNyiIso6WZs9nKcSKYzzIUWnmBJwSdIBZvU7qE38df13GfROWgJPx85zmnIak5GouGBeGGpMi0grCXNvz9Wi9_mbrLSJtg2DaQx7EnsvQ6KlWmHyD1yPyaePaaMhgb8GdxbuPC-cUo","iv":"fBQznXDr10w5YTRrzViD1g","tag":"Qu3XUZJAvLkEZF_1LnqRJg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"sHIFzjVKcLzGYcVv-wD0pac0i86qHLfvLniA0HNjlhk5i3__sWy2fmb4pGc6QB2CNd57RZqezGJEsD6hbO3gHfVJAQ_9z-iaDcjuaYEWaMxdD238wAzZxoWWQQPNYEH1shMNqRaKCvSno4cUG3by-LSbMiB9lknYZMME2reMDQf_yh8AeoajdebxeDnoiivBJw6Z16SyJ9bSbofo9Oam2tFTHfP3xcP7jilWGoYN-weJYkI3RaeXmYkLlMpqWA9BFDJ6e4ZRyR8luOZCfSeRYx7a8dSzm3k-CvY3xXpLSIw3yeBsrrmt5i9mL3MJEcas0kGqouQxdx_LIRFK3qif7A"}'],
- ['input' => '{"ciphertext":"Nd_fAzWH92ozXLG0GOCzgeSz65AKftSKxo6crDcJpxYmHS9imQAVogivsDsQaV6yAs4d6wAq35PuT3iXrpNTKN4iXVb3jhBuXwnhz0T8BBCPApfQSHSCvCKc56is4Xk-wZm5ICXt-HYOpUJReAmGNm8JWj_6Pd7b09As9eM9P8oMgmR0Yl42zOXRo9Fcx6SeKKh9CazPmEq-r7aWv3SKJwYCt2U-JasX9Gg6nIrgIoA","iv":"kzQpYng7knFio-iXvNK8OQ","tag":"PVvTtB9RzaQXi7BXekHwdUvNiDtNX_zG","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"NS4ER8RlpoWHd2LnHGLFyx470zQoVesruOc2UQ1eGkCQek45vfjH55vipDNPrOfoEMh_nhNs80xbAZRnDbi01gCESyC7TQXXV94o2pnxNFG-g54fAWZuUr_L9-kQ7GcoCKcl5teLAoOEQevnjcM0RiL8Oo46KNTN7kYL7lXgFuwE-RqxtkcboasYRkxG4qu6MqkKWYsZiFlJ2qxgprXWusF_pc0XrKU_HVh8DU90TyUgIb0PWf25JneX3vK30aUqbmmsQ6S4BBj_ntZyD04fj7O7B2ztYZ_EEayA-c2CzK9PvgN21uuiApAvmNp6TN4d7DIAX3VEeWhgUG-nNwwtkA"}'],
- ['input' => '{"ciphertext":"Vo_R3-bg5v6dvuqNuiNEtLX0RqAEfzyTFAXtH342i8yk6JrP2kJSWmvkxxozQklCk-B6geb14mWkf8AviF0WVwvztV6W1WAMQhlEbOhIDUgkiti9jTHOvzE3n3RUlQa1-KZAeIRaF2k_pa7VpjNDciURSrvYz3cuOvKZcjYhYp1ktmbg_CvPo1dcSXuCRDDMlMDjD6lTaxk6iJZwmF6J34DIX8yiF8L7-cz7O1mRxcs","iv":"kH2RiycpQv1R_nKmeNyBmg","tag":"j89wsmugLXDE_EASPMGEMuubBs81PjkJ5A_4Bl-gooY","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"NMklVXQS_cVm2AlyoPoHnFOG1ZV3SBiTQQWq8X8q3uo9lIqWA1xZM5649tgGP3FNi7lqUq5Pe5gSQLrVJmXffPnXxpG_8SBURgXo884YeJxX68KPDb66sfAeBl32saWE7aBC9dXu7HHvWC5Gd9cXa6jjaMRdbkanBdytJH4ybZHfsDvtGep9LkdocdBCLprVDExfhYkXJot10JOHllesqbDAGvZ6acEz1DtnZHKTqSWllC25akHij9aTw-hjIklYjiZKLuA1-fIKuhy_QIYL73GQPKhyHQr5JolaVKkjf4Vb0SvLJeC9uxRNk1Ssww4PR-3IrEMyU7O5iDnMgpqKhQ"}'],
- ['input' => '{"ciphertext":"n-MtShwALqIo00cfsiOv8nFqKf2gP9qSxU3bU7RiaTbqNb2DT3Wwe2kR8SY0mGiqJvIv4grznWWgD4XH_WqeFbC7R9lD9kvhP55og2y1IWKtgqKXf8GGtBXW0IJ0uAkhCh78JoACXvgOMMvOkZ5BX9D4pulpn9c1TfsqirtVSZ20bSB9B1ynQQAc9cpVu9OAsqyxSK7G5HLXvmRxmIdW_Ctm1Xr4Vmc","iv":"B---hsTxog0fgWHi","tag":"5NOeOh81BKNlBO1HNCChVQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"J5JGsWDSZcPIqbuGauo23hIK2Q3Q8jAPvy5xxkwjRNu_joOsgtGlJoBZkDfh2YycEPMli5wFOR6QCU4fN9Io7dW0m5Q4fS89fIpaWNmV8u80MD3hjT0ErlVOe07U5h7ry7QiG_zx74lITsUI-2f13cpN1U9QeHhNc71yke8Io5B3ExlbMwxa2cvnoUMBrMFEQy54PIadFbt2SGaN--LTfN2WH2WbVcl7cgcQ_b77EO5KHHb2WtTxi30yH7yO-9fUnANeeP5_Mlz-rBSMXCBS0Vk0HhqmCt6SRLh2IygVH9xkyhsi6kozADcJY1T6sDX01vFAOkcAwsJDKdvREAyZjw"}'],
- ['input' => '{"ciphertext":"rxI3D-d0WKE7BlBek_0zsVv6lG-uwCjapLEpMobVeArbo0FWeXOQQunxkFGdH4_I_W_zMxrFu08Ms6hxOQnsmb2BtK6d6YfcA_yMOv05jS8yLLzpDQx5XP6Nmh2oeZsdgHwOxx9P163mnLmmu0mBfNRTCHDLLLYzMhzXaE_3ZKNaLlYgfbV53T7k8PHV0kXtdxj9NeWg6ScGA4i6UdmDmCQLRgfKlkM","iv":"tSSMtSp--qHBtaYO","tag":"AM5_KKNRoEqQX7kkWt60oQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"jHMCQc9sw5MFrU8mD3r44wV9vZqbT7eqARi4WKWJsPbbYtuWtbwgWbMajPmKyMFr472ZmwbBS96VXZH4Lj_rOROSRDe90Q_z4bnnnOIT80JB5v1anp-RJSwwsPzzCw_sSvZXk3Slo3c24eQEMNX6NyV8MP8Rk1iWDaV_zERhT-dM1-PrM-aZxvJPQDmmuTaRKZ4tExONQVclfVRbIeA3AVb-vRKgB9mLJCWWBnVVyhWiTkKet8cEXj7ZVgK80yejm_mBbdQ4KAPAJni1RZa2JWey3NqGZlOimMGeDpUENsLW7ef__z6NMQnLb5vwEayhdr4OFlp59eAI5mLEZRDqpQ"}'],
- ['input' => '{"ciphertext":"H1JXUesUD0F3lhxcuQoRhXjmWDvewTFtGEQe5WKZkLi-kbNeXYjmj8qcbm7T9YCRNnhCtjAcefpWZCTeF26tDPunQA0kHHhYkpqZDCpRdzf-6Mxm1IXxscnp0g3om431WQXZmf7FIQEcF6YgYWF4t9twEBfTBBguRhgJCIFZA_7-phYVEG6R1AZ52HACezdoXZIw9FeuK7KNE9LwfBxvB2QWZnxzUms","iv":"id8bvQio2jy4_4xe","tag":"Bp_RLw0GgoXyCVbDjC7_xw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"UpKgao9FkRXKRvWXI6wR1SOkc9ubNW63mmX0JP5MvWx3AZnPKXtAEdM1uB83FTrr5_k9-TGIbvspKFnLDsokFXBG5ry3YwDbbJFcKXk5PWCpZsmwECsq6eG1Ewki7DgUOWjx65ZbDIsIavsLEFtm0J1WBkMBot_mNpVvj2Opx0KaNQqbm-pudplXDzFTqByGgWkw_V5wV8f_k3kmfSncm8Ky1cPKUZTC7_jsD_tFtAIIUewKG_DqK-k-01AZCXE4tmT2CDU8xGW_EFJfbXkHswLC4552xEJ4j0265BoD7mo7-SHaeZ08cWIeEppyOw5osNWrWRhPKPiYSOqRdHsh2g"}'],
- ['input' => '{"ciphertext":"G2aTfp1NVbsPZTMxx8HAXsHlrTnJbbZ_dE7hIJPgyQZeGMJXPA3cJwQ-rZN8B6LI23qRooA6lXHWZbxqLZSAUeamENgIfq8jDVFL6LxZPFnuGNT6XY69GF4aph5P4xusk4BHWDFHmQy1GaYlgKlZ2TYb1Hrfm4qWSR6GM2xpxW4RzwfDU0or1d9xsVP8VwCOzx2B9_LIkS1oa5uulzqn0HVcPn-eS1CGCvjhpHqS4EU","iv":"EGXdp5njMEo-JmSKBfjvXQ","tag":"s0qjKqKE7l0TL8oa-hVeKA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"QILFkz0sewJZAFcuKe2hVvO7uuc6kBRiNOcBzhmjKAcs-wSJn5UzFYmeLcWBb658F9YRmN6Xzhe-rtbZJOFlgce8za6V9V71h1h2SgAOGjohflAoacq-a04rcEqhBV3cnH2rMoxcP-OEMYNVa989A8agKq7noYYzRpW6bKLkkddqaQ5XNrRSRPKDWtAMftPEKApdikg1TG5xf-o651sZznZFuvMTN1uMt1A85IPZiDveW8c2sMjGdk7yQnkK8ODhcYsHNNFERsSv3gaae0X_xy8rgu51jZwPocjLaSAK70mTegsJxnk4FAbuYMkfC3ZWm5VXjZTKFhC70A0rbY6sXMTjdBh3uAJXpC7gmg_oKPFse1q3L__KlPJy5vtMFZVT4JN4h9dmOZ4ZPw7X__c8Qat0wbjf7MeFPxfXs0q2ZZ_vPenAHiPqjR26FIj446BeKkg96-NHfqSZmM5aPZCQ6bRO0ODP-uizs3-xGR9k2aCqJmj4nzfGK76fIPMFGKxQxDSq81d_WdKP0Q-0pH4FIyqEf9n8PUzx6yrflEztc4RqnBVy1OAgzF2DsX3WO9ET279WTyFTGAOtF5kpdBduCsKy-YFDyOUQnl1cXYo2iUyGIVqX0K-KwUDACjg_SwAdAT6sc0guW4r_XrSBHPsWXibTgCh8kdDtldUDHOVFcWY"}'],
- ['input' => '{"ciphertext":"4P7OnC2zu2tz-kYla3rYjm0BUMaueWOrXSzyuRVwDCg39EPeV8HKMb1IKOtaIg4NVPe7M9KqbF3o3WSj7kcR0IhzMnZATucFJ-8PNkZL4rW5hB0zHTYI-Nw0fcfGzwVN_By5wyG_WQvA5Kw6rSJKnJX8LGohLv6EXQMYal7oiwsOtBw349Pc2vOJ0t6pCjGukwoymkj4l9z2D68UfwCTltfRsG3bQWWwcRtgo8L29Mc","iv":"ln7DkIIZo-pWQ4rKMnkP9w","tag":"6zmLsf0ncVJlpoRZS5Wr-1Rff1rKZD35","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"eXzUvKkJ8a29pNxfK8Q6MJdJV5txMeozw65mz1vNHMopDh-t4tPp36AUAI-EgQ-FI5cB78Eun477tetx-wKcrvkfQr_axYnE5XxWa3F-5pRJ8N7zLpCg5JievqCetBAPHqIdNSD6aFZFPu7vvpGVufoINmpI4lP_OfrWzU5fpe-K3JMkHee05Zdb0dXRsCJleaVr4WgMKvgUPLi_Fyr1vwjCKjM64WocC_Uw1h-GodvgqVI5douR3Hi5cGikUwkOUNhC3e6MhlOyScemnYsFFSVT107X-v7OjGzQvomXEAaczqR7BlgS5dHtSMoPRfsqyw2uPUXE7prZlLfIGSbyQfs7Se_aV4nstWdCmzPWR5uQ7FsSIuB70vv26jr1FoLdzURxZ-gigddet9wnjloGGsCWRYtsxh7SKpaQj1XYZ_M-lsSCWFJFKyA4xFS1SynukYHeZxwTqL_OSnmuBfoMMbuAcRly3j9saTKDtJnU7cgWe1AqIeFFqwAeQH_KWx8W2YSPJInrpAq33MluNVyJXpOFb3P_phF28pejKWJNf5GKWgEmpjQ4k16c7OlO-XOi421UV14Xy9NmIb6uMeVUcPaZzYgMcSVN0ZSeJ8I33p_OaT62rwROO7vRvm9fxuXSgeDhMvjU8pOJQGpaO_2ZGLIAa5GaW7WmnnLyaMBMUdo"}'],
- ['input' => '{"ciphertext":"4IBUPfHY19C7v-safTibYSvY_QIYBsi2rfOczWDW-Zn56yL20Iayc3oP8a0gY2e0PSAn9QvOHXhnSRwvfcXggWDBlpM7MCwK6lhhbqYf08vYFibKmB0oy_AAXe8_ysGBwHhPGTFE-uEXnDN4Oa4Q4jCMQ0XNHPDhy7niMrYiz9L26ibF2weGwRue9xpmd-zlNpZ1M8vj96i5VOC1WusJi_cBpfaXQDmCTCB8lhRJnRM","iv":"iDu5jNbgx1uSlv6-nJalzA","tag":"gnOPNV-nqL3qhg-Sn_17IZAyg0fOwr9NAr2ixaly01w","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"scfdJnEBkAX8ZB6rrkzo7urgG6K8ZS2uDqt7R_3MMu8vme-J-sFzrbgMr7oBunAZFECjagB5H7UJuZLQHH23zpcA2F1Xc-YCnIzZuCHCha-elf7u8r4Nev94J_Re3V0DvKpxVhtUVEtMev7WcJ-zCOw2h7Px3qqrvpm58N2prYtPFQuUnC8nbUCCcpxre9nrs3-BzwWTrM70DPO88W-Um4xj1rqeql8ySSCPhtBIS5MWGbKPnb__DT_0_cykKbki_Q73sC5rDMIie3ukGrbzjeUx0ylbt_5ELp9qh4mxP1wz8GwMluASF_XqrTnQQBsAOP13YfeSiNp9QO0xo4FSoGEAfkrXwZG7cCkzVjdg3Zdd9tx4uSGiVkC7-gu5HcChtXuQlfO5PQTW4QbcAP3nXIvZ3bXmU5eeorOp3OPY5NZTVb5A6ypO91glV8vgQZ6pLovmFslWICrZPFktBmKVZJeJqMjlv1ECaItzQSP_qlop5UENupcoRVEyS9ucKOKUEtk8q8eRBtM3EyKC6dlJPxuSp-XCp0fTuQ1jVcIFPrbVnfpbkXAnczxgA0JIgtkil3v_NDsUjEJjR_zH2HJXrRd6cxs7j_EA7En7eNExXdcAVJhWG_yP1Ub9JFv0WQ0op6AoZ0oytq67D6VPvwNgS-A_YxoWhVbgXS8__gvsvN4"}'],
- ['input' => '{"ciphertext":"ghUJEwroY_2vst0dkO6Idl8dqhPe6MqMhUmiI3enCxmJIasCSuVbYzy21UMdq0G-2cTveMtn-G8pUzkHKDbrzOFOwsXVzt9ZHag0doc27-INPv4WYkwsikGQL3PnIOzACJHOXafmxyIOI-HQxBR5gvFaK8hQs2rtIQsvmNAlP0BIm6EFBhcrGTc0uOQC2ldPcB0gEEQpTodKKAJ9DyUZcmWYeCr9lvU","iv":"GjgjMuEtJ6HNuJez","tag":"2Khni7fwgCNqJQUB0taMMA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"RfZBDKkFbqRTRm6cI8SIdO_plSKynL_odIP9wuGH9oBjQDkKzyABUKkzCWnVE_hIKgvWzd4ppqmhGog268dBVpwaZXF7berRkwKTdCmIxPydzVcIKUUSx4ib2M3sURj0d169IWkLX4KfQwdaaSkP9T8dpntUDoBW7qgj2zEqLqkI2TDlwDSg5q1PfLb_lxe8nKh4sM_BKoCmrCvyyOzS0gPRjkufj2or6NhUEqHslF2zuzLQjEd_0K2ZxRh4_juNkslIN2Mxh6VM4U7UNoHv3lniudPpG3fM3O9UFkLT50Z_Q5aIWYXIUpk1C8U4CTBPIhZjYEFg_QOrRUb9YazhP31JXMFD3ulrXEz0Q5wuvUbiTf0ijL-K9wDz8AZLg8QGs2fEX9ZVD_9XPfzDOlAzowXGGIBeapz1CWGqF4xnvE3U5knXnNA58VmKfremy-oZInEwMvUBthXnnCKfwsf5tXlXRdHr9kQGDXLU6Q0yjnP-trJzv4JgGpQbB6_IT0KunW2qDYhX6zv3BunxqkNNZTJjhgOdMX6Z22lUVPD1H0Cd9_doftnzKuTa_fl6nDRwXLRWMOlXdTLO3AOhO72nBrhMt-PBwwX9Bpg08nThEPjpD7M5E_iHI9zEf0JM9iDwy3Gph6AKiokNswcQruN_i5eTB37xZ7IeMZA0vQKymU0"}'],
- ['input' => '{"ciphertext":"UWxD_tNuJpzQKQslAxWc03d_bB1b5POoImizYv--FQVFuShL-sjeWdm9L8FU87o6P43arC8WoZwrcdJvzfgVVAfuyt6cRvn33RcqhkhjhnLYl30VwaGmXn9LHdYlnVYtzzvaRooMIqX7HXsFarPVRBbGqokHGxCbKYz7ZxUaimbhhZwzkwPXZi1MjuyLgYqlKafpWaaxcLopor_Q_2pBz4OFO3LFHQ8","iv":"k2q1H8i_galIGE79","tag":"sur6mou_q_lXOsZoFz9ylw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"bBh3zO9DlvATiGKbRghq7GnUQJGMQ_vmmcE7gfmysxzHLh-TX42Zwi6JlMZZPnMtPTlkv9EnOLadl0bignpJeWL8ZyE1FwNQ3U0FOnwFA9BLESac7jlX-KExMiAoznZ8_4RIasdAjM0M6v5ED28fBKRWW9co-WAE2Ch90z_Hq-Kr2aNAaYsm3CWcZYErCSp27GCs7FPVWwIo-lGQmesizh6nYhuy3f4ib9T_Utj-vhshW-Vl7xCjqLCI4beI1jiZjRYeHl4bxIKXSVajHoCxa7-w6-xFtzKXto1GWl0lgp9jSLu3gF2wqZ2ZBEvTgCo_LzJjwFEdmVFpKkseHsi0st1DomdDEduLy2ZuL4fbeQuvAA_iTNJZILIAyoTOrmrKXCCyHZsomiw6j_QnSXu07t5clViDUxGqenZplGKPUu_6b-2aim2AEUa8_aZlpzd8xA1zmpP08oM3SaoQtH_1B_VbQoFKHDIBIGMuHiHLoGHE7vZWzPjxEw54kPXGznrRjDdibSAy3egDOMFFJxbIsAYoelgm9S8K5pO-Zi6KiDWKbXYmGmhmlBqYBtEYixbYumvcdyJ-FpwM_hKmG1DfXpqhiH07g6ko8glhIcBr4GgZ3OGugt8NWd3aiykxL1e25rg-4A6FoQMQ6ixp4-8apTapivINP1REPngACEwvAMA"}'],
- ['input' => '{"ciphertext":"ImrQwhrkhCHsDqElXFAxDOcSwwv9J4I8Vn-RwYh3BuHEDX2935j-EmASf514il8mM-3KgrIhdE0_etiiSA9st5YfWlxEqAhsFf5FgGZlcyj4_rat3MMapcpfQYYf2a_dQvwQSj7tOrDAtFomYNQMuwbocLpaeQM_Qr8uoRu58fQHBZNF--dgum7gqvTm9Wd6Sdwl88sZeNhuGiU09SAP3NB2U2N-Q_Y","iv":"ZnVjlvwRIAggr5HV","tag":"grHDy7knCmF9itDDm7R9xg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"UPrNyHeO_gw9FmDrzy2nVVKxQj27zmYGiAPBB8pW-I1LbK4RSDKuocjW3ITvwKRA1WnWe3auVMh6M9_yQy7GPejXuS8lCthK3BNdP5Kv3doqQKFyfYdBZ_SS6RZ8NcXoz4FWj5iNF8pbsPCcWeWxDt1J1mPNiHhgRVUBXgqIKKyVBcOoP5ZhrJ9vJXI87PwiEt-awUrg456wI_ai9I3e-8i7hB-C_moauHNeTckMClevlfkNSnTigUNgcripbEDW1hq21ULuy2_xdf8eM_dJsiFaw6uBLJGhG2cEq2Aj0CHGP6c-HHXyBi4PYdGSXICG-RbePTcog05xXL38M7k_s62gQAG4obJJnCo8b0ZNbcUjZrfa8mxnNubFyvj6hSbJ-LaOpSLgH5FPRZcmsopuUvhCAVP-Rb3qm2m7vOrB4vxD9S8zqvfUKql8Rqxq8oPVxhpMXvlPIrOOMkLbVdddcUON_BdA520FlWgCPOXzvLpSXAydOqdy0YZju1P5u8nmHe5wLGnDGpCa7E3OTRyz874TfsHtVY-PytkXttWGS4MF5m_08Vc6NP3DLIBHaUm4UUwDSsagm6kiK3Cq2pIRbrAHGIWRpbimu6vlABNShTU2SyT5caRSVVUBaXmI49SHy7Lmg6BLp_z74p2zHCcP6i_1l6tXVgaUNeDf3D2YWxE"}'],
+ [
+ 'input' => '{"ciphertext":"2z1-hUCmtdU1It5AmfiJ-3VAc5OHuF7_8fMID9U6viZOTo7prG-OHoAulMYXAuEAh_y295NRSz093E_MO2geP2D9V3goFk6mhiVgGgwVnHk6eD-CM3oQjw_n9FzNRAsVuJkrFY8dFALFfUJOghhHpnPGwAuPCsHWJzCPQ9-N9lT2YQJZKnmrsclVERw_8ITywsfPfgGU0mb8Sh24m2TtUA8RDBtVmiHfAN1aJa0OC_w","iv":"6N4gVau8qYbK3w1JA8Ntwg","tag":"dnijlOO44TBcn-fpPKbchg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"N4aLO3KjTxM3odA-CWd2pxb-EG_LHzvbSkP0hXVlQh9mvP7bQt3FdKgnQUGd6_8P2IxEgYakZi7WemhkYKlxluSEyzymNMQ1RhOPuXcZAx04FVB3uGr5Jw7ig2HrCgG9HoX2Vp_CAb1baCicn4HA9vtH7O7SfUYpBUyyEbBLdYo"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"npQhGahpoW-x0M2zo-SMwREnoioINehE62pSP3z6AU0wQpYoDCa51r0RDjrrO290a3x0HoxCzlNUSnZJ_zhYePCTgIv7YJI0LXXcdZ0ImeoSg3OFxUJVuBBHE_tH8Xv4ttDziKUDGlQUeNtfahMtMa80ThTxnWL1jMrEwTWioBsgrAh3orLbNazdKKEzQqyE3hqdoj2BTfe5Vu18lSCUK4EZvYRTM3gUPKFJhmcYRJ4","iv":"tbj0JpNlArzfEDwjStBzfg","tag":"640hn-iRtO6tK_lLpzTB-lxKLm-xCaGk","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"hAcykh0bUdqlIrJB4RP5AiWjxeTH749gHY3giajV5NYpZa2lEXnscF5fjJWB4wXJfFI5gwoSPgoQ2ZeIjjxFqNMe3ionaG_gMmyfLcP7g43uMo9ppNeg0oHhq7LDg55AfSHsJXbMbx_3IfR8EKqpSEBd9a_NqnZX9_Zie16jQZ8"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"AmzqGzmRbyfdN4nti5YFtFQc-rpDJTn_rzfkfOxq-Y36b2QMXW6LJbzNfkY7niDI5YpgfELi4cwqJ0eagtoNstYpyOCBCmzKKzWAH6_6Qek2yrKwjEVwEst6OeeC97lg0OuYkcgBwDz-txmdz6lEeBj0X9yJiU6V5Gj8OHjYEl_FqmDRnypeBvYIuuiVAisut4xIeZvOZRN9sn15wuWnD1AGRTZDxCtpiaryaJeOeR4","iv":"EfKTRiKxAU0FRyfyAcMmnQ","tag":"mKWAfC9J8bZ4CMxrQkUH1NKJIkXgAKHQKtPqPZoJPxk","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"oH_69gE8MbmPG61PxU99j1mbwht9aEpXg9-PWp92eHQw8A_q-eVaZ1N_LEUxzmXZ71HvH_kigMqhl7k5GzGpqCR0eka80FuUtCvcfOBtd-MIcW4OfFGyQb71sRE-N7fbqXkQdTVtSqK4ZfjLUbGDTRewkK2YqwjWiK8_20p6ANw"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"Jyq1XGPri1anp3kXia0ElK12k6A7B7SNfLJ94g6W1DCXGPZQ-tgf6Ha7l2rezAHDjv9I595sWmTJd7eb-pum_bi2gbfMPCxX3j_7-jNRHZLVWzMZLe_5YH5Tp8I69IRQ-2fbgtGfhe77t2JugkWI03IamdjvvArSErV1neAp7g1W1WQ1SZ6p81ZODbIVlJ6kA9WRFcb9tHmzrK6DOogsyTcFbbnqJ-M","iv":"XxSTUZuJ4Izr_xMK","tag":"3HDxqZ1CdfTYi5umzknang","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"KcPwU6CsXF5kHxWHAuRl-z6qXlPfEv_HxNAp0IlbzBW4Ohk5YTd4QNHJgKhmRlRThC76HOwMLRmFjhq0ZUppvLtId0Ff1ZOxitcdxc52exyKex5tz05WlHIuTVESSoDv_65G4czpb8H3fvyRb4JA1raCfX12g5YwRK-v9wv3laM"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"6thPEeJm29Lb7M0v2-e6PKk-ztLYEfICpgwq5kQUgsHscr7pVqxHixMylukiQMuJ14s1TSm7a0s6qaQafz1S39D8jzqSFVJ0100rxGjmQTtlHvF1zO5v-itpVjPdVfMoC6VmZCmntsibPR2GQ61GczX7_TFCGeFwZ5pY7_-oxFZe7JZNj8nbWAKRn8gWXsQKsxQ9l_keA4qg_79UATbPCvJj6D-d8CA","iv":"bsiniVmwmyyWEyN0","tag":"wdrd1r7j8Jxh61YWMMSjFw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"WmC4orIjl4wB0czXIDvE-75NAoq0XlYkDcEczuWhMFNK7sXWUta7rV4-KV8z2DZ94TePx_GXEi-WUQFhl5Py0NcnCioRza31nN368NCv4-i0BFU6RdOw_pR3u8TddZMe-HjgRoUZmNcQR-2_Xg-ccBiHqaZecTN39o_FaGeqibE"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"VkrQfQR6Qwm7HiTIeWnVkb4KAfueOKfi4_6bthBwE0kyB1eGntSzTq_4ciFeqdlgsVvNAt4uwD_i8Ji4sOT5Nf8B5EKpDCTr7DdjyRlEzA1_bijS9LO3pwDL2T7zkIjfl_pnNtMGwAflxmTNIVobFLJdhBAVxrj1wOWod8a2aa_lpo_hyiKadng1937s7Wboz0wMlcTeUzUDCJvI57luXBLuLM0cmsI","iv":"yb1EBwSncsmKa5Km","tag":"EJKqSYbBoLxrb533aLrJHw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"SYecg8HD-cFZ-7Dv7zzBDGxa0GUrdv2GEEwcI91cqhTix-hzWDINWkV5RFbAs2KUZFxP05C4OnQKZt-NlqnOPsyoOVnNVfRGa6AGScVZOeEoTjW2ZK-zQ-AiNR-DbHHtqU5vO9j7-ChkyyWpszFdxIJ8FQaYS_RQLBMrPajUAmQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"WR5oOrLE1p_D5aZeSxvXBL1YI-uzzdDPBrgiCR7Fqm8Oabc17Ak-BsnW579zozTDklDrF-761n0k1BQD4rD7pKfLqa7yCfi8iqNyiIso6WZs9nKcSKYzzIUWnmBJwSdIBZvU7qE38df13GfROWgJPx85zmnIak5GouGBeGGpMi0grCXNvz9Wi9_mbrLSJtg2DaQx7EnsvQ6KlWmHyD1yPyaePaaMhgb8GdxbuPC-cUo","iv":"fBQznXDr10w5YTRrzViD1g","tag":"Qu3XUZJAvLkEZF_1LnqRJg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"sHIFzjVKcLzGYcVv-wD0pac0i86qHLfvLniA0HNjlhk5i3__sWy2fmb4pGc6QB2CNd57RZqezGJEsD6hbO3gHfVJAQ_9z-iaDcjuaYEWaMxdD238wAzZxoWWQQPNYEH1shMNqRaKCvSno4cUG3by-LSbMiB9lknYZMME2reMDQf_yh8AeoajdebxeDnoiivBJw6Z16SyJ9bSbofo9Oam2tFTHfP3xcP7jilWGoYN-weJYkI3RaeXmYkLlMpqWA9BFDJ6e4ZRyR8luOZCfSeRYx7a8dSzm3k-CvY3xXpLSIw3yeBsrrmt5i9mL3MJEcas0kGqouQxdx_LIRFK3qif7A"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"Nd_fAzWH92ozXLG0GOCzgeSz65AKftSKxo6crDcJpxYmHS9imQAVogivsDsQaV6yAs4d6wAq35PuT3iXrpNTKN4iXVb3jhBuXwnhz0T8BBCPApfQSHSCvCKc56is4Xk-wZm5ICXt-HYOpUJReAmGNm8JWj_6Pd7b09As9eM9P8oMgmR0Yl42zOXRo9Fcx6SeKKh9CazPmEq-r7aWv3SKJwYCt2U-JasX9Gg6nIrgIoA","iv":"kzQpYng7knFio-iXvNK8OQ","tag":"PVvTtB9RzaQXi7BXekHwdUvNiDtNX_zG","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"NS4ER8RlpoWHd2LnHGLFyx470zQoVesruOc2UQ1eGkCQek45vfjH55vipDNPrOfoEMh_nhNs80xbAZRnDbi01gCESyC7TQXXV94o2pnxNFG-g54fAWZuUr_L9-kQ7GcoCKcl5teLAoOEQevnjcM0RiL8Oo46KNTN7kYL7lXgFuwE-RqxtkcboasYRkxG4qu6MqkKWYsZiFlJ2qxgprXWusF_pc0XrKU_HVh8DU90TyUgIb0PWf25JneX3vK30aUqbmmsQ6S4BBj_ntZyD04fj7O7B2ztYZ_EEayA-c2CzK9PvgN21uuiApAvmNp6TN4d7DIAX3VEeWhgUG-nNwwtkA"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"Vo_R3-bg5v6dvuqNuiNEtLX0RqAEfzyTFAXtH342i8yk6JrP2kJSWmvkxxozQklCk-B6geb14mWkf8AviF0WVwvztV6W1WAMQhlEbOhIDUgkiti9jTHOvzE3n3RUlQa1-KZAeIRaF2k_pa7VpjNDciURSrvYz3cuOvKZcjYhYp1ktmbg_CvPo1dcSXuCRDDMlMDjD6lTaxk6iJZwmF6J34DIX8yiF8L7-cz7O1mRxcs","iv":"kH2RiycpQv1R_nKmeNyBmg","tag":"j89wsmugLXDE_EASPMGEMuubBs81PjkJ5A_4Bl-gooY","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"NMklVXQS_cVm2AlyoPoHnFOG1ZV3SBiTQQWq8X8q3uo9lIqWA1xZM5649tgGP3FNi7lqUq5Pe5gSQLrVJmXffPnXxpG_8SBURgXo884YeJxX68KPDb66sfAeBl32saWE7aBC9dXu7HHvWC5Gd9cXa6jjaMRdbkanBdytJH4ybZHfsDvtGep9LkdocdBCLprVDExfhYkXJot10JOHllesqbDAGvZ6acEz1DtnZHKTqSWllC25akHij9aTw-hjIklYjiZKLuA1-fIKuhy_QIYL73GQPKhyHQr5JolaVKkjf4Vb0SvLJeC9uxRNk1Ssww4PR-3IrEMyU7O5iDnMgpqKhQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"n-MtShwALqIo00cfsiOv8nFqKf2gP9qSxU3bU7RiaTbqNb2DT3Wwe2kR8SY0mGiqJvIv4grznWWgD4XH_WqeFbC7R9lD9kvhP55og2y1IWKtgqKXf8GGtBXW0IJ0uAkhCh78JoACXvgOMMvOkZ5BX9D4pulpn9c1TfsqirtVSZ20bSB9B1ynQQAc9cpVu9OAsqyxSK7G5HLXvmRxmIdW_Ctm1Xr4Vmc","iv":"B---hsTxog0fgWHi","tag":"5NOeOh81BKNlBO1HNCChVQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"J5JGsWDSZcPIqbuGauo23hIK2Q3Q8jAPvy5xxkwjRNu_joOsgtGlJoBZkDfh2YycEPMli5wFOR6QCU4fN9Io7dW0m5Q4fS89fIpaWNmV8u80MD3hjT0ErlVOe07U5h7ry7QiG_zx74lITsUI-2f13cpN1U9QeHhNc71yke8Io5B3ExlbMwxa2cvnoUMBrMFEQy54PIadFbt2SGaN--LTfN2WH2WbVcl7cgcQ_b77EO5KHHb2WtTxi30yH7yO-9fUnANeeP5_Mlz-rBSMXCBS0Vk0HhqmCt6SRLh2IygVH9xkyhsi6kozADcJY1T6sDX01vFAOkcAwsJDKdvREAyZjw"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"rxI3D-d0WKE7BlBek_0zsVv6lG-uwCjapLEpMobVeArbo0FWeXOQQunxkFGdH4_I_W_zMxrFu08Ms6hxOQnsmb2BtK6d6YfcA_yMOv05jS8yLLzpDQx5XP6Nmh2oeZsdgHwOxx9P163mnLmmu0mBfNRTCHDLLLYzMhzXaE_3ZKNaLlYgfbV53T7k8PHV0kXtdxj9NeWg6ScGA4i6UdmDmCQLRgfKlkM","iv":"tSSMtSp--qHBtaYO","tag":"AM5_KKNRoEqQX7kkWt60oQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"jHMCQc9sw5MFrU8mD3r44wV9vZqbT7eqARi4WKWJsPbbYtuWtbwgWbMajPmKyMFr472ZmwbBS96VXZH4Lj_rOROSRDe90Q_z4bnnnOIT80JB5v1anp-RJSwwsPzzCw_sSvZXk3Slo3c24eQEMNX6NyV8MP8Rk1iWDaV_zERhT-dM1-PrM-aZxvJPQDmmuTaRKZ4tExONQVclfVRbIeA3AVb-vRKgB9mLJCWWBnVVyhWiTkKet8cEXj7ZVgK80yejm_mBbdQ4KAPAJni1RZa2JWey3NqGZlOimMGeDpUENsLW7ef__z6NMQnLb5vwEayhdr4OFlp59eAI5mLEZRDqpQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"H1JXUesUD0F3lhxcuQoRhXjmWDvewTFtGEQe5WKZkLi-kbNeXYjmj8qcbm7T9YCRNnhCtjAcefpWZCTeF26tDPunQA0kHHhYkpqZDCpRdzf-6Mxm1IXxscnp0g3om431WQXZmf7FIQEcF6YgYWF4t9twEBfTBBguRhgJCIFZA_7-phYVEG6R1AZ52HACezdoXZIw9FeuK7KNE9LwfBxvB2QWZnxzUms","iv":"id8bvQio2jy4_4xe","tag":"Bp_RLw0GgoXyCVbDjC7_xw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"UpKgao9FkRXKRvWXI6wR1SOkc9ubNW63mmX0JP5MvWx3AZnPKXtAEdM1uB83FTrr5_k9-TGIbvspKFnLDsokFXBG5ry3YwDbbJFcKXk5PWCpZsmwECsq6eG1Ewki7DgUOWjx65ZbDIsIavsLEFtm0J1WBkMBot_mNpVvj2Opx0KaNQqbm-pudplXDzFTqByGgWkw_V5wV8f_k3kmfSncm8Ky1cPKUZTC7_jsD_tFtAIIUewKG_DqK-k-01AZCXE4tmT2CDU8xGW_EFJfbXkHswLC4552xEJ4j0265BoD7mo7-SHaeZ08cWIeEppyOw5osNWrWRhPKPiYSOqRdHsh2g"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"G2aTfp1NVbsPZTMxx8HAXsHlrTnJbbZ_dE7hIJPgyQZeGMJXPA3cJwQ-rZN8B6LI23qRooA6lXHWZbxqLZSAUeamENgIfq8jDVFL6LxZPFnuGNT6XY69GF4aph5P4xusk4BHWDFHmQy1GaYlgKlZ2TYb1Hrfm4qWSR6GM2xpxW4RzwfDU0or1d9xsVP8VwCOzx2B9_LIkS1oa5uulzqn0HVcPn-eS1CGCvjhpHqS4EU","iv":"EGXdp5njMEo-JmSKBfjvXQ","tag":"s0qjKqKE7l0TL8oa-hVeKA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"QILFkz0sewJZAFcuKe2hVvO7uuc6kBRiNOcBzhmjKAcs-wSJn5UzFYmeLcWBb658F9YRmN6Xzhe-rtbZJOFlgce8za6V9V71h1h2SgAOGjohflAoacq-a04rcEqhBV3cnH2rMoxcP-OEMYNVa989A8agKq7noYYzRpW6bKLkkddqaQ5XNrRSRPKDWtAMftPEKApdikg1TG5xf-o651sZznZFuvMTN1uMt1A85IPZiDveW8c2sMjGdk7yQnkK8ODhcYsHNNFERsSv3gaae0X_xy8rgu51jZwPocjLaSAK70mTegsJxnk4FAbuYMkfC3ZWm5VXjZTKFhC70A0rbY6sXMTjdBh3uAJXpC7gmg_oKPFse1q3L__KlPJy5vtMFZVT4JN4h9dmOZ4ZPw7X__c8Qat0wbjf7MeFPxfXs0q2ZZ_vPenAHiPqjR26FIj446BeKkg96-NHfqSZmM5aPZCQ6bRO0ODP-uizs3-xGR9k2aCqJmj4nzfGK76fIPMFGKxQxDSq81d_WdKP0Q-0pH4FIyqEf9n8PUzx6yrflEztc4RqnBVy1OAgzF2DsX3WO9ET279WTyFTGAOtF5kpdBduCsKy-YFDyOUQnl1cXYo2iUyGIVqX0K-KwUDACjg_SwAdAT6sc0guW4r_XrSBHPsWXibTgCh8kdDtldUDHOVFcWY"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"4P7OnC2zu2tz-kYla3rYjm0BUMaueWOrXSzyuRVwDCg39EPeV8HKMb1IKOtaIg4NVPe7M9KqbF3o3WSj7kcR0IhzMnZATucFJ-8PNkZL4rW5hB0zHTYI-Nw0fcfGzwVN_By5wyG_WQvA5Kw6rSJKnJX8LGohLv6EXQMYal7oiwsOtBw349Pc2vOJ0t6pCjGukwoymkj4l9z2D68UfwCTltfRsG3bQWWwcRtgo8L29Mc","iv":"ln7DkIIZo-pWQ4rKMnkP9w","tag":"6zmLsf0ncVJlpoRZS5Wr-1Rff1rKZD35","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"eXzUvKkJ8a29pNxfK8Q6MJdJV5txMeozw65mz1vNHMopDh-t4tPp36AUAI-EgQ-FI5cB78Eun477tetx-wKcrvkfQr_axYnE5XxWa3F-5pRJ8N7zLpCg5JievqCetBAPHqIdNSD6aFZFPu7vvpGVufoINmpI4lP_OfrWzU5fpe-K3JMkHee05Zdb0dXRsCJleaVr4WgMKvgUPLi_Fyr1vwjCKjM64WocC_Uw1h-GodvgqVI5douR3Hi5cGikUwkOUNhC3e6MhlOyScemnYsFFSVT107X-v7OjGzQvomXEAaczqR7BlgS5dHtSMoPRfsqyw2uPUXE7prZlLfIGSbyQfs7Se_aV4nstWdCmzPWR5uQ7FsSIuB70vv26jr1FoLdzURxZ-gigddet9wnjloGGsCWRYtsxh7SKpaQj1XYZ_M-lsSCWFJFKyA4xFS1SynukYHeZxwTqL_OSnmuBfoMMbuAcRly3j9saTKDtJnU7cgWe1AqIeFFqwAeQH_KWx8W2YSPJInrpAq33MluNVyJXpOFb3P_phF28pejKWJNf5GKWgEmpjQ4k16c7OlO-XOi421UV14Xy9NmIb6uMeVUcPaZzYgMcSVN0ZSeJ8I33p_OaT62rwROO7vRvm9fxuXSgeDhMvjU8pOJQGpaO_2ZGLIAa5GaW7WmnnLyaMBMUdo"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"4IBUPfHY19C7v-safTibYSvY_QIYBsi2rfOczWDW-Zn56yL20Iayc3oP8a0gY2e0PSAn9QvOHXhnSRwvfcXggWDBlpM7MCwK6lhhbqYf08vYFibKmB0oy_AAXe8_ysGBwHhPGTFE-uEXnDN4Oa4Q4jCMQ0XNHPDhy7niMrYiz9L26ibF2weGwRue9xpmd-zlNpZ1M8vj96i5VOC1WusJi_cBpfaXQDmCTCB8lhRJnRM","iv":"iDu5jNbgx1uSlv6-nJalzA","tag":"gnOPNV-nqL3qhg-Sn_17IZAyg0fOwr9NAr2ixaly01w","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"scfdJnEBkAX8ZB6rrkzo7urgG6K8ZS2uDqt7R_3MMu8vme-J-sFzrbgMr7oBunAZFECjagB5H7UJuZLQHH23zpcA2F1Xc-YCnIzZuCHCha-elf7u8r4Nev94J_Re3V0DvKpxVhtUVEtMev7WcJ-zCOw2h7Px3qqrvpm58N2prYtPFQuUnC8nbUCCcpxre9nrs3-BzwWTrM70DPO88W-Um4xj1rqeql8ySSCPhtBIS5MWGbKPnb__DT_0_cykKbki_Q73sC5rDMIie3ukGrbzjeUx0ylbt_5ELp9qh4mxP1wz8GwMluASF_XqrTnQQBsAOP13YfeSiNp9QO0xo4FSoGEAfkrXwZG7cCkzVjdg3Zdd9tx4uSGiVkC7-gu5HcChtXuQlfO5PQTW4QbcAP3nXIvZ3bXmU5eeorOp3OPY5NZTVb5A6ypO91glV8vgQZ6pLovmFslWICrZPFktBmKVZJeJqMjlv1ECaItzQSP_qlop5UENupcoRVEyS9ucKOKUEtk8q8eRBtM3EyKC6dlJPxuSp-XCp0fTuQ1jVcIFPrbVnfpbkXAnczxgA0JIgtkil3v_NDsUjEJjR_zH2HJXrRd6cxs7j_EA7En7eNExXdcAVJhWG_yP1Ub9JFv0WQ0op6AoZ0oytq67D6VPvwNgS-A_YxoWhVbgXS8__gvsvN4"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"ghUJEwroY_2vst0dkO6Idl8dqhPe6MqMhUmiI3enCxmJIasCSuVbYzy21UMdq0G-2cTveMtn-G8pUzkHKDbrzOFOwsXVzt9ZHag0doc27-INPv4WYkwsikGQL3PnIOzACJHOXafmxyIOI-HQxBR5gvFaK8hQs2rtIQsvmNAlP0BIm6EFBhcrGTc0uOQC2ldPcB0gEEQpTodKKAJ9DyUZcmWYeCr9lvU","iv":"GjgjMuEtJ6HNuJez","tag":"2Khni7fwgCNqJQUB0taMMA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"RfZBDKkFbqRTRm6cI8SIdO_plSKynL_odIP9wuGH9oBjQDkKzyABUKkzCWnVE_hIKgvWzd4ppqmhGog268dBVpwaZXF7berRkwKTdCmIxPydzVcIKUUSx4ib2M3sURj0d169IWkLX4KfQwdaaSkP9T8dpntUDoBW7qgj2zEqLqkI2TDlwDSg5q1PfLb_lxe8nKh4sM_BKoCmrCvyyOzS0gPRjkufj2or6NhUEqHslF2zuzLQjEd_0K2ZxRh4_juNkslIN2Mxh6VM4U7UNoHv3lniudPpG3fM3O9UFkLT50Z_Q5aIWYXIUpk1C8U4CTBPIhZjYEFg_QOrRUb9YazhP31JXMFD3ulrXEz0Q5wuvUbiTf0ijL-K9wDz8AZLg8QGs2fEX9ZVD_9XPfzDOlAzowXGGIBeapz1CWGqF4xnvE3U5knXnNA58VmKfremy-oZInEwMvUBthXnnCKfwsf5tXlXRdHr9kQGDXLU6Q0yjnP-trJzv4JgGpQbB6_IT0KunW2qDYhX6zv3BunxqkNNZTJjhgOdMX6Z22lUVPD1H0Cd9_doftnzKuTa_fl6nDRwXLRWMOlXdTLO3AOhO72nBrhMt-PBwwX9Bpg08nThEPjpD7M5E_iHI9zEf0JM9iDwy3Gph6AKiokNswcQruN_i5eTB37xZ7IeMZA0vQKymU0"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"UWxD_tNuJpzQKQslAxWc03d_bB1b5POoImizYv--FQVFuShL-sjeWdm9L8FU87o6P43arC8WoZwrcdJvzfgVVAfuyt6cRvn33RcqhkhjhnLYl30VwaGmXn9LHdYlnVYtzzvaRooMIqX7HXsFarPVRBbGqokHGxCbKYz7ZxUaimbhhZwzkwPXZi1MjuyLgYqlKafpWaaxcLopor_Q_2pBz4OFO3LFHQ8","iv":"k2q1H8i_galIGE79","tag":"sur6mou_q_lXOsZoFz9ylw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"bBh3zO9DlvATiGKbRghq7GnUQJGMQ_vmmcE7gfmysxzHLh-TX42Zwi6JlMZZPnMtPTlkv9EnOLadl0bignpJeWL8ZyE1FwNQ3U0FOnwFA9BLESac7jlX-KExMiAoznZ8_4RIasdAjM0M6v5ED28fBKRWW9co-WAE2Ch90z_Hq-Kr2aNAaYsm3CWcZYErCSp27GCs7FPVWwIo-lGQmesizh6nYhuy3f4ib9T_Utj-vhshW-Vl7xCjqLCI4beI1jiZjRYeHl4bxIKXSVajHoCxa7-w6-xFtzKXto1GWl0lgp9jSLu3gF2wqZ2ZBEvTgCo_LzJjwFEdmVFpKkseHsi0st1DomdDEduLy2ZuL4fbeQuvAA_iTNJZILIAyoTOrmrKXCCyHZsomiw6j_QnSXu07t5clViDUxGqenZplGKPUu_6b-2aim2AEUa8_aZlpzd8xA1zmpP08oM3SaoQtH_1B_VbQoFKHDIBIGMuHiHLoGHE7vZWzPjxEw54kPXGznrRjDdibSAy3egDOMFFJxbIsAYoelgm9S8K5pO-Zi6KiDWKbXYmGmhmlBqYBtEYixbYumvcdyJ-FpwM_hKmG1DfXpqhiH07g6ko8glhIcBr4GgZ3OGugt8NWd3aiykxL1e25rg-4A6FoQMQ6ixp4-8apTapivINP1REPngACEwvAMA"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"ImrQwhrkhCHsDqElXFAxDOcSwwv9J4I8Vn-RwYh3BuHEDX2935j-EmASf514il8mM-3KgrIhdE0_etiiSA9st5YfWlxEqAhsFf5FgGZlcyj4_rat3MMapcpfQYYf2a_dQvwQSj7tOrDAtFomYNQMuwbocLpaeQM_Qr8uoRu58fQHBZNF--dgum7gqvTm9Wd6Sdwl88sZeNhuGiU09SAP3NB2U2N-Q_Y","iv":"ZnVjlvwRIAggr5HV","tag":"grHDy7knCmF9itDDm7R9xg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"UPrNyHeO_gw9FmDrzy2nVVKxQj27zmYGiAPBB8pW-I1LbK4RSDKuocjW3ITvwKRA1WnWe3auVMh6M9_yQy7GPejXuS8lCthK3BNdP5Kv3doqQKFyfYdBZ_SS6RZ8NcXoz4FWj5iNF8pbsPCcWeWxDt1J1mPNiHhgRVUBXgqIKKyVBcOoP5ZhrJ9vJXI87PwiEt-awUrg456wI_ai9I3e-8i7hB-C_moauHNeTckMClevlfkNSnTigUNgcripbEDW1hq21ULuy2_xdf8eM_dJsiFaw6uBLJGhG2cEq2Aj0CHGP6c-HHXyBi4PYdGSXICG-RbePTcog05xXL38M7k_s62gQAG4obJJnCo8b0ZNbcUjZrfa8mxnNubFyvj6hSbJ-LaOpSLgH5FPRZcmsopuUvhCAVP-Rb3qm2m7vOrB4vxD9S8zqvfUKql8Rqxq8oPVxhpMXvlPIrOOMkLbVdddcUON_BdA520FlWgCPOXzvLpSXAydOqdy0YZju1P5u8nmHe5wLGnDGpCa7E3OTRyz874TfsHtVY-PytkXttWGS4MF5m_08Vc6NP3DLIBHaUm4UUwDSsagm6kiK3Cq2pIRbrAHGIWRpbimu6vlABNShTU2SyT5caRSVVUBaXmI49SHy7Lmg6BLp_z74p2zHCcP6i_1l6tXVgaUNeDf3D2YWxE"}',
+ ],
];
}
@@ -83,37 +128,39 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'RSA',
- 'n' => 'p_Gffumd-Rj-hrWEKMZdfOw0JZci3dfVCkLYYISt60ajg8aktRR6Rc_1m_NMPIP2_BK5kXwWb74lqLh-x0iunfpgxHWnw4Wy00V2YwR0MtgbRW4JYyJjw9Fj7QooWdqRV7OoJb3VIpmBqr-JKjTV-91W6jPWcQNsUFYL5JsJ-sM',
- 'e' => 'AQAB',
- 'd' => 'pYj2sexpJj8pmfPOaTZkrZ5QJAEdf9aeiTer-S6uEqqUv22LqWSexLMfHvEn4rocNwfp2umZX9jnW69GXv1YBouBqrnN4vANPnjFp8y7ejKO_XDzKrf2c5YMgm7l4eE6aCHzEn2kFy971f97HN07KfiHNTln9boNGVsA6TpVrhk',
- 'p' => '2zIyk5fQMKC7vHqDCGQ-xEXRgiTZsQ2fN5gQ7rDsvGJdDBfpeWA8H3_bidSCNfAskSyhLoEFwQplARblm74BVQ',
- 'q' => 'xCRtcvPKTJ_uRZ2kxn8zMlETXcq1CBbuMLhZDl4QT6ksgAoOqnqITwckSXL2sTXTmDwgtuB1HYXk4TAXhwbrtw',
- 'dp' => 'EVJfMtCtcBpTm6pmznP1jdcinlFBLr-v1FndBK_QlXaEed8t4Rycw7R76eF0RMTtEK_hMOabSM0EfFiN3ofeXQ',
- 'dq' => 'rA5MWEcU0YyFhlnYHiucrGnEdEUJ8pOy09gSfvDym_6Jw7OO0-rywWhBY5DOZ_sQpv0vsVxKP-ChOwxlxxPCFw',
- 'qi' => 'FKqVgknFuntcWE0b4NSoqROngDbxLd-lQ2DWg9z7G-knJTizDwj_7tSlNbqYlcbXXNf5vRnhQCePb4KqKyPh8Q',
- ], [
- 'kty' => 'RSA',
- 'n' => 'slVGbcg7Mr_tQmfDJAIWrlWjBWpi_JzGTjCCVZGOikH3ekkUEH8TN39WJ2HXBwSNmT4bh8eRJsUyBKYr8yz3UdEUJxloo2SVZEN0rXh2Jb84OdObom1CFbPg4yQOvLN57pE06zc7GzQ1MKF2dqRFvyEyibKcs3V6J2DjvDXbxJAnTOmxWjLRKa6v9aKrNCakK_qSRzEwR-IbNnGHSrQr1RaDQ2gQ7FuVuNOJe8rrdlP1dIdg3ElzvDgjg3NY54b8SqwThXt8gRM1VKg5O-6fRdHLPS4L0DOElDlc8lboqA6oI1187cbLq__4P8c1pordIBmHXdbSd-4Q1BYnNVqfoQ',
- 'e' => 'AQAB',
- 'd' => 'rhaTB06lg5ha3C2BESC81XkiCIJfmWzOJbwzL6dFd_CHz6eRX709nDrBdvaLO_2U4VkA9R67sxZkCqfRVbW6xfMN8lFalc72C4fSWhmzdIvkLodFcl2oWplb20Dy5gFq8ZptB4XGPHtNxWiJxa39rGSS-lsToBj5o4FxL-V_4bSZOLWLfUIaFS5xJ4xZ6rLAH1gd8AlUbQfcwToDCjzyWSZDHFqCtOr10tD_3OeK_SdQoG4FGpnNo4WdUstTRTIYGaN8N_ThJh-f7bWUomEuBFhKT6FCXkxHbPfq1t3q9YhQBmg2_Jw9gUWD4lukPDpvdp-_blMRqs-9JNkL8plEsQ',
- 'p' => '53OBPF6RmswOMkuK8MhXjLT5NNCaFce9rKkpK-8KHK7UqVHqW006mzJ3kYVm2nIFODCqSO6RZcmEhLgrpZhAqbOl07lvh5nhhiXJyjaw6rcCumKTbjfX8dksnxHG2ik0Y8-1PHJwhIRHrjAeuf17XHgaATKOSxDVYSk-A7MClFU',
- 'q' => 'xT96R1C3y4zakgYWdThV9fn4sFgrlUFWrcMiis5dldl2k8aQrRCXRzWUNMK9G12ibBnXipVT24ZOQKJ0bqeoMU6aopY4DlsyWSzCEfJ6ojSE6Jd-Wnwb5TglNhXTq2wPjkpdbGTum7UeXYhdCJdwhc1GUkIU3ctTquY4isuyih0',
- 'dp' => 'f6oJbfgnzj-h0QI0KC4JhJZKI2SwqTTcnYFNMWuPo1SX_rEtWKEXo4VJyJ3RpspfsKe_Na1Jy-BE1UQU5yk8-Z4a6NcO-rfZWro7POu_2CeMPKyk75Wj6kXFRBR1H968hBWMvUPOZnnkY-Ms_6AezFl-1oxBSoyFditehoHV-WU',
- 'dq' => 'eoEtMaOpMwt9KFoNkqn1gXrKAMQR9XYKHotmJa17pDjWk3ssmcAHJJvbO1WDW76wxNDb9F9AIMRuT2hWRe9s34rBMZ94mzn6sDXDJqBhl-JkdYy5Vftk290eB1RRDVNk6eu30D1zkFNR06eAmHht0zwlo6sVCJdilG69yT4v2eU',
- 'qi' => '5vefHlL9JtiX-FBMYT6CSo51c-tonow5cj3Jl1crRuxod6zjXM13dr4bki40MT_ZQ8x1kjerFuoA1fYyktTAQnRgcafjYyZJIkh3RdGLf-_kDQ_up6v-k4IEile3RM_XST5lyq1ei6UuRO5NQDa5L9OctY5QWDz-rw9_51iKSUg',
- ], [
- 'kty' => 'RSA',
- 'n' => 'zBlgpPT7LeCKZbaRoX5iENY338bavaU-d_vw6xF4hYhqSBYoH2mt5WPeIW-lz9o1xlbxw-W6YnlHMuJfefnXOvZfFUNOK5-QGBq8ZJY7sfNJ0vxHJ2FJ8cNvpChTEqG7CRU6ZK_V2h5XuQFg4FGASbEgiJjRoPHrXwwts_e1ICIsW0Lg_YGBOk8RqlzguD-NcexYpO_N0VV-J5J5jlVxAEdVgddT-d9sGBx2Vq3PE3D8ZMTZ6UXTvmmdGK_CA-0Y7ep3UgYKVRmv2XLwwsmPWYJy8Ky9wqTnt58Lz5H6iZAGmgEztaf7hB-hRymDTFRWn2-zFhd1-TdqQ6xgZyfA4Qp7vFe1s9LZr_A-jFN2ZO7sP2x6e0dVDszzo0dJ41jrY4aP19hpOnPcXQ0sqjzahLmajekmtM3GjqBd9-bODXqCWiOhzc5Tl4Ru7_N1FEqUXVwBJhWelChez6DVTMeNdIJVw36ARtVNdsBwNTLK8q8n72cc_zwBmhFkGBdxHercMjmD1YJAaRfXfh8OJBbFJDSZkMp4N5PwK2iM4oy79xTsB61OZfEcwf1F4LKSDyyvJC5Mg1_Imc311nAdsDohBQMZquh-V73c6DhhBBRaAKk1esQoGUgLVBXsfR2RABr28WFM8RmOZKRdpI9AJO-6Z8X7a4JHCldljpyOX4mwWG8',
- 'e' => 'AQAB',
- 'd' => 'WS-lua-Lqyp5j6TN0oIFnFHfrJuarlBtEcU4K6BAyCkqOEHmWoO1h42yXW4KSN-TrA4GK5JRdgKFCEk_a2-vi4ZpWkNE_28EamQUeufjQgmL8vRmq2CqDUlXmaY9VuDxeDCcia8EhgHIV4GwsZUruAf8rXQJ9oiAT9JkjkXqEhacx2xcIKrcq3wtvgJD-H9c8bFTsw9PIvB25hftojLX5EVHqitL-N6Wv5qAY7Qjzt0KjYYvqu3mb0h7a3QyFcEfqadRaLhW_4TwANdnOdcWGwkT7POvIEUrNGP9p0Ck-EPFfrqTvAehssSXlx8eztXz3EvVOAwcc0Cx4MyMe8c1UtmKaXu7_v719irOXtECAtr7FfK_ycFA9dVQbKKBkj4MAidfgSLm5m9Ago8QnuyPHHktCcMzOeQNe6eY97rrBNpI3XEJJM97hnaIn1_g-poQgrnpYSZhTsDaKe9-ls8sD6RMqWHnVGe_bXsNfdi5G3iMqXAY94l0Eqrr_jTXdkmA-xTBCFfHcCLm5RDRBgc1zVYkl5d8rW822pyN4hfJsV1JR0KAltUQ2TCFR6fo0e6Ne-YbZDBHHPAD_s3m-2zSXSlODIG-bqR7beb8Ta9kjZo0advMbo4HjcY_qqd5KIY3HuyQWUGMABg96w_JxgFXEQVp3a6XQJaewQSRhsxTtGE',
- 'p' => '6l8TYYzb7VxrUFtKBbF1dTFjsRmAOajL6BGNB0Yyw0smZUEZL-HHeW3NzN4qB03oVUnNeAKKOde3-8mgDxi1qzB6ytqhJqrv0iRpsDJax7OP_F47um33nWcsipCHmzczM7f8HBmzD_beoMPGvsoUAzNIv9Ka0dz-1hQqz5etiKSMMwozAnUj_TqPLedc4DG6EaW8x_vgNfW-_puK-IzwsT5YjltQ8weufNxLlrT2sx9QT05jbxe2YR2ijNgvKxo-G0wz9A8pn5wiPB3NsdsHAy3mrtjMEjwv_Z65y0XPPO1W1Bp68XICknzghgTc7nZR_31NSrtEPmQBlJqoJPis-Q',
- 'q' => '3u8h8WiXSx6AtPGQpvmNebZqi66ITQcAhvdF8O_I1LdjswBTZwpXqKXb5kLBPXOAH6YqgxURNwZZ4M5Ys6iv66jVzPbSU_MMHlsiXzgeVfUxwbdOHpiZhRzoB2gzznfFDKR8bu1S07tYePeaEwplsSg2Vb5tC81uNIM1sshfeuDO5cZOH8DmuJzTjhGjb8CWmbgLnFOSBuPl-Vcr3oYVCnWzvEfCgUIy5tC9KeBC8Qe3O841SjbN3yZ8EEXwcUmo9lOt19s3LKBmtT94SXtok6-wHVWlL3YbzRg1kl8SVjN28NJd990mjPhjqBK8KyChCxoPn8lIXEUwGwFmIz4Spw',
- 'dp' => 'tYIqXVscnAf-KD565kvX_ongfjCUqJL8T97_zIlmGO8jbjlrSzTdKkKKpsXL4NpKO3srwGyfJkrVdw9ggTCOyWSDRITrVyn9D08Z9tYYjh6XPUixkyFFKkbULP_ftaqbYct0WULh9VQoeHMGgY24z_2wsrZlJnCzf5Ig0aLTR0bAOWsFtDqKQ7xNVKygthRs2Ov1dx-vNbr7Tu2hQ_rLEUmKhb1cxMrHLHXjqHS_tlti8_huc4P2v-GWmON4LDZnsPZkKfhwMOdXcB1Yxwwssx6iT_kgmmK4e_-oPi_zXmkk3KEhY8n7Cf3iWIh9ncROnsIo0N6U7IjA3Jil7fQU6Q',
- 'dq' => 'kYMy-5jST_Tr-69FRMfU4WIA74WPb_-nB3F1VIue4cGGMPuAdNxaVTlVbFmcOlkegwn566-fmfPqTINDgJkVotOEIhHlPWiCO3ou2EoP-vldbd0Q_4WJh0pT5SnNzvF8TAE9O0Zq7sr1N5geGFmMAPOHa7YtBSwkx9_w9-4z7Ee6pF4o9i76KfwrVisLK9FgO5vW8EXYJekxXevZNZj9OOOU2stYGPi1stUC88duylbH8iBpxjQ5cnNzPUf5Zmi3AXmjGib7P4S_JYT1JbmIjAV8Bdm2RWFpShiINy8ZD-ztsMkPDs9p70_d9IGuEtRsaYusMRa3xYpfmPDz0wMcNw',
- 'qi' => 'sEHok5K2HG0q6JdNzHB7FsM9EJxY7c6Gkya3Lfr1Rr5OYPcAosEIZpl-1_hCQ3MLGKT9UlYjZrlyt6SOUvCkxFX9slDZQeagmlSNMyWs18U0MxhFpEGthqLthS6ik0kFlschiSpMMyKVI8kgQR3OjMDcA_Mr92gZ9fl-mhtl2yfXJsBIkFBD7yOyxRxawy7v05RehoDHmdy2cnzaakPvg3Cekma2mfdjYgN5JnS0A20pC1zfoqi0D3B4KGrYVZhyJRnBakOUmwvE8rfmcjThx169LiAea6SYs7k9jwUCVWrNexXItxGdbQbbrb-FUotAcAQSDr6hHU8H79gN63WoOQ',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'RSA',
+ 'n' => 'p_Gffumd-Rj-hrWEKMZdfOw0JZci3dfVCkLYYISt60ajg8aktRR6Rc_1m_NMPIP2_BK5kXwWb74lqLh-x0iunfpgxHWnw4Wy00V2YwR0MtgbRW4JYyJjw9Fj7QooWdqRV7OoJb3VIpmBqr-JKjTV-91W6jPWcQNsUFYL5JsJ-sM',
+ 'e' => 'AQAB',
+ 'd' => 'pYj2sexpJj8pmfPOaTZkrZ5QJAEdf9aeiTer-S6uEqqUv22LqWSexLMfHvEn4rocNwfp2umZX9jnW69GXv1YBouBqrnN4vANPnjFp8y7ejKO_XDzKrf2c5YMgm7l4eE6aCHzEn2kFy971f97HN07KfiHNTln9boNGVsA6TpVrhk',
+ 'p' => '2zIyk5fQMKC7vHqDCGQ-xEXRgiTZsQ2fN5gQ7rDsvGJdDBfpeWA8H3_bidSCNfAskSyhLoEFwQplARblm74BVQ',
+ 'q' => 'xCRtcvPKTJ_uRZ2kxn8zMlETXcq1CBbuMLhZDl4QT6ksgAoOqnqITwckSXL2sTXTmDwgtuB1HYXk4TAXhwbrtw',
+ 'dp' => 'EVJfMtCtcBpTm6pmznP1jdcinlFBLr-v1FndBK_QlXaEed8t4Rycw7R76eF0RMTtEK_hMOabSM0EfFiN3ofeXQ',
+ 'dq' => 'rA5MWEcU0YyFhlnYHiucrGnEdEUJ8pOy09gSfvDym_6Jw7OO0-rywWhBY5DOZ_sQpv0vsVxKP-ChOwxlxxPCFw',
+ 'qi' => 'FKqVgknFuntcWE0b4NSoqROngDbxLd-lQ2DWg9z7G-knJTizDwj_7tSlNbqYlcbXXNf5vRnhQCePb4KqKyPh8Q',
+ ], [
+ 'kty' => 'RSA',
+ 'n' => 'slVGbcg7Mr_tQmfDJAIWrlWjBWpi_JzGTjCCVZGOikH3ekkUEH8TN39WJ2HXBwSNmT4bh8eRJsUyBKYr8yz3UdEUJxloo2SVZEN0rXh2Jb84OdObom1CFbPg4yQOvLN57pE06zc7GzQ1MKF2dqRFvyEyibKcs3V6J2DjvDXbxJAnTOmxWjLRKa6v9aKrNCakK_qSRzEwR-IbNnGHSrQr1RaDQ2gQ7FuVuNOJe8rrdlP1dIdg3ElzvDgjg3NY54b8SqwThXt8gRM1VKg5O-6fRdHLPS4L0DOElDlc8lboqA6oI1187cbLq__4P8c1pordIBmHXdbSd-4Q1BYnNVqfoQ',
+ 'e' => 'AQAB',
+ 'd' => 'rhaTB06lg5ha3C2BESC81XkiCIJfmWzOJbwzL6dFd_CHz6eRX709nDrBdvaLO_2U4VkA9R67sxZkCqfRVbW6xfMN8lFalc72C4fSWhmzdIvkLodFcl2oWplb20Dy5gFq8ZptB4XGPHtNxWiJxa39rGSS-lsToBj5o4FxL-V_4bSZOLWLfUIaFS5xJ4xZ6rLAH1gd8AlUbQfcwToDCjzyWSZDHFqCtOr10tD_3OeK_SdQoG4FGpnNo4WdUstTRTIYGaN8N_ThJh-f7bWUomEuBFhKT6FCXkxHbPfq1t3q9YhQBmg2_Jw9gUWD4lukPDpvdp-_blMRqs-9JNkL8plEsQ',
+ 'p' => '53OBPF6RmswOMkuK8MhXjLT5NNCaFce9rKkpK-8KHK7UqVHqW006mzJ3kYVm2nIFODCqSO6RZcmEhLgrpZhAqbOl07lvh5nhhiXJyjaw6rcCumKTbjfX8dksnxHG2ik0Y8-1PHJwhIRHrjAeuf17XHgaATKOSxDVYSk-A7MClFU',
+ 'q' => 'xT96R1C3y4zakgYWdThV9fn4sFgrlUFWrcMiis5dldl2k8aQrRCXRzWUNMK9G12ibBnXipVT24ZOQKJ0bqeoMU6aopY4DlsyWSzCEfJ6ojSE6Jd-Wnwb5TglNhXTq2wPjkpdbGTum7UeXYhdCJdwhc1GUkIU3ctTquY4isuyih0',
+ 'dp' => 'f6oJbfgnzj-h0QI0KC4JhJZKI2SwqTTcnYFNMWuPo1SX_rEtWKEXo4VJyJ3RpspfsKe_Na1Jy-BE1UQU5yk8-Z4a6NcO-rfZWro7POu_2CeMPKyk75Wj6kXFRBR1H968hBWMvUPOZnnkY-Ms_6AezFl-1oxBSoyFditehoHV-WU',
+ 'dq' => 'eoEtMaOpMwt9KFoNkqn1gXrKAMQR9XYKHotmJa17pDjWk3ssmcAHJJvbO1WDW76wxNDb9F9AIMRuT2hWRe9s34rBMZ94mzn6sDXDJqBhl-JkdYy5Vftk290eB1RRDVNk6eu30D1zkFNR06eAmHht0zwlo6sVCJdilG69yT4v2eU',
+ 'qi' => '5vefHlL9JtiX-FBMYT6CSo51c-tonow5cj3Jl1crRuxod6zjXM13dr4bki40MT_ZQ8x1kjerFuoA1fYyktTAQnRgcafjYyZJIkh3RdGLf-_kDQ_up6v-k4IEile3RM_XST5lyq1ei6UuRO5NQDa5L9OctY5QWDz-rw9_51iKSUg',
+ ], [
+ 'kty' => 'RSA',
+ 'n' => 'zBlgpPT7LeCKZbaRoX5iENY338bavaU-d_vw6xF4hYhqSBYoH2mt5WPeIW-lz9o1xlbxw-W6YnlHMuJfefnXOvZfFUNOK5-QGBq8ZJY7sfNJ0vxHJ2FJ8cNvpChTEqG7CRU6ZK_V2h5XuQFg4FGASbEgiJjRoPHrXwwts_e1ICIsW0Lg_YGBOk8RqlzguD-NcexYpO_N0VV-J5J5jlVxAEdVgddT-d9sGBx2Vq3PE3D8ZMTZ6UXTvmmdGK_CA-0Y7ep3UgYKVRmv2XLwwsmPWYJy8Ky9wqTnt58Lz5H6iZAGmgEztaf7hB-hRymDTFRWn2-zFhd1-TdqQ6xgZyfA4Qp7vFe1s9LZr_A-jFN2ZO7sP2x6e0dVDszzo0dJ41jrY4aP19hpOnPcXQ0sqjzahLmajekmtM3GjqBd9-bODXqCWiOhzc5Tl4Ru7_N1FEqUXVwBJhWelChez6DVTMeNdIJVw36ARtVNdsBwNTLK8q8n72cc_zwBmhFkGBdxHercMjmD1YJAaRfXfh8OJBbFJDSZkMp4N5PwK2iM4oy79xTsB61OZfEcwf1F4LKSDyyvJC5Mg1_Imc311nAdsDohBQMZquh-V73c6DhhBBRaAKk1esQoGUgLVBXsfR2RABr28WFM8RmOZKRdpI9AJO-6Z8X7a4JHCldljpyOX4mwWG8',
+ 'e' => 'AQAB',
+ 'd' => 'WS-lua-Lqyp5j6TN0oIFnFHfrJuarlBtEcU4K6BAyCkqOEHmWoO1h42yXW4KSN-TrA4GK5JRdgKFCEk_a2-vi4ZpWkNE_28EamQUeufjQgmL8vRmq2CqDUlXmaY9VuDxeDCcia8EhgHIV4GwsZUruAf8rXQJ9oiAT9JkjkXqEhacx2xcIKrcq3wtvgJD-H9c8bFTsw9PIvB25hftojLX5EVHqitL-N6Wv5qAY7Qjzt0KjYYvqu3mb0h7a3QyFcEfqadRaLhW_4TwANdnOdcWGwkT7POvIEUrNGP9p0Ck-EPFfrqTvAehssSXlx8eztXz3EvVOAwcc0Cx4MyMe8c1UtmKaXu7_v719irOXtECAtr7FfK_ycFA9dVQbKKBkj4MAidfgSLm5m9Ago8QnuyPHHktCcMzOeQNe6eY97rrBNpI3XEJJM97hnaIn1_g-poQgrnpYSZhTsDaKe9-ls8sD6RMqWHnVGe_bXsNfdi5G3iMqXAY94l0Eqrr_jTXdkmA-xTBCFfHcCLm5RDRBgc1zVYkl5d8rW822pyN4hfJsV1JR0KAltUQ2TCFR6fo0e6Ne-YbZDBHHPAD_s3m-2zSXSlODIG-bqR7beb8Ta9kjZo0advMbo4HjcY_qqd5KIY3HuyQWUGMABg96w_JxgFXEQVp3a6XQJaewQSRhsxTtGE',
+ 'p' => '6l8TYYzb7VxrUFtKBbF1dTFjsRmAOajL6BGNB0Yyw0smZUEZL-HHeW3NzN4qB03oVUnNeAKKOde3-8mgDxi1qzB6ytqhJqrv0iRpsDJax7OP_F47um33nWcsipCHmzczM7f8HBmzD_beoMPGvsoUAzNIv9Ka0dz-1hQqz5etiKSMMwozAnUj_TqPLedc4DG6EaW8x_vgNfW-_puK-IzwsT5YjltQ8weufNxLlrT2sx9QT05jbxe2YR2ijNgvKxo-G0wz9A8pn5wiPB3NsdsHAy3mrtjMEjwv_Z65y0XPPO1W1Bp68XICknzghgTc7nZR_31NSrtEPmQBlJqoJPis-Q',
+ 'q' => '3u8h8WiXSx6AtPGQpvmNebZqi66ITQcAhvdF8O_I1LdjswBTZwpXqKXb5kLBPXOAH6YqgxURNwZZ4M5Ys6iv66jVzPbSU_MMHlsiXzgeVfUxwbdOHpiZhRzoB2gzznfFDKR8bu1S07tYePeaEwplsSg2Vb5tC81uNIM1sshfeuDO5cZOH8DmuJzTjhGjb8CWmbgLnFOSBuPl-Vcr3oYVCnWzvEfCgUIy5tC9KeBC8Qe3O841SjbN3yZ8EEXwcUmo9lOt19s3LKBmtT94SXtok6-wHVWlL3YbzRg1kl8SVjN28NJd990mjPhjqBK8KyChCxoPn8lIXEUwGwFmIz4Spw',
+ 'dp' => 'tYIqXVscnAf-KD565kvX_ongfjCUqJL8T97_zIlmGO8jbjlrSzTdKkKKpsXL4NpKO3srwGyfJkrVdw9ggTCOyWSDRITrVyn9D08Z9tYYjh6XPUixkyFFKkbULP_ftaqbYct0WULh9VQoeHMGgY24z_2wsrZlJnCzf5Ig0aLTR0bAOWsFtDqKQ7xNVKygthRs2Ov1dx-vNbr7Tu2hQ_rLEUmKhb1cxMrHLHXjqHS_tlti8_huc4P2v-GWmON4LDZnsPZkKfhwMOdXcB1Yxwwssx6iT_kgmmK4e_-oPi_zXmkk3KEhY8n7Cf3iWIh9ncROnsIo0N6U7IjA3Jil7fQU6Q',
+ 'dq' => 'kYMy-5jST_Tr-69FRMfU4WIA74WPb_-nB3F1VIue4cGGMPuAdNxaVTlVbFmcOlkegwn566-fmfPqTINDgJkVotOEIhHlPWiCO3ou2EoP-vldbd0Q_4WJh0pT5SnNzvF8TAE9O0Zq7sr1N5geGFmMAPOHa7YtBSwkx9_w9-4z7Ee6pF4o9i76KfwrVisLK9FgO5vW8EXYJekxXevZNZj9OOOU2stYGPi1stUC88duylbH8iBpxjQ5cnNzPUf5Zmi3AXmjGib7P4S_JYT1JbmIjAV8Bdm2RWFpShiINy8ZD-ztsMkPDs9p70_d9IGuEtRsaYusMRa3xYpfmPDz0wMcNw',
+ 'qi' => 'sEHok5K2HG0q6JdNzHB7FsM9EJxY7c6Gkya3Lfr1Rr5OYPcAosEIZpl-1_hCQ3MLGKT9UlYjZrlyt6SOUvCkxFX9slDZQeagmlSNMyWs18U0MxhFpEGthqLthS6ik0kFlschiSpMMyKVI8kgQR3OjMDcA_Mr92gZ9fl-mhtl2yfXJsBIkFBD7yOyxRxawy7v05RehoDHmdy2cnzaakPvg3Cekma2mfdjYgN5JnS0A20pC1zfoqi0D3B4KGrYVZhyJRnBakOUmwvE8rfmcjThx169LiAea6SYs7k9jwUCVWrNexXItxGdbQbbrb-FUotAcAQSDr6hHU8H79gN63WoOQ',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/RSAOAEP256Bench.php b/performance/JWE/RSAOAEP256Bench.php
index 96a75473..04581c71 100644
--- a/performance/JWE/RSAOAEP256Bench.php
+++ b/performance/JWE/RSAOAEP256Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP-256', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP-256',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP-256', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP-256',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP-256', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP-256',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP-256', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP-256',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP-256', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP-256',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP-256', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP-256',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,24 +67,60 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"Kt1bXc5RMai6lvx9jzQnER5cjHhpkrhpMA-ouMcKpyfI8tRV3rR9YhX7nFwSqjlEMDHOpo2MSFE1VKFffv6PYgSo57Go_KH1nxCAfA2VvmfNw2m57s_k-CT6lQBPbL_wP4-p-G7sBTn5G2Y8JGv97KZfxaGMjJPbG-cItZGP6lXGHMz2dzOACuYMPnhnC4DMqU1841c3-bwDbdF7zRbSNR20fTRkQnsym7XUyzWlso4","iv":"50bhctq_S8c5HSWma1Z5jg","tag":"s0HVizdCpd0Yp3aCTq6VbQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"E0oIChIIRJdY6NwHHzIeoDso3yX0bqVDrhrD3AqEnaR6NBBAAXFVfc7PwOaQHEzc8u8Pu-RrgB-4TJ32vF_OzkqemMXzj2MmvYSSE8u-llrYUj3ojpBTdx4yytoU1ufLuMAua6GOKQai5FCFmDy_jdwlmLAFcCP5ve7_vWvBGEg"}'],
- ['input' => '{"ciphertext":"xHFEOVgYUCqgGcbTwJJzRfWG5Y109yYUYSrKYwRnqI8ILesl9VPq7N4XB96JHThBz1bDdWl1PFEvUUmQXh4che0jgYhnX-7DPcJknPxlgPGVTQ-I77L4QsuUSKebG_XckaQYZuCu7-gwvDZ-EkHhxYiMzg9umvuzp2CKJLcluogshvBOi7Mwq3C6R51Lcgi9OECtUhujDo3VwqUxHXU5EKkng0isgO52ITVnjReevAY","iv":"qUv69PrmNOrGNZaIB5wJMA","tag":"uN09z-ggZidiwxLhMcu6IOrlFiU-LiLf","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"Ev7I_-UEd772eVUYZTQYKWXDo9vXSp-kzyFePHftUzY-vooXwRIaN6fow-erdz8VwBnG3uXHZZ6ZJLaw6rD0b-GMNOxxcwYW9pEdAhcqVkdbUi_SdjeJSMTa9Sa7g284OyOpf2SjQoi0h0FhEyldCQUVHA_sAC_2rdzCGF9NoLI"}'],
- ['input' => '{"ciphertext":"JjI_AEMydlZllOGW2MfCVGiOMuacDwWc41pevYvmYol_7MohArgSKxEAyROJd3R9O7Zz63O5cyDwgDA231VE-idmVhV5snfxNXyXRlNvXDVAWFMPRWRWOtsQdUCWMrUI1WbQVLJ04OcXbfY9R6dYrTqqqTqQV69ylKLItXkB42EmJq8vnn50nr_WhDdhskFi8gtc0cK1x_E4LHlQc4NbisIQ3N1SI0DE5GiLzLMsaiU","iv":"q0qYbdan0pR07xAyYpVkbg","tag":"h8p6aLBIZqjimpr_w3iiUWaNS56NrigEcab6uPXRCdg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"QVjgnUuKP6aNtncunJ-j7n_RTgte6uYoGJt1jBUIL8WvmHaZA5lfc5Ost_2KA6lcPCUtiYoMRKzXvOV6IWP59CETWTrvZg-Cn6Sho7eWdSr0HNg1948Tb6vR76FZSigPRn-cWjfUv9GeOBL5vJCx7aBHHXnBx8XeQch9nRNx-xMHPwEaU6qwUcyjvS4G6D0rS8rGnhlLArraew3tl4rs8s8cgU5jetXB_dAPetVUMvN2_caKVSU0g94cl_n_Qgo_G21J8mjxmZp428KSZR6_YtbonQIczenj47OV0mBIvgM4EgTFuvyFA_RMRIgun4DmeGiNgDtb7PB8myp6zc0v2g"}'],
- ['input' => '{"ciphertext":"qwZIydy2JYj0hf9_J4S7tAl5xjq7dFhEHqFoldMyEkjG67Z4E9o-eklYNwZ0wMgfUFbbUuvXcXO5xesBd2JNme04YVrYsb-tcj6L37pII01XA-R93Dto6yDUv9GFa9tgrvRthRiwnwv7X9HfT9HAF32IN3CA_j1nX65XqZiH-FeywSYwbmhKzhVsvdLJxYx6RD1Ebb8Tg5Ht1gVZMs0MHYjEiCeUk6s","iv":"0ZXHoOtEL8l7Ln7X","tag":"TeVmyPlt71EcdWI5mqnP0w","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"YhyxlZ1qorCPatENA6emkBg0Wg0DQQj7jfLyf6iKZ5NrVGRXdsV5LEbsodmDGKFb_yYDlWfaI_yz4fjBA8z_-qWUyqxSbD7yaX4Kyd8HmH-D2JNHqZzdfqxnssociCSkVKya418ullYVK0juJ7ag5t24vGixAbUoF3vFZEo8H6k"}'],
- ['input' => '{"ciphertext":"Ri-yczaqxmZol-a6jiYUAA2lCBDQqWXJz3uFhVreb6iGjAuCaIsTRUPc6G4r-FXXaGi1vmN4YZJQLYqVJ58poyNe8eqiqorQRreZtVF_Ugt79rPKe3Nsq7nxSH0i0Iw_5Xwzwg9tKEgrfyu4HSfx3CYhr7GXZ4Ngt9b6C7AT14RwUPMJn9s_6maxVt_mGAFYZZNowvwAX20zrTGB-9mISn2my7Kzxgk","iv":"Z3E8pNe9CQbKoVk8","tag":"KNnMD0_g0gkudMaMu0ZdMA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"mtX6HjMdgJzXFVE2ct2NysjfK-AfUzFWK_WUDg1-jTsGPexOQhvoin4pGSVVPweIL5k1ZROrHSbxocGyTjHmnox7QnVbkVnJ2Dtd6aYtiDmibEhY1v9cgIw2-NFPHJQ4b44fy_ovSHFUH3Jcs7q0l3VBrhXOZPU0HBdbjPgMBkY"}'],
- ['input' => '{"ciphertext":"J7OYhHw1S5EYipkRAFFjpCYkzV_VsmmQRZXNRJHhxc0sMj_axqE023yL63ltZhil8N3rlwFHShKkCT_HbEA53RuXcHrKrkpBCCq6vmxfZO2knKHjUv_k7wzXNCi6z8TvhE6yX5NMjIetBv30CbE3aOfk9gTa2nT-A8Xu2uP78oqvoFFULfhv3vQBx2-g__eRKhaEdzZ9GrbZZLhrIPtsOo8Sgf41QyY","iv":"BjA2cnG8Vj_2FqDt","tag":"0ifI7hCpz3HtsaykvqTx-A","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"UC1F43FkAeURaolsPXKRayZDk8z05T8jOmZ8TveoQiKkHqtH_Ph0EXx6srwtvGiocMB7VOreeiHuhqePx9U7lSq15MzTtoHOPLKI9FWJ1dEYi6FndpBPkxfXxOQAfc03XslSY8TA-S0dYdWxXEgVrJ43erROJX0pS-jzzj9DcV0"}'],
- ['input' => '{"ciphertext":"XnyZ7w7GFsJ_faDlBtE1p36gMcYpo3HGwFY8qkopuFRbrAqSPaNqPsUXTrI9627jEGpLBv4VuAXIUE6CZPcSYK_n8amYcL_Ji07FdMDRuR5-BQHWUKMeSVtYUAVYDe7LwZ0GK_xCfyPbcMTb6fKYsvL7TE16SZzfHFdSOhT9m77NiXiLJE-NExn-uqWf8t7xQnoi9YU0bx_a4xwNK8I1AC2VgY8T7_tp1oaAZe51lrc","iv":"0geETbnN9S9VYsn6-jMLLA","tag":"OZYNmc4UfJvSR37SUk8rmg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"WjDBeYp_H1lRkJP_0a-jP0kAVhAoIyJuQ44qJAQsJX5ElxWk6YdxX4KUaTiHHsfgmSbocZNF4YrrlLjLbevCQMIuvMCAHjg_OrbnmbcWZe8DhuqWbYegDO6l9ijj8p7FkQQ_aS3DMLxRO4dF439EKisiJMBtT_Wo3278sCCfqoKMEny2IkItzqXm_maWRTEGIQc2hmp0xTLeQJt4Dn1JQ2MQlw_0ZtraU-xblyqxEF1up8f_SHA4B4aFIbGMXbSormP4qvStwyNL94eyA8Dw9kLe1-Ii8BO8ZASlNcssWw1hpigtyill9klFPjRKxBrJbn_G1d8dgUs81BpPH_d3PA"}'],
- ['input' => '{"ciphertext":"X7VkvjUSIPZEa7hk64LJ_pnONh-4E8x2HQE_9eNr8XsSUGUVz9PCuKBpIq3LrJoD2eTJA2OpKvVkm5InOH6Lvqin5hhKr43no01d1QCF81nZnU7mhaw4C_ag5YJvNqgRkX34T89_m2W0SBWk1qXDn3TXR4fz4NLKJwnZ_j3Upy_NMz5JsMtCjG0GZhIqLXHz77JA_jcSZBgdpFqD683M_b-96szPZ2QxbcxVcw5YtR8","iv":"blNjabJ8qu3kkSg3I_52kw","tag":"a4w_zKis-7yLUE5Dtr1D5rb7C68R1g6_","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"ogW4_Z0jzd2POyMx9oy4CGW7GOjL6gEHmFqdoeRtj8fQoB3ofYM0voLo-YqIlxDdTgyIqNwwTM729WMZw_uV4Pa7J9cMRAgLczsgIRvHTbYieBfqvLRU4jxrE65XM4PUGiwzwj_r-ICrXkoH-UzXUkzQdPBPgOznSzcQ2Fn5xqr_bNptKxX5b2Ppbscm37MjmEIliJavrnUmh1TGGbYSVXODUf4ER1evdT1zPWUeqcc5NJ-I2DyNPQWKVS4HI200HJ0HEGWMVTU7I6Ggjypm0azkNJskC75Os2rMoGaNy5UOtfLq97yCTPzcZ1LcBQHAJP7bh1rxSj0BHZW0mTN2GA"}'],
- ['input' => '{"ciphertext":"uha6DjGNNpMcOFDgn87PMyTJrRSoTdVgCyXNO5zk8bzJ9tkYEy_81lXlBX7oQ96YgOCugrEv-4OND7y4c69GFO0m8_v_R5yIuX7Qpl2OAj30WQd6v1VC8-JBXDW357_6L-XY7vSuCvQHB1wnVABw6onKGz92raOW_xrIi_J9wx5lmzMLSth3BalXe8VhcgiRh4EciIjMynIurcVMuZ3rstSjQe2k_7BQXiXpWInwy9E","iv":"wpwbjyGnBiMvv9-bhcorpQ","tag":"z_WkrSiMw0X3EhU0JXSOu8Hm5ty9aYvAJmunXZ_eIKU","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"QRIg4N6HwngfX473i6Rp869h69EVTbjMAQ_5EV_TrWOgq4gi-ooxooOrJ2Sxm6HvX52UbQ04F-shaAwvEA3kj2Sy8zqv058uX_BUutNF-hE4pV1DyRqXAGamEQuvq8X4t8BXWS02ITQizBOy0znGsJKopKL8dR3BttcONYBfuCP58nPOLEg7Vsw4xAKC0Di11ppumBJD3eFM94ii1XecikVdMqLlHEP2oUZRWFCUUltev1Yhj_JZzElvSABvbuNVHFwJYrQzmhjq70WDVEJJIrpVVfmuwNn4MADw5B9XrT4xdTMDligt8lqIxNd5rxItxLv3n8HwLaDFoOMrgR54GA"}'],
- ['input' => '{"ciphertext":"W1_OC0LkFGUPJSQetkjTGT4WAVe_5OeVVIq3YKixV8_heCA72OXJppapE58tiQktfbsxgG2PR6my2HuHK5IMdzf5ugF8ALQaGBNnHvsOCQZA1JZLc03QPRQGYgbRGhDkxOLNxwMzYPytQLYpcxHVsVId39-3IRreXaZbd3C_SvTFlPRx-6wD43ExWEpdBnxnn1xHlw3xU-HdOjZQfSRPeUGJoF_x4t8","iv":"BXm6XOtRiw0dJd94","tag":"r41IaktoReqoeamFZ9yl_w","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"IzFHtCyOENKi22ePBOtQcYRBIjGIdqP2ZE8M7nulP3Z_iaS-IB_bQjoIRQ7hPzKlr_jNHzb7hAYaHBZ7TfV1f_q0CkYtZhVP9jQGx3Bp0VVLaHhY_2wB8ojU58Y45Q7NYtTgsQLspv9PTdxtFaZhoQcJTqGfWR_X8Vh1q2vhVWKp5rNBxvQ3Cq5uDqSnzDRy4Yn6Rt800Mm1nmgToVnj0laAM-tBdvjD76ICD35GP-cxL8xZ4-xFrZ5SOuQwTARsR_ruoECUZsc3Q-ddaflSN9qBIKObId4czTBlt47aIS6Q3NuMc4TtiYWu_QAdFBviE7uPrhMSHIA-XqFOtlQGWw"}'],
- ['input' => '{"ciphertext":"sq9GLKF4P-KXuxBy_LNmntSm1sZz0tYT_f-i2HGO0xl6af53QD2WaFAm5PdwSBJXZKkf1d0nNLP2XqA02zkuMSh40KBz41oHPzqTRHrLd2CbZuL8FUR0avrNMXw_7-1I2cMYS5USW1VNuUDVjwqy-ohT8-_j-VeA-3q4Jt5mPSL4GSgE5EkflJ3TpeKfTsW04G3vrsSFH6mfJPz5WOCl6vfQHzy95NQ","iv":"8YTVo5q5Fro7BTto","tag":"aAiOhoDVrprwYY2nsmO6MA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"W2KgXKz3Cym1VXSd2JNUiAFWFEDmq_kGBHVC9g-eJZC-ZztcOnh3IgYCepbhLpVvDuj42E4KorCF12Lk79OAwmmcfZ-DvsLwgp60L2Ho2qaUl32TVmHkuKzN2RwORvb6QTMyOBklt-2BEfLC4mqYYI_755MM9noUrpA3lHkx-b-lr0l8f-fhGCWKrgsOidsfJN20nDEIvJL2PqH7SXLDKDHgY9JFdF0NfZJnZIUOUJB2kCYmaJ_CqTF6fPypBNRGwh0Wr4P2Zko9RMOp3Syuo7W3NPb05jo6xR5g2wxSOnK_WDd0YhnAX1SvBtgTq_E7vfhy6A2YO9QJC5kxAoTqgA"}'],
- ['input' => '{"ciphertext":"M_MGtxHwXLi350tKZBQPr1gSw_4c2NhXtxKkZtFwELSqRvmTuUJxKiU_tkr9DWfHfoxFT586LpmGjOeu7u-4asToZ3BWu8namlORdkMdOO4k1x2ydeygWdWUfzNkwoMU3Yn7_zlw2PVoDkZlEcB5cDidBbrUHbKugAN5ZBOBOYCDoonsnRVRtbs2HKhi3J-YYnS3hgQJIlYDXpasb7YxlV5NerdZQu8","iv":"YowIbccIgldZtWhM","tag":"hLaDeUhCkt24cDuIaRZPkQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"KDmm43wYSHFxTbeQ3UwfB_Grwpf7xHJbX_ytkEQ7aIr8BPXwUPRPk50Xbk7STQQjdTN4IdB47plCVcmtFVVvVr1Kb-9Z2ouQEz4XIymvNfME-48afqA77KALuxIdJyXnlaHfzagSxM_r-CwzR8qMoiZ31VCP3uWcHVaoG7A2tzHJMvvDy4BosJ7Q0j_UQN9FiS8ZsC-CCjBtSwtG9SBsAk7ni5891o8OEkVvi11Mqybz18zQ5VdL28pq0yBSicCZlPyYXVbkpv0svHU8VhZtqjwKFmEblwuou3TduM9GATSqP66PXNjEZ0IbnwBxFStNMy4r1bbGvY3cB1NLHOO0bw"}'],
- ['input' => '{"ciphertext":"nYEFVB7x9GwrdWCfPopHrnZz63pUMJPiluUvP4uKjMZLmMfSXjirkPFJHLNenvAnY9N_St2MsNVRjJGVA8BKpD5Lou9as1LhQKtZvbbhSFeh3Pgtl-dWkk-pPNlUks21xhulz9-WkcUI6UDMECubhTCyks9mQYs4CGYn2-N8YqvGJW-MQY-fKmI_ANLqYmbrxDBg2nLVZwedI1a1mZTvlBmWg6y1J9iliSZmNx3E0D8","iv":"MXJVPlmpK2RmNGH8G12KzA","tag":"XP7oILWIwDQETo5svidYtw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"Gn6OkvU9Vrj4yW8bEOYQXrZ5nHNTw5NTXj4E8RtYia0XSr77p916dsgJ7ydM-Cqp3bc-FW-Dw2mJzNG9aetUBImFV-C136Zd8qZfurVR6wdmknRRVV_EYDIGEUJmUeN20if7tUP-rxUEVN6R0ROJ-8N_XwDmlxx_kxqjoNBU1GlsGSyPhVXrBPOcHyeLrTQ1Dw4K2zzlOETcIg9HNq2wOgeMl5T7cAwAPup9IYhAYQPijwbZlY2Fh1DuldZ_lrGD6jQSRGKho1aSRd7i-tVyOfLU88nmCN9lInMIXlOWoiTjbip7e0dfbh2_Q4EDg-bwsvolgsiVt9Xqrz-2E1q0xM7E086KcFFG4__xyt0Y5J-TPlrX9oL1XYikSYaJG9LkSdUbuYNqqTdx8tRvpX_-r_zP7qlvTPZEsaR-Pa_ICKohZfqxMuU4c7ZEP2ayOLDDpewAm3oKX5Ln5hjBMNrWh-chsNin2t90Morq72xsCkKhRCEczXljQpp574e5j-8eIOv4o-LNCaf1liuq-4kHl48B7IkQrhNQtSJ6sEf5NyIItesD513o1XRcLadH4VYmn_zbUXOpTWcy32EoqawV8SVamku1MBup2hme01i5UPstvJVU2TT6lPAp0Y1IQrUwY6z0CDzT9FbUvJBi07Wu0GNj1hFrrryZaI8DcEMnhpM"}'],
- ['input' => '{"ciphertext":"IunHcQrdO2xEJO_DTbjfC9RodsUSE8YBHSSdtJW3DNDHfiOeioejCgXCKLWJRXhzOsC1LLcgt8n1oFncw7QnoMNGq6bhUqJ9o53CoetZTwP_aM6lKK7Fq73dRmj_ejcgphIAvlhEjMGQbi60jgBgrerilT4N_S7x3f39CSX2VnDScdHlLnLLj_822sjQoxAOFGhMQ2FSXLIISWdCxUQG13xtK-RxLRJhcL_F6rdQpNo","iv":"IOYdkjO4y9mVjiX8RNlh0w","tag":"xy6A83DIJUkEzKM8FjyoyZfxpCvGfqYK","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"ulk_x1VauBMMaN_FKe2Db6fk4RBwiZRKCvBgYz_ddJY916pYBPwZ4v9YmL9EtxU1isbzgXHTPjHHWlRI7PdqMZm5_kdzgo98uxd8cklLTDJz8dcA3-DQmcFmszOG2Wh2_vdMdUnrQxdmM8cI4k62zZ4WsCM0rGiANE7KRSieuxwkUHYXu62i9U7WT1m9re0UnNGBP_7kGSYgigSJfTsoWRH6eKGye5bXAcdOlfbo0hGu1i_9p9duClP_u9AR7LSxdUxzmTSW9yjHVMSg_PhJBIw9IBqAtfTR9K6ltzxbVPHRXzeIaxU8u14u9UE5ubIP325yot1XAdS-2r9tW_UsaPxFPn-wAuguU0vYcJoi_Lng7ZUf_KwpUXIcKplY2nThnZH8Q4GDlvrmDMUwRET9Uv5_rspX3VLL1isrJmghV4CyO18RX8bpgEYGqMhssXFPUTipcAlbWPIDRt-sjH8LpuQ777bygBFNwtBoAtK5CTL8PgdWPE7RORVKGRJGkcnsqiqyWKnaztY5XIOG57fFgQ055zjfThBKcV40Iit-FwSeq6NVyS3FSiJlQ4pJVWkcebhNIewOO2yvbQFyj_HMe5NMTPyJEZIL8P6L0b6VUsupMVkaJEM8ZbvvjOQ9iU7Cs7l9S1NWLZ7reIxNT-JSFHT2IrAYxl_BdgbBrwsJ5Hs"}'],
- ['input' => '{"ciphertext":"1-42J-20SxLWe2xcuvITQFe4uOI83WEl8DH33pCZAMAaWfiPPKFT1GEHqFApj90pEigPZ1vieh150m05DDE5iE_I1Oanp3RD0JtF7kFDQGl-WthHEpid4BffTD70m8Jdy2DBaHLAnVoshQJKWTP269Xvx-avbU_SQfGUCa9uOoWaWGEZ99S4i8IMyMIx6H6H-buTBizeeMy1C14WPmi_IBu6HF_V_5hk4xIXkeN1QNs","iv":"rD3ssiyJAzK2w_NBCu3dhg","tag":"pOegUBPvh0mwRfYuiy_Xpn-QoY1iacjtNkRqY6k63dU","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"A0pMdy8sJfzd3KHguIGU9BiYL13lFsjkud3qY-1Roofxgq95jCJSg4Gt5t0ob52JC-xK7mtoLDhnkRbX7lPVaDdUOBQ1fK3eueFZigXW63XUE7xJF9cRJrWQ6aPuxgdwz-DhIbZP-bfozvSg6SqvaMNZjGgtiV2-Xd0awzF7ZtZbJEVOpgZGFV4PabGvVsZ7OA7ezQ0MUauwz4JuWDvggebiFESLwJhsP__xR2NhFWpcIBdOoKqYy1-s1cHa_TBoqq96q5OjYE8hz6NVa1A50WeudTflaObgyY2_cze_oXVbd77ve5_i1k2SyR_C8D24tCwCFq-zZnxoSqXzu1TI8ddl9yqs3DXQRGv7ow1R7QIF0V9D-2L-LcP9xsQ11j45FEoXI-TM67ob4AxkrLzGY8G8tT8ihTF9LFUyQV0qBA41Tsu-72-c_rdysigmQTjI7zj5BBi1rOPKJpewZ6QSpDP_D0Ko4Iv1WfCis8D49WqMguLI6cF2Ph5HXIbuzXSLqJlzJXXQvvxP1Pa3OVqrUUVJ2zIwoA1A3_og6LNH8qpeeSUQn9b8Vuoo6-xlGhg-iUHPHtWRQNIdDAu39kSHWLxGRdA1CKPyRk6nZoFFESSc-9nhWB4zb080Lm3YKEm-4EPVdCwdDavXTwGRS3vPx6AfFvaCn58dvU3NNQXMbOE"}'],
- ['input' => '{"ciphertext":"mrk14MJdDRKyqlvjahhsHdet8oXYuqTmoJ5BeORbij3ZyyAZVEz4J42gjtG5wwlkR0rB4BazlrBcaBZdZoNK1OKBj7h3s0QUd1nMhF5qA7h8jeiwxirXOqhlwHUxpEPWwJ04XcS-eG4VI-DOSk5Tem7bRn_PlL4VC1qS_Y_ZQk6P7x-tMQLcYQWwme4-E14n8_syWyfzNqHQHRdmNmPSLZ3daOFCqsk","iv":"ppT2nVwjH0oM19hQ","tag":"edjw-7Ta4gf8w42nsucCuA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"HUGJZ2q9oPK6BTH0NBZJVKSDEq7OU1Z-8T4GLv70HbEZJ43iAjUe1-K5WDQzz2ikAtQSyTAmVySir3ziLdMUJt0vBj5iQakFtxmYD4GA_lNudh5b_12D1I4xCwjCEYKX5FByT7QYm3rU79XGNYs0gzbTKha78X9mQ5SsDgQqXvbESz-7apeAlaKa1PqyO8ow0s-Pp0wUDbP3NLjK6qozTPSf34MpDt44FAcc6TR92dXDMkvi4_SdKGKUKwvYx7KHe0hKoHub0rl_m68UAdlxJ2Hy39n-HefN2pL-M46k9SlfZiQdA_wVDg7jNMJG0pD19XWLpM3n8a_meGMt8UYcqsUagMydjJU-10I_lO--HXA4kfjulEmvXOdZrAgea28f5w_BRpoMGJnkTks-UqDfFa2KPOv2S-qYO0aNwPcuhLOIwiPRKtgcuujG6GtuBgMUleS2pNoZg6q6Gw3mQC7sBSikOqCyEx_A-CTzzXFqfN8k986QDCTx-2OT97jaaQPQ8BWVQgLzDDREj7wuv60CQL031bv27P99oZ80BK-vGiPfzjG0MNwT7BS7NC6NnhgXFS4Czo4SECk0TCmhz06IckID8xUIn_TJtQtn9gAPnyZaHV4R9YIoHx_Y7cmnc-xAd4gVk65QpviaKJ-cgyNcNuoIiklmm3CHDxaydat6xHI"}'],
- ['input' => '{"ciphertext":"b4wrAX6XyHJy01y0MdUtMqLyMiNs_Q7kHUdPYaB0s83zQ5gdJfc3L0CJBdTPV5tC4QY6N8-r6QrLSj5O-QFDgCpIj7c3IYFtjKPtpsiWJ80HyZ4ZoIBCrOshhUtCMzs_L4MYVRi2kKr-wvsAKmODw62kzFVzoEEWaEK5zdbgWbS9AGa0g2LMe80Y4blTE0SAwc215KBlY-_ONYULBecP8DjLCnu4Ybs","iv":"A6eFQhv2gXcyQAwS","tag":"Y4lDzYlIGqcqNoSpSYJOdg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"pyvUtlJZBjW7SY2qIesf4wJuiHsXM6Qmd0hJxGu3GaPpSrNhj19TlcNkAAH9JFoBo1i8GS3Qw6BsWBO6FXVtXqm-ZAi03Hw5BqOlaVz5Ls_Ruj6z6GUxa9MYJAd-iIWqCD1yCyT578ZwHZaarAA2tCuZMADxaQ74pBaXUggt7UmU3D5TZiEHuh4ShjB2CJR2fxJnO-U1GyAkr7j4XbFU5xVoxgTQDYd4FlDA0KDScnGd9r2gBT6TnM2ljA1nIyEz7a5qjDODZvVWTLqEmoRNgXzXrWT0WTh1wCrh0Q15JY_qLoTW8bWTBbs1bZLtpLaU0RL84F3iaEskcHo4O4VtSzKOQyDCVchN52gFN-yJ_IUTXBgb3HWJpM9QIP_0t-sAcg37CPO-JeuvrdT5e7_s8IMdMw2QzwpFdUT86FQAdYDYLKwG8TzMwqISLKkMeRZpt2N7XgKrDSTX-HsYLzWedc7DPugHfbEl2nknTFcmfjDj20Vpr01z_jWMhr6gs9612ucx71i0qYFk0PXDUN2dWY_w_ff790KNA5EEYlQLdnJ6BH1N30I654v23KUR9gs6kDy1KyHUuw-ylfByYXYT8du22vH5DzXiyW_ldHov_WULhGupABcE800ou2TPf94LOkfam47M8CISDJCqJ-rtkCVza-wCCw4lQf7ZvtAoJUE"}'],
- ['input' => '{"ciphertext":"05bmbpoOhrkgxaKrD15PJjOapFOMm5XdHCiQIpbDrbh7_yarzAOqtsnbhocrJ-3bNVgU4i7DevuNMWDdrM1BQDXUOmEKaNqx10I5k65aOE3B16--IG-RjOxdlUGj5YwQewyi98twt2SEmAwJJy7XkAaULrWYGluklqyg5XMBWmpkRG6i5lDMX7um19o4mtOkcWhp0uUnbuu-ZIe38eOivalJRQLXcRg","iv":"TibsjD24NcHTumc1","tag":"9N2CVWptZDd5IqlxuAgmJw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"aM2uxhn1345sBBAohoHchu13E10LDU79BXdO97HbAqtqQf8CBw8vt3C39CCNz46J5_IIpSYDjvhIgj4ivMCR0hPIHfYdWcAmtDnzKz1kbD4olHE0aQoOe-Vckg08J6-MEXeHL9yPNFhLPSo8-SrMAnEbSeTYB88MEpABXOW-y9cM_R9D6zO5trinfu60TjCY_28SZl54i22g_U3xx9Rzqe1nnlZmmoDTFraMv8_WF9Mnnk2S9gXwW8jHe2QSXRSiyouyNIniH2ff6BM-YmI0UEe8yBtq9BgvaQpFWq-XXUcsi6a9jhr0TvizCrX9bvqvRd8FnehZB9MwkI3nyk7CWn9cvIx4oEzNwuP0iQlPu8mZETSV5Mbaya8qsT9mpOSRqEEYcsZHnlpXHofs8HE5_sCqLQy74kc6VCJ3h82lHLoplane9xlfuPulTCnuhd9OyoyQ3hY2-ZDQdfWa7bhmOdSJtUU6e-pC11pL6VpZ-NXjNciuBtT8AZ58lMToZ0fm9RT3zhzBcWuDHbqKfWtt8NzC1y6zaVYiTuTXNzjNBf4NTQe-2HW1sfsyKbe2cxDGqxtH71CIPoVK40gqoWBNiexkZa7ZzwLVD8-97jNx0O2ndFZ3_xhY8359fbxPpUqQTnoRABYmo6CDUgH_uU7nKVfqHldUB5m2RFHfQgWMLDk"}'],
+ [
+ 'input' => '{"ciphertext":"Kt1bXc5RMai6lvx9jzQnER5cjHhpkrhpMA-ouMcKpyfI8tRV3rR9YhX7nFwSqjlEMDHOpo2MSFE1VKFffv6PYgSo57Go_KH1nxCAfA2VvmfNw2m57s_k-CT6lQBPbL_wP4-p-G7sBTn5G2Y8JGv97KZfxaGMjJPbG-cItZGP6lXGHMz2dzOACuYMPnhnC4DMqU1841c3-bwDbdF7zRbSNR20fTRkQnsym7XUyzWlso4","iv":"50bhctq_S8c5HSWma1Z5jg","tag":"s0HVizdCpd0Yp3aCTq6VbQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"E0oIChIIRJdY6NwHHzIeoDso3yX0bqVDrhrD3AqEnaR6NBBAAXFVfc7PwOaQHEzc8u8Pu-RrgB-4TJ32vF_OzkqemMXzj2MmvYSSE8u-llrYUj3ojpBTdx4yytoU1ufLuMAua6GOKQai5FCFmDy_jdwlmLAFcCP5ve7_vWvBGEg"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"xHFEOVgYUCqgGcbTwJJzRfWG5Y109yYUYSrKYwRnqI8ILesl9VPq7N4XB96JHThBz1bDdWl1PFEvUUmQXh4che0jgYhnX-7DPcJknPxlgPGVTQ-I77L4QsuUSKebG_XckaQYZuCu7-gwvDZ-EkHhxYiMzg9umvuzp2CKJLcluogshvBOi7Mwq3C6R51Lcgi9OECtUhujDo3VwqUxHXU5EKkng0isgO52ITVnjReevAY","iv":"qUv69PrmNOrGNZaIB5wJMA","tag":"uN09z-ggZidiwxLhMcu6IOrlFiU-LiLf","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"Ev7I_-UEd772eVUYZTQYKWXDo9vXSp-kzyFePHftUzY-vooXwRIaN6fow-erdz8VwBnG3uXHZZ6ZJLaw6rD0b-GMNOxxcwYW9pEdAhcqVkdbUi_SdjeJSMTa9Sa7g284OyOpf2SjQoi0h0FhEyldCQUVHA_sAC_2rdzCGF9NoLI"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"JjI_AEMydlZllOGW2MfCVGiOMuacDwWc41pevYvmYol_7MohArgSKxEAyROJd3R9O7Zz63O5cyDwgDA231VE-idmVhV5snfxNXyXRlNvXDVAWFMPRWRWOtsQdUCWMrUI1WbQVLJ04OcXbfY9R6dYrTqqqTqQV69ylKLItXkB42EmJq8vnn50nr_WhDdhskFi8gtc0cK1x_E4LHlQc4NbisIQ3N1SI0DE5GiLzLMsaiU","iv":"q0qYbdan0pR07xAyYpVkbg","tag":"h8p6aLBIZqjimpr_w3iiUWaNS56NrigEcab6uPXRCdg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"QVjgnUuKP6aNtncunJ-j7n_RTgte6uYoGJt1jBUIL8WvmHaZA5lfc5Ost_2KA6lcPCUtiYoMRKzXvOV6IWP59CETWTrvZg-Cn6Sho7eWdSr0HNg1948Tb6vR76FZSigPRn-cWjfUv9GeOBL5vJCx7aBHHXnBx8XeQch9nRNx-xMHPwEaU6qwUcyjvS4G6D0rS8rGnhlLArraew3tl4rs8s8cgU5jetXB_dAPetVUMvN2_caKVSU0g94cl_n_Qgo_G21J8mjxmZp428KSZR6_YtbonQIczenj47OV0mBIvgM4EgTFuvyFA_RMRIgun4DmeGiNgDtb7PB8myp6zc0v2g"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"qwZIydy2JYj0hf9_J4S7tAl5xjq7dFhEHqFoldMyEkjG67Z4E9o-eklYNwZ0wMgfUFbbUuvXcXO5xesBd2JNme04YVrYsb-tcj6L37pII01XA-R93Dto6yDUv9GFa9tgrvRthRiwnwv7X9HfT9HAF32IN3CA_j1nX65XqZiH-FeywSYwbmhKzhVsvdLJxYx6RD1Ebb8Tg5Ht1gVZMs0MHYjEiCeUk6s","iv":"0ZXHoOtEL8l7Ln7X","tag":"TeVmyPlt71EcdWI5mqnP0w","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"YhyxlZ1qorCPatENA6emkBg0Wg0DQQj7jfLyf6iKZ5NrVGRXdsV5LEbsodmDGKFb_yYDlWfaI_yz4fjBA8z_-qWUyqxSbD7yaX4Kyd8HmH-D2JNHqZzdfqxnssociCSkVKya418ullYVK0juJ7ag5t24vGixAbUoF3vFZEo8H6k"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"Ri-yczaqxmZol-a6jiYUAA2lCBDQqWXJz3uFhVreb6iGjAuCaIsTRUPc6G4r-FXXaGi1vmN4YZJQLYqVJ58poyNe8eqiqorQRreZtVF_Ugt79rPKe3Nsq7nxSH0i0Iw_5Xwzwg9tKEgrfyu4HSfx3CYhr7GXZ4Ngt9b6C7AT14RwUPMJn9s_6maxVt_mGAFYZZNowvwAX20zrTGB-9mISn2my7Kzxgk","iv":"Z3E8pNe9CQbKoVk8","tag":"KNnMD0_g0gkudMaMu0ZdMA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"mtX6HjMdgJzXFVE2ct2NysjfK-AfUzFWK_WUDg1-jTsGPexOQhvoin4pGSVVPweIL5k1ZROrHSbxocGyTjHmnox7QnVbkVnJ2Dtd6aYtiDmibEhY1v9cgIw2-NFPHJQ4b44fy_ovSHFUH3Jcs7q0l3VBrhXOZPU0HBdbjPgMBkY"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"J7OYhHw1S5EYipkRAFFjpCYkzV_VsmmQRZXNRJHhxc0sMj_axqE023yL63ltZhil8N3rlwFHShKkCT_HbEA53RuXcHrKrkpBCCq6vmxfZO2knKHjUv_k7wzXNCi6z8TvhE6yX5NMjIetBv30CbE3aOfk9gTa2nT-A8Xu2uP78oqvoFFULfhv3vQBx2-g__eRKhaEdzZ9GrbZZLhrIPtsOo8Sgf41QyY","iv":"BjA2cnG8Vj_2FqDt","tag":"0ifI7hCpz3HtsaykvqTx-A","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"UC1F43FkAeURaolsPXKRayZDk8z05T8jOmZ8TveoQiKkHqtH_Ph0EXx6srwtvGiocMB7VOreeiHuhqePx9U7lSq15MzTtoHOPLKI9FWJ1dEYi6FndpBPkxfXxOQAfc03XslSY8TA-S0dYdWxXEgVrJ43erROJX0pS-jzzj9DcV0"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"XnyZ7w7GFsJ_faDlBtE1p36gMcYpo3HGwFY8qkopuFRbrAqSPaNqPsUXTrI9627jEGpLBv4VuAXIUE6CZPcSYK_n8amYcL_Ji07FdMDRuR5-BQHWUKMeSVtYUAVYDe7LwZ0GK_xCfyPbcMTb6fKYsvL7TE16SZzfHFdSOhT9m77NiXiLJE-NExn-uqWf8t7xQnoi9YU0bx_a4xwNK8I1AC2VgY8T7_tp1oaAZe51lrc","iv":"0geETbnN9S9VYsn6-jMLLA","tag":"OZYNmc4UfJvSR37SUk8rmg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"WjDBeYp_H1lRkJP_0a-jP0kAVhAoIyJuQ44qJAQsJX5ElxWk6YdxX4KUaTiHHsfgmSbocZNF4YrrlLjLbevCQMIuvMCAHjg_OrbnmbcWZe8DhuqWbYegDO6l9ijj8p7FkQQ_aS3DMLxRO4dF439EKisiJMBtT_Wo3278sCCfqoKMEny2IkItzqXm_maWRTEGIQc2hmp0xTLeQJt4Dn1JQ2MQlw_0ZtraU-xblyqxEF1up8f_SHA4B4aFIbGMXbSormP4qvStwyNL94eyA8Dw9kLe1-Ii8BO8ZASlNcssWw1hpigtyill9klFPjRKxBrJbn_G1d8dgUs81BpPH_d3PA"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"X7VkvjUSIPZEa7hk64LJ_pnONh-4E8x2HQE_9eNr8XsSUGUVz9PCuKBpIq3LrJoD2eTJA2OpKvVkm5InOH6Lvqin5hhKr43no01d1QCF81nZnU7mhaw4C_ag5YJvNqgRkX34T89_m2W0SBWk1qXDn3TXR4fz4NLKJwnZ_j3Upy_NMz5JsMtCjG0GZhIqLXHz77JA_jcSZBgdpFqD683M_b-96szPZ2QxbcxVcw5YtR8","iv":"blNjabJ8qu3kkSg3I_52kw","tag":"a4w_zKis-7yLUE5Dtr1D5rb7C68R1g6_","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"ogW4_Z0jzd2POyMx9oy4CGW7GOjL6gEHmFqdoeRtj8fQoB3ofYM0voLo-YqIlxDdTgyIqNwwTM729WMZw_uV4Pa7J9cMRAgLczsgIRvHTbYieBfqvLRU4jxrE65XM4PUGiwzwj_r-ICrXkoH-UzXUkzQdPBPgOznSzcQ2Fn5xqr_bNptKxX5b2Ppbscm37MjmEIliJavrnUmh1TGGbYSVXODUf4ER1evdT1zPWUeqcc5NJ-I2DyNPQWKVS4HI200HJ0HEGWMVTU7I6Ggjypm0azkNJskC75Os2rMoGaNy5UOtfLq97yCTPzcZ1LcBQHAJP7bh1rxSj0BHZW0mTN2GA"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"uha6DjGNNpMcOFDgn87PMyTJrRSoTdVgCyXNO5zk8bzJ9tkYEy_81lXlBX7oQ96YgOCugrEv-4OND7y4c69GFO0m8_v_R5yIuX7Qpl2OAj30WQd6v1VC8-JBXDW357_6L-XY7vSuCvQHB1wnVABw6onKGz92raOW_xrIi_J9wx5lmzMLSth3BalXe8VhcgiRh4EciIjMynIurcVMuZ3rstSjQe2k_7BQXiXpWInwy9E","iv":"wpwbjyGnBiMvv9-bhcorpQ","tag":"z_WkrSiMw0X3EhU0JXSOu8Hm5ty9aYvAJmunXZ_eIKU","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"QRIg4N6HwngfX473i6Rp869h69EVTbjMAQ_5EV_TrWOgq4gi-ooxooOrJ2Sxm6HvX52UbQ04F-shaAwvEA3kj2Sy8zqv058uX_BUutNF-hE4pV1DyRqXAGamEQuvq8X4t8BXWS02ITQizBOy0znGsJKopKL8dR3BttcONYBfuCP58nPOLEg7Vsw4xAKC0Di11ppumBJD3eFM94ii1XecikVdMqLlHEP2oUZRWFCUUltev1Yhj_JZzElvSABvbuNVHFwJYrQzmhjq70WDVEJJIrpVVfmuwNn4MADw5B9XrT4xdTMDligt8lqIxNd5rxItxLv3n8HwLaDFoOMrgR54GA"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"W1_OC0LkFGUPJSQetkjTGT4WAVe_5OeVVIq3YKixV8_heCA72OXJppapE58tiQktfbsxgG2PR6my2HuHK5IMdzf5ugF8ALQaGBNnHvsOCQZA1JZLc03QPRQGYgbRGhDkxOLNxwMzYPytQLYpcxHVsVId39-3IRreXaZbd3C_SvTFlPRx-6wD43ExWEpdBnxnn1xHlw3xU-HdOjZQfSRPeUGJoF_x4t8","iv":"BXm6XOtRiw0dJd94","tag":"r41IaktoReqoeamFZ9yl_w","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"IzFHtCyOENKi22ePBOtQcYRBIjGIdqP2ZE8M7nulP3Z_iaS-IB_bQjoIRQ7hPzKlr_jNHzb7hAYaHBZ7TfV1f_q0CkYtZhVP9jQGx3Bp0VVLaHhY_2wB8ojU58Y45Q7NYtTgsQLspv9PTdxtFaZhoQcJTqGfWR_X8Vh1q2vhVWKp5rNBxvQ3Cq5uDqSnzDRy4Yn6Rt800Mm1nmgToVnj0laAM-tBdvjD76ICD35GP-cxL8xZ4-xFrZ5SOuQwTARsR_ruoECUZsc3Q-ddaflSN9qBIKObId4czTBlt47aIS6Q3NuMc4TtiYWu_QAdFBviE7uPrhMSHIA-XqFOtlQGWw"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"sq9GLKF4P-KXuxBy_LNmntSm1sZz0tYT_f-i2HGO0xl6af53QD2WaFAm5PdwSBJXZKkf1d0nNLP2XqA02zkuMSh40KBz41oHPzqTRHrLd2CbZuL8FUR0avrNMXw_7-1I2cMYS5USW1VNuUDVjwqy-ohT8-_j-VeA-3q4Jt5mPSL4GSgE5EkflJ3TpeKfTsW04G3vrsSFH6mfJPz5WOCl6vfQHzy95NQ","iv":"8YTVo5q5Fro7BTto","tag":"aAiOhoDVrprwYY2nsmO6MA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"W2KgXKz3Cym1VXSd2JNUiAFWFEDmq_kGBHVC9g-eJZC-ZztcOnh3IgYCepbhLpVvDuj42E4KorCF12Lk79OAwmmcfZ-DvsLwgp60L2Ho2qaUl32TVmHkuKzN2RwORvb6QTMyOBklt-2BEfLC4mqYYI_755MM9noUrpA3lHkx-b-lr0l8f-fhGCWKrgsOidsfJN20nDEIvJL2PqH7SXLDKDHgY9JFdF0NfZJnZIUOUJB2kCYmaJ_CqTF6fPypBNRGwh0Wr4P2Zko9RMOp3Syuo7W3NPb05jo6xR5g2wxSOnK_WDd0YhnAX1SvBtgTq_E7vfhy6A2YO9QJC5kxAoTqgA"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"M_MGtxHwXLi350tKZBQPr1gSw_4c2NhXtxKkZtFwELSqRvmTuUJxKiU_tkr9DWfHfoxFT586LpmGjOeu7u-4asToZ3BWu8namlORdkMdOO4k1x2ydeygWdWUfzNkwoMU3Yn7_zlw2PVoDkZlEcB5cDidBbrUHbKugAN5ZBOBOYCDoonsnRVRtbs2HKhi3J-YYnS3hgQJIlYDXpasb7YxlV5NerdZQu8","iv":"YowIbccIgldZtWhM","tag":"hLaDeUhCkt24cDuIaRZPkQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"KDmm43wYSHFxTbeQ3UwfB_Grwpf7xHJbX_ytkEQ7aIr8BPXwUPRPk50Xbk7STQQjdTN4IdB47plCVcmtFVVvVr1Kb-9Z2ouQEz4XIymvNfME-48afqA77KALuxIdJyXnlaHfzagSxM_r-CwzR8qMoiZ31VCP3uWcHVaoG7A2tzHJMvvDy4BosJ7Q0j_UQN9FiS8ZsC-CCjBtSwtG9SBsAk7ni5891o8OEkVvi11Mqybz18zQ5VdL28pq0yBSicCZlPyYXVbkpv0svHU8VhZtqjwKFmEblwuou3TduM9GATSqP66PXNjEZ0IbnwBxFStNMy4r1bbGvY3cB1NLHOO0bw"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"nYEFVB7x9GwrdWCfPopHrnZz63pUMJPiluUvP4uKjMZLmMfSXjirkPFJHLNenvAnY9N_St2MsNVRjJGVA8BKpD5Lou9as1LhQKtZvbbhSFeh3Pgtl-dWkk-pPNlUks21xhulz9-WkcUI6UDMECubhTCyks9mQYs4CGYn2-N8YqvGJW-MQY-fKmI_ANLqYmbrxDBg2nLVZwedI1a1mZTvlBmWg6y1J9iliSZmNx3E0D8","iv":"MXJVPlmpK2RmNGH8G12KzA","tag":"XP7oILWIwDQETo5svidYtw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","encrypted_key":"Gn6OkvU9Vrj4yW8bEOYQXrZ5nHNTw5NTXj4E8RtYia0XSr77p916dsgJ7ydM-Cqp3bc-FW-Dw2mJzNG9aetUBImFV-C136Zd8qZfurVR6wdmknRRVV_EYDIGEUJmUeN20if7tUP-rxUEVN6R0ROJ-8N_XwDmlxx_kxqjoNBU1GlsGSyPhVXrBPOcHyeLrTQ1Dw4K2zzlOETcIg9HNq2wOgeMl5T7cAwAPup9IYhAYQPijwbZlY2Fh1DuldZ_lrGD6jQSRGKho1aSRd7i-tVyOfLU88nmCN9lInMIXlOWoiTjbip7e0dfbh2_Q4EDg-bwsvolgsiVt9Xqrz-2E1q0xM7E086KcFFG4__xyt0Y5J-TPlrX9oL1XYikSYaJG9LkSdUbuYNqqTdx8tRvpX_-r_zP7qlvTPZEsaR-Pa_ICKohZfqxMuU4c7ZEP2ayOLDDpewAm3oKX5Ln5hjBMNrWh-chsNin2t90Morq72xsCkKhRCEczXljQpp574e5j-8eIOv4o-LNCaf1liuq-4kHl48B7IkQrhNQtSJ6sEf5NyIItesD513o1XRcLadH4VYmn_zbUXOpTWcy32EoqawV8SVamku1MBup2hme01i5UPstvJVU2TT6lPAp0Y1IQrUwY6z0CDzT9FbUvJBi07Wu0GNj1hFrrryZaI8DcEMnhpM"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"IunHcQrdO2xEJO_DTbjfC9RodsUSE8YBHSSdtJW3DNDHfiOeioejCgXCKLWJRXhzOsC1LLcgt8n1oFncw7QnoMNGq6bhUqJ9o53CoetZTwP_aM6lKK7Fq73dRmj_ejcgphIAvlhEjMGQbi60jgBgrerilT4N_S7x3f39CSX2VnDScdHlLnLLj_822sjQoxAOFGhMQ2FSXLIISWdCxUQG13xtK-RxLRJhcL_F6rdQpNo","iv":"IOYdkjO4y9mVjiX8RNlh0w","tag":"xy6A83DIJUkEzKM8FjyoyZfxpCvGfqYK","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyQ0JDLUhTMzg0In0","encrypted_key":"ulk_x1VauBMMaN_FKe2Db6fk4RBwiZRKCvBgYz_ddJY916pYBPwZ4v9YmL9EtxU1isbzgXHTPjHHWlRI7PdqMZm5_kdzgo98uxd8cklLTDJz8dcA3-DQmcFmszOG2Wh2_vdMdUnrQxdmM8cI4k62zZ4WsCM0rGiANE7KRSieuxwkUHYXu62i9U7WT1m9re0UnNGBP_7kGSYgigSJfTsoWRH6eKGye5bXAcdOlfbo0hGu1i_9p9duClP_u9AR7LSxdUxzmTSW9yjHVMSg_PhJBIw9IBqAtfTR9K6ltzxbVPHRXzeIaxU8u14u9UE5ubIP325yot1XAdS-2r9tW_UsaPxFPn-wAuguU0vYcJoi_Lng7ZUf_KwpUXIcKplY2nThnZH8Q4GDlvrmDMUwRET9Uv5_rspX3VLL1isrJmghV4CyO18RX8bpgEYGqMhssXFPUTipcAlbWPIDRt-sjH8LpuQ777bygBFNwtBoAtK5CTL8PgdWPE7RORVKGRJGkcnsqiqyWKnaztY5XIOG57fFgQ055zjfThBKcV40Iit-FwSeq6NVyS3FSiJlQ4pJVWkcebhNIewOO2yvbQFyj_HMe5NMTPyJEZIL8P6L0b6VUsupMVkaJEM8ZbvvjOQ9iU7Cs7l9S1NWLZ7reIxNT-JSFHT2IrAYxl_BdgbBrwsJ5Hs"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"1-42J-20SxLWe2xcuvITQFe4uOI83WEl8DH33pCZAMAaWfiPPKFT1GEHqFApj90pEigPZ1vieh150m05DDE5iE_I1Oanp3RD0JtF7kFDQGl-WthHEpid4BffTD70m8Jdy2DBaHLAnVoshQJKWTP269Xvx-avbU_SQfGUCa9uOoWaWGEZ99S4i8IMyMIx6H6H-buTBizeeMy1C14WPmi_IBu6HF_V_5hk4xIXkeN1QNs","iv":"rD3ssiyJAzK2w_NBCu3dhg","tag":"pOegUBPvh0mwRfYuiy_Xpn-QoY1iacjtNkRqY6k63dU","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0","encrypted_key":"A0pMdy8sJfzd3KHguIGU9BiYL13lFsjkud3qY-1Roofxgq95jCJSg4Gt5t0ob52JC-xK7mtoLDhnkRbX7lPVaDdUOBQ1fK3eueFZigXW63XUE7xJF9cRJrWQ6aPuxgdwz-DhIbZP-bfozvSg6SqvaMNZjGgtiV2-Xd0awzF7ZtZbJEVOpgZGFV4PabGvVsZ7OA7ezQ0MUauwz4JuWDvggebiFESLwJhsP__xR2NhFWpcIBdOoKqYy1-s1cHa_TBoqq96q5OjYE8hz6NVa1A50WeudTflaObgyY2_cze_oXVbd77ve5_i1k2SyR_C8D24tCwCFq-zZnxoSqXzu1TI8ddl9yqs3DXQRGv7ow1R7QIF0V9D-2L-LcP9xsQ11j45FEoXI-TM67ob4AxkrLzGY8G8tT8ihTF9LFUyQV0qBA41Tsu-72-c_rdysigmQTjI7zj5BBi1rOPKJpewZ6QSpDP_D0Ko4Iv1WfCis8D49WqMguLI6cF2Ph5HXIbuzXSLqJlzJXXQvvxP1Pa3OVqrUUVJ2zIwoA1A3_og6LNH8qpeeSUQn9b8Vuoo6-xlGhg-iUHPHtWRQNIdDAu39kSHWLxGRdA1CKPyRk6nZoFFESSc-9nhWB4zb080Lm3YKEm-4EPVdCwdDavXTwGRS3vPx6AfFvaCn58dvU3NNQXMbOE"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"mrk14MJdDRKyqlvjahhsHdet8oXYuqTmoJ5BeORbij3ZyyAZVEz4J42gjtG5wwlkR0rB4BazlrBcaBZdZoNK1OKBj7h3s0QUd1nMhF5qA7h8jeiwxirXOqhlwHUxpEPWwJ04XcS-eG4VI-DOSk5Tem7bRn_PlL4VC1qS_Y_ZQk6P7x-tMQLcYQWwme4-E14n8_syWyfzNqHQHRdmNmPSLZ3daOFCqsk","iv":"ppT2nVwjH0oM19hQ","tag":"edjw-7Ta4gf8w42nsucCuA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIn0","encrypted_key":"HUGJZ2q9oPK6BTH0NBZJVKSDEq7OU1Z-8T4GLv70HbEZJ43iAjUe1-K5WDQzz2ikAtQSyTAmVySir3ziLdMUJt0vBj5iQakFtxmYD4GA_lNudh5b_12D1I4xCwjCEYKX5FByT7QYm3rU79XGNYs0gzbTKha78X9mQ5SsDgQqXvbESz-7apeAlaKa1PqyO8ow0s-Pp0wUDbP3NLjK6qozTPSf34MpDt44FAcc6TR92dXDMkvi4_SdKGKUKwvYx7KHe0hKoHub0rl_m68UAdlxJ2Hy39n-HefN2pL-M46k9SlfZiQdA_wVDg7jNMJG0pD19XWLpM3n8a_meGMt8UYcqsUagMydjJU-10I_lO--HXA4kfjulEmvXOdZrAgea28f5w_BRpoMGJnkTks-UqDfFa2KPOv2S-qYO0aNwPcuhLOIwiPRKtgcuujG6GtuBgMUleS2pNoZg6q6Gw3mQC7sBSikOqCyEx_A-CTzzXFqfN8k986QDCTx-2OT97jaaQPQ8BWVQgLzDDREj7wuv60CQL031bv27P99oZ80BK-vGiPfzjG0MNwT7BS7NC6NnhgXFS4Czo4SECk0TCmhz06IckID8xUIn_TJtQtn9gAPnyZaHV4R9YIoHx_Y7cmnc-xAd4gVk65QpviaKJ-cgyNcNuoIiklmm3CHDxaydat6xHI"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"b4wrAX6XyHJy01y0MdUtMqLyMiNs_Q7kHUdPYaB0s83zQ5gdJfc3L0CJBdTPV5tC4QY6N8-r6QrLSj5O-QFDgCpIj7c3IYFtjKPtpsiWJ80HyZ4ZoIBCrOshhUtCMzs_L4MYVRi2kKr-wvsAKmODw62kzFVzoEEWaEK5zdbgWbS9AGa0g2LMe80Y4blTE0SAwc215KBlY-_ONYULBecP8DjLCnu4Ybs","iv":"A6eFQhv2gXcyQAwS","tag":"Y4lDzYlIGqcqNoSpSYJOdg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTkyR0NNIn0","encrypted_key":"pyvUtlJZBjW7SY2qIesf4wJuiHsXM6Qmd0hJxGu3GaPpSrNhj19TlcNkAAH9JFoBo1i8GS3Qw6BsWBO6FXVtXqm-ZAi03Hw5BqOlaVz5Ls_Ruj6z6GUxa9MYJAd-iIWqCD1yCyT578ZwHZaarAA2tCuZMADxaQ74pBaXUggt7UmU3D5TZiEHuh4ShjB2CJR2fxJnO-U1GyAkr7j4XbFU5xVoxgTQDYd4FlDA0KDScnGd9r2gBT6TnM2ljA1nIyEz7a5qjDODZvVWTLqEmoRNgXzXrWT0WTh1wCrh0Q15JY_qLoTW8bWTBbs1bZLtpLaU0RL84F3iaEskcHo4O4VtSzKOQyDCVchN52gFN-yJ_IUTXBgb3HWJpM9QIP_0t-sAcg37CPO-JeuvrdT5e7_s8IMdMw2QzwpFdUT86FQAdYDYLKwG8TzMwqISLKkMeRZpt2N7XgKrDSTX-HsYLzWedc7DPugHfbEl2nknTFcmfjDj20Vpr01z_jWMhr6gs9612ucx71i0qYFk0PXDUN2dWY_w_ff790KNA5EEYlQLdnJ6BH1N30I654v23KUR9gs6kDy1KyHUuw-ylfByYXYT8du22vH5DzXiyW_ldHov_WULhGupABcE800ou2TPf94LOkfam47M8CISDJCqJ-rtkCVza-wCCw4lQf7ZvtAoJUE"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"05bmbpoOhrkgxaKrD15PJjOapFOMm5XdHCiQIpbDrbh7_yarzAOqtsnbhocrJ-3bNVgU4i7DevuNMWDdrM1BQDXUOmEKaNqx10I5k65aOE3B16--IG-RjOxdlUGj5YwQewyi98twt2SEmAwJJy7XkAaULrWYGluklqyg5XMBWmpkRG6i5lDMX7um19o4mtOkcWhp0uUnbuu-ZIe38eOivalJRQLXcRg","iv":"TibsjD24NcHTumc1","tag":"9N2CVWptZDd5IqlxuAgmJw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0","encrypted_key":"aM2uxhn1345sBBAohoHchu13E10LDU79BXdO97HbAqtqQf8CBw8vt3C39CCNz46J5_IIpSYDjvhIgj4ivMCR0hPIHfYdWcAmtDnzKz1kbD4olHE0aQoOe-Vckg08J6-MEXeHL9yPNFhLPSo8-SrMAnEbSeTYB88MEpABXOW-y9cM_R9D6zO5trinfu60TjCY_28SZl54i22g_U3xx9Rzqe1nnlZmmoDTFraMv8_WF9Mnnk2S9gXwW8jHe2QSXRSiyouyNIniH2ff6BM-YmI0UEe8yBtq9BgvaQpFWq-XXUcsi6a9jhr0TvizCrX9bvqvRd8FnehZB9MwkI3nyk7CWn9cvIx4oEzNwuP0iQlPu8mZETSV5Mbaya8qsT9mpOSRqEEYcsZHnlpXHofs8HE5_sCqLQy74kc6VCJ3h82lHLoplane9xlfuPulTCnuhd9OyoyQ3hY2-ZDQdfWa7bhmOdSJtUU6e-pC11pL6VpZ-NXjNciuBtT8AZ58lMToZ0fm9RT3zhzBcWuDHbqKfWtt8NzC1y6zaVYiTuTXNzjNBf4NTQe-2HW1sfsyKbe2cxDGqxtH71CIPoVK40gqoWBNiexkZa7ZzwLVD8-97jNx0O2ndFZ3_xhY8359fbxPpUqQTnoRABYmo6CDUgH_uU7nKVfqHldUB5m2RFHfQgWMLDk"}',
+ ],
];
}
@@ -83,37 +128,39 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'RSA',
- 'n' => 'p_Gffumd-Rj-hrWEKMZdfOw0JZci3dfVCkLYYISt60ajg8aktRR6Rc_1m_NMPIP2_BK5kXwWb74lqLh-x0iunfpgxHWnw4Wy00V2YwR0MtgbRW4JYyJjw9Fj7QooWdqRV7OoJb3VIpmBqr-JKjTV-91W6jPWcQNsUFYL5JsJ-sM',
- 'e' => 'AQAB',
- 'd' => 'pYj2sexpJj8pmfPOaTZkrZ5QJAEdf9aeiTer-S6uEqqUv22LqWSexLMfHvEn4rocNwfp2umZX9jnW69GXv1YBouBqrnN4vANPnjFp8y7ejKO_XDzKrf2c5YMgm7l4eE6aCHzEn2kFy971f97HN07KfiHNTln9boNGVsA6TpVrhk',
- 'p' => '2zIyk5fQMKC7vHqDCGQ-xEXRgiTZsQ2fN5gQ7rDsvGJdDBfpeWA8H3_bidSCNfAskSyhLoEFwQplARblm74BVQ',
- 'q' => 'xCRtcvPKTJ_uRZ2kxn8zMlETXcq1CBbuMLhZDl4QT6ksgAoOqnqITwckSXL2sTXTmDwgtuB1HYXk4TAXhwbrtw',
- 'dp' => 'EVJfMtCtcBpTm6pmznP1jdcinlFBLr-v1FndBK_QlXaEed8t4Rycw7R76eF0RMTtEK_hMOabSM0EfFiN3ofeXQ',
- 'dq' => 'rA5MWEcU0YyFhlnYHiucrGnEdEUJ8pOy09gSfvDym_6Jw7OO0-rywWhBY5DOZ_sQpv0vsVxKP-ChOwxlxxPCFw',
- 'qi' => 'FKqVgknFuntcWE0b4NSoqROngDbxLd-lQ2DWg9z7G-knJTizDwj_7tSlNbqYlcbXXNf5vRnhQCePb4KqKyPh8Q',
- ], [
- 'kty' => 'RSA',
- 'n' => 'slVGbcg7Mr_tQmfDJAIWrlWjBWpi_JzGTjCCVZGOikH3ekkUEH8TN39WJ2HXBwSNmT4bh8eRJsUyBKYr8yz3UdEUJxloo2SVZEN0rXh2Jb84OdObom1CFbPg4yQOvLN57pE06zc7GzQ1MKF2dqRFvyEyibKcs3V6J2DjvDXbxJAnTOmxWjLRKa6v9aKrNCakK_qSRzEwR-IbNnGHSrQr1RaDQ2gQ7FuVuNOJe8rrdlP1dIdg3ElzvDgjg3NY54b8SqwThXt8gRM1VKg5O-6fRdHLPS4L0DOElDlc8lboqA6oI1187cbLq__4P8c1pordIBmHXdbSd-4Q1BYnNVqfoQ',
- 'e' => 'AQAB',
- 'd' => 'rhaTB06lg5ha3C2BESC81XkiCIJfmWzOJbwzL6dFd_CHz6eRX709nDrBdvaLO_2U4VkA9R67sxZkCqfRVbW6xfMN8lFalc72C4fSWhmzdIvkLodFcl2oWplb20Dy5gFq8ZptB4XGPHtNxWiJxa39rGSS-lsToBj5o4FxL-V_4bSZOLWLfUIaFS5xJ4xZ6rLAH1gd8AlUbQfcwToDCjzyWSZDHFqCtOr10tD_3OeK_SdQoG4FGpnNo4WdUstTRTIYGaN8N_ThJh-f7bWUomEuBFhKT6FCXkxHbPfq1t3q9YhQBmg2_Jw9gUWD4lukPDpvdp-_blMRqs-9JNkL8plEsQ',
- 'p' => '53OBPF6RmswOMkuK8MhXjLT5NNCaFce9rKkpK-8KHK7UqVHqW006mzJ3kYVm2nIFODCqSO6RZcmEhLgrpZhAqbOl07lvh5nhhiXJyjaw6rcCumKTbjfX8dksnxHG2ik0Y8-1PHJwhIRHrjAeuf17XHgaATKOSxDVYSk-A7MClFU',
- 'q' => 'xT96R1C3y4zakgYWdThV9fn4sFgrlUFWrcMiis5dldl2k8aQrRCXRzWUNMK9G12ibBnXipVT24ZOQKJ0bqeoMU6aopY4DlsyWSzCEfJ6ojSE6Jd-Wnwb5TglNhXTq2wPjkpdbGTum7UeXYhdCJdwhc1GUkIU3ctTquY4isuyih0',
- 'dp' => 'f6oJbfgnzj-h0QI0KC4JhJZKI2SwqTTcnYFNMWuPo1SX_rEtWKEXo4VJyJ3RpspfsKe_Na1Jy-BE1UQU5yk8-Z4a6NcO-rfZWro7POu_2CeMPKyk75Wj6kXFRBR1H968hBWMvUPOZnnkY-Ms_6AezFl-1oxBSoyFditehoHV-WU',
- 'dq' => 'eoEtMaOpMwt9KFoNkqn1gXrKAMQR9XYKHotmJa17pDjWk3ssmcAHJJvbO1WDW76wxNDb9F9AIMRuT2hWRe9s34rBMZ94mzn6sDXDJqBhl-JkdYy5Vftk290eB1RRDVNk6eu30D1zkFNR06eAmHht0zwlo6sVCJdilG69yT4v2eU',
- 'qi' => '5vefHlL9JtiX-FBMYT6CSo51c-tonow5cj3Jl1crRuxod6zjXM13dr4bki40MT_ZQ8x1kjerFuoA1fYyktTAQnRgcafjYyZJIkh3RdGLf-_kDQ_up6v-k4IEile3RM_XST5lyq1ei6UuRO5NQDa5L9OctY5QWDz-rw9_51iKSUg',
- ], [
- 'kty' => 'RSA',
- 'n' => 'zBlgpPT7LeCKZbaRoX5iENY338bavaU-d_vw6xF4hYhqSBYoH2mt5WPeIW-lz9o1xlbxw-W6YnlHMuJfefnXOvZfFUNOK5-QGBq8ZJY7sfNJ0vxHJ2FJ8cNvpChTEqG7CRU6ZK_V2h5XuQFg4FGASbEgiJjRoPHrXwwts_e1ICIsW0Lg_YGBOk8RqlzguD-NcexYpO_N0VV-J5J5jlVxAEdVgddT-d9sGBx2Vq3PE3D8ZMTZ6UXTvmmdGK_CA-0Y7ep3UgYKVRmv2XLwwsmPWYJy8Ky9wqTnt58Lz5H6iZAGmgEztaf7hB-hRymDTFRWn2-zFhd1-TdqQ6xgZyfA4Qp7vFe1s9LZr_A-jFN2ZO7sP2x6e0dVDszzo0dJ41jrY4aP19hpOnPcXQ0sqjzahLmajekmtM3GjqBd9-bODXqCWiOhzc5Tl4Ru7_N1FEqUXVwBJhWelChez6DVTMeNdIJVw36ARtVNdsBwNTLK8q8n72cc_zwBmhFkGBdxHercMjmD1YJAaRfXfh8OJBbFJDSZkMp4N5PwK2iM4oy79xTsB61OZfEcwf1F4LKSDyyvJC5Mg1_Imc311nAdsDohBQMZquh-V73c6DhhBBRaAKk1esQoGUgLVBXsfR2RABr28WFM8RmOZKRdpI9AJO-6Z8X7a4JHCldljpyOX4mwWG8',
- 'e' => 'AQAB',
- 'd' => 'WS-lua-Lqyp5j6TN0oIFnFHfrJuarlBtEcU4K6BAyCkqOEHmWoO1h42yXW4KSN-TrA4GK5JRdgKFCEk_a2-vi4ZpWkNE_28EamQUeufjQgmL8vRmq2CqDUlXmaY9VuDxeDCcia8EhgHIV4GwsZUruAf8rXQJ9oiAT9JkjkXqEhacx2xcIKrcq3wtvgJD-H9c8bFTsw9PIvB25hftojLX5EVHqitL-N6Wv5qAY7Qjzt0KjYYvqu3mb0h7a3QyFcEfqadRaLhW_4TwANdnOdcWGwkT7POvIEUrNGP9p0Ck-EPFfrqTvAehssSXlx8eztXz3EvVOAwcc0Cx4MyMe8c1UtmKaXu7_v719irOXtECAtr7FfK_ycFA9dVQbKKBkj4MAidfgSLm5m9Ago8QnuyPHHktCcMzOeQNe6eY97rrBNpI3XEJJM97hnaIn1_g-poQgrnpYSZhTsDaKe9-ls8sD6RMqWHnVGe_bXsNfdi5G3iMqXAY94l0Eqrr_jTXdkmA-xTBCFfHcCLm5RDRBgc1zVYkl5d8rW822pyN4hfJsV1JR0KAltUQ2TCFR6fo0e6Ne-YbZDBHHPAD_s3m-2zSXSlODIG-bqR7beb8Ta9kjZo0advMbo4HjcY_qqd5KIY3HuyQWUGMABg96w_JxgFXEQVp3a6XQJaewQSRhsxTtGE',
- 'p' => '6l8TYYzb7VxrUFtKBbF1dTFjsRmAOajL6BGNB0Yyw0smZUEZL-HHeW3NzN4qB03oVUnNeAKKOde3-8mgDxi1qzB6ytqhJqrv0iRpsDJax7OP_F47um33nWcsipCHmzczM7f8HBmzD_beoMPGvsoUAzNIv9Ka0dz-1hQqz5etiKSMMwozAnUj_TqPLedc4DG6EaW8x_vgNfW-_puK-IzwsT5YjltQ8weufNxLlrT2sx9QT05jbxe2YR2ijNgvKxo-G0wz9A8pn5wiPB3NsdsHAy3mrtjMEjwv_Z65y0XPPO1W1Bp68XICknzghgTc7nZR_31NSrtEPmQBlJqoJPis-Q',
- 'q' => '3u8h8WiXSx6AtPGQpvmNebZqi66ITQcAhvdF8O_I1LdjswBTZwpXqKXb5kLBPXOAH6YqgxURNwZZ4M5Ys6iv66jVzPbSU_MMHlsiXzgeVfUxwbdOHpiZhRzoB2gzznfFDKR8bu1S07tYePeaEwplsSg2Vb5tC81uNIM1sshfeuDO5cZOH8DmuJzTjhGjb8CWmbgLnFOSBuPl-Vcr3oYVCnWzvEfCgUIy5tC9KeBC8Qe3O841SjbN3yZ8EEXwcUmo9lOt19s3LKBmtT94SXtok6-wHVWlL3YbzRg1kl8SVjN28NJd990mjPhjqBK8KyChCxoPn8lIXEUwGwFmIz4Spw',
- 'dp' => 'tYIqXVscnAf-KD565kvX_ongfjCUqJL8T97_zIlmGO8jbjlrSzTdKkKKpsXL4NpKO3srwGyfJkrVdw9ggTCOyWSDRITrVyn9D08Z9tYYjh6XPUixkyFFKkbULP_ftaqbYct0WULh9VQoeHMGgY24z_2wsrZlJnCzf5Ig0aLTR0bAOWsFtDqKQ7xNVKygthRs2Ov1dx-vNbr7Tu2hQ_rLEUmKhb1cxMrHLHXjqHS_tlti8_huc4P2v-GWmON4LDZnsPZkKfhwMOdXcB1Yxwwssx6iT_kgmmK4e_-oPi_zXmkk3KEhY8n7Cf3iWIh9ncROnsIo0N6U7IjA3Jil7fQU6Q',
- 'dq' => 'kYMy-5jST_Tr-69FRMfU4WIA74WPb_-nB3F1VIue4cGGMPuAdNxaVTlVbFmcOlkegwn566-fmfPqTINDgJkVotOEIhHlPWiCO3ou2EoP-vldbd0Q_4WJh0pT5SnNzvF8TAE9O0Zq7sr1N5geGFmMAPOHa7YtBSwkx9_w9-4z7Ee6pF4o9i76KfwrVisLK9FgO5vW8EXYJekxXevZNZj9OOOU2stYGPi1stUC88duylbH8iBpxjQ5cnNzPUf5Zmi3AXmjGib7P4S_JYT1JbmIjAV8Bdm2RWFpShiINy8ZD-ztsMkPDs9p70_d9IGuEtRsaYusMRa3xYpfmPDz0wMcNw',
- 'qi' => 'sEHok5K2HG0q6JdNzHB7FsM9EJxY7c6Gkya3Lfr1Rr5OYPcAosEIZpl-1_hCQ3MLGKT9UlYjZrlyt6SOUvCkxFX9slDZQeagmlSNMyWs18U0MxhFpEGthqLthS6ik0kFlschiSpMMyKVI8kgQR3OjMDcA_Mr92gZ9fl-mhtl2yfXJsBIkFBD7yOyxRxawy7v05RehoDHmdy2cnzaakPvg3Cekma2mfdjYgN5JnS0A20pC1zfoqi0D3B4KGrYVZhyJRnBakOUmwvE8rfmcjThx169LiAea6SYs7k9jwUCVWrNexXItxGdbQbbrb-FUotAcAQSDr6hHU8H79gN63WoOQ',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'RSA',
+ 'n' => 'p_Gffumd-Rj-hrWEKMZdfOw0JZci3dfVCkLYYISt60ajg8aktRR6Rc_1m_NMPIP2_BK5kXwWb74lqLh-x0iunfpgxHWnw4Wy00V2YwR0MtgbRW4JYyJjw9Fj7QooWdqRV7OoJb3VIpmBqr-JKjTV-91W6jPWcQNsUFYL5JsJ-sM',
+ 'e' => 'AQAB',
+ 'd' => 'pYj2sexpJj8pmfPOaTZkrZ5QJAEdf9aeiTer-S6uEqqUv22LqWSexLMfHvEn4rocNwfp2umZX9jnW69GXv1YBouBqrnN4vANPnjFp8y7ejKO_XDzKrf2c5YMgm7l4eE6aCHzEn2kFy971f97HN07KfiHNTln9boNGVsA6TpVrhk',
+ 'p' => '2zIyk5fQMKC7vHqDCGQ-xEXRgiTZsQ2fN5gQ7rDsvGJdDBfpeWA8H3_bidSCNfAskSyhLoEFwQplARblm74BVQ',
+ 'q' => 'xCRtcvPKTJ_uRZ2kxn8zMlETXcq1CBbuMLhZDl4QT6ksgAoOqnqITwckSXL2sTXTmDwgtuB1HYXk4TAXhwbrtw',
+ 'dp' => 'EVJfMtCtcBpTm6pmznP1jdcinlFBLr-v1FndBK_QlXaEed8t4Rycw7R76eF0RMTtEK_hMOabSM0EfFiN3ofeXQ',
+ 'dq' => 'rA5MWEcU0YyFhlnYHiucrGnEdEUJ8pOy09gSfvDym_6Jw7OO0-rywWhBY5DOZ_sQpv0vsVxKP-ChOwxlxxPCFw',
+ 'qi' => 'FKqVgknFuntcWE0b4NSoqROngDbxLd-lQ2DWg9z7G-knJTizDwj_7tSlNbqYlcbXXNf5vRnhQCePb4KqKyPh8Q',
+ ], [
+ 'kty' => 'RSA',
+ 'n' => 'slVGbcg7Mr_tQmfDJAIWrlWjBWpi_JzGTjCCVZGOikH3ekkUEH8TN39WJ2HXBwSNmT4bh8eRJsUyBKYr8yz3UdEUJxloo2SVZEN0rXh2Jb84OdObom1CFbPg4yQOvLN57pE06zc7GzQ1MKF2dqRFvyEyibKcs3V6J2DjvDXbxJAnTOmxWjLRKa6v9aKrNCakK_qSRzEwR-IbNnGHSrQr1RaDQ2gQ7FuVuNOJe8rrdlP1dIdg3ElzvDgjg3NY54b8SqwThXt8gRM1VKg5O-6fRdHLPS4L0DOElDlc8lboqA6oI1187cbLq__4P8c1pordIBmHXdbSd-4Q1BYnNVqfoQ',
+ 'e' => 'AQAB',
+ 'd' => 'rhaTB06lg5ha3C2BESC81XkiCIJfmWzOJbwzL6dFd_CHz6eRX709nDrBdvaLO_2U4VkA9R67sxZkCqfRVbW6xfMN8lFalc72C4fSWhmzdIvkLodFcl2oWplb20Dy5gFq8ZptB4XGPHtNxWiJxa39rGSS-lsToBj5o4FxL-V_4bSZOLWLfUIaFS5xJ4xZ6rLAH1gd8AlUbQfcwToDCjzyWSZDHFqCtOr10tD_3OeK_SdQoG4FGpnNo4WdUstTRTIYGaN8N_ThJh-f7bWUomEuBFhKT6FCXkxHbPfq1t3q9YhQBmg2_Jw9gUWD4lukPDpvdp-_blMRqs-9JNkL8plEsQ',
+ 'p' => '53OBPF6RmswOMkuK8MhXjLT5NNCaFce9rKkpK-8KHK7UqVHqW006mzJ3kYVm2nIFODCqSO6RZcmEhLgrpZhAqbOl07lvh5nhhiXJyjaw6rcCumKTbjfX8dksnxHG2ik0Y8-1PHJwhIRHrjAeuf17XHgaATKOSxDVYSk-A7MClFU',
+ 'q' => 'xT96R1C3y4zakgYWdThV9fn4sFgrlUFWrcMiis5dldl2k8aQrRCXRzWUNMK9G12ibBnXipVT24ZOQKJ0bqeoMU6aopY4DlsyWSzCEfJ6ojSE6Jd-Wnwb5TglNhXTq2wPjkpdbGTum7UeXYhdCJdwhc1GUkIU3ctTquY4isuyih0',
+ 'dp' => 'f6oJbfgnzj-h0QI0KC4JhJZKI2SwqTTcnYFNMWuPo1SX_rEtWKEXo4VJyJ3RpspfsKe_Na1Jy-BE1UQU5yk8-Z4a6NcO-rfZWro7POu_2CeMPKyk75Wj6kXFRBR1H968hBWMvUPOZnnkY-Ms_6AezFl-1oxBSoyFditehoHV-WU',
+ 'dq' => 'eoEtMaOpMwt9KFoNkqn1gXrKAMQR9XYKHotmJa17pDjWk3ssmcAHJJvbO1WDW76wxNDb9F9AIMRuT2hWRe9s34rBMZ94mzn6sDXDJqBhl-JkdYy5Vftk290eB1RRDVNk6eu30D1zkFNR06eAmHht0zwlo6sVCJdilG69yT4v2eU',
+ 'qi' => '5vefHlL9JtiX-FBMYT6CSo51c-tonow5cj3Jl1crRuxod6zjXM13dr4bki40MT_ZQ8x1kjerFuoA1fYyktTAQnRgcafjYyZJIkh3RdGLf-_kDQ_up6v-k4IEile3RM_XST5lyq1ei6UuRO5NQDa5L9OctY5QWDz-rw9_51iKSUg',
+ ], [
+ 'kty' => 'RSA',
+ 'n' => 'zBlgpPT7LeCKZbaRoX5iENY338bavaU-d_vw6xF4hYhqSBYoH2mt5WPeIW-lz9o1xlbxw-W6YnlHMuJfefnXOvZfFUNOK5-QGBq8ZJY7sfNJ0vxHJ2FJ8cNvpChTEqG7CRU6ZK_V2h5XuQFg4FGASbEgiJjRoPHrXwwts_e1ICIsW0Lg_YGBOk8RqlzguD-NcexYpO_N0VV-J5J5jlVxAEdVgddT-d9sGBx2Vq3PE3D8ZMTZ6UXTvmmdGK_CA-0Y7ep3UgYKVRmv2XLwwsmPWYJy8Ky9wqTnt58Lz5H6iZAGmgEztaf7hB-hRymDTFRWn2-zFhd1-TdqQ6xgZyfA4Qp7vFe1s9LZr_A-jFN2ZO7sP2x6e0dVDszzo0dJ41jrY4aP19hpOnPcXQ0sqjzahLmajekmtM3GjqBd9-bODXqCWiOhzc5Tl4Ru7_N1FEqUXVwBJhWelChez6DVTMeNdIJVw36ARtVNdsBwNTLK8q8n72cc_zwBmhFkGBdxHercMjmD1YJAaRfXfh8OJBbFJDSZkMp4N5PwK2iM4oy79xTsB61OZfEcwf1F4LKSDyyvJC5Mg1_Imc311nAdsDohBQMZquh-V73c6DhhBBRaAKk1esQoGUgLVBXsfR2RABr28WFM8RmOZKRdpI9AJO-6Z8X7a4JHCldljpyOX4mwWG8',
+ 'e' => 'AQAB',
+ 'd' => 'WS-lua-Lqyp5j6TN0oIFnFHfrJuarlBtEcU4K6BAyCkqOEHmWoO1h42yXW4KSN-TrA4GK5JRdgKFCEk_a2-vi4ZpWkNE_28EamQUeufjQgmL8vRmq2CqDUlXmaY9VuDxeDCcia8EhgHIV4GwsZUruAf8rXQJ9oiAT9JkjkXqEhacx2xcIKrcq3wtvgJD-H9c8bFTsw9PIvB25hftojLX5EVHqitL-N6Wv5qAY7Qjzt0KjYYvqu3mb0h7a3QyFcEfqadRaLhW_4TwANdnOdcWGwkT7POvIEUrNGP9p0Ck-EPFfrqTvAehssSXlx8eztXz3EvVOAwcc0Cx4MyMe8c1UtmKaXu7_v719irOXtECAtr7FfK_ycFA9dVQbKKBkj4MAidfgSLm5m9Ago8QnuyPHHktCcMzOeQNe6eY97rrBNpI3XEJJM97hnaIn1_g-poQgrnpYSZhTsDaKe9-ls8sD6RMqWHnVGe_bXsNfdi5G3iMqXAY94l0Eqrr_jTXdkmA-xTBCFfHcCLm5RDRBgc1zVYkl5d8rW822pyN4hfJsV1JR0KAltUQ2TCFR6fo0e6Ne-YbZDBHHPAD_s3m-2zSXSlODIG-bqR7beb8Ta9kjZo0advMbo4HjcY_qqd5KIY3HuyQWUGMABg96w_JxgFXEQVp3a6XQJaewQSRhsxTtGE',
+ 'p' => '6l8TYYzb7VxrUFtKBbF1dTFjsRmAOajL6BGNB0Yyw0smZUEZL-HHeW3NzN4qB03oVUnNeAKKOde3-8mgDxi1qzB6ytqhJqrv0iRpsDJax7OP_F47um33nWcsipCHmzczM7f8HBmzD_beoMPGvsoUAzNIv9Ka0dz-1hQqz5etiKSMMwozAnUj_TqPLedc4DG6EaW8x_vgNfW-_puK-IzwsT5YjltQ8weufNxLlrT2sx9QT05jbxe2YR2ijNgvKxo-G0wz9A8pn5wiPB3NsdsHAy3mrtjMEjwv_Z65y0XPPO1W1Bp68XICknzghgTc7nZR_31NSrtEPmQBlJqoJPis-Q',
+ 'q' => '3u8h8WiXSx6AtPGQpvmNebZqi66ITQcAhvdF8O_I1LdjswBTZwpXqKXb5kLBPXOAH6YqgxURNwZZ4M5Ys6iv66jVzPbSU_MMHlsiXzgeVfUxwbdOHpiZhRzoB2gzznfFDKR8bu1S07tYePeaEwplsSg2Vb5tC81uNIM1sshfeuDO5cZOH8DmuJzTjhGjb8CWmbgLnFOSBuPl-Vcr3oYVCnWzvEfCgUIy5tC9KeBC8Qe3O841SjbN3yZ8EEXwcUmo9lOt19s3LKBmtT94SXtok6-wHVWlL3YbzRg1kl8SVjN28NJd990mjPhjqBK8KyChCxoPn8lIXEUwGwFmIz4Spw',
+ 'dp' => 'tYIqXVscnAf-KD565kvX_ongfjCUqJL8T97_zIlmGO8jbjlrSzTdKkKKpsXL4NpKO3srwGyfJkrVdw9ggTCOyWSDRITrVyn9D08Z9tYYjh6XPUixkyFFKkbULP_ftaqbYct0WULh9VQoeHMGgY24z_2wsrZlJnCzf5Ig0aLTR0bAOWsFtDqKQ7xNVKygthRs2Ov1dx-vNbr7Tu2hQ_rLEUmKhb1cxMrHLHXjqHS_tlti8_huc4P2v-GWmON4LDZnsPZkKfhwMOdXcB1Yxwwssx6iT_kgmmK4e_-oPi_zXmkk3KEhY8n7Cf3iWIh9ncROnsIo0N6U7IjA3Jil7fQU6Q',
+ 'dq' => 'kYMy-5jST_Tr-69FRMfU4WIA74WPb_-nB3F1VIue4cGGMPuAdNxaVTlVbFmcOlkegwn566-fmfPqTINDgJkVotOEIhHlPWiCO3ou2EoP-vldbd0Q_4WJh0pT5SnNzvF8TAE9O0Zq7sr1N5geGFmMAPOHa7YtBSwkx9_w9-4z7Ee6pF4o9i76KfwrVisLK9FgO5vW8EXYJekxXevZNZj9OOOU2stYGPi1stUC88duylbH8iBpxjQ5cnNzPUf5Zmi3AXmjGib7P4S_JYT1JbmIjAV8Bdm2RWFpShiINy8ZD-ztsMkPDs9p70_d9IGuEtRsaYusMRa3xYpfmPDz0wMcNw',
+ 'qi' => 'sEHok5K2HG0q6JdNzHB7FsM9EJxY7c6Gkya3Lfr1Rr5OYPcAosEIZpl-1_hCQ3MLGKT9UlYjZrlyt6SOUvCkxFX9slDZQeagmlSNMyWs18U0MxhFpEGthqLthS6ik0kFlschiSpMMyKVI8kgQR3OjMDcA_Mr92gZ9fl-mhtl2yfXJsBIkFBD7yOyxRxawy7v05RehoDHmdy2cnzaakPvg3Cekma2mfdjYgN5JnS0A20pC1zfoqi0D3B4KGrYVZhyJRnBakOUmwvE8rfmcjThx169LiAea6SYs7k9jwUCVWrNexXItxGdbQbbrb-FUotAcAQSDr6hHU8H79gN63WoOQ',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWE/RSAOAEPBench.php b/performance/JWE/RSAOAEPBench.php
index 9ed9e4e1..b11d88d2 100644
--- a/performance/JWE/RSAOAEPBench.php
+++ b/performance/JWE/RSAOAEPBench.php
@@ -2,15 +2,6 @@
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\Performance\JWE;
/**
@@ -23,32 +14,50 @@ public function dataHeadersAndAlgorithms(): array
{
return [
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP', 'enc' => 'A128CBC-HS256'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP',
+ 'enc' => 'A128CBC-HS256',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP', 'enc' => 'A192CBC-HS384'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP',
+ 'enc' => 'A192CBC-HS384',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP', 'enc' => 'A256CBC-HS512'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP',
+ 'enc' => 'A256CBC-HS512',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP', 'enc' => 'A128GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP',
+ 'enc' => 'A128GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP', 'enc' => 'A192GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP',
+ 'enc' => 'A192GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
[
- 'shared_protected_header' => ['alg' => 'RSA-OAEP', 'enc' => 'A256GCM'],
+ 'shared_protected_header' => [
+ 'alg' => 'RSA-OAEP',
+ 'enc' => 'A256GCM',
+ ],
'shared_header' => [],
'recipient_header' => [],
],
@@ -58,24 +67,60 @@ public function dataHeadersAndAlgorithms(): array
public function dataInputs(): array
{
return [
- ['input' => '{"ciphertext":"JtdnkBM9DBLdMaPn5atpj3bT3ljoN8VhCPrdmx4zkpy_KHAE9qD6nKi6dxH7fBESp1S63_bYUIva4KZVT6wF4iGsQQJp3E5IdljeY5J470Ar4nBg2WB6MW6oUPqtnHhs87fLQSpwbDlGNygVUIo3_sGh09eGQyL3_96vQ1Sj3eOxuHyfelYw6COZTWW8o7ikaAgBY_RfMNX9jtlAfKywZJLo17YinA3wFwQpP-Twyk0","iv":"HQiumBYcqqSskMxGpmDWxA","tag":"xV5FQiaG3jTof2bWxegZlA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ","encrypted_key":"PBxpGWgGiM5aq-rUwl23M13r8we8q99HbUsTtY-maCsDM7AMrnBKctPgm0WdxncERN9hwrypI6bnI4NreTpGvPoLtKK92jeJXbkrEhCK7CxVQbShkFSCOPh2B0J8zRsgPDVs9JGU5nU47ywdw_bjqWjP6zKzPJGIz240zuTeANs"}'],
- ['input' => '{"ciphertext":"Qb6T8ZcChbQF2hf2dBsTJg7E4eSd6eYIaUO7wFjMq0JZabR-T6MSUvJpd5sBvuwee0CCIMJfeDO1tWv2dSYcZZJ6_JFmUtGI4iXtK4t60fV3-ryTbU-kVtIzQoPs0WdPoH2Ly78PoQBXom5Jmd5b0s8HKY1WYDMPOTAFp6Kw3QNJDN-vYVugOh4ae8ppJw-Q-kaJsBui-y-8d6XLTPQT6ZySz4BBKLEMXxWhhTY4ghw","iv":"EK1j9a1II8gJJALo3VK4Wg","tag":"T_H6BfOD1OuQ_HHl2AJbrYGsp6j6hg2T","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJDQkMtSFMzODQifQ","encrypted_key":"TQMM8tef2w86BTdibSdNCc1OM-S3SOZ02zu304wGuE956jQD6kHUsI4ZEpbA8XXRA58ywUCkyJEE0j1IcRzah4ORAbl2Spxd56I2sU2vfpsvz7YtR8N63F0BSpvn8UcINXPbed9ECw9zwUyI-DZMoTkfLA62jIUHXl-t78l34m4"}'],
- ['input' => '{"ciphertext":"VUBZeGk_obcIv9HtWPXC7JPLHuMdIuw6XRktelYczWUYhCwlCDUQ7LpDdVCV6fvqoWjoraejWZ8rvguv2k1jVnCKn6U8McjKbJybWb5GD-4KahDXo-PprZXNcPxovZ8tEvAeaaX9BFVWPVOEJPP8MWJm3STkfYWKjS9QK-icIFfSOIz9t51K5cb97woYeN9SVA7-5E6Fb6BJuqAPimkh8asPt8w3iU1iUjSkXBfsPPU","iv":"pW_0kqz1zoN1FrFIDsltUg","tag":"uCaFoOdSymyx0JGC1MEFH71kOKlsuNZa--ZN4EsdrBU","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ","encrypted_key":"n96w0hogHs8kd7DlzLyMrSsPdNHhU9Pvc8jWfFFuKC3S1qPsjngzUSsXsELSVzpc1qbl-dk8YSV1hxK7uFeTjYpCIm1tzypNsGnQCvGCsRdcOw2llgg0TrFsKROI9vUrzoUxz-5PgCAqsy-bONLVvIhuJ1I-2nosXcRTDSthFpk"}'],
- ['input' => '{"ciphertext":"sYe1briI2Z2fKvfRGqK-XvCiQ6mvfwwRf_E-fOqhEhf-e72nxnmKQQWHtiBBo538s4FzVdu2J9SXAzy3KrL1lIpM3B1Pg979_u15OuiMCh8sbzahMwrtLLVJJA3p46YgVvtEJNOgPDnF9Mglzyb1dL7YN8gd9jEaXC2wChh7ihKTKAAm3HN_I6XF7XDWk0nFiZC1jzk9bgSRHfOOpGIQbVsgH7hVsek","iv":"dEajjY72o58b8hNz","tag":"qfF-5Ife5-KARIlXCDAQNg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ","encrypted_key":"RGgVxfkKItz0jztVQNX-P8r4nKz1e_4ytc14Zki4dNUu3ZiO7KnBAQxI4GEWpCMWTu-jHHQS9IMYnagPkQHdRKdl4oEG_I2-_7JzTfcE5b7CbBLyY2yHnQvgbHkkMegglZyHDfw3tQGpZT7LvFG0RzYb6_MAkvGHfLtYsMwxEpk"}'],
- ['input' => '{"ciphertext":"m1F54FNjz7KYT6re99lW1EDZXaViHL2mNvjH84X2xF_A3mKibZ5KYxEytKwDKOG11wQaCbbIXlPfKqA2zRta2rAMTz5SHhwA_qNeS3ikHSfaoBhBpH1TVav5tnvgG3moSSEnX-GSHZKUzMyJODG1kGg9tnk0ln9Dp41KP_vNxcOmeKvQX27tUfgB3iDFbFaEXlS24wu0_SbF1YeX7r5yDtBpfVcakXo","iv":"MroHZRvd66Dmckxy","tag":"NyH_KPznDOXlf9izvo5sxg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJHQ00ifQ","encrypted_key":"JfnmYf1fP9weDBXzGdxrJb8VhDKVuDwdh9-uYZJAD4xGuQEP1uq1OmZ-H0V4mcQB9ZOhQoxQQ_cpUEO1pAIn99vo8OMh-uJM5Kxz-DCLV3xqdcPqjnvW8UBrU7FEV9eyu8vTkTXxKqwPF5S-3xHjp6lgU12iogbqu6JfjEqx60M"}'],
- ['input' => '{"ciphertext":"HpGXQ8qM96o2dfH4Ky5XnGqT3to12AOVx3HTjPvldr__Jf2fZ5UZS1602k6X6oilBenYzs306Bnge6tQ4K1FmMXBqClCbPIzf7ul4giVi_8xq3s78uV9YcLLxQnxDcaY2JzifwmTnz0BNr9YbhoBhjsl7jjrp5ISe7m8GSneyfYDLmsRuHhjZS4c6JdjH5036LAG-oFLWScTGyLUx5s8i2VdcZI_AJw","iv":"1crBLrp08Au5BbXl","tag":"EFCk9naEr477Pv8X74zKYQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ","encrypted_key":"G6DYOpfCRSBboaciGt7-LQf2KrwEBWYbHz8a-F2-O_Cv5qpgT8eEPsEqyC8H4isXUTN_wyybii8nsIkNBFCF02WaxxUT6EgrryBhqo7BpoggL88nOTsHHuZjMONIVb3kQ3PmzsQehe9NGySOUKwgHRtw-wj0lwa9HIGB2vEDxig"}'],
- ['input' => '{"ciphertext":"dxjvQRhPrS3dF_xvP7ygBeshHEepkHhJ7VF3kJJRs4tA-3IFjmgJBmmtlyCYubE-1b62yY4G7wa4xagro5Q8NYVoF2o0ghmb-mPiq0J-NvSgSB5-9KwBGN5gGc5QbU0vVEeAGxBdp4LBX4Xdq_L6-Cb2era7bqVx5LIJSf1mqxXffHRExUxt4EISVwY9CpiPnhGmuFoYR3LrlYbQy11CCaESCayH7rg39GxLHuMSz24","iv":"xoOM_UxZby4fl_nO63rqyw","tag":"CJ2b-KjT-OYRmDZJqxEJ9w","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ","encrypted_key":"bgteY2DzdUHC7CAp1pj4hEBet_sEwlcZLbQ7P3Fl41PMntmfsrPjTZX1wMm_6rrlrmVbj4Jg91DtUqRUdRbm7fUNRBK9aYFiknpEtc5i3fulVXNrBsWlqroNoha7wobqJOeK7tNrftim0xKo4njGtUizDIBSG5KahhPUMYY5j36Ij4jwViM1bax4Fp-KqoLmm4uNQCkPFgbob_Hhvl5LqsymEM3BayK6hCZY6gjkXPYy-qetscJ8wK8ndk0c2PmVl56vcmbrDbLAjrXkB-FjFY0yDmljAkNAYG2ONwPWk6UFg97367AeJEzfbelgr3SP1pnTXhyAQawsumGXIVr_RQ"}'],
- ['input' => '{"ciphertext":"LX-i9m2eIjTrpjCsuTNPO6ELSduvRqF9FLG4UPN_qydlcFZeBavQSc-du8IXLZEtw8tLgMu4raGOYkpvXJzmEz9TJqnaO_sfVB_NyFUVOcsDRgdY5K4Bmp46WGVfd7L3RM3FoJWZaCA-Z-csw68_8fXiq8ZCl33aqU8WEFagOu8dSll7SiQUpl6B_Bx7-kq2OTfX5r5XPmOpMlpsJiW5n9j1SJpZTQUfZCENK39BAVg","iv":"96IFzit5OiPyS11KtUbNIQ","tag":"kWMtlRys8X668OT3StMvReWEkRQqezSy","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJDQkMtSFMzODQifQ","encrypted_key":"jVZUuMlQdN1FsekWSzdla4UihupJCJpDHtmW4WCFyOmmard7jUdKMpXWkTCcHOoIs9DsWcOmoEVzNh-YNcCzDZsWJj08cyF7J8w_74fRx3lGLSKr86qs0cGyj2qkeSrrM2nSLPOI8JnGxZMC0utVtCu9-8goJ2ETBB3bYgd73mI8krrsY_WFCkqpoSEWcpNJzykC6_FCLELt49XH8simr0jfQkswAlJaUyf1L6S-NwUxlrLljrpz-Pf5HriD5f_C_3W2KnpOm62-hqQCV-6pvqQ4bN93UWLhqsPzSW5i-m1CBJOMZJNMn1IIpL79leKSEEwHUakvy9uGS_Yyp7iixA"}'],
- ['input' => '{"ciphertext":"gAdBQ7hjuMX5YtjCBfBK05PIi_nI70F2MvkXBg_ZVKsVvk7eHJh-SChbxgXBL9jj8geeDmeAmWEq2EHnKeJWijDwCVWKOYcik77sZTVt6rE2G6TO_voznLhBe2APUNIsC_PnMoXoqooQt56Nmk_RFkWF-C1y7JV-n7VyCn5_RkoTAbnsdP5oKgygpBuLCpR0RQQ4vTwaagp8YCcMY39SsxyDDu39QxNhMIKHpJFkQhg","iv":"0Toz-1TbKoLMgZY4sF8Kzg","tag":"TPjfXltcP0YiWpIkfGpMtYeCTEjzycOLLoKNb_AFaXw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ","encrypted_key":"DGz8FIspXhuS0d42vh_zGr8c1moS4aXSHQQwv_N0TGMnsi5VWy6Pb6q74hjppisC57cEDZPBihhwoKP-VCwo9q8Bmh14PB4Q_BatRYBmeuthf9zEWWU6vuMb3T-Oscf4W7Y-j6BRF-j_3vmzh_zpvPbBlCS8_PMtSIhyXUXQHm2Mms3gLPS9J0HO5TvSxlhl87E2YnF97_r6aj_Z2Q1dt1gbn40ul2mHZT2BVsqfFSGsaRZWT9TDxx2AapfVp6QpKbDGm4xof5pmcHaQLWWsxcSMfgZk4-WR3GyAb2uhGdgEwXZpA3x5CI5xYGlCfQN3G4eLhl_S8fVcAK948HNC-A"}'],
- ['input' => '{"ciphertext":"ASzuUXMVZMB1u4sARjXgFy8TOLHbxRnSH83E-AqPDPEi4Vys4GGPMb586OptbihnljtSjluMXO74Ts8STpQRYh-Ayuf3_BexjZ0J5qPs48dQ4L3XATHaZJPmOfuq5oQPIBUf8yfu5HIg3pdt0NpHSHhMtIDk4qzGw04jzNjiRrO-XOvEuaUtdxyG6SzJLkC9vjGQIoqCc3lkNt_nCYdYvlawmSpVSOg","iv":"J2Gv1duwjMpYBiZl","tag":"-WIRo4aQY1u8LnuCU-U6Pw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ","encrypted_key":"dG5fw2ecXqZdzv9u1B1ycHB8WsZz6xjEVXHPKmXfX58Tjnt6ib0ujjJhiiJ1h3DAJme0J3mNGj7HPgxFgfRYjMGqKMlsflgHRSQq2Lax6L813Zlh1sW2pargM3D_Kvot8B6Anvzw7B91f7YWM0o2KtjtW-vaN_dI8IZYtzeGwTt5cw5wpSmN7GQDOwjPXCPCvZW_t0_SrOBRR_t4lJMXM9dk04cVG5EzMBUpej5VZWK4QmFQE0rQIhXEwg1D7DfPaQaD2BCYrix_xiKKGAq668F7buxblY6qcZ3xlZ5OWb_ACBQbPqUXRQjACzhhoJOUUH03naUCbFaRAKhgRuqUKQ"}'],
- ['input' => '{"ciphertext":"xpRJ9HfjZNhiwa4lB3AP6zlTH73VoKbFFkxe18ZGBbwMUGnvyPDMUXqhd6xYAO6bB4jyqYPnCzrGsqSQJuMfUP1tJYWzpXp3XtfJhltc4YFZTC0B9XBs_cr5cLkKG8lMRWPjLMJJNRykRub3vd9quiRx975V7B8kaMea8VxuhqO7jiyysMrrPEJ0XD4S_cqsO0mx35V-nADDEFSPG42hRyd0eGfHZvY","iv":"p8ZRC-ygp0ZPD4I5","tag":"LpgaGEK8QNJFhWIQfeJZvQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJHQ00ifQ","encrypted_key":"FqPsHMY4Cf_nBfOX3ydQnvQ_r9uFcWPtvlMDsso0tOy3GsnXzjtMHV1MW5intPU1nrnDQ96-qkV823bvxvGMhnp4gGdPGFX75Rab8WtakrhYCR1slO2JQ1kLzWId-Q2AbrHLU12LPK10H92jIQNfhKV-S6H5Z5aM75KIPNrMltjujssBp-O0FpfuZIrEr1M2egnOvGJpTvg9rhCzqGB8mppvSqNGQzfxG9bsIaOSOgkNXbDaLJd2bDB67bx5fANrtzhH2ufPqsURcVHckSLV2jciAi6usZP0kJKF9bDAEh9TPPykN8OraFe6V43ZyBJraZPotKXwYSAz-CKeUyZnUA"}'],
- ['input' => '{"ciphertext":"a0cEWXJTR2qhbkE4mQe_o6tnw5lIPIH5ta3qO0etKMME_BqAAW8psDljIIcwHdnPXwSUHk2ersqQnnUoJcgoKchsqbzv3lcr1htqjiMlAsekxXCqeIop_lGCfh8oms7J5Pdzxcf2lYWxy3jaRw46NIH-vCIfAJ6vG2n7bN_tiGwBoTkW6e8Ka03DbD5qCy7yLVgocMMeMW44fKj4NF2F0fiJiLHmbEQ","iv":"nf5j40aPEBokKvyV","tag":"dozonj7NaDgtujKnEVcjzw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ","encrypted_key":"QlCvG7s2llqAPRW8ssnH-U8BSpldsjw6HoGNzfUWmks7oGbi_4KwqqXdtdfnkbJu5VhK1tRy-f1fNCrP85Z95iTnHh1m07h7SXNlVtz_e-VRInwZaCRocYe-ysSwXdhHyBObGvACyYgE3H45l_wjSem1VxZMwvKz3Pj5s3CqYYrzI8nBjBePmxYaTwgFwJ5757V1wma81iywqc-bxRVg6CDaD6D9JThycJGFPpaYjl7JKUKlsshxjj4BPOPh5gRE6SYGQmg0fJSIMaTTz1XFYn842GzeYWTAHU0Uxap-dYTen6Sx50eNj1dxA-BiMc4sLqgrRrZ4VtJNea8upfzdJg"}'],
- ['input' => '{"ciphertext":"Pj6dOq86y3q_fWIYEbm4HeWvxmrOxQaTfR0Ks8TIVQCy1FmWRmA8qa4eZIr11o_2r2TeuffvhcgHbF-vBSYctFBizgQNaV-ohmJ8R8QjhQk61GGJfOYSzsJb9zArPppCxAMqwhs6EyxYqyOywEw0lWmmLiaNvnIBnXxKJOIeiuuVUSUsBUFwQX0JOG7VxhRrblR9DSbF_HxKYHWP0K3zNiTmq0zikIESUpXS2xSVrAA","iv":"VR-xf2ijkZ6lbJLXHA_GwA","tag":"50nZKsL8ZclrlCOSi0k7Lw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ","encrypted_key":"Js33J-239Ph1hoL_dAqJeI4unEMgpyVZufkZsqVCapRWyn54ZSjVyhzsF6fVwWrCnLKZmwXX2eazsIX0eVsWpGfhvb7JuOmEwaTCtub-IqCKHP-twnCMO_dM_XdFtr8ch15TuMqCUbf_PIzKglj3uUhJbDmt_TLl0VBoAcFAuIoUYUnzxer1PIfT6WVcJ2dxvkYY-KCLUwPNpKJ9Vu7DwNbNm7HwTZlivUuMhLyb6Oc_4ssOWHHs96e_4Q0ZPJs8bhZ5oCgbugzLqYzfUirCw0xJHMimxwfMT2T8ftxr7swD94PnwNE_zpDOlY9rSv8NHnP0X_WAitwqn94-kVfVAAcrvtIbJRcaJdVDFxYiePypJYVeVYFxueWiLyUQz2nIx7fidzgFwcAFykxYjE1S_EE4gqCgtomtxuDz_daR9TM5LX8E_MWKoJC5X-BEKQDBO63pSZN13nfPWxJ_876Un_BsHjuNZIBYunqwEQ8FAKdH0kjo4WrDET1XVuBskylXpZw4JzsThRLU0sVotUwtlZZ-P3v6ATILUl63UDpQAOQxixsnpJkUiy65MmXbznVjG_PlJtXYSdDrcrLmkEdjP5Hh7BX2_kxT9Thhpt7wev_3oAnrMloLWnM3TAh0-eWGfXN85u42sgnNY8aHp0YiUFPKIM9SdRiSbd56RH5S91E"}'],
- ['input' => '{"ciphertext":"SCJCZj_IpM6VC-RCQiSSScXTx6i01Rmy1MevZvpJ37AQaCZiyCajQQ4fo_Sbs83WmXVrT1Mh_h7k39uH-cy1wqqDVBuocNLynLeO5gimCv9Gc2QiP6V0B0hcParhnttkYZU_eIIxYNRSvZbZxVHDasmm5oZ71vPXOLQcakk56iUxN430SjXcd8SeK733vx6q3YOo-0rmGT0tJLI3_V7VNYtBJ6WlHQXn9eUhVUK9OxQ","iv":"6bfRRLiAJ69GJRt8ItKpcA","tag":"_AwOo7Ns-4nS1D_OYxxsePH94IYUFVg8","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJDQkMtSFMzODQifQ","encrypted_key":"pKls_LCbXnBCTOWtEkn04ymw6ci4Yw7ha5BUCtfCGYz9LvCKfEgUh8As6Ss1LYRW8wq3-3ugdK4iPFQFkO_yh4_vMwUxrCFRA6dNC-xc43h91abSL1XjNKx38glmHdrTP9se-xF3Pnzum4dmzg1SgHBe9YD6uTJRtpmggfElBcSTaNSDathKcTqbHcf4OZccVEwqOelWZo38nid5fusQ8qRNjo82KDBv_2g1yB6nHanDHqw7DLDFKC1lIlU5KB8ejdfmrh0bIKMLlu4yKLNlX15vFJnPSsusxEVwKyB2cbFJBNPvGY86r1yNAvqGc1EIqL92MT9t_S_cGL40CrwgHZAXPMTw9r6f6UwEaA5ecWJe9bsH2J-I4E5Bj-3KvODm8uKLg0K6GUTiDQl25hufZz27bX0ZQ9PYLvj0zYB_KrcG9Gf9-B2XHAPNo24GtH5zDoPBpJsJxZz-l1MxKc_UcZo7J77GSglUOHJt92-P5Vrrzzf0VMRgqPSQMRi-GjYJt22l923rdZRYdLvbEIrEemaEjOzeIPczqgTFlz8fUIZg1869IY0k-PTg9xbOxdl0g-d6lwMOcPZpztDCqFd3s12Qez2FRUWAtBwlIwayQJk34vTsAyJ0psEsfMmYXXepx2SpiLfCXbbosXzY7NzfRTq-pqb3xnylYzZNRmzsUjs"}'],
- ['input' => '{"ciphertext":"I6oiXBKDe6u_kE6fbTWgU7p9PAxRAOzcHg8BY9u6yZS8hc2Bu6CpX0aDj0YZLkP6uwyJ3Yog34PR1Gx_x84gCUg3zuDYg3yHkfwc0HmFOE-4TsEPz1qBlPyZQjc-a1cY-XG5rzI6a3Z1WwdivsrbHPr_LoGmNrkNdjiDgR6qBYuhHN3o3uyCVoUGCZQLnjsD4eVqDaKqWHWzwUprhXQ_MqN3MUfUut6PXKreqx-HaSk","iv":"o93T2Wb6aPWwCaGu9x8V9Q","tag":"FT9xSVAHai49FE3vCxHLyLQ5nG0ANjxqglwC53a3AY0","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ","encrypted_key":"HvJIBCziPg3SEH-AcBOMvd8dF70XQ95ILE8BEYolxhB1Aug-HFPDjHEwGysz-5Avq3bvub6FxQb9NBACJkZXqFiHp5X4SQXs82P-4w1YtYgV2rRXvmUv9_vrlTpTjEFtDZ_BbImsyV4Nua_CHQPplEdtKCrHTKyTA5XKHw536WioVBeJVtlddedqCt2cNBEnOXDqe7B9etEElY-nM1UpFEujOA5-U9gGWCeFDkHz6iTD8EpxIPIGuWuiyliDyYekT0rauLmIxkFJufSKpw0ltjsiE57JYzfHqNHmq1w-5YVi7I6eFwcDjBcb-hWEHASX-m8ta3QCYfrba6Zha9Gpi5tiQ6tHS212EkSW83KhK2UZ9h8XqFJuYjaEH4n1RJuwD4QXhwL6tTyQBNR1F2KukZQ7XTXbQnbi8vx5NmjlF4li0APLrEcdwQOBk3KThTAptitixkgYzOf8eaYlLvxS0YjDpUU1pAw33ijhlzTm6sftUjGw1BlRFNTezk5xut5A90VP3-5KnB4DszmziZhX5B-e0C33TfyZns3gnU-xnv7PuGtqTK6FZnWNd-tgRiBAZa9jZkC9eZhFmTscnnzYg2IfbdF69uRuqrPmzczmHh9CysiW-yjY7IaYdfm6EiM_4kHaGp3rgGvqi8ner8leq7ATRmVaoTAIMuzWNGFDL00"}'],
- ['input' => '{"ciphertext":"ndvL_g0t83KLzuklzpJ4KXartd1efSz3YIsI05epP1o_1KEzUizcaHarNe2g3U3dfjpeClNTG4upsjxwUJiTqLRU564CfhUrPnC0TyO8rW6y8iJgEIo3dAc907QlsLMAj5_6QMaxTOswyPMOt1wBjC6rktjuxQyWMnEo0RQKgsXf1f9bG3HGQEjdi7HpLSTOu2SrpFcMjXq3CLvV86wx5fkfHLjDABg","iv":"sT87oRGv_jLy0kRe","tag":"JhT9pf99SRCGaZniWxb5dw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ","encrypted_key":"gU3dKyI6hYr6NmJ8bPuXgacnajdum4LpRNGrYVs-WTla7izvUs070lWnwtpRgG-cdnZRn8GEXJta51p6_60njdUTfw_7dDchilJLvc3Xwhlu7LMW9X9gt7IYsoXUiRPfTKBsFE0rzIRr56TWDvpSJtrAo2k8O-1K3uLOBYTFEyEsL579TynqDCMcu7fo2-ss2yph8-NmXsxMG7GXjJwZrdqNJlJIw71x6K4eZ_t219amRFubkWMMY_pbcv0X4cwbRw0D51Oa3cFEmRthqVkUgkmATZLTWnvNukNzCuAjIbfWseRj-Sp090AIxZs34ir2GWmlf8oMDY-oX9wIK-GikSe8wSbAgUSxpu3IbeSc7GQfzRY0ah4Byh10tk13KcrOvgKwIbWyFSuS1RFbAJuHtm1_cYIDzgvyFpPMo61hmsxJxjpO-Am8SN84R1c6xtPtuzU0LCURssMRXpbS2KzJ0khWL2o18maVaN3QPyI27AAzfI3lhQT3b1OHeOigI4f7PtTkPHO1bV7h2XvTZhMDIFYjqBibV4xmJpTDTKdlSkrd5a6eHAhjoIUPsfJQSmtoSVcbNncwXL3VlwxG1u_4yv7Oad5UQp3bs5bDgGe29BzCdrAP29kJirT8uNrPERANpOS-HCxoalOeh-Wutt8cSMwGVCb4_9ImtqM3C__Turc"}'],
- ['input' => '{"ciphertext":"BlH1xIp0sl06avNU6ilbAFYazGI2McXYuMVbaK5HT3G6R5Nslu4c5Pk1HdqDio48h0dzJSyg7tXQfBjiDoB6fW2M00mQYB9i1QQbuj2axdycE5R5l2NhoVhp-28DBynWAStkBiie4ND2YpAJGObFXAAHbi1OVzz-N8pnK8SguWRezQapljC-besKyQSKYcHaJFq_hhxGHBskTC89o3xBwpWQ2lchSvA","iv":"3Ilx73gx6nhs3cGy","tag":"vjk7-Ogspz8hsw37gJ-9ig","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJHQ00ifQ","encrypted_key":"EjGYVkdnnTFJ-zVcDUw0XD4PK6iKzaG_Qd0tLycGKmEY4-YXX71ld4sFaXW8bmLsrTPKeGNg44r1ZYAdM6V_1DBMc98uOksq6aYxB3I3M0l6JNOgp4CvFbDE05e10v2bLY81a3O6yav4yLq94hl2eRnlFg5meNK4xhpwRKo_VsKTbNLvbx6BARwy4-tpkJrKw9G5JiGJSrQMhx888sp-GoKLb-TWv2_5SYxpGGPKU6jAJaJXijWNfnWxHjhXJhWSLFu4As64i8uHRhF3FVSz9g-hDuU9HwPPwSxEOm_TwfZdO5BU5N16RE8l6pgDJNmvO1Rwtvthc8Ngf-9v_LDFK8radc_Ne3NJc4kORRd25Cl-rxu9_1e8SYFpEhHL9_MXylBe4rxrXg-GCutwdpm9_RotogJALd-qQKy0zBdMRQyVVoJpC8lxeOo15q9Ztnr3hkoqtPVOAh39itIlQHOzG2PEjrmcXezHAFxb6ezFOTZVUNyWRqV7jZDi17YtDUDQfPQRpy6wydCRpmkR19W-6cUJ-LQJvtU7YhN-2vc4MWZL98RCoiJ72hTgocStquEa2YWX7RZcKKBAjqw41ZZ5JtCUiIBm-4aSWRra_FNcGbIwkbt81HphLoEyCIr3U-fP0gG1H5QEXDCml7lAgcWKXHbpKuVQt2HNslCcaLBPVLs"}'],
- ['input' => '{"ciphertext":"iTzfPt_ytyL-OGKtXaJLY7Y3A1tLnYuYpZoR2IWLi2xINT3U-Rw8p6KTVBUUwO0O6PrAzXr2jypJQ2g1KvFkigu1GGQgTBbvaQXAxvQjlZMqJxRkxLUofL1a_hW2X9NzSHM0v3ATFlJWyeXeEaEKknK5L7Q077zVcjO2RRVxw57WAg1rgN8mHOqKOdvqfXvvW9Vkp5kKZ6LJjiDH5YJhw9liVKEO36Q","iv":"lZGMh_o3obcO5XaG","tag":"iQB1Xd-uWtPw1uBhO9uxYg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ","encrypted_key":"pCgocOLTFZYWbxfrtR_AqKGDI7EkgVL6uBMTybiCo-ws74pcCwS21N-SOmPAZ6olnXZtoZNnVQMHhj2IKSZNOdmjnvzdJgLCmk8PyBrj4WZTU-ebPArKyeYjwSRpOKRFFpBbk78KatR8lu7wfmgKhSAjYBLZ-eSlWL9J8SUXs1zX9wyPFzvkGOSwrP__WnZdv5-J_9bggexerK1NVnZJrm8quVqmD97udcd8KSVF6ijxC81ZAcViJ6WVgFfynhaNjesuR_T6MCDyuhoMYlwkzvcou3MgYfblyLeDzbdnSdzYkzqqgZbFErKJnD7tErRqpk4w1pCmwgDdDGSp8-Y_h459-CL11xxVVkLCsPPOdpsUxMem0zmrSA7LzjTU1dld6nupcWM0ZlUEFz1pfrkVuMRmL1b-9o1AJxsLtEbx0MwFPJMKnPZCdnPITTK5MvEdG1-7CRBtjxwE98JMQ6AYEf2VKog2ji1PauDo-EZ5v8BvTbwPUrYNF-ofM_S-dzFXEt4mMRJSQWV6oCZX-OWyfULNvZywd35Y2nuQeZHzvtoBU8d8SB20iAezl135TgOKuwoNosvgUxXdwsVwyWdXoDOwcYURVgpef0qR8RfrBN3khIuhfqQOopKSJpzgFVnj121Db5qV6-0nu0Y6hkyj0EBvLug70wZF_oAfi0kCPr8"}'],
+ [
+ 'input' => '{"ciphertext":"JtdnkBM9DBLdMaPn5atpj3bT3ljoN8VhCPrdmx4zkpy_KHAE9qD6nKi6dxH7fBESp1S63_bYUIva4KZVT6wF4iGsQQJp3E5IdljeY5J470Ar4nBg2WB6MW6oUPqtnHhs87fLQSpwbDlGNygVUIo3_sGh09eGQyL3_96vQ1Sj3eOxuHyfelYw6COZTWW8o7ikaAgBY_RfMNX9jtlAfKywZJLo17YinA3wFwQpP-Twyk0","iv":"HQiumBYcqqSskMxGpmDWxA","tag":"xV5FQiaG3jTof2bWxegZlA","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ","encrypted_key":"PBxpGWgGiM5aq-rUwl23M13r8we8q99HbUsTtY-maCsDM7AMrnBKctPgm0WdxncERN9hwrypI6bnI4NreTpGvPoLtKK92jeJXbkrEhCK7CxVQbShkFSCOPh2B0J8zRsgPDVs9JGU5nU47ywdw_bjqWjP6zKzPJGIz240zuTeANs"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"Qb6T8ZcChbQF2hf2dBsTJg7E4eSd6eYIaUO7wFjMq0JZabR-T6MSUvJpd5sBvuwee0CCIMJfeDO1tWv2dSYcZZJ6_JFmUtGI4iXtK4t60fV3-ryTbU-kVtIzQoPs0WdPoH2Ly78PoQBXom5Jmd5b0s8HKY1WYDMPOTAFp6Kw3QNJDN-vYVugOh4ae8ppJw-Q-kaJsBui-y-8d6XLTPQT6ZySz4BBKLEMXxWhhTY4ghw","iv":"EK1j9a1II8gJJALo3VK4Wg","tag":"T_H6BfOD1OuQ_HHl2AJbrYGsp6j6hg2T","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJDQkMtSFMzODQifQ","encrypted_key":"TQMM8tef2w86BTdibSdNCc1OM-S3SOZ02zu304wGuE956jQD6kHUsI4ZEpbA8XXRA58ywUCkyJEE0j1IcRzah4ORAbl2Spxd56I2sU2vfpsvz7YtR8N63F0BSpvn8UcINXPbed9ECw9zwUyI-DZMoTkfLA62jIUHXl-t78l34m4"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"VUBZeGk_obcIv9HtWPXC7JPLHuMdIuw6XRktelYczWUYhCwlCDUQ7LpDdVCV6fvqoWjoraejWZ8rvguv2k1jVnCKn6U8McjKbJybWb5GD-4KahDXo-PprZXNcPxovZ8tEvAeaaX9BFVWPVOEJPP8MWJm3STkfYWKjS9QK-icIFfSOIz9t51K5cb97woYeN9SVA7-5E6Fb6BJuqAPimkh8asPt8w3iU1iUjSkXBfsPPU","iv":"pW_0kqz1zoN1FrFIDsltUg","tag":"uCaFoOdSymyx0JGC1MEFH71kOKlsuNZa--ZN4EsdrBU","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ","encrypted_key":"n96w0hogHs8kd7DlzLyMrSsPdNHhU9Pvc8jWfFFuKC3S1qPsjngzUSsXsELSVzpc1qbl-dk8YSV1hxK7uFeTjYpCIm1tzypNsGnQCvGCsRdcOw2llgg0TrFsKROI9vUrzoUxz-5PgCAqsy-bONLVvIhuJ1I-2nosXcRTDSthFpk"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"sYe1briI2Z2fKvfRGqK-XvCiQ6mvfwwRf_E-fOqhEhf-e72nxnmKQQWHtiBBo538s4FzVdu2J9SXAzy3KrL1lIpM3B1Pg979_u15OuiMCh8sbzahMwrtLLVJJA3p46YgVvtEJNOgPDnF9Mglzyb1dL7YN8gd9jEaXC2wChh7ihKTKAAm3HN_I6XF7XDWk0nFiZC1jzk9bgSRHfOOpGIQbVsgH7hVsek","iv":"dEajjY72o58b8hNz","tag":"qfF-5Ife5-KARIlXCDAQNg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ","encrypted_key":"RGgVxfkKItz0jztVQNX-P8r4nKz1e_4ytc14Zki4dNUu3ZiO7KnBAQxI4GEWpCMWTu-jHHQS9IMYnagPkQHdRKdl4oEG_I2-_7JzTfcE5b7CbBLyY2yHnQvgbHkkMegglZyHDfw3tQGpZT7LvFG0RzYb6_MAkvGHfLtYsMwxEpk"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"m1F54FNjz7KYT6re99lW1EDZXaViHL2mNvjH84X2xF_A3mKibZ5KYxEytKwDKOG11wQaCbbIXlPfKqA2zRta2rAMTz5SHhwA_qNeS3ikHSfaoBhBpH1TVav5tnvgG3moSSEnX-GSHZKUzMyJODG1kGg9tnk0ln9Dp41KP_vNxcOmeKvQX27tUfgB3iDFbFaEXlS24wu0_SbF1YeX7r5yDtBpfVcakXo","iv":"MroHZRvd66Dmckxy","tag":"NyH_KPznDOXlf9izvo5sxg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJHQ00ifQ","encrypted_key":"JfnmYf1fP9weDBXzGdxrJb8VhDKVuDwdh9-uYZJAD4xGuQEP1uq1OmZ-H0V4mcQB9ZOhQoxQQ_cpUEO1pAIn99vo8OMh-uJM5Kxz-DCLV3xqdcPqjnvW8UBrU7FEV9eyu8vTkTXxKqwPF5S-3xHjp6lgU12iogbqu6JfjEqx60M"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"HpGXQ8qM96o2dfH4Ky5XnGqT3to12AOVx3HTjPvldr__Jf2fZ5UZS1602k6X6oilBenYzs306Bnge6tQ4K1FmMXBqClCbPIzf7ul4giVi_8xq3s78uV9YcLLxQnxDcaY2JzifwmTnz0BNr9YbhoBhjsl7jjrp5ISe7m8GSneyfYDLmsRuHhjZS4c6JdjH5036LAG-oFLWScTGyLUx5s8i2VdcZI_AJw","iv":"1crBLrp08Au5BbXl","tag":"EFCk9naEr477Pv8X74zKYQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ","encrypted_key":"G6DYOpfCRSBboaciGt7-LQf2KrwEBWYbHz8a-F2-O_Cv5qpgT8eEPsEqyC8H4isXUTN_wyybii8nsIkNBFCF02WaxxUT6EgrryBhqo7BpoggL88nOTsHHuZjMONIVb3kQ3PmzsQehe9NGySOUKwgHRtw-wj0lwa9HIGB2vEDxig"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"dxjvQRhPrS3dF_xvP7ygBeshHEepkHhJ7VF3kJJRs4tA-3IFjmgJBmmtlyCYubE-1b62yY4G7wa4xagro5Q8NYVoF2o0ghmb-mPiq0J-NvSgSB5-9KwBGN5gGc5QbU0vVEeAGxBdp4LBX4Xdq_L6-Cb2era7bqVx5LIJSf1mqxXffHRExUxt4EISVwY9CpiPnhGmuFoYR3LrlYbQy11CCaESCayH7rg39GxLHuMSz24","iv":"xoOM_UxZby4fl_nO63rqyw","tag":"CJ2b-KjT-OYRmDZJqxEJ9w","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ","encrypted_key":"bgteY2DzdUHC7CAp1pj4hEBet_sEwlcZLbQ7P3Fl41PMntmfsrPjTZX1wMm_6rrlrmVbj4Jg91DtUqRUdRbm7fUNRBK9aYFiknpEtc5i3fulVXNrBsWlqroNoha7wobqJOeK7tNrftim0xKo4njGtUizDIBSG5KahhPUMYY5j36Ij4jwViM1bax4Fp-KqoLmm4uNQCkPFgbob_Hhvl5LqsymEM3BayK6hCZY6gjkXPYy-qetscJ8wK8ndk0c2PmVl56vcmbrDbLAjrXkB-FjFY0yDmljAkNAYG2ONwPWk6UFg97367AeJEzfbelgr3SP1pnTXhyAQawsumGXIVr_RQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"LX-i9m2eIjTrpjCsuTNPO6ELSduvRqF9FLG4UPN_qydlcFZeBavQSc-du8IXLZEtw8tLgMu4raGOYkpvXJzmEz9TJqnaO_sfVB_NyFUVOcsDRgdY5K4Bmp46WGVfd7L3RM3FoJWZaCA-Z-csw68_8fXiq8ZCl33aqU8WEFagOu8dSll7SiQUpl6B_Bx7-kq2OTfX5r5XPmOpMlpsJiW5n9j1SJpZTQUfZCENK39BAVg","iv":"96IFzit5OiPyS11KtUbNIQ","tag":"kWMtlRys8X668OT3StMvReWEkRQqezSy","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJDQkMtSFMzODQifQ","encrypted_key":"jVZUuMlQdN1FsekWSzdla4UihupJCJpDHtmW4WCFyOmmard7jUdKMpXWkTCcHOoIs9DsWcOmoEVzNh-YNcCzDZsWJj08cyF7J8w_74fRx3lGLSKr86qs0cGyj2qkeSrrM2nSLPOI8JnGxZMC0utVtCu9-8goJ2ETBB3bYgd73mI8krrsY_WFCkqpoSEWcpNJzykC6_FCLELt49XH8simr0jfQkswAlJaUyf1L6S-NwUxlrLljrpz-Pf5HriD5f_C_3W2KnpOm62-hqQCV-6pvqQ4bN93UWLhqsPzSW5i-m1CBJOMZJNMn1IIpL79leKSEEwHUakvy9uGS_Yyp7iixA"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"gAdBQ7hjuMX5YtjCBfBK05PIi_nI70F2MvkXBg_ZVKsVvk7eHJh-SChbxgXBL9jj8geeDmeAmWEq2EHnKeJWijDwCVWKOYcik77sZTVt6rE2G6TO_voznLhBe2APUNIsC_PnMoXoqooQt56Nmk_RFkWF-C1y7JV-n7VyCn5_RkoTAbnsdP5oKgygpBuLCpR0RQQ4vTwaagp8YCcMY39SsxyDDu39QxNhMIKHpJFkQhg","iv":"0Toz-1TbKoLMgZY4sF8Kzg","tag":"TPjfXltcP0YiWpIkfGpMtYeCTEjzycOLLoKNb_AFaXw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ","encrypted_key":"DGz8FIspXhuS0d42vh_zGr8c1moS4aXSHQQwv_N0TGMnsi5VWy6Pb6q74hjppisC57cEDZPBihhwoKP-VCwo9q8Bmh14PB4Q_BatRYBmeuthf9zEWWU6vuMb3T-Oscf4W7Y-j6BRF-j_3vmzh_zpvPbBlCS8_PMtSIhyXUXQHm2Mms3gLPS9J0HO5TvSxlhl87E2YnF97_r6aj_Z2Q1dt1gbn40ul2mHZT2BVsqfFSGsaRZWT9TDxx2AapfVp6QpKbDGm4xof5pmcHaQLWWsxcSMfgZk4-WR3GyAb2uhGdgEwXZpA3x5CI5xYGlCfQN3G4eLhl_S8fVcAK948HNC-A"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"ASzuUXMVZMB1u4sARjXgFy8TOLHbxRnSH83E-AqPDPEi4Vys4GGPMb586OptbihnljtSjluMXO74Ts8STpQRYh-Ayuf3_BexjZ0J5qPs48dQ4L3XATHaZJPmOfuq5oQPIBUf8yfu5HIg3pdt0NpHSHhMtIDk4qzGw04jzNjiRrO-XOvEuaUtdxyG6SzJLkC9vjGQIoqCc3lkNt_nCYdYvlawmSpVSOg","iv":"J2Gv1duwjMpYBiZl","tag":"-WIRo4aQY1u8LnuCU-U6Pw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ","encrypted_key":"dG5fw2ecXqZdzv9u1B1ycHB8WsZz6xjEVXHPKmXfX58Tjnt6ib0ujjJhiiJ1h3DAJme0J3mNGj7HPgxFgfRYjMGqKMlsflgHRSQq2Lax6L813Zlh1sW2pargM3D_Kvot8B6Anvzw7B91f7YWM0o2KtjtW-vaN_dI8IZYtzeGwTt5cw5wpSmN7GQDOwjPXCPCvZW_t0_SrOBRR_t4lJMXM9dk04cVG5EzMBUpej5VZWK4QmFQE0rQIhXEwg1D7DfPaQaD2BCYrix_xiKKGAq668F7buxblY6qcZ3xlZ5OWb_ACBQbPqUXRQjACzhhoJOUUH03naUCbFaRAKhgRuqUKQ"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"xpRJ9HfjZNhiwa4lB3AP6zlTH73VoKbFFkxe18ZGBbwMUGnvyPDMUXqhd6xYAO6bB4jyqYPnCzrGsqSQJuMfUP1tJYWzpXp3XtfJhltc4YFZTC0B9XBs_cr5cLkKG8lMRWPjLMJJNRykRub3vd9quiRx975V7B8kaMea8VxuhqO7jiyysMrrPEJ0XD4S_cqsO0mx35V-nADDEFSPG42hRyd0eGfHZvY","iv":"p8ZRC-ygp0ZPD4I5","tag":"LpgaGEK8QNJFhWIQfeJZvQ","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJHQ00ifQ","encrypted_key":"FqPsHMY4Cf_nBfOX3ydQnvQ_r9uFcWPtvlMDsso0tOy3GsnXzjtMHV1MW5intPU1nrnDQ96-qkV823bvxvGMhnp4gGdPGFX75Rab8WtakrhYCR1slO2JQ1kLzWId-Q2AbrHLU12LPK10H92jIQNfhKV-S6H5Z5aM75KIPNrMltjujssBp-O0FpfuZIrEr1M2egnOvGJpTvg9rhCzqGB8mppvSqNGQzfxG9bsIaOSOgkNXbDaLJd2bDB67bx5fANrtzhH2ufPqsURcVHckSLV2jciAi6usZP0kJKF9bDAEh9TPPykN8OraFe6V43ZyBJraZPotKXwYSAz-CKeUyZnUA"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"a0cEWXJTR2qhbkE4mQe_o6tnw5lIPIH5ta3qO0etKMME_BqAAW8psDljIIcwHdnPXwSUHk2ersqQnnUoJcgoKchsqbzv3lcr1htqjiMlAsekxXCqeIop_lGCfh8oms7J5Pdzxcf2lYWxy3jaRw46NIH-vCIfAJ6vG2n7bN_tiGwBoTkW6e8Ka03DbD5qCy7yLVgocMMeMW44fKj4NF2F0fiJiLHmbEQ","iv":"nf5j40aPEBokKvyV","tag":"dozonj7NaDgtujKnEVcjzw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ","encrypted_key":"QlCvG7s2llqAPRW8ssnH-U8BSpldsjw6HoGNzfUWmks7oGbi_4KwqqXdtdfnkbJu5VhK1tRy-f1fNCrP85Z95iTnHh1m07h7SXNlVtz_e-VRInwZaCRocYe-ysSwXdhHyBObGvACyYgE3H45l_wjSem1VxZMwvKz3Pj5s3CqYYrzI8nBjBePmxYaTwgFwJ5757V1wma81iywqc-bxRVg6CDaD6D9JThycJGFPpaYjl7JKUKlsshxjj4BPOPh5gRE6SYGQmg0fJSIMaTTz1XFYn842GzeYWTAHU0Uxap-dYTen6Sx50eNj1dxA-BiMc4sLqgrRrZ4VtJNea8upfzdJg"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"Pj6dOq86y3q_fWIYEbm4HeWvxmrOxQaTfR0Ks8TIVQCy1FmWRmA8qa4eZIr11o_2r2TeuffvhcgHbF-vBSYctFBizgQNaV-ohmJ8R8QjhQk61GGJfOYSzsJb9zArPppCxAMqwhs6EyxYqyOywEw0lWmmLiaNvnIBnXxKJOIeiuuVUSUsBUFwQX0JOG7VxhRrblR9DSbF_HxKYHWP0K3zNiTmq0zikIESUpXS2xSVrAA","iv":"VR-xf2ijkZ6lbJLXHA_GwA","tag":"50nZKsL8ZclrlCOSi0k7Lw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhDQkMtSFMyNTYifQ","encrypted_key":"Js33J-239Ph1hoL_dAqJeI4unEMgpyVZufkZsqVCapRWyn54ZSjVyhzsF6fVwWrCnLKZmwXX2eazsIX0eVsWpGfhvb7JuOmEwaTCtub-IqCKHP-twnCMO_dM_XdFtr8ch15TuMqCUbf_PIzKglj3uUhJbDmt_TLl0VBoAcFAuIoUYUnzxer1PIfT6WVcJ2dxvkYY-KCLUwPNpKJ9Vu7DwNbNm7HwTZlivUuMhLyb6Oc_4ssOWHHs96e_4Q0ZPJs8bhZ5oCgbugzLqYzfUirCw0xJHMimxwfMT2T8ftxr7swD94PnwNE_zpDOlY9rSv8NHnP0X_WAitwqn94-kVfVAAcrvtIbJRcaJdVDFxYiePypJYVeVYFxueWiLyUQz2nIx7fidzgFwcAFykxYjE1S_EE4gqCgtomtxuDz_daR9TM5LX8E_MWKoJC5X-BEKQDBO63pSZN13nfPWxJ_876Un_BsHjuNZIBYunqwEQ8FAKdH0kjo4WrDET1XVuBskylXpZw4JzsThRLU0sVotUwtlZZ-P3v6ATILUl63UDpQAOQxixsnpJkUiy65MmXbznVjG_PlJtXYSdDrcrLmkEdjP5Hh7BX2_kxT9Thhpt7wev_3oAnrMloLWnM3TAh0-eWGfXN85u42sgnNY8aHp0YiUFPKIM9SdRiSbd56RH5S91E"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"SCJCZj_IpM6VC-RCQiSSScXTx6i01Rmy1MevZvpJ37AQaCZiyCajQQ4fo_Sbs83WmXVrT1Mh_h7k39uH-cy1wqqDVBuocNLynLeO5gimCv9Gc2QiP6V0B0hcParhnttkYZU_eIIxYNRSvZbZxVHDasmm5oZ71vPXOLQcakk56iUxN430SjXcd8SeK733vx6q3YOo-0rmGT0tJLI3_V7VNYtBJ6WlHQXn9eUhVUK9OxQ","iv":"6bfRRLiAJ69GJRt8ItKpcA","tag":"_AwOo7Ns-4nS1D_OYxxsePH94IYUFVg8","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJDQkMtSFMzODQifQ","encrypted_key":"pKls_LCbXnBCTOWtEkn04ymw6ci4Yw7ha5BUCtfCGYz9LvCKfEgUh8As6Ss1LYRW8wq3-3ugdK4iPFQFkO_yh4_vMwUxrCFRA6dNC-xc43h91abSL1XjNKx38glmHdrTP9se-xF3Pnzum4dmzg1SgHBe9YD6uTJRtpmggfElBcSTaNSDathKcTqbHcf4OZccVEwqOelWZo38nid5fusQ8qRNjo82KDBv_2g1yB6nHanDHqw7DLDFKC1lIlU5KB8ejdfmrh0bIKMLlu4yKLNlX15vFJnPSsusxEVwKyB2cbFJBNPvGY86r1yNAvqGc1EIqL92MT9t_S_cGL40CrwgHZAXPMTw9r6f6UwEaA5ecWJe9bsH2J-I4E5Bj-3KvODm8uKLg0K6GUTiDQl25hufZz27bX0ZQ9PYLvj0zYB_KrcG9Gf9-B2XHAPNo24GtH5zDoPBpJsJxZz-l1MxKc_UcZo7J77GSglUOHJt92-P5Vrrzzf0VMRgqPSQMRi-GjYJt22l923rdZRYdLvbEIrEemaEjOzeIPczqgTFlz8fUIZg1869IY0k-PTg9xbOxdl0g-d6lwMOcPZpztDCqFd3s12Qez2FRUWAtBwlIwayQJk34vTsAyJ0psEsfMmYXXepx2SpiLfCXbbosXzY7NzfRTq-pqb3xnylYzZNRmzsUjs"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"I6oiXBKDe6u_kE6fbTWgU7p9PAxRAOzcHg8BY9u6yZS8hc2Bu6CpX0aDj0YZLkP6uwyJ3Yog34PR1Gx_x84gCUg3zuDYg3yHkfwc0HmFOE-4TsEPz1qBlPyZQjc-a1cY-XG5rzI6a3Z1WwdivsrbHPr_LoGmNrkNdjiDgR6qBYuhHN3o3uyCVoUGCZQLnjsD4eVqDaKqWHWzwUprhXQ_MqN3MUfUut6PXKreqx-HaSk","iv":"o93T2Wb6aPWwCaGu9x8V9Q","tag":"FT9xSVAHai49FE3vCxHLyLQ5nG0ANjxqglwC53a3AY0","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZDQkMtSFM1MTIifQ","encrypted_key":"HvJIBCziPg3SEH-AcBOMvd8dF70XQ95ILE8BEYolxhB1Aug-HFPDjHEwGysz-5Avq3bvub6FxQb9NBACJkZXqFiHp5X4SQXs82P-4w1YtYgV2rRXvmUv9_vrlTpTjEFtDZ_BbImsyV4Nua_CHQPplEdtKCrHTKyTA5XKHw536WioVBeJVtlddedqCt2cNBEnOXDqe7B9etEElY-nM1UpFEujOA5-U9gGWCeFDkHz6iTD8EpxIPIGuWuiyliDyYekT0rauLmIxkFJufSKpw0ltjsiE57JYzfHqNHmq1w-5YVi7I6eFwcDjBcb-hWEHASX-m8ta3QCYfrba6Zha9Gpi5tiQ6tHS212EkSW83KhK2UZ9h8XqFJuYjaEH4n1RJuwD4QXhwL6tTyQBNR1F2KukZQ7XTXbQnbi8vx5NmjlF4li0APLrEcdwQOBk3KThTAptitixkgYzOf8eaYlLvxS0YjDpUU1pAw33ijhlzTm6sftUjGw1BlRFNTezk5xut5A90VP3-5KnB4DszmziZhX5B-e0C33TfyZns3gnU-xnv7PuGtqTK6FZnWNd-tgRiBAZa9jZkC9eZhFmTscnnzYg2IfbdF69uRuqrPmzczmHh9CysiW-yjY7IaYdfm6EiM_4kHaGp3rgGvqi8ner8leq7ATRmVaoTAIMuzWNGFDL00"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"ndvL_g0t83KLzuklzpJ4KXartd1efSz3YIsI05epP1o_1KEzUizcaHarNe2g3U3dfjpeClNTG4upsjxwUJiTqLRU564CfhUrPnC0TyO8rW6y8iJgEIo3dAc907QlsLMAj5_6QMaxTOswyPMOt1wBjC6rktjuxQyWMnEo0RQKgsXf1f9bG3HGQEjdi7HpLSTOu2SrpFcMjXq3CLvV86wx5fkfHLjDABg","iv":"sT87oRGv_jLy0kRe","tag":"JhT9pf99SRCGaZniWxb5dw","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ","encrypted_key":"gU3dKyI6hYr6NmJ8bPuXgacnajdum4LpRNGrYVs-WTla7izvUs070lWnwtpRgG-cdnZRn8GEXJta51p6_60njdUTfw_7dDchilJLvc3Xwhlu7LMW9X9gt7IYsoXUiRPfTKBsFE0rzIRr56TWDvpSJtrAo2k8O-1K3uLOBYTFEyEsL579TynqDCMcu7fo2-ss2yph8-NmXsxMG7GXjJwZrdqNJlJIw71x6K4eZ_t219amRFubkWMMY_pbcv0X4cwbRw0D51Oa3cFEmRthqVkUgkmATZLTWnvNukNzCuAjIbfWseRj-Sp090AIxZs34ir2GWmlf8oMDY-oX9wIK-GikSe8wSbAgUSxpu3IbeSc7GQfzRY0ah4Byh10tk13KcrOvgKwIbWyFSuS1RFbAJuHtm1_cYIDzgvyFpPMo61hmsxJxjpO-Am8SN84R1c6xtPtuzU0LCURssMRXpbS2KzJ0khWL2o18maVaN3QPyI27AAzfI3lhQT3b1OHeOigI4f7PtTkPHO1bV7h2XvTZhMDIFYjqBibV4xmJpTDTKdlSkrd5a6eHAhjoIUPsfJQSmtoSVcbNncwXL3VlwxG1u_4yv7Oad5UQp3bs5bDgGe29BzCdrAP29kJirT8uNrPERANpOS-HCxoalOeh-Wutt8cSMwGVCb4_9ImtqM3C__Turc"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"BlH1xIp0sl06avNU6ilbAFYazGI2McXYuMVbaK5HT3G6R5Nslu4c5Pk1HdqDio48h0dzJSyg7tXQfBjiDoB6fW2M00mQYB9i1QQbuj2axdycE5R5l2NhoVhp-28DBynWAStkBiie4ND2YpAJGObFXAAHbi1OVzz-N8pnK8SguWRezQapljC-besKyQSKYcHaJFq_hhxGHBskTC89o3xBwpWQ2lchSvA","iv":"3Ilx73gx6nhs3cGy","tag":"vjk7-Ogspz8hsw37gJ-9ig","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExOTJHQ00ifQ","encrypted_key":"EjGYVkdnnTFJ-zVcDUw0XD4PK6iKzaG_Qd0tLycGKmEY4-YXX71ld4sFaXW8bmLsrTPKeGNg44r1ZYAdM6V_1DBMc98uOksq6aYxB3I3M0l6JNOgp4CvFbDE05e10v2bLY81a3O6yav4yLq94hl2eRnlFg5meNK4xhpwRKo_VsKTbNLvbx6BARwy4-tpkJrKw9G5JiGJSrQMhx888sp-GoKLb-TWv2_5SYxpGGPKU6jAJaJXijWNfnWxHjhXJhWSLFu4As64i8uHRhF3FVSz9g-hDuU9HwPPwSxEOm_TwfZdO5BU5N16RE8l6pgDJNmvO1Rwtvthc8Ngf-9v_LDFK8radc_Ne3NJc4kORRd25Cl-rxu9_1e8SYFpEhHL9_MXylBe4rxrXg-GCutwdpm9_RotogJALd-qQKy0zBdMRQyVVoJpC8lxeOo15q9Ztnr3hkoqtPVOAh39itIlQHOzG2PEjrmcXezHAFxb6ezFOTZVUNyWRqV7jZDi17YtDUDQfPQRpy6wydCRpmkR19W-6cUJ-LQJvtU7YhN-2vc4MWZL98RCoiJ72hTgocStquEa2YWX7RZcKKBAjqw41ZZ5JtCUiIBm-4aSWRra_FNcGbIwkbt81HphLoEyCIr3U-fP0gG1H5QEXDCml7lAgcWKXHbpKuVQt2HNslCcaLBPVLs"}',
+ ],
+ [
+ 'input' => '{"ciphertext":"iTzfPt_ytyL-OGKtXaJLY7Y3A1tLnYuYpZoR2IWLi2xINT3U-Rw8p6KTVBUUwO0O6PrAzXr2jypJQ2g1KvFkigu1GGQgTBbvaQXAxvQjlZMqJxRkxLUofL1a_hW2X9NzSHM0v3ATFlJWyeXeEaEKknK5L7Q077zVcjO2RRVxw57WAg1rgN8mHOqKOdvqfXvvW9Vkp5kKZ6LJjiDH5YJhw9liVKEO36Q","iv":"lZGMh_o3obcO5XaG","tag":"iQB1Xd-uWtPw1uBhO9uxYg","aad":"QSxCLEMsRA","protected":"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ","encrypted_key":"pCgocOLTFZYWbxfrtR_AqKGDI7EkgVL6uBMTybiCo-ws74pcCwS21N-SOmPAZ6olnXZtoZNnVQMHhj2IKSZNOdmjnvzdJgLCmk8PyBrj4WZTU-ebPArKyeYjwSRpOKRFFpBbk78KatR8lu7wfmgKhSAjYBLZ-eSlWL9J8SUXs1zX9wyPFzvkGOSwrP__WnZdv5-J_9bggexerK1NVnZJrm8quVqmD97udcd8KSVF6ijxC81ZAcViJ6WVgFfynhaNjesuR_T6MCDyuhoMYlwkzvcou3MgYfblyLeDzbdnSdzYkzqqgZbFErKJnD7tErRqpk4w1pCmwgDdDGSp8-Y_h459-CL11xxVVkLCsPPOdpsUxMem0zmrSA7LzjTU1dld6nupcWM0ZlUEFz1pfrkVuMRmL1b-9o1AJxsLtEbx0MwFPJMKnPZCdnPITTK5MvEdG1-7CRBtjxwE98JMQ6AYEf2VKog2ji1PauDo-EZ5v8BvTbwPUrYNF-ofM_S-dzFXEt4mMRJSQWV6oCZX-OWyfULNvZywd35Y2nuQeZHzvtoBU8d8SB20iAezl135TgOKuwoNosvgUxXdwsVwyWdXoDOwcYURVgpef0qR8RfrBN3khIuhfqQOopKSJpzgFVnj121Db5qV6-0nu0Y6hkyj0EBvLug70wZF_oAfi0kCPr8"}',
+ ],
];
}
@@ -83,37 +128,39 @@ public function dataPrivateKeys(): array
{
return [
[
- 'recipient_keys' => ['keys' => [[
- 'kty' => 'RSA',
- 'n' => 'p_Gffumd-Rj-hrWEKMZdfOw0JZci3dfVCkLYYISt60ajg8aktRR6Rc_1m_NMPIP2_BK5kXwWb74lqLh-x0iunfpgxHWnw4Wy00V2YwR0MtgbRW4JYyJjw9Fj7QooWdqRV7OoJb3VIpmBqr-JKjTV-91W6jPWcQNsUFYL5JsJ-sM',
- 'e' => 'AQAB',
- 'd' => 'pYj2sexpJj8pmfPOaTZkrZ5QJAEdf9aeiTer-S6uEqqUv22LqWSexLMfHvEn4rocNwfp2umZX9jnW69GXv1YBouBqrnN4vANPnjFp8y7ejKO_XDzKrf2c5YMgm7l4eE6aCHzEn2kFy971f97HN07KfiHNTln9boNGVsA6TpVrhk',
- 'p' => '2zIyk5fQMKC7vHqDCGQ-xEXRgiTZsQ2fN5gQ7rDsvGJdDBfpeWA8H3_bidSCNfAskSyhLoEFwQplARblm74BVQ',
- 'q' => 'xCRtcvPKTJ_uRZ2kxn8zMlETXcq1CBbuMLhZDl4QT6ksgAoOqnqITwckSXL2sTXTmDwgtuB1HYXk4TAXhwbrtw',
- 'dp' => 'EVJfMtCtcBpTm6pmznP1jdcinlFBLr-v1FndBK_QlXaEed8t4Rycw7R76eF0RMTtEK_hMOabSM0EfFiN3ofeXQ',
- 'dq' => 'rA5MWEcU0YyFhlnYHiucrGnEdEUJ8pOy09gSfvDym_6Jw7OO0-rywWhBY5DOZ_sQpv0vsVxKP-ChOwxlxxPCFw',
- 'qi' => 'FKqVgknFuntcWE0b4NSoqROngDbxLd-lQ2DWg9z7G-knJTizDwj_7tSlNbqYlcbXXNf5vRnhQCePb4KqKyPh8Q',
- ], [
- 'kty' => 'RSA',
- 'n' => 'slVGbcg7Mr_tQmfDJAIWrlWjBWpi_JzGTjCCVZGOikH3ekkUEH8TN39WJ2HXBwSNmT4bh8eRJsUyBKYr8yz3UdEUJxloo2SVZEN0rXh2Jb84OdObom1CFbPg4yQOvLN57pE06zc7GzQ1MKF2dqRFvyEyibKcs3V6J2DjvDXbxJAnTOmxWjLRKa6v9aKrNCakK_qSRzEwR-IbNnGHSrQr1RaDQ2gQ7FuVuNOJe8rrdlP1dIdg3ElzvDgjg3NY54b8SqwThXt8gRM1VKg5O-6fRdHLPS4L0DOElDlc8lboqA6oI1187cbLq__4P8c1pordIBmHXdbSd-4Q1BYnNVqfoQ',
- 'e' => 'AQAB',
- 'd' => 'rhaTB06lg5ha3C2BESC81XkiCIJfmWzOJbwzL6dFd_CHz6eRX709nDrBdvaLO_2U4VkA9R67sxZkCqfRVbW6xfMN8lFalc72C4fSWhmzdIvkLodFcl2oWplb20Dy5gFq8ZptB4XGPHtNxWiJxa39rGSS-lsToBj5o4FxL-V_4bSZOLWLfUIaFS5xJ4xZ6rLAH1gd8AlUbQfcwToDCjzyWSZDHFqCtOr10tD_3OeK_SdQoG4FGpnNo4WdUstTRTIYGaN8N_ThJh-f7bWUomEuBFhKT6FCXkxHbPfq1t3q9YhQBmg2_Jw9gUWD4lukPDpvdp-_blMRqs-9JNkL8plEsQ',
- 'p' => '53OBPF6RmswOMkuK8MhXjLT5NNCaFce9rKkpK-8KHK7UqVHqW006mzJ3kYVm2nIFODCqSO6RZcmEhLgrpZhAqbOl07lvh5nhhiXJyjaw6rcCumKTbjfX8dksnxHG2ik0Y8-1PHJwhIRHrjAeuf17XHgaATKOSxDVYSk-A7MClFU',
- 'q' => 'xT96R1C3y4zakgYWdThV9fn4sFgrlUFWrcMiis5dldl2k8aQrRCXRzWUNMK9G12ibBnXipVT24ZOQKJ0bqeoMU6aopY4DlsyWSzCEfJ6ojSE6Jd-Wnwb5TglNhXTq2wPjkpdbGTum7UeXYhdCJdwhc1GUkIU3ctTquY4isuyih0',
- 'dp' => 'f6oJbfgnzj-h0QI0KC4JhJZKI2SwqTTcnYFNMWuPo1SX_rEtWKEXo4VJyJ3RpspfsKe_Na1Jy-BE1UQU5yk8-Z4a6NcO-rfZWro7POu_2CeMPKyk75Wj6kXFRBR1H968hBWMvUPOZnnkY-Ms_6AezFl-1oxBSoyFditehoHV-WU',
- 'dq' => 'eoEtMaOpMwt9KFoNkqn1gXrKAMQR9XYKHotmJa17pDjWk3ssmcAHJJvbO1WDW76wxNDb9F9AIMRuT2hWRe9s34rBMZ94mzn6sDXDJqBhl-JkdYy5Vftk290eB1RRDVNk6eu30D1zkFNR06eAmHht0zwlo6sVCJdilG69yT4v2eU',
- 'qi' => '5vefHlL9JtiX-FBMYT6CSo51c-tonow5cj3Jl1crRuxod6zjXM13dr4bki40MT_ZQ8x1kjerFuoA1fYyktTAQnRgcafjYyZJIkh3RdGLf-_kDQ_up6v-k4IEile3RM_XST5lyq1ei6UuRO5NQDa5L9OctY5QWDz-rw9_51iKSUg',
- ], [
- 'kty' => 'RSA',
- 'n' => 'zBlgpPT7LeCKZbaRoX5iENY338bavaU-d_vw6xF4hYhqSBYoH2mt5WPeIW-lz9o1xlbxw-W6YnlHMuJfefnXOvZfFUNOK5-QGBq8ZJY7sfNJ0vxHJ2FJ8cNvpChTEqG7CRU6ZK_V2h5XuQFg4FGASbEgiJjRoPHrXwwts_e1ICIsW0Lg_YGBOk8RqlzguD-NcexYpO_N0VV-J5J5jlVxAEdVgddT-d9sGBx2Vq3PE3D8ZMTZ6UXTvmmdGK_CA-0Y7ep3UgYKVRmv2XLwwsmPWYJy8Ky9wqTnt58Lz5H6iZAGmgEztaf7hB-hRymDTFRWn2-zFhd1-TdqQ6xgZyfA4Qp7vFe1s9LZr_A-jFN2ZO7sP2x6e0dVDszzo0dJ41jrY4aP19hpOnPcXQ0sqjzahLmajekmtM3GjqBd9-bODXqCWiOhzc5Tl4Ru7_N1FEqUXVwBJhWelChez6DVTMeNdIJVw36ARtVNdsBwNTLK8q8n72cc_zwBmhFkGBdxHercMjmD1YJAaRfXfh8OJBbFJDSZkMp4N5PwK2iM4oy79xTsB61OZfEcwf1F4LKSDyyvJC5Mg1_Imc311nAdsDohBQMZquh-V73c6DhhBBRaAKk1esQoGUgLVBXsfR2RABr28WFM8RmOZKRdpI9AJO-6Z8X7a4JHCldljpyOX4mwWG8',
- 'e' => 'AQAB',
- 'd' => 'WS-lua-Lqyp5j6TN0oIFnFHfrJuarlBtEcU4K6BAyCkqOEHmWoO1h42yXW4KSN-TrA4GK5JRdgKFCEk_a2-vi4ZpWkNE_28EamQUeufjQgmL8vRmq2CqDUlXmaY9VuDxeDCcia8EhgHIV4GwsZUruAf8rXQJ9oiAT9JkjkXqEhacx2xcIKrcq3wtvgJD-H9c8bFTsw9PIvB25hftojLX5EVHqitL-N6Wv5qAY7Qjzt0KjYYvqu3mb0h7a3QyFcEfqadRaLhW_4TwANdnOdcWGwkT7POvIEUrNGP9p0Ck-EPFfrqTvAehssSXlx8eztXz3EvVOAwcc0Cx4MyMe8c1UtmKaXu7_v719irOXtECAtr7FfK_ycFA9dVQbKKBkj4MAidfgSLm5m9Ago8QnuyPHHktCcMzOeQNe6eY97rrBNpI3XEJJM97hnaIn1_g-poQgrnpYSZhTsDaKe9-ls8sD6RMqWHnVGe_bXsNfdi5G3iMqXAY94l0Eqrr_jTXdkmA-xTBCFfHcCLm5RDRBgc1zVYkl5d8rW822pyN4hfJsV1JR0KAltUQ2TCFR6fo0e6Ne-YbZDBHHPAD_s3m-2zSXSlODIG-bqR7beb8Ta9kjZo0advMbo4HjcY_qqd5KIY3HuyQWUGMABg96w_JxgFXEQVp3a6XQJaewQSRhsxTtGE',
- 'p' => '6l8TYYzb7VxrUFtKBbF1dTFjsRmAOajL6BGNB0Yyw0smZUEZL-HHeW3NzN4qB03oVUnNeAKKOde3-8mgDxi1qzB6ytqhJqrv0iRpsDJax7OP_F47um33nWcsipCHmzczM7f8HBmzD_beoMPGvsoUAzNIv9Ka0dz-1hQqz5etiKSMMwozAnUj_TqPLedc4DG6EaW8x_vgNfW-_puK-IzwsT5YjltQ8weufNxLlrT2sx9QT05jbxe2YR2ijNgvKxo-G0wz9A8pn5wiPB3NsdsHAy3mrtjMEjwv_Z65y0XPPO1W1Bp68XICknzghgTc7nZR_31NSrtEPmQBlJqoJPis-Q',
- 'q' => '3u8h8WiXSx6AtPGQpvmNebZqi66ITQcAhvdF8O_I1LdjswBTZwpXqKXb5kLBPXOAH6YqgxURNwZZ4M5Ys6iv66jVzPbSU_MMHlsiXzgeVfUxwbdOHpiZhRzoB2gzznfFDKR8bu1S07tYePeaEwplsSg2Vb5tC81uNIM1sshfeuDO5cZOH8DmuJzTjhGjb8CWmbgLnFOSBuPl-Vcr3oYVCnWzvEfCgUIy5tC9KeBC8Qe3O841SjbN3yZ8EEXwcUmo9lOt19s3LKBmtT94SXtok6-wHVWlL3YbzRg1kl8SVjN28NJd990mjPhjqBK8KyChCxoPn8lIXEUwGwFmIz4Spw',
- 'dp' => 'tYIqXVscnAf-KD565kvX_ongfjCUqJL8T97_zIlmGO8jbjlrSzTdKkKKpsXL4NpKO3srwGyfJkrVdw9ggTCOyWSDRITrVyn9D08Z9tYYjh6XPUixkyFFKkbULP_ftaqbYct0WULh9VQoeHMGgY24z_2wsrZlJnCzf5Ig0aLTR0bAOWsFtDqKQ7xNVKygthRs2Ov1dx-vNbr7Tu2hQ_rLEUmKhb1cxMrHLHXjqHS_tlti8_huc4P2v-GWmON4LDZnsPZkKfhwMOdXcB1Yxwwssx6iT_kgmmK4e_-oPi_zXmkk3KEhY8n7Cf3iWIh9ncROnsIo0N6U7IjA3Jil7fQU6Q',
- 'dq' => 'kYMy-5jST_Tr-69FRMfU4WIA74WPb_-nB3F1VIue4cGGMPuAdNxaVTlVbFmcOlkegwn566-fmfPqTINDgJkVotOEIhHlPWiCO3ou2EoP-vldbd0Q_4WJh0pT5SnNzvF8TAE9O0Zq7sr1N5geGFmMAPOHa7YtBSwkx9_w9-4z7Ee6pF4o9i76KfwrVisLK9FgO5vW8EXYJekxXevZNZj9OOOU2stYGPi1stUC88duylbH8iBpxjQ5cnNzPUf5Zmi3AXmjGib7P4S_JYT1JbmIjAV8Bdm2RWFpShiINy8ZD-ztsMkPDs9p70_d9IGuEtRsaYusMRa3xYpfmPDz0wMcNw',
- 'qi' => 'sEHok5K2HG0q6JdNzHB7FsM9EJxY7c6Gkya3Lfr1Rr5OYPcAosEIZpl-1_hCQ3MLGKT9UlYjZrlyt6SOUvCkxFX9slDZQeagmlSNMyWs18U0MxhFpEGthqLthS6ik0kFlschiSpMMyKVI8kgQR3OjMDcA_Mr92gZ9fl-mhtl2yfXJsBIkFBD7yOyxRxawy7v05RehoDHmdy2cnzaakPvg3Cekma2mfdjYgN5JnS0A20pC1zfoqi0D3B4KGrYVZhyJRnBakOUmwvE8rfmcjThx169LiAea6SYs7k9jwUCVWrNexXItxGdbQbbrb-FUotAcAQSDr6hHU8H79gN63WoOQ',
- ]]],
+ 'recipient_keys' => [
+ 'keys' => [[
+ 'kty' => 'RSA',
+ 'n' => 'p_Gffumd-Rj-hrWEKMZdfOw0JZci3dfVCkLYYISt60ajg8aktRR6Rc_1m_NMPIP2_BK5kXwWb74lqLh-x0iunfpgxHWnw4Wy00V2YwR0MtgbRW4JYyJjw9Fj7QooWdqRV7OoJb3VIpmBqr-JKjTV-91W6jPWcQNsUFYL5JsJ-sM',
+ 'e' => 'AQAB',
+ 'd' => 'pYj2sexpJj8pmfPOaTZkrZ5QJAEdf9aeiTer-S6uEqqUv22LqWSexLMfHvEn4rocNwfp2umZX9jnW69GXv1YBouBqrnN4vANPnjFp8y7ejKO_XDzKrf2c5YMgm7l4eE6aCHzEn2kFy971f97HN07KfiHNTln9boNGVsA6TpVrhk',
+ 'p' => '2zIyk5fQMKC7vHqDCGQ-xEXRgiTZsQ2fN5gQ7rDsvGJdDBfpeWA8H3_bidSCNfAskSyhLoEFwQplARblm74BVQ',
+ 'q' => 'xCRtcvPKTJ_uRZ2kxn8zMlETXcq1CBbuMLhZDl4QT6ksgAoOqnqITwckSXL2sTXTmDwgtuB1HYXk4TAXhwbrtw',
+ 'dp' => 'EVJfMtCtcBpTm6pmznP1jdcinlFBLr-v1FndBK_QlXaEed8t4Rycw7R76eF0RMTtEK_hMOabSM0EfFiN3ofeXQ',
+ 'dq' => 'rA5MWEcU0YyFhlnYHiucrGnEdEUJ8pOy09gSfvDym_6Jw7OO0-rywWhBY5DOZ_sQpv0vsVxKP-ChOwxlxxPCFw',
+ 'qi' => 'FKqVgknFuntcWE0b4NSoqROngDbxLd-lQ2DWg9z7G-knJTizDwj_7tSlNbqYlcbXXNf5vRnhQCePb4KqKyPh8Q',
+ ], [
+ 'kty' => 'RSA',
+ 'n' => 'slVGbcg7Mr_tQmfDJAIWrlWjBWpi_JzGTjCCVZGOikH3ekkUEH8TN39WJ2HXBwSNmT4bh8eRJsUyBKYr8yz3UdEUJxloo2SVZEN0rXh2Jb84OdObom1CFbPg4yQOvLN57pE06zc7GzQ1MKF2dqRFvyEyibKcs3V6J2DjvDXbxJAnTOmxWjLRKa6v9aKrNCakK_qSRzEwR-IbNnGHSrQr1RaDQ2gQ7FuVuNOJe8rrdlP1dIdg3ElzvDgjg3NY54b8SqwThXt8gRM1VKg5O-6fRdHLPS4L0DOElDlc8lboqA6oI1187cbLq__4P8c1pordIBmHXdbSd-4Q1BYnNVqfoQ',
+ 'e' => 'AQAB',
+ 'd' => 'rhaTB06lg5ha3C2BESC81XkiCIJfmWzOJbwzL6dFd_CHz6eRX709nDrBdvaLO_2U4VkA9R67sxZkCqfRVbW6xfMN8lFalc72C4fSWhmzdIvkLodFcl2oWplb20Dy5gFq8ZptB4XGPHtNxWiJxa39rGSS-lsToBj5o4FxL-V_4bSZOLWLfUIaFS5xJ4xZ6rLAH1gd8AlUbQfcwToDCjzyWSZDHFqCtOr10tD_3OeK_SdQoG4FGpnNo4WdUstTRTIYGaN8N_ThJh-f7bWUomEuBFhKT6FCXkxHbPfq1t3q9YhQBmg2_Jw9gUWD4lukPDpvdp-_blMRqs-9JNkL8plEsQ',
+ 'p' => '53OBPF6RmswOMkuK8MhXjLT5NNCaFce9rKkpK-8KHK7UqVHqW006mzJ3kYVm2nIFODCqSO6RZcmEhLgrpZhAqbOl07lvh5nhhiXJyjaw6rcCumKTbjfX8dksnxHG2ik0Y8-1PHJwhIRHrjAeuf17XHgaATKOSxDVYSk-A7MClFU',
+ 'q' => 'xT96R1C3y4zakgYWdThV9fn4sFgrlUFWrcMiis5dldl2k8aQrRCXRzWUNMK9G12ibBnXipVT24ZOQKJ0bqeoMU6aopY4DlsyWSzCEfJ6ojSE6Jd-Wnwb5TglNhXTq2wPjkpdbGTum7UeXYhdCJdwhc1GUkIU3ctTquY4isuyih0',
+ 'dp' => 'f6oJbfgnzj-h0QI0KC4JhJZKI2SwqTTcnYFNMWuPo1SX_rEtWKEXo4VJyJ3RpspfsKe_Na1Jy-BE1UQU5yk8-Z4a6NcO-rfZWro7POu_2CeMPKyk75Wj6kXFRBR1H968hBWMvUPOZnnkY-Ms_6AezFl-1oxBSoyFditehoHV-WU',
+ 'dq' => 'eoEtMaOpMwt9KFoNkqn1gXrKAMQR9XYKHotmJa17pDjWk3ssmcAHJJvbO1WDW76wxNDb9F9AIMRuT2hWRe9s34rBMZ94mzn6sDXDJqBhl-JkdYy5Vftk290eB1RRDVNk6eu30D1zkFNR06eAmHht0zwlo6sVCJdilG69yT4v2eU',
+ 'qi' => '5vefHlL9JtiX-FBMYT6CSo51c-tonow5cj3Jl1crRuxod6zjXM13dr4bki40MT_ZQ8x1kjerFuoA1fYyktTAQnRgcafjYyZJIkh3RdGLf-_kDQ_up6v-k4IEile3RM_XST5lyq1ei6UuRO5NQDa5L9OctY5QWDz-rw9_51iKSUg',
+ ], [
+ 'kty' => 'RSA',
+ 'n' => 'zBlgpPT7LeCKZbaRoX5iENY338bavaU-d_vw6xF4hYhqSBYoH2mt5WPeIW-lz9o1xlbxw-W6YnlHMuJfefnXOvZfFUNOK5-QGBq8ZJY7sfNJ0vxHJ2FJ8cNvpChTEqG7CRU6ZK_V2h5XuQFg4FGASbEgiJjRoPHrXwwts_e1ICIsW0Lg_YGBOk8RqlzguD-NcexYpO_N0VV-J5J5jlVxAEdVgddT-d9sGBx2Vq3PE3D8ZMTZ6UXTvmmdGK_CA-0Y7ep3UgYKVRmv2XLwwsmPWYJy8Ky9wqTnt58Lz5H6iZAGmgEztaf7hB-hRymDTFRWn2-zFhd1-TdqQ6xgZyfA4Qp7vFe1s9LZr_A-jFN2ZO7sP2x6e0dVDszzo0dJ41jrY4aP19hpOnPcXQ0sqjzahLmajekmtM3GjqBd9-bODXqCWiOhzc5Tl4Ru7_N1FEqUXVwBJhWelChez6DVTMeNdIJVw36ARtVNdsBwNTLK8q8n72cc_zwBmhFkGBdxHercMjmD1YJAaRfXfh8OJBbFJDSZkMp4N5PwK2iM4oy79xTsB61OZfEcwf1F4LKSDyyvJC5Mg1_Imc311nAdsDohBQMZquh-V73c6DhhBBRaAKk1esQoGUgLVBXsfR2RABr28WFM8RmOZKRdpI9AJO-6Z8X7a4JHCldljpyOX4mwWG8',
+ 'e' => 'AQAB',
+ 'd' => 'WS-lua-Lqyp5j6TN0oIFnFHfrJuarlBtEcU4K6BAyCkqOEHmWoO1h42yXW4KSN-TrA4GK5JRdgKFCEk_a2-vi4ZpWkNE_28EamQUeufjQgmL8vRmq2CqDUlXmaY9VuDxeDCcia8EhgHIV4GwsZUruAf8rXQJ9oiAT9JkjkXqEhacx2xcIKrcq3wtvgJD-H9c8bFTsw9PIvB25hftojLX5EVHqitL-N6Wv5qAY7Qjzt0KjYYvqu3mb0h7a3QyFcEfqadRaLhW_4TwANdnOdcWGwkT7POvIEUrNGP9p0Ck-EPFfrqTvAehssSXlx8eztXz3EvVOAwcc0Cx4MyMe8c1UtmKaXu7_v719irOXtECAtr7FfK_ycFA9dVQbKKBkj4MAidfgSLm5m9Ago8QnuyPHHktCcMzOeQNe6eY97rrBNpI3XEJJM97hnaIn1_g-poQgrnpYSZhTsDaKe9-ls8sD6RMqWHnVGe_bXsNfdi5G3iMqXAY94l0Eqrr_jTXdkmA-xTBCFfHcCLm5RDRBgc1zVYkl5d8rW822pyN4hfJsV1JR0KAltUQ2TCFR6fo0e6Ne-YbZDBHHPAD_s3m-2zSXSlODIG-bqR7beb8Ta9kjZo0advMbo4HjcY_qqd5KIY3HuyQWUGMABg96w_JxgFXEQVp3a6XQJaewQSRhsxTtGE',
+ 'p' => '6l8TYYzb7VxrUFtKBbF1dTFjsRmAOajL6BGNB0Yyw0smZUEZL-HHeW3NzN4qB03oVUnNeAKKOde3-8mgDxi1qzB6ytqhJqrv0iRpsDJax7OP_F47um33nWcsipCHmzczM7f8HBmzD_beoMPGvsoUAzNIv9Ka0dz-1hQqz5etiKSMMwozAnUj_TqPLedc4DG6EaW8x_vgNfW-_puK-IzwsT5YjltQ8weufNxLlrT2sx9QT05jbxe2YR2ijNgvKxo-G0wz9A8pn5wiPB3NsdsHAy3mrtjMEjwv_Z65y0XPPO1W1Bp68XICknzghgTc7nZR_31NSrtEPmQBlJqoJPis-Q',
+ 'q' => '3u8h8WiXSx6AtPGQpvmNebZqi66ITQcAhvdF8O_I1LdjswBTZwpXqKXb5kLBPXOAH6YqgxURNwZZ4M5Ys6iv66jVzPbSU_MMHlsiXzgeVfUxwbdOHpiZhRzoB2gzznfFDKR8bu1S07tYePeaEwplsSg2Vb5tC81uNIM1sshfeuDO5cZOH8DmuJzTjhGjb8CWmbgLnFOSBuPl-Vcr3oYVCnWzvEfCgUIy5tC9KeBC8Qe3O841SjbN3yZ8EEXwcUmo9lOt19s3LKBmtT94SXtok6-wHVWlL3YbzRg1kl8SVjN28NJd990mjPhjqBK8KyChCxoPn8lIXEUwGwFmIz4Spw',
+ 'dp' => 'tYIqXVscnAf-KD565kvX_ongfjCUqJL8T97_zIlmGO8jbjlrSzTdKkKKpsXL4NpKO3srwGyfJkrVdw9ggTCOyWSDRITrVyn9D08Z9tYYjh6XPUixkyFFKkbULP_ftaqbYct0WULh9VQoeHMGgY24z_2wsrZlJnCzf5Ig0aLTR0bAOWsFtDqKQ7xNVKygthRs2Ov1dx-vNbr7Tu2hQ_rLEUmKhb1cxMrHLHXjqHS_tlti8_huc4P2v-GWmON4LDZnsPZkKfhwMOdXcB1Yxwwssx6iT_kgmmK4e_-oPi_zXmkk3KEhY8n7Cf3iWIh9ncROnsIo0N6U7IjA3Jil7fQU6Q',
+ 'dq' => 'kYMy-5jST_Tr-69FRMfU4WIA74WPb_-nB3F1VIue4cGGMPuAdNxaVTlVbFmcOlkegwn566-fmfPqTINDgJkVotOEIhHlPWiCO3ou2EoP-vldbd0Q_4WJh0pT5SnNzvF8TAE9O0Zq7sr1N5geGFmMAPOHa7YtBSwkx9_w9-4z7Ee6pF4o9i76KfwrVisLK9FgO5vW8EXYJekxXevZNZj9OOOU2stYGPi1stUC88duylbH8iBpxjQ5cnNzPUf5Zmi3AXmjGib7P4S_JYT1JbmIjAV8Bdm2RWFpShiINy8ZD-ztsMkPDs9p70_d9IGuEtRsaYusMRa3xYpfmPDz0wMcNw',
+ 'qi' => 'sEHok5K2HG0q6JdNzHB7FsM9EJxY7c6Gkya3Lfr1Rr5OYPcAosEIZpl-1_hCQ3MLGKT9UlYjZrlyt6SOUvCkxFX9slDZQeagmlSNMyWs18U0MxhFpEGthqLthS6ik0kFlschiSpMMyKVI8kgQR3OjMDcA_Mr92gZ9fl-mhtl2yfXJsBIkFBD7yOyxRxawy7v05RehoDHmdy2cnzaakPvg3Cekma2mfdjYgN5JnS0A20pC1zfoqi0D3B4KGrYVZhyJRnBakOUmwvE8rfmcjThx169LiAea6SYs7k9jwUCVWrNexXItxGdbQbbrb-FUotAcAQSDr6hHU8H79gN63WoOQ',
+ ]],
+ ],
],
];
}
diff --git a/performance/JWS/ES256Bench.php b/performance/JWS/ES256Bench.php
index 03966bda..b88258f1 100644
--- a/performance/JWS/ES256Bench.php
+++ b/performance/JWS/ES256Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('ES256');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('ES256')
+ ;
}
protected function getInput(): string
@@ -74,6 +67,8 @@ protected function getPrivateKey(): JWK
protected function getPublicKey(): JWK
{
- return $this->getPrivateKey()->toPublic();
+ return $this->getPrivateKey()
+ ->toPublic()
+ ;
}
}
diff --git a/performance/JWS/ES384Bench.php b/performance/JWS/ES384Bench.php
index 6431f051..00d81623 100644
--- a/performance/JWS/ES384Bench.php
+++ b/performance/JWS/ES384Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('ES384');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('ES384')
+ ;
}
protected function getInput(): string
@@ -74,6 +67,8 @@ protected function getPrivateKey(): JWK
protected function getPublicKey(): JWK
{
- return $this->getPrivateKey()->toPublic();
+ return $this->getPrivateKey()
+ ->toPublic()
+ ;
}
}
diff --git a/performance/JWS/ES512Bench.php b/performance/JWS/ES512Bench.php
index 35f4d871..7edf2ccc 100644
--- a/performance/JWS/ES512Bench.php
+++ b/performance/JWS/ES512Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('ES512');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('ES512')
+ ;
}
protected function getInput(): string
@@ -74,6 +67,8 @@ protected function getPrivateKey(): JWK
protected function getPublicKey(): JWK
{
- return $this->getPrivateKey()->toPublic();
+ return $this->getPrivateKey()
+ ->toPublic()
+ ;
}
}
diff --git a/performance/JWS/EdDSABench.php b/performance/JWS/EdDSABench.php
index 7df6c2bf..fc526892 100644
--- a/performance/JWS/EdDSABench.php
+++ b/performance/JWS/EdDSABench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('EdDSA');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('EdDSA')
+ ;
}
protected function getInput(): string
@@ -71,6 +64,8 @@ protected function getPrivateKey(): JWK
protected function getPublicKey(): JWK
{
- return $this->getPrivateKey()->toPublic();
+ return $this->getPrivateKey()
+ ->toPublic()
+ ;
}
}
diff --git a/performance/JWS/HS256Bench.php b/performance/JWS/HS256Bench.php
index d8ed63d9..ca4ffc76 100644
--- a/performance/JWS/HS256Bench.php
+++ b/performance/JWS/HS256Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('HS256');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('HS256')
+ ;
}
protected function getInput(): string
diff --git a/performance/JWS/HS384Bench.php b/performance/JWS/HS384Bench.php
index 65a5b083..21bd67c9 100644
--- a/performance/JWS/HS384Bench.php
+++ b/performance/JWS/HS384Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('HS384');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('HS384')
+ ;
}
protected function getInput(): string
diff --git a/performance/JWS/HS512Bench.php b/performance/JWS/HS512Bench.php
index 3d763b7f..cfab1de4 100644
--- a/performance/JWS/HS512Bench.php
+++ b/performance/JWS/HS512Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('HS512');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('HS512')
+ ;
}
protected function getInput(): string
diff --git a/performance/JWS/NoneBench.php b/performance/JWS/NoneBench.php
index 69c6d073..67ce08ec 100644
--- a/performance/JWS/NoneBench.php
+++ b/performance/JWS/NoneBench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('none');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('none')
+ ;
}
protected function getInput(): string
diff --git a/performance/JWS/PS256Bench.php b/performance/JWS/PS256Bench.php
index 55d1091c..8420b83d 100644
--- a/performance/JWS/PS256Bench.php
+++ b/performance/JWS/PS256Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('PS256');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('PS256')
+ ;
}
protected function getInput(): string
@@ -78,6 +71,8 @@ protected function getPrivateKey(): JWK
protected function getPublicKey(): JWK
{
- return $this->getPrivateKey()->toPublic();
+ return $this->getPrivateKey()
+ ->toPublic()
+ ;
}
}
diff --git a/performance/JWS/PS384Bench.php b/performance/JWS/PS384Bench.php
index 629b674a..01a2faba 100644
--- a/performance/JWS/PS384Bench.php
+++ b/performance/JWS/PS384Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('PS384');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('PS384')
+ ;
}
protected function getInput(): string
@@ -78,6 +71,8 @@ protected function getPrivateKey(): JWK
protected function getPublicKey(): JWK
{
- return $this->getPrivateKey()->toPublic();
+ return $this->getPrivateKey()
+ ->toPublic()
+ ;
}
}
diff --git a/performance/JWS/PS512Bench.php b/performance/JWS/PS512Bench.php
index efdd1298..218c5eb3 100644
--- a/performance/JWS/PS512Bench.php
+++ b/performance/JWS/PS512Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('PS512');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('PS512')
+ ;
}
protected function getInput(): string
@@ -78,6 +71,8 @@ protected function getPrivateKey(): JWK
protected function getPublicKey(): JWK
{
- return $this->getPrivateKey()->toPublic();
+ return $this->getPrivateKey()
+ ->toPublic()
+ ;
}
}
diff --git a/performance/JWS/RS256Bench.php b/performance/JWS/RS256Bench.php
index b1ce96d7..b71a6e95 100644
--- a/performance/JWS/RS256Bench.php
+++ b/performance/JWS/RS256Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('RS256');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('RS256')
+ ;
}
protected function getInput(): string
@@ -78,6 +71,8 @@ protected function getPrivateKey(): JWK
protected function getPublicKey(): JWK
{
- return $this->getPrivateKey()->toPublic();
+ return $this->getPrivateKey()
+ ->toPublic()
+ ;
}
}
diff --git a/performance/JWS/RS384Bench.php b/performance/JWS/RS384Bench.php
index 98885801..4cf8bf21 100644
--- a/performance/JWS/RS384Bench.php
+++ b/performance/JWS/RS384Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('RS384');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('RS384')
+ ;
}
protected function getInput(): string
@@ -78,6 +71,8 @@ protected function getPrivateKey(): JWK
protected function getPublicKey(): JWK
{
- return $this->getPrivateKey()->toPublic();
+ return $this->getPrivateKey()
+ ->toPublic()
+ ;
}
}
diff --git a/performance/JWS/RS512Bench.php b/performance/JWS/RS512Bench.php
index 1dc20a6a..de09b890 100644
--- a/performance/JWS/RS512Bench.php
+++ b/performance/JWS/RS512Bench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\JWK;
@@ -51,7 +42,9 @@ public function dataVerify(): array
protected function getAlgorithm(): SignatureAlgorithm
{
- return $this->getSignatureAlgorithmsManager()->get('RS512');
+ return $this->getSignatureAlgorithmsManager()
+ ->get('RS512')
+ ;
}
protected function getInput(): string
@@ -78,6 +71,8 @@ protected function getPrivateKey(): JWK
protected function getPublicKey(): JWK
{
- return $this->getPrivateKey()->toPublic();
+ return $this->getPrivateKey()
+ ->toPublic()
+ ;
}
}
diff --git a/performance/JWS/SignatureBench.php b/performance/JWS/SignatureBench.php
index 9545ead0..80af6e33 100644
--- a/performance/JWS/SignatureBench.php
+++ b/performance/JWS/SignatureBench.php
@@ -2,15 +2,6 @@
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\Performance\JWS;
use Jose\Component\Core\AlgorithmManager;
@@ -31,7 +22,9 @@
abstract class SignatureBench
{
private $payload = "It\xe2\x80\x99s a dangerous business, Frodo, going out your door. You step onto the road, and if you don't keep your feet, there\xe2\x80\x99s no knowing where you might be swept off to.";
+
private $signatureAlgorithmsManager;
+
private $serializerManager;
public function init()
@@ -68,7 +61,9 @@ public function sign(array $params)
$jwsBuilder = new JWSBuilder($this->signatureAlgorithmsManager);
$jwsBuilder
->withPayload($this->payload)
- ->addSignature($this->getPrivateKey(), ['alg' => $params['algorithm']])
+ ->addSignature($this->getPrivateKey(), [
+ 'alg' => $params['algorithm'],
+ ])
->build()
;
}
diff --git a/phpstan.neon b/phpstan.neon
index 67788c02..c9c3947c 100644
--- a/phpstan.neon
+++ b/phpstan.neon
@@ -1,5 +1,5 @@
parameters:
- level: 7
+ level: max
paths:
- src
checkMissingIterableValueType: false
@@ -9,13 +9,6 @@ parameters:
- '#Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\NodeDefinition::children\(\)#'
- '#Parameter \#1 \$value of class FG\\ASN1\\Universal\\Integer constructor expects int\, string given\.#'
- '#Variable static method call on Jose\\Component\\Core\\Util\\Hash\.#'
- - '#Return type \(void\) of method Jose\\Bundle\\JoseFramework\\Routing\\JWKSetLoader::getResolver\(\) should be compatible with return type \(Symfony\\Component\\Config\\Loader\\LoaderResolverInterface\) of method Symfony\\Component\\Config\\Loader\\LoaderInterface::getResolver\(\)#'
- - '#Method Jose\\Bundle\\JoseFramework\\Routing\\JWKSetLoader::(supports|load)\(\) has parameter \$type with no typehint specified\.#'
- - '#.* should be contravariant with .*#'
- - '#Call to deprecated function .*#'
- - '#Parameter .* of function openssl_pkey_derive expects resource, string given\.#'
- - '#Parameter .* of function call_user_func_array expects callable\(\)\: .* given\.#'
- - '#Array .* does not accept object\.#'
- '#Invalid type object to throw\.#'
- '#Strict comparison using === between .* and .* will always evaluate to false\.#'
- '#Binary operation "\^" between string and 1 results in an error\.#'
diff --git a/rector.php b/rector.php
new file mode 100644
index 00000000..762ee5bf
--- /dev/null
+++ b/rector.php
@@ -0,0 +1,26 @@
+import(SetList::DEAD_CODE);
+ $containerConfigurator->import(SetList::PHP_80);
+ $containerConfigurator->import(SymfonySetList::SYMFONY_52);
+ $containerConfigurator->import(SymfonySetList::SYMFONY_CODE_QUALITY);
+ $parameters = $containerConfigurator->parameters();
+ $parameters->set(Option::PATHS, [__DIR__ . '/src', __DIR__ . '/tests']);
+ $parameters->set(Option::PHP_VERSION_FEATURES, PhpVersion::PHP_80);
+ $parameters->set(Option::AUTO_IMPORT_NAMES, true);
+ $parameters->set(Option::IMPORT_SHORT_CLASSES, false);
+ $parameters->set(Option::IMPORT_DOC_BLOCKS, false);
+
+ $services = $containerConfigurator->services();
+ $services->set(TypedPropertyRector::class);
+};
diff --git a/src/Bundle/JoseFramework/Controller/JWKSetController.php b/src/Bundle/JoseFramework/Controller/JWKSetController.php
index 93faa6ec..53e6c4ce 100644
--- a/src/Bundle/JoseFramework/Controller/JWKSetController.php
+++ b/src/Bundle/JoseFramework/Controller/JWKSetController.php
@@ -2,29 +2,15 @@
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\Bundle\JoseFramework\Controller;
use Symfony\Component\HttpFoundation\Response;
class JWKSetController
{
- /**
- * @var string
- */
- private $jwkset;
-
- public function __construct(string $jwkset)
- {
- $this->jwkset = $jwkset;
+ public function __construct(
+ private string $jwkset
+ ) {
}
public function __invoke(): Response
diff --git a/src/Bundle/JoseFramework/Controller/JWKSetControllerFactory.php b/src/Bundle/JoseFramework/Controller/JWKSetControllerFactory.php
index 83cf178e..36bff63f 100644
--- a/src/Bundle/JoseFramework/Controller/JWKSetControllerFactory.php
+++ b/src/Bundle/JoseFramework/Controller/JWKSetControllerFactory.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Controller;
use Jose\Component\Core\JWKSet;
diff --git a/src/Bundle/JoseFramework/DataCollector/AlgorithmCollector.php b/src/Bundle/JoseFramework/DataCollector/AlgorithmCollector.php
index 72e09129..dc7bb633 100644
--- a/src/Bundle/JoseFramework/DataCollector/AlgorithmCollector.php
+++ b/src/Bundle/JoseFramework/DataCollector/AlgorithmCollector.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DataCollector;
use function array_key_exists;
@@ -27,14 +18,9 @@
final class AlgorithmCollector implements Collector
{
- /**
- * @var AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
-
- public function __construct(AlgorithmManagerFactory $algorithmManagerFactory)
- {
- $this->algorithmManagerFactory = $algorithmManagerFactory;
+ public function __construct(
+ private AlgorithmManagerFactory $algorithmManagerFactory
+ ) {
}
public function collect(array &$data, Request $request, Response $response, ?Throwable $exception = null): void
@@ -49,8 +35,14 @@ public function collect(array &$data, Request $request, Response $response, ?Thr
$keyEncryptionAlgorithms = 0;
$contentEncryptionAlgorithms = 0;
foreach ($algorithms as $alias => $algorithm) {
- $type = $this->getAlgorithmType($algorithm, $signatureAlgorithms, $macAlgorithms, $keyEncryptionAlgorithms, $contentEncryptionAlgorithms);
- if (!array_key_exists($type, $data['algorithm']['algorithms'])) {
+ $type = $this->getAlgorithmType(
+ $algorithm,
+ $signatureAlgorithms,
+ $macAlgorithms,
+ $keyEncryptionAlgorithms,
+ $contentEncryptionAlgorithms
+ );
+ if (! array_key_exists($type, $data['algorithm']['algorithms'])) {
$data['algorithm']['algorithms'][$type] = [];
}
$data['algorithm']['algorithms'][$type][$alias] = [
@@ -66,8 +58,13 @@ public function collect(array &$data, Request $request, Response $response, ?Thr
];
}
- private function getAlgorithmType(Algorithm $algorithm, int &$signatureAlgorithms, int &$macAlgorithms, int &$keyEncryptionAlgorithms, int &$contentEncryptionAlgorithms): string
- {
+ private function getAlgorithmType(
+ Algorithm $algorithm,
+ int &$signatureAlgorithms,
+ int &$macAlgorithms,
+ int &$keyEncryptionAlgorithms,
+ int &$contentEncryptionAlgorithms
+ ): string {
switch (true) {
case $algorithm instanceof SignatureAlgorithm:
$signatureAlgorithms++;
@@ -198,7 +195,7 @@ private function getAlgorithmMessages(): array
'message' => 'This algorithm is not secured (known attacks). See https://tools.ietf.org/html/draft-irtf-cfrg-webcrypto-algorithms-00#section-5.',
],
];
- if (!function_exists('openssl_pkey_derive')) {
+ if (! function_exists('openssl_pkey_derive')) {
$messages += [
'ECDH-ES' => [
'severity' => 'severity-medium',
diff --git a/src/Bundle/JoseFramework/DataCollector/CheckerCollector.php b/src/Bundle/JoseFramework/DataCollector/CheckerCollector.php
index c4318c50..5224292f 100644
--- a/src/Bundle/JoseFramework/DataCollector/CheckerCollector.php
+++ b/src/Bundle/JoseFramework/DataCollector/CheckerCollector.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DataCollector;
use Jose\Bundle\JoseFramework\Event\ClaimCheckedFailureEvent;
@@ -29,50 +20,28 @@
class CheckerCollector implements Collector, EventSubscriberInterface
{
- /**
- * @var null|ClaimCheckerManagerFactory
- */
- private $claimCheckerManagerFactory;
-
- /**
- * @var null|HeaderCheckerManagerFactory
- */
- private $headerCheckerManagerFactory;
-
- /**
- * @var array
- */
- private $headerCheckedSuccesses = [];
+ private array $headerCheckedSuccesses = [];
- /**
- * @var array
- */
- private $headerCheckedFailures = [];
+ private array $headerCheckedFailures = [];
- /**
- * @var array
- */
- private $claimCheckedSuccesses = [];
+ private array $claimCheckedSuccesses = [];
- /**
- * @var array
- */
- private $claimCheckedFailures = [];
+ private array $claimCheckedFailures = [];
/**
* @var HeaderCheckerManager[]
*/
- private $headerCheckerManagers = [];
+ private array $headerCheckerManagers = [];
/**
* @var ClaimCheckerManager[]
*/
- private $claimCheckerManagers = [];
+ private array $claimCheckerManagers = [];
- public function __construct(?ClaimCheckerManagerFactory $claimCheckerManagerFactory = null, ?HeaderCheckerManagerFactory $headerCheckerManagerFactory = null)
- {
- $this->claimCheckerManagerFactory = $claimCheckerManagerFactory;
- $this->headerCheckerManagerFactory = $headerCheckerManagerFactory;
+ public function __construct(
+ private ?ClaimCheckerManagerFactory $claimCheckerManagerFactory = null,
+ private ?HeaderCheckerManagerFactory $headerCheckerManagerFactory = null
+ ) {
}
public function collect(array &$data, Request $request, Response $response, ?Throwable $exception = null): void
@@ -94,7 +63,7 @@ public function addClaimCheckerManager(string $id, ClaimCheckerManager $claimChe
$this->claimCheckerManagers[$id] = $claimCheckerManager;
}
- public static function getSubscribedEvents()
+ public static function getSubscribedEvents(): array
{
return [
HeaderCheckedSuccessEvent::class => ['catchHeaderCheckSuccess'],
@@ -145,7 +114,7 @@ private function collectHeaderCheckerManagers(array &$data): void
private function collectSupportedHeaderCheckers(array &$data): void
{
$data['checker']['header_checkers'] = [];
- if (null !== $this->headerCheckerManagerFactory) {
+ if ($this->headerCheckerManagerFactory !== null) {
$aliases = $this->headerCheckerManagerFactory->all();
foreach ($aliases as $alias => $checker) {
$data['checker']['header_checkers'][$alias] = [
@@ -172,7 +141,7 @@ private function collectClaimCheckerManagers(array &$data): void
private function collectSupportedClaimCheckers(array &$data): void
{
$data['checker']['claim_checkers'] = [];
- if (null !== $this->claimCheckerManagerFactory) {
+ if ($this->claimCheckerManagerFactory !== null) {
$aliases = $this->claimCheckerManagerFactory->all();
foreach ($aliases as $alias => $checker) {
$data['checker']['claim_checkers'][$alias] = [
diff --git a/src/Bundle/JoseFramework/DataCollector/Collector.php b/src/Bundle/JoseFramework/DataCollector/Collector.php
index 9b88a8c1..65f6c9ef 100644
--- a/src/Bundle/JoseFramework/DataCollector/Collector.php
+++ b/src/Bundle/JoseFramework/DataCollector/Collector.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DataCollector;
use Symfony\Component\HttpFoundation\Request;
diff --git a/src/Bundle/JoseFramework/DataCollector/JWECollector.php b/src/Bundle/JoseFramework/DataCollector/JWECollector.php
index 4642fa32..7fca6770 100644
--- a/src/Bundle/JoseFramework/DataCollector/JWECollector.php
+++ b/src/Bundle/JoseFramework/DataCollector/JWECollector.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DataCollector;
use Jose\Bundle\JoseFramework\Event\JWEBuiltFailureEvent;
@@ -30,55 +21,33 @@
class JWECollector implements Collector, EventSubscriberInterface
{
- /**
- * @var null|JWESerializerManagerFactory
- */
- private $jweSerializerManagerFactory;
-
- /**
- * @var null|CompressionMethodManagerFactory
- */
- private $compressionMethodManagerFactory;
-
- /**
- * @var array
- */
- private $jweDecryptionSuccesses = [];
+ private array $jweDecryptionSuccesses = [];
- /**
- * @var array
- */
- private $jweDecryptionFailures = [];
+ private array $jweDecryptionFailures = [];
- /**
- * @var array
- */
- private $jweBuiltSuccesses = [];
+ private array $jweBuiltSuccesses = [];
- /**
- * @var array
- */
- private $jweBuiltFailures = [];
+ private array $jweBuiltFailures = [];
/**
* @var JWEBuilder[]
*/
- private $jweBuilders = [];
+ private array $jweBuilders = [];
/**
* @var JWEDecrypter[]
*/
- private $jweDecrypters = [];
+ private array $jweDecrypters = [];
/**
* @var JWELoader[]
*/
- private $jweLoaders = [];
+ private array $jweLoaders = [];
- public function __construct(?CompressionMethodManagerFactory $compressionMethodManagerFactory = null, ?JWESerializerManagerFactory $jweSerializerManagerFactory = null)
- {
- $this->compressionMethodManagerFactory = $compressionMethodManagerFactory;
- $this->jweSerializerManagerFactory = $jweSerializerManagerFactory;
+ public function __construct(
+ private ?CompressionMethodManagerFactory $compressionMethodManagerFactory = null,
+ private ?JWESerializerManagerFactory $jweSerializerManagerFactory = null
+ ) {
}
public function collect(array &$data, Request $request, Response $response, ?Throwable $exception = null): void
@@ -106,7 +75,7 @@ public function addJWELoader(string $id, JWELoader $jweLoader): void
$this->jweLoaders[$id] = $jweLoader;
}
- public static function getSubscribedEvents()
+ public static function getSubscribedEvents(): array
{
return [
JWEDecryptionSuccessEvent::class => ['catchJweDecryptionSuccess'],
@@ -143,7 +112,7 @@ public function catchJweBuiltFailure(JWEBuiltFailureEvent $event): void
private function collectSupportedCompressionMethods(array &$data): void
{
$data['jwe']['compression_methods'] = [];
- if (null === $this->compressionMethodManagerFactory) {
+ if ($this->compressionMethodManagerFactory === null) {
return;
}
$compressionMethods = $this->compressionMethodManagerFactory->all();
@@ -155,7 +124,7 @@ private function collectSupportedCompressionMethods(array &$data): void
private function collectSupportedJWESerializations(array &$data): void
{
$data['jwe']['jwe_serialization'] = [];
- if (null === $this->jweSerializerManagerFactory) {
+ if ($this->jweSerializerManagerFactory === null) {
return;
}
$serializers = $this->jweSerializerManagerFactory->all();
@@ -169,9 +138,12 @@ private function collectSupportedJWEBuilders(array &$data): void
$data['jwe']['jwe_builders'] = [];
foreach ($this->jweBuilders as $id => $jweBuilder) {
$data['jwe']['jwe_builders'][$id] = [
- 'key_encryption_algorithms' => $jweBuilder->getKeyEncryptionAlgorithmManager()->list(),
- 'content_encryption_algorithms' => $jweBuilder->getContentEncryptionAlgorithmManager()->list(),
- 'compression_methods' => $jweBuilder->getCompressionMethodManager()->list(),
+ 'key_encryption_algorithms' => $jweBuilder->getKeyEncryptionAlgorithmManager()
+ ->list(),
+ 'content_encryption_algorithms' => $jweBuilder->getContentEncryptionAlgorithmManager()
+ ->list(),
+ 'compression_methods' => $jweBuilder->getCompressionMethodManager()
+ ->list(),
];
}
}
@@ -181,9 +153,12 @@ private function collectSupportedJWEDecrypters(array &$data): void
$data['jwe']['jwe_decrypters'] = [];
foreach ($this->jweDecrypters as $id => $jweDecrypter) {
$data['jwe']['jwe_decrypters'][$id] = [
- 'key_encryption_algorithms' => $jweDecrypter->getKeyEncryptionAlgorithmManager()->list(),
- 'content_encryption_algorithms' => $jweDecrypter->getContentEncryptionAlgorithmManager()->list(),
- 'compression_methods' => $jweDecrypter->getCompressionMethodManager()->list(),
+ 'key_encryption_algorithms' => $jweDecrypter->getKeyEncryptionAlgorithmManager()
+ ->list(),
+ 'content_encryption_algorithms' => $jweDecrypter->getContentEncryptionAlgorithmManager()
+ ->list(),
+ 'compression_methods' => $jweDecrypter->getCompressionMethodManager()
+ ->list(),
];
}
}
@@ -193,10 +168,17 @@ private function collectSupportedJWELoaders(array &$data): void
$data['jwe']['jwe_loaders'] = [];
foreach ($this->jweLoaders as $id => $jweLoader) {
$data['jwe']['jwe_loaders'][$id] = [
- 'serializers' => $jweLoader->getSerializerManager()->names(),
- 'key_encryption_algorithms' => $jweLoader->getJweDecrypter()->getKeyEncryptionAlgorithmManager()->list(),
- 'content_encryption_algorithms' => $jweLoader->getJweDecrypter()->getContentEncryptionAlgorithmManager()->list(),
- 'compression_methods' => $jweLoader->getJweDecrypter()->getCompressionMethodManager()->list(),
+ 'serializers' => $jweLoader->getSerializerManager()
+ ->names(),
+ 'key_encryption_algorithms' => $jweLoader->getJweDecrypter()
+ ->getKeyEncryptionAlgorithmManager()
+ ->list(),
+ 'content_encryption_algorithms' => $jweLoader->getJweDecrypter()
+ ->getContentEncryptionAlgorithmManager()
+ ->list(),
+ 'compression_methods' => $jweLoader->getJweDecrypter()
+ ->getCompressionMethodManager()
+ ->list(),
];
}
}
diff --git a/src/Bundle/JoseFramework/DataCollector/JWSCollector.php b/src/Bundle/JoseFramework/DataCollector/JWSCollector.php
index 200c54e3..6e71bda9 100644
--- a/src/Bundle/JoseFramework/DataCollector/JWSCollector.php
+++ b/src/Bundle/JoseFramework/DataCollector/JWSCollector.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DataCollector;
use Jose\Bundle\JoseFramework\Event\JWSBuiltFailureEvent;
@@ -29,49 +20,32 @@
class JWSCollector implements Collector, EventSubscriberInterface
{
- /**
- * @var null|JWSSerializerManagerFactory
- */
- private $jwsSerializerManagerFactory;
-
/**
* @var JWSBuilder[]
*/
- private $jwsBuilders = [];
+ private array $jwsBuilders = [];
/**
* @var JWSVerifier[]
*/
- private $jwsVerifiers = [];
+ private array $jwsVerifiers = [];
/**
* @var JWSLoader[]
*/
- private $jwsLoaders = [];
+ private array $jwsLoaders = [];
- /**
- * @var array
- */
- private $jwsVerificationSuccesses = [];
+ private array $jwsVerificationSuccesses = [];
- /**
- * @var array
- */
- private $jwsVerificationFailures = [];
+ private array $jwsVerificationFailures = [];
- /**
- * @var array
- */
- private $jwsBuiltSuccesses = [];
+ private array $jwsBuiltSuccesses = [];
- /**
- * @var array
- */
- private $jwsBuiltFailures = [];
+ private array $jwsBuiltFailures = [];
- public function __construct(?JWSSerializerManagerFactory $jwsSerializerManagerFactory = null)
- {
- $this->jwsSerializerManagerFactory = $jwsSerializerManagerFactory;
+ public function __construct(
+ private ?JWSSerializerManagerFactory $jwsSerializerManagerFactory = null
+ ) {
}
public function collect(array &$data, Request $request, Response $response, ?Throwable $exception = null): void
@@ -98,7 +72,7 @@ public function addJWSLoader(string $id, JWSLoader $jwsLoader): void
$this->jwsLoaders[$id] = $jwsLoader;
}
- public static function getSubscribedEvents()
+ public static function getSubscribedEvents(): array
{
return [
JWSVerificationSuccessEvent::class => ['catchJwsVerificationSuccess'],
@@ -135,7 +109,7 @@ public function catchJwsBuiltFailure(JWSBuiltFailureEvent $event): void
private function collectSupportedJWSSerializations(array &$data): void
{
$data['jws']['jws_serialization'] = [];
- if (null === $this->jwsSerializerManagerFactory) {
+ if ($this->jwsSerializerManagerFactory === null) {
return;
}
$serializers = $this->jwsSerializerManagerFactory->all();
@@ -149,7 +123,8 @@ private function collectSupportedJWSBuilders(array &$data): void
$data['jws']['jws_builders'] = [];
foreach ($this->jwsBuilders as $id => $jwsBuilder) {
$data['jws']['jws_builders'][$id] = [
- 'signature_algorithms' => $jwsBuilder->getSignatureAlgorithmManager()->list(),
+ 'signature_algorithms' => $jwsBuilder->getSignatureAlgorithmManager()
+ ->list(),
];
}
}
@@ -159,7 +134,8 @@ private function collectSupportedJWSVerifiers(array &$data): void
$data['jws']['jws_verifiers'] = [];
foreach ($this->jwsVerifiers as $id => $jwsVerifier) {
$data['jws']['jws_verifiers'][$id] = [
- 'signature_algorithms' => $jwsVerifier->getSignatureAlgorithmManager()->list(),
+ 'signature_algorithms' => $jwsVerifier->getSignatureAlgorithmManager()
+ ->list(),
];
}
}
@@ -169,8 +145,11 @@ private function collectSupportedJWSLoaders(array &$data): void
$data['jws']['jws_loaders'] = [];
foreach ($this->jwsLoaders as $id => $jwsLoader) {
$data['jws']['jws_loaders'][$id] = [
- 'serializers' => $jwsLoader->getSerializerManager()->list(),
- 'signature_algorithms' => $jwsLoader->getJwsVerifier()->getSignatureAlgorithmManager()->list(),
+ 'serializers' => $jwsLoader->getSerializerManager()
+ ->list(),
+ 'signature_algorithms' => $jwsLoader->getJwsVerifier()
+ ->getSignatureAlgorithmManager()
+ ->list(),
];
}
}
diff --git a/src/Bundle/JoseFramework/DataCollector/JoseCollector.php b/src/Bundle/JoseFramework/DataCollector/JoseCollector.php
index 02929fbc..0cf6325b 100644
--- a/src/Bundle/JoseFramework/DataCollector/JoseCollector.php
+++ b/src/Bundle/JoseFramework/DataCollector/JoseCollector.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DataCollector;
use Symfony\Component\HttpFoundation\Request;
@@ -24,7 +15,7 @@ class JoseCollector extends DataCollector
/**
* @var Collector[]
*/
- private $collectors = [];
+ private array $collectors = [];
public function collect(Request $request, Response $response, ?Throwable $exception = null): void
{
@@ -43,10 +34,7 @@ public function getName()
return 'jose_collector';
}
- /**
- * @return array|Data
- */
- public function getData()
+ public function getData(): array|Data
{
return $this->data;
}
diff --git a/src/Bundle/JoseFramework/DataCollector/KeyCollector.php b/src/Bundle/JoseFramework/DataCollector/KeyCollector.php
index b5f029c2..b10ba199 100644
--- a/src/Bundle/JoseFramework/DataCollector/KeyCollector.php
+++ b/src/Bundle/JoseFramework/DataCollector/KeyCollector.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DataCollector;
use Jose\Component\Core\JWK;
@@ -25,30 +16,20 @@
class KeyCollector implements Collector
{
- /**
- * @var null|KeyAnalyzerManager
- */
- private $jwkAnalyzerManager;
-
- /**
- * @var null|KeysetAnalyzerManager
- */
- private $jwksetAnalyzerManager;
-
/**
* @var JWK[]
*/
- private $jwks = [];
+ private array $jwks = [];
/**
* @var JWKSet[]
*/
- private $jwksets = [];
+ private array $jwksets = [];
- public function __construct(?KeyAnalyzerManager $jwkAnalyzerManager = null, ?KeysetAnalyzerManager $jwksetAnalyzerManager = null)
- {
- $this->jwkAnalyzerManager = $jwkAnalyzerManager;
- $this->jwksetAnalyzerManager = $jwksetAnalyzerManager;
+ public function __construct(
+ private ?KeyAnalyzerManager $jwkAnalyzerManager = null,
+ private ?KeysetAnalyzerManager $jwksetAnalyzerManager = null
+ ) {
}
public function collect(array &$data, Request $request, Response $response, ?Throwable $exception = null): void
@@ -74,7 +55,7 @@ private function collectJWK(array &$data): void
foreach ($this->jwks as $id => $jwk) {
$data['key']['jwk'][$id] = [
'jwk' => $cloner->cloneVar($jwk),
- 'analyze' => null === $this->jwkAnalyzerManager ? [] : $this->jwkAnalyzerManager->analyze($jwk),
+ 'analyze' => $this->jwkAnalyzerManager === null ? [] : $this->jwkAnalyzerManager->analyze($jwk),
];
}
}
@@ -86,12 +67,12 @@ private function collectJWKSet(array &$data): void
foreach ($this->jwksets as $id => $jwkset) {
$analyze = [];
$analyzeJWKSet = new MessageBag();
- if (null !== $this->jwkAnalyzerManager) {
+ if ($this->jwkAnalyzerManager !== null) {
foreach ($jwkset as $kid => $jwk) {
$analyze[$kid] = $this->jwkAnalyzerManager->analyze($jwk);
}
}
- if (null !== $this->jwksetAnalyzerManager) {
+ if ($this->jwksetAnalyzerManager !== null) {
$analyzeJWKSet = $this->jwksetAnalyzerManager->analyze($jwkset);
}
$data['key']['jwkset'][$id] = [
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/AlgorithmCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/AlgorithmCompilerPass.php
index 8dd6f0d4..21f75fa4 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/AlgorithmCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/AlgorithmCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use InvalidArgumentException;
@@ -23,12 +14,10 @@ final class AlgorithmCompilerPass implements CompilerPassInterface
{
/**
* {@inheritdoc}
- *
- * @throws InvalidArgumentException if the algorithm has no alias
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(AlgorithmManagerFactory::class)) {
+ if (! $container->hasDefinition(AlgorithmManagerFactory::class)) {
return;
}
@@ -37,8 +26,11 @@ public function process(ContainerBuilder $container): void
$taggedAlgorithmServices = $container->findTaggedServiceIds('jose.algorithm');
foreach ($taggedAlgorithmServices as $id => $tags) {
foreach ($tags as $attributes) {
- if (!isset($attributes['alias'])) {
- throw new InvalidArgumentException(sprintf('The algorithm "%s" does not have any "alias" attribute.', $id));
+ if (! isset($attributes['alias'])) {
+ throw new InvalidArgumentException(sprintf(
+ 'The algorithm "%s" does not have any "alias" attribute.',
+ $id
+ ));
}
$definition->addMethodCall('add', [$attributes['alias'], new Reference($id)]);
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/CheckerCollectorCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/CheckerCollectorCompilerPass.php
index 8410b9cd..d80f5696 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/CheckerCollectorCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/CheckerCollectorCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use Jose\Bundle\JoseFramework\DataCollector\CheckerCollector;
@@ -26,7 +17,7 @@ final class CheckerCollectorCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(CheckerCollector::class)) {
+ if (! $container->hasDefinition(CheckerCollector::class)) {
return;
}
@@ -41,8 +32,12 @@ public function process(ContainerBuilder $container): void
}
}
- private function collectServices(string $method, string $tag, Definition $definition, ContainerBuilder $container): void
- {
+ private function collectServices(
+ string $method,
+ string $tag,
+ Definition $definition,
+ ContainerBuilder $container
+ ): void {
$taggedCheckerServices = $container->findTaggedServiceIds($tag);
foreach ($taggedCheckerServices as $id => $tags) {
$definition->addMethodCall($method, [$id, new Reference($id)]);
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/ClaimCheckerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/ClaimCheckerCompilerPass.php
index d855515c..9717e07e 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/ClaimCheckerCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/ClaimCheckerCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use InvalidArgumentException;
@@ -23,12 +14,10 @@ final class ClaimCheckerCompilerPass implements CompilerPassInterface
{
/**
* {@inheritdoc}
- *
- * @throws InvalidArgumentException if the claim checker has no alias
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(ClaimCheckerManagerFactory::class)) {
+ if (! $container->hasDefinition(ClaimCheckerManagerFactory::class)) {
return;
}
@@ -37,8 +26,11 @@ public function process(ContainerBuilder $container): void
$taggedClaimCheckerServices = $container->findTaggedServiceIds('jose.checker.claim');
foreach ($taggedClaimCheckerServices as $id => $tags) {
foreach ($tags as $attributes) {
- if (!isset($attributes['alias'])) {
- throw new InvalidArgumentException(sprintf('The claim checker "%s" does not have any "alias" attribute.', $id));
+ if (! isset($attributes['alias'])) {
+ throw new InvalidArgumentException(sprintf(
+ 'The claim checker "%s" does not have any "alias" attribute.',
+ $id
+ ));
}
$definition->addMethodCall('add', [$attributes['alias'], new Reference($id)]);
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/CompressionMethodCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/CompressionMethodCompilerPass.php
index e3d0da17..a37987a9 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/CompressionMethodCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/CompressionMethodCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use InvalidArgumentException;
@@ -23,12 +14,10 @@ final class CompressionMethodCompilerPass implements CompilerPassInterface
{
/**
* {@inheritdoc}
- *
- * @throws InvalidArgumentException if the compression method has no alias
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(CompressionMethodManagerFactory::class)) {
+ if (! $container->hasDefinition(CompressionMethodManagerFactory::class)) {
return;
}
@@ -37,8 +26,11 @@ public function process(ContainerBuilder $container): void
$taggedAlgorithmServices = $container->findTaggedServiceIds('jose.compression_method');
foreach ($taggedAlgorithmServices as $id => $tags) {
foreach ($tags as $attributes) {
- if (!isset($attributes['alias'])) {
- throw new InvalidArgumentException(sprintf('The compression method "%s" does not have any "alias" attribute.', $id));
+ if (! isset($attributes['alias'])) {
+ throw new InvalidArgumentException(sprintf(
+ 'The compression method "%s" does not have any "alias" attribute.',
+ $id
+ ));
}
$definition->addMethodCall('add', [$attributes['alias'], new Reference($id)]);
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/DataCollectorCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/DataCollectorCompilerPass.php
index bded7883..aa34e3a6 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/DataCollectorCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/DataCollectorCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use Jose\Bundle\JoseFramework\DataCollector\JoseCollector;
@@ -25,7 +16,7 @@ final class DataCollectorCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(JoseCollector::class)) {
+ if (! $container->hasDefinition(JoseCollector::class)) {
return;
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/EncryptionSerializerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/EncryptionSerializerCompilerPass.php
index c899adcf..821f3b05 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/EncryptionSerializerCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/EncryptionSerializerCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use Jose\Component\Encryption\Serializer\JWESerializerManagerFactory;
@@ -25,7 +16,7 @@ final class EncryptionSerializerCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(JWESerializerManagerFactory::class)) {
+ if (! $container->hasDefinition(JWESerializerManagerFactory::class)) {
return;
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/EventDispatcherAliasCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/EventDispatcherAliasCompilerPass.php
index 853ac892..eb9d61a9 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/EventDispatcherAliasCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/EventDispatcherAliasCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use Psr\EventDispatcher\EventDispatcherInterface;
@@ -24,7 +15,7 @@ final class EventDispatcherAliasCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition('event_dispatcher') || $container->hasAlias(EventDispatcherInterface::class)) {
+ if (! $container->hasDefinition('event_dispatcher') || $container->hasAlias(EventDispatcherInterface::class)) {
return;
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/HeaderCheckerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/HeaderCheckerCompilerPass.php
index 0580f3ac..d96884ee 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/HeaderCheckerCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/HeaderCheckerCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use InvalidArgumentException;
@@ -27,7 +18,7 @@ final class HeaderCheckerCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(HeaderCheckerManagerFactory::class)) {
+ if (! $container->hasDefinition(HeaderCheckerManagerFactory::class)) {
return;
}
@@ -36,16 +27,16 @@ public function process(ContainerBuilder $container): void
$this->addTokenType($definition, $container);
}
- /**
- * @throws InvalidArgumentException if a header checker is wnongly configured
- */
private function addHeaderCheckers(Definition $definition, ContainerBuilder $container): void
{
$taggedHeaderCheckerServices = $container->findTaggedServiceIds('jose.checker.header');
foreach ($taggedHeaderCheckerServices as $id => $tags) {
foreach ($tags as $attributes) {
- if (!isset($attributes['alias'])) {
- throw new InvalidArgumentException(sprintf('The header checker "%s" does not have any "alias" attribute.', $id));
+ if (! isset($attributes['alias'])) {
+ throw new InvalidArgumentException(sprintf(
+ 'The header checker "%s" does not have any "alias" attribute.',
+ $id
+ ));
}
$definition->addMethodCall('add', [$attributes['alias'], new Reference($id)]);
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWECollectorCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWECollectorCompilerPass.php
index 53bbcc0a..85d59e4d 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWECollectorCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWECollectorCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use Jose\Bundle\JoseFramework\DataCollector\JWECollector;
@@ -26,7 +17,7 @@ final class JWECollectorCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(JWECollector::class)) {
+ if (! $container->hasDefinition(JWECollector::class)) {
return;
}
@@ -42,8 +33,12 @@ public function process(ContainerBuilder $container): void
}
}
- private function collectServices(string $method, string $tag, Definition $definition, ContainerBuilder $container): void
- {
+ private function collectServices(
+ string $method,
+ string $tag,
+ Definition $definition,
+ ContainerBuilder $container
+ ): void {
$taggedJWEServices = $container->findTaggedServiceIds($tag);
foreach ($taggedJWEServices as $id => $tags) {
$definition->addMethodCall($method, [$id, new Reference($id)]);
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWSCollectorCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWSCollectorCompilerPass.php
index ed05724b..b096cc1e 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWSCollectorCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWSCollectorCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use Jose\Bundle\JoseFramework\DataCollector\JWSCollector;
@@ -26,7 +17,7 @@ final class JWSCollectorCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(JWSCollector::class)) {
+ if (! $container->hasDefinition(JWSCollector::class)) {
return;
}
@@ -42,8 +33,12 @@ public function process(ContainerBuilder $container): void
}
}
- private function collectServices(string $method, string $tag, Definition $definition, ContainerBuilder $container): void
- {
+ private function collectServices(
+ string $method,
+ string $tag,
+ Definition $definition,
+ ContainerBuilder $container
+ ): void {
$taggedJWSServices = $container->findTaggedServiceIds($tag);
foreach ($taggedJWSServices as $id => $tags) {
$definition->addMethodCall($method, [$id, new Reference($id)]);
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyAnalyzerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyAnalyzerCompilerPass.php
index 959d5c4e..ffd44574 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyAnalyzerCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyAnalyzerCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use Jose\Component\KeyManagement\Analyzer\KeyAnalyzerManager;
@@ -25,7 +16,7 @@ final class KeyAnalyzerCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(KeyAnalyzerManager::class)) {
+ if (! $container->hasDefinition(KeyAnalyzerManager::class)) {
return;
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyCollectorCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyCollectorCompilerPass.php
index d78a5353..393bc547 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyCollectorCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyCollectorCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use Jose\Bundle\JoseFramework\DataCollector\KeyCollector;
@@ -26,7 +17,7 @@ final class KeyCollectorCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(KeyCollector::class)) {
+ if (! $container->hasDefinition(KeyCollector::class)) {
return;
}
@@ -41,8 +32,12 @@ public function process(ContainerBuilder $container): void
}
}
- private function collectServices(string $method, string $tag, Definition $definition, ContainerBuilder $container): void
- {
+ private function collectServices(
+ string $method,
+ string $tag,
+ Definition $definition,
+ ContainerBuilder $container
+ ): void {
$taggedJWSServices = $container->findTaggedServiceIds($tag);
foreach ($taggedJWSServices as $id => $tags) {
$definition->addMethodCall($method, [$id, new Reference($id)]);
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeySetControllerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeySetControllerCompilerPass.php
index 5cda6076..c924a035 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeySetControllerCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeySetControllerCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use InvalidArgumentException;
@@ -22,12 +13,10 @@ final class KeySetControllerCompilerPass implements CompilerPassInterface
{
/**
* {@inheritdoc}
- *
- * @throws InvalidArgumentException if a controller has no "path" attribute
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(JWKSetLoader::class)) {
+ if (! $container->hasDefinition(JWKSetLoader::class)) {
return;
}
@@ -36,8 +25,11 @@ public function process(ContainerBuilder $container): void
$taggedAlgorithmServices = $container->findTaggedServiceIds('jose.jwk_uri.controller');
foreach ($taggedAlgorithmServices as $id => $tags) {
foreach ($tags as $attributes) {
- if (!isset($attributes['path'])) {
- throw new InvalidArgumentException(sprintf('The controller "%s" does not have any "path" attribute.', $id));
+ if (! isset($attributes['path'])) {
+ throw new InvalidArgumentException(sprintf(
+ 'The controller "%s" does not have any "path" attribute.',
+ $id
+ ));
}
$definition->addMethodCall('add', [$attributes['path'], $id]);
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeysetAnalyzerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeysetAnalyzerCompilerPass.php
index 2095f7e0..2ca43d6f 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeysetAnalyzerCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeysetAnalyzerCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use Jose\Component\KeyManagement\Analyzer\KeysetAnalyzerManager;
@@ -25,7 +16,7 @@ final class KeysetAnalyzerCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(KeysetAnalyzerManager::class)) {
+ if (! $container->hasDefinition(KeysetAnalyzerManager::class)) {
return;
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/SignatureSerializerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/SignatureSerializerCompilerPass.php
index 7f6fc88f..4f72ecdf 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/SignatureSerializerCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/SignatureSerializerCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use Jose\Component\Signature\Serializer\JWSSerializerManagerFactory;
@@ -25,7 +16,7 @@ final class SignatureSerializerCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!$container->hasDefinition(JWSSerializerManagerFactory::class)) {
+ if (! $container->hasDefinition(JWSSerializerManagerFactory::class)) {
return;
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/SymfonySerializerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/SymfonySerializerCompilerPass.php
index 042aa771..afb66f02 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/SymfonySerializerCompilerPass.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/SymfonySerializerCompilerPass.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Compiler;
use Jose\Bundle\JoseFramework\Normalizer\JWENormalizer;
@@ -29,7 +20,7 @@ class SymfonySerializerCompilerPass implements CompilerPassInterface
*/
public function process(ContainerBuilder $container): void
{
- if (!class_exists('Symfony\Component\Serializer\Serializer')) {
+ if (! class_exists('Symfony\Component\Serializer\Serializer')) {
return;
}
if ($container->hasDefinition(JWSSerializerManagerFactory::class)) {
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Configuration.php b/src/Bundle/JoseFramework/DependencyInjection/Configuration.php
index ec83e4de..6a994a83 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Configuration.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Configuration.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -19,23 +10,13 @@
final class Configuration implements ConfigurationInterface
{
- /**
- * @var Source[]
- */
- private $sources;
-
- /**
- * @var string
- */
- private $alias;
-
/**
* @param Source[] $sources
*/
- public function __construct(string $alias, array $sources)
- {
- $this->alias = $alias;
- $this->sources = $sources;
+ public function __construct(
+ private string $alias,
+ private array $sources
+ ) {
}
public function getConfigTreeBuilder(): TreeBuilder
diff --git a/src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php b/src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php
index 9f5a2e82..b26603cd 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection;
use function count;
@@ -22,23 +13,13 @@
final class JoseFrameworkExtension extends Extension implements PrependExtensionInterface
{
- /**
- * @var string
- */
- private $alias;
-
- /**
- * @var Source[]
- */
- private $sources = [];
-
/**
* @param Source[] $sources
*/
- public function __construct(string $alias, array $sources)
- {
- $this->alias = $alias;
- $this->sources = $sources;
+ public function __construct(
+ private string $alias,
+ private array $sources
+ ) {
}
public function getAlias(): string
@@ -77,7 +58,7 @@ public function prepend(ContainerBuilder $container): void
foreach ($this->sources as $source) {
$result = $source->prepend($container, $config);
- if (0 !== count($result)) {
+ if (count($result) !== 0) {
$container->prependExtensionConfig($this->getAlias(), $result);
}
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/AbstractSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/AbstractSource.php
index 1677b228..ba1ed6f3 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/AbstractSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/AbstractSource.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
@@ -28,7 +19,7 @@ public function create(ContainerBuilder $container, string $type, string $name,
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, $definition->getClass(), $name.' '.$type);
+ $container->registerAliasForArgument($service_id, $definition->getClass(), $name . ' ' . $type);
}
public function addConfiguration(NodeDefinition $node): void
@@ -44,7 +35,8 @@ public function addConfiguration(NodeDefinition $node): void
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php
index 0d16e542..985d3a7b 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php
@@ -2,20 +2,12 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Checker;
use function array_key_exists;
use function count;
-use Jose\Bundle\JoseFramework\DependencyInjection\Compiler;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\ClaimCheckerCompilerPass;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\HeaderCheckerCompilerPass;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\SourceWithCompilerPasses;
use Jose\Component\Checker\ClaimCheckerManagerFactory;
@@ -32,17 +24,11 @@ class CheckerSource implements SourceWithCompilerPasses
/**
* @var Source[]
*/
- private $sources;
+ private array $sources;
- /**
- * CheckerSource constructor.
- */
public function __construct()
{
- $this->sources = [
- new ClaimChecker(),
- new HeaderChecker(),
- ];
+ $this->sources = [new ClaimChecker(), new HeaderChecker()];
}
public function name(): string
@@ -52,11 +38,11 @@ public function name(): string
public function load(array $configs, ContainerBuilder $container): void
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return;
}
$container->registerForAutoconfiguration(TokenTypeSupport::class)->addTag('jose.checker.token_type');
- $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config'));
$loader->load('checkers.php');
if (array_key_exists('checkers', $configs)) {
@@ -68,7 +54,7 @@ public function load(array $configs, ContainerBuilder $container): void
public function getNodeDefinition(NodeDefinition $node): void
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return;
}
$childNode = $node
@@ -86,13 +72,13 @@ public function getNodeDefinition(NodeDefinition $node): void
public function prepend(ContainerBuilder $container, array $config): array
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return [];
}
$result = [];
foreach ($this->sources as $source) {
$prepend = $source->prepend($container, $config);
- if (0 !== count($prepend)) {
+ if (count($prepend) !== 0) {
$result[$source->name()] = $prepend;
}
}
@@ -105,10 +91,7 @@ public function prepend(ContainerBuilder $container, array $config): array
*/
public function getCompilerPasses(): array
{
- return [
- new Compiler\ClaimCheckerCompilerPass(),
- new Compiler\HeaderCheckerCompilerPass(),
- ];
+ return [new ClaimCheckerCompilerPass(), new HeaderCheckerCompilerPass()];
}
private function isEnabled(): bool
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php
index 12a2e853..600048ea 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Checker;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -35,9 +26,7 @@ public function load(array $configs, ContainerBuilder $container): void
$definition = new Definition(ClaimCheckerManager::class);
$definition
->setFactory([new Reference(ClaimCheckerManagerFactory::class), 'create'])
- ->setArguments([
- $itemConfig['claims'],
- ])
+ ->setArguments([$itemConfig['claims']])
->addTag('jose.claim_checker_manager')
->setPublic($itemConfig['is_public'])
;
@@ -45,7 +34,11 @@ public function load(array $configs, ContainerBuilder $container): void
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, ClaimCheckerManager::class, $name.'ClaimCheckerManager');
+ $container->registerAliasForArgument(
+ $service_id,
+ ClaimCheckerManager::class,
+ $name . 'ClaimCheckerManager'
+ );
}
}
@@ -67,7 +60,8 @@ public function getNodeDefinition(NodeDefinition $node): void
->info('A list of claim aliases to be set in the claim checker.')
->useAttributeAsKey('name')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('tags')
->info('A list of tags to be associated to the claim checker.')
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php
index bf61b0cf..3e1e7c83 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Checker;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -35,9 +26,7 @@ public function load(array $configs, ContainerBuilder $container): void
$definition = new Definition(HeaderCheckerManager::class);
$definition
->setFactory([new Reference(HeaderCheckerManagerFactory::class), 'create'])
- ->setArguments([
- $itemConfig['headers'],
- ])
+ ->setArguments([$itemConfig['headers']])
->addTag('jose.header_checker_manager')
->setPublic($itemConfig['is_public'])
;
@@ -45,7 +34,11 @@ public function load(array $configs, ContainerBuilder $container): void
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, HeaderCheckerManager::class, $name.'HeaderCheckerManager');
+ $container->registerAliasForArgument(
+ $service_id,
+ HeaderCheckerManager::class,
+ $name . 'HeaderCheckerManager'
+ );
}
}
@@ -67,7 +60,8 @@ public function getNodeDefinition(NodeDefinition $node): void
->info('A list of header aliases to be set in the claim checker.')
->useAttributeAsKey('name')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('tags')
->info('A list of tags to be associated to the claim checker.')
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Console/ConsoleSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Console/ConsoleSource.php
index 0cf2bb29..a3f0ecba 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Console/ConsoleSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Console/ConsoleSource.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Console;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -29,10 +20,10 @@ public function name(): string
public function load(array $configs, ContainerBuilder $container): void
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return;
}
- $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config'));
$loader->load('commands.php');
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Core/CoreSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Core/CoreSource.php
index ddc2e6a1..c1705e8c 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Core/CoreSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Core/CoreSource.php
@@ -2,19 +2,15 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Core;
use Jose\Bundle\JoseFramework\DataCollector\Collector;
-use Jose\Bundle\JoseFramework\DependencyInjection\Compiler;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\AlgorithmCompilerPass;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\CheckerCollectorCompilerPass;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\DataCollectorCompilerPass;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\JWECollectorCompilerPass;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\JWSCollectorCompilerPass;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\KeyCollectorCompilerPass;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\SourceWithCompilerPasses;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\Config\FileLocator;
@@ -32,14 +28,14 @@ public function name(): string
public function load(array $config, ContainerBuilder $container): void
{
- $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config'));
$loader->load('services.php');
if (interface_exists(EnvVarProcessorInterface::class)) {
$loader->load('env_var.php');
}
- if (true === $container->getParameter('kernel.debug')) {
+ if ($container->getParameter('kernel.debug') === true) {
$container->registerForAutoconfiguration(Collector::class)->addTag('jose.data_collector');
$loader->load('dev_services.php');
}
@@ -60,12 +56,12 @@ public function prepend(ContainerBuilder $container, array $config): array
public function getCompilerPasses(): array
{
return [
- new Compiler\AlgorithmCompilerPass(),
- new Compiler\DataCollectorCompilerPass(),
- new Compiler\CheckerCollectorCompilerPass(),
- new Compiler\KeyCollectorCompilerPass(),
- new Compiler\JWSCollectorCompilerPass(),
- new Compiler\JWECollectorCompilerPass(),
+ new AlgorithmCompilerPass(),
+ new DataCollectorCompilerPass(),
+ new CheckerCollectorCompilerPass(),
+ new KeyCollectorCompilerPass(),
+ new JWSCollectorCompilerPass(),
+ new JWECollectorCompilerPass(),
];
}
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/AbstractEncryptionSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/AbstractEncryptionSource.php
index 04ce5546..c31363e8 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/AbstractEncryptionSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/AbstractEncryptionSource.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Encryption;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -36,27 +27,31 @@ public function getNodeDefinition(NodeDefinition $node): void
->useAttributeAsKey('name')
->isRequired()
->requiresAtLeastOneElement()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('content_encryption_algorithms')
->info('A list of supported content encryption algorithms.')
->useAttributeAsKey('name')
->isRequired()
->requiresAtLeastOneElement()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('compression_methods')
->info('A list of supported compression methods.')
->useAttributeAsKey('name')
->defaultValue(['DEF'])
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('tags')
->info('A list of tags to be associated to the service.')
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
->end()
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php
index 7c5ab34e..0067e7ab 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php
@@ -2,21 +2,13 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Encryption;
use function array_key_exists;
use function count;
use function in_array;
-use Jose\Bundle\JoseFramework\DependencyInjection\Compiler;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\CompressionMethodCompilerPass;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\EncryptionSerializerCompilerPass;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\SourceWithCompilerPasses;
use Jose\Component\Encryption\Algorithm\ContentEncryption\AESCBCHS;
@@ -43,19 +35,11 @@ class EncryptionSource implements SourceWithCompilerPasses
/**
* @var Source[]
*/
- private $sources;
+ private array $sources;
- /**
- * EncryptionSource constructor.
- */
public function __construct()
{
- $this->sources = [
- new JWEBuilder(),
- new JWEDecrypter(),
- new JWESerializer(),
- new JWELoader(),
- ];
+ $this->sources = [new JWEBuilder(), new JWEDecrypter(), new JWESerializer(), new JWELoader()];
}
public function name(): string
@@ -65,16 +49,16 @@ public function name(): string
public function load(array $configs, ContainerBuilder $container): void
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return;
}
$container->registerForAutoconfiguration(JWESerializerAlias::class)->addTag('jose.jwe.serializer');
- $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config'));
$loader->load('jwe_services.php');
$loader->load('jwe_serializers.php');
$loader->load('compression_methods.php');
- $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config/Algorithms/'));
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config/Algorithms/'));
foreach ($this->getAlgorithmsFiles() as $class => $file) {
if (class_exists($class)) {
$loader->load($file);
@@ -90,7 +74,7 @@ public function load(array $configs, ContainerBuilder $container): void
public function getNodeDefinition(NodeDefinition $node): void
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return;
}
$childNode = $node->children()
@@ -107,13 +91,13 @@ public function getNodeDefinition(NodeDefinition $node): void
public function prepend(ContainerBuilder $container, array $config): array
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return [];
}
$result = [];
foreach ($this->sources as $source) {
$prepend = $source->prepend($container, $config);
- if (0 !== count($prepend)) {
+ if (count($prepend) !== 0) {
$result[$source->name()] = $prepend;
}
}
@@ -126,10 +110,7 @@ public function prepend(ContainerBuilder $container, array $config): array
*/
public function getCompilerPasses(): array
{
- return [
- new Compiler\EncryptionSerializerCompilerPass(),
- new Compiler\CompressionMethodCompilerPass(),
- ];
+ return [new EncryptionSerializerCompilerPass(), new CompressionMethodCompilerPass()];
}
private function getAlgorithmsFiles(): array
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEBuilder.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEBuilder.php
index df195bb4..4c0070ae 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEBuilder.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEBuilder.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Encryption;
use Jose\Bundle\JoseFramework\Services\JWEBuilderFactory;
@@ -45,7 +36,7 @@ public function load(array $configs, ContainerBuilder $container): void
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, JWEBuilderService::class, $name.'JweBuilder');
+ $container->registerAliasForArgument($service_id, JWEBuilderService::class, $name . 'JweBuilder');
}
}
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEDecrypter.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEDecrypter.php
index cca733c6..9b285e2d 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEDecrypter.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEDecrypter.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Encryption;
use Jose\Bundle\JoseFramework\Services\JWEDecrypterFactory;
@@ -45,7 +36,7 @@ public function load(array $configs, ContainerBuilder $container): void
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, JWEDecrypterService::class, $name.'JweDecrypter');
+ $container->registerAliasForArgument($service_id, JWEDecrypterService::class, $name . 'JweDecrypter');
}
}
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php
index 4317b0bf..076acef4 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Encryption;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -50,7 +41,7 @@ public function load(array $configs, ContainerBuilder $container): void
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, JWELoaderService::class, $name.'JweLoader');
+ $container->registerAliasForArgument($service_id, JWELoaderService::class, $name . 'JweLoader');
}
}
@@ -71,39 +62,45 @@ public function getNodeDefinition(NodeDefinition $node): void
->info('A list of key encryption algorithm aliases.')
->useAttributeAsKey('name')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('content_encryption_algorithms')
->info('A list of key encryption algorithm aliases.')
->useAttributeAsKey('name')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('compression_methods')
->info('A list of compression method aliases.')
->useAttributeAsKey('name')
->defaultValue(['DEF'])
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('serializers')
->info('A list of signature serializer aliases.')
->useAttributeAsKey('name')
->requiresAtLeastOneElement()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('header_checkers')
->info('A list of header checker aliases.')
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('tags')
->info('A list of tags to be associated to the service.')
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
->end()
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php
index 168b883a..729193f9 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Encryption;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -43,7 +34,7 @@ public function load(array $configs, ContainerBuilder $container): void
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, JWESerializerManager::class, $name.'JweSerializer');
+ $container->registerAliasForArgument($service_id, JWESerializerManager::class, $name . 'JweSerializer');
}
}
@@ -63,7 +54,8 @@ public function getNodeDefinition(NodeDefinition $node): void
->arrayNode('serializers')
->info('A list of JWE serializers aliases.')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->treatNullLike([])
->treatFalseLike([])
->requiresAtLeastOneElement()
@@ -73,7 +65,8 @@ public function getNodeDefinition(NodeDefinition $node): void
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
->end()
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php
index ff659dcd..d131c8f8 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -29,8 +20,8 @@ public function name(): string
public function load(array $configs, ContainerBuilder $container): void
{
- if (true === $configs[$this->name()]['enabled']) {
- $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
+ if ($configs[$this->name()]['enabled'] === true) {
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config'));
$loader->load('jku_source.php');
if (class_exists(JKULoaderCommand::class)) {
$loader->load('jku_commands.php');
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php
index 8899392a..e5c16263 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement;
use function array_key_exists;
@@ -29,16 +20,13 @@ class JWKSetSource implements Source
/**
* @var JWKSetSourceInterface[]
*/
- private $jwkset_sources;
+ private ?array $jwkset_sources = null;
public function name(): string
{
return 'key_sets';
}
- /**
- * @throws LogicException if the definition is not configured
- */
public function load(array $configs, ContainerBuilder $container): void
{
$sources = $this->getJWKSetSources();
@@ -65,14 +53,16 @@ public function getNodeDefinition(NodeDefinition $node): void
->arrayPrototype()
->validate()
->ifTrue(function ($config): bool {
- return 1 !== count($config);
+ return count($config) !== 1;
})
->thenInvalid('One key set type must be set.')
->end()
->children()
;
foreach ($this->getJWKSetSources() as $name => $source) {
- $sourceNode = $sourceNodeBuilder->arrayNode($name)->canBeUnset();
+ $sourceNode = $sourceNodeBuilder->arrayNode($name)
+ ->canBeUnset()
+ ;
$source->addConfiguration($sourceNode);
}
}
@@ -83,20 +73,18 @@ public function prepend(ContainerBuilder $container, array $config): array
}
/**
- * @throws InvalidArgumentException if the source object is not valid
- *
* @return JWKSetSourceInterface[]
*/
private function getJWKSetSources(): array
{
- if (null !== $this->jwkset_sources) {
+ if ($this->jwkset_sources !== null) {
return $this->jwkset_sources;
}
// load bundled adapter factories
$tempContainer = new ContainerBuilder();
$tempContainer->registerForAutoconfiguration(JWKSetSourceInterface::class)->addTag('jose.jwkset_source');
- $loader = new PhpFileLoader($tempContainer, new FileLocator(__DIR__.'/../../../Resources/config'));
+ $loader = new PhpFileLoader($tempContainer, new FileLocator(__DIR__ . '/../../../Resources/config'));
$loader->load('jwkset_sources.php');
$tempContainer->compile();
@@ -104,7 +92,7 @@ private function getJWKSetSources(): array
$jwkset_sources = [];
foreach (array_keys($services) as $id) {
$factory = $tempContainer->get($id);
- if (!$factory instanceof JWKSetSourceInterface) {
+ if (! $factory instanceof JWKSetSourceInterface) {
throw new InvalidArgumentException('Invalid object');
}
$jwkset_sources[str_replace('-', '_', $factory->getKeySet())] = $factory;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JKU.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JKU.php
index 23eb665f..298e1c59 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JKU.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JKU.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSetSource;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource;
@@ -26,14 +17,8 @@ class JKU extends AbstractSource implements JWKSetSource
public function createDefinition(ContainerBuilder $container, array $config): Definition
{
$definition = new Definition(JWKSet::class);
- $definition->setFactory([
- new Reference(JKUFactory::class),
- 'loadFromUrl',
- ]);
- $definition->setArguments([
- $config['url'],
- $config['headers'],
- ]);
+ $definition->setFactory([new Reference(JKUFactory::class), 'loadFromUrl']);
+ $definition->setArguments([$config['url'], $config['headers']]);
$definition->addTag('jose.jwkset');
return $definition;
@@ -58,7 +43,8 @@ public function addConfiguration(NodeDefinition $node): void
->treatFalseLike([])
->info('Header key/value pairs added to the request.')
->useAttributeAsKey('name')
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JWKSet.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JWKSet.php
index 6cf5aca9..dcc144bd 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JWKSet.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JWKSet.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSetSource;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource;
@@ -26,13 +17,8 @@ class JWKSet extends AbstractSource implements JWKSetSource
public function createDefinition(ContainerBuilder $container, array $config): Definition
{
$definition = new Definition(JWKSetAlias::class);
- $definition->setFactory([
- new Reference(JWKFactory::class),
- 'createFromJsonObject',
- ]);
- $definition->setArguments([
- $config['value'],
- ]);
+ $definition->setFactory([new Reference(JWKFactory::class), 'createFromJsonObject']);
+ $definition->setArguments([$config['value']]);
$definition->addTag('jose.jwkset');
return $definition;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JWKSetSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JWKSetSource.php
index 49f73225..e00afaed 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JWKSetSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JWKSetSource.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSetSource;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/X5U.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/X5U.php
index 12618e24..420fdff7 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/X5U.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/X5U.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSetSource;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource;
@@ -26,14 +17,8 @@ class X5U extends AbstractSource implements JWKSetSource
public function createDefinition(ContainerBuilder $container, array $config): Definition
{
$definition = new Definition(JWKSet::class);
- $definition->setFactory([
- new Reference(X5UFactory::class),
- 'loadFromUrl',
- ]);
- $definition->setArguments([
- $config['url'],
- $config['headers'],
- ]);
+ $definition->setFactory([new Reference(X5UFactory::class), 'loadFromUrl']);
+ $definition->setArguments([$config['url'], $config['headers']]);
$definition->addTag('jose.jwkset');
return $definition;
@@ -58,7 +43,8 @@ public function addConfiguration(NodeDefinition $node): void
->treatFalseLike([])
->info('Header key/value pairs added to the request.')
->useAttributeAsKey('name')
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php
index ee38d2ec..217d283c 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement;
use function array_key_exists;
@@ -27,18 +18,15 @@
class JWKSource implements Source
{
/**
- * @var null|JWKSourceInterface[]
+ * @var JWKSourceInterface[]|null
*/
- private $jwkSources;
+ private ?array $jwkSources = null;
public function name(): string
{
return 'keys';
}
- /**
- * @throws LogicException if the definition is not configured
- */
public function load(array $configs, ContainerBuilder $container): void
{
$sources = $this->getJWKSources();
@@ -65,14 +53,16 @@ public function getNodeDefinition(NodeDefinition $node): void
->arrayPrototype()
->validate()
->ifTrue(function ($config): bool {
- return 1 !== count($config);
+ return count($config) !== 1;
})
->thenInvalid('One key type must be set.')
->end()
->children()
;
foreach ($this->getJWKSources() as $name => $source) {
- $sourceNode = $sourceNodeBuilder->arrayNode($name)->canBeUnset();
+ $sourceNode = $sourceNodeBuilder->arrayNode($name)
+ ->canBeUnset()
+ ;
$source->addConfiguration($sourceNode);
}
}
@@ -83,20 +73,18 @@ public function prepend(ContainerBuilder $container, array $config): array
}
/**
- * @throws InvalidArgumentException if the source object is invalid
- *
* @return JWKSourceInterface[]
*/
private function getJWKSources(): array
{
- if (null !== $this->jwkSources) {
+ if ($this->jwkSources !== null) {
return $this->jwkSources;
}
// load bundled adapter factories
$tempContainer = new ContainerBuilder();
$tempContainer->registerForAutoconfiguration(JWKSourceInterface::class)->addTag('jose.jwk_source');
- $loader = new PhpFileLoader($tempContainer, new FileLocator(__DIR__.'/../../../Resources/config'));
+ $loader = new PhpFileLoader($tempContainer, new FileLocator(__DIR__ . '/../../../Resources/config'));
$loader->load('jwk_sources.php');
$tempContainer->compile();
@@ -104,7 +92,7 @@ private function getJWKSources(): array
$jwkSources = [];
foreach (array_keys($services) as $id) {
$factory = $tempContainer->get($id);
- if (!$factory instanceof JWKSourceInterface) {
+ if (! $factory instanceof JWKSourceInterface) {
throw new InvalidArgumentException('Invalid object');
}
$jwkSources[str_replace('-', '_', $factory->getKey())] = $factory;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/CertificateFile.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/CertificateFile.php
index f449b824..ec455710 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/CertificateFile.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/CertificateFile.php
@@ -2,18 +2,10 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource;
+use Jose\Component\Core\JWK;
use Jose\Component\KeyManagement\JWKFactory;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -24,15 +16,9 @@ class CertificateFile extends AbstractSource implements JWKSource
{
public function createDefinition(ContainerBuilder $container, array $config): Definition
{
- $definition = new Definition(\Jose\Component\Core\JWK::class);
- $definition->setFactory([
- new Reference(JWKFactory::class),
- 'createFromCertificateFile',
- ]);
- $definition->setArguments([
- $config['path'],
- $config['additional_values'],
- ]);
+ $definition = new Definition(JWK::class);
+ $definition->setFactory([new Reference(JWKFactory::class), 'createFromCertificateFile']);
+ $definition->setArguments([$config['path'], $config['additional_values']]);
$definition->addTag('jose.jwk');
return $definition;
@@ -56,7 +42,8 @@ public function addConfiguration(NodeDefinition $node): void
->info('Additional values to be added to the key.')
->defaultValue([])
->useAttributeAsKey('key')
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWK.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWK.php
index 811d6522..46de3fa4 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWK.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWK.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource;
@@ -25,13 +16,8 @@ class JWK extends AbstractSource implements JWKSource
public function createDefinition(ContainerBuilder $container, array $config): Definition
{
$definition = new Definition(\Jose\Component\Core\JWK::class);
- $definition->setFactory([
- new Reference(JWKFactory::class),
- 'createFromJsonObject',
- ]);
- $definition->setArguments([
- $config['value'],
- ]);
+ $definition->setFactory([new Reference(JWKFactory::class), 'createFromJsonObject']);
+ $definition->setArguments([$config['value']]);
$definition->addTag('jose.jwk');
return $definition;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php
index 6db42129..cafb822c 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php
@@ -2,18 +2,10 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource;
+use Jose\Component\Core\JWK;
use Jose\Component\KeyManagement\JWKFactory;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -24,11 +16,8 @@ class JWKSet extends AbstractSource implements JWKSource
{
public function createDefinition(ContainerBuilder $container, array $config): Definition
{
- $definition = new Definition(\Jose\Component\Core\JWK::class);
- $definition->setFactory([
- new Reference(JWKFactory::class),
- 'createFromKeySet',
- ]);
+ $definition = new Definition(JWK::class);
+ $definition->setFactory([new Reference(JWKFactory::class), 'createFromKeySet']);
$definition->setArguments([new Reference($config['key_set']), $config['index']]);
$definition->addTag('jose.jwk');
@@ -47,7 +36,8 @@ public function addConfiguration(NodeDefinition $node): void
->children()
->scalarNode('key_set')
->info('The key set service.')
- ->isRequired()->end()
+ ->isRequired()
+ ->end()
->integerNode('index')
->info('The index of the key in the key set.')
->isRequired()
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSource.php
index b4aebf83..5f47dfc3 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSource.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/KeyFile.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/KeyFile.php
index 6aa2d60d..d39d50ed 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/KeyFile.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/KeyFile.php
@@ -2,18 +2,10 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource;
+use Jose\Component\Core\JWK;
use Jose\Component\KeyManagement\JWKFactory;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -24,16 +16,9 @@ class KeyFile extends AbstractSource implements JWKSource
{
public function createDefinition(ContainerBuilder $container, array $config): Definition
{
- $definition = new Definition(\Jose\Component\Core\JWK::class);
- $definition->setFactory([
- new Reference(JWKFactory::class),
- 'createFromKeyFile',
- ]);
- $definition->setArguments([
- $config['path'],
- $config['password'],
- $config['additional_values'],
- ]);
+ $definition = new Definition(JWK::class);
+ $definition->setFactory([new Reference(JWKFactory::class), 'createFromKeyFile']);
+ $definition->setArguments([$config['path'], $config['password'], $config['additional_values']]);
$definition->addTag('jose.jwk');
return $definition;
@@ -61,7 +46,8 @@ public function addConfiguration(NodeDefinition $node): void
->info('Additional values to be added to the key.')
->defaultValue([])
->useAttributeAsKey('key')
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/P12.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/P12.php
index 5f0ee8f5..0341e059 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/P12.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/P12.php
@@ -2,18 +2,10 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource;
+use Jose\Component\Core\JWK;
use Jose\Component\KeyManagement\JWKFactory;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -24,16 +16,9 @@ class P12 extends AbstractSource implements JWKSource
{
public function createDefinition(ContainerBuilder $container, array $config): Definition
{
- $definition = new Definition(\Jose\Component\Core\JWK::class);
- $definition->setFactory([
- new Reference(JWKFactory::class),
- 'createFromPKCS12CertificateFile',
- ]);
- $definition->setArguments([
- $config['path'],
- $config['password'],
- $config['additional_values'],
- ]);
+ $definition = new Definition(JWK::class);
+ $definition->setFactory([new Reference(JWKFactory::class), 'createFromPKCS12CertificateFile']);
+ $definition->setArguments([$config['path'], $config['password'], $config['additional_values']]);
$definition->addTag('jose.jwk');
return $definition;
@@ -61,7 +46,8 @@ public function addConfiguration(NodeDefinition $node): void
->info('Additional values to be added to the key.')
->defaultValue([])
->useAttributeAsKey('key')
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Secret.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Secret.php
index b295c0e4..8ee0a746 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Secret.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Secret.php
@@ -2,18 +2,10 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource;
+use Jose\Component\Core\JWK;
use Jose\Component\KeyManagement\JWKFactory;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -24,15 +16,9 @@ class Secret extends AbstractSource implements JWKSource
{
public function createDefinition(ContainerBuilder $container, array $config): Definition
{
- $definition = new Definition(\Jose\Component\Core\JWK::class);
- $definition->setFactory([
- new Reference(JWKFactory::class),
- 'createFromSecret',
- ]);
- $definition->setArguments([
- $config['secret'],
- $config['additional_values'],
- ]);
+ $definition = new Definition(JWK::class);
+ $definition->setFactory([new Reference(JWKFactory::class), 'createFromSecret']);
+ $definition->setArguments([$config['secret'], $config['additional_values']]);
$definition->addTag('jose.jwk');
return $definition;
@@ -56,7 +42,8 @@ public function addConfiguration(NodeDefinition $node): void
->info('Additional values to be added to the key.')
->defaultValue([])
->useAttributeAsKey('key')
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Values.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Values.php
index e4e19ba7..c21395cb 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Values.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Values.php
@@ -2,18 +2,10 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource;
+use Jose\Component\Core\JWK;
use Jose\Component\KeyManagement\JWKFactory;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -24,14 +16,9 @@ class Values extends AbstractSource implements JWKSource
{
public function createDefinition(ContainerBuilder $container, array $config): Definition
{
- $definition = new Definition(\Jose\Component\Core\JWK::class);
- $definition->setFactory([
- new Reference(JWKFactory::class),
- 'createFromValues',
- ]);
- $definition->setArguments([
- $config['values'],
- ]);
+ $definition = new Definition(JWK::class);
+ $definition->setFactory([new Reference(JWKFactory::class), 'createFromValues']);
+ $definition->setArguments([$config['values']]);
$definition->addTag('jose.jwk');
return $definition;
@@ -51,7 +38,8 @@ public function addConfiguration(NodeDefinition $node): void
->info('Values of the key.')
->isRequired()
->useAttributeAsKey('key')
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/X5C.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/X5C.php
index 7ec0235d..4ff9ea23 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/X5C.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/X5C.php
@@ -2,18 +2,10 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource;
+use Jose\Component\Core\JWK;
use Jose\Component\KeyManagement\JWKFactory;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -24,15 +16,9 @@ class X5C extends AbstractSource implements JWKSource
{
public function createDefinition(ContainerBuilder $container, array $config): Definition
{
- $definition = new Definition(\Jose\Component\Core\JWK::class);
- $definition->setFactory([
- new Reference(JWKFactory::class),
- 'createFromCertificate',
- ]);
- $definition->setArguments([
- $config['value'],
- $config['additional_values'],
- ]);
+ $definition = new Definition(JWK::class);
+ $definition->setFactory([new Reference(JWKFactory::class), 'createFromCertificate']);
+ $definition->setArguments([$config['value'], $config['additional_values']]);
$definition->addTag('jose.jwk');
return $definition;
@@ -56,7 +42,8 @@ public function addConfiguration(NodeDefinition $node): void
->info('Additional values to be added to the key.')
->defaultValue([])
->useAttributeAsKey('key')
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php
index d98ec16f..1ea605e2 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement;
use Jose\Bundle\JoseFramework\Controller\JWKSetController;
@@ -35,18 +26,16 @@ public function load(array $configs, ContainerBuilder $container): void
$definition = new Definition(JWKSetController::class);
$definition->setFactory([new Reference(JWKSetControllerFactory::class), 'create']);
$definition->setArguments([new Reference($itemConfig['id'])]);
- $definition->addTag('jose.jwk_uri.controller', ['path' => $itemConfig['path']]);
+ $definition->addTag('jose.jwk_uri.controller', [
+ 'path' => $itemConfig['path'],
+ ]);
$definition->addTag('controller.service_arguments');
$definition->setPublic($itemConfig['is_public']);
foreach ($itemConfig['tags'] as $id => $attributes) {
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument(
- $service_id,
- JWKSetController::class,
- $name.'JwkSetController'
- );
+ $container->registerAliasForArgument($service_id, JWKSetController::class, $name . 'JwkSetController');
}
}
@@ -72,7 +61,8 @@ public function getNodeDefinition(NodeDefinition $node): void
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->booleanNode('is_public')
->info('If true, the service will be public, else private.')
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php
index 5c295954..a36a3b00 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php
@@ -2,19 +2,12 @@
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\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement;
use function count;
-use Jose\Bundle\JoseFramework\DependencyInjection\Compiler;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\KeyAnalyzerCompilerPass;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\KeysetAnalyzerCompilerPass;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\KeySetControllerCompilerPass;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\SourceWithCompilerPasses;
use Jose\Component\KeyManagement\Analyzer\KeyAnalyzer;
@@ -31,19 +24,11 @@ class KeyManagementSource implements SourceWithCompilerPasses
/**
* @var Source[]
*/
- private $sources;
+ private array $sources;
- /**
- * KeyManagementSource constructor.
- */
public function __construct()
{
- $this->sources = [
- new JWKSetSource(),
- new JWKSource(),
- new JWKUriSource(),
- new JKUSource(),
- ];
+ $this->sources = [new JWKSetSource(), new JWKSource(), new JWKUriSource(), new JKUSource()];
}
public function name(): string
@@ -53,12 +38,12 @@ public function name(): string
public function load(array $configs, ContainerBuilder $container): void
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return;
}
$container->registerForAutoconfiguration(KeyAnalyzer::class)->addTag('jose.key_analyzer');
$container->registerForAutoconfiguration(KeysetAnalyzer::class)->addTag('jose.keyset_analyzer');
- $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config'));
$loader->load('analyzers.php');
$loader->load('jwk_factory.php');
$loader->load('jwk_services.php');
@@ -70,7 +55,7 @@ public function load(array $configs, ContainerBuilder $container): void
public function getNodeDefinition(NodeDefinition $node): void
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return;
}
foreach ($this->sources as $source) {
@@ -80,13 +65,13 @@ public function getNodeDefinition(NodeDefinition $node): void
public function prepend(ContainerBuilder $container, array $config): array
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return [];
}
$result = [];
foreach ($this->sources as $source) {
$prepend = $source->prepend($container, $config);
- if (0 !== count($prepend)) {
+ if (count($prepend) !== 0) {
$result[$source->name()] = $prepend;
}
}
@@ -100,9 +85,9 @@ public function prepend(ContainerBuilder $container, array $config): array
public function getCompilerPasses(): array
{
return [
- new Compiler\KeyAnalyzerCompilerPass(),
- new Compiler\KeysetAnalyzerCompilerPass(),
- new Compiler\KeySetControllerCompilerPass(),
+ new KeyAnalyzerCompilerPass(),
+ new KeysetAnalyzerCompilerPass(),
+ new KeySetControllerCompilerPass(),
];
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php b/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php
index 7d9e4d8d..e7dfb7f7 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\NestedToken;
use function array_key_exists;
@@ -28,17 +19,11 @@ class NestedToken implements Source
/**
* @var Source[]
*/
- private $sources;
+ private array $sources;
- /**
- * EncryptionSource constructor.
- */
public function __construct()
{
- $this->sources = [
- new NestedTokenLoader(),
- new NestedTokenBuilder(),
- ];
+ $this->sources = [new NestedTokenLoader(), new NestedTokenBuilder()];
}
public function name(): string
@@ -48,10 +33,10 @@ public function name(): string
public function load(array $configs, ContainerBuilder $container): void
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return;
}
- $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config'));
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config'));
$loader->load('nested_token.php');
if (array_key_exists('nested_token', $configs)) {
@@ -63,7 +48,7 @@ public function load(array $configs, ContainerBuilder $container): void
public function getNodeDefinition(NodeDefinition $node): void
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return;
}
$childNode = $node->children()
@@ -79,13 +64,13 @@ public function getNodeDefinition(NodeDefinition $node): void
public function prepend(ContainerBuilder $container, array $config): array
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return [];
}
$result = [];
foreach ($this->sources as $source) {
$prepend = $source->prepend($container, $config);
- if (0 !== count($prepend)) {
+ if (count($prepend) !== 0) {
$result[$source->name()] = $prepend;
}
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php b/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php
index c91778ab..71f3307d 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\NestedToken;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -50,7 +41,7 @@ public function load(array $configs, ContainerBuilder $container): void
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, self::class, $name.'NestedTokenBuilder');
+ $container->registerAliasForArgument($service_id, self::class, $name . 'NestedTokenBuilder');
}
}
@@ -71,25 +62,29 @@ public function getNodeDefinition(NodeDefinition $node): void
->info('A list of signature algorithm aliases.')
->useAttributeAsKey('name')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('key_encryption_algorithms')
->info('A list of key encryption algorithm aliases.')
->useAttributeAsKey('name')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('content_encryption_algorithms')
->info('A list of key encryption algorithm aliases.')
->useAttributeAsKey('name')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('compression_methods')
->info('A list of compression method aliases.')
->useAttributeAsKey('name')
->defaultValue(['DEF'])
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('jws_serializers')
->info('A list of JWS serializer aliases.')
@@ -98,7 +93,8 @@ public function getNodeDefinition(NodeDefinition $node): void
->treatFalseLike([])
->isRequired()
->requiresAtLeastOneElement()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('jwe_serializers')
->info('A list of JWE serializer aliases.')
@@ -107,14 +103,16 @@ public function getNodeDefinition(NodeDefinition $node): void
->treatFalseLike([])
->isRequired()
->requiresAtLeastOneElement()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('tags')
->info('A list of tags to be associated to the service.')
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
->end()
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php b/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php
index 453d16ff..c61ffb63 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\NestedToken;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -52,7 +43,7 @@ public function load(array $configs, ContainerBuilder $container): void
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, self::class, $name.'NestedTokenLoader');
+ $container->registerAliasForArgument($service_id, self::class, $name . 'NestedTokenLoader');
}
}
@@ -73,25 +64,29 @@ public function getNodeDefinition(NodeDefinition $node): void
->info('A list of signature algorithm aliases.')
->useAttributeAsKey('name')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('key_encryption_algorithms')
->info('A list of key encryption algorithm aliases.')
->useAttributeAsKey('name')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('content_encryption_algorithms')
->info('A list of key encryption algorithm aliases.')
->useAttributeAsKey('name')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('compression_methods')
->info('A list of compression method aliases.')
->useAttributeAsKey('name')
->defaultValue(['DEF'])
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('jws_serializers')
->info('A list of JWS serializer aliases.')
@@ -100,7 +95,8 @@ public function getNodeDefinition(NodeDefinition $node): void
->treatFalseLike([])
->isRequired()
->requiresAtLeastOneElement()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('jwe_serializers')
->info('A list of JWE serializer aliases.')
@@ -109,28 +105,32 @@ public function getNodeDefinition(NodeDefinition $node): void
->treatFalseLike([])
->isRequired()
->requiresAtLeastOneElement()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('jws_header_checkers')
->info('A list of header checker aliases.')
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('jwe_header_checkers')
->info('A list of header checker aliases.')
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('tags')
->info('A list of tags to be associated to the service.')
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
->end()
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/AbstractSignatureSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/AbstractSignatureSource.php
index 0e8543a7..5c57023f 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/AbstractSignatureSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/AbstractSignatureSource.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Signature;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -36,14 +27,16 @@ public function getNodeDefinition(NodeDefinition $node): void
->useAttributeAsKey('name')
->isRequired()
->requiresAtLeastOneElement()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('tags')
->info('A list of tags to be associated to the service.')
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
->end()
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSBuilder.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSBuilder.php
index bf3eee1a..42cf23d6 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSBuilder.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSBuilder.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Signature;
use Jose\Bundle\JoseFramework\Services\JWSBuilderFactory;
@@ -41,7 +32,7 @@ public function load(array $configs, ContainerBuilder $container): void
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, JWSBuilderService::class, $name.'JwsBuilder');
+ $container->registerAliasForArgument($service_id, JWSBuilderService::class, $name . 'JwsBuilder');
}
}
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php
index 290f2214..dfdf6f9e 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Signature;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -48,7 +39,7 @@ public function load(array $configs, ContainerBuilder $container): void
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, JWSLoaderService::class, $name.'JwsLoader');
+ $container->registerAliasForArgument($service_id, JWSLoaderService::class, $name . 'JwsLoader');
}
}
@@ -69,27 +60,31 @@ public function getNodeDefinition(NodeDefinition $node): void
->info('A list of signature algorithm aliases.')
->useAttributeAsKey('name')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('serializers')
->info('A list of signature serializer aliases.')
->useAttributeAsKey('name')
->requiresAtLeastOneElement()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('header_checkers')
->info('A list of header checker aliases.')
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->end()
->arrayNode('tags')
->info('A list of tags to be associated to the service.')
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
->end()
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php
index 2a609d68..527eb3ff 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Signature;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
@@ -43,7 +34,7 @@ public function load(array $configs, ContainerBuilder $container): void
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, JWSSerializerManager::class, $name.'JwsSerializer');
+ $container->registerAliasForArgument($service_id, JWSSerializerManager::class, $name . 'JwsSerializer');
}
}
@@ -63,7 +54,8 @@ public function getNodeDefinition(NodeDefinition $node): void
->arrayNode('serializers')
->info('A list of JWS serializers aliases.')
->isRequired()
- ->scalarPrototype()->end()
+ ->scalarPrototype()
+ ->end()
->treatNullLike([])
->treatFalseLike([])
->requiresAtLeastOneElement()
@@ -73,7 +65,8 @@ public function getNodeDefinition(NodeDefinition $node): void
->useAttributeAsKey('name')
->treatNullLike([])
->treatFalseLike([])
- ->variablePrototype()->end()
+ ->variablePrototype()
+ ->end()
->end()
->end()
->end()
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSVerifier.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSVerifier.php
index ecf5cb5e..3048303e 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSVerifier.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSVerifier.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Signature;
use Jose\Bundle\JoseFramework\Services\JWSVerifierFactory;
@@ -33,9 +24,7 @@ public function load(array $configs, ContainerBuilder $container): void
$definition = new Definition(JWSVerifierService::class);
$definition
->setFactory([new Reference(JWSVerifierFactory::class), 'create'])
- ->setArguments([
- $itemConfig['signature_algorithms'],
- ])
+ ->setArguments([$itemConfig['signature_algorithms']])
->addTag('jose.jws_verifier')
->setPublic($itemConfig['is_public'])
;
@@ -43,7 +32,7 @@ public function load(array $configs, ContainerBuilder $container): void
$definition->addTag($id, $attributes);
}
$container->setDefinition($service_id, $definition);
- $container->registerAliasForArgument($service_id, JWSVerifierService::class, $name.'JwsVerifier');
+ $container->registerAliasForArgument($service_id, JWSVerifierService::class, $name . 'JwsVerifier');
}
}
}
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php
index acc30dc7..ac446ee1 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php
@@ -2,21 +2,12 @@
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\Bundle\JoseFramework\DependencyInjection\Source\Signature;
use function array_key_exists;
use function count;
use function extension_loaded;
-use Jose\Bundle\JoseFramework\DependencyInjection\Compiler;
+use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\SignatureSerializerCompilerPass;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source;
use Jose\Bundle\JoseFramework\DependencyInjection\Source\SourceWithCompilerPasses;
use Jose\Component\Signature\Algorithm\ECDSA;
@@ -38,19 +29,11 @@ class SignatureSource implements SourceWithCompilerPasses
/**
* @var Source[]
*/
- private $sources;
+ private array $sources;
- /**
- * SignatureSource constructor.
- */
public function __construct()
{
- $this->sources = [
- new JWSBuilder(),
- new JWSVerifier(),
- new JWSSerializer(),
- new JWSLoader(),
- ];
+ $this->sources = [new JWSBuilder(), new JWSVerifier(), new JWSSerializer(), new JWSLoader()];
}
public function name(): string
@@ -60,15 +43,17 @@ public function name(): string
public function load(array $configs, ContainerBuilder $container): void
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return;
}
- $container->registerForAutoconfiguration(\Jose\Component\Signature\Serializer\JWSSerializer::class)->addTag('jose.jws.serializer');
- $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config/'));
+ $container->registerForAutoconfiguration(\Jose\Component\Signature\Serializer\JWSSerializer::class)->addTag(
+ 'jose.jws.serializer'
+ );
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config/'));
$loader->load('jws_services.php');
$loader->load('jws_serializers.php');
- $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../Resources/config/Algorithms/'));
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config/Algorithms/'));
foreach ($this->getAlgorithmsFiles() as $class => $file) {
if (class_exists($class)) {
$loader->load($file);
@@ -84,7 +69,7 @@ public function load(array $configs, ContainerBuilder $container): void
public function getNodeDefinition(NodeDefinition $node): void
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return;
}
$childNode = $node->children()
@@ -101,13 +86,13 @@ public function getNodeDefinition(NodeDefinition $node): void
public function prepend(ContainerBuilder $container, array $config): array
{
- if (!$this->isEnabled()) {
+ if (! $this->isEnabled()) {
return [];
}
$result = [];
foreach ($this->sources as $source) {
$prepend = $source->prepend($container, $config);
- if (0 !== count($prepend)) {
+ if (count($prepend) !== 0) {
$result[$source->name()] = $prepend;
}
}
@@ -120,9 +105,7 @@ public function prepend(ContainerBuilder $container, array $config): array
*/
public function getCompilerPasses(): array
{
- return [
- new Compiler\SignatureSerializerCompilerPass(),
- ];
+ return [new SignatureSerializerCompilerPass()];
}
private function getAlgorithmsFiles(): array
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Source.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Source.php
index ae0fe244..a5cc0b88 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/Source.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Source.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/SourceWithCompilerPasses.php b/src/Bundle/JoseFramework/DependencyInjection/Source/SourceWithCompilerPasses.php
index d1f42955..2eb28d0f 100644
--- a/src/Bundle/JoseFramework/DependencyInjection/Source/SourceWithCompilerPasses.php
+++ b/src/Bundle/JoseFramework/DependencyInjection/Source/SourceWithCompilerPasses.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\DependencyInjection\Source;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
diff --git a/src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php b/src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php
index ed7d3211..475a805d 100644
--- a/src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php
+++ b/src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\EnvVarProcessor;
use Closure;
@@ -23,23 +14,16 @@ final class KeyEnvVarProcessor implements EnvVarProcessorInterface
{
/**
* {@inheritdoc}
- *
- * @throws RuntimeException if the prefix is not supported
*/
- public function getEnv($prefix, $name, Closure $getEnv)
+ public function getEnv(string $prefix, string $name, Closure $getEnv): mixed
{
$env = $getEnv($name);
- switch ($prefix) {
- case 'jwk':
- return JWK::createFromJson($env);
-
- case 'jwkset':
- return JWKSet::createFromJson($env);
-
- default:
- throw new RuntimeException(sprintf('Unsupported prefix "%s".', $prefix));
- }
+ return match ($prefix) {
+ 'jwk' => JWK::createFromJson($env),
+ 'jwkset' => JWKSet::createFromJson($env),
+ default => throw new RuntimeException(sprintf('Unsupported prefix "%s".', $prefix)),
+ };
}
public static function getProvidedTypes(): array
diff --git a/src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php b/src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php
index a14ab51d..61e1143d 100644
--- a/src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php
+++ b/src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Symfony\Contracts\EventDispatcher\Event;
@@ -18,26 +9,17 @@
final class ClaimCheckedFailureEvent extends Event
{
- /**
- * @var array
- */
- private $claims;
-
- /**
- * @var array
- */
- private $mandatoryClaims;
-
- /**
- * @var Throwable
- */
- private $throwable;
-
- public function __construct(array $claims, array $mandatoryClaims, Throwable $throwable)
- {
+ private array $claims;
+
+ private array $mandatoryClaims;
+
+ public function __construct(
+ array $claims,
+ array $mandatoryClaims,
+ private Throwable $throwable
+ ) {
$this->claims = $claims;
$this->mandatoryClaims = $mandatoryClaims;
- $this->throwable = $throwable;
}
public function getClaims(): array
diff --git a/src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php b/src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php
index 1687bed5..c077396c 100644
--- a/src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php
+++ b/src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Symfony\Contracts\EventDispatcher\Event;
diff --git a/src/Bundle/JoseFramework/Event/HeaderCheckedFailureEvent.php b/src/Bundle/JoseFramework/Event/HeaderCheckedFailureEvent.php
index a32167bc..374cf393 100644
--- a/src/Bundle/JoseFramework/Event/HeaderCheckedFailureEvent.php
+++ b/src/Bundle/JoseFramework/Event/HeaderCheckedFailureEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWT;
@@ -19,32 +10,18 @@
final class HeaderCheckedFailureEvent extends Event
{
- /**
- * @var JWT
- */
- private $jwt;
-
- /**
- * @var int
- */
- private $index;
-
/**
* @var array
*/
private $mandatoryHeaderParameters;
- /**
- * @var Throwable
- */
- private $throwable;
-
- public function __construct(JWT $jwt, int $index, array $mandatoryHeaderParameters, Throwable $throwable)
- {
- $this->jwt = $jwt;
- $this->index = $index;
+ public function __construct(
+ private JWT $jwt,
+ private int $index,
+ array $mandatoryHeaderParameters,
+ private Throwable $throwable
+ ) {
$this->mandatoryHeaderParameters = $mandatoryHeaderParameters;
- $this->throwable = $throwable;
}
public function getJwt(): JWT
diff --git a/src/Bundle/JoseFramework/Event/HeaderCheckedSuccessEvent.php b/src/Bundle/JoseFramework/Event/HeaderCheckedSuccessEvent.php
index 9aaf74c9..7c1d6d63 100644
--- a/src/Bundle/JoseFramework/Event/HeaderCheckedSuccessEvent.php
+++ b/src/Bundle/JoseFramework/Event/HeaderCheckedSuccessEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWT;
@@ -18,25 +9,16 @@
final class HeaderCheckedSuccessEvent extends Event
{
- /**
- * @var JWT
- */
- private $jwt;
-
- /**
- * @var int
- */
- private $index;
-
/**
* @var array
*/
private $mandatoryHeaderParameters;
- public function __construct(JWT $jwt, int $index, array $mandatoryHeaderParameters)
- {
- $this->jwt = $jwt;
- $this->index = $index;
+ public function __construct(
+ private JWT $jwt,
+ private int $index,
+ array $mandatoryHeaderParameters
+ ) {
$this->mandatoryHeaderParameters = $mandatoryHeaderParameters;
}
diff --git a/src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php b/src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php
index b6d9dfc3..062de2fd 100644
--- a/src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Symfony\Contracts\EventDispatcher\Event;
@@ -18,16 +9,6 @@
final class JWEBuiltFailureEvent extends Event
{
- /**
- * @var Throwable
- */
- private $throwable;
-
- /**
- * @var null|string
- */
- private $payload;
-
/**
* @var array
*/
@@ -43,19 +24,17 @@ final class JWEBuiltFailureEvent extends Event
*/
private $sharedHeader;
- /**
- * @var null|string
- */
- private $aad;
-
- public function __construct(?string $payload, array $recipients, array $sharedProtectedHeader, array $sharedHeader, ?string $aad, Throwable $throwable)
- {
- $this->throwable = $throwable;
- $this->payload = $payload;
+ public function __construct(
+ private ?string $payload,
+ array $recipients,
+ array $sharedProtectedHeader,
+ array $sharedHeader,
+ private ?string $aad,
+ private Throwable $throwable
+ ) {
$this->recipients = $recipients;
$this->sharedProtectedHeader = $sharedProtectedHeader;
$this->sharedHeader = $sharedHeader;
- $this->aad = $aad;
}
public function getPayload(): ?string
diff --git a/src/Bundle/JoseFramework/Event/JWEBuiltSuccessEvent.php b/src/Bundle/JoseFramework/Event/JWEBuiltSuccessEvent.php
index c98af437..9cb83944 100644
--- a/src/Bundle/JoseFramework/Event/JWEBuiltSuccessEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWEBuiltSuccessEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Encryption\JWE;
@@ -18,14 +9,9 @@
final class JWEBuiltSuccessEvent extends Event
{
- /**
- * @var JWE
- */
- private $jwe;
-
- public function __construct(JWE $jwe)
- {
- $this->jwe = $jwe;
+ public function __construct(
+ private JWE $jwe
+ ) {
}
public function getJwe(): JWE
diff --git a/src/Bundle/JoseFramework/Event/JWEDecryptionFailureEvent.php b/src/Bundle/JoseFramework/Event/JWEDecryptionFailureEvent.php
index 173b524e..a8fc345b 100644
--- a/src/Bundle/JoseFramework/Event/JWEDecryptionFailureEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWEDecryptionFailureEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWKSet;
@@ -19,20 +10,10 @@
final class JWEDecryptionFailureEvent extends Event
{
- /**
- * @var JWKSet
- */
- private $JWKSet;
-
- /**
- * @var JWE
- */
- private $jwe;
-
- public function __construct(JWE $jwe, JWKSet $JWKSet)
- {
- $this->JWKSet = $JWKSet;
- $this->jwe = $jwe;
+ public function __construct(
+ private JWE $jwe,
+ private JWKSet $JWKSet
+ ) {
}
public function getJWKSet(): JWKSet
diff --git a/src/Bundle/JoseFramework/Event/JWEDecryptionSuccessEvent.php b/src/Bundle/JoseFramework/Event/JWEDecryptionSuccessEvent.php
index f2c08006..619f364a 100644
--- a/src/Bundle/JoseFramework/Event/JWEDecryptionSuccessEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWEDecryptionSuccessEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWK;
@@ -20,32 +11,12 @@
final class JWEDecryptionSuccessEvent extends Event
{
- /**
- * @var JWE
- */
- private $jwe;
-
- /**
- * @var JWKSet
- */
- private $JWKSet;
-
- /**
- * @var JWK
- */
- private $JWK;
-
- /**
- * @var int
- */
- private $recipient;
-
- public function __construct(JWE $jwe, JWKSet $JWKSet, JWK $JWK, int $recipient)
- {
- $this->jwe = $jwe;
- $this->JWKSet = $JWKSet;
- $this->JWK = $JWK;
- $this->recipient = $recipient;
+ public function __construct(
+ private JWE $jwe,
+ private JWKSet $JWKSet,
+ private JWK $JWK,
+ private int $recipient
+ ) {
}
public function getJws(): JWE
diff --git a/src/Bundle/JoseFramework/Event/JWELoadingFailureEvent.php b/src/Bundle/JoseFramework/Event/JWELoadingFailureEvent.php
index c2bc6ffd..1c90b21a 100644
--- a/src/Bundle/JoseFramework/Event/JWELoadingFailureEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWELoadingFailureEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWKSet;
@@ -19,26 +10,11 @@
final class JWELoadingFailureEvent extends Event
{
- /**
- * @var JWKSet
- */
- private $JWKSet;
-
- /**
- * @var Throwable
- */
- private $throwable;
-
- /**
- * @var string
- */
- private $token;
-
- public function __construct(string $token, JWKSet $JWKSet, Throwable $throwable)
- {
- $this->JWKSet = $JWKSet;
- $this->throwable = $throwable;
- $this->token = $token;
+ public function __construct(
+ private string $token,
+ private JWKSet $JWKSet,
+ private Throwable $throwable
+ ) {
}
public function getJWKSet(): JWKSet
diff --git a/src/Bundle/JoseFramework/Event/JWELoadingSuccessEvent.php b/src/Bundle/JoseFramework/Event/JWELoadingSuccessEvent.php
index d27c9014..f0cd82e4 100644
--- a/src/Bundle/JoseFramework/Event/JWELoadingSuccessEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWELoadingSuccessEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWKSet;
@@ -19,32 +10,12 @@
final class JWELoadingSuccessEvent extends Event
{
- /**
- * @var JWE
- */
- private $jwe;
-
- /**
- * @var JWKSet
- */
- private $JWKSet;
-
- /**
- * @var int
- */
- private $recipient;
-
- /**
- * @var string
- */
- private $token;
-
- public function __construct(string $token, JWE $jwe, JWKSet $JWKSet, int $recipient)
- {
- $this->jwe = $jwe;
- $this->JWKSet = $JWKSet;
- $this->recipient = $recipient;
- $this->token = $token;
+ public function __construct(
+ private string $token,
+ private JWE $jwe,
+ private JWKSet $JWKSet,
+ private int $recipient
+ ) {
}
public function getJws(): JWE
diff --git a/src/Bundle/JoseFramework/Event/JWSBuiltFailureEvent.php b/src/Bundle/JoseFramework/Event/JWSBuiltFailureEvent.php
index 2d4a6e8a..464c49dc 100644
--- a/src/Bundle/JoseFramework/Event/JWSBuiltFailureEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWSBuiltFailureEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Symfony\Contracts\EventDispatcher\Event;
@@ -18,37 +9,19 @@
final class JWSBuiltFailureEvent extends Event
{
- /**
- * @var null|string
- */
- protected $payload;
-
- /**
- * @var bool
- */
- protected $isPayloadDetached;
-
/**
* @var array
*/
protected $signatures = [];
- /**
- * @var null|bool
- */
- protected $isPayloadEncoded;
- /**
- * @var Throwable
- */
- private $throwable;
-
- public function __construct(?string $payload, array $signatures, bool $isPayloadDetached, ?bool $isPayloadEncoded, Throwable $throwable)
- {
- $this->throwable = $throwable;
- $this->payload = $payload;
+ public function __construct(
+ protected ?string $payload,
+ array $signatures,
+ protected bool $isPayloadDetached,
+ protected ?bool $isPayloadEncoded,
+ private Throwable $throwable
+ ) {
$this->signatures = $signatures;
- $this->isPayloadDetached = $isPayloadDetached;
- $this->isPayloadEncoded = $isPayloadEncoded;
}
public function getPayload(): ?string
diff --git a/src/Bundle/JoseFramework/Event/JWSBuiltSuccessEvent.php b/src/Bundle/JoseFramework/Event/JWSBuiltSuccessEvent.php
index e7aae459..3c631cc5 100644
--- a/src/Bundle/JoseFramework/Event/JWSBuiltSuccessEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWSBuiltSuccessEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Signature\JWS;
@@ -18,14 +9,9 @@
final class JWSBuiltSuccessEvent extends Event
{
- /**
- * @var JWS
- */
- private $jws;
-
- public function __construct(JWS $jws)
- {
- $this->jws = $jws;
+ public function __construct(
+ private JWS $jws
+ ) {
}
public function getJws(): JWS
diff --git a/src/Bundle/JoseFramework/Event/JWSLoadingFailureEvent.php b/src/Bundle/JoseFramework/Event/JWSLoadingFailureEvent.php
index 3b8559dd..421423c1 100644
--- a/src/Bundle/JoseFramework/Event/JWSLoadingFailureEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWSLoadingFailureEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWKSet;
@@ -19,26 +10,11 @@
final class JWSLoadingFailureEvent extends Event
{
- /**
- * @var JWKSet
- */
- private $JWKSet;
-
- /**
- * @var Throwable
- */
- private $throwable;
-
- /**
- * @var string
- */
- private $token;
-
- public function __construct(string $token, JWKSet $JWKSet, Throwable $throwable)
- {
- $this->JWKSet = $JWKSet;
- $this->throwable = $throwable;
- $this->token = $token;
+ public function __construct(
+ private string $token,
+ private JWKSet $JWKSet,
+ private Throwable $throwable
+ ) {
}
public function getToken(): string
diff --git a/src/Bundle/JoseFramework/Event/JWSLoadingSuccessEvent.php b/src/Bundle/JoseFramework/Event/JWSLoadingSuccessEvent.php
index 8603f22f..f2e593c4 100644
--- a/src/Bundle/JoseFramework/Event/JWSLoadingSuccessEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWSLoadingSuccessEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWKSet;
@@ -19,32 +10,12 @@
final class JWSLoadingSuccessEvent extends Event
{
- /**
- * @var JWS
- */
- private $jws;
-
- /**
- * @var JWKSet
- */
- private $JWKSet;
-
- /**
- * @var int
- */
- private $signature;
-
- /**
- * @var string
- */
- private $token;
-
- public function __construct(string $token, JWS $jws, JWKSet $JWKSet, int $signature)
- {
- $this->jws = $jws;
- $this->JWKSet = $JWKSet;
- $this->signature = $signature;
- $this->token = $token;
+ public function __construct(
+ private string $token,
+ private JWS $jws,
+ private JWKSet $JWKSet,
+ private int $signature
+ ) {
}
public function getJws(): JWS
diff --git a/src/Bundle/JoseFramework/Event/JWSVerificationFailureEvent.php b/src/Bundle/JoseFramework/Event/JWSVerificationFailureEvent.php
index 5b05cbd0..b86e453b 100644
--- a/src/Bundle/JoseFramework/Event/JWSVerificationFailureEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWSVerificationFailureEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWKSet;
@@ -19,26 +10,11 @@
final class JWSVerificationFailureEvent extends Event
{
- /**
- * @var JWKSet
- */
- private $JWKSet;
-
- /**
- * @var null|string
- */
- private $detachedPayload;
-
- /**
- * @var JWS
- */
- private $jws;
-
- public function __construct(JWS $jws, JWKSet $JWKSet, ?string $detachedPayload)
- {
- $this->JWKSet = $JWKSet;
- $this->detachedPayload = $detachedPayload;
- $this->jws = $jws;
+ public function __construct(
+ private JWS $jws,
+ private JWKSet $JWKSet,
+ private ?string $detachedPayload
+ ) {
}
public function getJws(): JWS
diff --git a/src/Bundle/JoseFramework/Event/JWSVerificationSuccessEvent.php b/src/Bundle/JoseFramework/Event/JWSVerificationSuccessEvent.php
index 61373e72..921af3c9 100644
--- a/src/Bundle/JoseFramework/Event/JWSVerificationSuccessEvent.php
+++ b/src/Bundle/JoseFramework/Event/JWSVerificationSuccessEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWK;
@@ -20,38 +11,13 @@
final class JWSVerificationSuccessEvent extends Event
{
- /**
- * @var JWS
- */
- private $jws;
-
- /**
- * @var JWKSet
- */
- private $JWKSet;
-
- /**
- * @var JWK
- */
- private $JWK;
-
- /**
- * @var int
- */
- private $signature;
-
- /**
- * @var null|string
- */
- private $detachedPayload;
-
- public function __construct(JWS $jws, JWKSet $JWKSet, int $signature, ?string $detachedPayload, JWK $JWK)
- {
- $this->jws = $jws;
- $this->JWKSet = $JWKSet;
- $this->JWK = $JWK;
- $this->signature = $signature;
- $this->detachedPayload = $detachedPayload;
+ public function __construct(
+ private JWS $jws,
+ private JWKSet $JWKSet,
+ private int $signature,
+ private ?string $detachedPayload,
+ private JWK $JWK
+ ) {
}
public function getJws(): JWS
diff --git a/src/Bundle/JoseFramework/Event/NestedTokenIssuedEvent.php b/src/Bundle/JoseFramework/Event/NestedTokenIssuedEvent.php
index 4388f912..0a476cf4 100644
--- a/src/Bundle/JoseFramework/Event/NestedTokenIssuedEvent.php
+++ b/src/Bundle/JoseFramework/Event/NestedTokenIssuedEvent.php
@@ -2,29 +2,15 @@
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\Bundle\JoseFramework\Event;
use Symfony\Contracts\EventDispatcher\Event;
final class NestedTokenIssuedEvent extends Event
{
- /**
- * @var string
- */
- private $nestedToken;
-
- public function __construct(string $nestedToken)
- {
- $this->nestedToken = $nestedToken;
+ public function __construct(
+ private string $nestedToken
+ ) {
}
public function getNestedToken(): string
diff --git a/src/Bundle/JoseFramework/Event/NestedTokenLoadingFailureEvent.php b/src/Bundle/JoseFramework/Event/NestedTokenLoadingFailureEvent.php
index 9caedd20..6413af93 100644
--- a/src/Bundle/JoseFramework/Event/NestedTokenLoadingFailureEvent.php
+++ b/src/Bundle/JoseFramework/Event/NestedTokenLoadingFailureEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWKSet;
@@ -19,32 +10,12 @@
final class NestedTokenLoadingFailureEvent extends Event
{
- /**
- * @var Throwable
- */
- private $throwable;
-
- /**
- * @var string
- */
- private $token;
-
- /**
- * @var JWKSet
- */
- private $signatureKeySet;
-
- /**
- * @var JWKSet
- */
- private $encryptionKeySet;
-
- public function __construct(string $token, JWKSet $signatureKeySet, JWKSet $encryptionKeySet, Throwable $throwable)
- {
- $this->throwable = $throwable;
- $this->token = $token;
- $this->signatureKeySet = $signatureKeySet;
- $this->encryptionKeySet = $encryptionKeySet;
+ public function __construct(
+ private string $token,
+ private JWKSet $signatureKeySet,
+ private JWKSet $encryptionKeySet,
+ private Throwable $throwable
+ ) {
}
public function getToken(): string
diff --git a/src/Bundle/JoseFramework/Event/NestedTokenLoadingSuccessEvent.php b/src/Bundle/JoseFramework/Event/NestedTokenLoadingSuccessEvent.php
index 6763c76a..4d8e4dde 100644
--- a/src/Bundle/JoseFramework/Event/NestedTokenLoadingSuccessEvent.php
+++ b/src/Bundle/JoseFramework/Event/NestedTokenLoadingSuccessEvent.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Event;
use Jose\Component\Core\JWKSet;
@@ -19,38 +10,13 @@
final class NestedTokenLoadingSuccessEvent extends Event
{
- /**
- * @var JWS
- */
- private $jws;
-
- /**
- * @var int
- */
- private $signature;
-
- /**
- * @var string
- */
- private $token;
-
- /**
- * @var JWKSet
- */
- private $signatureKeySet;
-
- /**
- * @var JWKSet
- */
- private $encryptionKeySet;
-
- public function __construct(string $token, JWS $jws, JWKSet $signatureKeySet, JWKSet $encryptionKeySet, int $signature)
- {
- $this->jws = $jws;
- $this->signature = $signature;
- $this->token = $token;
- $this->signatureKeySet = $signatureKeySet;
- $this->encryptionKeySet = $encryptionKeySet;
+ public function __construct(
+ private string $token,
+ private JWS $jws,
+ private JWKSet $signatureKeySet,
+ private JWKSet $encryptionKeySet,
+ private int $signature
+ ) {
}
public function getJws(): JWS
diff --git a/src/Bundle/JoseFramework/Helper/ConfigurationHelper.php b/src/Bundle/JoseFramework/Helper/ConfigurationHelper.php
index 22f0e5da..67daca9f 100644
--- a/src/Bundle/JoseFramework/Helper/ConfigurationHelper.php
+++ b/src/Bundle/JoseFramework/Helper/ConfigurationHelper.php
@@ -2,17 +2,9 @@
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\Bundle\JoseFramework\Helper;
+use function is_array;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class ConfigurationHelper
@@ -22,8 +14,13 @@ class ConfigurationHelper
/**
* @param string[] $signatureAlgorithms
*/
- public static function addJWSBuilder(ContainerBuilder $container, string $name, array $signatureAlgorithms, bool $is_public = true, array $tags = []): void
- {
+ public static function addJWSBuilder(
+ ContainerBuilder $container,
+ string $name,
+ array $signatureAlgorithms,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'jws' => [
@@ -43,8 +40,13 @@ public static function addJWSBuilder(ContainerBuilder $container, string $name,
/**
* @param string[] $signatureAlgorithms
*/
- public static function addJWSVerifier(ContainerBuilder $container, string $name, array $signatureAlgorithms, bool $is_public = true, array $tags = []): void
- {
+ public static function addJWSVerifier(
+ ContainerBuilder $container,
+ string $name,
+ array $signatureAlgorithms,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'jws' => [
@@ -65,8 +67,13 @@ public static function addJWSVerifier(ContainerBuilder $container, string $name,
/**
* @param string[] $serializers
*/
- public static function addJWSSerializer(ContainerBuilder $container, string $name, array $serializers, bool $is_public = true, array $tags = []): void
- {
+ public static function addJWSSerializer(
+ ContainerBuilder $container,
+ string $name,
+ array $serializers,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'jws' => [
@@ -89,8 +96,15 @@ public static function addJWSSerializer(ContainerBuilder $container, string $nam
* @param string[] $signature_algorithms
* @param string[] $header_checkers
*/
- public static function addJWSLoader(ContainerBuilder $container, string $name, array $serializers, array $signature_algorithms, array $header_checkers, bool $is_public = true, array $tags = []): void
- {
+ public static function addJWSLoader(
+ ContainerBuilder $container,
+ string $name,
+ array $serializers,
+ array $signature_algorithms,
+ array $header_checkers,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'jws' => [
@@ -120,8 +134,20 @@ public static function addJWSLoader(ContainerBuilder $container, string $name, a
* @param string[] $signature_algorithms
* @param string[] $jws_header_checkers
*/
- public static function addNestedTokenLoader(ContainerBuilder $container, string $name, array $jwe_serializers, array $key_encryption_algorithms, array $content_encryption_algorithms, array $compression_methods, array $jwe_header_checkers, array $jws_serializers, array $signature_algorithms, array $jws_header_checkers, bool $is_public = true, array $tags = []): void
- {
+ public static function addNestedTokenLoader(
+ ContainerBuilder $container,
+ string $name,
+ array $jwe_serializers,
+ array $key_encryption_algorithms,
+ array $content_encryption_algorithms,
+ array $compression_methods,
+ array $jwe_header_checkers,
+ array $jws_serializers,
+ array $signature_algorithms,
+ array $jws_header_checkers,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'nested_token' => [
@@ -154,8 +180,18 @@ public static function addNestedTokenLoader(ContainerBuilder $container, string
* @param string[] $jws_serializers
* @param string[] $signature_algorithms
*/
- public static function addNestedTokenBuilder(ContainerBuilder $container, string $name, array $jwe_serializers, array $key_encryption_algorithms, array $content_encryption_algorithms, array $compression_methods, array $jws_serializers, array $signature_algorithms, bool $is_public = true, array $tags = []): void
- {
+ public static function addNestedTokenBuilder(
+ ContainerBuilder $container,
+ string $name,
+ array $jwe_serializers,
+ array $key_encryption_algorithms,
+ array $content_encryption_algorithms,
+ array $compression_methods,
+ array $jws_serializers,
+ array $signature_algorithms,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'nested_token' => [
@@ -181,8 +217,13 @@ public static function addNestedTokenBuilder(ContainerBuilder $container, string
/**
* @param string[] $serializers
*/
- public static function addJWESerializer(ContainerBuilder $container, string $name, array $serializers, bool $is_public = true, array $tags = []): void
- {
+ public static function addJWESerializer(
+ ContainerBuilder $container,
+ string $name,
+ array $serializers,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'jwe' => [
@@ -207,8 +248,17 @@ public static function addJWESerializer(ContainerBuilder $container, string $nam
* @param string[] $compression_methods
* @param string[] $header_checkers
*/
- public static function addJWELoader(ContainerBuilder $container, string $name, array $serializers, array $key_encryption_algorithms, array $content_encryption_algorithms, array $compression_methods, array $header_checkers, bool $is_public = true, array $tags = []): void
- {
+ public static function addJWELoader(
+ ContainerBuilder $container,
+ string $name,
+ array $serializers,
+ array $key_encryption_algorithms,
+ array $content_encryption_algorithms,
+ array $compression_methods,
+ array $header_checkers,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'jwe' => [
@@ -233,8 +283,13 @@ public static function addJWELoader(ContainerBuilder $container, string $name, a
/**
* @param string[] $claimCheckers
*/
- public static function addClaimChecker(ContainerBuilder $container, string $name, array $claimCheckers, bool $is_public = true, array $tags = []): void
- {
+ public static function addClaimChecker(
+ ContainerBuilder $container,
+ string $name,
+ array $claimCheckers,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'checkers' => [
@@ -255,8 +310,13 @@ public static function addClaimChecker(ContainerBuilder $container, string $name
/**
* @param string[] $headerCheckers
*/
- public static function addHeaderChecker(ContainerBuilder $container, string $name, array $headerCheckers, bool $is_public = true, array $tags = []): void
- {
+ public static function addHeaderChecker(
+ ContainerBuilder $container,
+ string $name,
+ array $headerCheckers,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'checkers' => [
@@ -274,8 +334,14 @@ public static function addHeaderChecker(ContainerBuilder $container, string $nam
self::updateJoseConfiguration($container, $config, 'checkers');
}
- public static function addKey(ContainerBuilder $container, string $name, string $type, array $parameters, bool $is_public = true, array $tags = []): void
- {
+ public static function addKey(
+ ContainerBuilder $container,
+ string $name,
+ string $type,
+ array $parameters,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$parameters['is_public'] = $is_public;
$parameters['tags'] = $tags;
$config = [
@@ -291,8 +357,14 @@ public static function addKey(ContainerBuilder $container, string $name, string
self::updateJoseConfiguration($container, $config, 'keys');
}
- public static function addKeyset(ContainerBuilder $container, string $name, string $type, array $parameters, bool $is_public = true, array $tags = []): void
- {
+ public static function addKeyset(
+ ContainerBuilder $container,
+ string $name,
+ string $type,
+ array $parameters,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$parameters['is_public'] = $is_public;
$parameters['tags'] = $tags;
$config = [
@@ -308,8 +380,13 @@ public static function addKeyset(ContainerBuilder $container, string $name, stri
self::updateJoseConfiguration($container, $config, 'key_sets');
}
- public static function addKeyUri(ContainerBuilder $container, string $name, array $parameters, bool $is_public = true, array $tags = []): void
- {
+ public static function addKeyUri(
+ ContainerBuilder $container,
+ string $name,
+ array $parameters,
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$parameters['is_public'] = $is_public;
$parameters['tags'] = $tags;
$config = [
@@ -323,8 +400,15 @@ public static function addKeyUri(ContainerBuilder $container, string $name, arra
self::updateJoseConfiguration($container, $config, 'jwk_uris');
}
- public static function addJWEBuilder(ContainerBuilder $container, string $name, array $keyEncryptionAlgorithm, array $contentEncryptionAlgorithms, array $compressionMethods = ['DEF'], bool $is_public = true, array $tags = []): void
- {
+ public static function addJWEBuilder(
+ ContainerBuilder $container,
+ string $name,
+ array $keyEncryptionAlgorithm,
+ array $contentEncryptionAlgorithms,
+ array $compressionMethods = ['DEF'],
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'jwe' => [
@@ -344,8 +428,15 @@ public static function addJWEBuilder(ContainerBuilder $container, string $name,
self::updateJoseConfiguration($container, $config, 'jwe');
}
- public static function addJWEDecrypter(ContainerBuilder $container, string $name, array $keyEncryptionAlgorithm, array $contentEncryptionAlgorithms, array $compressionMethods = ['DEF'], bool $is_public = true, array $tags = []): void
- {
+ public static function addJWEDecrypter(
+ ContainerBuilder $container,
+ string $name,
+ array $keyEncryptionAlgorithm,
+ array $contentEncryptionAlgorithms,
+ array $compressionMethods = ['DEF'],
+ bool $is_public = true,
+ array $tags = []
+ ): void {
$config = [
self::BUNDLE_ALIAS => [
'jwe' => [
@@ -368,7 +459,10 @@ public static function addJWEDecrypter(ContainerBuilder $container, string $name
private static function updateJoseConfiguration(ContainerBuilder $container, array $config, string $element): void
{
$jose_config = current($container->getExtensionConfig(self::BUNDLE_ALIAS));
- if (!isset($jose_config[$element])) {
+ if (! is_array($jose_config)) {
+ $jose_config = [];
+ }
+ if (! isset($jose_config[$element])) {
$jose_config[$element] = [];
}
$jose_config[$element] = array_merge($jose_config[$element], $config[self::BUNDLE_ALIAS][$element]);
diff --git a/src/Bundle/JoseFramework/JoseFrameworkBundle.php b/src/Bundle/JoseFramework/JoseFrameworkBundle.php
index ccca563a..9f71a015 100644
--- a/src/Bundle/JoseFramework/JoseFrameworkBundle.php
+++ b/src/Bundle/JoseFramework/JoseFrameworkBundle.php
@@ -2,21 +2,20 @@
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\Bundle\JoseFramework;
use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\EventDispatcherAliasCompilerPass;
use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\SymfonySerializerCompilerPass;
use Jose\Bundle\JoseFramework\DependencyInjection\JoseFrameworkExtension;
use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Checker\CheckerSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Console\ConsoleSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Encryption\EncryptionSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\KeyManagementSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\NestedToken\NestedToken;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Signature\SignatureSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\SourceWithCompilerPasses;
use Symfony\Component\DependencyInjection\Compiler\PassConfig;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
@@ -27,7 +26,7 @@ final class JoseFrameworkBundle extends Bundle
/**
* @var Source\Source[]
*/
- private $sources = [];
+ private array $sources = [];
public function __construct()
{
@@ -45,7 +44,7 @@ public function build(ContainerBuilder $container): void
{
parent::build($container);
foreach ($this->sources as $source) {
- if ($source instanceof Source\SourceWithCompilerPasses) {
+ if ($source instanceof SourceWithCompilerPasses) {
$compilerPasses = $source->getCompilerPasses();
foreach ($compilerPasses as $compilerPass) {
$container->addCompilerPass($compilerPass);
@@ -63,13 +62,13 @@ public function build(ContainerBuilder $container): void
private function getSources(): iterable
{
return [
- new Source\Core\CoreSource(),
- new Source\Checker\CheckerSource(),
- new Source\Console\ConsoleSource(),
- new Source\Signature\SignatureSource(),
- new Source\Encryption\EncryptionSource(),
- new Source\NestedToken\NestedToken(),
- new Source\KeyManagement\KeyManagementSource(),
+ new CoreSource(),
+ new CheckerSource(),
+ new ConsoleSource(),
+ new SignatureSource(),
+ new EncryptionSource(),
+ new NestedToken(),
+ new KeyManagementSource(),
];
}
}
diff --git a/src/Bundle/JoseFramework/Normalizer/JWENormalizer.php b/src/Bundle/JoseFramework/Normalizer/JWENormalizer.php
index 3ccaa6bd..28d2c016 100644
--- a/src/Bundle/JoseFramework/Normalizer/JWENormalizer.php
+++ b/src/Bundle/JoseFramework/Normalizer/JWENormalizer.php
@@ -2,17 +2,9 @@
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\Bundle\JoseFramework\Normalizer;
+use ArrayObject;
use Jose\Component\Encryption\JWE;
use Jose\Component\Encryption\Serializer\JWESerializerManager;
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
@@ -23,7 +15,7 @@ final class JWENormalizer implements NormalizerInterface, DenormalizerInterface
/**
* {@inheritDoc}
*/
- public function supportsNormalization($data, $format = null)
+ public function supportsNormalization(mixed $data, string $format = null): bool
{
return $data instanceof JWE && $this->componentInstalled();
}
@@ -31,16 +23,19 @@ public function supportsNormalization($data, $format = null)
/**
* {@inheritDoc}
*/
- public function supportsDenormalization($data, $type, $format = null)
+ public function supportsDenormalization(mixed $data, string $type, string $format = null): bool
{
- return JWE::class === $type && $this->componentInstalled();
+ return $type === JWE::class && $this->componentInstalled();
}
/**
* {@inheritDoc}
*/
- public function normalize($object, $format = null, array $context = [])
- {
+ public function normalize(
+ mixed $object,
+ string $format = null,
+ array $context = []
+ ): array|string|int|float|bool|ArrayObject|null {
return $object;
}
@@ -51,7 +46,7 @@ public function normalize($object, $format = null, array $context = [])
*
* @return array|object
*/
- public function denormalize($data, $type, $format = null, array $context = [])
+ public function denormalize(mixed $data, string $type, string $format = null, array $context = []): mixed
{
return $data;
}
diff --git a/src/Bundle/JoseFramework/Normalizer/JWSNormalizer.php b/src/Bundle/JoseFramework/Normalizer/JWSNormalizer.php
index 5c0c7922..bd0b32ca 100644
--- a/src/Bundle/JoseFramework/Normalizer/JWSNormalizer.php
+++ b/src/Bundle/JoseFramework/Normalizer/JWSNormalizer.php
@@ -2,17 +2,9 @@
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\Bundle\JoseFramework\Normalizer;
+use ArrayObject;
use Jose\Component\Signature\JWS;
use Jose\Component\Signature\Serializer\JWSSerializerManager;
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
@@ -20,30 +12,25 @@
final class JWSNormalizer implements NormalizerInterface, DenormalizerInterface
{
- public function supportsNormalization($data, $format = null)
+ public function supportsNormalization(mixed $data, string $format = null): bool
{
return $data instanceof JWS && $this->componentInstalled();
}
- public function supportsDenormalization($data, $type, $format = null)
+ public function supportsDenormalization(mixed $data, string $type, string $format = null): bool
{
- return JWS::class === $type && $this->componentInstalled();
+ return $type === JWS::class && $this->componentInstalled();
}
- public function normalize($object, $format = null, array $context = [])
- {
+ public function normalize(
+ mixed $object,
+ string $format = null,
+ array $context = []
+ ): array|string|int|float|bool|ArrayObject|null {
return $object;
}
- /**
- * @param mixed $data Data to restore
- * @param string $type The expected class to instantiate
- * @param string $format Format the given data was extracted from
- * @param array $context Options available to the denormalizer
- *
- * @return array|object
- */
- public function denormalize($data, $type, $format = null, array $context = [])
+ public function denormalize(mixed $data, string $type, string $format = null, array $context = []): mixed
{
return $data;
}
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aescbc.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aescbc.php
index d0d02f0c..75e39c53 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aescbc.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aescbc.php
@@ -2,6 +2,9 @@
declare(strict_types=1);
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A128CBCHS256;
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A192CBCHS384;
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A256CBCHS512;
/*
* The MIT License (MIT)
*
@@ -11,25 +14,31 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Algorithm\ContentEncryption;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(ContentEncryption\A128CBCHS256::class)
- ->tag('jose.algorithm', ['alias' => 'A128CBC-HS256'])
+ $container->set(A128CBCHS256::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A128CBC-HS256',
+ ])
;
- $container->set(ContentEncryption\A192CBCHS384::class)
- ->tag('jose.algorithm', ['alias' => 'A192CBC-HS384'])
+ $container->set(A192CBCHS384::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A192CBC-HS384',
+ ])
;
- $container->set(ContentEncryption\A256CBCHS512::class)
- ->tag('jose.algorithm', ['alias' => 'A256CBC-HS512'])
+ $container->set(A256CBCHS512::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A256CBC-HS512',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcm.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcm.php
index 36c74daa..7ba3daac 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcm.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcm.php
@@ -2,6 +2,9 @@
declare(strict_types=1);
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A128GCM;
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A192GCM;
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A256GCM;
/*
* The MIT License (MIT)
*
@@ -11,25 +14,31 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Algorithm\ContentEncryption;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(ContentEncryption\A128GCM::class)
- ->tag('jose.algorithm', ['alias' => 'A128GCM'])
+ $container->set(A128GCM::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A128GCM',
+ ])
;
- $container->set(ContentEncryption\A192GCM::class)
- ->tag('jose.algorithm', ['alias' => 'A192GCM'])
+ $container->set(A192GCM::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A192GCM',
+ ])
;
- $container->set(ContentEncryption\A256GCM::class)
- ->tag('jose.algorithm', ['alias' => 'A256GCM'])
+ $container->set(A256GCM::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A256GCM',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcmkw.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcmkw.php
index 299e60c5..194fce9b 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcmkw.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcmkw.php
@@ -2,6 +2,9 @@
declare(strict_types=1);
+use Jose\Component\Encryption\Algorithm\KeyEncryption\A128GCMKW;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\A192GCMKW;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\A256GCMKW;
/*
* The MIT License (MIT)
*
@@ -11,25 +14,31 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Algorithm\KeyEncryption;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(KeyEncryption\A128GCMKW::class)
- ->tag('jose.algorithm', ['alias' => 'A128GCMKW'])
+ $container->set(A128GCMKW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A128GCMKW',
+ ])
;
- $container->set(KeyEncryption\A192GCMKW::class)
- ->tag('jose.algorithm', ['alias' => 'A192GCMKW'])
+ $container->set(A192GCMKW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A192GCMKW',
+ ])
;
- $container->set(KeyEncryption\A256GCMKW::class)
- ->tag('jose.algorithm', ['alias' => 'A256GCMKW'])
+ $container->set(A256GCMKW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A256GCMKW',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aeskw.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aeskw.php
index fa9112fb..f7498625 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aeskw.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aeskw.php
@@ -2,6 +2,9 @@
declare(strict_types=1);
+use Jose\Component\Encryption\Algorithm\KeyEncryption\A128KW;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\A192KW;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\A256KW;
/*
* The MIT License (MIT)
*
@@ -11,25 +14,31 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Algorithm\KeyEncryption;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(KeyEncryption\A128KW::class)
- ->tag('jose.algorithm', ['alias' => 'A128KW'])
+ $container->set(A128KW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A128KW',
+ ])
;
- $container->set(KeyEncryption\A192KW::class)
- ->tag('jose.algorithm', ['alias' => 'A192KW'])
+ $container->set(A192KW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A192KW',
+ ])
;
- $container->set(KeyEncryption\A256KW::class)
- ->tag('jose.algorithm', ['alias' => 'A256KW'])
+ $container->set(A256KW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A256KW',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_dir.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_dir.php
index 300eb1c0..aa869f4c 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_dir.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_dir.php
@@ -2,6 +2,7 @@
declare(strict_types=1);
+use Jose\Component\Encryption\Algorithm\KeyEncryption\Dir;
/*
* The MIT License (MIT)
*
@@ -11,17 +12,19 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Algorithm\KeyEncryption;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(KeyEncryption\Dir::class)
- ->tag('jose.algorithm', ['alias' => 'dir'])
+ $container->set(Dir::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'dir',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_ecdhes.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_ecdhes.php
index 2a53eb4e..bf66d814 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_ecdhes.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_ecdhes.php
@@ -2,6 +2,10 @@
declare(strict_types=1);
+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;
/*
* The MIT License (MIT)
*
@@ -11,29 +15,37 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Algorithm\KeyEncryption;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(KeyEncryption\ECDHES::class)
- ->tag('jose.algorithm', ['alias' => 'ECDH-ES'])
+ $container->set(ECDHES::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'ECDH-ES',
+ ])
;
- $container->set(KeyEncryption\ECDHESA128KW::class)
- ->tag('jose.algorithm', ['alias' => 'ECDH-ES+A128KW'])
+ $container->set(ECDHESA128KW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'ECDH-ES+A128KW',
+ ])
;
- $container->set(KeyEncryption\ECDHESA192KW::class)
- ->tag('jose.algorithm', ['alias' => 'ECDH-ES+A192KW'])
+ $container->set(ECDHESA192KW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'ECDH-ES+A192KW',
+ ])
;
- $container->set(KeyEncryption\ECDHESA256KW::class)
- ->tag('jose.algorithm', ['alias' => 'ECDH-ES+A256KW'])
+ $container->set(ECDHESA256KW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'ECDH-ES+A256KW',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental.php
index eb9a163e..22287b9d 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental.php
@@ -2,6 +2,19 @@
declare(strict_types=1);
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A128CCM_16_128;
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A128CCM_16_64;
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A128CCM_64_128;
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A128CCM_64_64;
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A256CCM_16_128;
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A256CCM_16_64;
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A256CCM_64_128;
+use Jose\Component\Encryption\Algorithm\ContentEncryption\A256CCM_64_64;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\A128CTR;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\A192CTR;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\A256CTR;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\RSAOAEP384;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\RSAOAEP512;
/*
* The MIT License (MIT)
*
@@ -11,8 +24,6 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Algorithm\ContentEncryption;
-use Jose\Component\Encryption\Algorithm\KeyEncryption;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
/*
@@ -24,61 +35,88 @@
* ------------------------
*/
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(KeyEncryption\A128CTR::class)
- ->tag('jose.algorithm', ['alias' => 'A128CTR'])
+ $container->set(A128CTR::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A128CTR',
+ ])
;
- $container->set(KeyEncryption\A192CTR::class)
- ->tag('jose.algorithm', ['alias' => 'A192CTR'])
+ $container->set(A192CTR::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A192CTR',
+ ])
;
- $container->set(KeyEncryption\A256CTR::class)
- ->tag('jose.algorithm', ['alias' => 'A256CTR'])
+ $container->set(A256CTR::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A256CTR',
+ ])
;
- $container->set(KeyEncryption\RSAOAEP384::class)
- ->tag('jose.algorithm', ['alias' => 'RSA-OAEP-384'])
+ $container->set(RSAOAEP384::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'RSA-OAEP-384',
+ ])
;
- $container->set(KeyEncryption\RSAOAEP512::class)
- ->tag('jose.algorithm', ['alias' => 'RSA-OAEP-512'])
+ $container->set(RSAOAEP512::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'RSA-OAEP-512',
+ ])
;
- $container->set(ContentEncryption\A128CCM_16_64::class)
- ->tag('jose.algorithm', ['alias' => 'A128CCM-16-64'])
+ $container->set(A128CCM_16_64::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A128CCM-16-64',
+ ])
;
- $container->set(ContentEncryption\A128CCM_16_128::class)
- ->tag('jose.algorithm', ['alias' => 'A128CCM-16-128'])
+ $container->set(A128CCM_16_128::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A128CCM-16-128',
+ ])
;
- $container->set(ContentEncryption\A128CCM_64_64::class)
- ->tag('jose.algorithm', ['alias' => 'A128CCM-64-64'])
+ $container->set(A128CCM_64_64::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A128CCM-64-64',
+ ])
;
- $container->set(ContentEncryption\A128CCM_64_128::class)
- ->tag('jose.algorithm', ['alias' => 'A128CCM-64-128'])
+ $container->set(A128CCM_64_128::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A128CCM-64-128',
+ ])
;
- $container->set(ContentEncryption\A256CCM_16_64::class)
- ->tag('jose.algorithm', ['alias' => 'A256CCM-16-64'])
+ $container->set(A256CCM_16_64::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A256CCM-16-64',
+ ])
;
- $container->set(ContentEncryption\A256CCM_16_128::class)
- ->tag('jose.algorithm', ['alias' => 'A256CCM-16-128'])
+ $container->set(A256CCM_16_128::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A256CCM-16-128',
+ ])
;
- $container->set(ContentEncryption\A256CCM_64_64::class)
- ->tag('jose.algorithm', ['alias' => 'A256CCM-64-64'])
+ $container->set(A256CCM_64_64::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A256CCM-64-64',
+ ])
;
- $container->set(ContentEncryption\A256CCM_64_128::class)
- ->tag('jose.algorithm', ['alias' => 'A256CCM-64-128'])
+ $container->set(A256CCM_64_128::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'A256CCM-64-128',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental_chacha20_poly1305.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental_chacha20_poly1305.php
index 2228f30b..eb0c8fd7 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental_chacha20_poly1305.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental_chacha20_poly1305.php
@@ -2,6 +2,7 @@
declare(strict_types=1);
+use Jose\Component\Encryption\Algorithm\KeyEncryption\Chacha20Poly1305;
/*
* The MIT License (MIT)
*
@@ -11,7 +12,6 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Algorithm\KeyEncryption;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
/*
@@ -23,13 +23,16 @@
* ------------------------
*/
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(KeyEncryption\Chacha20Poly1305::class)
- ->tag('jose.algorithm', ['alias' => 'chacha20-poly1305'])
+ $container->set(Chacha20Poly1305::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'chacha20-poly1305',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_pbes2.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_pbes2.php
index a05d2873..988ec56c 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_pbes2.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_pbes2.php
@@ -2,6 +2,9 @@
declare(strict_types=1);
+use Jose\Component\Encryption\Algorithm\KeyEncryption\PBES2HS256A128KW;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\PBES2HS384A192KW;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\PBES2HS512A256KW;
/*
* The MIT License (MIT)
*
@@ -11,25 +14,31 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Algorithm\KeyEncryption;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(KeyEncryption\PBES2HS256A128KW::class)
- ->tag('jose.algorithm', ['alias' => 'PBES2-HS256+A128KW'])
+ $container->set(PBES2HS256A128KW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'PBES2-HS256+A128KW',
+ ])
;
- $container->set(KeyEncryption\PBES2HS384A192KW::class)
- ->tag('jose.algorithm', ['alias' => 'PBES2-HS384+A192KW'])
+ $container->set(PBES2HS384A192KW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'PBES2-HS384+A192KW',
+ ])
;
- $container->set(KeyEncryption\PBES2HS512A256KW::class)
- ->tag('jose.algorithm', ['alias' => 'PBES2-HS512+A256KW'])
+ $container->set(PBES2HS512A256KW::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'PBES2-HS512+A256KW',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_rsa.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_rsa.php
index e7cc0b9a..7b91af98 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_rsa.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_rsa.php
@@ -2,6 +2,9 @@
declare(strict_types=1);
+use Jose\Component\Encryption\Algorithm\KeyEncryption\RSA15;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\RSAOAEP;
+use Jose\Component\Encryption\Algorithm\KeyEncryption\RSAOAEP256;
/*
* The MIT License (MIT)
*
@@ -11,25 +14,31 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Algorithm\KeyEncryption;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(KeyEncryption\RSA15::class)
- ->tag('jose.algorithm', ['alias' => 'RSA1_5'])
+ $container->set(RSA15::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'RSA1_5',
+ ])
;
- $container->set(KeyEncryption\RSAOAEP::class)
- ->tag('jose.algorithm', ['alias' => 'RSA-OAEP'])
+ $container->set(RSAOAEP::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'RSA-OAEP',
+ ])
;
- $container->set(KeyEncryption\RSAOAEP256::class)
- ->tag('jose.algorithm', ['alias' => 'RSA-OAEP-256'])
+ $container->set(RSAOAEP256::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'RSA-OAEP-256',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_ecdsa.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_ecdsa.php
index f12f776f..ce1c15dc 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_ecdsa.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_ecdsa.php
@@ -2,6 +2,9 @@
declare(strict_types=1);
+use Jose\Component\Signature\Algorithm\ES256;
+use Jose\Component\Signature\Algorithm\ES384;
+use Jose\Component\Signature\Algorithm\ES512;
/*
* The MIT License (MIT)
*
@@ -11,25 +14,31 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Signature\Algorithm;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Algorithm\ES256::class)
- ->tag('jose.algorithm', ['alias' => 'ES256'])
+ $container->set(ES256::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'ES256',
+ ])
;
- $container->set(Algorithm\ES384::class)
- ->tag('jose.algorithm', ['alias' => 'ES384'])
+ $container->set(ES384::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'ES384',
+ ])
;
- $container->set(Algorithm\ES512::class)
- ->tag('jose.algorithm', ['alias' => 'ES512'])
+ $container->set(ES512::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'ES512',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_eddsa.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_eddsa.php
index 5152e89e..859f951d 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_eddsa.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_eddsa.php
@@ -2,6 +2,7 @@
declare(strict_types=1);
+use Jose\Component\Signature\Algorithm\EdDSA;
/*
* The MIT License (MIT)
*
@@ -11,17 +12,19 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Signature\Algorithm;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Algorithm\EdDSA::class)
- ->tag('jose.algorithm', ['alias' => 'EdDSA'])
+ $container->set(EdDSA::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'EdDSA',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_experimental.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_experimental.php
index fc464eaf..13abbe6f 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_experimental.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_experimental.php
@@ -2,6 +2,10 @@
declare(strict_types=1);
+use Jose\Component\Signature\Algorithm\ES256K;
+use Jose\Component\Signature\Algorithm\HS1;
+use Jose\Component\Signature\Algorithm\HS256_64;
+use Jose\Component\Signature\Algorithm\RS1;
/*
* The MIT License (MIT)
*
@@ -11,7 +15,6 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Signature\Algorithm;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
/*
@@ -23,25 +26,34 @@
* ------------------------
*/
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Algorithm\RS1::class)
- ->tag('jose.algorithm', ['alias' => 'RS1'])
+ $container->set(RS1::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'RS1',
+ ])
;
- $container->set(Algorithm\HS1::class)
- ->tag('jose.algorithm', ['alias' => 'HS1'])
+ $container->set(HS1::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'HS1',
+ ])
;
- $container->set(Algorithm\HS256_64::class)
- ->tag('jose.algorithm', ['alias' => 'HS256/64'])
+ $container->set(HS256_64::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'HS256/64',
+ ])
;
- $container->set(Algorithm\ES256K::class)
- ->tag('jose.algorithm', ['alias' => 'ES256K'])
+ $container->set(ES256K::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'ES256K',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_hmac.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_hmac.php
index 8e4f032d..ad52d409 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_hmac.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_hmac.php
@@ -2,6 +2,9 @@
declare(strict_types=1);
+use Jose\Component\Signature\Algorithm\HS256;
+use Jose\Component\Signature\Algorithm\HS384;
+use Jose\Component\Signature\Algorithm\HS512;
/*
* The MIT License (MIT)
*
@@ -11,25 +14,31 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Signature\Algorithm;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Algorithm\HS256::class)
- ->tag('jose.algorithm', ['alias' => 'HS256'])
+ $container->set(HS256::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'HS256',
+ ])
;
- $container->set(Algorithm\HS384::class)
- ->tag('jose.algorithm', ['alias' => 'HS384'])
+ $container->set(HS384::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'HS384',
+ ])
;
- $container->set(Algorithm\HS512::class)
- ->tag('jose.algorithm', ['alias' => 'HS512'])
+ $container->set(HS512::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'HS512',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_none.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_none.php
index 75188796..61fc8727 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_none.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_none.php
@@ -2,6 +2,7 @@
declare(strict_types=1);
+use Jose\Component\Signature\Algorithm\None;
/*
* The MIT License (MIT)
*
@@ -11,17 +12,19 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Signature\Algorithm;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Algorithm\None::class)
- ->tag('jose.algorithm', ['alias' => 'none'])
+ $container->set(None::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'none',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_rsa.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_rsa.php
index ccbb4462..79372acf 100644
--- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_rsa.php
+++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_rsa.php
@@ -2,6 +2,12 @@
declare(strict_types=1);
+use Jose\Component\Signature\Algorithm\PS256;
+use Jose\Component\Signature\Algorithm\PS384;
+use Jose\Component\Signature\Algorithm\PS512;
+use Jose\Component\Signature\Algorithm\RS256;
+use Jose\Component\Signature\Algorithm\RS384;
+use Jose\Component\Signature\Algorithm\RS512;
/*
* The MIT License (MIT)
*
@@ -11,37 +17,49 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Signature\Algorithm;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Algorithm\RS256::class)
- ->tag('jose.algorithm', ['alias' => 'RS256'])
+ $container->set(RS256::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'RS256',
+ ])
;
- $container->set(Algorithm\RS384::class)
- ->tag('jose.algorithm', ['alias' => 'RS384'])
+ $container->set(RS384::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'RS384',
+ ])
;
- $container->set(Algorithm\RS512::class)
- ->tag('jose.algorithm', ['alias' => 'RS512'])
+ $container->set(RS512::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'RS512',
+ ])
;
- $container->set(Algorithm\PS256::class)
- ->tag('jose.algorithm', ['alias' => 'PS256'])
+ $container->set(PS256::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'PS256',
+ ])
;
- $container->set(Algorithm\PS384::class)
- ->tag('jose.algorithm', ['alias' => 'PS384'])
+ $container->set(PS384::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'PS384',
+ ])
;
- $container->set(Algorithm\PS512::class)
- ->tag('jose.algorithm', ['alias' => 'PS512'])
+ $container->set(PS512::class)
+ ->tag('jose.algorithm', [
+ 'alias' => 'PS512',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/analyzers.php b/src/Bundle/JoseFramework/Resources/config/analyzers.php
index 5e18c168..e2b04d16 100644
--- a/src/Bundle/JoseFramework/Resources/config/analyzers.php
+++ b/src/Bundle/JoseFramework/Resources/config/analyzers.php
@@ -2,6 +2,22 @@
declare(strict_types=1);
+use Jose\Component\Core\Util\Ecc\NistCurve;
+use Jose\Component\KeyManagement\Analyzer\AlgorithmAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\ES256KeyAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\ES384KeyAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\ES512KeyAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\HS256KeyAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\HS384KeyAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\HS512KeyAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\KeyAnalyzerManager;
+use Jose\Component\KeyManagement\Analyzer\KeyIdentifierAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\KeysetAnalyzerManager;
+use Jose\Component\KeyManagement\Analyzer\MixedKeyTypes;
+use Jose\Component\KeyManagement\Analyzer\MixedPublicAndPrivateKeys;
+use Jose\Component\KeyManagement\Analyzer\NoneAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\OctAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\UsageAnalyzer;
/*
* The MIT License (MIT)
*
@@ -11,44 +27,44 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Core\Util\Ecc\NistCurve;
-use Jose\Component\KeyManagement\Analyzer;
+use Jose\Component\KeyManagement\Analyzer\ZxcvbnKeyAnalyzer;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use ZxcvbnPhp\Zxcvbn;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Analyzer\KeyAnalyzerManager::class)
+ $container->set(KeyAnalyzerManager::class)
->public()
;
- $container->set(Analyzer\KeysetAnalyzerManager::class)
+ $container->set(KeysetAnalyzerManager::class)
->public()
;
- $container->set(Analyzer\AlgorithmAnalyzer::class);
- $container->set(Analyzer\UsageAnalyzer::class);
- $container->set(Analyzer\KeyIdentifierAnalyzer::class);
- $container->set(Analyzer\NoneAnalyzer::class);
- $container->set(Analyzer\OctAnalyzer::class);
- $container->set(Analyzer\MixedKeyTypes::class);
- $container->set(Analyzer\MixedPublicAndPrivateKeys::class);
- $container->set(Analyzer\HS256KeyAnalyzer::class);
- $container->set(Analyzer\HS384KeyAnalyzer::class);
- $container->set(Analyzer\HS512KeyAnalyzer::class);
+ $container->set(AlgorithmAnalyzer::class);
+ $container->set(UsageAnalyzer::class);
+ $container->set(KeyIdentifierAnalyzer::class);
+ $container->set(NoneAnalyzer::class);
+ $container->set(OctAnalyzer::class);
+ $container->set(MixedKeyTypes::class);
+ $container->set(MixedPublicAndPrivateKeys::class);
+ $container->set(HS256KeyAnalyzer::class);
+ $container->set(HS384KeyAnalyzer::class);
+ $container->set(HS512KeyAnalyzer::class);
if (class_exists(NistCurve::class)) {
- $container->set(Analyzer\ES256KeyAnalyzer::class);
- $container->set(Analyzer\ES384KeyAnalyzer::class);
- $container->set(Analyzer\ES512KeyAnalyzer::class);
+ $container->set(ES256KeyAnalyzer::class);
+ $container->set(ES384KeyAnalyzer::class);
+ $container->set(ES512KeyAnalyzer::class);
}
if (class_exists(Zxcvbn::class)) {
- $container->set(Analyzer\ZxcvbnKeyAnalyzer::class);
+ $container->set(ZxcvbnKeyAnalyzer::class);
}
};
diff --git a/src/Bundle/JoseFramework/Resources/config/checkers.php b/src/Bundle/JoseFramework/Resources/config/checkers.php
index cbb02e7f..814b84f2 100644
--- a/src/Bundle/JoseFramework/Resources/config/checkers.php
+++ b/src/Bundle/JoseFramework/Resources/config/checkers.php
@@ -2,6 +2,11 @@
declare(strict_types=1);
+use Jose\Bundle\JoseFramework\Services\ClaimCheckerManagerFactory;
+use Jose\Bundle\JoseFramework\Services\HeaderCheckerManagerFactory;
+use Jose\Component\Checker\ExpirationTimeChecker;
+use Jose\Component\Checker\IssuedAtChecker;
+use Jose\Component\Checker\NotBeforeChecker;
/*
* The MIT License (MIT)
*
@@ -11,34 +16,39 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Bundle\JoseFramework\Services;
-use Jose\Component\Checker;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Services\HeaderCheckerManagerFactory::class)
+ $container->set(HeaderCheckerManagerFactory::class)
->public()
;
- $container->set(Services\ClaimCheckerManagerFactory::class)
+ $container->set(ClaimCheckerManagerFactory::class)
->public()
;
- $container->set(Checker\ExpirationTimeChecker::class)
- ->tag('jose.checker.claim', ['alias' => 'exp'])
+ $container->set(ExpirationTimeChecker::class)
+ ->tag('jose.checker.claim', [
+ 'alias' => 'exp',
+ ])
;
- $container->set(Checker\IssuedAtChecker::class)
- ->tag('jose.checker.claim', ['alias' => 'iat'])
+ $container->set(IssuedAtChecker::class)
+ ->tag('jose.checker.claim', [
+ 'alias' => 'iat',
+ ])
;
- $container->set(Checker\NotBeforeChecker::class)
- ->tag('jose.checker.claim', ['alias' => 'nbf'])
+ $container->set(NotBeforeChecker::class)
+ ->tag('jose.checker.claim', [
+ 'alias' => 'nbf',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/commands.php b/src/Bundle/JoseFramework/Resources/config/commands.php
index 5299c33e..e6660562 100644
--- a/src/Bundle/JoseFramework/Resources/config/commands.php
+++ b/src/Bundle/JoseFramework/Resources/config/commands.php
@@ -2,6 +2,29 @@
declare(strict_types=1);
+use Jose\Component\Console\AddKeyIntoKeysetCommand;
+use Jose\Component\Console\EcKeyGeneratorCommand;
+use Jose\Component\Console\EcKeysetGeneratorCommand;
+use Jose\Component\Console\GetThumbprintCommand;
+use Jose\Component\Console\KeyAnalyzerCommand;
+use Jose\Component\Console\KeyFileLoaderCommand;
+use Jose\Component\Console\KeysetAnalyzerCommand;
+use Jose\Component\Console\MergeKeysetCommand;
+use Jose\Component\Console\NoneKeyGeneratorCommand;
+use Jose\Component\Console\OctKeyGeneratorCommand;
+use Jose\Component\Console\OctKeysetGeneratorCommand;
+use Jose\Component\Console\OkpKeyGeneratorCommand;
+use Jose\Component\Console\OkpKeysetGeneratorCommand;
+use Jose\Component\Console\OptimizeRsaKeyCommand;
+use Jose\Component\Console\P12CertificateLoaderCommand;
+use Jose\Component\Console\PemConverterCommand;
+use Jose\Component\Console\PublicKeyCommand;
+use Jose\Component\Console\PublicKeysetCommand;
+use Jose\Component\Console\RotateKeysetCommand;
+use Jose\Component\Console\RsaKeyGeneratorCommand;
+use Jose\Component\Console\RsaKeysetGeneratorCommand;
+use Jose\Component\Console\SecretKeyGeneratorCommand;
+use Jose\Component\Console\X509CertificateLoaderCommand;
/*
* The MIT License (MIT)
*
@@ -11,37 +34,37 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Console;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Console\AddKeyIntoKeysetCommand::class);
- $container->set(Console\EcKeyGeneratorCommand::class);
- $container->set(Console\EcKeysetGeneratorCommand::class);
- $container->set(Console\GetThumbprintCommand::class);
- $container->set(Console\OptimizeRsaKeyCommand::class);
- $container->set(Console\KeyAnalyzerCommand::class);
- $container->set(Console\KeyFileLoaderCommand::class);
- $container->set(Console\KeysetAnalyzerCommand::class);
- $container->set(Console\MergeKeysetCommand::class);
- $container->set(Console\NoneKeyGeneratorCommand::class);
- $container->set(Console\OctKeyGeneratorCommand::class);
- $container->set(Console\OctKeysetGeneratorCommand::class);
- $container->set(Console\OkpKeyGeneratorCommand::class);
- $container->set(Console\OkpKeysetGeneratorCommand::class);
- $container->set(Console\P12CertificateLoaderCommand::class);
- $container->set(Console\PemConverterCommand::class);
- $container->set(Console\PublicKeyCommand::class);
- $container->set(Console\PublicKeysetCommand::class);
- $container->set(Console\RotateKeysetCommand::class);
- $container->set(Console\RsaKeyGeneratorCommand::class);
- $container->set(Console\RsaKeysetGeneratorCommand::class);
- $container->set(Console\SecretKeyGeneratorCommand::class);
- $container->set(Console\X509CertificateLoaderCommand::class);
+ $container->set(AddKeyIntoKeysetCommand::class);
+ $container->set(EcKeyGeneratorCommand::class);
+ $container->set(EcKeysetGeneratorCommand::class);
+ $container->set(GetThumbprintCommand::class);
+ $container->set(OptimizeRsaKeyCommand::class);
+ $container->set(KeyAnalyzerCommand::class);
+ $container->set(KeyFileLoaderCommand::class);
+ $container->set(KeysetAnalyzerCommand::class);
+ $container->set(MergeKeysetCommand::class);
+ $container->set(NoneKeyGeneratorCommand::class);
+ $container->set(OctKeyGeneratorCommand::class);
+ $container->set(OctKeysetGeneratorCommand::class);
+ $container->set(OkpKeyGeneratorCommand::class);
+ $container->set(OkpKeysetGeneratorCommand::class);
+ $container->set(P12CertificateLoaderCommand::class);
+ $container->set(PemConverterCommand::class);
+ $container->set(PublicKeyCommand::class);
+ $container->set(PublicKeysetCommand::class);
+ $container->set(RotateKeysetCommand::class);
+ $container->set(RsaKeyGeneratorCommand::class);
+ $container->set(RsaKeysetGeneratorCommand::class);
+ $container->set(SecretKeyGeneratorCommand::class);
+ $container->set(X509CertificateLoaderCommand::class);
};
diff --git a/src/Bundle/JoseFramework/Resources/config/compression_methods.php b/src/Bundle/JoseFramework/Resources/config/compression_methods.php
index 9ff5bb20..98cf53b4 100644
--- a/src/Bundle/JoseFramework/Resources/config/compression_methods.php
+++ b/src/Bundle/JoseFramework/Resources/config/compression_methods.php
@@ -2,6 +2,8 @@
declare(strict_types=1);
+use Jose\Component\Encryption\Compression\CompressionMethodManagerFactory;
+use Jose\Component\Encryption\Compression\Deflate;
/*
* The MIT License (MIT)
*
@@ -11,21 +13,23 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Compression;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Compression\CompressionMethodManagerFactory::class)
+ $container->set(CompressionMethodManagerFactory::class)
->public()
;
- $container->set(Compression\Deflate::class)
- ->tag('jose.compression_method', ['alias' => 'DEF'])
+ $container->set(Deflate::class)
+ ->tag('jose.compression_method', [
+ 'alias' => 'DEF',
+ ])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/dev_services.php b/src/Bundle/JoseFramework/Resources/config/dev_services.php
index f47b562d..792ba456 100644
--- a/src/Bundle/JoseFramework/Resources/config/dev_services.php
+++ b/src/Bundle/JoseFramework/Resources/config/dev_services.php
@@ -2,6 +2,12 @@
declare(strict_types=1);
+use Jose\Bundle\JoseFramework\DataCollector\AlgorithmCollector;
+use Jose\Bundle\JoseFramework\DataCollector\CheckerCollector;
+use Jose\Bundle\JoseFramework\DataCollector\JoseCollector;
+use Jose\Bundle\JoseFramework\DataCollector\JWECollector;
+use Jose\Bundle\JoseFramework\DataCollector\JWSCollector;
+use Jose\Bundle\JoseFramework\DataCollector\KeyCollector;
/*
* The MIT License (MIT)
*
@@ -11,26 +17,26 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Bundle\JoseFramework\DataCollector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(DataCollector\JoseCollector::class)
+ $container->set(JoseCollector::class)
->tag('data_collector', [
'id' => 'jose_collector',
'template' => '@JoseFramework/data_collector/template.html.twig',
])
;
- $container->set(DataCollector\AlgorithmCollector::class);
- $container->set(DataCollector\CheckerCollector::class);
- $container->set(DataCollector\JWECollector::class);
- $container->set(DataCollector\JWSCollector::class);
- $container->set(DataCollector\KeyCollector::class);
+ $container->set(AlgorithmCollector::class);
+ $container->set(CheckerCollector::class);
+ $container->set(JWECollector::class);
+ $container->set(JWSCollector::class);
+ $container->set(KeyCollector::class);
};
diff --git a/src/Bundle/JoseFramework/Resources/config/env_var.php b/src/Bundle/JoseFramework/Resources/config/env_var.php
index 01e91307..d0939a93 100644
--- a/src/Bundle/JoseFramework/Resources/config/env_var.php
+++ b/src/Bundle/JoseFramework/Resources/config/env_var.php
@@ -2,6 +2,7 @@
declare(strict_types=1);
+use Jose\Bundle\JoseFramework\EnvVarProcessor\KeyEnvVarProcessor;
/*
* The MIT License (MIT)
*
@@ -11,15 +12,15 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Bundle\JoseFramework\EnvVarProcessor;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(EnvVarProcessor\KeyEnvVarProcessor::class);
+ $container->set(KeyEnvVarProcessor::class);
};
diff --git a/src/Bundle/JoseFramework/Resources/config/jku_commands.php b/src/Bundle/JoseFramework/Resources/config/jku_commands.php
index 194a19af..c9f31814 100644
--- a/src/Bundle/JoseFramework/Resources/config/jku_commands.php
+++ b/src/Bundle/JoseFramework/Resources/config/jku_commands.php
@@ -2,6 +2,8 @@
declare(strict_types=1);
+use Jose\Component\Console\JKULoaderCommand;
+use Jose\Component\Console\X5ULoaderCommand;
/*
* The MIT License (MIT)
*
@@ -11,16 +13,16 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Console;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Console\JKULoaderCommand::class);
- $container->set(Console\X5ULoaderCommand::class);
+ $container->set(JKULoaderCommand::class);
+ $container->set(X5ULoaderCommand::class);
};
diff --git a/src/Bundle/JoseFramework/Resources/config/jku_source.php b/src/Bundle/JoseFramework/Resources/config/jku_source.php
index d6ab6e31..fa784f5a 100644
--- a/src/Bundle/JoseFramework/Resources/config/jku_source.php
+++ b/src/Bundle/JoseFramework/Resources/config/jku_source.php
@@ -2,6 +2,8 @@
declare(strict_types=1);
+use Jose\Component\KeyManagement\JKUFactory;
+use Jose\Component\KeyManagement\X5UFactory;
/*
* The MIT License (MIT)
*
@@ -11,38 +13,24 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\KeyManagement;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
-use function Symfony\Component\DependencyInjection\Loader\Configurator\ref;
-use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator;
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $serviceClosure = static function (string $serviceId): ReferenceConfigurator {
- return function_exists('Symfony\Component\DependencyInjection\Loader\Configurator\service')
- ? service($serviceId)
- : ref($serviceId);
- };
-
- $container->set(KeyManagement\JKUFactory::class)
+ $container->set(JKUFactory::class)
->public()
- ->args([
- ($serviceClosure)('jose.http_client'),
- ($serviceClosure)('jose.request_factory'),
- ])
+ ->args([service('jose.http_client'), service('jose.request_factory')])
;
- $container->set(KeyManagement\X5UFactory::class)
+ $container->set(X5UFactory::class)
->public()
- ->args([
- ($serviceClosure)('jose.http_client'),
- ($serviceClosure)('jose.request_factory'),
- ])
+ ->args([service('jose.http_client'), service('jose.request_factory')])
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/jwe_serializers.php b/src/Bundle/JoseFramework/Resources/config/jwe_serializers.php
index 3d074534..b310e3a5 100644
--- a/src/Bundle/JoseFramework/Resources/config/jwe_serializers.php
+++ b/src/Bundle/JoseFramework/Resources/config/jwe_serializers.php
@@ -2,6 +2,10 @@
declare(strict_types=1);
+use Jose\Component\Encryption\Serializer\CompactSerializer;
+use Jose\Component\Encryption\Serializer\JSONFlattenedSerializer;
+use Jose\Component\Encryption\Serializer\JSONGeneralSerializer;
+use Jose\Component\Encryption\Serializer\JWESerializerManagerFactory;
/*
* The MIT License (MIT)
*
@@ -11,21 +15,21 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Encryption\Serializer;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Serializer\JWESerializerManagerFactory::class)
+ $container->set(JWESerializerManagerFactory::class)
->public()
;
- $container->set(Serializer\CompactSerializer::class);
- $container->set(Serializer\JSONFlattenedSerializer::class);
- $container->set(Serializer\JSONGeneralSerializer::class);
+ $container->set(CompactSerializer::class);
+ $container->set(JSONFlattenedSerializer::class);
+ $container->set(JSONGeneralSerializer::class);
};
diff --git a/src/Bundle/JoseFramework/Resources/config/jwe_services.php b/src/Bundle/JoseFramework/Resources/config/jwe_services.php
index 758696e8..f62a7569 100644
--- a/src/Bundle/JoseFramework/Resources/config/jwe_services.php
+++ b/src/Bundle/JoseFramework/Resources/config/jwe_services.php
@@ -2,6 +2,10 @@
declare(strict_types=1);
+use Jose\Bundle\JoseFramework\Services\JWEBuilderFactory;
+use Jose\Bundle\JoseFramework\Services\JWEDecrypterFactory;
+use Jose\Bundle\JoseFramework\Services\JWELoaderFactory;
+use Jose\Component\Encryption\JWETokenSupport;
/*
* The MIT License (MIT)
*
@@ -11,28 +15,27 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Bundle\JoseFramework\Services;
-use Jose\Component\Encryption;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Services\JWEBuilderFactory::class)
+ $container->set(JWEBuilderFactory::class)
->public()
;
- $container->set(Services\JWEDecrypterFactory::class)
+ $container->set(JWEDecrypterFactory::class)
->public()
;
- $container->set(Services\JWELoaderFactory::class)
+ $container->set(JWELoaderFactory::class)
->public()
;
- $container->set(Encryption\JWETokenSupport::class);
+ $container->set(JWETokenSupport::class);
};
diff --git a/src/Bundle/JoseFramework/Resources/config/jwk_factory.php b/src/Bundle/JoseFramework/Resources/config/jwk_factory.php
index 754c6981..ed8c4413 100644
--- a/src/Bundle/JoseFramework/Resources/config/jwk_factory.php
+++ b/src/Bundle/JoseFramework/Resources/config/jwk_factory.php
@@ -2,20 +2,12 @@
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.
- */
-
use Jose\Component\KeyManagement\JWKFactory;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
diff --git a/src/Bundle/JoseFramework/Resources/config/jwk_services.php b/src/Bundle/JoseFramework/Resources/config/jwk_services.php
index 3198ec18..25008a69 100644
--- a/src/Bundle/JoseFramework/Resources/config/jwk_services.php
+++ b/src/Bundle/JoseFramework/Resources/config/jwk_services.php
@@ -2,21 +2,13 @@
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.
- */
-
use Jose\Bundle\JoseFramework\Controller\JWKSetControllerFactory;
use Jose\Bundle\JoseFramework\Routing\JWKSetLoader;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
diff --git a/src/Bundle/JoseFramework/Resources/config/jwk_sources.php b/src/Bundle/JoseFramework/Resources/config/jwk_sources.php
index f5db7f7a..22ae1c02 100644
--- a/src/Bundle/JoseFramework/Resources/config/jwk_sources.php
+++ b/src/Bundle/JoseFramework/Resources/config/jwk_sources.php
@@ -2,6 +2,14 @@
declare(strict_types=1);
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource\CertificateFile;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource\JWK;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource\JWKSet;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource\KeyFile;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource\P12;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource\Secret;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource\Values;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource\X5C;
/*
* The MIT License (MIT)
*
@@ -11,22 +19,22 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->public()
->autoconfigure()
->autowire()
;
- $container->set(JWKSource\KeyFile::class);
- $container->set(JWKSource\P12::class);
- $container->set(JWKSource\CertificateFile::class);
- $container->set(JWKSource\Values::class);
- $container->set(JWKSource\Secret::class);
- $container->set(JWKSource\JWK::class);
- $container->set(JWKSource\X5C::class);
- $container->set(JWKSource\JWKSet::class);
+ $container->set(KeyFile::class);
+ $container->set(P12::class);
+ $container->set(CertificateFile::class);
+ $container->set(Values::class);
+ $container->set(Secret::class);
+ $container->set(JWK::class);
+ $container->set(X5C::class);
+ $container->set(JWKSet::class);
};
diff --git a/src/Bundle/JoseFramework/Resources/config/jwkset_sources.php b/src/Bundle/JoseFramework/Resources/config/jwkset_sources.php
index ffa04985..25a63948 100644
--- a/src/Bundle/JoseFramework/Resources/config/jwkset_sources.php
+++ b/src/Bundle/JoseFramework/Resources/config/jwkset_sources.php
@@ -2,6 +2,9 @@
declare(strict_types=1);
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSetSource\JKU;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSetSource\JWKSet;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSetSource\X5U;
/*
* The MIT License (MIT)
*
@@ -11,17 +14,17 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSetSource;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->public()
->autoconfigure()
->autowire()
;
- $container->set(JWKSetSource\JWKSet::class);
- $container->set(JWKSetSource\JKU::class);
- $container->set(JWKSetSource\X5U::class);
+ $container->set(JWKSet::class);
+ $container->set(JKU::class);
+ $container->set(X5U::class);
};
diff --git a/src/Bundle/JoseFramework/Resources/config/jws_serializers.php b/src/Bundle/JoseFramework/Resources/config/jws_serializers.php
index c3b918d1..849eed88 100644
--- a/src/Bundle/JoseFramework/Resources/config/jws_serializers.php
+++ b/src/Bundle/JoseFramework/Resources/config/jws_serializers.php
@@ -2,6 +2,10 @@
declare(strict_types=1);
+use Jose\Component\Signature\Serializer\CompactSerializer;
+use Jose\Component\Signature\Serializer\JSONFlattenedSerializer;
+use Jose\Component\Signature\Serializer\JSONGeneralSerializer;
+use Jose\Component\Signature\Serializer\JWSSerializerManagerFactory;
/*
* The MIT License (MIT)
*
@@ -11,21 +15,21 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Component\Signature\Serializer;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Serializer\JWSSerializerManagerFactory::class)
+ $container->set(JWSSerializerManagerFactory::class)
->public()
;
- $container->set(Serializer\CompactSerializer::class);
- $container->set(Serializer\JSONFlattenedSerializer::class);
- $container->set(Serializer\JSONGeneralSerializer::class);
+ $container->set(CompactSerializer::class);
+ $container->set(JSONFlattenedSerializer::class);
+ $container->set(JSONGeneralSerializer::class);
};
diff --git a/src/Bundle/JoseFramework/Resources/config/jws_services.php b/src/Bundle/JoseFramework/Resources/config/jws_services.php
index fafad44f..88224487 100644
--- a/src/Bundle/JoseFramework/Resources/config/jws_services.php
+++ b/src/Bundle/JoseFramework/Resources/config/jws_services.php
@@ -2,6 +2,10 @@
declare(strict_types=1);
+use Jose\Bundle\JoseFramework\Services\JWSBuilderFactory;
+use Jose\Bundle\JoseFramework\Services\JWSLoaderFactory;
+use Jose\Bundle\JoseFramework\Services\JWSVerifierFactory;
+use Jose\Component\Signature\JWSTokenSupport;
/*
* The MIT License (MIT)
*
@@ -11,28 +15,27 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Bundle\JoseFramework\Services;
-use Jose\Component\Signature;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Services\JWSBuilderFactory::class)
+ $container->set(JWSBuilderFactory::class)
->public()
;
- $container->set(Services\JWSVerifierFactory::class)
+ $container->set(JWSVerifierFactory::class)
->public()
;
- $container->set(Services\JWSLoaderFactory::class)
+ $container->set(JWSLoaderFactory::class)
->public()
;
- $container->set(Signature\JWSTokenSupport::class);
+ $container->set(JWSTokenSupport::class);
};
diff --git a/src/Bundle/JoseFramework/Resources/config/nested_token.php b/src/Bundle/JoseFramework/Resources/config/nested_token.php
index b436043d..cc2865cd 100644
--- a/src/Bundle/JoseFramework/Resources/config/nested_token.php
+++ b/src/Bundle/JoseFramework/Resources/config/nested_token.php
@@ -2,6 +2,8 @@
declare(strict_types=1);
+use Jose\Bundle\JoseFramework\Services\NestedTokenBuilderFactory;
+use Jose\Bundle\JoseFramework\Services\NestedTokenLoaderFactory;
/*
* The MIT License (MIT)
*
@@ -11,21 +13,21 @@
* of the MIT license. See the LICENSE file for details.
*/
-use Jose\Bundle\JoseFramework\Services;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
- $container->set(Services\NestedTokenBuilderFactory::class)
+ $container->set(NestedTokenBuilderFactory::class)
->public()
;
- $container->set(Services\NestedTokenLoaderFactory::class)
+ $container->set(NestedTokenLoaderFactory::class)
->public()
;
};
diff --git a/src/Bundle/JoseFramework/Resources/config/routing/jwkset_controller.php b/src/Bundle/JoseFramework/Resources/config/routing/jwkset_controller.php
index 3a0c9165..85580b1b 100644
--- a/src/Bundle/JoseFramework/Resources/config/routing/jwkset_controller.php
+++ b/src/Bundle/JoseFramework/Resources/config/routing/jwkset_controller.php
@@ -2,15 +2,6 @@
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.
- */
-
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
return function (RoutingConfigurator $routes): void {
diff --git a/src/Bundle/JoseFramework/Resources/config/services.php b/src/Bundle/JoseFramework/Resources/config/services.php
index 7ff246c1..b1a5fe2e 100644
--- a/src/Bundle/JoseFramework/Resources/config/services.php
+++ b/src/Bundle/JoseFramework/Resources/config/services.php
@@ -2,20 +2,12 @@
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.
- */
-
use Jose\Component\Core\AlgorithmManagerFactory;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container): void {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
diff --git a/src/Bundle/JoseFramework/Routing/JWKSetLoader.php b/src/Bundle/JoseFramework/Routing/JWKSetLoader.php
index 29d74f84..a782cb0c 100644
--- a/src/Bundle/JoseFramework/Routing/JWKSetLoader.php
+++ b/src/Bundle/JoseFramework/Routing/JWKSetLoader.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Routing;
use Symfony\Component\Config\Loader\LoaderInterface;
@@ -20,10 +11,9 @@
final class JWKSetLoader implements LoaderInterface
{
- /**
- * @var RouteCollection
- */
- private $routes;
+ private RouteCollection $routes;
+
+ private LoaderResolverInterface $resolver;
public function __construct()
{
@@ -32,7 +22,9 @@ public function __construct()
public function add(string $pattern, string $name): void
{
- $defaults = ['_controller' => $name];
+ $defaults = [
+ '_controller' => $name,
+ ];
$route = new Route($pattern, $defaults);
$this->routes->add(sprintf('jwkset_%s', $name), $route);
}
@@ -40,7 +32,7 @@ public function add(string $pattern, string $name): void
/**
* {@inheritdoc}
*/
- public function load($resource, $type = null): RouteCollection
+ public function load(mixed $resource, string $type = null): RouteCollection
{
return $this->routes;
}
@@ -48,16 +40,18 @@ public function load($resource, $type = null): RouteCollection
/**
* {@inheritdoc}
*/
- public function supports($resource, $type = null): bool
+ public function supports(mixed $resource, string $type = null): bool
{
- return 'jwkset' === $type;
+ return $type === 'jwkset';
}
- public function getResolver(): void
+ public function getResolver(): LoaderResolverInterface
{
+ return $this->resolver;
}
public function setResolver(LoaderResolverInterface $resolver): void
{
+ $this->resolver = $resolver;
}
}
diff --git a/src/Bundle/JoseFramework/Serializer/JWEEncoder.php b/src/Bundle/JoseFramework/Serializer/JWEEncoder.php
index 45b1c333..27017e76 100644
--- a/src/Bundle/JoseFramework/Serializer/JWEEncoder.php
+++ b/src/Bundle/JoseFramework/Serializer/JWEEncoder.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Serializer;
use Exception;
@@ -27,16 +18,13 @@
final class JWEEncoder implements EncoderInterface, DecoderInterface
{
- /**
- * @var JWESerializerManager
- */
- private $serializerManager;
+ private ?JWESerializerManager $serializerManager;
public function __construct(
JWESerializerManagerFactory $serializerManagerFactory,
?JWESerializerManager $serializerManager = null
) {
- if (null === $serializerManager) {
+ if ($serializerManager === null) {
$serializerManager = $serializerManagerFactory->create($serializerManagerFactory->names());
}
$this->serializerManager = $serializerManager;
@@ -52,17 +40,14 @@ public function supportsDecoding($format): bool
return $this->supportsEncoding($format);
}
- /**
- * @param mixed $data
- * @param mixed $format
- *
- * @throws NotEncodableValueException if the data cannot be encoded
- * @throws UnexpectedValueException if the data cannot be encoded
- */
public function encode($data, $format, array $context = []): string
{
try {
- return $this->serializerManager->serialize(mb_strtolower($format), $data, $this->getRecipientIndex($context));
+ return $this->serializerManager->serialize(
+ mb_strtolower($format),
+ $data,
+ $this->getRecipientIndex($context)
+ );
} catch (Throwable $ex) {
$message = sprintf('Cannot encode JWE to %s format.', $format);
@@ -74,13 +59,6 @@ public function encode($data, $format, array $context = []): string
}
}
- /**
- * @param mixed $data
- * @param mixed $format
- *
- * @throws NotEncodableValueException if the data cannot be decoded
- * @throws UnexpectedValueException if the data cannot be decoded
- */
public function decode($data, $format, array $context = []): JWE
{
try {
diff --git a/src/Bundle/JoseFramework/Serializer/JWSEncoder.php b/src/Bundle/JoseFramework/Serializer/JWSEncoder.php
index 6c6921b2..e852bfe0 100644
--- a/src/Bundle/JoseFramework/Serializer/JWSEncoder.php
+++ b/src/Bundle/JoseFramework/Serializer/JWSEncoder.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Serializer;
use Exception;
@@ -26,16 +17,13 @@
final class JWSEncoder implements EncoderInterface, DecoderInterface
{
- /**
- * @var JWSSerializerManager
- */
- private $serializerManager;
+ private ?JWSSerializerManager $serializerManager;
public function __construct(
JWSSerializerManagerFactory $serializerManagerFactory,
?JWSSerializerManager $serializerManager = null
) {
- if (null === $serializerManager) {
+ if ($serializerManager === null) {
$serializerManager = $serializerManagerFactory->create($serializerManagerFactory->names());
}
$this->serializerManager = $serializerManager;
@@ -51,17 +39,14 @@ public function supportsDecoding($format): bool
return $this->supportsEncoding($format);
}
- /**
- * @param mixed $data
- * @param mixed $format
- *
- * @throws NotEncodableValueException if the data cannot be encoded
- * @throws UnexpectedValueException if the data cannot be encoded
- */
public function encode($data, $format, array $context = []): string
{
try {
- return $this->serializerManager->serialize(mb_strtolower($format), $data, $this->getSignatureIndex($context));
+ return $this->serializerManager->serialize(
+ mb_strtolower($format),
+ $data,
+ $this->getSignatureIndex($context)
+ );
} catch (Exception $ex) {
$message = sprintf('Cannot encode JWS to %s format.', $format);
if (class_exists('Symfony\Component\Serializer\Exception\NotEncodableValueException')) {
@@ -72,13 +57,6 @@ public function encode($data, $format, array $context = []): string
}
}
- /**
- * @param mixed $data
- * @param mixed $format
- *
- * @throws NotEncodableValueException if the data cannot be decoded
- * @throws UnexpectedValueException if the data cannot be decoded
- */
public function decode($data, $format, array $context = []): JWS
{
try {
diff --git a/src/Bundle/JoseFramework/Services/ClaimCheckerManager.php b/src/Bundle/JoseFramework/Services/ClaimCheckerManager.php
index 4c186ebb..cb6f13a4 100644
--- a/src/Bundle/JoseFramework/Services/ClaimCheckerManager.php
+++ b/src/Bundle/JoseFramework/Services/ClaimCheckerManager.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Bundle\JoseFramework\Event\ClaimCheckedFailureEvent;
@@ -21,15 +12,11 @@
final class ClaimCheckerManager extends BaseClaimCheckerManager
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct($checkers, EventDispatcherInterface $eventDispatcher)
- {
+ public function __construct(
+ $checkers,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
parent::__construct($checkers);
- $this->eventDispatcher = $eventDispatcher;
}
public function check(array $claims, array $mandatoryClaims = []): array
@@ -42,9 +29,7 @@ public function check(array $claims, array $mandatoryClaims = []): array
return $checkedClaims;
} catch (Throwable $throwable) {
- $this->eventDispatcher->dispatch(
- new ClaimCheckedFailureEvent($claims, $mandatoryClaims, $throwable)
- );
+ $this->eventDispatcher->dispatch(new ClaimCheckedFailureEvent($claims, $mandatoryClaims, $throwable));
throw $throwable;
}
diff --git a/src/Bundle/JoseFramework/Services/ClaimCheckerManagerFactory.php b/src/Bundle/JoseFramework/Services/ClaimCheckerManagerFactory.php
index 14a68348..34493b69 100644
--- a/src/Bundle/JoseFramework/Services/ClaimCheckerManagerFactory.php
+++ b/src/Bundle/JoseFramework/Services/ClaimCheckerManagerFactory.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use InvalidArgumentException;
@@ -19,24 +10,19 @@
final class ClaimCheckerManagerFactory
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
/**
* @var ClaimChecker[]
*/
private $checkers = [];
- public function __construct(EventDispatcherInterface $eventDispatcher)
- {
- $this->eventDispatcher = $eventDispatcher;
+ public function __construct(
+ private EventDispatcherInterface $eventDispatcher
+ ) {
}
/**
- * This method creates a Claim Checker Manager and populate it with the claim checkers found based on the alias.
- * If the alias is not supported, an InvalidArgumentException is thrown.
+ * This method creates a Claim Checker Manager and populate it with the claim checkers found based on the alias. If
+ * the alias is not supported, an InvalidArgumentException is thrown.
*
* @param string[] $aliases
*/
@@ -44,8 +30,11 @@ public function create(array $aliases): ClaimCheckerManager
{
$checkers = [];
foreach ($aliases as $alias) {
- if (!isset($this->checkers[$alias])) {
- throw new InvalidArgumentException(sprintf('The claim checker with the alias "%s" is not supported.', $alias));
+ if (! isset($this->checkers[$alias])) {
+ throw new InvalidArgumentException(sprintf(
+ 'The claim checker with the alias "%s" is not supported.',
+ $alias
+ ));
}
$checkers[] = $this->checkers[$alias];
}
diff --git a/src/Bundle/JoseFramework/Services/HeaderCheckerManager.php b/src/Bundle/JoseFramework/Services/HeaderCheckerManager.php
index d1d88c62..175a2ab3 100644
--- a/src/Bundle/JoseFramework/Services/HeaderCheckerManager.php
+++ b/src/Bundle/JoseFramework/Services/HeaderCheckerManager.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Bundle\JoseFramework\Event\HeaderCheckedFailureEvent;
@@ -22,20 +13,14 @@
final class HeaderCheckerManager extends BaseHeaderCheckerManager
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct(array $checkers, array $tokenTypes, EventDispatcherInterface $eventDispatcher)
- {
+ public function __construct(
+ array $checkers,
+ array $tokenTypes,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
parent::__construct($checkers, $tokenTypes);
- $this->eventDispatcher = $eventDispatcher;
}
- /**
- * @throws Throwable if a checker failed to verify a header parameter
- */
public function check(JWT $jwt, int $index, array $mandatoryHeaderParameters = []): void
{
try {
diff --git a/src/Bundle/JoseFramework/Services/HeaderCheckerManagerFactory.php b/src/Bundle/JoseFramework/Services/HeaderCheckerManagerFactory.php
index 41f2238e..6c711349 100644
--- a/src/Bundle/JoseFramework/Services/HeaderCheckerManagerFactory.php
+++ b/src/Bundle/JoseFramework/Services/HeaderCheckerManagerFactory.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use InvalidArgumentException;
@@ -20,11 +11,6 @@
final class HeaderCheckerManagerFactory
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
/**
* @var HeaderChecker[]
*/
@@ -33,27 +19,28 @@ final class HeaderCheckerManagerFactory
/**
* @var TokenTypeSupport[]
*/
- private $tokenTypes = [];
+ private array $tokenTypes = [];
- public function __construct(EventDispatcherInterface $eventDispatcher)
- {
- $this->eventDispatcher = $eventDispatcher;
+ public function __construct(
+ private EventDispatcherInterface $eventDispatcher
+ ) {
}
/**
- * This method creates a Header Checker Manager and populate it with the header parameter checkers found based on the alias.
- * If the alias is not supported, an InvalidArgumentException is thrown.
+ * This method creates a Header Checker Manager and populate it with the header parameter checkers found based on
+ * the alias. If the alias is not supported, an InvalidArgumentException is thrown.
*
* @param string[] $aliases
- *
- * @throws InvalidArgumentException if an alias is not supported
*/
public function create(array $aliases): HeaderCheckerManager
{
$checkers = [];
foreach ($aliases as $alias) {
- if (!isset($this->checkers[$alias])) {
- throw new InvalidArgumentException(sprintf('The header checker with the alias "%s" is not supported.', $alias));
+ if (! isset($this->checkers[$alias])) {
+ throw new InvalidArgumentException(sprintf(
+ 'The header checker with the alias "%s" is not supported.',
+ $alias
+ ));
}
$checkers[] = $this->checkers[$alias];
}
@@ -62,9 +49,8 @@ public function create(array $aliases): HeaderCheckerManager
}
/**
- * This method adds a header parameter checker to this factory.
- * The checker is uniquely identified by an alias. This allows the same header parameter checker to be added twice (or more)
- * using several configuration options.
+ * This method adds a header parameter checker to this factory. The checker is uniquely identified by an alias. This
+ * allows the same header parameter checker to be added twice (or more) using several configuration options.
*/
public function add(string $alias, HeaderChecker $checker): void
{
diff --git a/src/Bundle/JoseFramework/Services/JWEBuilder.php b/src/Bundle/JoseFramework/Services/JWEBuilder.php
index 03a3ffe5..200c0d4f 100644
--- a/src/Bundle/JoseFramework/Services/JWEBuilder.php
+++ b/src/Bundle/JoseFramework/Services/JWEBuilder.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Bundle\JoseFramework\Event\JWEBuiltFailureEvent;
@@ -24,15 +15,13 @@
final class JWEBuilder extends BaseJWEBuilder
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct(AlgorithmManager $keyEncryptionAlgorithmManager, AlgorithmManager $contentEncryptionAlgorithmManager, CompressionMethodManager $compressionManager, EventDispatcherInterface $eventDispatcher)
- {
- parent::__construct($keyEncryptionAlgorithmManager, $contentEncryptionAlgorithmManager, $compressionManager);
- $this->eventDispatcher = $eventDispatcher;
+ public function __construct(
+ AlgorithmManager $keyEncryptionKeyEncryptionAlgorithmManager,
+ AlgorithmManager $contentEncryptionAlgorithmManager,
+ CompressionMethodManager $compressionManager,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
+ parent::__construct($keyEncryptionKeyEncryptionAlgorithmManager, $contentEncryptionAlgorithmManager, $compressionManager);
}
public function build(): JWE
diff --git a/src/Bundle/JoseFramework/Services/JWEBuilderFactory.php b/src/Bundle/JoseFramework/Services/JWEBuilderFactory.php
index 9a3b72b1..e0774ce7 100644
--- a/src/Bundle/JoseFramework/Services/JWEBuilderFactory.php
+++ b/src/Bundle/JoseFramework/Services/JWEBuilderFactory.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Component\Core\AlgorithmManagerFactory;
@@ -19,26 +10,11 @@
final class JWEBuilderFactory
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- /**
- * @var AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
-
- /**
- * @var CompressionMethodManagerFactory
- */
- private $compressionMethodManagerFactory;
-
- public function __construct(AlgorithmManagerFactory $algorithmManagerFactory, CompressionMethodManagerFactory $compressionMethodManagerFactory, EventDispatcherInterface $eventDispatcher)
- {
- $this->eventDispatcher = $eventDispatcher;
- $this->algorithmManagerFactory = $algorithmManagerFactory;
- $this->compressionMethodManagerFactory = $compressionMethodManagerFactory;
+ public function __construct(
+ private AlgorithmManagerFactory $algorithmManagerFactory,
+ private CompressionMethodManagerFactory $compressionMethodManagerFactory,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
}
/**
@@ -48,12 +24,20 @@ public function __construct(AlgorithmManagerFactory $algorithmManagerFactory, Co
* @param string[] $contentEncryptionAlgorithm
* @param string[] $compressionMethods
*/
- public function create(array $keyEncryptionAlgorithms, array $contentEncryptionAlgorithm, array $compressionMethods): JWEBuilder
- {
+ 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, $this->eventDispatcher);
+ return new JWEBuilder(
+ $keyEncryptionAlgorithmManager,
+ $contentEncryptionAlgorithmManager,
+ $compressionMethodManager,
+ $this->eventDispatcher
+ );
}
}
diff --git a/src/Bundle/JoseFramework/Services/JWEDecrypter.php b/src/Bundle/JoseFramework/Services/JWEDecrypter.php
index 73a62830..d3b43ff3 100644
--- a/src/Bundle/JoseFramework/Services/JWEDecrypter.php
+++ b/src/Bundle/JoseFramework/Services/JWEDecrypter.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Bundle\JoseFramework\Event\JWEDecryptionFailureEvent;
@@ -25,32 +16,27 @@
final class JWEDecrypter extends BaseJWEDecrypter
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct(AlgorithmManager $keyEncryptionAlgorithmManager, AlgorithmManager $contentEncryptionAlgorithmManager, CompressionMethodManager $compressionMethodManager, EventDispatcherInterface $eventDispatcher)
- {
+ public function __construct(
+ AlgorithmManager $keyEncryptionAlgorithmManager,
+ AlgorithmManager $contentEncryptionAlgorithmManager,
+ CompressionMethodManager $compressionMethodManager,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
parent::__construct($keyEncryptionAlgorithmManager, $contentEncryptionAlgorithmManager, $compressionMethodManager);
- $this->eventDispatcher = $eventDispatcher;
}
- public function decryptUsingKeySet(JWE &$jwe, JWKSet $jwkset, int $recipient, JWK &$jwk = null, ?JWK $senderKey = null): bool
- {
+ public function decryptUsingKeySet(
+ JWE &$jwe,
+ JWKSet $jwkset,
+ int $recipient,
+ JWK &$jwk = null,
+ ?JWK $senderKey = null
+ ): bool {
$success = parent::decryptUsingKeySet($jwe, $jwkset, $recipient, $jwk, $senderKey);
if ($success) {
- $this->eventDispatcher->dispatch(new JWEDecryptionSuccessEvent(
- $jwe,
- $jwkset,
- $jwk,
- $recipient
- ));
+ $this->eventDispatcher->dispatch(new JWEDecryptionSuccessEvent($jwe, $jwkset, $jwk, $recipient));
} else {
- $this->eventDispatcher->dispatch(new JWEDecryptionFailureEvent(
- $jwe,
- $jwkset
- ));
+ $this->eventDispatcher->dispatch(new JWEDecryptionFailureEvent($jwe, $jwkset));
}
return $success;
diff --git a/src/Bundle/JoseFramework/Services/JWEDecrypterFactory.php b/src/Bundle/JoseFramework/Services/JWEDecrypterFactory.php
index 0164b9a4..bf8895dd 100644
--- a/src/Bundle/JoseFramework/Services/JWEDecrypterFactory.php
+++ b/src/Bundle/JoseFramework/Services/JWEDecrypterFactory.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Component\Core\AlgorithmManagerFactory;
@@ -19,34 +10,27 @@
final class JWEDecrypterFactory
{
- /**
- * @var AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
-
- /**
- * @var CompressionMethodManagerFactory
- */
- private $compressionMethodManagerFactory;
-
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct(AlgorithmManagerFactory $algorithmManagerFactory, CompressionMethodManagerFactory $compressionMethodManagerFactory, EventDispatcherInterface $eventDispatcher)
- {
- $this->algorithmManagerFactory = $algorithmManagerFactory;
- $this->compressionMethodManagerFactory = $compressionMethodManagerFactory;
- $this->eventDispatcher = $eventDispatcher;
+ public function __construct(
+ private AlgorithmManagerFactory $algorithmManagerFactory,
+ private CompressionMethodManagerFactory $compressionMethodManagerFactory,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
}
- public function create(array $keyEncryptionAlgorithms, array $contentEncryptionAlgorithms, array $compressionMethods): JWEDecrypter
- {
+ public function create(
+ array $keyEncryptionAlgorithms,
+ array $contentEncryptionAlgorithms,
+ array $compressionMethods
+ ): JWEDecrypter {
$keyEncryptionAlgorithmManager = $this->algorithmManagerFactory->create($keyEncryptionAlgorithms);
$contentEncryptionAlgorithmManager = $this->algorithmManagerFactory->create($contentEncryptionAlgorithms);
$compressionMethodManager = $this->compressionMethodManagerFactory->create($compressionMethods);
- return new JWEDecrypter($keyEncryptionAlgorithmManager, $contentEncryptionAlgorithmManager, $compressionMethodManager, $this->eventDispatcher);
+ return new JWEDecrypter(
+ $keyEncryptionAlgorithmManager,
+ $contentEncryptionAlgorithmManager,
+ $compressionMethodManager,
+ $this->eventDispatcher
+ );
}
}
diff --git a/src/Bundle/JoseFramework/Services/JWELoader.php b/src/Bundle/JoseFramework/Services/JWELoader.php
index e5f23d95..890bc5f3 100644
--- a/src/Bundle/JoseFramework/Services/JWELoader.php
+++ b/src/Bundle/JoseFramework/Services/JWELoader.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Bundle\JoseFramework\Event\JWELoadingFailureEvent;
@@ -26,35 +17,24 @@
final class JWELoader extends BaseJWELoader
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct(JWESerializerManager $serializerManager, JWEDecrypter $jweDecrypter, ?HeaderCheckerManager $headerCheckerManager, EventDispatcherInterface $eventDispatcher)
- {
+ public function __construct(
+ JWESerializerManager $serializerManager,
+ JWEDecrypter $jweDecrypter,
+ ?HeaderCheckerManager $headerCheckerManager,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
parent::__construct($serializerManager, $jweDecrypter, $headerCheckerManager);
- $this->eventDispatcher = $eventDispatcher;
}
public function loadAndDecryptWithKeySet(string $token, JWKSet $keyset, ?int &$recipient): JWE
{
try {
$jwe = parent::loadAndDecryptWithKeySet($token, $keyset, $recipient);
- $this->eventDispatcher->dispatch(new JWELoadingSuccessEvent(
- $token,
- $jwe,
- $keyset,
- $recipient
- ));
+ $this->eventDispatcher->dispatch(new JWELoadingSuccessEvent($token, $jwe, $keyset, $recipient));
return $jwe;
} catch (Throwable $throwable) {
- $this->eventDispatcher->dispatch(new JWELoadingFailureEvent(
- $token,
- $keyset,
- $throwable
- ));
+ $this->eventDispatcher->dispatch(new JWELoadingFailureEvent($token, $keyset, $throwable));
throw $throwable;
}
diff --git a/src/Bundle/JoseFramework/Services/JWELoaderFactory.php b/src/Bundle/JoseFramework/Services/JWELoaderFactory.php
index 1ac8593f..dc2bf436 100644
--- a/src/Bundle/JoseFramework/Services/JWELoaderFactory.php
+++ b/src/Bundle/JoseFramework/Services/JWELoaderFactory.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Component\Encryption\Serializer\JWESerializerManagerFactory;
@@ -18,39 +9,28 @@
final class JWELoaderFactory
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- /**
- * @var JWESerializerManagerFactory
- */
- private $jweSerializerManagerFactory;
-
- /**
- * @var JWEDecrypterFactory
- */
- private $jweDecrypterFactory;
-
- /**
- * @var null|HeaderCheckerManagerFactory
- */
- private $headerCheckerManagerFactory;
-
- public function __construct(JWESerializerManagerFactory $jweSerializerManagerFactory, JWEDecrypterFactory $jweDecrypterFactory, ?HeaderCheckerManagerFactory $headerCheckerManagerFactory, EventDispatcherInterface $eventDispatcher)
- {
- $this->eventDispatcher = $eventDispatcher;
- $this->jweSerializerManagerFactory = $jweSerializerManagerFactory;
- $this->jweDecrypterFactory = $jweDecrypterFactory;
- $this->headerCheckerManagerFactory = $headerCheckerManagerFactory;
+ public function __construct(
+ private JWESerializerManagerFactory $jweSerializerManagerFactory,
+ private JWEDecrypterFactory $jweDecrypterFactory,
+ private ?HeaderCheckerManagerFactory $headerCheckerManagerFactory,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
}
- public function create(array $serializers, array $keyEncryptionAlgorithms, array $contentEncryptionAlgorithms, array $compressionMethods, array $headerCheckers = []): JWELoader
- {
+ public function create(
+ array $serializers,
+ array $keyEncryptionAlgorithms,
+ array $contentEncryptionAlgorithms,
+ array $compressionMethods,
+ array $headerCheckers = []
+ ): JWELoader {
$serializerManager = $this->jweSerializerManagerFactory->create($serializers);
- $jweDecrypter = $this->jweDecrypterFactory->create($keyEncryptionAlgorithms, $contentEncryptionAlgorithms, $compressionMethods);
- if (null !== $this->headerCheckerManagerFactory) {
+ $jweDecrypter = $this->jweDecrypterFactory->create(
+ $keyEncryptionAlgorithms,
+ $contentEncryptionAlgorithms,
+ $compressionMethods
+ );
+ if ($this->headerCheckerManagerFactory !== null) {
$headerCheckerManager = $this->headerCheckerManagerFactory->create($headerCheckers);
} else {
$headerCheckerManager = null;
diff --git a/src/Bundle/JoseFramework/Services/JWSBuilder.php b/src/Bundle/JoseFramework/Services/JWSBuilder.php
index 70fd06d0..56fe0db3 100644
--- a/src/Bundle/JoseFramework/Services/JWSBuilder.php
+++ b/src/Bundle/JoseFramework/Services/JWSBuilder.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Bundle\JoseFramework\Event\JWSBuiltFailureEvent;
@@ -23,15 +14,11 @@
final class JWSBuilder extends BaseJWSBuilder
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct(AlgorithmManager $signatureAlgorithmManager, EventDispatcherInterface $eventDispatcher)
- {
+ public function __construct(
+ AlgorithmManager $signatureAlgorithmManager,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
parent::__construct($signatureAlgorithmManager);
- $this->eventDispatcher = $eventDispatcher;
}
public function build(): JWS
diff --git a/src/Bundle/JoseFramework/Services/JWSBuilderFactory.php b/src/Bundle/JoseFramework/Services/JWSBuilderFactory.php
index 94f29a86..cf92e5df 100644
--- a/src/Bundle/JoseFramework/Services/JWSBuilderFactory.php
+++ b/src/Bundle/JoseFramework/Services/JWSBuilderFactory.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Component\Core\AlgorithmManagerFactory;
@@ -18,20 +9,10 @@
final class JWSBuilderFactory
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- /**
- * @var AlgorithmManagerFactory
- */
- private $signatureAlgorithmManagerFactory;
-
- public function __construct(AlgorithmManagerFactory $signatureAlgorithmManagerFactory, EventDispatcherInterface $eventDispatcher)
- {
- $this->signatureAlgorithmManagerFactory = $signatureAlgorithmManagerFactory;
- $this->eventDispatcher = $eventDispatcher;
+ public function __construct(
+ private AlgorithmManagerFactory $signatureAlgorithmManagerFactory,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
}
/**
diff --git a/src/Bundle/JoseFramework/Services/JWSLoader.php b/src/Bundle/JoseFramework/Services/JWSLoader.php
index 994f21e2..77e0aee0 100644
--- a/src/Bundle/JoseFramework/Services/JWSLoader.php
+++ b/src/Bundle/JoseFramework/Services/JWSLoader.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Bundle\JoseFramework\Event\JWSLoadingFailureEvent;
@@ -26,35 +17,28 @@
final class JWSLoader extends BaseJWSLoader
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct(JWSSerializerManager $serializerManager, JWSVerifier $jwsVerifier, ?HeaderCheckerManager $headerCheckerManager, EventDispatcherInterface $eventDispatcher)
- {
+ public function __construct(
+ JWSSerializerManager $serializerManager,
+ JWSVerifier $jwsVerifier,
+ ?HeaderCheckerManager $headerCheckerManager,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
parent::__construct($serializerManager, $jwsVerifier, $headerCheckerManager);
- $this->eventDispatcher = $eventDispatcher;
}
- public function loadAndVerifyWithKeySet(string $token, JWKSet $keyset, ?int &$signature, ?string $payload = null): JWS
- {
+ public function loadAndVerifyWithKeySet(
+ string $token,
+ JWKSet $keyset,
+ ?int &$signature,
+ ?string $payload = null
+ ): JWS {
try {
$jws = parent::loadAndVerifyWithKeySet($token, $keyset, $signature, $payload);
- $this->eventDispatcher->dispatch(new JWSLoadingSuccessEvent(
- $token,
- $jws,
- $keyset,
- $signature
- ));
+ $this->eventDispatcher->dispatch(new JWSLoadingSuccessEvent($token, $jws, $keyset, $signature));
return $jws;
} catch (Throwable $throwable) {
- $this->eventDispatcher->dispatch(new JWSLoadingFailureEvent(
- $token,
- $keyset,
- $throwable
- ));
+ $this->eventDispatcher->dispatch(new JWSLoadingFailureEvent($token, $keyset, $throwable));
throw $throwable;
}
diff --git a/src/Bundle/JoseFramework/Services/JWSLoaderFactory.php b/src/Bundle/JoseFramework/Services/JWSLoaderFactory.php
index 09c7117c..f0e1c3c6 100644
--- a/src/Bundle/JoseFramework/Services/JWSLoaderFactory.php
+++ b/src/Bundle/JoseFramework/Services/JWSLoaderFactory.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Component\Signature\Serializer\JWSSerializerManagerFactory;
@@ -18,43 +9,23 @@
final class JWSLoaderFactory
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- /**
- * @var JWSVerifierFactory
- */
- private $jwsVerifierFactory;
-
- /**
- * @var JWSSerializerManagerFactory
- */
- private $jwsSerializerManagerFactory;
-
- /**
- * @var null|HeaderCheckerManagerFactory
- */
- private $headerCheckerManagerFactory;
-
- public function __construct(JWSSerializerManagerFactory $jwsSerializerManagerFactory, JWSVerifierFactory $jwsVerifierFactory, ?HeaderCheckerManagerFactory $headerCheckerManagerFactory, EventDispatcherInterface $eventDispatcher)
- {
- $this->jwsSerializerManagerFactory = $jwsSerializerManagerFactory;
- $this->jwsVerifierFactory = $jwsVerifierFactory;
- $this->headerCheckerManagerFactory = $headerCheckerManagerFactory;
- $this->eventDispatcher = $eventDispatcher;
+ public function __construct(
+ private JWSSerializerManagerFactory $jwsSerializerManagerFactory,
+ private JWSVerifierFactory $jwsVerifierFactory,
+ private ?HeaderCheckerManagerFactory $headerCheckerManagerFactory,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
}
/**
- * Creates a JWSLoader using the given serializer aliases, signature algorithm aliases and (optionally)
- * the header checker aliases.
+ * Creates a JWSLoader using the given serializer aliases, signature algorithm aliases and (optionally) the header
+ * checker aliases.
*/
public function create(array $serializers, array $algorithms, array $headerCheckers = []): JWSLoader
{
$serializerManager = $this->jwsSerializerManagerFactory->create($serializers);
$jwsVerifier = $this->jwsVerifierFactory->create($algorithms);
- if (null !== $this->headerCheckerManagerFactory) {
+ if ($this->headerCheckerManagerFactory !== null) {
$headerCheckerManager = $this->headerCheckerManagerFactory->create($headerCheckers);
} else {
$headerCheckerManager = null;
diff --git a/src/Bundle/JoseFramework/Services/JWSVerifier.php b/src/Bundle/JoseFramework/Services/JWSVerifier.php
index b40c053d..4796424f 100644
--- a/src/Bundle/JoseFramework/Services/JWSVerifier.php
+++ b/src/Bundle/JoseFramework/Services/JWSVerifier.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Bundle\JoseFramework\Event\JWSVerificationFailureEvent;
@@ -24,19 +15,20 @@
final class JWSVerifier extends BaseJWSVerifier
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct(AlgorithmManager $signatureAlgorithmManager, EventDispatcherInterface $eventDispatcher)
- {
+ public function __construct(
+ AlgorithmManager $signatureAlgorithmManager,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
parent::__construct($signatureAlgorithmManager);
- $this->eventDispatcher = $eventDispatcher;
}
- public function verifyWithKeySet(JWS $jws, JWKSet $jwkset, int $signatureIndex, ?string $detachedPayload = null, JWK &$jwk = null): bool
- {
+ public function verifyWithKeySet(
+ JWS $jws,
+ JWKSet $jwkset,
+ int $signatureIndex,
+ ?string $detachedPayload = null,
+ JWK &$jwk = null
+ ): bool {
$success = parent::verifyWithKeySet($jws, $jwkset, $signatureIndex, $detachedPayload, $jwk);
if ($success) {
$this->eventDispatcher->dispatch(new JWSVerificationSuccessEvent(
@@ -47,11 +39,7 @@ public function verifyWithKeySet(JWS $jws, JWKSet $jwkset, int $signatureIndex,
$jwk
));
} else {
- $this->eventDispatcher->dispatch(new JWSVerificationFailureEvent(
- $jws,
- $jwkset,
- $detachedPayload
- ));
+ $this->eventDispatcher->dispatch(new JWSVerificationFailureEvent($jws, $jwkset, $detachedPayload));
}
return $success;
diff --git a/src/Bundle/JoseFramework/Services/JWSVerifierFactory.php b/src/Bundle/JoseFramework/Services/JWSVerifierFactory.php
index f3d4426d..b344d16b 100644
--- a/src/Bundle/JoseFramework/Services/JWSVerifierFactory.php
+++ b/src/Bundle/JoseFramework/Services/JWSVerifierFactory.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Component\Core\AlgorithmManagerFactory;
@@ -18,20 +9,10 @@
final class JWSVerifierFactory
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- /**
- * @var AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
-
- public function __construct(AlgorithmManagerFactory $algorithmManagerFactory, EventDispatcherInterface $eventDispatcher)
- {
- $this->algorithmManagerFactory = $algorithmManagerFactory;
- $this->eventDispatcher = $eventDispatcher;
+ public function __construct(
+ private AlgorithmManagerFactory $algorithmManagerFactory,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
}
public function create(array $algorithms): JWSVerifier
diff --git a/src/Bundle/JoseFramework/Services/NestedTokenBuilder.php b/src/Bundle/JoseFramework/Services/NestedTokenBuilder.php
index 96b863c1..aba5d31e 100644
--- a/src/Bundle/JoseFramework/Services/NestedTokenBuilder.php
+++ b/src/Bundle/JoseFramework/Services/NestedTokenBuilder.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Bundle\JoseFramework\Event\NestedTokenIssuedEvent;
@@ -23,20 +14,36 @@
final class NestedTokenBuilder extends BaseNestedTokenBuilder
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct(JWEBuilder $jweBuilder, JWESerializerManager $jweSerializerManager, JWSBuilder $jwsBuilder, JWSSerializerManager $jwsSerializerManager, EventDispatcherInterface $eventDispatcher)
- {
+ public function __construct(
+ JWEBuilder $jweBuilder,
+ JWESerializerManager $jweSerializerManager,
+ JWSBuilder $jwsBuilder,
+ JWSSerializerManager $jwsSerializerManager,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
parent::__construct($jweBuilder, $jweSerializerManager, $jwsBuilder, $jwsSerializerManager);
- $this->eventDispatcher = $eventDispatcher;
}
- public function create(string $payload, array $signatures, string $jws_serialization_mode, array $jweSharedProtectedHeader, array $jweSharedHeader, array $recipients, string $jwe_serialization_mode, ?string $aad = null): string
- {
- $nestedToken = parent::create($payload, $signatures, $jws_serialization_mode, $jweSharedProtectedHeader, $jweSharedHeader, $recipients, $jwe_serialization_mode, $aad);
+ public function create(
+ string $payload,
+ array $signatures,
+ string $jws_serialization_mode,
+ array $jweSharedProtectedHeader,
+ array $jweSharedHeader,
+ array $recipients,
+ string $jwe_serialization_mode,
+ ?string $aad = null
+ ): string {
+ $nestedToken = parent::create(
+ $payload,
+ $signatures,
+ $jws_serialization_mode,
+ $jweSharedProtectedHeader,
+ $jweSharedHeader,
+ $recipients,
+ $jwe_serialization_mode,
+ $aad
+ );
$this->eventDispatcher->dispatch(new NestedTokenIssuedEvent($nestedToken));
return $nestedToken;
diff --git a/src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php b/src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php
index be40f355..2cb4cce4 100644
--- a/src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php
+++ b/src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Component\Encryption\Serializer\JWESerializerManagerFactory;
@@ -19,47 +10,38 @@
final class NestedTokenBuilderFactory
{
- /**
- * @var JWEBuilderFactory
- */
- private $jweBuilderFactory;
-
- /**
- * @var JWESerializerManagerFactory
- */
- private $jweSerializerManagerFactory;
-
- /**
- * @var JWSBuilderFactory
- */
- private $jwsBuilderFactory;
-
- /**
- * @var JWSSerializerManagerFactory
- */
- private $jwsSerializerManagerFactory;
-
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct(JWEBuilderFactory $jweBuilderFactory, JWESerializerManagerFactory $jweSerializerManagerFactory, JWSBuilderFactory $jwsBuilderFactory, JWSSerializerManagerFactory $jwsSerializerManagerFactory, EventDispatcherInterface $eventDispatcher)
- {
- $this->jweBuilderFactory = $jweBuilderFactory;
- $this->jweSerializerManagerFactory = $jweSerializerManagerFactory;
- $this->jwsBuilderFactory = $jwsBuilderFactory;
- $this->jwsSerializerManagerFactory = $jwsSerializerManagerFactory;
- $this->eventDispatcher = $eventDispatcher;
+ public function __construct(
+ private JWEBuilderFactory $jweBuilderFactory,
+ private JWESerializerManagerFactory $jweSerializerManagerFactory,
+ private JWSBuilderFactory $jwsBuilderFactory,
+ private JWSSerializerManagerFactory $jwsSerializerManagerFactory,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
}
- public function create(array $jwe_serializers, array $keyEncryptionAlgorithms, array $contentEncryptionAlgorithms, array $compressionMethods, array $jws_serializers, array $signatureAlgorithms): NestedTokenBuilder
- {
- $jweBuilder = $this->jweBuilderFactory->create($keyEncryptionAlgorithms, $contentEncryptionAlgorithms, $compressionMethods);
+ public function create(
+ array $jwe_serializers,
+ array $keyEncryptionAlgorithms,
+ array $contentEncryptionAlgorithms,
+ array $compressionMethods,
+ array $jws_serializers,
+ array $signatureAlgorithms
+ ): NestedTokenBuilder {
+ $jweBuilder = $this->jweBuilderFactory->create(
+ $keyEncryptionAlgorithms,
+ $contentEncryptionAlgorithms,
+ $compressionMethods
+ );
$jweSerializerManager = $this->jweSerializerManagerFactory->create($jwe_serializers);
$jwsBuilder = $this->jwsBuilderFactory->create($signatureAlgorithms);
$jwsSerializerManager = $this->jwsSerializerManagerFactory->create($jws_serializers);
- return new NestedTokenBuilder($jweBuilder, $jweSerializerManager, $jwsBuilder, $jwsSerializerManager, $this->eventDispatcher);
+ return new NestedTokenBuilder(
+ $jweBuilder,
+ $jweSerializerManager,
+ $jwsBuilder,
+ $jwsSerializerManager,
+ $this->eventDispatcher
+ );
}
}
diff --git a/src/Bundle/JoseFramework/Services/NestedTokenLoader.php b/src/Bundle/JoseFramework/Services/NestedTokenLoader.php
index 8ca2aa8a..fba529c7 100644
--- a/src/Bundle/JoseFramework/Services/NestedTokenLoader.php
+++ b/src/Bundle/JoseFramework/Services/NestedTokenLoader.php
@@ -2,15 +2,6 @@
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\Bundle\JoseFramework\Services;
use Jose\Bundle\JoseFramework\Event\NestedTokenLoadingFailureEvent;
@@ -25,15 +16,12 @@
final class NestedTokenLoader extends BaseNestedTokenLoader
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- public function __construct(JWELoader $jweLoader, JWSLoader $jwsLoader, EventDispatcherInterface $eventDispatcher)
- {
+ public function __construct(
+ JWELoader $jweLoader,
+ JWSLoader $jwsLoader,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
parent::__construct($jweLoader, $jwsLoader);
- $this->eventDispatcher = $eventDispatcher;
}
public function load(string $token, JWKSet $encryptionKeySet, JWKSet $signatureKeySet, ?int &$signature = null): JWS
diff --git a/src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php b/src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php
index 4f561c80..b36f28ca 100644
--- a/src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php
+++ b/src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php
@@ -2,46 +2,36 @@
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\Bundle\JoseFramework\Services;
use Psr\EventDispatcher\EventDispatcherInterface;
final class NestedTokenLoaderFactory
{
- /**
- * @var EventDispatcherInterface
- */
- private $eventDispatcher;
-
- /**
- * @var JWELoaderFactory
- */
- private $jweLoaderFactory;
-
- /**
- * @var JWSLoaderFactory
- */
- private $jwsLoaderFactory;
-
- public function __construct(JWELoaderFactory $jweLoaderFactory, JWSLoaderFactory $jwsLoaderFactory, EventDispatcherInterface $eventDispatcher)
- {
- $this->jweLoaderFactory = $jweLoaderFactory;
- $this->jwsLoaderFactory = $jwsLoaderFactory;
- $this->eventDispatcher = $eventDispatcher;
+ public function __construct(
+ private JWELoaderFactory $jweLoaderFactory,
+ private JWSLoaderFactory $jwsLoaderFactory,
+ private EventDispatcherInterface $eventDispatcher
+ ) {
}
- public function create(array $jweSerializers, array $keyEncryptionAlgorithms, array $contentEncryptionAlgorithms, array $compressionMethods, array $jweHeaderCheckers, array $jwsSerializers, array $signatureAlgorithms, array $jwsHeaderCheckers): NestedTokenLoader
- {
- $jweLoader = $this->jweLoaderFactory->create($jweSerializers, $keyEncryptionAlgorithms, $contentEncryptionAlgorithms, $compressionMethods, $jweHeaderCheckers);
+ public function create(
+ array $jweSerializers,
+ array $keyEncryptionAlgorithms,
+ array $contentEncryptionAlgorithms,
+ 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, $this->eventDispatcher);
diff --git a/src/Bundle/JoseFramework/composer.json b/src/Bundle/JoseFramework/composer.json
index 0125f140..86b9bcd1 100644
--- a/src/Bundle/JoseFramework/composer.json
+++ b/src/Bundle/JoseFramework/composer.json
@@ -21,10 +21,10 @@
},
"require": {
"psr/event-dispatcher": "^1.0",
- "symfony/config": "^4.2|^5.0",
- "symfony/dependency-injection": "^4.2|^5.0",
- "symfony/event-dispatcher": "^4.2|^5.0",
- "symfony/http-kernel": "^4.2|^5.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
"web-token/jwt-core": "^2.1"
},
"suggest": {
diff --git a/src/Component/Checker/AlgorithmChecker.php b/src/Component/Checker/AlgorithmChecker.php
index cdd4adfc..d082db3b 100644
--- a/src/Component/Checker/AlgorithmChecker.php
+++ b/src/Component/Checker/AlgorithmChecker.php
@@ -2,56 +2,37 @@
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\Checker;
use function in_array;
use function is_string;
/**
- * This class is a header parameter checker.
- * When the "alg" header parameter is present, it will check if the value is within the allowed ones.
+ * This class is a header parameter checker. When the "alg" header parameter is present, it will check if the value is
+ * within the allowed ones.
*/
final class AlgorithmChecker implements HeaderChecker
{
private const HEADER_NAME = 'alg';
- /**
- * @var bool
- */
- private $protectedHeader = false;
-
- /**
- * @var string[]
- */
- private $supportedAlgorithms;
-
/**
* @param string[] $supportedAlgorithms
*/
- public function __construct(array $supportedAlgorithms, bool $protectedHeader = false)
- {
- $this->supportedAlgorithms = $supportedAlgorithms;
- $this->protectedHeader = $protectedHeader;
+ public function __construct(
+ private array $supportedAlgorithms,
+ private bool $protectedHeader = false
+ ) {
}
/**
* {@inheritdoc}
*/
- public function checkHeader($value): void
+ public function checkHeader(mixed $value): void
{
- if (!is_string($value)) {
+ if (! is_string($value)) {
throw new InvalidHeaderException('"alg" must be a string.', self::HEADER_NAME, $value);
}
- if (!in_array($value, $this->supportedAlgorithms, true)) {
+ if (! in_array($value, $this->supportedAlgorithms, true)) {
throw new InvalidHeaderException('Unsupported algorithm.', self::HEADER_NAME, $value);
}
}
diff --git a/src/Component/Checker/AudienceChecker.php b/src/Component/Checker/AudienceChecker.php
index bcdea131..6d1a8395 100644
--- a/src/Component/Checker/AudienceChecker.php
+++ b/src/Component/Checker/AudienceChecker.php
@@ -2,15 +2,6 @@
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\Checker;
use function in_array;
@@ -18,33 +9,23 @@
use function is_string;
/**
- * This class is a header parameter and claim checker.
- * When the "aud" header parameter or claim is present, it will check if the value is within the allowed ones.
+ * This class is a header parameter and claim checker. When the "aud" header parameter or claim is present, it will
+ * check if the value is within the allowed ones.
*/
final class AudienceChecker implements ClaimChecker, HeaderChecker
{
private const CLAIM_NAME = 'aud';
- /**
- * @var bool
- */
- private $protectedHeader;
-
- /**
- * @var string
- */
- private $audience;
-
- public function __construct(string $audience, bool $protectedHeader = false)
- {
- $this->audience = $audience;
- $this->protectedHeader = $protectedHeader;
+ public function __construct(
+ private string $audience,
+ private bool $protectedHeader = false
+ ) {
}
/**
* {@inheritdoc}
*/
- public function checkClaim($value): void
+ public function checkClaim(mixed $value): void
{
$this->checkValue($value, InvalidClaimException::class);
}
@@ -52,7 +33,7 @@ public function checkClaim($value): void
/**
* {@inheritdoc}
*/
- public function checkHeader($value): void
+ public function checkHeader(mixed $value): void
{
$this->checkValue($value, InvalidHeaderException::class);
}
@@ -72,21 +53,15 @@ public function protectedHeaderOnly(): bool
return $this->protectedHeader;
}
- /**
- * @param mixed $value
- *
- * @throws InvalidClaimException if the claim is invalid
- * @throws InvalidHeaderException if the header is invalid
- */
- private function checkValue($value, string $class): void
+ private function checkValue(mixed $value, string $class): void
{
if (is_string($value) && $value !== $this->audience) {
throw new $class('Bad audience.', self::CLAIM_NAME, $value);
}
- if (is_array($value) && !in_array($this->audience, $value, true)) {
+ if (is_array($value) && ! in_array($this->audience, $value, true)) {
throw new $class('Bad audience.', self::CLAIM_NAME, $value);
}
- if (!is_array($value) && !is_string($value)) {
+ if (! is_array($value) && ! is_string($value)) {
throw new $class('Bad audience.', self::CLAIM_NAME, $value);
}
}
diff --git a/src/Component/Checker/ClaimChecker.php b/src/Component/Checker/ClaimChecker.php
index 5de777e0..771f6d3f 100644
--- a/src/Component/Checker/ClaimChecker.php
+++ b/src/Component/Checker/ClaimChecker.php
@@ -2,28 +2,15 @@
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\Checker;
interface ClaimChecker
{
/**
- * When the token has the applicable claim, the value is checked.
- * If for some reason the value is not valid, an InvalidClaimException must be thrown.
- *
- * @param mixed $value
- *
- * @throws InvalidClaimException if the claim is invalid
+ * When the token has the applicable claim, the value is checked. If for some reason the value is not valid, an
+ * InvalidClaimException must be thrown.
*/
- public function checkClaim($value): void;
+ public function checkClaim(mixed $value): void;
/**
* The method returns the claim to be checked.
diff --git a/src/Component/Checker/ClaimCheckerManager.php b/src/Component/Checker/ClaimCheckerManager.php
index 23af13f2..8b2bc899 100644
--- a/src/Component/Checker/ClaimCheckerManager.php
+++ b/src/Component/Checker/ClaimCheckerManager.php
@@ -2,15 +2,6 @@
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\Checker;
use function array_key_exists;
@@ -47,17 +38,13 @@ public function getCheckers(): array
}
/**
- * This method checks all the claims passed as argument.
- * All claims are checked against the claim checkers.
- * If one fails, the InvalidClaimException is thrown.
+ * This method checks all the claims passed as argument. All claims are checked against the claim checkers. If one
+ * fails, the InvalidClaimException is thrown.
*
- * This method returns an array with all checked claims.
- * It is up to the implementor to decide use the claims that have not been checked.
+ * This method returns an array with all checked claims. It is up to the implementor to decide use the claims that
+ * have not been checked.
*
* @param string[] $mandatoryClaims
- *
- * @throws InvalidClaimException
- * @throws MissingMandatoryClaimException
*/
public function check(array $claims, array $mandatoryClaims = []): array
{
@@ -81,17 +68,18 @@ private function add(ClaimChecker $checker): void
/**
* @param string[] $mandatoryClaims
- *
- * @throws MissingMandatoryClaimException
*/
private function checkMandatoryClaims(array $mandatoryClaims, array $claims): void
{
- if (0 === count($mandatoryClaims)) {
+ if (count($mandatoryClaims) === 0) {
return;
}
$diff = array_keys(array_diff_key(array_flip($mandatoryClaims), $claims));
- if (0 !== count($diff)) {
- throw new MissingMandatoryClaimException(sprintf('The following claims are mandatory: %s.', implode(', ', $diff)), $diff);
+ if (count($diff) !== 0) {
+ throw new MissingMandatoryClaimException(sprintf(
+ 'The following claims are mandatory: %s.',
+ implode(', ', $diff)
+ ), $diff);
}
}
}
diff --git a/src/Component/Checker/ClaimCheckerManagerFactory.php b/src/Component/Checker/ClaimCheckerManagerFactory.php
index 192b3424..8dd5f3d1 100644
--- a/src/Component/Checker/ClaimCheckerManagerFactory.php
+++ b/src/Component/Checker/ClaimCheckerManagerFactory.php
@@ -2,15 +2,6 @@
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\Checker;
use InvalidArgumentException;
@@ -23,8 +14,8 @@ class ClaimCheckerManagerFactory
private $checkers = [];
/**
- * This method creates a Claim Checker Manager and populate it with the claim checkers found based on the alias.
- * If the alias is not supported, an InvalidArgumentException is thrown.
+ * This method creates a Claim Checker Manager and populate it with the claim checkers found based on the alias. If
+ * the alias is not supported, an InvalidArgumentException is thrown.
*
* @param string[] $aliases
*/
@@ -32,8 +23,11 @@ public function create(array $aliases): ClaimCheckerManager
{
$checkers = [];
foreach ($aliases as $alias) {
- if (!isset($this->checkers[$alias])) {
- throw new InvalidArgumentException(sprintf('The claim checker with the alias "%s" is not supported.', $alias));
+ if (! isset($this->checkers[$alias])) {
+ throw new InvalidArgumentException(sprintf(
+ 'The claim checker with the alias "%s" is not supported.',
+ $alias
+ ));
}
$checkers[] = $this->checkers[$alias];
}
diff --git a/src/Component/Checker/ClaimExceptionInterface.php b/src/Component/Checker/ClaimExceptionInterface.php
index 5ffb5ee4..47971d03 100644
--- a/src/Component/Checker/ClaimExceptionInterface.php
+++ b/src/Component/Checker/ClaimExceptionInterface.php
@@ -2,15 +2,6 @@
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\Checker;
use Throwable;
diff --git a/src/Component/Checker/ExpirationTimeChecker.php b/src/Component/Checker/ExpirationTimeChecker.php
index 3fbffb37..f91060be 100644
--- a/src/Component/Checker/ExpirationTimeChecker.php
+++ b/src/Component/Checker/ExpirationTimeChecker.php
@@ -2,51 +2,30 @@
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\Checker;
use function is_float;
use function is_int;
/**
- * This class is a claim checker.
- * When the "exp" is present, it will compare the value with the current timestamp.
+ * This class is a claim checker. When the "exp" is present, it will compare the value with the current timestamp.
*/
final class ExpirationTimeChecker implements ClaimChecker, HeaderChecker
{
private const NAME = 'exp';
- /**
- * @var int
- */
- private $allowedTimeDrift;
- /**
- * @var bool
- */
- private $protectedHeaderOnly;
-
- public function __construct(int $allowedTimeDrift = 0, bool $protectedHeaderOnly = false)
- {
- $this->allowedTimeDrift = $allowedTimeDrift;
- $this->protectedHeaderOnly = $protectedHeaderOnly;
+ public function __construct(
+ private int $allowedTimeDrift = 0,
+ private bool $protectedHeaderOnly = false
+ ) {
}
/**
* {@inheritdoc}
- *
- * @throws InvalidClaimException if the claim "exp" is not valid
*/
- public function checkClaim($value): void
+ public function checkClaim(mixed $value): void
{
- if (!is_float($value) && !is_int($value)) {
+ if (! is_float($value) && ! is_int($value)) {
throw new InvalidClaimException('"exp" must be an integer.', self::NAME, $value);
}
if (time() > $value + $this->allowedTimeDrift) {
@@ -59,14 +38,9 @@ public function supportedClaim(): string
return self::NAME;
}
- /**
- * @param mixed $value
- *
- * @throws InvalidHeaderException if the claim "exp" is not valid
- */
- public function checkHeader($value): void
+ public function checkHeader(mixed $value): void
{
- if (!is_float($value) && !is_int($value)) {
+ if (! is_float($value) && ! is_int($value)) {
throw new InvalidHeaderException('"exp" must be an integer.', self::NAME, $value);
}
if (time() > $value + $this->allowedTimeDrift) {
diff --git a/src/Component/Checker/HeaderChecker.php b/src/Component/Checker/HeaderChecker.php
index 03c1c697..0856235b 100644
--- a/src/Component/Checker/HeaderChecker.php
+++ b/src/Component/Checker/HeaderChecker.php
@@ -2,28 +2,15 @@
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\Checker;
interface HeaderChecker
{
/**
- * This method is called when the header parameter is present.
- * If for some reason the value is not valid, an InvalidHeaderException must be thrown.
- *
- * @param mixed $value
- *
- * @throws InvalidHeaderException if the header parameter is invalid
+ * This method is called when the header parameter is present. If for some reason the value is not valid, an
+ * InvalidHeaderException must be thrown.
*/
- public function checkHeader($value): void;
+ public function checkHeader(mixed $value): void;
/**
* The method returns the header parameter to be checked.
diff --git a/src/Component/Checker/HeaderCheckerManager.php b/src/Component/Checker/HeaderCheckerManager.php
index 7b250cd1..4bbfe75c 100644
--- a/src/Component/Checker/HeaderCheckerManager.php
+++ b/src/Component/Checker/HeaderCheckerManager.php
@@ -2,15 +2,6 @@
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\Checker;
use function array_key_exists;
@@ -29,7 +20,7 @@ class HeaderCheckerManager
/**
* @var TokenTypeSupport[]
*/
- private $tokenTypes = [];
+ private array $tokenTypes = [];
/**
* HeaderCheckerManager constructor.
@@ -58,13 +49,10 @@ public function getCheckers(): array
}
/**
- * This method checks all the header parameters passed as argument.
- * All header parameters are checked against the header parameter checkers.
- * If one fails, the InvalidHeaderException is thrown.
+ * This method checks all the header parameters passed as argument. All header parameters are checked against the
+ * header parameter checkers. If one fails, the InvalidHeaderException is thrown.
*
* @param string[] $mandatoryHeaderParameters
- *
- * @throws InvalidArgumentException if the token format is not valid
*/
public function check(JWT $jwt, int $index, array $mandatoryHeaderParameters = []): void
{
@@ -95,36 +83,39 @@ private function add(HeaderChecker $checker): void
$this->checkers[$header] = $checker;
}
- /**
- * @throws InvalidArgumentException if the header contains duplicated entries
- */
private function checkDuplicatedHeaderParameters(array $header1, array $header2): void
{
$inter = array_intersect_key($header1, $header2);
- if (0 !== count($inter)) {
- throw new InvalidArgumentException(sprintf('The header contains duplicated entries: %s.', implode(', ', array_keys($inter))));
+ if (count($inter) !== 0) {
+ throw new InvalidArgumentException(sprintf(
+ 'The header contains duplicated entries: %s.',
+ implode(', ', array_keys($inter))
+ ));
}
}
/**
* @param string[] $mandatoryHeaderParameters
- *
- * @throws MissingMandatoryHeaderParameterException if a mandatory header parameter is missing
*/
- private function checkMandatoryHeaderParameters(array $mandatoryHeaderParameters, array $protected, array $unprotected): void
- {
- if (0 === count($mandatoryHeaderParameters)) {
+ private function checkMandatoryHeaderParameters(
+ array $mandatoryHeaderParameters,
+ array $protected,
+ array $unprotected
+ ): void {
+ if (count($mandatoryHeaderParameters) === 0) {
return;
}
- $diff = array_keys(array_diff_key(array_flip($mandatoryHeaderParameters), array_merge($protected, $unprotected)));
- if (0 !== count($diff)) {
- throw new MissingMandatoryHeaderParameterException(sprintf('The following header parameters are mandatory: %s.', implode(', ', $diff)), $diff);
+ $diff = array_keys(
+ array_diff_key(array_flip($mandatoryHeaderParameters), array_merge($protected, $unprotected))
+ );
+ if (count($diff) !== 0) {
+ throw new MissingMandatoryHeaderParameterException(sprintf(
+ 'The following header parameters are mandatory: %s.',
+ implode(', ', $diff)
+ ), $diff);
}
}
- /**
- * @throws InvalidHeaderException if a protected header parameter is not in the protected header
- */
private function checkHeaders(array $protected, array $header): void
{
$checkedHeaderParameters = [];
@@ -134,7 +125,10 @@ private function checkHeaders(array $protected, array $header): void
$checker->checkHeader($protected[$headerParameter]);
$checkedHeaderParameters[] = $headerParameter;
} elseif (array_key_exists($headerParameter, $header)) {
- throw new InvalidHeaderException(sprintf('The header parameter "%s" must be protected.', $headerParameter), $headerParameter, $header[$headerParameter]);
+ throw new InvalidHeaderException(sprintf(
+ 'The header parameter "%s" must be protected.',
+ $headerParameter
+ ), $headerParameter, $header[$headerParameter]);
}
} else {
if (array_key_exists($headerParameter, $protected)) {
@@ -149,18 +143,22 @@ private function checkHeaders(array $protected, array $header): void
$this->checkCriticalHeader($protected, $header, $checkedHeaderParameters);
}
- /**
- * @throws InvalidHeaderException if the "crit" parameter is not valid or if a critical header parameter cannot be verified
- */
private function checkCriticalHeader(array $protected, array $header, array $checkedHeaderParameters): void
{
if (array_key_exists('crit', $protected)) {
- if (!is_array($protected['crit'])) {
- throw new InvalidHeaderException('The header "crit" must be a list of header parameters.', 'crit', $protected['crit']);
+ if (! is_array($protected['crit'])) {
+ throw new InvalidHeaderException(
+ 'The header "crit" must be a list of header parameters.',
+ 'crit',
+ $protected['crit']
+ );
}
$diff = array_diff($protected['crit'], $checkedHeaderParameters);
- if (0 !== count($diff)) {
- throw new InvalidHeaderException(sprintf('One or more header parameters are marked as critical, but they are missing or have not been checked: %s.', implode(', ', array_values($diff))), 'crit', $protected['crit']);
+ if (count($diff) !== 0) {
+ throw new InvalidHeaderException(sprintf(
+ 'One or more header parameters are marked as critical, but they are missing or have not been checked: %s.',
+ implode(', ', array_values($diff))
+ ), 'crit', $protected['crit']);
}
} elseif (array_key_exists('crit', $header)) {
throw new InvalidHeaderException('The header parameter "crit" must be protected.', 'crit', $header['crit']);
diff --git a/src/Component/Checker/HeaderCheckerManagerFactory.php b/src/Component/Checker/HeaderCheckerManagerFactory.php
index 860580b8..3b71dcfb 100644
--- a/src/Component/Checker/HeaderCheckerManagerFactory.php
+++ b/src/Component/Checker/HeaderCheckerManagerFactory.php
@@ -2,15 +2,6 @@
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\Checker;
use InvalidArgumentException;
@@ -25,22 +16,23 @@ class HeaderCheckerManagerFactory
/**
* @var TokenTypeSupport[]
*/
- private $tokenTypes = [];
+ private array $tokenTypes = [];
/**
- * This method creates a Header Checker Manager and populate it with the header parameter checkers found based on the alias.
- * If the alias is not supported, an InvalidArgumentException is thrown.
+ * This method creates a Header Checker Manager and populate it with the header parameter checkers found based on
+ * the alias. If the alias is not supported, an InvalidArgumentException is thrown.
*
* @param string[] $aliases
- *
- * @throws InvalidArgumentException if an alias is not supported
*/
public function create(array $aliases): HeaderCheckerManager
{
$checkers = [];
foreach ($aliases as $alias) {
- if (!isset($this->checkers[$alias])) {
- throw new InvalidArgumentException(sprintf('The header checker with the alias "%s" is not supported.', $alias));
+ if (! isset($this->checkers[$alias])) {
+ throw new InvalidArgumentException(sprintf(
+ 'The header checker with the alias "%s" is not supported.',
+ $alias
+ ));
}
$checkers[] = $this->checkers[$alias];
}
@@ -49,9 +41,8 @@ public function create(array $aliases): HeaderCheckerManager
}
/**
- * This method adds a header parameter checker to this factory.
- * The checker is uniquely identified by an alias. This allows the same header parameter checker to be added twice (or more)
- * using several configuration options.
+ * This method adds a header parameter checker to this factory. The checker is uniquely identified by an alias. This
+ * allows the same header parameter checker to be added twice (or more) using several configuration options.
*/
public function add(string $alias, HeaderChecker $checker): void
{
diff --git a/src/Component/Checker/InvalidClaimException.php b/src/Component/Checker/InvalidClaimException.php
index b834843f..0a477e40 100644
--- a/src/Component/Checker/InvalidClaimException.php
+++ b/src/Component/Checker/InvalidClaimException.php
@@ -2,15 +2,6 @@
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\Checker;
use Exception;
@@ -20,25 +11,12 @@
*/
class InvalidClaimException extends Exception implements ClaimExceptionInterface
{
- /**
- * @var string
- */
- private $claim;
-
- /**
- * @var mixed
- */
- private $value;
-
- /**
- * @param mixed $value
- */
- public function __construct(string $message, string $claim, $value)
- {
+ public function __construct(
+ string $message,
+ private string $claim,
+ private mixed $value
+ ) {
parent::__construct($message);
-
- $this->claim = $claim;
- $this->value = $value;
}
/**
@@ -51,10 +29,8 @@ public function getClaim(): string
/**
* Returns the claim value that caused the exception.
- *
- * @return mixed
*/
- public function getValue()
+ public function getValue(): mixed
{
return $this->value;
}
diff --git a/src/Component/Checker/InvalidHeaderException.php b/src/Component/Checker/InvalidHeaderException.php
index 50d1e9d3..582c208f 100644
--- a/src/Component/Checker/InvalidHeaderException.php
+++ b/src/Component/Checker/InvalidHeaderException.php
@@ -2,15 +2,6 @@
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\Checker;
use Exception;
@@ -20,25 +11,12 @@
*/
class InvalidHeaderException extends Exception
{
- /**
- * @var string
- */
- private $header;
-
- /**
- * @var mixed
- */
- private $value;
-
- /**
- * @param mixed $value
- */
- public function __construct(string $message, string $header, $value)
- {
+ public function __construct(
+ string $message,
+ private string $header,
+ private mixed $value
+ ) {
parent::__construct($message);
-
- $this->header = $header;
- $this->value = $value;
}
/**
@@ -51,10 +29,8 @@ public function getHeader(): string
/**
* Returns the header parameter value that caused the exception.
- *
- * @return mixed
*/
- public function getValue()
+ public function getValue(): mixed
{
return $this->value;
}
diff --git a/src/Component/Checker/IssuedAtChecker.php b/src/Component/Checker/IssuedAtChecker.php
index d005957b..db84caa7 100644
--- a/src/Component/Checker/IssuedAtChecker.php
+++ b/src/Component/Checker/IssuedAtChecker.php
@@ -2,51 +2,30 @@
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\Checker;
use function is_float;
use function is_int;
/**
- * This class is a claim checker.
- * When the "iat" is present, it will compare the value with the current timestamp.
+ * This class is a claim checker. When the "iat" is present, it will compare the value with the current timestamp.
*/
final class IssuedAtChecker implements ClaimChecker, HeaderChecker
{
private const NAME = 'iat';
- /**
- * @var int
- */
- private $allowedTimeDrift;
- /**
- * @var bool
- */
- private $protectedHeaderOnly;
-
- public function __construct(int $allowedTimeDrift = 0, bool $protectedHeaderOnly = false)
- {
- $this->allowedTimeDrift = $allowedTimeDrift;
- $this->protectedHeaderOnly = $protectedHeaderOnly;
+ public function __construct(
+ private int $allowedTimeDrift = 0,
+ private bool $protectedHeaderOnly = false
+ ) {
}
/**
* {@inheritdoc}
- *
- * @throws InvalidClaimException if the claim is invalid
*/
- public function checkClaim($value): void
+ public function checkClaim(mixed $value): void
{
- if (!is_float($value) && !is_int($value)) {
+ if (! is_float($value) && ! is_int($value)) {
throw new InvalidClaimException('"iat" must be an integer.', self::NAME, $value);
}
if (time() < $value - $this->allowedTimeDrift) {
@@ -59,14 +38,9 @@ public function supportedClaim(): string
return self::NAME;
}
- /**
- * @param mixed $value
- *
- * @throws InvalidHeaderException if the header parameter is invalid
- */
- public function checkHeader($value): void
+ public function checkHeader(mixed $value): void
{
- if (!is_float($value) && !is_int($value)) {
+ if (! is_float($value) && ! is_int($value)) {
throw new InvalidHeaderException('The header "iat" must be an integer.', self::NAME, $value);
}
if (time() < $value - $this->allowedTimeDrift) {
diff --git a/src/Component/Checker/IssuerChecker.php b/src/Component/Checker/IssuerChecker.php
index 61476770..2cb50417 100644
--- a/src/Component/Checker/IssuerChecker.php
+++ b/src/Component/Checker/IssuerChecker.php
@@ -2,60 +2,31 @@
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\Checker;
use function in_array;
use function is_string;
/**
- * This class is a header parameter and claim checker.
- * When the "iss" header parameter or claim is present, it will check if the value is within the allowed ones.
+ * This class is a header parameter and claim checker. When the "iss" header parameter or claim is present, it will
+ * check if the value is within the allowed ones.
*/
final class IssuerChecker implements ClaimChecker, HeaderChecker
{
private const CLAIM_NAME = 'iss';
- /**
- * @var bool
- */
- private $protectedHeader = false;
-
- /**
- * @var array
- */
- private $issuers;
-
- public function __construct(array $issuer, bool $protectedHeader = false)
- {
- $this->issuers = $issuer;
- $this->protectedHeader = $protectedHeader;
+ public function __construct(
+ private array $issuers,
+ private bool $protectedHeader = false
+ ) {
}
- /**
- * @param mixed $value
- *
- * @throws InvalidClaimException if the claim is invalid
- */
- public function checkClaim($value): void
+ public function checkClaim(mixed $value): void
{
$this->checkValue($value, InvalidClaimException::class);
}
- /**
- * @param mixed $value
- *
- * @throws InvalidHeaderException if the header parameter is invalid
- */
- public function checkHeader($value): void
+ public function checkHeader(mixed $value): void
{
$this->checkValue($value, InvalidHeaderException::class);
}
@@ -75,18 +46,12 @@ public function protectedHeaderOnly(): bool
return $this->protectedHeader;
}
- /**
- * @param mixed $value
- *
- * @throws InvalidClaimException if the claim is invalid
- * @throws InvalidHeaderException if the header parameter is invalid
- */
- private function checkValue($value, string $class): void
+ private function checkValue(mixed $value, string $class): void
{
- if (!is_string($value)) {
+ if (! is_string($value)) {
throw new $class('Invalid value.', self::CLAIM_NAME, $value);
}
- if (!in_array($value, $this->issuers, true)) {
+ if (! in_array($value, $this->issuers, true)) {
throw new $class('Unknown issuer.', self::CLAIM_NAME, $value);
}
}
diff --git a/src/Component/Checker/MissingMandatoryClaimException.php b/src/Component/Checker/MissingMandatoryClaimException.php
index 275f9298..915372a8 100644
--- a/src/Component/Checker/MissingMandatoryClaimException.php
+++ b/src/Component/Checker/MissingMandatoryClaimException.php
@@ -2,15 +2,6 @@
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\Checker;
use Exception;
diff --git a/src/Component/Checker/MissingMandatoryHeaderParameterException.php b/src/Component/Checker/MissingMandatoryHeaderParameterException.php
index 97479b26..99a2528b 100644
--- a/src/Component/Checker/MissingMandatoryHeaderParameterException.php
+++ b/src/Component/Checker/MissingMandatoryHeaderParameterException.php
@@ -2,15 +2,6 @@
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\Checker;
use Exception;
diff --git a/src/Component/Checker/NotBeforeChecker.php b/src/Component/Checker/NotBeforeChecker.php
index 9a9e3b00..11e092b0 100644
--- a/src/Component/Checker/NotBeforeChecker.php
+++ b/src/Component/Checker/NotBeforeChecker.php
@@ -2,52 +2,30 @@
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\Checker;
use function is_float;
use function is_int;
/**
- * This class is a claim checker.
- * When the "nbf" is present, it will compare the value with the current timestamp.
+ * This class is a claim checker. When the "nbf" is present, it will compare the value with the current timestamp.
*/
final class NotBeforeChecker implements ClaimChecker, HeaderChecker
{
private const NAME = 'nbf';
- /**
- * @var int
- */
- private $allowedTimeDrift;
- /**
- * @var bool
- */
- private $protectedHeaderOnly;
-
- public function __construct(int $allowedTimeDrift = 0, bool $protectedHeaderOnly = false)
- {
- $this->allowedTimeDrift = $allowedTimeDrift;
- $this->protectedHeaderOnly = $protectedHeaderOnly;
+ public function __construct(
+ private int $allowedTimeDrift = 0,
+ private bool $protectedHeaderOnly = false
+ ) {
}
/**
* {@inheritdoc}
- *
- * @throws InvalidClaimException if the claim "nbf" is not an integer
- * @throws InvalidClaimException if the claim "nbf" restrict the use of the token
*/
- public function checkClaim($value): void
+ public function checkClaim(mixed $value): void
{
- if (!is_float($value) && !is_int($value)) {
+ if (! is_float($value) && ! is_int($value)) {
throw new InvalidClaimException('"nbf" must be an integer.', self::NAME, $value);
}
if (time() < $value - $this->allowedTimeDrift) {
@@ -60,15 +38,9 @@ public function supportedClaim(): string
return self::NAME;
}
- /**
- * @param mixed $value
- *
- * @throws InvalidHeaderException if the claim "nbf" is not an integer
- * @throws InvalidHeaderException if the claim "nbf" restrict the use of the token
- */
- public function checkHeader($value): void
+ public function checkHeader(mixed $value): void
{
- if (!is_float($value) && !is_int($value)) {
+ if (! is_float($value) && ! is_int($value)) {
throw new InvalidHeaderException('"nbf" must be an integer.', self::NAME, $value);
}
if (time() < $value - $this->allowedTimeDrift) {
diff --git a/src/Component/Checker/TokenTypeSupport.php b/src/Component/Checker/TokenTypeSupport.php
index 14062fd5..bfa4f0b2 100644
--- a/src/Component/Checker/TokenTypeSupport.php
+++ b/src/Component/Checker/TokenTypeSupport.php
@@ -2,15 +2,6 @@
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\Checker;
use Jose\Component\Core\JWT;
@@ -18,12 +9,17 @@
interface TokenTypeSupport
{
/**
- * This method will retrieve the protect and unprotected headers of the token for the given index.
- * The index is useful when the token is serialized using the Json General Serialization mode.
- * For example the JWE Json General Serialization Mode allows several recipients to be set.
- * The unprotected headers correspond to the share unprotected header and the selected recipient header.
+ * This method will retrieve the protect and unprotected headers of the token for the given index. The index is
+ * useful when the token is serialized using the Json General Serialization mode. For example the JWE Json General
+ * Serialization Mode allows several recipients to be set. The unprotected headers correspond to the share
+ * unprotected header and the selected recipient header.
*/
- public function retrieveTokenHeaders(JWT $jwt, int $index, array &$protectedHeader, array &$unprotectedHeader): void;
+ public function retrieveTokenHeaders(
+ JWT $jwt,
+ int $index,
+ array &$protectedHeader,
+ array &$unprotectedHeader
+ ): void;
/**
* This method returns true if the token in argument is supported, otherwise false.
diff --git a/src/Component/Checker/UnencodedPayloadChecker.php b/src/Component/Checker/UnencodedPayloadChecker.php
index 4f6e4930..0a94c37c 100644
--- a/src/Component/Checker/UnencodedPayloadChecker.php
+++ b/src/Component/Checker/UnencodedPayloadChecker.php
@@ -2,22 +2,12 @@
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\Checker;
use function is_bool;
/**
- * This class is a header parameter checker.
- * When the "b64" is present, it will check if the value is a boolean or not.
+ * This class is a header parameter checker. When the "b64" is present, it will check if the value is a boolean or not.
*
* The use of this checker will allow the use of token with unencoded payload.
*/
@@ -27,12 +17,10 @@ final class UnencodedPayloadChecker implements HeaderChecker
/**
* {@inheritdoc}
- *
- * @throws InvalidHeaderException if the header parameter "b64" is not a boolean
*/
- public function checkHeader($value): void
+ public function checkHeader(mixed $value): void
{
- if (!is_bool($value)) {
+ if (! is_bool($value)) {
throw new InvalidHeaderException('"b64" must be a boolean.', self::HEADER_NAME, $value);
}
}
diff --git a/src/Component/Console/AddKeyIntoKeysetCommand.php b/src/Component/Console/AddKeyIntoKeysetCommand.php
index 412bb7af..63bfce35 100644
--- a/src/Component/Console/AddKeyIntoKeysetCommand.php
+++ b/src/Component/Console/AddKeyIntoKeysetCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -25,12 +16,12 @@
final class AddKeyIntoKeysetCommand extends ObjectOutputCommand
{
+ protected static $defaultName = 'keyset:add:key';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('keyset:add:key')
- ->setDescription('Add a key into a key set.')
+ $this->setDescription('Add a key into a key set.')
->setHelp('This command adds a key at the end of a key set.')
->addArgument('jwkset', InputArgument::REQUIRED, 'The JWKSet object')
->addArgument('jwk', InputArgument::REQUIRED, 'The new JWK object')
@@ -47,34 +38,28 @@ protected function execute(InputInterface $input, OutputInterface $output): int
return 0;
}
- /**
- * @throws InvalidArgumentException if the key set is invalid
- */
private function getKeyset(InputInterface $input): JWKSet
{
$jwkset = $input->getArgument('jwkset');
- if (!is_string($jwkset)) {
+ if (! is_string($jwkset)) {
throw new InvalidArgumentException('The argument must be a valid JWKSet.');
}
$json = JsonConverter::decode($jwkset);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('The argument must be a valid JWKSet.');
}
return JWKSet::createFromKeyData($json);
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
private function getKey(InputInterface $input): JWK
{
$jwk = $input->getArgument('jwk');
- if (!is_string($jwk)) {
+ if (! is_string($jwk)) {
throw new InvalidArgumentException('The argument must be a valid JWK.');
}
$json = JsonConverter::decode($jwk);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('The argument must be a valid JWK.');
}
diff --git a/src/Component/Console/EcKeyGeneratorCommand.php b/src/Component/Console/EcKeyGeneratorCommand.php
index c8c982f0..666f4f72 100644
--- a/src/Component/Console/EcKeyGeneratorCommand.php
+++ b/src/Component/Console/EcKeyGeneratorCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -22,23 +13,20 @@
final class EcKeyGeneratorCommand extends GeneratorCommand
{
+ protected static $defaultName = 'key:generate:ec';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:generate:ec')
- ->setDescription('Generate an EC key (JWK format)')
+ $this->setDescription('Generate an EC key (JWK format)')
->addArgument('curve', InputArgument::REQUIRED, 'Curve of the key.')
;
}
- /**
- * @throws InvalidArgumentException if the curve is invalid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$curve = $input->getArgument('curve');
- if (!is_string($curve)) {
+ if (! is_string($curve)) {
throw new InvalidArgumentException('Invalid curve');
}
$args = $this->getOptions($input);
diff --git a/src/Component/Console/EcKeysetGeneratorCommand.php b/src/Component/Console/EcKeysetGeneratorCommand.php
index e3037b84..9123e6d4 100644
--- a/src/Component/Console/EcKeysetGeneratorCommand.php
+++ b/src/Component/Console/EcKeysetGeneratorCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -24,25 +15,21 @@
final class EcKeysetGeneratorCommand extends GeneratorCommand
{
+ protected static $defaultName = 'keyset:generate:ec';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('keyset:generate:ec')
- ->setDescription('Generate an EC key set (JWKSet format)')
+ $this->setDescription('Generate an EC key set (JWKSet format)')
->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of keys in the key set.')
->addArgument('curve', InputArgument::REQUIRED, 'Curve of the keys.')
;
}
- /**
- * @throws InvalidArgumentException if the quantity of keys is invalid
- * @throws InvalidArgumentException if the curve is invalid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$quantity = $input->getArgument('quantity');
- if (null === $quantity) {
+ if ($quantity === null) {
$quantity = 1;
} elseif (is_array($quantity)) {
$quantity = 1;
@@ -53,7 +40,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
throw new InvalidArgumentException('Invalid quantity');
}
$curve = $input->getArgument('curve');
- if (!is_string($curve)) {
+ if (! is_string($curve)) {
throw new InvalidArgumentException('Invalid curve');
}
diff --git a/src/Component/Console/GeneratorCommand.php b/src/Component/Console/GeneratorCommand.php
index cb0b2bc2..b7e97b75 100644
--- a/src/Component/Console/GeneratorCommand.php
+++ b/src/Component/Console/GeneratorCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -33,18 +24,20 @@ protected function configure(): void
$this
->addOption('use', 'u', InputOption::VALUE_OPTIONAL, 'Usage of the key. Must be either "sig" or "enc".')
->addOption('alg', 'a', InputOption::VALUE_OPTIONAL, 'Algorithm for the key.')
- ->addOption('random_id', null, InputOption::VALUE_NONE, 'If this option is set, a random key ID (kid) will be generated.')
+ ->addOption(
+ 'random_id',
+ null,
+ InputOption::VALUE_NONE,
+ 'If this option is set, a random key ID (kid) will be generated.'
+ )
;
}
- /**
- * @throws InvalidArgumentException if the option "random_id" is not a valid
- */
protected function getOptions(InputInterface $input): array
{
$args = [];
$useRandomId = $input->getOption('random_id');
- if (!is_bool($useRandomId)) {
+ if (! is_bool($useRandomId)) {
throw new InvalidArgumentException('Invalid value for option "random_id"');
}
if ($useRandomId) {
@@ -52,7 +45,7 @@ protected function getOptions(InputInterface $input): array
}
foreach (['use', 'alg'] as $key) {
$value = $input->getOption($key);
- if (null !== $value) {
+ if ($value !== null) {
$args[$key] = $value;
}
}
diff --git a/src/Component/Console/GetThumbprintCommand.php b/src/Component/Console/GetThumbprintCommand.php
index b7cbd897..3d12cc8d 100644
--- a/src/Component/Console/GetThumbprintCommand.php
+++ b/src/Component/Console/GetThumbprintCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -25,32 +16,29 @@
final class GetThumbprintCommand extends ObjectOutputCommand
{
+ protected static $defaultName = 'key:thumbprint';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:thumbprint')
- ->setDescription('Get the thumbprint of a JWK key.')
+ $this->setDescription('Get the thumbprint of a JWK key.')
->addArgument('jwk', InputArgument::REQUIRED, 'The JWK key.')
->addOption('hash', null, InputOption::VALUE_OPTIONAL, 'The hashing algorithm.', 'sha256')
;
}
- /**
- * @throws InvalidArgumentException if the JWK or the hashing function are invalid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$jwk = $input->getArgument('jwk');
- if (!is_string($jwk)) {
+ if (! is_string($jwk)) {
throw new InvalidArgumentException('Invalid JWK');
}
$hash = $input->getOption('hash');
- if (!is_string($hash)) {
+ if (! is_string($hash)) {
throw new InvalidArgumentException('Invalid hash algorithm');
}
$json = JsonConverter::decode($jwk);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('Invalid input.');
}
$key = new JWK($json);
diff --git a/src/Component/Console/JKULoaderCommand.php b/src/Component/Console/JKULoaderCommand.php
index 803a3de0..fe1083a9 100644
--- a/src/Component/Console/JKULoaderCommand.php
+++ b/src/Component/Console/JKULoaderCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -22,35 +13,28 @@
final class JKULoaderCommand extends ObjectOutputCommand
{
- /**
- * @var JKUFactory
- */
- private $jkuFactory;
+ protected static $defaultName = 'keyset:load:jku';
- public function __construct(JKUFactory $jkuFactory, ?string $name = null)
- {
- $this->jkuFactory = $jkuFactory;
+ public function __construct(
+ private JKUFactory $jkuFactory,
+ ?string $name = null
+ ) {
parent::__construct($name);
}
protected function configure(): void
{
parent::configure();
- $this
- ->setName('keyset:load:jku')
- ->setDescription('Loads a key set from an url.')
+ $this->setDescription('Loads a key set from an url.')
->setHelp('This command will try to get a key set from an URL. The distant key set is a JWKSet.')
->addArgument('url', InputArgument::REQUIRED, 'The URL')
;
}
- /**
- * @throws InvalidArgumentException if the URL is invalid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$url = $input->getArgument('url');
- if (!is_string($url)) {
+ if (! is_string($url)) {
throw new InvalidArgumentException('Invalid URL');
}
$result = $this->jkuFactory->loadFromUrl($url);
diff --git a/src/Component/Console/KeyAnalyzerCommand.php b/src/Component/Console/KeyAnalyzerCommand.php
index c4a3318a..77c4ae0e 100644
--- a/src/Component/Console/KeyAnalyzerCommand.php
+++ b/src/Component/Console/KeyAnalyzerCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -27,23 +18,19 @@
final class KeyAnalyzerCommand extends Command
{
- /**
- * @var KeyAnalyzerManager
- */
- private $analyzerManager;
+ protected static $defaultName = 'key:analyze';
- public function __construct(KeyAnalyzerManager $keysetAnalyzerManager, string $name = null)
- {
+ public function __construct(
+ private KeyAnalyzerManager $analyzerManager,
+ string $name = null
+ ) {
parent::__construct($name);
- $this->analyzerManager = $keysetAnalyzerManager;
}
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:analyze')
- ->setDescription('JWK quality analyzer.')
+ $this->setDescription('JWK quality analyzer.')
->setHelp('This command will analyze a JWK object and find security issues.')
->addArgument('jwk', InputArgument::REQUIRED, 'The JWK object')
;
@@ -51,35 +38,42 @@ protected function configure(): void
protected function execute(InputInterface $input, OutputInterface $output): int
{
- $output->getFormatter()->setStyle('success', new OutputFormatterStyle('white', 'green'));
- $output->getFormatter()->setStyle('high', new OutputFormatterStyle('white', 'red', ['bold']));
- $output->getFormatter()->setStyle('medium', new OutputFormatterStyle('yellow'));
- $output->getFormatter()->setStyle('low', new OutputFormatterStyle('blue'));
+ $output->getFormatter()
+ ->setStyle('success', new OutputFormatterStyle('white', 'green'))
+ ;
+ $output->getFormatter()
+ ->setStyle('high', new OutputFormatterStyle('white', 'red', ['bold']))
+ ;
+ $output->getFormatter()
+ ->setStyle('medium', new OutputFormatterStyle('yellow'))
+ ;
+ $output->getFormatter()
+ ->setStyle('low', new OutputFormatterStyle('blue'))
+ ;
$jwk = $this->getKey($input);
$result = $this->analyzerManager->analyze($jwk);
- if (0 === $result->count()) {
+ if ($result->count() === 0) {
$output->writeln('All good! No issue found.');
} else {
foreach ($result->all() as $message) {
- $output->writeln('<'.$message->getSeverity().'>* '.$message->getMessage().''.$message->getSeverity().'>');
+ $output->writeln(
+ '<' . $message->getSeverity() . '>* ' . $message->getMessage() . '' . $message->getSeverity() . '>'
+ );
}
}
return 0;
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
private function getKey(InputInterface $input): JWK
{
$jwk = $input->getArgument('jwk');
- if (!is_string($jwk)) {
+ if (! is_string($jwk)) {
throw new InvalidArgumentException('Invalid JWK');
}
$json = JsonConverter::decode($jwk);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('Invalid JWK.');
}
diff --git a/src/Component/Console/KeyFileLoaderCommand.php b/src/Component/Console/KeyFileLoaderCommand.php
index a53fe12b..95485fae 100644
--- a/src/Component/Console/KeyFileLoaderCommand.php
+++ b/src/Component/Console/KeyFileLoaderCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -23,29 +14,25 @@
final class KeyFileLoaderCommand extends GeneratorCommand
{
+ protected static $defaultName = 'key:load:key';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:load:key')
- ->setDescription('Loads a key from a key file (JWK format)')
+ $this->setDescription('Loads a key from a key file (JWK format)')
->addArgument('file', InputArgument::REQUIRED, 'Filename of the key.')
->addOption('secret', 's', InputOption::VALUE_OPTIONAL, 'Secret if the key is encrypted.', null)
;
}
- /**
- * @throws InvalidArgumentException if the file is invalid
- * @throws InvalidArgumentException if the secret is invalid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$file = $input->getArgument('file');
$password = $input->getOption('secret');
- if (!is_string($file)) {
+ if (! is_string($file)) {
throw new InvalidArgumentException('Invalid file');
}
- if (null !== $password && !is_string($password)) {
+ if ($password !== null && ! is_string($password)) {
throw new InvalidArgumentException('Invalid secret');
}
$args = $this->getOptions($input);
diff --git a/src/Component/Console/KeysetAnalyzerCommand.php b/src/Component/Console/KeysetAnalyzerCommand.php
index 920795b7..67a7cce3 100644
--- a/src/Component/Console/KeysetAnalyzerCommand.php
+++ b/src/Component/Console/KeysetAnalyzerCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -29,29 +20,20 @@
final class KeysetAnalyzerCommand extends Command
{
- /**
- * @var KeysetAnalyzerManager
- */
- private $keysetAnalyzerManager;
-
- /**
- * @var KeyAnalyzerManager
- */
- private $keyAnalyzerManager;
+ protected static $defaultName = 'keyset:analyze';
- public function __construct(KeysetAnalyzerManager $keysetAnalyzerManager, KeyAnalyzerManager $keyAnalyzerManager, string $name = null)
- {
+ public function __construct(
+ private KeysetAnalyzerManager $keysetAnalyzerManager,
+ private KeyAnalyzerManager $keyAnalyzerManager,
+ string $name = null
+ ) {
parent::__construct($name);
- $this->keysetAnalyzerManager = $keysetAnalyzerManager;
- $this->keyAnalyzerManager = $keyAnalyzerManager;
}
protected function configure(): void
{
parent::configure();
- $this
- ->setName('keyset:analyze')
- ->setDescription('JWKSet quality analyzer.')
+ $this->setDescription('JWKSet quality analyzer.')
->setHelp('This command will analyze a JWKSet object and find security issues.')
->addArgument('jwkset', InputArgument::REQUIRED, 'The JWKSet object')
;
@@ -59,10 +41,18 @@ protected function configure(): void
protected function execute(InputInterface $input, OutputInterface $output): int
{
- $output->getFormatter()->setStyle('success', new OutputFormatterStyle('white', 'green'));
- $output->getFormatter()->setStyle('high', new OutputFormatterStyle('white', 'red', ['bold']));
- $output->getFormatter()->setStyle('medium', new OutputFormatterStyle('yellow'));
- $output->getFormatter()->setStyle('low', new OutputFormatterStyle('blue'));
+ $output->getFormatter()
+ ->setStyle('success', new OutputFormatterStyle('white', 'green'))
+ ;
+ $output->getFormatter()
+ ->setStyle('high', new OutputFormatterStyle('white', 'red', ['bold']))
+ ;
+ $output->getFormatter()
+ ->setStyle('medium', new OutputFormatterStyle('yellow'))
+ ;
+ $output->getFormatter()
+ ->setStyle('low', new OutputFormatterStyle('blue'))
+ ;
$jwkset = $this->getKeyset($input);
@@ -79,26 +69,25 @@ protected function execute(InputInterface $input, OutputInterface $output): int
private function showMessages(MessageBag $messages, OutputInterface $output): void
{
- if (0 === $messages->count()) {
+ if ($messages->count() === 0) {
$output->writeln(' All good! No issue found.');
} else {
foreach ($messages->all() as $message) {
- $output->writeln(' <'.$message->getSeverity().'>* '.$message->getMessage().''.$message->getSeverity().'>');
+ $output->writeln(
+ ' <' . $message->getSeverity() . '>* ' . $message->getMessage() . '' . $message->getSeverity() . '>'
+ );
}
}
}
- /**
- * @throws InvalidArgumentException if the JWKSet is invalid
- */
private function getKeyset(InputInterface $input): JWKSet
{
$jwkset = $input->getArgument('jwkset');
- if (!is_string($jwkset)) {
+ if (! is_string($jwkset)) {
throw new InvalidArgumentException('Invalid JWKSet');
}
$json = JsonConverter::decode($jwkset);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('Invalid JWKSet');
}
diff --git a/src/Component/Console/MergeKeysetCommand.php b/src/Component/Console/MergeKeysetCommand.php
index 2e28c82f..89530720 100644
--- a/src/Component/Console/MergeKeysetCommand.php
+++ b/src/Component/Console/MergeKeysetCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -23,20 +14,19 @@
final class MergeKeysetCommand extends ObjectOutputCommand
{
+ protected static $defaultName = 'keyset:merge';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('keyset:merge')
- ->setDescription('Merge several key sets into one.')
- ->setHelp('This command merges several key sets into one. It is very useful when you generate e.g. RSA, EC and OKP keys and you want only one key set to rule them all.')
+ $this->setDescription('Merge several key sets into one.')
+ ->setHelp(
+ 'This command merges several key sets into one. It is very useful when you generate e.g. RSA, EC and OKP keys and you want only one key set to rule them all.'
+ )
->addArgument('jwksets', InputArgument::REQUIRED | InputArgument::IS_ARRAY, 'The JWKSet objects')
;
}
- /**
- * @throws InvalidArgumentException if the JWKSet is invalid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
/** @var string[] $keySets */
@@ -44,7 +34,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
$newJwkset = new JWKSet([]);
foreach ($keySets as $keySet) {
$json = JsonConverter::decode($keySet);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('The argument must be a valid JWKSet.');
}
$jwkset = JWKSet::createFromKeyData($json);
diff --git a/src/Component/Console/NoneKeyGeneratorCommand.php b/src/Component/Console/NoneKeyGeneratorCommand.php
index 21a9a061..8d1a18a6 100644
--- a/src/Component/Console/NoneKeyGeneratorCommand.php
+++ b/src/Component/Console/NoneKeyGeneratorCommand.php
@@ -2,15 +2,6 @@
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\Console;
use Jose\Component\KeyManagement\JWKFactory;
@@ -19,12 +10,14 @@
final class NoneKeyGeneratorCommand extends GeneratorCommand
{
+ protected static $defaultName = 'key:generate:none';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:generate:none')
- ->setDescription('Generate a none key (JWK format). This key type is only supposed to be used with the "none" algorithm.')
+ $this->setDescription(
+ 'Generate a none key (JWK format). This key type is only supposed to be used with the "none" algorithm.'
+ )
;
}
diff --git a/src/Component/Console/ObjectOutputCommand.php b/src/Component/Console/ObjectOutputCommand.php
index 9b212427..12f0acb3 100644
--- a/src/Component/Console/ObjectOutputCommand.php
+++ b/src/Component/Console/ObjectOutputCommand.php
@@ -2,15 +2,6 @@
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\Console;
use Jose\Component\Core\Util\JsonConverter;
diff --git a/src/Component/Console/OctKeyGeneratorCommand.php b/src/Component/Console/OctKeyGeneratorCommand.php
index 1620bf9e..575b8d34 100644
--- a/src/Component/Console/OctKeyGeneratorCommand.php
+++ b/src/Component/Console/OctKeyGeneratorCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -22,23 +13,20 @@
final class OctKeyGeneratorCommand extends GeneratorCommand
{
+ protected static $defaultName = 'key:generate:oct';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:generate:oct')
- ->setDescription('Generate an octet key (JWK format)')
+ $this->setDescription('Generate an octet key (JWK format)')
->addArgument('size', InputArgument::REQUIRED, 'Key size.')
;
}
- /**
- * @throws InvalidArgumentException if the key size is not valid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$size = $input->getArgument('size');
- if (null === $size) {
+ if ($size === null) {
$size = 1;
} elseif (is_array($size)) {
$size = 1;
diff --git a/src/Component/Console/OctKeysetGeneratorCommand.php b/src/Component/Console/OctKeysetGeneratorCommand.php
index d53430b2..9a2d9a3e 100644
--- a/src/Component/Console/OctKeysetGeneratorCommand.php
+++ b/src/Component/Console/OctKeysetGeneratorCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -23,25 +14,21 @@
final class OctKeysetGeneratorCommand extends GeneratorCommand
{
+ protected static $defaultName = 'keyset:generate:oct';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('keyset:generate:oct')
- ->setDescription('Generate a key set with octet keys (JWK format)')
+ $this->setDescription('Generate a key set with octet keys (JWK format)')
->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of keys in the key set.')
->addArgument('size', InputArgument::REQUIRED, 'Key size.')
;
}
- /**
- * @throws InvalidArgumentException if the quantity is not valid
- * @throws InvalidArgumentException if the key size is not valid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$quantity = $input->getArgument('quantity');
- if (null === $quantity) {
+ if ($quantity === null) {
$quantity = 1;
} elseif (is_array($quantity)) {
$quantity = 1;
@@ -50,7 +37,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
}
$size = $input->getArgument('size');
- if (null === $size) {
+ if ($size === null) {
$size = 1;
} elseif (is_array($size)) {
$size = 1;
diff --git a/src/Component/Console/OkpKeyGeneratorCommand.php b/src/Component/Console/OkpKeyGeneratorCommand.php
index d38c2107..a99141be 100644
--- a/src/Component/Console/OkpKeyGeneratorCommand.php
+++ b/src/Component/Console/OkpKeyGeneratorCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -22,23 +13,20 @@
final class OkpKeyGeneratorCommand extends GeneratorCommand
{
+ protected static $defaultName = 'key:generate:okp';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:generate:okp')
- ->setDescription('Generate an Octet Key Pair key (JWK format)')
+ $this->setDescription('Generate an Octet Key Pair key (JWK format)')
->addArgument('curve', InputArgument::REQUIRED, 'Curve of the key.')
;
}
- /**
- * @throws InvalidArgumentException if the curve is not valid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$curve = $input->getArgument('curve');
- if (!is_string($curve)) {
+ if (! is_string($curve)) {
throw new InvalidArgumentException('Invalid curve');
}
$args = $this->getOptions($input);
diff --git a/src/Component/Console/OkpKeysetGeneratorCommand.php b/src/Component/Console/OkpKeysetGeneratorCommand.php
index 5446ddf2..bc3383c0 100644
--- a/src/Component/Console/OkpKeysetGeneratorCommand.php
+++ b/src/Component/Console/OkpKeysetGeneratorCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -24,25 +15,21 @@
final class OkpKeysetGeneratorCommand extends GeneratorCommand
{
+ protected static $defaultName = 'keyset:generate:okp';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('keyset:generate:okp')
- ->setDescription('Generate a key set with Octet Key Pairs keys (JWKSet format)')
+ $this->setDescription('Generate a key set with Octet Key Pairs keys (JWKSet format)')
->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of keys in the key set.')
->addArgument('curve', InputArgument::REQUIRED, 'Curve of the keys.')
;
}
- /**
- * @throws InvalidArgumentException if the curve is not valid
- * @throws InvalidArgumentException if the quantity is not valid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$quantity = $input->getArgument('quantity');
- if (null === $quantity) {
+ if ($quantity === null) {
$quantity = 1;
} elseif (is_array($quantity)) {
$quantity = 1;
@@ -53,7 +40,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
if ($quantity < 1) {
throw new InvalidArgumentException('Invalid quantity');
}
- if (!is_string($curve)) {
+ if (! is_string($curve)) {
throw new InvalidArgumentException('Invalid curve');
}
diff --git a/src/Component/Console/OptimizeRsaKeyCommand.php b/src/Component/Console/OptimizeRsaKeyCommand.php
index 21c23644..4cfd8002 100644
--- a/src/Component/Console/OptimizeRsaKeyCommand.php
+++ b/src/Component/Console/OptimizeRsaKeyCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -25,27 +16,24 @@
final class OptimizeRsaKeyCommand extends ObjectOutputCommand
{
+ protected static $defaultName = 'key:optimize';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:optimize')
- ->setDescription('Optimize a RSA key by calculating additional primes (CRT).')
+ $this->setDescription('Optimize a RSA key by calculating additional primes (CRT).')
->addArgument('jwk', InputArgument::REQUIRED, 'The RSA key.')
;
}
- /**
- * @throws InvalidArgumentException if the key is not valid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$jwk = $input->getArgument('jwk');
- if (!is_string($jwk)) {
+ if (! is_string($jwk)) {
throw new InvalidArgumentException('Invalid JWK');
}
$json = JsonConverter::decode($jwk);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('Invalid JWK');
}
$key = RSAKey::createFromJWK(new JWK($json));
diff --git a/src/Component/Console/P12CertificateLoaderCommand.php b/src/Component/Console/P12CertificateLoaderCommand.php
index 0147cb47..a34c726f 100644
--- a/src/Component/Console/P12CertificateLoaderCommand.php
+++ b/src/Component/Console/P12CertificateLoaderCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -23,29 +14,25 @@
final class P12CertificateLoaderCommand extends GeneratorCommand
{
+ protected static $defaultName = 'key:load:p12';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:load:p12')
- ->setDescription('Load a key from a P12 certificate file.')
+ $this->setDescription('Load a key from a P12 certificate file.')
->addArgument('file', InputArgument::REQUIRED, 'Filename of the P12 certificate.')
->addOption('secret', 's', InputOption::VALUE_OPTIONAL, 'Secret if the key is encrypted.', null)
;
}
- /**
- * @throws InvalidArgumentException if the file is not valid
- * @throws InvalidArgumentException if the secret is not valid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$file = $input->getArgument('file');
$password = $input->getOption('secret');
- if (!is_string($file)) {
+ if (! is_string($file)) {
throw new InvalidArgumentException('Invalid file');
}
- if (!is_string($password)) {
+ if (! is_string($password)) {
throw new InvalidArgumentException('Invalid secret');
}
$args = $this->getOptions($input);
diff --git a/src/Component/Console/PemConverterCommand.php b/src/Component/Console/PemConverterCommand.php
index d1cb063b..e063831c 100644
--- a/src/Component/Console/PemConverterCommand.php
+++ b/src/Component/Console/PemConverterCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -26,46 +17,33 @@
final class PemConverterCommand extends ObjectOutputCommand
{
+ protected static $defaultName = 'key:convert:pkcs1';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:convert:pkcs1')
- ->setDescription('Converts a RSA or EC key into PKCS#1 key.')
+ $this->setDescription('Converts a RSA or EC key into PKCS#1 key.')
->addArgument('jwk', InputArgument::REQUIRED, 'The key')
;
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- * @throws InvalidArgumentException if the key type is not RSA or EC
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$jwk = $input->getArgument('jwk');
- if (!is_string($jwk)) {
+ if (! is_string($jwk)) {
throw new InvalidArgumentException('Invalid JWK');
}
$json = JsonConverter::decode($jwk);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('Invalid JWK.');
}
$key = new JWK($json);
- switch ($key->get('kty')) {
- case 'RSA':
- $pem = RSAKey::createFromJWK($key)->toPEM();
-
- break;
-
- case 'EC':
- $pem = ECKey::convertToPEM($key);
-
- break;
-
- default:
- throw new InvalidArgumentException('Not a RSA or EC key.');
- }
+ $pem = match ($key->get('kty')) {
+ 'RSA' => RSAKey::createFromJWK($key)->toPEM(),
+ 'EC' => ECKey::convertToPEM($key),
+ default => throw new InvalidArgumentException('Not a RSA or EC key.'),
+ };
$output->write($pem);
return 0;
diff --git a/src/Component/Console/PublicKeyCommand.php b/src/Component/Console/PublicKeyCommand.php
index 1249864a..9577d240 100644
--- a/src/Component/Console/PublicKeyCommand.php
+++ b/src/Component/Console/PublicKeyCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -24,12 +15,12 @@
final class PublicKeyCommand extends ObjectOutputCommand
{
+ protected static $defaultName = 'key:convert:public';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:convert:public')
- ->setDescription('Convert a private key into public key. Symmetric keys (shared keys) are not changed.')
+ $this->setDescription('Convert a private key into public key. Symmetric keys (shared keys) are not changed.')
->setHelp('This command converts a private key into a public key.')
->addArgument('jwk', InputArgument::REQUIRED, 'The JWK object')
;
@@ -45,17 +36,14 @@ protected function execute(InputInterface $input, OutputInterface $output): int
return 0;
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
private function getKey(InputInterface $input): JWK
{
$jwk = $input->getArgument('jwk');
- if (!is_string($jwk)) {
+ if (! is_string($jwk)) {
throw new InvalidArgumentException('Invalid JWK');
}
$json = JsonConverter::decode($jwk);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('Invalid JWK');
}
diff --git a/src/Component/Console/PublicKeysetCommand.php b/src/Component/Console/PublicKeysetCommand.php
index 2c017a10..c355cc12 100644
--- a/src/Component/Console/PublicKeysetCommand.php
+++ b/src/Component/Console/PublicKeysetCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -24,12 +15,14 @@
final class PublicKeysetCommand extends ObjectOutputCommand
{
+ protected static $defaultName = 'keyset:convert:public';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('keyset:convert:public')
- ->setDescription('Convert private keys in a key set into public keys. Symmetric keys (shared keys) are not changed.')
+ $this->setDescription(
+ 'Convert private keys in a key set into public keys. Symmetric keys (shared keys) are not changed.'
+ )
->setHelp('This command converts private keys in a key set into public keys.')
->addArgument('jwkset', InputArgument::REQUIRED, 'The JWKSet object')
;
@@ -48,17 +41,14 @@ protected function execute(InputInterface $input, OutputInterface $output): int
return 0;
}
- /**
- * @throws InvalidArgumentException if the keyset is invalid
- */
private function getKeyset(InputInterface $input): JWKSet
{
$jwkset = $input->getArgument('jwkset');
- if (!is_string($jwkset)) {
+ if (! is_string($jwkset)) {
throw new InvalidArgumentException('Invalid JWKSet');
}
$json = JsonConverter::decode($jwkset);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('Invalid JWKSet');
}
diff --git a/src/Component/Console/RotateKeysetCommand.php b/src/Component/Console/RotateKeysetCommand.php
index 25893ada..04c2e39c 100644
--- a/src/Component/Console/RotateKeysetCommand.php
+++ b/src/Component/Console/RotateKeysetCommand.php
@@ -2,15 +2,6 @@
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\Console;
use function count;
@@ -26,12 +17,12 @@
final class RotateKeysetCommand extends ObjectOutputCommand
{
+ protected static $defaultName = 'keyset:rotate';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('keyset:rotate')
- ->setDescription('Rotate a key set.')
+ $this->setDescription('Rotate a key set.')
->setHelp('This command removes the last key in a key set a place a new one at the beginning.')
->addArgument('jwkset', InputArgument::REQUIRED, 'The JWKSet object')
->addArgument('jwk', InputArgument::REQUIRED, 'The new JWK object')
@@ -40,10 +31,12 @@ protected function configure(): void
protected function execute(InputInterface $input, OutputInterface $output): int
{
- $jwkset = $this->getKeyset($input)->all();
+ $jwkset = $this->getKeyset($input)
+ ->all()
+ ;
$jwk = $this->getKey($input);
- if (0 !== count($jwkset)) {
+ if (count($jwkset) !== 0) {
array_pop($jwkset);
}
array_unshift($jwkset, $jwk);
@@ -53,34 +46,28 @@ protected function execute(InputInterface $input, OutputInterface $output): int
return self::SUCCESS;
}
- /**
- * @throws InvalidArgumentException if the keyset is invalid
- */
private function getKeyset(InputInterface $input): JWKSet
{
$jwkset = $input->getArgument('jwkset');
- if (!is_string($jwkset)) {
+ if (! is_string($jwkset)) {
throw new InvalidArgumentException('Invalid JWKSet');
}
$json = JsonConverter::decode($jwkset);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('Invalid JWKSet');
}
return JWKSet::createFromKeyData($json);
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
private function getKey(InputInterface $input): JWK
{
$jwk = $input->getArgument('jwk');
- if (!is_string($jwk)) {
+ if (! is_string($jwk)) {
throw new InvalidArgumentException('Invalid JWK');
}
$json = JsonConverter::decode($jwk);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('Invalid JWK');
}
diff --git a/src/Component/Console/RsaKeyGeneratorCommand.php b/src/Component/Console/RsaKeyGeneratorCommand.php
index d1779080..e6a8f53e 100644
--- a/src/Component/Console/RsaKeyGeneratorCommand.php
+++ b/src/Component/Console/RsaKeyGeneratorCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -22,23 +13,20 @@
final class RsaKeyGeneratorCommand extends GeneratorCommand
{
+ protected static $defaultName = 'key:generate:rsa';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:generate:rsa')
- ->setDescription('Generate a RSA key (JWK format)')
+ $this->setDescription('Generate a RSA key (JWK format)')
->addArgument('size', InputArgument::REQUIRED, 'Key size.')
;
}
- /**
- * @throws InvalidArgumentException if the key size is invalid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$size = $input->getArgument('size');
- if (null === $size) {
+ if ($size === null) {
$size = 1;
} elseif (is_array($size)) {
$size = 1;
diff --git a/src/Component/Console/RsaKeysetGeneratorCommand.php b/src/Component/Console/RsaKeysetGeneratorCommand.php
index 93d6bb14..a3857a9b 100644
--- a/src/Component/Console/RsaKeysetGeneratorCommand.php
+++ b/src/Component/Console/RsaKeysetGeneratorCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -23,25 +14,21 @@
final class RsaKeysetGeneratorCommand extends GeneratorCommand
{
+ protected static $defaultName = 'keyset:generate:rsa';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('keyset:generate:rsa')
- ->setDescription('Generate a key set with RSA keys (JWK format)')
+ $this->setDescription('Generate a key set with RSA keys (JWK format)')
->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of keys in the key set.')
->addArgument('size', InputArgument::REQUIRED, 'Key size.')
;
}
- /**
- * @throws InvalidArgumentException if the quantity is invalid
- * @throws InvalidArgumentException if the key size is invalid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$quantity = $input->getArgument('quantity');
- if (null === $quantity) {
+ if ($quantity === null) {
$quantity = 1;
} elseif (is_array($quantity)) {
$quantity = 1;
@@ -49,7 +36,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
$quantity = (int) $quantity;
}
$size = $input->getArgument('size');
- if (null === $size) {
+ if ($size === null) {
$size = 1;
} elseif (is_array($size)) {
$size = 1;
diff --git a/src/Component/Console/SecretKeyGeneratorCommand.php b/src/Component/Console/SecretKeyGeneratorCommand.php
index a0f7d0d6..2ea955e3 100644
--- a/src/Component/Console/SecretKeyGeneratorCommand.php
+++ b/src/Component/Console/SecretKeyGeneratorCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -24,35 +15,36 @@
final class SecretKeyGeneratorCommand extends GeneratorCommand
{
+ protected static $defaultName = 'key:generate:from_secret';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:generate:from_secret')
- ->setDescription('Generate an octet key (JWK format) using an existing secret')
+ $this->setDescription('Generate an octet key (JWK format) using an existing secret')
->addArgument('secret', InputArgument::REQUIRED, 'The secret')
- ->addOption('is_b64', 'b', InputOption::VALUE_NONE, 'Indicates if the secret is Base64 encoded (useful for binary secrets)')
+ ->addOption(
+ 'is_b64',
+ 'b',
+ InputOption::VALUE_NONE,
+ 'Indicates if the secret is Base64 encoded (useful for binary secrets)'
+ )
;
}
- /**
- * @throws InvalidArgumentException if the secret is invalid
- * @throws InvalidArgumentException if the option "is_b4" is not a boolean
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$secret = $input->getArgument('secret');
- if (!is_string($secret)) {
+ if (! is_string($secret)) {
throw new InvalidArgumentException('Invalid secret');
}
$isBsae64Encoded = $input->getOption('is_b64');
- if (!is_bool($isBsae64Encoded)) {
+ if (! is_bool($isBsae64Encoded)) {
throw new InvalidArgumentException('Invalid option value for "is_b64"');
}
if ($isBsae64Encoded) {
$secret = base64_decode($secret, true);
}
- if (!is_string($secret)) {
+ if (! is_string($secret)) {
throw new InvalidArgumentException('Invalid secret');
}
$args = $this->getOptions($input);
diff --git a/src/Component/Console/X509CertificateLoaderCommand.php b/src/Component/Console/X509CertificateLoaderCommand.php
index 96a0e659..f100796c 100644
--- a/src/Component/Console/X509CertificateLoaderCommand.php
+++ b/src/Component/Console/X509CertificateLoaderCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -22,29 +13,26 @@
final class X509CertificateLoaderCommand extends GeneratorCommand
{
+ protected static $defaultName = 'key:load:x509';
+
protected function configure(): void
{
parent::configure();
- $this
- ->setName('key:load:x509')
- ->setDescription('Load a key from a X.509 certificate file.')
+ $this->setDescription('Load a key from a X.509 certificate file.')
->addArgument('file', InputArgument::REQUIRED, 'Filename of the X.509 certificate.')
;
}
- /**
- * @throws InvalidArgumentException if the file is invalid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$file = $input->getArgument('file');
- if (!is_string($file)) {
+ if (! is_string($file)) {
throw new InvalidArgumentException('Invalid file');
}
$args = [];
foreach (['use', 'alg'] as $key) {
$value = $input->getOption($key);
- if (null !== $value) {
+ if ($value !== null) {
$args[$key] = $value;
}
}
diff --git a/src/Component/Console/X5ULoaderCommand.php b/src/Component/Console/X5ULoaderCommand.php
index 5bcfc0c4..a12726cd 100644
--- a/src/Component/Console/X5ULoaderCommand.php
+++ b/src/Component/Console/X5ULoaderCommand.php
@@ -2,15 +2,6 @@
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\Console;
use InvalidArgumentException;
@@ -22,35 +13,30 @@
final class X5ULoaderCommand extends ObjectOutputCommand
{
- /**
- * @var X5UFactory
- */
- private $x5uFactory;
+ protected static $defaultName = 'keyset:load:x5u';
- public function __construct(X5UFactory $x5uFactory, ?string $name = null)
- {
- $this->x5uFactory = $x5uFactory;
+ public function __construct(
+ private X5UFactory $x5uFactory,
+ ?string $name = null
+ ) {
parent::__construct($name);
}
protected function configure(): void
{
parent::configure();
- $this
- ->setName('keyset:load:x5u')
- ->setDescription('Loads a key set from an url.')
- ->setHelp('This command will try to get a key set from an URL. The distant key set is list of X.509 certificates.')
+ $this->setDescription('Loads a key set from an url.')
+ ->setHelp(
+ 'This command will try to get a key set from an URL. The distant key set is list of X.509 certificates.'
+ )
->addArgument('url', InputArgument::REQUIRED, 'The URL')
;
}
- /**
- * @throws InvalidArgumentException if the URL is invalid
- */
protected function execute(InputInterface $input, OutputInterface $output): int
{
$url = $input->getArgument('url');
- if (!is_string($url)) {
+ if (! is_string($url)) {
throw new InvalidArgumentException('Invalid URL');
}
$result = $this->x5uFactory->loadFromUrl($url);
diff --git a/src/Component/Console/composer.json b/src/Component/Console/composer.json
index 052ae8da..459791ea 100644
--- a/src/Component/Console/composer.json
+++ b/src/Component/Console/composer.json
@@ -20,7 +20,7 @@
}
},
"require": {
- "symfony/console": "^4.2|^5.0",
+ "symfony/console": "^5.4|^6.0",
"web-token/jwt-key-mgmt": "^2.1"
}
}
diff --git a/src/Component/Core/Algorithm.php b/src/Component/Core/Algorithm.php
index 87e445bb..6c419cf0 100644
--- a/src/Component/Core/Algorithm.php
+++ b/src/Component/Core/Algorithm.php
@@ -2,15 +2,6 @@
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\Core;
interface Algorithm
diff --git a/src/Component/Core/AlgorithmManager.php b/src/Component/Core/AlgorithmManager.php
index 91b41a8a..1b353e25 100644
--- a/src/Component/Core/AlgorithmManager.php
+++ b/src/Component/Core/AlgorithmManager.php
@@ -2,15 +2,6 @@
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\Core;
use function array_key_exists;
@@ -18,10 +9,7 @@
class AlgorithmManager
{
- /**
- * @var array
- */
- private $algorithms = [];
+ private array $algorithms = [];
/**
* @param Algorithm[] $algorithms
@@ -57,12 +45,10 @@ public function list(): array
* Returns the algorithm if supported, otherwise throw an exception.
*
* @param string $algorithm The algorithm
- *
- * @throws InvalidArgumentException if the algorithm is not supported
*/
public function get(string $algorithm): Algorithm
{
- if (!$this->has($algorithm)) {
+ if (! $this->has($algorithm)) {
throw new InvalidArgumentException(sprintf('The algorithm "%s" is not supported.', $algorithm));
}
diff --git a/src/Component/Core/AlgorithmManagerFactory.php b/src/Component/Core/AlgorithmManagerFactory.php
index 34e76313..106d8867 100644
--- a/src/Component/Core/AlgorithmManagerFactory.php
+++ b/src/Component/Core/AlgorithmManagerFactory.php
@@ -2,15 +2,6 @@
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\Core;
use InvalidArgumentException;
@@ -26,8 +17,8 @@ class AlgorithmManagerFactory
/**
* Adds an algorithm.
*
- * Each algorithm is identified by an alias hence it is allowed to have the same algorithm twice (or more).
- * This can be helpful when an algorithm have several configuration options.
+ * Each algorithm is identified by an alias hence it is allowed to have the same algorithm twice (or more). This can
+ * be helpful when an algorithm have several configuration options.
*/
public function add(string $alias, Algorithm $algorithm): void
{
@@ -45,8 +36,8 @@ public function aliases(): array
}
/**
- * Returns all algorithms supported by this factory.
- * This is an associative array. Keys are the aliases of the algorithms.
+ * Returns all algorithms supported by this factory. This is an associative array. Keys are the aliases of the
+ * algorithms.
*
* @return Algorithm[]
*/
@@ -59,18 +50,19 @@ public function all(): array
* Create an algorithm manager using the given aliases.
*
* @param string[] $aliases
- *
- * @throws InvalidArgumentException if the alias is invalid or is not supported
*/
public function create(array $aliases): AlgorithmManager
{
$algorithms = [];
foreach ($aliases as $alias) {
- if (!is_string($alias)) {
+ if (! is_string($alias)) {
throw new InvalidArgumentException('Invalid alias');
}
- if (!isset($this->algorithms[$alias])) {
- throw new InvalidArgumentException(sprintf('The algorithm with the alias "%s" is not supported.', $alias));
+ if (! isset($this->algorithms[$alias])) {
+ throw new InvalidArgumentException(sprintf(
+ 'The algorithm with the alias "%s" is not supported.',
+ $alias
+ ));
}
$algorithms[] = $this->algorithms[$alias];
}
diff --git a/src/Component/Core/JWK.php b/src/Component/Core/JWK.php
index 6b9ec16a..5379e2ef 100644
--- a/src/Component/Core/JWK.php
+++ b/src/Component/Core/JWK.php
@@ -2,21 +2,14 @@
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\Core;
use function array_key_exists;
use function in_array;
use InvalidArgumentException;
use function is_array;
+use const JSON_UNESCAPED_SLASHES;
+use const JSON_UNESCAPED_UNICODE;
use JsonSerializable;
use ParagonIE\ConstantTime\Base64UrlSafe;
@@ -28,14 +21,11 @@ class JWK implements JsonSerializable
private $values = [];
/**
- * Creates a JWK object using the given values.
- * The member "kty" is mandatory. Other members are NOT checked.
- *
- * @throws InvalidArgumentException if the key parameter "kty" is missing
+ * Creates a JWK object using the given values. The member "kty" is mandatory. Other members are NOT checked.
*/
public function __construct(array $values)
{
- if (!isset($values['kty'])) {
+ if (! isset($values['kty'])) {
throw new InvalidArgumentException('The parameter "kty" is mandatory.');
}
$this->values = $values;
@@ -43,15 +33,11 @@ public function __construct(array $values)
/**
* Creates a JWK object using the given Json string.
- *
- * @throws InvalidArgumentException if the data is not valid
- *
- * @return JWK
*/
public static function createFromJson(string $json): self
{
$data = json_decode($json, true);
- if (!is_array($data)) {
+ if (! is_array($data)) {
throw new InvalidArgumentException('Invalid argument.');
}
@@ -71,13 +57,11 @@ public function jsonSerialize(): array
*
* @param string $key The key
*
- * @throws InvalidArgumentException if the key does not exist
- *
- * @return null|mixed
+ * @return mixed|null
*/
public function get(string $key)
{
- if (!$this->has($key)) {
+ if (! $this->has($key)) {
throw new InvalidArgumentException(sprintf('The value identified by "%s" does not exist.', $key));
}
@@ -108,18 +92,16 @@ public function all(): array
* Returns the thumbprint of the key.
*
* @see https://tools.ietf.org/html/rfc7638
- *
- * @throws InvalidArgumentException if the hashing function is not supported
*/
public function thumbprint(string $hash_algorithm): string
{
- if (!in_array($hash_algorithm, hash_algos(), true)) {
+ if (! in_array($hash_algorithm, hash_algos(), true)) {
throw new InvalidArgumentException(sprintf('The hash algorithm "%s" is not supported.', $hash_algorithm));
}
$values = array_intersect_key($this->values, array_flip(['kty', 'n', 'e', 'crv', 'x', 'y', 'k']));
ksort($values);
$input = json_encode($values, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
- if (false === $input) {
+ if ($input === false) {
throw new InvalidArgumentException('Unable to compute the key thumbprint');
}
@@ -134,8 +116,6 @@ public function thumbprint(string $hash_algorithm): string
* - unknown keys.
*
* Known keys are "oct", "RSA", "EC" and "OKP".
- *
- * @return JWK
*/
public function toPublic(): self
{
diff --git a/src/Component/Core/JWKSet.php b/src/Component/Core/JWKSet.php
index c72cea23..b72646f1 100644
--- a/src/Component/Core/JWKSet.php
+++ b/src/Component/Core/JWKSet.php
@@ -2,20 +2,12 @@
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\Core;
use function array_key_exists;
use ArrayIterator;
use function count;
+use const COUNT_NORMAL;
use Countable;
use function in_array;
use InvalidArgumentException;
@@ -33,13 +25,11 @@ class JWKSet implements Countable, IteratorAggregate, JsonSerializable
/**
* @param JWK[] $keys
- *
- * @throws InvalidArgumentException if the list is invalid
*/
public function __construct(array $keys)
{
foreach ($keys as $k => $key) {
- if (!$key instanceof JWK) {
+ if (! $key instanceof JWK) {
throw new InvalidArgumentException('Invalid list. Should only contains JWK objects');
}
@@ -54,17 +44,13 @@ public function __construct(array $keys)
/**
* Creates a JWKSet object using the given values.
- *
- * @throws InvalidArgumentException if the keyset is not valid
- *
- * @return JWKSet
*/
public static function createFromKeyData(array $data): self
{
- if (!isset($data['keys'])) {
+ if (! isset($data['keys'])) {
throw new InvalidArgumentException('Invalid data.');
}
- if (!is_array($data['keys'])) {
+ if (! is_array($data['keys'])) {
throw new InvalidArgumentException('Invalid data.');
}
@@ -83,15 +69,11 @@ public static function createFromKeyData(array $data): self
/**
* Creates a JWKSet object using the given Json string.
- *
- * @throws InvalidArgumentException if the data is not valid
- *
- * @return JWKSet
*/
public static function createFromJson(string $json): self
{
$data = json_decode($json, true);
- if (!is_array($data)) {
+ if (! is_array($data)) {
throw new InvalidArgumentException('Invalid argument.');
}
@@ -109,10 +91,7 @@ public function all(): array
}
/**
- * Add key to store in the key set.
- * This method is immutable and will return a new object.
- *
- * @return JWKSet
+ * Add key to store in the key set. This method is immutable and will return a new object.
*/
public function with(JWK $jwk): self
{
@@ -128,16 +107,13 @@ public function with(JWK $jwk): self
}
/**
- * Remove key from the key set.
- * This method is immutable and will return a new object.
+ * Remove key from the key set. This method is immutable and will return a new object.
*
* @param int|string $key Key to remove from the key set
- *
- * @return JWKSet
*/
- public function without($key): self
+ public function without(int|string $key): self
{
- if (!$this->has($key)) {
+ if (! $this->has($key)) {
return $this;
}
@@ -149,24 +125,18 @@ public function without($key): self
/**
* Returns true if the key set contains a key with the given index.
- *
- * @param int|string $index
*/
- public function has($index): bool
+ public function has(int|string $index): bool
{
return array_key_exists($index, $this->keys);
}
/**
* Returns the key with the given index. Throws an exception if the index is not present in the key store.
- *
- * @param int|string $index
- *
- * @throws InvalidArgumentException if the index is not defined
*/
- public function get($index): JWK
+ public function get(int|string $index): JWK
{
- if (!$this->has($index)) {
+ if (! $this->has($index)) {
throw new InvalidArgumentException('Undefined index.');
}
@@ -178,7 +148,9 @@ public function get($index): JWK
*/
public function jsonSerialize(): array
{
- return ['keys' => array_values($this->keys)];
+ return [
+ 'keys' => array_values($this->keys),
+ ];
}
/**
@@ -192,18 +164,15 @@ public function count($mode = COUNT_NORMAL): int
}
/**
- * Try to find a key that fits on the selected requirements.
- * Returns null if not found.
+ * Try to find a key that fits on the selected requirements. Returns null if not found.
*
* @param string $type Must be 'sig' (signature) or 'enc' (encryption)
- * @param null|Algorithm $algorithm Specifies the algorithm to be used
+ * @param Algorithm|null $algorithm Specifies the algorithm to be used
* @param array $restrictions More restrictions such as 'kid' or 'kty'
- *
- * @throws InvalidArgumentException if the key type is not valid (must be "sig" or "enc")
*/
public function selectKey(string $type, ?Algorithm $algorithm = null, array $restrictions = []): ?JWK
{
- if (!in_array($type, ['enc', 'sig'], true)) {
+ if (! in_array($type, ['enc', 'sig'], true)) {
throw new InvalidArgumentException('Allowed key types are "sig" or "enc".');
}
@@ -212,25 +181,28 @@ public function selectKey(string $type, ?Algorithm $algorithm = null, array $res
$ind = 0;
$can_use = $this->canKeyBeUsedFor($type, $key);
- if (false === $can_use) {
+ if ($can_use === false) {
continue;
}
$ind += $can_use;
$alg = $this->canKeyBeUsedWithAlgorithm($algorithm, $key);
- if (false === $alg) {
+ if ($alg === false) {
continue;
}
$ind += $alg;
- if (false === $this->doesKeySatisfyRestrictions($restrictions, $key)) {
+ if ($this->doesKeySatisfyRestrictions($restrictions, $key) === false) {
continue;
}
- $result[] = ['key' => $key, 'ind' => $ind];
+ $result[] = [
+ 'key' => $key,
+ 'ind' => $ind,
+ ];
}
- if (0 === count($result)) {
+ if (count($result) === 0) {
return null;
}
@@ -264,20 +236,17 @@ public function getIterator(): Traversable
return new ArrayIterator($this->keys);
}
- /**
- * @throws InvalidArgumentException if the key does not fulfill with the "key_ops" constraint
- *
- * @return bool|int
- */
- private function canKeyBeUsedFor(string $type, JWK $key)
+ private function canKeyBeUsedFor(string $type, JWK $key): bool|int
{
if ($key->has('use')) {
return $type === $key->get('use') ? 1 : false;
}
if ($key->has('key_ops')) {
$key_ops = $key->get('key_ops');
- if (!is_array($key_ops)) {
- throw new InvalidArgumentException('Invalid key parameter "key_ops". Should be a list of key operations');
+ if (! is_array($key_ops)) {
+ throw new InvalidArgumentException(
+ 'Invalid key parameter "key_ops". Should be a list of key operations'
+ );
}
return $type === self::convertKeyOpsToKeyUse($key_ops) ? 1 : false;
@@ -286,15 +255,12 @@ private function canKeyBeUsedFor(string $type, JWK $key)
return 0;
}
- /**
- * @return bool|int
- */
- private function canKeyBeUsedWithAlgorithm(?Algorithm $algorithm, JWK $key)
+ private function canKeyBeUsedWithAlgorithm(?Algorithm $algorithm, JWK $key): bool|int
{
- if (null === $algorithm) {
+ if ($algorithm === null) {
return 0;
}
- if (!in_array($key->get('kty'), $algorithm->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $algorithm->allowedKeyTypes(), true)) {
return false;
}
if ($key->has('alg')) {
@@ -307,7 +273,7 @@ private function canKeyBeUsedWithAlgorithm(?Algorithm $algorithm, JWK $key)
private function doesKeySatisfyRestrictions(array $restrictions, JWK $key): bool
{
foreach ($restrictions as $k => $v) {
- if (!$key->has($k) || $v !== $key->get($k)) {
+ if (! $key->has($k) || $v !== $key->get($k)) {
return false;
}
}
@@ -315,26 +281,23 @@ private function doesKeySatisfyRestrictions(array $restrictions, JWK $key): bool
return true;
}
- /**
- * @throws InvalidArgumentException if the key operation is not supported
- */
private static function convertKeyOpsToKeyUse(array $key_ops): string
{
- switch (true) {
- case in_array('verify', $key_ops, true):
- case in_array('sign', $key_ops, true):
- return 'sig';
-
- case in_array('encrypt', $key_ops, true):
- case in_array('decrypt', $key_ops, true):
- case in_array('wrapKey', $key_ops, true):
- case in_array('unwrapKey', $key_ops, true):
- case in_array('deriveKey', $key_ops, true):
- case in_array('deriveBits', $key_ops, true):
- return 'enc';
-
- default:
- throw new InvalidArgumentException(sprintf('Unsupported key operation value "%s"', implode(', ', $key_ops)));
- }
+ return match (true) {
+ in_array('verify', $key_ops, true), in_array('sign', $key_ops, true) => 'sig',
+ in_array('encrypt', $key_ops, true), in_array('decrypt', $key_ops, true), in_array(
+ 'wrapKey',
+ $key_ops,
+ true
+ ), in_array(
+ 'unwrapKey',
+ $key_ops,
+ true
+ ), in_array('deriveKey', $key_ops, true), in_array('deriveBits', $key_ops, true) => 'enc',
+ default => throw new InvalidArgumentException(sprintf(
+ 'Unsupported key operation value "%s"',
+ implode(', ', $key_ops)
+ )),
+ };
}
}
diff --git a/src/Component/Core/JWT.php b/src/Component/Core/JWT.php
index d3a6065f..69e7b6b3 100644
--- a/src/Component/Core/JWT.php
+++ b/src/Component/Core/JWT.php
@@ -2,22 +2,12 @@
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\Core;
interface JWT
{
/**
- * Returns the payload of the JWT.
- * null is a valid payload (e.g. JWS with detached payload).
+ * Returns the payload of the JWT. null is a valid payload (e.g. JWS with detached payload).
*/
public function getPayload(): ?string;
}
diff --git a/src/Component/Core/Util/BigInteger.php b/src/Component/Core/Util/BigInteger.php
index 198a1be5..ec2086a9 100644
--- a/src/Component/Core/Util/BigInteger.php
+++ b/src/Component/Core/Util/BigInteger.php
@@ -2,15 +2,6 @@
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\Core\Util;
use Brick\Math\BigInteger as BrickBigInteger;
@@ -20,27 +11,17 @@
/**
* @internal
*/
-class BigInteger
+final class BigInteger
{
- /**
- * Holds the BigInteger's value.
- *
- * @var BrickBigInteger
- */
- private $value;
-
- private function __construct(BrickBigInteger $value)
- {
- $this->value = $value;
+ private function __construct(
+ private BrickBigInteger $value
+ ) {
}
- /**
- * @return BigInteger
- */
public static function createFromBinaryString(string $value): self
{
$res = unpack('H*', $value);
- if (false === $res) {
+ if ($res === false) {
throw new InvalidArgumentException('Unable to convert the value');
}
$data = current($res);
@@ -48,17 +29,11 @@ public static function createFromBinaryString(string $value): self
return new self(BrickBigInteger::fromBase($data, 16));
}
- /**
- * @return BigInteger
- */
public static function createFromDecimal(int $value): self
{
return new self(BrickBigInteger::of($value));
}
- /**
- * @return BigInteger
- */
public static function createFromBigInteger(BrickBigInteger $value): self
{
return new self($value);
@@ -74,9 +49,9 @@ public function toBytes(): string
}
$temp = $this->value->toBase(16);
- $temp = 0 !== (mb_strlen($temp, '8bit') & 1) ? '0'.$temp : $temp;
+ $temp = 0 !== (mb_strlen($temp, '8bit') & 1) ? '0' . $temp : $temp;
$temp = hex2bin($temp);
- if (false === $temp) {
+ if ($temp === false) {
throw new InvalidArgumentException('Unable to convert the value into bytes');
}
@@ -85,10 +60,6 @@ public function toBytes(): string
/**
* Adds two BigIntegers.
- *
- * @param BigInteger $y
- *
- * @return BigInteger
*/
public function add(self $y): self
{
@@ -99,10 +70,6 @@ public function add(self $y): self
/**
* Subtracts two BigIntegers.
- *
- * @param BigInteger $y
- *
- * @return BigInteger
*/
public function subtract(self $y): self
{
@@ -113,10 +80,6 @@ public function subtract(self $y): self
/**
* Multiplies two BigIntegers.
- *
- * @param BigInteger $x
- *
- * @return BigInteger
*/
public function multiply(self $x): self
{
@@ -127,10 +90,6 @@ public function multiply(self $x): self
/**
* Divides two BigIntegers.
- *
- * @param BigInteger $x
- *
- * @return BigInteger
*/
public function divide(self $x): self
{
@@ -141,11 +100,6 @@ public function divide(self $x): self
/**
* Performs modular exponentiation.
- *
- * @param BigInteger $e
- * @param BigInteger $n
- *
- * @return BigInteger
*/
public function modPow(self $e, self $n): self
{
@@ -156,10 +110,6 @@ public function modPow(self $e, self $n): self
/**
* Performs modular exponentiation.
- *
- * @param BigInteger $d
- *
- * @return BigInteger
*/
public function mod(self $d): self
{
@@ -168,52 +118,34 @@ public function mod(self $d): self
return new self($value);
}
- public function modInverse(BigInteger $m): BigInteger
+ public function modInverse(self $m): self
{
return new self($this->value->modInverse($m->value));
}
/**
* Compares two numbers.
- *
- * @param BigInteger $y
*/
public function compare(self $y): int
{
return $this->value->compareTo($y->value);
}
- /**
- * @param BigInteger $y
- */
public function equals(self $y): bool
{
return $this->value->isEqualTo($y->value);
}
- /**
- * @param BigInteger $y
- *
- * @return BigInteger
- */
public static function random(self $y): self
{
return new self(BrickBigInteger::randomRange(0, $y->value));
}
- /**
- * @param BigInteger $y
- *
- * @return BigInteger
- */
public function gcd(self $y): self
{
return new self($this->value->gcd($y->value));
}
- /**
- * @param BigInteger $y
- */
public function lowerThan(self $y): bool
{
return $this->value->isLessThan($y->value);
diff --git a/src/Component/Core/Util/ECKey.php b/src/Component/Core/Util/ECKey.php
index 27f1477d..541e146c 100644
--- a/src/Component/Core/Util/ECKey.php
+++ b/src/Component/Core/Util/ECKey.php
@@ -2,28 +2,22 @@
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\Core\Util;
use function extension_loaded;
use InvalidArgumentException;
use function is_array;
use Jose\Component\Core\JWK;
+use const OPENSSL_KEYTYPE_EC;
use ParagonIE\ConstantTime\Base64UrlSafe;
+use const PHP_EOL;
use RuntimeException;
+use const STR_PAD_LEFT;
/**
* @internal
*/
-class ECKey
+final class ECKey
{
public static function convertToPEM(JWK $jwk): string
{
@@ -34,76 +28,36 @@ public static function convertToPEM(JWK $jwk): string
return self::convertPublicKeyToPEM($jwk);
}
- /**
- * @throws InvalidArgumentException if the curve is not supported
- */
public static function convertPublicKeyToPEM(JWK $jwk): string
{
- switch ($jwk->get('crv')) {
- case 'P-256':
- $der = self::p256PublicKey();
-
- break;
-
- case 'secp256k1':
- $der = self::p256KPublicKey();
-
- break;
-
- case 'P-384':
- $der = self::p384PublicKey();
-
- break;
-
- case 'P-521':
- $der = self::p521PublicKey();
-
- break;
-
- default:
- throw new InvalidArgumentException('Unsupported curve.');
- }
+ $der = match ($jwk->get('crv')) {
+ 'P-256' => self::p256PublicKey(),
+ 'secp256k1' => self::p256KPublicKey(),
+ 'P-384' => self::p384PublicKey(),
+ 'P-521' => self::p521PublicKey(),
+ default => throw new InvalidArgumentException('Unsupported curve.'),
+ };
$der .= self::getKey($jwk);
- $pem = '-----BEGIN PUBLIC KEY-----'.PHP_EOL;
+ $pem = '-----BEGIN PUBLIC KEY-----' . PHP_EOL;
$pem .= chunk_split(base64_encode($der), 64, PHP_EOL);
- $pem .= '-----END PUBLIC KEY-----'.PHP_EOL;
+ $pem .= '-----END PUBLIC KEY-----' . PHP_EOL;
return $pem;
}
- /**
- * @throws InvalidArgumentException if the curve is not supported
- */
public static function convertPrivateKeyToPEM(JWK $jwk): string
{
- switch ($jwk->get('crv')) {
- case 'P-256':
- $der = self::p256PrivateKey($jwk);
-
- break;
-
- case 'secp256k1':
- $der = self::p256KPrivateKey($jwk);
-
- break;
-
- case 'P-384':
- $der = self::p384PrivateKey($jwk);
-
- break;
-
- case 'P-521':
- $der = self::p521PrivateKey($jwk);
-
- break;
-
- default:
- throw new InvalidArgumentException('Unsupported curve.');
- }
+ $der = match ($jwk->get('crv')) {
+ 'P-256' => self::p256PrivateKey($jwk),
+ 'secp256k1' => self::p256KPrivateKey($jwk),
+ 'P-384' => self::p384PrivateKey($jwk),
+ 'P-521' => self::p521PrivateKey($jwk),
+ default => throw new InvalidArgumentException('Unsupported curve.'),
+ };
$der .= self::getKey($jwk);
- $pem = '-----BEGIN EC PRIVATE KEY-----'.PHP_EOL;
+ $pem = '-----BEGIN EC PRIVATE KEY-----' . PHP_EOL;
$pem .= chunk_split(base64_encode($der), 64, PHP_EOL);
- $pem .= '-----END EC PRIVATE KEY-----'.PHP_EOL;
+ $pem .= '-----END EC PRIVATE KEY-----' . PHP_EOL;
return $pem;
}
@@ -122,53 +76,38 @@ public static function createECKey(string $curve, array $values = []): JWK
return new JWK($values);
}
- /**
- * @throws InvalidArgumentException if the curve is not supported
- */
private static function getNistCurveSize(string $curve): int
{
- switch ($curve) {
- case 'P-256':
- case 'secp256k1':
- return 256;
-
- case 'P-384':
- return 384;
-
- case 'P-521':
- return 521;
-
- default:
- throw new InvalidArgumentException(sprintf('The curve "%s" is not supported.', $curve));
- }
+ return match ($curve) {
+ 'P-256', 'secp256k1' => 256,
+ 'P-384' => 384,
+ 'P-521' => 521,
+ default => throw new InvalidArgumentException(sprintf('The curve "%s" is not supported.', $curve)),
+ };
}
- /**
- * @throws RuntimeException if the extension OpenSSL is not available
- * @throws RuntimeException if the key cannot be created
- */
private static function createECKeyUsingOpenSSL(string $curve): array
{
- if (!extension_loaded('openssl')) {
+ if (! extension_loaded('openssl')) {
throw new RuntimeException('Please install the OpenSSL extension');
}
$key = openssl_pkey_new([
'curve_name' => self::getOpensslCurveName($curve),
'private_key_type' => OPENSSL_KEYTYPE_EC,
]);
- if (false === $key) {
+ if ($key === false) {
throw new RuntimeException('Unable to create the key');
}
$result = openssl_pkey_export($key, $out);
- if (false === $result) {
+ if ($result === false) {
throw new RuntimeException('Unable to create the key');
}
$res = openssl_pkey_get_private($out);
- if (false === $res) {
+ if ($res === false) {
throw new RuntimeException('Unable to create the key');
}
$details = openssl_pkey_get_details($res);
- if (false === $details) {
+ if ($details === false) {
throw new InvalidArgumentException('Unable to get the key details');
}
$nistCurveSize = self::getNistCurveSize($curve);
@@ -176,33 +115,27 @@ private static function createECKeyUsingOpenSSL(string $curve): array
return [
'kty' => 'EC',
'crv' => $curve,
- 'd' => Base64UrlSafe::encodeUnpadded(str_pad($details['ec']['d'], (int) ceil($nistCurveSize / 8), "\0", STR_PAD_LEFT)),
- 'x' => Base64UrlSafe::encodeUnpadded(str_pad($details['ec']['x'], (int) ceil($nistCurveSize / 8), "\0", STR_PAD_LEFT)),
- 'y' => Base64UrlSafe::encodeUnpadded(str_pad($details['ec']['y'], (int) ceil($nistCurveSize / 8), "\0", STR_PAD_LEFT)),
+ 'd' => Base64UrlSafe::encodeUnpadded(
+ str_pad($details['ec']['d'], (int) ceil($nistCurveSize / 8), "\0", STR_PAD_LEFT)
+ ),
+ 'x' => Base64UrlSafe::encodeUnpadded(
+ str_pad($details['ec']['x'], (int) ceil($nistCurveSize / 8), "\0", STR_PAD_LEFT)
+ ),
+ 'y' => Base64UrlSafe::encodeUnpadded(
+ str_pad($details['ec']['y'], (int) ceil($nistCurveSize / 8), "\0", STR_PAD_LEFT)
+ ),
];
}
- /**
- * @throws InvalidArgumentException if the curve is not supported
- */
private static function getOpensslCurveName(string $curve): string
{
- switch ($curve) {
- case 'P-256':
- return 'prime256v1';
-
- case 'secp256k1':
- return 'secp256k1';
-
- case 'P-384':
- return 'secp384r1';
-
- case 'P-521':
- return 'secp521r1';
-
- default:
- throw new InvalidArgumentException(sprintf('The curve "%s" is not supported.', $curve));
- }
+ return match ($curve) {
+ 'P-256' => 'prime256v1',
+ 'secp256k1' => 'secp256k1',
+ 'P-384' => 'secp384r1',
+ 'P-521' => 'secp521r1',
+ default => throw new InvalidArgumentException(sprintf('The curve "%s" is not supported.', $curve)),
+ };
}
private static function p256PublicKey(): string
@@ -210,13 +143,13 @@ private static function p256PublicKey(): string
return pack(
'H*',
'3059' // SEQUENCE, length 89
- .'3013' // SEQUENCE, length 19
- .'0607' // OID, length 7
- .'2a8648ce3d0201' // 1.2.840.10045.2.1 = EC Public Key
- .'0608' // OID, length 8
- .'2a8648ce3d030107' // 1.2.840.10045.3.1.7 = P-256 Curve
- .'0342' // BIT STRING, length 66
- .'00' // prepend with NUL - pubkey will follow
+ . '3013' // SEQUENCE, length 19
+ . '0607' // OID, length 7
+ . '2a8648ce3d0201' // 1.2.840.10045.2.1 = EC Public Key
+ . '0608' // OID, length 8
+ . '2a8648ce3d030107' // 1.2.840.10045.3.1.7 = P-256 Curve
+ . '0342' // BIT STRING, length 66
+ . '00' // prepend with NUL - pubkey will follow
);
}
@@ -225,13 +158,13 @@ private static function p256KPublicKey(): string
return pack(
'H*',
'3056' // SEQUENCE, length 86
- .'3010' // SEQUENCE, length 16
- .'0607' // OID, length 7
- .'2a8648ce3d0201' // 1.2.840.10045.2.1 = EC Public Key
- .'0605' // OID, length 8
- .'2B8104000A' // 1.3.132.0.10 secp256k1
- .'0342' // BIT STRING, length 66
- .'00' // prepend with NUL - pubkey will follow
+ . '3010' // SEQUENCE, length 16
+ . '0607' // OID, length 7
+ . '2a8648ce3d0201' // 1.2.840.10045.2.1 = EC Public Key
+ . '0605' // OID, length 8
+ . '2B8104000A' // 1.3.132.0.10 secp256k1
+ . '0342' // BIT STRING, length 66
+ . '00' // prepend with NUL - pubkey will follow
);
}
@@ -240,13 +173,13 @@ private static function p384PublicKey(): string
return pack(
'H*',
'3076' // SEQUENCE, length 118
- .'3010' // SEQUENCE, length 16
- .'0607' // OID, length 7
- .'2a8648ce3d0201' // 1.2.840.10045.2.1 = EC Public Key
- .'0605' // OID, length 5
- .'2b81040022' // 1.3.132.0.34 = P-384 Curve
- .'0362' // BIT STRING, length 98
- .'00' // prepend with NUL - pubkey will follow
+ . '3010' // SEQUENCE, length 16
+ . '0607' // OID, length 7
+ . '2a8648ce3d0201' // 1.2.840.10045.2.1 = EC Public Key
+ . '0605' // OID, length 5
+ . '2b81040022' // 1.3.132.0.34 = P-384 Curve
+ . '0362' // BIT STRING, length 98
+ . '00' // prepend with NUL - pubkey will follow
);
}
@@ -255,101 +188,101 @@ private static function p521PublicKey(): string
return pack(
'H*',
'30819b' // SEQUENCE, length 154
- .'3010' // SEQUENCE, length 16
- .'0607' // OID, length 7
- .'2a8648ce3d0201' // 1.2.840.10045.2.1 = EC Public Key
- .'0605' // OID, length 5
- .'2b81040023' // 1.3.132.0.35 = P-521 Curve
- .'038186' // BIT STRING, length 134
- .'00' // prepend with NUL - pubkey will follow
+ . '3010' // SEQUENCE, length 16
+ . '0607' // OID, length 7
+ . '2a8648ce3d0201' // 1.2.840.10045.2.1 = EC Public Key
+ . '0605' // OID, length 5
+ . '2b81040023' // 1.3.132.0.35 = P-521 Curve
+ . '038186' // BIT STRING, length 134
+ . '00' // prepend with NUL - pubkey will follow
);
}
private static function p256PrivateKey(JWK $jwk): string
{
$d = unpack('H*', str_pad(Base64UrlSafe::decode($jwk->get('d')), 32, "\0", STR_PAD_LEFT));
- if (!is_array($d) || !isset($d[1])) {
+ if (! is_array($d) || ! isset($d[1])) {
throw new InvalidArgumentException('Unable to get the private key');
}
return pack(
'H*',
'3077' // SEQUENCE, length 87+length($d)=32
- .'020101' // INTEGER, 1
- .'0420' // OCTET STRING, length($d) = 32
- .$d[1]
- .'a00a' // TAGGED OBJECT #0, length 10
- .'0608' // OID, length 8
- .'2a8648ce3d030107' // 1.3.132.0.34 = P-256 Curve
- .'a144' // TAGGED OBJECT #1, length 68
- .'0342' // BIT STRING, length 66
- .'00' // prepend with NUL - pubkey will follow
+ . '020101' // INTEGER, 1
+ . '0420' // OCTET STRING, length($d) = 32
+ . $d[1]
+ . 'a00a' // TAGGED OBJECT #0, length 10
+ . '0608' // OID, length 8
+ . '2a8648ce3d030107' // 1.3.132.0.34 = P-256 Curve
+ . 'a144' // TAGGED OBJECT #1, length 68
+ . '0342' // BIT STRING, length 66
+ . '00' // prepend with NUL - pubkey will follow
);
}
private static function p256KPrivateKey(JWK $jwk): string
{
$d = unpack('H*', str_pad(Base64UrlSafe::decode($jwk->get('d')), 32, "\0", STR_PAD_LEFT));
- if (!is_array($d) || !isset($d[1])) {
+ if (! is_array($d) || ! isset($d[1])) {
throw new InvalidArgumentException('Unable to get the private key');
}
return pack(
'H*',
'3074' // SEQUENCE, length 84+length($d)=32
- .'020101' // INTEGER, 1
- .'0420' // OCTET STRING, length($d) = 32
- .$d[1]
- .'a007' // TAGGED OBJECT #0, length 7
- .'0605' // OID, length 5
- .'2b8104000a' // 1.3.132.0.10 secp256k1
- .'a144' // TAGGED OBJECT #1, length 68
- .'0342' // BIT STRING, length 66
- .'00' // prepend with NUL - pubkey will follow
+ . '020101' // INTEGER, 1
+ . '0420' // OCTET STRING, length($d) = 32
+ . $d[1]
+ . 'a007' // TAGGED OBJECT #0, length 7
+ . '0605' // OID, length 5
+ . '2b8104000a' // 1.3.132.0.10 secp256k1
+ . 'a144' // TAGGED OBJECT #1, length 68
+ . '0342' // BIT STRING, length 66
+ . '00' // prepend with NUL - pubkey will follow
);
}
private static function p384PrivateKey(JWK $jwk): string
{
$d = unpack('H*', str_pad(Base64UrlSafe::decode($jwk->get('d')), 48, "\0", STR_PAD_LEFT));
- if (!is_array($d) || !isset($d[1])) {
+ if (! is_array($d) || ! isset($d[1])) {
throw new InvalidArgumentException('Unable to get the private key');
}
return pack(
'H*',
'3081a4' // SEQUENCE, length 116 + length($d)=48
- .'020101' // INTEGER, 1
- .'0430' // OCTET STRING, length($d) = 30
- .$d[1]
- .'a007' // TAGGED OBJECT #0, length 7
- .'0605' // OID, length 5
- .'2b81040022' // 1.3.132.0.34 = P-384 Curve
- .'a164' // TAGGED OBJECT #1, length 100
- .'0362' // BIT STRING, length 98
- .'00' // prepend with NUL - pubkey will follow
+ . '020101' // INTEGER, 1
+ . '0430' // OCTET STRING, length($d) = 30
+ . $d[1]
+ . 'a007' // TAGGED OBJECT #0, length 7
+ . '0605' // OID, length 5
+ . '2b81040022' // 1.3.132.0.34 = P-384 Curve
+ . 'a164' // TAGGED OBJECT #1, length 100
+ . '0362' // BIT STRING, length 98
+ . '00' // prepend with NUL - pubkey will follow
);
}
private static function p521PrivateKey(JWK $jwk): string
{
$d = unpack('H*', str_pad(Base64UrlSafe::decode($jwk->get('d')), 66, "\0", STR_PAD_LEFT));
- if (!is_array($d) || !isset($d[1])) {
+ if (! is_array($d) || ! isset($d[1])) {
throw new InvalidArgumentException('Unable to get the private key');
}
return pack(
'H*',
'3081dc' // SEQUENCE, length 154 + length($d)=66
- .'020101' // INTEGER, 1
- .'0442' // OCTET STRING, length(d) = 66
- .$d[1]
- .'a007' // TAGGED OBJECT #0, length 7
- .'0605' // OID, length 5
- .'2b81040023' // 1.3.132.0.35 = P-521 Curve
- .'a18189' // TAGGED OBJECT #1, length 137
- .'038186' // BIT STRING, length 134
- .'00' // prepend with NUL - pubkey will follow
+ . '020101' // INTEGER, 1
+ . '0442' // OCTET STRING, length(d) = 66
+ . $d[1]
+ . 'a007' // TAGGED OBJECT #0, length 7
+ . '0605' // OID, length 5
+ . '2b81040023' // 1.3.132.0.35 = P-521 Curve
+ . 'a18189' // TAGGED OBJECT #1, length 137
+ . '038186' // BIT STRING, length 134
+ . '00' // prepend with NUL - pubkey will follow
);
}
@@ -360,7 +293,7 @@ private static function getKey(JWK $jwk): string
return
"\04"
- .str_pad(Base64UrlSafe::decode($jwk->get('x')), $length, "\0", STR_PAD_LEFT)
- .str_pad(Base64UrlSafe::decode($jwk->get('y')), $length, "\0", STR_PAD_LEFT);
+ . str_pad(Base64UrlSafe::decode($jwk->get('x')), $length, "\0", STR_PAD_LEFT)
+ . str_pad(Base64UrlSafe::decode($jwk->get('y')), $length, "\0", STR_PAD_LEFT);
}
}
diff --git a/src/Component/Core/Util/ECSignature.php b/src/Component/Core/Util/ECSignature.php
index 763d8cd0..1d6ac0aa 100644
--- a/src/Component/Core/Util/ECSignature.php
+++ b/src/Component/Core/Util/ECSignature.php
@@ -2,15 +2,6 @@
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\Core\Util;
use InvalidArgumentException;
@@ -23,16 +14,19 @@
final class ECSignature
{
private const ASN1_SEQUENCE = '30';
+
private const ASN1_INTEGER = '02';
+
private const ASN1_MAX_SINGLE_BYTE = 128;
+
private const ASN1_LENGTH_2BYTES = '81';
+
private const ASN1_BIG_INTEGER_LIMIT = '7f';
+
private const ASN1_NEGATIVE_INTEGER = '00';
+
private const BYTE_SIZE = 2;
- /**
- * @throws InvalidArgumentException if the length of the signature is invalid
- */
public static function toAsn1(string $signature, int $length): string
{
$signature = bin2hex($signature);
@@ -52,38 +46,35 @@ public static function toAsn1(string $signature, int $length): string
$bin = hex2bin(
self::ASN1_SEQUENCE
- .$lengthPrefix.dechex($totalLength)
- .self::ASN1_INTEGER.dechex($lengthR).$pointR
- .self::ASN1_INTEGER.dechex($lengthS).$pointS
+ . $lengthPrefix . dechex($totalLength)
+ . self::ASN1_INTEGER . dechex($lengthR) . $pointR
+ . self::ASN1_INTEGER . dechex($lengthS) . $pointS
);
- if (!is_string($bin)) {
+ if (! is_string($bin)) {
throw new InvalidArgumentException('Unable to parse the data');
}
return $bin;
}
- /**
- * @throws InvalidArgumentException if the signature is not an ASN.1 sequence
- */
public static function fromAsn1(string $signature, int $length): string
{
$message = bin2hex($signature);
$position = 0;
- if (self::ASN1_SEQUENCE !== self::readAsn1Content($message, $position, self::BYTE_SIZE)) {
+ if (self::readAsn1Content($message, $position, self::BYTE_SIZE) !== self::ASN1_SEQUENCE) {
throw new InvalidArgumentException('Invalid data. Should start with a sequence.');
}
- if (self::ASN1_LENGTH_2BYTES === self::readAsn1Content($message, $position, self::BYTE_SIZE)) {
+ if (self::readAsn1Content($message, $position, self::BYTE_SIZE) === self::ASN1_LENGTH_2BYTES) {
$position += self::BYTE_SIZE;
}
$pointR = self::retrievePositiveInteger(self::readAsn1Integer($message, $position));
$pointS = self::retrievePositiveInteger(self::readAsn1Integer($message, $position));
- $bin = hex2bin(str_pad($pointR, $length, '0', STR_PAD_LEFT).str_pad($pointS, $length, '0', STR_PAD_LEFT));
- if (!is_string($bin)) {
+ $bin = hex2bin(str_pad($pointR, $length, '0', STR_PAD_LEFT) . str_pad($pointS, $length, '0', STR_PAD_LEFT));
+ if (! is_string($bin)) {
throw new InvalidArgumentException('Unable to parse the data');
}
@@ -98,10 +89,10 @@ private static function octetLength(string $data): int
private static function preparePositiveInteger(string $data): string
{
if (mb_substr($data, 0, self::BYTE_SIZE, '8bit') > self::ASN1_BIG_INTEGER_LIMIT) {
- return self::ASN1_NEGATIVE_INTEGER.$data;
+ return self::ASN1_NEGATIVE_INTEGER . $data;
}
- while (0 === mb_strpos($data, self::ASN1_NEGATIVE_INTEGER, 0, '8bit')
+ while (mb_strpos($data, self::ASN1_NEGATIVE_INTEGER, 0, '8bit') === 0
&& mb_substr($data, 2, self::BYTE_SIZE, '8bit') <= self::ASN1_BIG_INTEGER_LIMIT) {
$data = mb_substr($data, 2, null, '8bit');
}
@@ -117,12 +108,9 @@ private static function readAsn1Content(string $message, int &$position, int $le
return $content;
}
- /**
- * @throws InvalidArgumentException if the data is not an integer
- */
private static function readAsn1Integer(string $message, int &$position): string
{
- if (self::ASN1_INTEGER !== self::readAsn1Content($message, $position, self::BYTE_SIZE)) {
+ if (self::readAsn1Content($message, $position, self::BYTE_SIZE) !== self::ASN1_INTEGER) {
throw new InvalidArgumentException('Invalid data. Should contain an integer.');
}
@@ -133,7 +121,7 @@ private static function readAsn1Integer(string $message, int &$position): string
private static function retrievePositiveInteger(string $data): string
{
- while (0 === mb_strpos($data, self::ASN1_NEGATIVE_INTEGER, 0, '8bit')
+ while (mb_strpos($data, self::ASN1_NEGATIVE_INTEGER, 0, '8bit') === 0
&& mb_substr($data, 2, self::BYTE_SIZE, '8bit') > self::ASN1_BIG_INTEGER_LIMIT) {
$data = mb_substr($data, 2, null, '8bit');
}
diff --git a/src/Component/Core/Util/Hash.php b/src/Component/Core/Util/Hash.php
index ef038c53..8ead35b2 100644
--- a/src/Component/Core/Util/Hash.php
+++ b/src/Component/Core/Util/Hash.php
@@ -2,77 +2,35 @@
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\Core\Util;
/**
* @internal
*/
-class Hash
+final class Hash
{
- /**
- * Hash Parameter.
- *
- * @var string
- */
- private $hash;
-
- /**
- * DER encoding T.
- *
- * @var string
- */
- private $t;
-
- /**
- * Hash Length.
- *
- * @var int
- */
- private $length;
-
- private function __construct(string $hash, int $length, string $t)
- {
- $this->hash = $hash;
- $this->length = $length;
- $this->t = $t;
+ private function __construct(
+ private string $hash,
+ private int $length,
+ private string $t
+ ) {
}
- /**
- * @return Hash
- */
public static function sha1(): self
{
return new self('sha1', 20, "\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14");
}
- /**
- * @return Hash
- */
public static function sha256(): self
{
return new self('sha256', 32, "\x30\x31\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20");
}
- /**
- * @return Hash
- */
public static function sha384(): self
{
return new self('sha384', 48, "\x30\x41\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x02\x05\x00\x04\x30");
}
- /**
- * @return Hash
- */
public static function sha512(): self
{
return new self('sha512', 64, "\x30\x51\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x03\x05\x00\x04\x40");
diff --git a/src/Component/Core/Util/JsonConverter.php b/src/Component/Core/Util/JsonConverter.php
index e121c956..a401ebac 100644
--- a/src/Component/Core/Util/JsonConverter.php
+++ b/src/Component/Core/Util/JsonConverter.php
@@ -2,50 +2,27 @@
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\Core\Util;
-use InvalidArgumentException;
-use function is_string;
+use const JSON_THROW_ON_ERROR;
+use const JSON_UNESCAPED_SLASHES;
+use const JSON_UNESCAPED_UNICODE;
use RuntimeException;
use Throwable;
final class JsonConverter
{
- /**
- * @param mixed $payload
- *
- * @throws RuntimeException if the payload cannot be encoded
- */
- public static function encode($payload): string
+ public static function encode(mixed $payload): string
{
try {
- $data = json_encode($payload, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
- if (!is_string($data)) {
- throw new InvalidArgumentException('Unable to encode the data');
- }
-
- return $data;
+ return json_encode($payload, JSON_THROW_ON_ERROR | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
} catch (Throwable $throwable) {
throw new RuntimeException('Invalid content.', $throwable->getCode(), $throwable);
}
}
- /**
- * @throws RuntimeException if the payload cannot be decoded
- *
- * @return mixed
- */
- public static function decode(string $payload)
+ public static function decode(string $payload): mixed
{
- return json_decode($payload, true, 512, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
+ return json_decode($payload, true, 512, JSON_THROW_ON_ERROR | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
}
}
diff --git a/src/Component/Core/Util/KeyChecker.php b/src/Component/Core/Util/KeyChecker.php
index 30ae84bc..bc6ed53e 100644
--- a/src/Component/Core/Util/KeyChecker.php
+++ b/src/Component/Core/Util/KeyChecker.php
@@ -2,15 +2,6 @@
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\Core\Util;
use function in_array;
@@ -21,7 +12,7 @@
/**
* @internal
*/
-class KeyChecker
+final class KeyChecker
{
public static function checkKeyUsage(JWK $key, string $usage): void
{
@@ -33,12 +24,9 @@ public static function checkKeyUsage(JWK $key, string $usage): void
}
}
- /**
- * @throws InvalidArgumentException if the key is not suitable for the selected algorithm
- */
public static function checkKeyAlgorithm(JWK $key, string $algorithm): void
{
- if (!$key->has('alg')) {
+ if (! $key->has('alg')) {
return;
}
if ($key->get('alg') !== $algorithm) {
@@ -46,40 +34,45 @@ public static function checkKeyAlgorithm(JWK $key, string $algorithm): void
}
}
- /**
- * @throws InvalidArgumentException if the key is not suitable for the selected operation
- */
private static function checkOperation(JWK $key, string $usage): void
{
$ops = $key->get('key_ops');
- if (!is_array($ops)) {
+ if (! is_array($ops)) {
throw new InvalidArgumentException('Invalid key parameter "key_ops". Should be a list of key operations');
}
switch ($usage) {
case 'verification':
- if (!in_array('verify', $ops, true)) {
+ if (! in_array('verify', $ops, true)) {
throw new InvalidArgumentException('Key cannot be used to verify a signature');
}
break;
case 'signature':
- if (!in_array('sign', $ops, true)) {
+ if (! in_array('sign', $ops, true)) {
throw new InvalidArgumentException('Key cannot be used to sign');
}
break;
case 'encryption':
- if (!in_array('encrypt', $ops, true) && !in_array('wrapKey', $ops, true) && !in_array('deriveKey', $ops, true)) {
+ if (! in_array('encrypt', $ops, true) && ! in_array('wrapKey', $ops, true) && ! in_array(
+ 'deriveKey',
+ $ops,
+ true
+ )) {
throw new InvalidArgumentException('Key cannot be used to encrypt');
}
break;
case 'decryption':
- if (!in_array('decrypt', $ops, true) && !in_array('unwrapKey', $ops, true) && !in_array('deriveBits', $ops, true)) {
+ if (! in_array('decrypt', $ops, true) && ! in_array('unwrapKey', $ops, true) && ! in_array(
+ 'deriveBits',
+ $ops,
+ true
+ )) {
throw new InvalidArgumentException('Key cannot be used to decrypt');
}
@@ -90,9 +83,6 @@ private static function checkOperation(JWK $key, string $usage): void
}
}
- /**
- * @throws InvalidArgumentException if the key is not suitable for the selected operation
- */
private static function checkUsage(JWK $key, string $usage): void
{
$use = $key->get('use');
@@ -100,7 +90,7 @@ private static function checkUsage(JWK $key, string $usage): void
switch ($usage) {
case 'verification':
case 'signature':
- if ('sig' !== $use) {
+ if ($use !== 'sig') {
throw new InvalidArgumentException('Key cannot be used to sign or verify a signature.');
}
@@ -108,7 +98,7 @@ private static function checkUsage(JWK $key, string $usage): void
case 'encryption':
case 'decryption':
- if ('enc' !== $use) {
+ if ($use !== 'enc') {
throw new InvalidArgumentException('Key cannot be used to encrypt or decrypt.');
}
diff --git a/src/Component/Core/Util/RSAKey.php b/src/Component/Core/Util/RSAKey.php
index 6fc72e2c..ec9f42d1 100644
--- a/src/Component/Core/Util/RSAKey.php
+++ b/src/Component/Core/Util/RSAKey.php
@@ -2,15 +2,6 @@
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\Core\Util;
use function array_key_exists;
@@ -25,47 +16,30 @@
use function is_array;
use Jose\Component\Core\JWK;
use ParagonIE\ConstantTime\Base64UrlSafe;
+use const PHP_EOL;
use RuntimeException;
/**
* @internal
*/
-class RSAKey
+final class RSAKey
{
- /**
- * @var Sequence
- */
- private $sequence;
+ private ?Sequence $sequence = null;
- /**
- * @var bool
- */
- private $private;
+ private bool $private;
/**
* @var array
*/
private $values;
- /**
- * @var BigInteger
- */
- private $modulus;
+ private ?BigInteger $modulus = null;
- /**
- * @var int
- */
- private $modulus_length;
+ private ?int $modulus_length = null;
- /**
- * @var BigInteger
- */
- private $public_exponent;
+ private ?BigInteger $public_exponent = null;
- /**
- * @var null|BigInteger
- */
- private $private_exponent;
+ private ?BigInteger $private_exponent = null;
/**
* @var BigInteger[]
@@ -77,10 +51,7 @@ class RSAKey
*/
private $exponents = [];
- /**
- * @var null|BigInteger
- */
- private $coefficient;
+ private ?BigInteger $coefficient = null;
private function __construct(JWK $data)
{
@@ -89,9 +60,6 @@ private function __construct(JWK $data)
$this->private = array_key_exists('d', $this->values);
}
- /**
- * @return RSAKey
- */
public static function createFromJWK(JWK $jwk): self
{
return new self($jwk);
@@ -110,7 +78,7 @@ public function getModulusLength(): int
public function getExponent(): BigInteger
{
$d = $this->getPrivateExponent();
- if (null !== $d) {
+ if ($d !== null) {
return $d;
}
@@ -150,14 +118,9 @@ public function getCoefficient(): ?BigInteger
public function isPublic(): bool
{
- return !array_key_exists('d', $this->values);
+ return ! array_key_exists('d', $this->values);
}
- /**
- * @param RSAKey $private
- *
- * @return RSAKey
- */
public static function toPublic(self $private): self
{
$data = $private->toArray();
@@ -178,7 +141,7 @@ public function toArray(): array
public function toPEM(): string
{
- if (null === $this->sequence) {
+ if ($this->sequence === null) {
$this->sequence = new Sequence();
if (array_key_exists('d', $this->values)) {
$this->initPrivateKey();
@@ -186,27 +149,24 @@ public function toPEM(): string
$this->initPublicKey();
}
}
- $result = '-----BEGIN '.($this->private ? 'RSA PRIVATE' : 'PUBLIC').' KEY-----'.PHP_EOL;
+ $result = '-----BEGIN ' . ($this->private ? 'RSA PRIVATE' : 'PUBLIC') . ' KEY-----' . PHP_EOL;
$result .= chunk_split(base64_encode($this->sequence->getBinary()), 64, PHP_EOL);
- $result .= '-----END '.($this->private ? 'RSA PRIVATE' : 'PUBLIC').' KEY-----'.PHP_EOL;
+ $result .= '-----END ' . ($this->private ? 'RSA PRIVATE' : 'PUBLIC') . ' KEY-----' . PHP_EOL;
return $result;
}
/**
- * Exponentiate with or without Chinese Remainder Theorem.
- * Operation with primes 'p' and 'q' is appox. 2x faster.
- *
- * @param RSAKey $key
- *
- * @throws RuntimeException if the exponentiation cannot be achieved
+ * Exponentiate with or without Chinese Remainder Theorem. Operation with primes 'p' and 'q' is appox. 2x faster.
*/
public static function exponentiate(self $key, BigInteger $c): BigInteger
{
if ($c->compare(BigInteger::createFromDecimal(0)) < 0 || $c->compare($key->getModulus()) > 0) {
throw new RuntimeException();
}
- if ($key->isPublic() || null === $key->getCoefficient() || 0 === count($key->getPrimes()) || 0 === count($key->getExponents())) {
+ if ($key->isPublic() || $key->getCoefficient() === null || count($key->getPrimes()) === 0 || count(
+ $key->getExponents()
+ ) === 0) {
return $c->modPow($key->getExponent(), $key->getModulus());
}
@@ -218,7 +178,9 @@ public static function exponentiate(self $key, BigInteger $c): BigInteger
$m1 = $c->modPow($dP, $p);
$m2 = $c->modPow($dQ, $q);
- $h = $qInv->multiply($m1->subtract($m2)->add($p))->mod($p);
+ $h = $qInv->multiply($m1->subtract($m2)->add($p))
+ ->mod($p)
+ ;
return $m2->add($h->multiply($q));
}
@@ -229,7 +191,7 @@ private function populateBigIntegers(): void
$this->modulus_length = mb_strlen($this->getModulus()->toBytes(), '8bit');
$this->public_exponent = $this->convertBase64StringToBigInteger($this->values['e']);
- if (!$this->isPublic()) {
+ if (! $this->isPublic()) {
$this->private_exponent = $this->convertBase64StringToBigInteger($this->values['d']);
if (array_key_exists('p', $this->values) && array_key_exists('q', $this->values)) {
@@ -237,7 +199,10 @@ private function populateBigIntegers(): void
$this->convertBase64StringToBigInteger($this->values['p']),
$this->convertBase64StringToBigInteger($this->values['q']),
];
- if (array_key_exists('dp', $this->values) && array_key_exists('dq', $this->values) && array_key_exists('qi', $this->values)) {
+ if (array_key_exists('dp', $this->values) && array_key_exists('dq', $this->values) && array_key_exists(
+ 'qi',
+ $this->values
+ )) {
$this->exponents = [
$this->convertBase64StringToBigInteger($this->values['dp']),
$this->convertBase64StringToBigInteger($this->values['dq']),
@@ -281,9 +246,15 @@ private function initPrivateKey(): void
$d = new Integer($this->fromBase64ToInteger($this->values['d']));
$p = new Integer($this->fromBase64ToInteger($this->values['p']));
$q = new Integer($this->fromBase64ToInteger($this->values['q']));
- $dp = array_key_exists('dp', $this->values) ? new Integer($this->fromBase64ToInteger($this->values['dp'])) : new Integer(0);
- $dq = array_key_exists('dq', $this->values) ? new Integer($this->fromBase64ToInteger($this->values['dq'])) : new Integer(0);
- $qi = array_key_exists('qi', $this->values) ? new Integer($this->fromBase64ToInteger($this->values['qi'])) : new Integer(0);
+ $dp = array_key_exists('dp', $this->values) ? new Integer($this->fromBase64ToInteger(
+ $this->values['dp']
+ )) : new Integer(0);
+ $dq = array_key_exists('dq', $this->values) ? new Integer($this->fromBase64ToInteger(
+ $this->values['dq']
+ )) : new Integer(0);
+ $qi = array_key_exists('qi', $this->values) ? new Integer($this->fromBase64ToInteger(
+ $this->values['qi']
+ )) : new Integer(0);
$key_sequence = new Sequence();
$key_sequence->addChild($v);
$key_sequence->addChild($n);
@@ -306,7 +277,7 @@ private function initPrivateKey(): void
private function fromBase64ToInteger($value)
{
$unpacked = unpack('H*', Base64UrlSafe::decode($value));
- if (!is_array($unpacked) || 0 === count($unpacked)) {
+ if (! is_array($unpacked) || count($unpacked) === 0) {
throw new InvalidArgumentException('Unable to get the private key');
}
diff --git a/src/Component/Core/composer.json b/src/Component/Core/composer.json
index 0706dfc2..40c24a51 100644
--- a/src/Component/Core/composer.json
+++ b/src/Component/Core/composer.json
@@ -20,10 +20,10 @@
}
},
"require": {
- "php": ">=7.2",
+ "php": ">=8.0",
"ext-json": "*",
"ext-mbstring": "*",
- "brick/math": "^0.8.17|^0.9",
+ "brick/math": "^0.9",
"fgrosse/phpasn1": "^2.0",
"paragonie/constant_time_encoding": "^2.4"
},
diff --git a/src/Component/Encryption/Algorithm/ContentEncryptionAlgorithm.php b/src/Component/Encryption/Algorithm/ContentEncryptionAlgorithm.php
index f5047ee3..58d95bb2 100644
--- a/src/Component/Encryption/Algorithm/ContentEncryptionAlgorithm.php
+++ b/src/Component/Encryption/Algorithm/ContentEncryptionAlgorithm.php
@@ -2,15 +2,6 @@
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\Algorithm;
use Jose\Component\Core\Algorithm;
@@ -18,17 +9,24 @@
interface ContentEncryptionAlgorithm extends Algorithm
{
/**
- * This method encrypts the data using the given CEK, IV, AAD and protected header.
- * The variable $tag is populated on success.
+ * This method encrypts the data using the given CEK, IV, AAD and protected header. The variable $tag is populated
+ * on success.
*
* @param string $data The data to encrypt
* @param string $cek The content encryption key
* @param string $iv The Initialization Vector
- * @param null|string $aad Additional Additional Authenticated Data
+ * @param string|null $aad Additional Additional Authenticated Data
* @param string $encoded_protected_header The Protected Header encoded in Base64Url
* @param string $tag Tag
*/
- public function encryptContent(string $data, string $cek, string $iv, ?string $aad, string $encoded_protected_header, ?string &$tag = null): string;
+ public function encryptContent(
+ string $data,
+ string $cek,
+ string $iv,
+ ?string $aad,
+ string $encoded_protected_header,
+ ?string &$tag = null
+ ): string;
/**
* This method tries to decrypt the data using the given CEK, IV, AAD, protected header and tag.
@@ -36,11 +34,18 @@ public function encryptContent(string $data, string $cek, string $iv, ?string $a
* @param string $data The data to decrypt
* @param string $cek The content encryption key
* @param string $iv The Initialization Vector
- * @param null|string $aad Additional Additional Authenticated Data
+ * @param string|null $aad Additional Additional Authenticated Data
* @param string $encoded_protected_header The Protected Header encoded in Base64Url
* @param string $tag Tag
*/
- public function decryptContent(string $data, string $cek, string $iv, ?string $aad, string $encoded_protected_header, string $tag): string;
+ public function decryptContent(
+ string $data,
+ string $cek,
+ string $iv,
+ ?string $aad,
+ string $encoded_protected_header,
+ string $tag
+ ): string;
/**
* Returns the size of the IV used by this encryption method.
diff --git a/src/Component/Encryption/Algorithm/KeyEncryption/DirectEncryption.php b/src/Component/Encryption/Algorithm/KeyEncryption/DirectEncryption.php
index b871ed13..cec9ad99 100644
--- a/src/Component/Encryption/Algorithm/KeyEncryption/DirectEncryption.php
+++ b/src/Component/Encryption/Algorithm/KeyEncryption/DirectEncryption.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use Jose\Component\Core\JWK;
diff --git a/src/Component/Encryption/Algorithm/KeyEncryption/KeyAgreement.php b/src/Component/Encryption/Algorithm/KeyEncryption/KeyAgreement.php
index 6247b633..49c27bda 100644
--- a/src/Component/Encryption/Algorithm/KeyEncryption/KeyAgreement.php
+++ b/src/Component/Encryption/Algorithm/KeyEncryption/KeyAgreement.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use Jose\Component\Core\JWK;
@@ -21,5 +12,12 @@ interface KeyAgreement extends KeyEncryptionAlgorithm
/**
* Computes the agreement key.
*/
- public function getAgreementKey(int $encryptionKeyLength, string $algorithm, JWK $recipientKey, ?JWK $senderKey, array $completeHeader = [], array &$additionalHeaderValues = []): string;
+ public function getAgreementKey(
+ int $encryptionKeyLength,
+ string $algorithm,
+ JWK $recipientKey,
+ ?JWK $senderKey,
+ array $completeHeader = [],
+ array &$additionalHeaderValues = []
+ ): string;
}
diff --git a/src/Component/Encryption/Algorithm/KeyEncryption/KeyAgreementWithKeyWrapping.php b/src/Component/Encryption/Algorithm/KeyEncryption/KeyAgreementWithKeyWrapping.php
index 3d4d9f99..e623a0ef 100644
--- a/src/Component/Encryption/Algorithm/KeyEncryption/KeyAgreementWithKeyWrapping.php
+++ b/src/Component/Encryption/Algorithm/KeyEncryption/KeyAgreementWithKeyWrapping.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use Jose\Component\Core\JWK;
@@ -27,7 +18,14 @@ interface KeyAgreementWithKeyWrapping extends KeyEncryptionAlgorithm
* @param array $complete_header The complete header of the JWT
* @param array $additional_header_values Set additional header values if needed
*/
- public function wrapAgreementKey(JWK $recipientKey, ?JWK $senderKey, string $cek, int $encryption_key_length, array $complete_header, array &$additional_header_values): string;
+ public function wrapAgreementKey(
+ JWK $recipientKey,
+ ?JWK $senderKey,
+ string $cek,
+ int $encryption_key_length,
+ array $complete_header,
+ array &$additional_header_values
+ ): string;
/**
* Unwrap and compute the agreement key.
@@ -39,5 +37,11 @@ public function wrapAgreementKey(JWK $recipientKey, ?JWK $senderKey, string $cek
*
* @return string The decrypted CEK
*/
- public function unwrapAgreementKey(JWK $recipientKey, ?JWK $senderKey, string $encrypted_cek, int $encryption_key_length, array $complete_header): string;
+ public function unwrapAgreementKey(
+ JWK $recipientKey,
+ ?JWK $senderKey,
+ string $encrypted_cek,
+ int $encryption_key_length,
+ array $complete_header
+ ): string;
}
diff --git a/src/Component/Encryption/Algorithm/KeyEncryption/KeyEncryption.php b/src/Component/Encryption/Algorithm/KeyEncryption/KeyEncryption.php
index 0791490a..d1bf020b 100644
--- a/src/Component/Encryption/Algorithm/KeyEncryption/KeyEncryption.php
+++ b/src/Component/Encryption/Algorithm/KeyEncryption/KeyEncryption.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use Jose\Component\Core\JWK;
diff --git a/src/Component/Encryption/Algorithm/KeyEncryption/KeyWrapping.php b/src/Component/Encryption/Algorithm/KeyEncryption/KeyWrapping.php
index 016b60c9..57adea54 100644
--- a/src/Component/Encryption/Algorithm/KeyEncryption/KeyWrapping.php
+++ b/src/Component/Encryption/Algorithm/KeyEncryption/KeyWrapping.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use Jose\Component\Core\JWK;
diff --git a/src/Component/Encryption/Algorithm/KeyEncryptionAlgorithm.php b/src/Component/Encryption/Algorithm/KeyEncryptionAlgorithm.php
index 4766f836..9012a202 100644
--- a/src/Component/Encryption/Algorithm/KeyEncryptionAlgorithm.php
+++ b/src/Component/Encryption/Algorithm/KeyEncryptionAlgorithm.php
@@ -2,15 +2,6 @@
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\Algorithm;
use Jose\Component\Core\Algorithm;
diff --git a/src/Component/Encryption/Compression/CompressionMethod.php b/src/Component/Encryption/Compression/CompressionMethod.php
index 31185b73..85d2bf38 100644
--- a/src/Component/Encryption/Compression/CompressionMethod.php
+++ b/src/Component/Encryption/Compression/CompressionMethod.php
@@ -2,15 +2,6 @@
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\Compression;
interface CompressionMethod
@@ -21,16 +12,14 @@ interface CompressionMethod
public function name(): string;
/**
- * Compress the data.
- * Throws an exception in case of failure.
+ * Compress the data. Throws an exception in case of failure.
*
* @param string $data The data to compress
*/
public function compress(string $data): string;
/**
- * Uncompress the data.
- * Throws an exception in case of failure.
+ * Uncompress the data. Throws an exception in case of failure.
*
* @param string $data The data to uncompress
*/
diff --git a/src/Component/Encryption/Compression/CompressionMethodManager.php b/src/Component/Encryption/Compression/CompressionMethodManager.php
index 59ff179e..a73b7589 100644
--- a/src/Component/Encryption/Compression/CompressionMethodManager.php
+++ b/src/Component/Encryption/Compression/CompressionMethodManager.php
@@ -2,15 +2,6 @@
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\Compression;
use function array_key_exists;
@@ -21,7 +12,7 @@ class CompressionMethodManager
/**
* @var CompressionMethod[]
*/
- private $compressionMethods = [];
+ private array $compressionMethods = [];
public function __construct(array $methods = [])
{
@@ -39,16 +30,14 @@ public function has(string $name): bool
}
/**
- * This method returns the compression method with the given name.
- * Throws an exception if the method is not supported.
+ * This method returns the compression method with the given name. Throws an exception if the method is not
+ * supported.
*
* @param string $name The name of the compression method
- *
- * @throws InvalidArgumentException if the compression method is not supported
*/
public function get(string $name): CompressionMethod
{
- if (!$this->has($name)) {
+ if (! $this->has($name)) {
throw new InvalidArgumentException(sprintf('The compression method "%s" is not supported.', $name));
}
diff --git a/src/Component/Encryption/Compression/CompressionMethodManagerFactory.php b/src/Component/Encryption/Compression/CompressionMethodManagerFactory.php
index 869da3d3..d6fa78e5 100644
--- a/src/Component/Encryption/Compression/CompressionMethodManagerFactory.php
+++ b/src/Component/Encryption/Compression/CompressionMethodManagerFactory.php
@@ -2,15 +2,6 @@
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\Compression;
use InvalidArgumentException;
@@ -23,9 +14,8 @@ class CompressionMethodManagerFactory
private $compressionMethods = [];
/**
- * This method adds a compression method to this factory.
- * The method is uniquely identified by an alias. This allows the same method to be added twice (or more)
- * using several configuration options.
+ * This method adds a compression method to this factory. The method is uniquely identified by an alias. This allows
+ * the same method to be added twice (or more) using several configuration options.
*/
public function add(string $alias, CompressionMethod $compressionMethod): void
{
@@ -53,19 +43,20 @@ public function all(): array
}
/**
- * Creates a compression method manager using the compression methods identified by the given aliases.
- * If one of the aliases does not exist, an exception is thrown.
+ * Creates a compression method manager using the compression methods identified by the given aliases. If one of the
+ * aliases does not exist, an exception is thrown.
*
* @param string[] $aliases
- *
- * @throws InvalidArgumentException if the compression method alias is not supported
*/
public function create(array $aliases): CompressionMethodManager
{
$compressionMethods = [];
foreach ($aliases as $alias) {
- if (!isset($this->compressionMethods[$alias])) {
- throw new InvalidArgumentException(sprintf('The compression method with the alias "%s" is not supported.', $alias));
+ if (! isset($this->compressionMethods[$alias])) {
+ throw new InvalidArgumentException(sprintf(
+ 'The compression method with the alias "%s" is not supported.',
+ $alias
+ ));
}
$compressionMethods[] = $this->compressionMethods[$alias];
}
diff --git a/src/Component/Encryption/Compression/Deflate.php b/src/Component/Encryption/Compression/Deflate.php
index db8fbf29..963c9b0f 100644
--- a/src/Component/Encryption/Compression/Deflate.php
+++ b/src/Component/Encryption/Compression/Deflate.php
@@ -2,15 +2,6 @@
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\Compression;
use InvalidArgumentException;
@@ -19,20 +10,14 @@
final class Deflate implements CompressionMethod
{
- /**
- * @var int
- */
- private $compressionLevel = -1;
+ private int $compressionLevel = -1;
- /**
- * Deflate constructor.
- *
- * @throws InvalidArgumentException if the compression level is invalid
- */
public function __construct(int $compressionLevel = -1)
{
if ($compressionLevel < -1 || $compressionLevel > 9) {
- throw new InvalidArgumentException('The compression level can be given as 0 for no compression up to 9 for maximum compression. If -1 given, the default compression level will be the default compression level of the zlib library.');
+ throw new InvalidArgumentException(
+ 'The compression level can be given as 0 for no compression up to 9 for maximum compression. If -1 given, the default compression level will be the default compression level of the zlib library.'
+ );
}
$this->compressionLevel = $compressionLevel;
}
@@ -42,14 +27,11 @@ public function name(): string
return 'DEF';
}
- /**
- * @throws InvalidArgumentException if the compression failed
- */
public function compress(string $data): string
{
try {
$bin = gzdeflate($data, $this->getCompressionLevel());
- if (!is_string($bin)) {
+ if (! is_string($bin)) {
throw new InvalidArgumentException('Unable to encode the data');
}
@@ -59,14 +41,11 @@ public function compress(string $data): string
}
}
- /**
- * @throws InvalidArgumentException if the decompression failed
- */
public function uncompress(string $data): string
{
try {
$bin = gzinflate($data);
- if (!is_string($bin)) {
+ if (! is_string($bin)) {
throw new InvalidArgumentException('Unable to encode the data');
}
diff --git a/src/Component/Encryption/JWE.php b/src/Component/Encryption/JWE.php
index ed1bc23e..33d041f1 100644
--- a/src/Component/Encryption/JWE.php
+++ b/src/Component/Encryption/JWE.php
@@ -2,15 +2,6 @@
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 function array_key_exists;
@@ -23,57 +14,26 @@ class JWE implements JWT
/**
* @var Recipient[]
*/
- private $recipients = [];
-
- /**
- * @var null|string
- */
- private $ciphertext;
-
- /**
- * @var string
- */
- private $iv;
+ private array $recipients = [];
- /**
- * @var null|string
- */
- private $aad;
+ private array $sharedHeader = [];
- /**
- * @var string
- */
- private $tag;
+ private array $sharedProtectedHeader = [];
- /**
- * @var array
- */
- private $sharedHeader = [];
+ private ?string $payload = null;
- /**
- * @var array
- */
- private $sharedProtectedHeader = [];
-
- /**
- * @var null|string
- */
- private $encodedSharedProtectedHeader;
-
- /**
- * @var null|string
- */
- private $payload;
-
- public function __construct(string $ciphertext, string $iv, string $tag, ?string $aad = null, array $sharedHeader = [], array $sharedProtectedHeader = [], ?string $encodedSharedProtectedHeader = null, array $recipients = [])
- {
- $this->ciphertext = $ciphertext;
- $this->iv = $iv;
- $this->aad = $aad;
- $this->tag = $tag;
+ public function __construct(
+ private ?string $ciphertext,
+ private string $iv,
+ private string $tag,
+ private ?string $aad = null,
+ array $sharedHeader = [],
+ array $sharedProtectedHeader = [],
+ private ?string $encodedSharedProtectedHeader = null,
+ array $recipients = []
+ ) {
$this->sharedHeader = $sharedHeader;
$this->sharedProtectedHeader = $sharedProtectedHeader;
- $this->encodedSharedProtectedHeader = $encodedSharedProtectedHeader;
$this->recipients = $recipients;
}
@@ -83,10 +43,7 @@ public function getPayload(): ?string
}
/**
- * Set the payload.
- * This method is immutable and a new object will be returned.
- *
- * @return JWE
+ * Set the payload. This method is immutable and a new object will be returned.
*/
public function withPayload(string $payload): self
{
@@ -109,7 +66,7 @@ public function countRecipients(): int
*/
public function isEncrypted(): bool
{
- return null !== $this->getCiphertext();
+ return $this->getCiphertext() !== null;
}
/**
@@ -124,12 +81,10 @@ public function getRecipients(): array
/**
* Returns the recipient object at the given index.
- *
- * @throws InvalidArgumentException if the recipient ID does not exist
*/
public function getRecipient(int $id): Recipient
{
- if (!isset($this->recipients[$id])) {
+ if (! isset($this->recipients[$id])) {
throw new InvalidArgumentException('The recipient does not exist.');
}
@@ -139,7 +94,7 @@ public function getRecipient(int $id): Recipient
/**
* Returns the ciphertext. This method will return null is the JWE has not yet been encrypted.
*
- * @return null|string The cyphertext
+ * @return string|null The cyphertext
*/
public function getCiphertext(): ?string
{
@@ -187,18 +142,16 @@ public function getSharedProtectedHeader(): array
}
/**
- * Returns the shared protected header parameter identified by the given key.
- * Throws an exception is the the parameter is not available.
+ * Returns the shared protected header parameter identified by the given key. Throws an exception is the the
+ * parameter is not available.
*
* @param string $key The key
*
- * @throws InvalidArgumentException if the shared protected header parameter does not exist
- *
- * @return null|mixed
+ * @return mixed|null
*/
public function getSharedProtectedHeaderParameter(string $key)
{
- if (!$this->hasSharedProtectedHeaderParameter($key)) {
+ if (! $this->hasSharedProtectedHeaderParameter($key)) {
throw new InvalidArgumentException(sprintf('The shared protected header "%s" does not exist.', $key));
}
@@ -224,18 +177,16 @@ public function getSharedHeader(): array
}
/**
- * Returns the shared header parameter identified by the given key.
- * Throws an exception is the the parameter is not available.
+ * Returns the shared header parameter identified by the given key. Throws an exception is the the parameter is not
+ * available.
*
* @param string $key The key
*
- * @throws InvalidArgumentException if the shared header parameter does not exist
- *
- * @return null|mixed
+ * @return mixed|null
*/
public function getSharedHeaderParameter(string $key)
{
- if (!$this->hasSharedHeaderParameter($key)) {
+ if (! $this->hasSharedHeaderParameter($key)) {
throw new InvalidArgumentException(sprintf('The shared header "%s" does not exist.', $key));
}
@@ -253,8 +204,8 @@ public function hasSharedHeaderParameter(string $key): bool
}
/**
- * This method splits the JWE into a list of JWEs.
- * It is only useful when the JWE contains more than one recipient (JSON General Serialization).
+ * This method splits the JWE into a list of JWEs. It is only useful when the JWE contains more than one recipient
+ * (JSON General Serialization).
*
* @return JWE[]
*/
diff --git a/src/Component/Encryption/JWEBuilder.php b/src/Component/Encryption/JWEBuilder.php
index ea763f4a..6be93bee 100644
--- a/src/Component/Encryption/JWEBuilder.php
+++ b/src/Component/Encryption/JWEBuilder.php
@@ -2,15 +2,6 @@
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 function array_key_exists;
@@ -35,72 +26,31 @@
class JWEBuilder
{
- /**
- * @var null|string
- */
- protected $payload;
+ protected ?string $payload;
- /**
- * @var null|string
- */
- protected $aad;
-
- /**
- * @var array
- */
- protected $recipients = [];
-
- /**
- * @var array
- */
- protected $sharedProtectedHeader = [];
-
- /**
- * @var array
- */
- protected $sharedHeader = [];
+ protected ?string $aad;
- /**
- * @var AlgorithmManager
- */
- private $keyEncryptionAlgorithmManager;
+ protected array $recipients = [];
- /**
- * @var AlgorithmManager
- */
- private $contentEncryptionAlgorithmManager;
+ protected array $sharedProtectedHeader = [];
- /**
- * @var CompressionMethodManager
- */
- private $compressionManager;
+ protected array $sharedHeader = [];
- /**
- * @var null|CompressionMethod
- */
- private $compressionMethod;
+ private ?CompressionMethod $compressionMethod;
- /**
- * @var null|ContentEncryptionAlgorithm
- */
- private $contentEncryptionAlgorithm;
+ private ?string $keyManagementMode;
- /**
- * @var null|string
- */
- private $keyManagementMode;
+ private ?ContentEncryptionAlgorithm $contentEncryptionAlgorithm = null;
- public function __construct(AlgorithmManager $keyEncryptionAlgorithmManager, AlgorithmManager $contentEncryptionAlgorithmManager, CompressionMethodManager $compressionManager)
- {
- $this->keyEncryptionAlgorithmManager = $keyEncryptionAlgorithmManager;
- $this->contentEncryptionAlgorithmManager = $contentEncryptionAlgorithmManager;
- $this->compressionManager = $compressionManager;
+ public function __construct(
+ private AlgorithmManager $keyEncryptionAlgorithmManager,
+ private AlgorithmManager $contentEncryptionAlgorithmManager,
+ private CompressionMethodManager $compressionManager
+ ) {
}
/**
* Reset the current data.
- *
- * @return JWEBuilder
*/
public function create(): self
{
@@ -110,7 +60,6 @@ public function create(): self
$this->sharedProtectedHeader = [];
$this->sharedHeader = [];
$this->compressionMethod = null;
- $this->contentEncryptionAlgorithm = null;
$this->keyManagementMode = null;
return $this;
@@ -142,14 +91,10 @@ public function getCompressionMethodManager(): CompressionMethodManager
/**
* Set the payload of the JWE to build.
- *
- * @throws InvalidArgumentException if the payload is not encoded in UTF-8
- *
- * @return JWEBuilder
*/
public function withPayload(string $payload): self
{
- if ('UTF-8' !== mb_detect_encoding($payload, 'UTF-8', true)) {
+ if (mb_detect_encoding($payload, 'UTF-8', true) !== 'UTF-8') {
throw new InvalidArgumentException('The payload must be encoded in UTF-8');
}
$clone = clone $this;
@@ -160,8 +105,6 @@ public function withPayload(string $payload): self
/**
* Set the Additional Authenticated Data of the JWE to build.
- *
- * @return JWEBuilder
*/
public function withAAD(?string $aad): self
{
@@ -173,8 +116,6 @@ public function withAAD(?string $aad): self
/**
* Set the shared protected header of the JWE to build.
- *
- * @return JWEBuilder
*/
public function withSharedProtectedHeader(array $sharedProtectedHeader): self
{
@@ -190,8 +131,6 @@ public function withSharedProtectedHeader(array $sharedProtectedHeader): self
/**
* Set the shared header of the JWE to build.
- *
- * @return JWEBuilder
*/
public function withSharedHeader(array $sharedHeader): self
{
@@ -207,11 +146,6 @@ public function withSharedHeader(array $sharedHeader): self
/**
* Adds a recipient to the JWE to build.
- *
- * @throws InvalidArgumentException if key management modes are incompatible
- * @throws InvalidArgumentException if the compression method is invalid
- *
- * @return JWEBuilder
*/
public function addRecipient(JWK $recipientKey, array $recipientHeader = []): self
{
@@ -221,23 +155,26 @@ public function addRecipient(JWK $recipientKey, array $recipientHeader = []): se
$completeHeader = array_merge($clone->sharedHeader, $recipientHeader, $clone->sharedProtectedHeader);
$clone->checkAndSetContentEncryptionAlgorithm($completeHeader);
$keyEncryptionAlgorithm = $clone->getKeyEncryptionAlgorithm($completeHeader);
- if (null === $clone->keyManagementMode) {
+ if ($clone->keyManagementMode === null) {
$clone->keyManagementMode = $keyEncryptionAlgorithm->getKeyManagementMode();
} else {
- if (!$clone->areKeyManagementModesCompatible($clone->keyManagementMode, $keyEncryptionAlgorithm->getKeyManagementMode())) {
+ if (! $clone->areKeyManagementModesCompatible(
+ $clone->keyManagementMode,
+ $keyEncryptionAlgorithm->getKeyManagementMode()
+ )) {
throw new InvalidArgumentException('Foreign key management mode forbidden.');
}
}
$compressionMethod = $clone->getCompressionMethod($completeHeader);
- if (null !== $compressionMethod) {
- if (null === $clone->compressionMethod) {
+ if ($compressionMethod !== null) {
+ if ($clone->compressionMethod === null) {
$clone->compressionMethod = $compressionMethod;
} elseif ($clone->compressionMethod->name() !== $compressionMethod->name()) {
throw new InvalidArgumentException('Incompatible compression method.');
}
}
- if (null === $compressionMethod && null !== $clone->compressionMethod) {
+ if ($compressionMethod === null && $clone->compressionMethod !== null) {
throw new InvalidArgumentException('Inconsistent compression method.');
}
$clone->checkKey($keyEncryptionAlgorithm, $recipientKey);
@@ -252,16 +189,13 @@ public function addRecipient(JWK $recipientKey, array $recipientHeader = []): se
/**
* Builds the JWE.
- *
- * @throws LogicException if no payload is set
- * @throws LogicException if there are no recipient
*/
public function build(): JWE
{
- if (null === $this->payload) {
+ if ($this->payload === null) {
throw new LogicException('Payload not set.');
}
- if (0 === count($this->recipients)) {
+ if (count($this->recipients) === 0) {
throw new LogicException('No recipient.');
}
@@ -274,44 +208,56 @@ public function build(): JWE
$recipients[] = $recipient;
}
- if (0 !== count($additionalHeader) && 1 === count($this->recipients)) {
+ if (count($additionalHeader) !== 0 && count($this->recipients) === 1) {
$sharedProtectedHeader = array_merge($additionalHeader, $this->sharedProtectedHeader);
} else {
$sharedProtectedHeader = $this->sharedProtectedHeader;
}
- $encodedSharedProtectedHeader = 0 === count($sharedProtectedHeader) ? '' : Base64UrlSafe::encodeUnpadded(JsonConverter::encode($sharedProtectedHeader));
+ $encodedSharedProtectedHeader = count($sharedProtectedHeader) === 0 ? '' : Base64UrlSafe::encodeUnpadded(
+ JsonConverter::encode($sharedProtectedHeader)
+ );
[$ciphertext, $iv, $tag] = $this->encryptJWE($cek, $encodedSharedProtectedHeader);
- return new JWE($ciphertext, $iv, $tag, $this->aad, $this->sharedHeader, $sharedProtectedHeader, $encodedSharedProtectedHeader, $recipients);
+ return new JWE(
+ $ciphertext,
+ $iv,
+ $tag,
+ $this->aad,
+ $this->sharedHeader,
+ $sharedProtectedHeader,
+ $encodedSharedProtectedHeader,
+ $recipients
+ );
}
- /**
- * @throws InvalidArgumentException if the content encryption algorithm is not valid
- */
private function checkAndSetContentEncryptionAlgorithm(array $completeHeader): void
{
$contentEncryptionAlgorithm = $this->getContentEncryptionAlgorithm($completeHeader);
- if (null === $this->contentEncryptionAlgorithm) {
+ if ($this->contentEncryptionAlgorithm === null) {
$this->contentEncryptionAlgorithm = $contentEncryptionAlgorithm;
} elseif ($contentEncryptionAlgorithm->name() !== $this->contentEncryptionAlgorithm->name()) {
throw new InvalidArgumentException('Inconsistent content encryption algorithm');
}
}
- /**
- * @throws InvalidArgumentException if the key encryption algorithm is not valid
- */
private function processRecipient(array $recipient, string $cek, array &$additionalHeader): Recipient
{
$completeHeader = array_merge($this->sharedHeader, $recipient['header'], $this->sharedProtectedHeader);
$keyEncryptionAlgorithm = $recipient['key_encryption_algorithm'];
- if (!$keyEncryptionAlgorithm instanceof KeyEncryptionAlgorithm) {
+ if (! $keyEncryptionAlgorithm instanceof KeyEncryptionAlgorithm) {
throw new InvalidArgumentException('The key encryption algorithm is not valid');
}
- $encryptedContentEncryptionKey = $this->getEncryptedKey($completeHeader, $cek, $keyEncryptionAlgorithm, $additionalHeader, $recipient['key'], $recipient['sender_key'] ?? null);
+ $encryptedContentEncryptionKey = $this->getEncryptedKey(
+ $completeHeader,
+ $cek,
+ $keyEncryptionAlgorithm,
+ $additionalHeader,
+ $recipient['key'],
+ $recipient['sender_key'] ?? null
+ );
$recipientHeader = $recipient['header'];
- if (0 !== count($additionalHeader) && 1 !== count($this->recipients)) {
+ if (count($additionalHeader) !== 0 && count($this->recipients) !== 1) {
$recipientHeader = array_merge($recipientHeader, $additionalHeader);
$additionalHeader = [];
}
@@ -319,19 +265,23 @@ private function processRecipient(array $recipient, string $cek, array &$additio
return new Recipient($recipientHeader, $encryptedContentEncryptionKey);
}
- /**
- * @throws InvalidArgumentException if the content encryption algorithm is not valid
- */
private function encryptJWE(string $cek, string $encodedSharedProtectedHeader): array
{
- if (!$this->contentEncryptionAlgorithm instanceof ContentEncryptionAlgorithm) {
+ if (! $this->contentEncryptionAlgorithm instanceof ContentEncryptionAlgorithm) {
throw new InvalidArgumentException('The content encryption algorithm is not valid');
}
$iv_size = $this->contentEncryptionAlgorithm->getIVSize();
$iv = $this->createIV($iv_size);
$payload = $this->preparePayload();
$tag = null;
- $ciphertext = $this->contentEncryptionAlgorithm->encryptContent($payload, $cek, $iv, $this->aad, $encodedSharedProtectedHeader, $tag);
+ $ciphertext = $this->contentEncryptionAlgorithm->encryptContent(
+ $payload,
+ $cek,
+ $iv,
+ $this->aad,
+ $encodedSharedProtectedHeader,
+ $tag
+ );
return [$ciphertext, $iv, $tag];
}
@@ -342,26 +292,48 @@ private function encryptJWE(string $cek, string $encodedSharedProtectedHeader):
private function preparePayload(): ?string
{
$prepared = $this->payload;
- if (null === $this->compressionMethod) {
+ if ($this->compressionMethod === null) {
return $prepared;
}
return $this->compressionMethod->compress($prepared);
}
- /**
- * @throws InvalidArgumentException if the key encryption algorithm is not supported
- */
- private function getEncryptedKey(array $completeHeader, string $cek, KeyEncryptionAlgorithm $keyEncryptionAlgorithm, array &$additionalHeader, JWK $recipientKey, ?JWK $senderKey): ?string
- {
+ private function getEncryptedKey(
+ array $completeHeader,
+ string $cek,
+ KeyEncryptionAlgorithm $keyEncryptionAlgorithm,
+ array &$additionalHeader,
+ JWK $recipientKey,
+ ?JWK $senderKey
+ ): ?string {
if ($keyEncryptionAlgorithm instanceof KeyEncryption) {
- return $this->getEncryptedKeyFromKeyEncryptionAlgorithm($completeHeader, $cek, $keyEncryptionAlgorithm, $recipientKey, $additionalHeader);
+ return $this->getEncryptedKeyFromKeyEncryptionAlgorithm(
+ $completeHeader,
+ $cek,
+ $keyEncryptionAlgorithm,
+ $recipientKey,
+ $additionalHeader
+ );
}
if ($keyEncryptionAlgorithm instanceof KeyWrapping) {
- return $this->getEncryptedKeyFromKeyWrappingAlgorithm($completeHeader, $cek, $keyEncryptionAlgorithm, $recipientKey, $additionalHeader);
+ return $this->getEncryptedKeyFromKeyWrappingAlgorithm(
+ $completeHeader,
+ $cek,
+ $keyEncryptionAlgorithm,
+ $recipientKey,
+ $additionalHeader
+ );
}
if ($keyEncryptionAlgorithm instanceof KeyAgreementWithKeyWrapping) {
- return $this->getEncryptedKeyFromKeyAgreementAndKeyWrappingAlgorithm($completeHeader, $cek, $keyEncryptionAlgorithm, $additionalHeader, $recipientKey, $senderKey);
+ return $this->getEncryptedKeyFromKeyAgreementAndKeyWrappingAlgorithm(
+ $completeHeader,
+ $cek,
+ $keyEncryptionAlgorithm,
+ $additionalHeader,
+ $recipientKey,
+ $senderKey
+ );
}
if ($keyEncryptionAlgorithm instanceof KeyAgreement) {
return null;
@@ -373,41 +345,56 @@ private function getEncryptedKey(array $completeHeader, string $cek, KeyEncrypti
throw new InvalidArgumentException('Unsupported key encryption algorithm.');
}
- /**
- * @throws InvalidArgumentException if the content encryption algorithm is invalid
- */
- private function getEncryptedKeyFromKeyAgreementAndKeyWrappingAlgorithm(array $completeHeader, string $cek, KeyAgreementWithKeyWrapping $keyEncryptionAlgorithm, array &$additionalHeader, JWK $recipientKey, ?JWK $senderKey): string
- {
- if (null === $this->contentEncryptionAlgorithm) {
+ private function getEncryptedKeyFromKeyAgreementAndKeyWrappingAlgorithm(
+ array $completeHeader,
+ string $cek,
+ KeyAgreementWithKeyWrapping $keyEncryptionAlgorithm,
+ array &$additionalHeader,
+ JWK $recipientKey,
+ ?JWK $senderKey
+ ): string {
+ if ($this->contentEncryptionAlgorithm === null) {
throw new InvalidArgumentException('Invalid content encryption algorithm');
}
- return $keyEncryptionAlgorithm->wrapAgreementKey($recipientKey, $senderKey, $cek, $this->contentEncryptionAlgorithm->getCEKSize(), $completeHeader, $additionalHeader);
+ return $keyEncryptionAlgorithm->wrapAgreementKey(
+ $recipientKey,
+ $senderKey,
+ $cek,
+ $this->contentEncryptionAlgorithm->getCEKSize(),
+ $completeHeader,
+ $additionalHeader
+ );
}
- private function getEncryptedKeyFromKeyEncryptionAlgorithm(array $completeHeader, string $cek, KeyEncryption $keyEncryptionAlgorithm, JWK $recipientKey, array &$additionalHeader): string
- {
+ private function getEncryptedKeyFromKeyEncryptionAlgorithm(
+ array $completeHeader,
+ string $cek,
+ KeyEncryption $keyEncryptionAlgorithm,
+ JWK $recipientKey,
+ array &$additionalHeader
+ ): string {
return $keyEncryptionAlgorithm->encryptKey($recipientKey, $cek, $completeHeader, $additionalHeader);
}
- private function getEncryptedKeyFromKeyWrappingAlgorithm(array $completeHeader, string $cek, KeyWrapping $keyEncryptionAlgorithm, JWK $recipientKey, array &$additionalHeader): string
- {
+ private function getEncryptedKeyFromKeyWrappingAlgorithm(
+ array $completeHeader,
+ string $cek,
+ KeyWrapping $keyEncryptionAlgorithm,
+ JWK $recipientKey,
+ array &$additionalHeader
+ ): string {
return $keyEncryptionAlgorithm->wrapKey($recipientKey, $cek, $completeHeader, $additionalHeader);
}
- /**
- * @throws InvalidArgumentException if the content encryption algorithm is invalid
- * @throws InvalidArgumentException if the key type is not valid
- * @throws InvalidArgumentException if the key management mode is not supported
- */
private function checkKey(KeyEncryptionAlgorithm $keyEncryptionAlgorithm, JWK $recipientKey): void
{
- if (null === $this->contentEncryptionAlgorithm) {
+ if ($this->contentEncryptionAlgorithm === null) {
throw new InvalidArgumentException('Invalid content encryption algorithm');
}
KeyChecker::checkKeyUsage($recipientKey, 'encryption');
- if ('dir' !== $keyEncryptionAlgorithm->name()) {
+ if ($keyEncryptionAlgorithm->name() !== 'dir') {
KeyChecker::checkKeyAlgorithm($recipientKey, $keyEncryptionAlgorithm->name());
} else {
KeyChecker::checkKeyAlgorithm($recipientKey, $this->contentEncryptionAlgorithm->name());
@@ -416,7 +403,7 @@ private function checkKey(KeyEncryptionAlgorithm $keyEncryptionAlgorithm, JWK $r
private function determineCEK(array &$additionalHeader): string
{
- if (null === $this->contentEncryptionAlgorithm) {
+ if ($this->contentEncryptionAlgorithm === null) {
throw new InvalidArgumentException('Invalid content encryption algorithm');
}
@@ -426,39 +413,57 @@ private function determineCEK(array &$additionalHeader): string
return $this->createCEK($this->contentEncryptionAlgorithm->getCEKSize());
case KeyEncryption::MODE_AGREEMENT:
- if (1 !== count($this->recipients)) {
- throw new LogicException('Unable to encrypt for multiple recipients using key agreement algorithms.');
+ if (count($this->recipients) !== 1) {
+ throw new LogicException(
+ 'Unable to encrypt for multiple recipients using key agreement algorithms.'
+ );
}
$recipientKey = $this->recipients[0]['key'];
$senderKey = $this->recipients[0]['sender_key'] ?? null;
$algorithm = $this->recipients[0]['key_encryption_algorithm'];
- if (!$algorithm instanceof KeyAgreement) {
+ if (! $algorithm instanceof KeyAgreement) {
throw new InvalidArgumentException('Invalid content encryption algorithm');
}
- $completeHeader = array_merge($this->sharedHeader, $this->recipients[0]['header'], $this->sharedProtectedHeader);
-
- return $algorithm->getAgreementKey($this->contentEncryptionAlgorithm->getCEKSize(), $this->contentEncryptionAlgorithm->name(), $recipientKey, $senderKey, $completeHeader, $additionalHeader);
+ $completeHeader = array_merge(
+ $this->sharedHeader,
+ $this->recipients[0]['header'],
+ $this->sharedProtectedHeader
+ );
+
+ return $algorithm->getAgreementKey(
+ $this->contentEncryptionAlgorithm->getCEKSize(),
+ $this->contentEncryptionAlgorithm->name(),
+ $recipientKey,
+ $senderKey,
+ $completeHeader,
+ $additionalHeader
+ );
case KeyEncryption::MODE_DIRECT:
- if (1 !== count($this->recipients)) {
- throw new LogicException('Unable to encrypt for multiple recipients using key agreement algorithms.');
+ if (count($this->recipients) !== 1) {
+ throw new LogicException(
+ 'Unable to encrypt for multiple recipients using key agreement algorithms.'
+ );
}
/** @var JWK $key */
$key = $this->recipients[0]['key'];
- if ('oct' !== $key->get('kty')) {
+ if ($key->get('kty') !== 'oct') {
throw new RuntimeException('Wrong key type.');
}
return Base64UrlSafe::decode($key->get('k'));
default:
- throw new InvalidArgumentException(sprintf('Unsupported key management mode "%s".', $this->keyManagementMode));
+ throw new InvalidArgumentException(sprintf(
+ 'Unsupported key management mode "%s".',
+ $this->keyManagementMode
+ ));
}
}
private function getCompressionMethod(array $completeHeader): ?CompressionMethod
{
- if (!array_key_exists('zip', $completeHeader)) {
+ if (! array_key_exists('zip', $completeHeader)) {
return null;
}
@@ -471,10 +476,27 @@ private function areKeyManagementModesCompatible(string $current, string $new):
$dir = KeyEncryptionAlgorithm::MODE_DIRECT;
$enc = KeyEncryptionAlgorithm::MODE_ENCRYPT;
$wrap = KeyEncryptionAlgorithm::MODE_WRAP;
- $supportedKeyManagementModeCombinations = [$enc.$enc => true, $enc.$wrap => true, $wrap.$enc => true, $wrap.$wrap => true, $agree.$agree => false, $agree.$dir => false, $agree.$enc => false, $agree.$wrap => false, $dir.$agree => false, $dir.$dir => false, $dir.$enc => false, $dir.$wrap => false, $enc.$agree => false, $enc.$dir => false, $wrap.$agree => false, $wrap.$dir => false];
+ $supportedKeyManagementModeCombinations = [
+ $enc . $enc => true,
+ $enc . $wrap => true,
+ $wrap . $enc => true,
+ $wrap . $wrap => true,
+ $agree . $agree => false,
+ $agree . $dir => false,
+ $agree . $enc => false,
+ $agree . $wrap => false,
+ $dir . $agree => false,
+ $dir . $dir => false,
+ $dir . $enc => false,
+ $dir . $wrap => false,
+ $enc . $agree => false,
+ $enc . $dir => false,
+ $wrap . $agree => false,
+ $wrap . $dir => false,
+ ];
- if (array_key_exists($current.$new, $supportedKeyManagementModeCombinations)) {
- return $supportedKeyManagementModeCombinations[$current.$new];
+ if (array_key_exists($current . $new, $supportedKeyManagementModeCombinations)) {
+ return $supportedKeyManagementModeCombinations[$current . $new];
}
return false;
@@ -490,48 +512,46 @@ private function createIV(int $size): string
return random_bytes($size / 8);
}
- /**
- * @throws InvalidArgumentException if the header parameter "alg" is missing
- * @throws InvalidArgumentException if the header parameter "alg" is not supported or not a key encryption algorithm
- */
private function getKeyEncryptionAlgorithm(array $completeHeader): KeyEncryptionAlgorithm
{
- if (!isset($completeHeader['alg'])) {
+ if (! isset($completeHeader['alg'])) {
throw new InvalidArgumentException('Parameter "alg" is missing.');
}
$keyEncryptionAlgorithm = $this->keyEncryptionAlgorithmManager->get($completeHeader['alg']);
- if (!$keyEncryptionAlgorithm instanceof KeyEncryptionAlgorithm) {
- throw new InvalidArgumentException(sprintf('The key encryption algorithm "%s" is not supported or not a key encryption algorithm instance.', $completeHeader['alg']));
+ if (! $keyEncryptionAlgorithm instanceof KeyEncryptionAlgorithm) {
+ throw new InvalidArgumentException(sprintf(
+ 'The key encryption algorithm "%s" is not supported or not a key encryption algorithm instance.',
+ $completeHeader['alg']
+ ));
}
return $keyEncryptionAlgorithm;
}
- /**
- * @throws InvalidArgumentException if the header parameter "enc" is missing
- * @throws InvalidArgumentException if the header parameter "enc" is not supported or not a content encryption algorithm
- */
private function getContentEncryptionAlgorithm(array $completeHeader): ContentEncryptionAlgorithm
{
- if (!isset($completeHeader['enc'])) {
+ if (! isset($completeHeader['enc'])) {
throw new InvalidArgumentException('Parameter "enc" is missing.');
}
$contentEncryptionAlgorithm = $this->contentEncryptionAlgorithmManager->get($completeHeader['enc']);
- if (!$contentEncryptionAlgorithm instanceof ContentEncryptionAlgorithm) {
- throw new InvalidArgumentException(sprintf('The content encryption algorithm "%s" is not supported or not a content encryption algorithm instance.', $completeHeader['enc']));
+ if (! $contentEncryptionAlgorithm instanceof ContentEncryptionAlgorithm) {
+ throw new InvalidArgumentException(sprintf(
+ 'The content encryption algorithm "%s" is not supported or not a content encryption algorithm instance.',
+ $completeHeader['enc']
+ ));
}
return $contentEncryptionAlgorithm;
}
- /**
- * @throws InvalidArgumentException if the header contains duplicated entries
- */
private function checkDuplicatedHeaderParameters(array $header1, array $header2): void
{
$inter = array_intersect_key($header1, $header2);
- if (0 !== count($inter)) {
- throw new InvalidArgumentException(sprintf('The header contains duplicated entries: %s.', implode(', ', array_keys($inter))));
+ if (count($inter) !== 0) {
+ throw new InvalidArgumentException(sprintf(
+ 'The header contains duplicated entries: %s.',
+ implode(', ', array_keys($inter))
+ ));
}
}
}
diff --git a/src/Component/Encryption/JWEBuilderFactory.php b/src/Component/Encryption/JWEBuilderFactory.php
index 80748090..ba82750c 100644
--- a/src/Component/Encryption/JWEBuilderFactory.php
+++ b/src/Component/Encryption/JWEBuilderFactory.php
@@ -2,15 +2,6 @@
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;
@@ -18,38 +9,33 @@
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;
+ public function __construct(
+ private AlgorithmManagerFactory $algorithmManagerFactory,
+ private CompressionMethodManagerFactory $compressionMethodManagerFactory
+ ) {
}
/**
- * Creates a JWE Builder object using the given key encryption algorithms, content encryption algorithms and compression methods.
+ * 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
- {
+ 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);
+ return new JWEBuilder(
+ $keyEncryptionAlgorithmManager,
+ $contentEncryptionAlgorithmManager,
+ $compressionMethodManager
+ );
}
}
diff --git a/src/Component/Encryption/JWEDecrypter.php b/src/Component/Encryption/JWEDecrypter.php
index 88c3f935..fbfab622 100644
--- a/src/Component/Encryption/JWEDecrypter.php
+++ b/src/Component/Encryption/JWEDecrypter.php
@@ -2,15 +2,6 @@
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 function array_key_exists;
@@ -33,26 +24,11 @@
class JWEDecrypter
{
- /**
- * @var AlgorithmManager
- */
- private $keyEncryptionAlgorithmManager;
-
- /**
- * @var AlgorithmManager
- */
- private $contentEncryptionAlgorithmManager;
-
- /**
- * @var CompressionMethodManager
- */
- private $compressionMethodManager;
-
- public function __construct(AlgorithmManager $keyEncryptionAlgorithmManager, AlgorithmManager $contentEncryptionAlgorithmManager, CompressionMethodManager $compressionMethodManager)
- {
- $this->keyEncryptionAlgorithmManager = $keyEncryptionAlgorithmManager;
- $this->contentEncryptionAlgorithmManager = $contentEncryptionAlgorithmManager;
- $this->compressionMethodManager = $compressionMethodManager;
+ public function __construct(
+ private AlgorithmManager $keyEncryptionAlgorithmManager,
+ private AlgorithmManager $contentEncryptionAlgorithmManager,
+ private CompressionMethodManager $compressionMethodManager
+ ) {
}
/**
@@ -100,24 +76,26 @@ public function decryptUsingKey(JWE &$jwe, JWK $jwk, int $recipient, ?JWK $sende
* @param JWKSet $jwkset The key set used to decrypt the input
* @param JWK $jwk The key used to decrypt the token in case of success
* @param int $recipient The recipient used to decrypt the token in case of success
- *
- * @throws InvalidArgumentException if no key is set is the keyset
- * @throws InvalidArgumentException if the token has no recipients
*/
- public function decryptUsingKeySet(JWE &$jwe, JWKSet $jwkset, int $recipient, JWK &$jwk = null, ?JWK $senderKey = null): bool
- {
- if (0 === $jwkset->count()) {
+ public function decryptUsingKeySet(
+ JWE &$jwe,
+ JWKSet $jwkset,
+ int $recipient,
+ JWK &$jwk = null,
+ ?JWK $senderKey = null
+ ): bool {
+ if ($jwkset->count() === 0) {
throw new InvalidArgumentException('No key in the key set.');
}
- if (null !== $jwe->getPayload()) {
+ if ($jwe->getPayload() !== null) {
return true;
}
- if (0 === $jwe->countRecipients()) {
+ if ($jwe->countRecipients() === 0) {
throw new InvalidArgumentException('The JWE does not contain any recipient.');
}
$plaintext = $this->decryptRecipientKey($jwe, $jwkset, $recipient, $jwk, $senderKey);
- if (null !== $plaintext) {
+ if ($plaintext !== null) {
$jwe = $jwe->withPayload($plaintext);
return true;
@@ -126,10 +104,19 @@ public function decryptUsingKeySet(JWE &$jwe, JWKSet $jwkset, int $recipient, JW
return false;
}
- private function decryptRecipientKey(JWE $jwe, JWKSet $jwkset, int $i, JWK &$successJwk = null, ?JWK $senderKey = null): ?string
- {
+ private function decryptRecipientKey(
+ JWE $jwe,
+ JWKSet $jwkset,
+ int $i,
+ JWK &$successJwk = null,
+ ?JWK $senderKey = null
+ ): ?string {
$recipient = $jwe->getRecipient($i);
- $completeHeader = array_merge($jwe->getSharedProtectedHeader(), $jwe->getSharedHeader(), $recipient->getHeader());
+ $completeHeader = array_merge(
+ $jwe->getSharedProtectedHeader(),
+ $jwe->getSharedHeader(),
+ $recipient->getHeader()
+ );
$this->checkCompleteHeader($completeHeader);
$key_encryption_algorithm = $this->getKeyEncryptionAlgorithm($completeHeader);
@@ -140,18 +127,25 @@ private function decryptRecipientKey(JWE $jwe, JWKSet $jwkset, int $i, JWK &$suc
foreach ($jwkset as $recipientKey) {
try {
KeyChecker::checkKeyUsage($recipientKey, 'decryption');
- if ('dir' !== $key_encryption_algorithm->name()) {
+ if ($key_encryption_algorithm->name() !== 'dir') {
KeyChecker::checkKeyAlgorithm($recipientKey, $key_encryption_algorithm->name());
} else {
KeyChecker::checkKeyAlgorithm($recipientKey, $content_encryption_algorithm->name());
}
- $cek = $this->decryptCEK($key_encryption_algorithm, $content_encryption_algorithm, $recipientKey, $senderKey, $recipient, $completeHeader);
+ $cek = $this->decryptCEK(
+ $key_encryption_algorithm,
+ $content_encryption_algorithm,
+ $recipientKey,
+ $senderKey,
+ $recipient,
+ $completeHeader
+ );
$this->checkCekSize($cek, $key_encryption_algorithm, $content_encryption_algorithm);
$payload = $this->decryptPayload($jwe, $cek, $content_encryption_algorithm, $completeHeader);
$successJwk = $recipientKey;
return $payload;
- } catch (Throwable $e) {
+ } catch (Throwable) {
//We do nothing, we continue with other keys
continue;
}
@@ -160,11 +154,11 @@ private function decryptRecipientKey(JWE $jwe, JWKSet $jwkset, int $i, JWK &$suc
return null;
}
- /**
- * @throws InvalidArgumentException if the Content Encryption Key size is invalid
- */
- private function checkCekSize(string $cek, KeyEncryptionAlgorithm $keyEncryptionAlgorithm, ContentEncryptionAlgorithm $algorithm): void
- {
+ private function checkCekSize(
+ string $cek,
+ KeyEncryptionAlgorithm $keyEncryptionAlgorithm,
+ ContentEncryptionAlgorithm $algorithm
+ ): void {
if ($keyEncryptionAlgorithm instanceof DirectEncryption || $keyEncryptionAlgorithm instanceof KeyAgreement) {
return;
}
@@ -173,12 +167,9 @@ private function checkCekSize(string $cek, KeyEncryptionAlgorithm $keyEncryption
}
}
- /**
- * @throws InvalidArgumentException if the IV size is invalid
- */
private function checkIvSize(?string $iv, int $requiredIvSize): void
{
- if (null === $iv && 0 !== $requiredIvSize) {
+ if ($iv === null && $requiredIvSize !== 0) {
throw new InvalidArgumentException('Invalid IV size');
}
if (is_string($iv) && mb_strlen($iv, '8bit') !== $requiredIvSize / 8) {
@@ -186,19 +177,34 @@ private function checkIvSize(?string $iv, int $requiredIvSize): void
}
}
- /**
- * @throws InvalidArgumentException if the CEK creation method is not supported
- */
- private function decryptCEK(Algorithm $key_encryption_algorithm, ContentEncryptionAlgorithm $content_encryption_algorithm, JWK $recipientKey, ?JWK $senderKey, Recipient $recipient, array $completeHeader): string
- {
+ private function decryptCEK(
+ Algorithm $key_encryption_algorithm,
+ ContentEncryptionAlgorithm $content_encryption_algorithm,
+ JWK $recipientKey,
+ ?JWK $senderKey,
+ Recipient $recipient,
+ array $completeHeader
+ ): string {
if ($key_encryption_algorithm instanceof DirectEncryption) {
return $key_encryption_algorithm->getCEK($recipientKey);
}
if ($key_encryption_algorithm instanceof KeyAgreement) {
- return $key_encryption_algorithm->getAgreementKey($content_encryption_algorithm->getCEKSize(), $content_encryption_algorithm->name(), $recipientKey, $senderKey, $completeHeader);
+ return $key_encryption_algorithm->getAgreementKey(
+ $content_encryption_algorithm->getCEKSize(),
+ $content_encryption_algorithm->name(),
+ $recipientKey,
+ $senderKey,
+ $completeHeader
+ );
}
if ($key_encryption_algorithm instanceof KeyAgreementWithKeyWrapping) {
- return $key_encryption_algorithm->unwrapAgreementKey($recipientKey, $senderKey, $recipient->getEncryptedKey(), $content_encryption_algorithm->getCEKSize(), $completeHeader);
+ return $key_encryption_algorithm->unwrapAgreementKey(
+ $recipientKey,
+ $senderKey,
+ $recipient->getEncryptedKey(),
+ $content_encryption_algorithm->getCEKSize(),
+ $completeHeader
+ );
}
if ($key_encryption_algorithm instanceof KeyEncryption) {
return $key_encryption_algorithm->decryptKey($recipientKey, $recipient->getEncryptedKey(), $completeHeader);
@@ -210,9 +216,20 @@ private function decryptCEK(Algorithm $key_encryption_algorithm, ContentEncrypti
throw new InvalidArgumentException('Unsupported CEK generation');
}
- private function decryptPayload(JWE $jwe, string $cek, ContentEncryptionAlgorithm $content_encryption_algorithm, array $completeHeader): string
- {
- $payload = $content_encryption_algorithm->decryptContent($jwe->getCiphertext(), $cek, $jwe->getIV(), $jwe->getAAD(), $jwe->getEncodedSharedProtectedHeader(), $jwe->getTag());
+ private function decryptPayload(
+ JWE $jwe,
+ string $cek,
+ ContentEncryptionAlgorithm $content_encryption_algorithm,
+ array $completeHeader
+ ): string {
+ $payload = $content_encryption_algorithm->decryptContent(
+ $jwe->getCiphertext(),
+ $cek,
+ $jwe->getIV(),
+ $jwe->getAAD(),
+ $jwe->getEncodedSharedProtectedHeader(),
+ $jwe->getTag()
+ );
return $this->decompressIfNeeded($payload, $completeHeader);
}
@@ -227,39 +244,36 @@ private function decompressIfNeeded(string $payload, array $completeHeaders): st
return $payload;
}
- /**
- * @throws InvalidArgumentException if a header parameter is missing
- */
private function checkCompleteHeader(array $completeHeaders): void
{
foreach (['enc', 'alg'] as $key) {
- if (!isset($completeHeaders[$key])) {
+ if (! isset($completeHeaders[$key])) {
throw new InvalidArgumentException(sprintf("Parameter '%s' is missing.", $key));
}
}
}
- /**
- * @throws InvalidArgumentException if the key encryption algorithm is not supported or does not implement the KeyEncryptionAlgorithm interface
- */
private function getKeyEncryptionAlgorithm(array $completeHeaders): KeyEncryptionAlgorithm
{
$key_encryption_algorithm = $this->keyEncryptionAlgorithmManager->get($completeHeaders['alg']);
- if (!$key_encryption_algorithm instanceof KeyEncryptionAlgorithm) {
- throw new InvalidArgumentException(sprintf('The key encryption algorithm "%s" is not supported or does not implement KeyEncryptionAlgorithm interface.', $completeHeaders['alg']));
+ if (! $key_encryption_algorithm instanceof KeyEncryptionAlgorithm) {
+ throw new InvalidArgumentException(sprintf(
+ 'The key encryption algorithm "%s" is not supported or does not implement KeyEncryptionAlgorithm interface.',
+ $completeHeaders['alg']
+ ));
}
return $key_encryption_algorithm;
}
- /**
- * @throws InvalidArgumentException if the content encryption algorithm is not supported or does not implement the ContentEncryption interface
- */
private function getContentEncryptionAlgorithm(array $completeHeader): ContentEncryptionAlgorithm
{
$content_encryption_algorithm = $this->contentEncryptionAlgorithmManager->get($completeHeader['enc']);
- if (!$content_encryption_algorithm instanceof ContentEncryptionAlgorithm) {
- throw new InvalidArgumentException(sprintf('The key encryption algorithm "%s" is not supported or does not implement the ContentEncryption interface.', $completeHeader['enc']));
+ if (! $content_encryption_algorithm instanceof ContentEncryptionAlgorithm) {
+ throw new InvalidArgumentException(sprintf(
+ 'The key encryption algorithm "%s" is not supported or does not implement the ContentEncryption interface.',
+ $completeHeader['enc']
+ ));
}
return $content_encryption_algorithm;
diff --git a/src/Component/Encryption/JWEDecrypterFactory.php b/src/Component/Encryption/JWEDecrypterFactory.php
index 71ba0bf2..c1af0c73 100644
--- a/src/Component/Encryption/JWEDecrypterFactory.php
+++ b/src/Component/Encryption/JWEDecrypterFactory.php
@@ -2,15 +2,6 @@
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;
@@ -18,35 +9,33 @@
class JWEDecrypterFactory
{
- /**
- * @var AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
-
- /**
- * @var CompressionMethodManagerFactory
- */
- private $compressionMethodManagerFactory;
-
- public function __construct(AlgorithmManagerFactory $algorithmManagerFactory, CompressionMethodManagerFactory $compressionMethodManagerFactory)
- {
- $this->algorithmManagerFactory = $algorithmManagerFactory;
- $this->compressionMethodManagerFactory = $compressionMethodManagerFactory;
+ public function __construct(
+ private AlgorithmManagerFactory $algorithmManagerFactory,
+ private CompressionMethodManagerFactory $compressionMethodManagerFactory
+ ) {
}
/**
- * Creates a JWE Decrypter object using the given key encryption algorithms, content encryption algorithms and compression methods.
+ * Creates a JWE Decrypter object using the given key encryption algorithms, content encryption algorithms and
+ * compression methods.
*
* @param string[] $keyEncryptionAlgorithms
* @param string[] $contentEncryptionAlgorithms
* @param string[] $compressionMethods
*/
- public function create(array $keyEncryptionAlgorithms, array $contentEncryptionAlgorithms, array $compressionMethods): JWEDecrypter
- {
+ public function create(
+ array $keyEncryptionAlgorithms,
+ array $contentEncryptionAlgorithms,
+ array $compressionMethods
+ ): JWEDecrypter {
$keyEncryptionAlgorithmManager = $this->algorithmManagerFactory->create($keyEncryptionAlgorithms);
$contentEncryptionAlgorithmManager = $this->algorithmManagerFactory->create($contentEncryptionAlgorithms);
$compressionMethodManager = $this->compressionMethodManagerFactory->create($compressionMethods);
- return new JWEDecrypter($keyEncryptionAlgorithmManager, $contentEncryptionAlgorithmManager, $compressionMethodManager);
+ return new JWEDecrypter(
+ $keyEncryptionAlgorithmManager,
+ $contentEncryptionAlgorithmManager,
+ $compressionMethodManager
+ );
}
}
diff --git a/src/Component/Encryption/JWELoader.php b/src/Component/Encryption/JWELoader.php
index dcc7557c..b6e18a66 100644
--- a/src/Component/Encryption/JWELoader.php
+++ b/src/Component/Encryption/JWELoader.php
@@ -2,15 +2,6 @@
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\Checker\HeaderCheckerManager;
@@ -22,29 +13,11 @@
class JWELoader
{
- /**
- * @var JWEDecrypter
- */
- private $jweDecrypter;
-
- /**
- * @var null|HeaderCheckerManager
- */
- private $headerCheckerManager;
-
- /**
- * @var JWESerializerManager
- */
- private $serializerManager;
-
- /**
- * JWELoader constructor.
- */
- public function __construct(JWESerializerManager $serializerManager, JWEDecrypter $jweDecrypter, ?HeaderCheckerManager $headerCheckerManager)
- {
- $this->serializerManager = $serializerManager;
- $this->jweDecrypter = $jweDecrypter;
- $this->headerCheckerManager = $headerCheckerManager;
+ public function __construct(
+ private JWESerializerManager $serializerManager,
+ private JWEDecrypter $jweDecrypter,
+ private ?HeaderCheckerManager $headerCheckerManager
+ ) {
}
/**
@@ -72,8 +45,8 @@ public function getSerializerManager(): JWESerializerManager
}
/**
- * This method will try to load and decrypt the given token using a JWK.
- * If succeeded, the methods will populate the $recipient variable and returns the JWE.
+ * This method will try to load and decrypt the given token using a JWK. If succeeded, the methods will populate the
+ * $recipient variable and returns the JWE.
*/
public function loadAndDecryptWithKey(string $token, JWK $key, ?int &$recipient): JWE
{
@@ -83,10 +56,8 @@ public function loadAndDecryptWithKey(string $token, JWK $key, ?int &$recipient)
}
/**
- * This method will try to load and decrypt the given token using a JWKSet.
- * If succeeded, the methods will populate the $recipient variable and returns the JWE.
- *
- * @throws RuntimeException if the data cannot be loaded or decrypted
+ * This method will try to load and decrypt the given token using a JWKSet. If succeeded, the methods will populate
+ * the $recipient variable and returns the JWE.
*/
public function loadAndDecryptWithKeySet(string $token, JWKSet $keyset, ?int &$recipient): JWE
{
@@ -100,7 +71,7 @@ public function loadAndDecryptWithKeySet(string $token, JWKSet $keyset, ?int &$r
return $jwe;
}
}
- } catch (Throwable $e) {
+ } catch (Throwable) {
// Nothing to do. Exception thrown just after
}
@@ -110,12 +81,12 @@ public function loadAndDecryptWithKeySet(string $token, JWKSet $keyset, ?int &$r
private function processRecipient(JWE &$jwe, JWKSet $keyset, int $recipient): bool
{
try {
- if (null !== $this->headerCheckerManager) {
+ if ($this->headerCheckerManager !== null) {
$this->headerCheckerManager->check($jwe, $recipient);
}
return $this->jweDecrypter->decryptUsingKeySet($jwe, $keyset, $recipient);
- } catch (Throwable $e) {
+ } catch (Throwable) {
return false;
}
}
diff --git a/src/Component/Encryption/JWELoaderFactory.php b/src/Component/Encryption/JWELoaderFactory.php
index 461cca5a..2d209df2 100644
--- a/src/Component/Encryption/JWELoaderFactory.php
+++ b/src/Component/Encryption/JWELoaderFactory.php
@@ -2,15 +2,6 @@
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\Checker\HeaderCheckerManagerFactory;
@@ -18,40 +9,31 @@
class JWELoaderFactory
{
- /**
- * @var JWEDecrypterFactory
- */
- private $jweDecrypterFactory;
-
- /**
- * @var JWESerializerManagerFactory
- */
- private $jweSerializerManagerFactory;
-
- /**
- * @var null|HeaderCheckerManagerFactory
- */
- private $headerCheckerManagerFactory;
-
- /**
- * JWELoaderFactory constructor.
- */
- public function __construct(JWESerializerManagerFactory $jweSerializerManagerFactory, JWEDecrypterFactory $jweDecrypterFactory, ?HeaderCheckerManagerFactory $headerCheckerManagerFactory)
- {
- $this->jweSerializerManagerFactory = $jweSerializerManagerFactory;
- $this->jweDecrypterFactory = $jweDecrypterFactory;
- $this->headerCheckerManagerFactory = $headerCheckerManagerFactory;
+ public function __construct(
+ private JWESerializerManagerFactory $jweSerializerManagerFactory,
+ private JWEDecrypterFactory $jweDecrypterFactory,
+ private ?HeaderCheckerManagerFactory $headerCheckerManagerFactory
+ ) {
}
/**
* Creates a JWELoader using the given serializer aliases, encryption algorithm aliases, compression method aliases
* and header checker aliases.
*/
- public function create(array $serializers, array $keyEncryptionAlgorithms, array $contentEncryptionAlgorithms, array $compressionMethods, array $headerCheckers = []): JWELoader
- {
+ public function create(
+ array $serializers,
+ array $keyEncryptionAlgorithms,
+ array $contentEncryptionAlgorithms,
+ array $compressionMethods,
+ array $headerCheckers = []
+ ): JWELoader {
$serializerManager = $this->jweSerializerManagerFactory->create($serializers);
- $jweDecrypter = $this->jweDecrypterFactory->create($keyEncryptionAlgorithms, $contentEncryptionAlgorithms, $compressionMethods);
- if (null !== $this->headerCheckerManagerFactory) {
+ $jweDecrypter = $this->jweDecrypterFactory->create(
+ $keyEncryptionAlgorithms,
+ $contentEncryptionAlgorithms,
+ $compressionMethods
+ );
+ if ($this->headerCheckerManagerFactory !== null) {
$headerCheckerManager = $this->headerCheckerManagerFactory->create($headerCheckers);
} else {
$headerCheckerManager = null;
diff --git a/src/Component/Encryption/JWETokenSupport.php b/src/Component/Encryption/JWETokenSupport.php
index 0c311ffd..b5dbf4bb 100644
--- a/src/Component/Encryption/JWETokenSupport.php
+++ b/src/Component/Encryption/JWETokenSupport.php
@@ -2,15 +2,6 @@
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\Checker\TokenTypeSupport;
@@ -25,16 +16,15 @@ public function supports(JWT $jwt): bool
public function retrieveTokenHeaders(JWT $jwt, int $index, array &$protectedHeader, array &$unprotectedHeader): void
{
- if (!$jwt instanceof JWE) {
+ if (! $jwt instanceof JWE) {
return;
}
$protectedHeader = $jwt->getSharedProtectedHeader();
$unprotectedHeader = $jwt->getSharedHeader();
- $recipient = $jwt->getRecipient($index)->getHeader();
+ $recipient = $jwt->getRecipient($index)
+ ->getHeader()
+ ;
- $unprotectedHeader = array_merge(
- $unprotectedHeader,
- $recipient
- );
+ $unprotectedHeader = array_merge($unprotectedHeader, $recipient);
}
}
diff --git a/src/Component/Encryption/Recipient.php b/src/Component/Encryption/Recipient.php
index 98c4dfb8..66fb4c32 100644
--- a/src/Component/Encryption/Recipient.php
+++ b/src/Component/Encryption/Recipient.php
@@ -2,15 +2,6 @@
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 function array_key_exists;
@@ -19,22 +10,18 @@
/**
* @internal
*/
-class Recipient
+final class Recipient
{
/**
* @var array
*/
private $header = [];
- /**
- * @var null|string
- */
- private $encryptedKey;
-
- public function __construct(array $header, ?string $encryptedKey)
- {
+ public function __construct(
+ array $header,
+ private ?string $encryptedKey
+ ) {
$this->header = $header;
- $this->encryptedKey = $encryptedKey;
}
/**
@@ -50,13 +37,11 @@ public function getHeader(): array
*
* @param string $key The key
*
- * @throws InvalidArgumentException if the header parameter does not exist
- *
- * @return null|mixed
+ * @return mixed|null
*/
public function getHeaderParameter(string $key)
{
- if (!$this->hasHeaderParameter($key)) {
+ if (! $this->hasHeaderParameter($key)) {
throw new InvalidArgumentException(sprintf('The header "%s" does not exist.', $key));
}
diff --git a/src/Component/Encryption/Serializer/CompactSerializer.php b/src/Component/Encryption/Serializer/CompactSerializer.php
index ce487fdb..0f490567 100644
--- a/src/Component/Encryption/Serializer/CompactSerializer.php
+++ b/src/Component/Encryption/Serializer/CompactSerializer.php
@@ -2,15 +2,6 @@
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\Serializer;
use function count;
@@ -38,7 +29,7 @@ public function name(): string
public function serialize(JWE $jwe, ?int $recipientIndex = null): string
{
- if (null === $recipientIndex) {
+ if ($recipientIndex === null) {
$recipientIndex = 0;
}
$recipient = $jwe->getRecipient($recipientIndex);
@@ -50,27 +41,24 @@ public function serialize(JWE $jwe, ?int $recipientIndex = null): string
return sprintf(
'%s.%s.%s.%s.%s',
$jwe->getEncodedSharedProtectedHeader(),
- Base64UrlSafe::encodeUnpadded(null === $recipient->getEncryptedKey() ? '' : $recipient->getEncryptedKey()),
- Base64UrlSafe::encodeUnpadded(null === $jwe->getIV() ? '' : $jwe->getIV()),
+ Base64UrlSafe::encodeUnpadded($recipient->getEncryptedKey() === null ? '' : $recipient->getEncryptedKey()),
+ Base64UrlSafe::encodeUnpadded($jwe->getIV() === null ? '' : $jwe->getIV()),
Base64UrlSafe::encodeUnpadded($jwe->getCiphertext()),
- Base64UrlSafe::encodeUnpadded(null === $jwe->getTag() ? '' : $jwe->getTag())
+ Base64UrlSafe::encodeUnpadded($jwe->getTag() === null ? '' : $jwe->getTag())
);
}
- /**
- * @throws InvalidArgumentException if the input is not supported
- */
public function unserialize(string $input): JWE
{
$parts = explode('.', $input);
- if (5 !== count($parts)) {
+ if (count($parts) !== 5) {
throw new InvalidArgumentException('Unsupported input');
}
try {
$encodedSharedProtectedHeader = $parts[0];
$sharedProtectedHeader = JsonConverter::decode(Base64UrlSafe::decode($encodedSharedProtectedHeader));
- $encryptedKey = '' === $parts[1] ? null : Base64UrlSafe::decode($parts[1]);
+ $encryptedKey = $parts[1] === '' ? null : Base64UrlSafe::decode($parts[1]);
$iv = Base64UrlSafe::decode($parts[2]);
$ciphertext = Base64UrlSafe::decode($parts[3]);
$tag = Base64UrlSafe::decode($parts[4]);
@@ -90,33 +78,28 @@ public function unserialize(string $input): JWE
}
}
- /**
- * @throws LogicException if the AAD is invalid
- */
private function checkHasNoAAD(JWE $jwe): void
{
- if (null !== $jwe->getAAD()) {
+ if ($jwe->getAAD() !== null) {
throw new LogicException('This JWE has AAD and cannot be converted into Compact JSON.');
}
}
- /**
- * @throws LogicException if the JWE has a shared header or recipient header (invalid for compact JSON)
- */
private function checkRecipientHasNoHeader(JWE $jwe, int $id): void
{
- if (0 !== count($jwe->getSharedHeader()) || 0 !== count($jwe->getRecipient($id)->getHeader())) {
- throw new LogicException('This JWE has shared header parameters or recipient header parameters and cannot be converted into Compact JSON.');
+ if (count($jwe->getSharedHeader()) !== 0 || count($jwe->getRecipient($id)->getHeader()) !== 0) {
+ throw new LogicException(
+ 'This JWE has shared header parameters or recipient header parameters and cannot be converted into Compact JSON.'
+ );
}
}
- /**
- * @throws LogicException if the JWE has no shared protected header (invalid for compact JSON)
- */
private function checkHasSharedProtectedHeader(JWE $jwe): void
{
- if (0 === count($jwe->getSharedProtectedHeader())) {
- throw new LogicException('This JWE does not have shared protected header parameters and cannot be converted into Compact JSON.');
+ if (count($jwe->getSharedProtectedHeader()) === 0) {
+ throw new LogicException(
+ 'This JWE does not have shared protected header parameters and cannot be converted into Compact JSON.'
+ );
}
}
}
diff --git a/src/Component/Encryption/Serializer/JSONFlattenedSerializer.php b/src/Component/Encryption/Serializer/JSONFlattenedSerializer.php
index e7920842..5a8cac88 100644
--- a/src/Component/Encryption/Serializer/JSONFlattenedSerializer.php
+++ b/src/Component/Encryption/Serializer/JSONFlattenedSerializer.php
@@ -2,15 +2,6 @@
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\Serializer;
use function array_key_exists;
@@ -37,7 +28,7 @@ public function name(): string
public function serialize(JWE $jwe, ?int $recipientIndex = null): string
{
- if (null === $recipientIndex) {
+ if ($recipientIndex === null) {
$recipientIndex = 0;
}
$recipient = $jwe->getRecipient($recipientIndex);
@@ -46,19 +37,19 @@ public function serialize(JWE $jwe, ?int $recipientIndex = null): string
'iv' => Base64UrlSafe::encodeUnpadded($jwe->getIV()),
'tag' => Base64UrlSafe::encodeUnpadded($jwe->getTag()),
];
- if (null !== $jwe->getAAD()) {
+ if ($jwe->getAAD() !== null) {
$data['aad'] = Base64UrlSafe::encodeUnpadded($jwe->getAAD());
}
- if (0 !== count($jwe->getSharedProtectedHeader())) {
+ if (count($jwe->getSharedProtectedHeader()) !== 0) {
$data['protected'] = $jwe->getEncodedSharedProtectedHeader();
}
- if (0 !== count($jwe->getSharedHeader())) {
+ if (count($jwe->getSharedHeader()) !== 0) {
$data['unprotected'] = $jwe->getSharedHeader();
}
- if (0 !== count($recipient->getHeader())) {
+ if (count($recipient->getHeader()) !== 0) {
$data['header'] = $recipient->getHeader();
}
- if (null !== $recipient->getEncryptedKey()) {
+ if ($recipient->getEncryptedKey() !== null) {
$data['encrypted_key'] = Base64UrlSafe::encodeUnpadded($recipient->getEncryptedKey());
}
@@ -90,12 +81,9 @@ public function unserialize(string $input): JWE
);
}
- /**
- * @throws InvalidArgumentException if the payload cannot be encoded
- */
private function checkData(?array $data): void
{
- if (null === $data || !isset($data['ciphertext']) || isset($data['recipients'])) {
+ if ($data === null || ! isset($data['ciphertext']) || isset($data['recipients'])) {
throw new InvalidArgumentException('Unsupported input.');
}
}
@@ -103,7 +91,9 @@ private function checkData(?array $data): void
private function processHeaders(array $data): array
{
$encodedSharedProtectedHeader = array_key_exists('protected', $data) ? $data['protected'] : null;
- $sharedProtectedHeader = $encodedSharedProtectedHeader ? JsonConverter::decode(Base64UrlSafe::decode($encodedSharedProtectedHeader)) : [];
+ $sharedProtectedHeader = $encodedSharedProtectedHeader ? JsonConverter::decode(
+ Base64UrlSafe::decode($encodedSharedProtectedHeader)
+ ) : [];
$sharedHeader = $data['unprotected'] ?? [];
return [$encodedSharedProtectedHeader, $sharedProtectedHeader, $sharedHeader];
diff --git a/src/Component/Encryption/Serializer/JSONGeneralSerializer.php b/src/Component/Encryption/Serializer/JSONGeneralSerializer.php
index b796060d..e49a61bd 100644
--- a/src/Component/Encryption/Serializer/JSONGeneralSerializer.php
+++ b/src/Component/Encryption/Serializer/JSONGeneralSerializer.php
@@ -2,15 +2,6 @@
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\Serializer;
use function array_key_exists;
@@ -36,12 +27,9 @@ public function name(): string
return self::NAME;
}
- /**
- * @throws LogicException if there is no recipient
- */
public function serialize(JWE $jwe, ?int $recipientIndex = null): string
{
- if (0 === $jwe->countRecipients()) {
+ if ($jwe->countRecipients() === 0) {
throw new LogicException('No recipient.');
}
@@ -50,22 +38,22 @@ public function serialize(JWE $jwe, ?int $recipientIndex = null): string
'iv' => Base64UrlSafe::encodeUnpadded($jwe->getIV()),
'tag' => Base64UrlSafe::encodeUnpadded($jwe->getTag()),
];
- if (null !== $jwe->getAAD()) {
+ if ($jwe->getAAD() !== null) {
$data['aad'] = Base64UrlSafe::encodeUnpadded($jwe->getAAD());
}
- if (0 !== count($jwe->getSharedProtectedHeader())) {
+ if (count($jwe->getSharedProtectedHeader()) !== 0) {
$data['protected'] = $jwe->getEncodedSharedProtectedHeader();
}
- if (0 !== count($jwe->getSharedHeader())) {
+ if (count($jwe->getSharedHeader()) !== 0) {
$data['unprotected'] = $jwe->getSharedHeader();
}
$data['recipients'] = [];
foreach ($jwe->getRecipients() as $recipient) {
$temp = [];
- if (0 !== count($recipient->getHeader())) {
+ if (count($recipient->getHeader()) !== 0) {
$temp['header'] = $recipient->getHeader();
}
- if (null !== $recipient->getEncryptedKey()) {
+ if ($recipient->getEncryptedKey() !== null) {
$temp['encrypted_key'] = Base64UrlSafe::encodeUnpadded($recipient->getEncryptedKey());
}
$data['recipients'][] = $temp;
@@ -102,19 +90,18 @@ public function unserialize(string $input): JWE
);
}
- /**
- * @throws InvalidArgumentException if the input is not supported
- */
private function checkData(?array $data): void
{
- if (null === $data || !isset($data['ciphertext']) || !isset($data['recipients'])) {
+ if ($data === null || ! isset($data['ciphertext']) || ! isset($data['recipients'])) {
throw new InvalidArgumentException('Unsupported input.');
}
}
private function processRecipient(array $recipient): array
{
- $encryptedKey = array_key_exists('encrypted_key', $recipient) ? Base64UrlSafe::decode($recipient['encrypted_key']) : null;
+ $encryptedKey = array_key_exists('encrypted_key', $recipient) ? Base64UrlSafe::decode(
+ $recipient['encrypted_key']
+ ) : null;
$header = array_key_exists('header', $recipient) ? $recipient['header'] : [];
return [$encryptedKey, $header];
@@ -123,7 +110,9 @@ private function processRecipient(array $recipient): array
private function processHeaders(array $data): array
{
$encodedSharedProtectedHeader = array_key_exists('protected', $data) ? $data['protected'] : null;
- $sharedProtectedHeader = $encodedSharedProtectedHeader ? JsonConverter::decode(Base64UrlSafe::decode($encodedSharedProtectedHeader)) : [];
+ $sharedProtectedHeader = $encodedSharedProtectedHeader ? JsonConverter::decode(
+ Base64UrlSafe::decode($encodedSharedProtectedHeader)
+ ) : [];
$sharedHeader = array_key_exists('unprotected', $data) ? $data['unprotected'] : [];
return [$encodedSharedProtectedHeader, $sharedProtectedHeader, $sharedHeader];
diff --git a/src/Component/Encryption/Serializer/JWESerializer.php b/src/Component/Encryption/Serializer/JWESerializer.php
index aa9c341a..04cd3dd9 100644
--- a/src/Component/Encryption/Serializer/JWESerializer.php
+++ b/src/Component/Encryption/Serializer/JWESerializer.php
@@ -2,15 +2,6 @@
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\Serializer;
use Jose\Component\Encryption\JWE;
@@ -28,15 +19,13 @@ public function name(): string;
public function displayName(): string;
/**
- * Converts a JWE into a string.
- * If the JWE is designed for multiple recipients and the serializer only supports one recipient,
- * the recipient index has to be set.
+ * Converts a JWE into a string. If the JWE is designed for multiple recipients and the serializer only supports one
+ * recipient, the recipient index has to be set.
*/
public function serialize(JWE $jws, ?int $recipientIndex = null): string;
/**
- * Loads data and return a JWE object.
- * Throws an exception in case of failure.
+ * Loads data and return a JWE object. Throws an exception in case of failure.
*
* @param string $input A string that represents a JWE
*/
diff --git a/src/Component/Encryption/Serializer/JWESerializerManager.php b/src/Component/Encryption/Serializer/JWESerializerManager.php
index 32e8a04a..0694a535 100644
--- a/src/Component/Encryption/Serializer/JWESerializerManager.php
+++ b/src/Component/Encryption/Serializer/JWESerializerManager.php
@@ -2,15 +2,6 @@
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\Serializer;
use InvalidArgumentException;
@@ -21,7 +12,7 @@ class JWESerializerManager
/**
* @var JWESerializer[]
*/
- private $serializers = [];
+ private array $serializers = [];
/**
* @param JWESerializer[] $serializers
@@ -44,14 +35,11 @@ public function names(): array
}
/**
- * Converts a JWE into a string.
- * Throws an exception if none of the serializer was able to convert the input.
- *
- * @throws InvalidArgumentException if the serializer is not supported
+ * Converts a JWE into a string. Throws an exception if none of the serializer was able to convert the input.
*/
public function serialize(string $name, JWE $jws, ?int $recipientIndex = null): string
{
- if (!isset($this->serializers[$name])) {
+ if (! isset($this->serializers[$name])) {
throw new InvalidArgumentException(sprintf('Unsupported serializer "%s".', $name));
}
@@ -59,13 +47,10 @@ public function serialize(string $name, JWE $jws, ?int $recipientIndex = null):
}
/**
- * Loads data and return a JWE object.
- * Throws an exception if none of the serializer was able to convert the input.
+ * Loads data and return a JWE object. Throws an exception if none of the serializer was able to convert the input.
*
* @param string $input A string that represents a JWE
- * @param null|string $name the name of the serializer if the input is unserialized
- *
- * @throws InvalidArgumentException if the input cannot be loaded
+ * @param string|null $name the name of the serializer if the input is unserialized
*/
public function unserialize(string $input, ?string &$name = null): JWE
{
@@ -75,7 +60,7 @@ public function unserialize(string $input, ?string &$name = null): JWE
$name = $serializer->name();
return $jws;
- } catch (InvalidArgumentException $e) {
+ } catch (InvalidArgumentException) {
continue;
}
}
diff --git a/src/Component/Encryption/Serializer/JWESerializerManagerFactory.php b/src/Component/Encryption/Serializer/JWESerializerManagerFactory.php
index 63dd69df..d53f8595 100644
--- a/src/Component/Encryption/Serializer/JWESerializerManagerFactory.php
+++ b/src/Component/Encryption/Serializer/JWESerializerManagerFactory.php
@@ -2,15 +2,6 @@
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\Serializer;
use InvalidArgumentException;
@@ -26,14 +17,12 @@ class JWESerializerManagerFactory
* Creates a serializer manager factory using the given serializers.
*
* @param string[] $names
- *
- * @throws InvalidArgumentException if the serializer is not supported
*/
public function create(array $names): JWESerializerManager
{
$serializers = [];
foreach ($names as $name) {
- if (!isset($this->serializers[$name])) {
+ if (! isset($this->serializers[$name])) {
throw new InvalidArgumentException(sprintf('Unsupported serializer "%s".', $name));
}
$serializers[] = $this->serializers[$name];
diff --git a/src/Component/KeyManagement/Analyzer/AlgorithmAnalyzer.php b/src/Component/KeyManagement/Analyzer/AlgorithmAnalyzer.php
index edb88888..a1db8d3e 100644
--- a/src/Component/KeyManagement/Analyzer/AlgorithmAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/AlgorithmAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWK;
@@ -19,7 +10,7 @@ final class AlgorithmAnalyzer implements KeyAnalyzer
{
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if (!$jwk->has('alg')) {
+ if (! $jwk->has('alg')) {
$bag->add(Message::medium('The parameter "alg" should be added.'));
}
}
diff --git a/src/Component/KeyManagement/Analyzer/ES256KeyAnalyzer.php b/src/Component/KeyManagement/Analyzer/ES256KeyAnalyzer.php
index 36fd23ff..b281e328 100644
--- a/src/Component/KeyManagement/Analyzer/ES256KeyAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/ES256KeyAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Brick\Math\BigInteger;
@@ -21,40 +12,37 @@
final class ES256KeyAnalyzer implements KeyAnalyzer
{
- /**
- * @throws RuntimeException if the component "web-token/jwt-util-ecc" is missing
- */
public function __construct()
{
- if (!class_exists(NistCurve::class)) {
+ if (! class_exists(NistCurve::class)) {
throw new RuntimeException('Please install web-token/jwt-util-ecc to use this key analyzer');
}
}
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if ('EC' !== $jwk->get('kty')) {
+ if ($jwk->get('kty') !== 'EC') {
return;
}
- if (!$jwk->has('crv')) {
+ if (! $jwk->has('crv')) {
$bag->add(Message::high('Invalid key. The components "crv" is missing.'));
return;
}
- if ('P-256' !== $jwk->get('crv')) {
+ if ($jwk->get('crv') !== 'P-256') {
return;
}
$x = Base64UrlSafe::decode($jwk->get('x'));
$xLength = 8 * mb_strlen($x, '8bit');
$y = Base64UrlSafe::decode($jwk->get('y'));
$yLength = 8 * mb_strlen($y, '8bit');
- if ($yLength !== $xLength || 256 !== $yLength) {
+ if ($yLength !== $xLength || $yLength !== 256) {
$bag->add(Message::high('Invalid key. The components "x" and "y" size shall be 256 bits.'));
}
$xBI = BigInteger::fromBase(bin2hex($x), 16);
$yBI = BigInteger::fromBase(bin2hex($y), 16);
$curve = NistCurve::curve256();
- if (!$curve->contains($xBI, $yBI)) {
+ if (! $curve->contains($xBI, $yBI)) {
$bag->add(Message::high('Invalid key. The point is not on the curve.'));
}
}
diff --git a/src/Component/KeyManagement/Analyzer/ES384KeyAnalyzer.php b/src/Component/KeyManagement/Analyzer/ES384KeyAnalyzer.php
index 99a50bcb..682d290a 100644
--- a/src/Component/KeyManagement/Analyzer/ES384KeyAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/ES384KeyAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Brick\Math\BigInteger;
@@ -21,40 +12,37 @@
final class ES384KeyAnalyzer implements KeyAnalyzer
{
- /**
- * @throws RuntimeException if the component "web-token/jwt-util-ecc" is missing
- */
public function __construct()
{
- if (!class_exists(NistCurve::class)) {
+ if (! class_exists(NistCurve::class)) {
throw new RuntimeException('Please install web-token/jwt-util-ecc to use this key analyzer');
}
}
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if ('EC' !== $jwk->get('kty')) {
+ if ($jwk->get('kty') !== 'EC') {
return;
}
- if (!$jwk->has('crv')) {
+ if (! $jwk->has('crv')) {
$bag->add(Message::high('Invalid key. The components "crv" is missing.'));
return;
}
- if ('P-384' !== $jwk->get('crv')) {
+ if ($jwk->get('crv') !== 'P-384') {
return;
}
$x = Base64UrlSafe::decode($jwk->get('x'));
$xLength = 8 * mb_strlen($x, '8bit');
$y = Base64UrlSafe::decode($jwk->get('y'));
$yLength = 8 * mb_strlen($y, '8bit');
- if ($yLength !== $xLength || 384 !== $yLength) {
+ if ($yLength !== $xLength || $yLength !== 384) {
$bag->add(Message::high('Invalid key. The components "x" and "y" size shall be 384 bits.'));
}
$xBI = BigInteger::fromBase(bin2hex($x), 16);
$yBI = BigInteger::fromBase(bin2hex($y), 16);
$curve = NistCurve::curve384();
- if (!$curve->contains($xBI, $yBI)) {
+ if (! $curve->contains($xBI, $yBI)) {
$bag->add(Message::high('Invalid key. The point is not on the curve.'));
}
}
diff --git a/src/Component/KeyManagement/Analyzer/ES512KeyAnalyzer.php b/src/Component/KeyManagement/Analyzer/ES512KeyAnalyzer.php
index b4fc5371..984cf713 100644
--- a/src/Component/KeyManagement/Analyzer/ES512KeyAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/ES512KeyAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Brick\Math\BigInteger;
@@ -21,40 +12,37 @@
final class ES512KeyAnalyzer implements KeyAnalyzer
{
- /**
- * @throws RuntimeException if the component "web-token/jwt-util-ecc" is missing
- */
public function __construct()
{
- if (!class_exists(NistCurve::class)) {
+ if (! class_exists(NistCurve::class)) {
throw new RuntimeException('Please install web-token/jwt-util-ecc to use this key analyzer');
}
}
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if ('EC' !== $jwk->get('kty')) {
+ if ($jwk->get('kty') !== 'EC') {
return;
}
- if (!$jwk->has('crv')) {
+ if (! $jwk->has('crv')) {
$bag->add(Message::high('Invalid key. The components "crv" is missing.'));
return;
}
- if ('P-521' !== $jwk->get('crv')) {
+ if ($jwk->get('crv') !== 'P-521') {
return;
}
$x = Base64UrlSafe::decode($jwk->get('x'));
$xLength = 8 * mb_strlen($x, '8bit');
$y = Base64UrlSafe::decode($jwk->get('y'));
$yLength = 8 * mb_strlen($y, '8bit');
- if ($yLength !== $xLength || 528 !== $yLength) {
+ if ($yLength !== $xLength || $yLength !== 528) {
$bag->add(Message::high('Invalid key. The components "x" and "y" size shall be 528 bits.'));
}
$xBI = BigInteger::fromBase(bin2hex($x), 16);
$yBI = BigInteger::fromBase(bin2hex($y), 16);
$curve = NistCurve::curve521();
- if (!$curve->contains($xBI, $yBI)) {
+ if (! $curve->contains($xBI, $yBI)) {
$bag->add(Message::high('Invalid key. The point is not on the curve.'));
}
}
diff --git a/src/Component/KeyManagement/Analyzer/HS256KeyAnalyzer.php b/src/Component/KeyManagement/Analyzer/HS256KeyAnalyzer.php
index 67385ef5..c3293065 100644
--- a/src/Component/KeyManagement/Analyzer/HS256KeyAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/HS256KeyAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWK;
@@ -20,10 +11,10 @@ final class HS256KeyAnalyzer implements KeyAnalyzer
{
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if ('oct' !== $jwk->get('kty')) {
+ if ($jwk->get('kty') !== 'oct') {
return;
}
- if (!$jwk->has('alg') || 'HS256' !== $jwk->get('alg')) {
+ if (! $jwk->has('alg') || $jwk->get('alg') !== 'HS256') {
return;
}
$k = Base64UrlSafe::decode($jwk->get('k'));
diff --git a/src/Component/KeyManagement/Analyzer/HS384KeyAnalyzer.php b/src/Component/KeyManagement/Analyzer/HS384KeyAnalyzer.php
index 7a2fcfb1..ae77bffe 100644
--- a/src/Component/KeyManagement/Analyzer/HS384KeyAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/HS384KeyAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWK;
@@ -20,10 +11,10 @@ final class HS384KeyAnalyzer implements KeyAnalyzer
{
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if ('oct' !== $jwk->get('kty')) {
+ if ($jwk->get('kty') !== 'oct') {
return;
}
- if (!$jwk->has('alg') || 'HS384' !== $jwk->get('alg')) {
+ if (! $jwk->has('alg') || $jwk->get('alg') !== 'HS384') {
return;
}
$k = Base64UrlSafe::decode($jwk->get('k'));
diff --git a/src/Component/KeyManagement/Analyzer/HS512KeyAnalyzer.php b/src/Component/KeyManagement/Analyzer/HS512KeyAnalyzer.php
index 2d75113b..cab8005b 100644
--- a/src/Component/KeyManagement/Analyzer/HS512KeyAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/HS512KeyAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWK;
@@ -20,10 +11,10 @@ final class HS512KeyAnalyzer implements KeyAnalyzer
{
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if ('oct' !== $jwk->get('kty')) {
+ if ($jwk->get('kty') !== 'oct') {
return;
}
- if (!$jwk->has('alg') || 'HS512' !== $jwk->get('alg')) {
+ if (! $jwk->has('alg') || $jwk->get('alg') !== 'HS512') {
return;
}
$k = Base64UrlSafe::decode($jwk->get('k'));
diff --git a/src/Component/KeyManagement/Analyzer/KeyAnalyzer.php b/src/Component/KeyManagement/Analyzer/KeyAnalyzer.php
index 978c57d9..d48f1f03 100644
--- a/src/Component/KeyManagement/Analyzer/KeyAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/KeyAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWK;
diff --git a/src/Component/KeyManagement/Analyzer/KeyAnalyzerManager.php b/src/Component/KeyManagement/Analyzer/KeyAnalyzerManager.php
index 287da6ec..378ce6df 100644
--- a/src/Component/KeyManagement/Analyzer/KeyAnalyzerManager.php
+++ b/src/Component/KeyManagement/Analyzer/KeyAnalyzerManager.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWK;
@@ -20,7 +11,7 @@ class KeyAnalyzerManager
/**
* @var KeyAnalyzer[]
*/
- private $analyzers = [];
+ private array $analyzers = [];
/**
* Adds a Key Analyzer to the manager.
@@ -31,8 +22,7 @@ public function add(KeyAnalyzer $analyzer): void
}
/**
- * This method will analyze the JWK object using all analyzers.
- * It returns a message bag that may contains messages.
+ * This method will analyze the JWK object using all analyzers. It returns a message bag that may contains messages.
*/
public function analyze(JWK $jwk): MessageBag
{
diff --git a/src/Component/KeyManagement/Analyzer/KeyIdentifierAnalyzer.php b/src/Component/KeyManagement/Analyzer/KeyIdentifierAnalyzer.php
index a4e7708b..2f21105f 100644
--- a/src/Component/KeyManagement/Analyzer/KeyIdentifierAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/KeyIdentifierAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWK;
@@ -19,7 +10,7 @@ final class KeyIdentifierAnalyzer implements KeyAnalyzer
{
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if (!$jwk->has('kid')) {
+ if (! $jwk->has('kid')) {
$bag->add(Message::medium('The parameter "kid" should be added.'));
}
}
diff --git a/src/Component/KeyManagement/Analyzer/KeysetAnalyzer.php b/src/Component/KeyManagement/Analyzer/KeysetAnalyzer.php
index 6447e103..3dc70638 100644
--- a/src/Component/KeyManagement/Analyzer/KeysetAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/KeysetAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWKSet;
diff --git a/src/Component/KeyManagement/Analyzer/KeysetAnalyzerManager.php b/src/Component/KeyManagement/Analyzer/KeysetAnalyzerManager.php
index 5ce004a2..7c9ec9b4 100644
--- a/src/Component/KeyManagement/Analyzer/KeysetAnalyzerManager.php
+++ b/src/Component/KeyManagement/Analyzer/KeysetAnalyzerManager.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWKSet;
@@ -20,7 +11,7 @@ class KeysetAnalyzerManager
/**
* @var KeysetAnalyzer[]
*/
- private $analyzers = [];
+ private array $analyzers = [];
/**
* Adds a Keyset Analyzer to the manager.
@@ -31,8 +22,8 @@ public function add(KeysetAnalyzer $analyzer): void
}
/**
- * This method will analyze the JWKSet object using all analyzers.
- * It returns a message bag that may contains messages.
+ * This method will analyze the JWKSet object using all analyzers. It returns a message bag that may contains
+ * messages.
*/
public function analyze(JWKSet $jwkset): MessageBag
{
diff --git a/src/Component/KeyManagement/Analyzer/Message.php b/src/Component/KeyManagement/Analyzer/Message.php
index 19653cae..0e53ec5a 100644
--- a/src/Component/KeyManagement/Analyzer/Message.php
+++ b/src/Component/KeyManagement/Analyzer/Message.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use JsonSerializable;
@@ -22,29 +13,15 @@ class Message implements JsonSerializable
public const SEVERITY_MEDIUM = 'medium';
public const SEVERITY_HIGH = 'high';
- /**
- * @var string
- */
- private $message;
- /**
- * @var string
- */
- private $severity;
-
- /**
- * Message constructor.
- */
- private function __construct(string $message, string $severity)
- {
- $this->message = $message;
- $this->severity = $severity;
+ private function __construct(
+ private string $message,
+ private string $severity
+ ) {
}
/**
* Creates a message with severity=low.
- *
- * @return Message
*/
public static function low(string $message): self
{
@@ -53,8 +30,6 @@ public static function low(string $message): self
/**
* Creates a message with severity=medium.
- *
- * @return Message
*/
public static function medium(string $message): self
{
@@ -63,8 +38,6 @@ public static function medium(string $message): self
/**
* Creates a message with severity=high.
- *
- * @return Message
*/
public static function high(string $message): self
{
diff --git a/src/Component/KeyManagement/Analyzer/MessageBag.php b/src/Component/KeyManagement/Analyzer/MessageBag.php
index 515ac7fd..8ac57bf8 100644
--- a/src/Component/KeyManagement/Analyzer/MessageBag.php
+++ b/src/Component/KeyManagement/Analyzer/MessageBag.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use ArrayIterator;
diff --git a/src/Component/KeyManagement/Analyzer/MixedKeyTypes.php b/src/Component/KeyManagement/Analyzer/MixedKeyTypes.php
index af8e1e06..812e7c87 100644
--- a/src/Component/KeyManagement/Analyzer/MixedKeyTypes.php
+++ b/src/Component/KeyManagement/Analyzer/MixedKeyTypes.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWKSet;
@@ -19,7 +10,7 @@ final class MixedKeyTypes implements KeysetAnalyzer
{
public function analyze(JWKSet $jwkset, MessageBag $bag): void
{
- if (0 === $jwkset->count()) {
+ if ($jwkset->count() === 0) {
return;
}
diff --git a/src/Component/KeyManagement/Analyzer/MixedPublicAndPrivateKeys.php b/src/Component/KeyManagement/Analyzer/MixedPublicAndPrivateKeys.php
index 94ce3519..aa957a00 100644
--- a/src/Component/KeyManagement/Analyzer/MixedPublicAndPrivateKeys.php
+++ b/src/Component/KeyManagement/Analyzer/MixedPublicAndPrivateKeys.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWKSet;
@@ -19,7 +10,7 @@ final class MixedPublicAndPrivateKeys implements KeysetAnalyzer
{
public function analyze(JWKSet $jwkset, MessageBag $bag): void
{
- if (0 === $jwkset->count()) {
+ if ($jwkset->count() === 0) {
return;
}
diff --git a/src/Component/KeyManagement/Analyzer/NoneAnalyzer.php b/src/Component/KeyManagement/Analyzer/NoneAnalyzer.php
index 38b33f28..57488a89 100644
--- a/src/Component/KeyManagement/Analyzer/NoneAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/NoneAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWK;
@@ -19,10 +10,14 @@ final class NoneAnalyzer implements KeyAnalyzer
{
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if ('none' !== $jwk->get('kty')) {
+ if ($jwk->get('kty') !== 'none') {
return;
}
- $bag->add(Message::high('This key is a meant to be used with the algorithm "none". This algorithm is not secured and should be used with care.'));
+ $bag->add(
+ Message::high(
+ 'This key is a meant to be used with the algorithm "none". This algorithm is not secured and should be used with care.'
+ )
+ );
}
}
diff --git a/src/Component/KeyManagement/Analyzer/OctAnalyzer.php b/src/Component/KeyManagement/Analyzer/OctAnalyzer.php
index 9e12051c..02c75d1f 100644
--- a/src/Component/KeyManagement/Analyzer/OctAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/OctAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWK;
@@ -20,7 +11,7 @@ final class OctAnalyzer implements KeyAnalyzer
{
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if ('oct' !== $jwk->get('kty')) {
+ if ($jwk->get('kty') !== 'oct') {
return;
}
$k = Base64UrlSafe::decode($jwk->get('k'));
diff --git a/src/Component/KeyManagement/Analyzer/RsaAnalyzer.php b/src/Component/KeyManagement/Analyzer/RsaAnalyzer.php
index 305b83a2..3f68b64c 100644
--- a/src/Component/KeyManagement/Analyzer/RsaAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/RsaAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use InvalidArgumentException;
@@ -22,7 +13,7 @@ final class RsaAnalyzer implements KeyAnalyzer
{
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if ('RSA' !== $jwk->get('kty')) {
+ if ($jwk->get('kty') !== 'RSA') {
return;
}
@@ -33,7 +24,7 @@ public function analyze(JWK $jwk, MessageBag $bag): void
private function checkExponent(JWK $jwk, MessageBag $bag): void
{
$exponent = unpack('l', str_pad(Base64UrlSafe::decode($jwk->get('e')), 4, "\0"));
- if (!is_array($exponent) || !isset($exponent[1])) {
+ if (! is_array($exponent) || ! isset($exponent[1])) {
throw new InvalidArgumentException('Unable to get the private key');
}
if ($exponent[1] < 65537) {
@@ -47,8 +38,14 @@ private function checkModulus(JWK $jwk, MessageBag $bag): void
if ($n < 2048) {
$bag->add(Message::high('The key length is less than 2048 bits.'));
}
- if ($jwk->has('d') && (!$jwk->has('p') || !$jwk->has('q') || !$jwk->has('dp') || !$jwk->has('dq') || !$jwk->has('p') || !$jwk->has('qi'))) {
- $bag->add(Message::medium('The key is a private RSA key, but Chinese Remainder Theorem primes are missing. These primes are not mandatory, but signatures and decryption processes are faster when available.'));
+ if ($jwk->has('d') && (! $jwk->has('p') || ! $jwk->has('q') || ! $jwk->has('dp') || ! $jwk->has(
+ 'dq'
+ ) || ! $jwk->has('qi'))) {
+ $bag->add(
+ Message::medium(
+ 'The key is a private RSA key, but Chinese Remainder Theorem primes are missing. These primes are not mandatory, but signatures and decryption processes are faster when available.'
+ )
+ );
}
}
}
diff --git a/src/Component/KeyManagement/Analyzer/UsageAnalyzer.php b/src/Component/KeyManagement/Analyzer/UsageAnalyzer.php
index 2edb19fe..7adab44e 100644
--- a/src/Component/KeyManagement/Analyzer/UsageAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/UsageAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use function in_array;
@@ -20,13 +11,28 @@ final class UsageAnalyzer implements KeyAnalyzer
{
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if (!$jwk->has('use')) {
+ if (! $jwk->has('use')) {
$bag->add(Message::medium('The parameter "use" should be added.'));
- } elseif (!in_array($jwk->get('use'), ['sig', 'enc'], true)) {
- $bag->add(Message::high(sprintf('The parameter "use" has an unsupported value "%s". Please use "sig" (signature) or "enc" (encryption).', $jwk->get('use'))));
+ } elseif (! in_array($jwk->get('use'), ['sig', 'enc'], true)) {
+ $bag->add(
+ Message::high(sprintf(
+ 'The parameter "use" has an unsupported value "%s". Please use "sig" (signature) or "enc" (encryption).',
+ $jwk->get('use')
+ ))
+ );
}
- if ($jwk->has('key_ops') && !in_array($jwk->get('key_ops'), ['sign', 'verify', 'encrypt', 'decrypt', 'wrapKey', 'unwrapKey'], true)) {
- $bag->add(Message::high(sprintf('The parameter "key_ops" has an unsupported value "%s". Please use one of the following values: %s.', $jwk->get('use'), implode(', ', ['verify', 'sign', 'encryp', 'decrypt', 'wrapKey', 'unwrapKey']))));
+ if ($jwk->has('key_ops') && ! in_array(
+ $jwk->get('key_ops'),
+ ['sign', 'verify', 'encrypt', 'decrypt', 'wrapKey', 'unwrapKey'],
+ true
+ )) {
+ $bag->add(
+ Message::high(sprintf(
+ 'The parameter "key_ops" has an unsupported value "%s". Please use one of the following values: %s.',
+ $jwk->get('use'),
+ implode(', ', ['verify', 'sign', 'encryp', 'decrypt', 'wrapKey', 'unwrapKey'])
+ ))
+ );
}
}
}
diff --git a/src/Component/KeyManagement/Analyzer/ZxcvbnKeyAnalyzer.php b/src/Component/KeyManagement/Analyzer/ZxcvbnKeyAnalyzer.php
index ec560463..fdd1ab45 100644
--- a/src/Component/KeyManagement/Analyzer/ZxcvbnKeyAnalyzer.php
+++ b/src/Component/KeyManagement/Analyzer/ZxcvbnKeyAnalyzer.php
@@ -2,15 +2,6 @@
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\KeyManagement\Analyzer;
use Jose\Component\Core\JWK;
@@ -21,7 +12,7 @@ final class ZxcvbnKeyAnalyzer implements KeyAnalyzer
{
public function analyze(JWK $jwk, MessageBag $bag): void
{
- if ('oct' !== $jwk->get('kty')) {
+ if ($jwk->get('kty') !== 'oct') {
return;
}
$k = Base64UrlSafe::decode($jwk->get('k'));
@@ -31,11 +22,15 @@ public function analyze(JWK $jwk, MessageBag $bag): void
switch (true) {
case $strength['score'] < 3:
- $bag->add(Message::high('The octet string is weak and easily guessable. Please change your key as soon as possible.'));
+ $bag->add(
+ Message::high(
+ 'The octet string is weak and easily guessable. Please change your key as soon as possible.'
+ )
+ );
break;
- case 3 === $strength['score']:
+ case $strength['score'] === 3:
$bag->add(Message::medium('The octet string is safe, but a longer key is preferable.'));
break;
diff --git a/src/Component/KeyManagement/JKUFactory.php b/src/Component/KeyManagement/JKUFactory.php
index 6f404c7f..28f7564e 100644
--- a/src/Component/KeyManagement/JKUFactory.php
+++ b/src/Component/KeyManagement/JKUFactory.php
@@ -2,15 +2,6 @@
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\KeyManagement;
use function is_array;
@@ -21,16 +12,13 @@
class JKUFactory extends UrlKeySetFactory
{
/**
- * This method will try to fetch the url a retrieve the key set.
- * Throws an exception in case of failure.
- *
- * @throws RuntimeException if the key cannot be reached
+ * This method will try to fetch the url a retrieve the key set. Throws an exception in case of failure.
*/
public function loadFromUrl(string $url, array $header = []): JWKSet
{
$content = $this->getContent($url, $header);
$data = JsonConverter::decode($content);
- if (!is_array($data)) {
+ if (! is_array($data)) {
throw new RuntimeException('Invalid content.');
}
diff --git a/src/Component/KeyManagement/JWKFactory.php b/src/Component/KeyManagement/JWKFactory.php
index cd51b775..c00159ac 100644
--- a/src/Component/KeyManagement/JWKFactory.php
+++ b/src/Component/KeyManagement/JWKFactory.php
@@ -2,15 +2,6 @@
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\KeyManagement;
use function array_key_exists;
@@ -23,6 +14,8 @@
use Jose\Component\Core\Util\ECKey;
use Jose\Component\KeyManagement\KeyConverter\KeyConverter;
use Jose\Component\KeyManagement\KeyConverter\RSAKey;
+use const OPENSSL_KEYTYPE_RSA;
+use OpenSSLCertificate;
use ParagonIE\ConstantTime\Base64UrlSafe;
use RuntimeException;
use Throwable;
@@ -34,16 +27,13 @@ class JWKFactory
*
* @param int $size The key size in bits
* @param array $values values to configure the key
- *
- * @throws InvalidArgumentException if the key has an invalid size
- * @throws InvalidArgumentException if it is not possible to create the key
*/
public static function createRSAKey(int $size, array $values = []): JWK
{
- if (0 !== $size % 8) {
+ if ($size % 8 !== 0) {
throw new InvalidArgumentException('Invalid key size.');
}
- if (512 > $size) {
+ if ($size < 512) {
throw new InvalidArgumentException('Key length is too short. It needs to be at least 512 bits.');
}
@@ -51,18 +41,15 @@ public static function createRSAKey(int $size, array $values = []): JWK
'private_key_bits' => $size,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
]);
- if (false === $key) {
+ if ($key === false) {
throw new InvalidArgumentException('Unable to create the key');
}
$details = openssl_pkey_get_details($key);
- if (!is_array($details)) {
+ if (! is_array($details)) {
throw new InvalidArgumentException('Unable to create the key');
}
$rsa = RSAKey::createFromKeyDetails($details['rsa']);
- $values = array_merge(
- $values,
- $rsa->toArray()
- );
+ $values = array_merge($values, $rsa->toArray());
return new JWK($values);
}
@@ -83,12 +70,10 @@ public static function createECKey(string $curve, array $values = []): JWK
*
* @param int $size The key size in bits
* @param array $values values to configure the key
- *
- * @throws InvalidArgumentException if the key has an invalid size
*/
public static function createOctKey(int $size, array $values = []): JWK
{
- if (0 !== $size % 8) {
+ if ($size % 8 !== 0) {
throw new InvalidArgumentException('Invalid key size.');
}
$values = array_merge(
@@ -107,13 +92,10 @@ public static function createOctKey(int $size, array $values = []): JWK
*
* @param string $curve The curve
* @param array $values values to configure the key
- *
- * @throws InvalidArgumentException if the extension "sobium" is not available
- * @throws InvalidArgumentException if the curve is not supported
*/
public static function createOKPKey(string $curve, array $values = []): JWK
{
- if (!extension_loaded('sodium')) {
+ if (! extension_loaded('sodium')) {
throw new RuntimeException('The extension "sodium" is not available. Please install it to use this method');
}
@@ -152,37 +134,29 @@ public static function createOKPKey(string $curve, array $values = []): JWK
}
/**
- * Creates a none key with the given additional values.
- * Please note that this key type is not pat of any specification.
- * It is used to prevent the use of the "none" algorithm with other key types.
+ * Creates a none key with the given additional values. Please note that this key type is not pat of any
+ * specification. It is used to prevent the use of the "none" algorithm with other key types.
*
* @param array $values values to configure the key
*/
public static function createNoneKey(array $values = []): JWK
{
- $values = array_merge(
- $values,
- [
- 'kty' => 'none',
- 'alg' => 'none',
- 'use' => 'sig',
- ]
- );
+ $values = array_merge($values, [
+ 'kty' => 'none',
+ 'alg' => 'none',
+ 'use' => 'sig',
+ ]);
return new JWK($values);
}
/**
* Creates a key from a Json string.
- *
- * @throws InvalidArgumentException if the key or keyset is not valid
- *
- * @return JWK|JWKSet
*/
- public static function createFromJsonObject(string $value)
+ public static function createFromJsonObject(string $value): JWK|JWKSet
{
$json = json_decode($value, true);
- if (!is_array($json)) {
+ if (! is_array($json)) {
throw new InvalidArgumentException('Invalid key or key set.');
}
@@ -191,10 +165,8 @@ public static function createFromJsonObject(string $value)
/**
* Creates a key or key set from the given input.
- *
- * @return JWK|JWKSet
*/
- public static function createFromValues(array $values)
+ public static function createFromValues(array $values): JWK|JWKSet
{
if (array_key_exists('keys', $values) && is_array($values['keys'])) {
return JWKSet::createFromKeyData($values);
@@ -232,31 +204,30 @@ public static function createFromCertificateFile(string $file, array $additional
/**
* Extract a keyfrom a key set identified by the given index .
- *
- * @param int|string $index
*/
- public static function createFromKeySet(JWKSet $jwkset, $index): JWK
+ public static function createFromKeySet(JWKSet $jwkset, int|string $index): JWK
{
return $jwkset->get($index);
}
/**
* This method will try to load a PKCS#12 file and convert it into a public key.
- *
- * @throws InvalidArgumentException if the certificate cannot be loaded
*/
- public static function createFromPKCS12CertificateFile(string $file, ?string $secret = '', array $additional_values = []): JWK
- {
+ public static function createFromPKCS12CertificateFile(
+ string $file,
+ ?string $secret = '',
+ array $additional_values = []
+ ): JWK {
try {
$content = file_get_contents($file);
- if (!is_string($content)) {
+ if (! is_string($content)) {
throw new RuntimeException('Unable to read the file.');
}
openssl_pkcs12_read($content, $certs, $secret);
} catch (Throwable $throwable) {
throw new RuntimeException('Unable to load the certificates.', $throwable->getCode(), $throwable);
}
- if (!is_array($certs) || !array_key_exists('pkey', $certs)) {
+ if (! is_array($certs) || ! array_key_exists('pkey', $certs)) {
throw new RuntimeException('Unable to load the certificates.');
}
@@ -276,10 +247,8 @@ public static function createFromCertificate(string $certificate, array $additio
/**
* This method will try to convert a X.509 certificate resource into a public key.
- *
- * @param resource $res
*/
- public static function createFromX509Resource($res, array $additional_values = []): JWK
+ public static function createFromX509Resource(OpenSSLCertificate $res, array $additional_values = []): JWK
{
$values = KeyConverter::loadKeyFromX509Resource($res);
$values = array_merge($values, $additional_values);
@@ -288,8 +257,8 @@ public static function createFromX509Resource($res, array $additional_values = [
}
/**
- * This method will try to load and convert a key file into a JWK object.
- * If the key is encrypted, the password must be set.
+ * This method will try to load and convert a key file into a JWK object. If the key is encrypted, the password must
+ * be set.
*/
public static function createFromKeyFile(string $file, ?string $password = null, array $additional_values = []): JWK
{
@@ -300,8 +269,8 @@ public static function createFromKeyFile(string $file, ?string $password = null,
}
/**
- * This method will try to load and convert a key into a JWK object.
- * If the key is encrypted, the password must be set.
+ * This method will try to load and convert a key into a JWK object. If the key is encrypted, the password must be
+ * set.
*/
public static function createFromKey(string $key, ?string $password = null, array $additional_values = []): JWK
{
@@ -314,9 +283,8 @@ public static function createFromKey(string $key, ?string $password = null, arra
/**
* This method will try to load and convert a X.509 certificate chain into a public key.
*
- * Be careful! The certificate chain is loaded, but it is NOT VERIFIED by any mean!
- * It is mandatory to verify the root CA or intermediate CA are trusted.
- * If not done, it may lead to potential security issues.
+ * Be careful! The certificate chain is loaded, but it is NOT VERIFIED by any mean! It is mandatory to verify the
+ * root CA or intermediate CA are trusted. If not done, it may lead to potential security issues.
*/
public static function createFromX5C(array $x5c, array $additional_values = []): JWK
{
diff --git a/src/Component/KeyManagement/KeyConverter/ECKey.php b/src/Component/KeyManagement/KeyConverter/ECKey.php
index e055c5ab..b971a40f 100644
--- a/src/Component/KeyManagement/KeyConverter/ECKey.php
+++ b/src/Component/KeyManagement/KeyConverter/ECKey.php
@@ -2,21 +2,11 @@
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\KeyManagement\KeyConverter;
use function array_key_exists;
use function count;
use FG\ASN1\ASNObject;
-use FG\ASN1\Exception\ParserException;
use FG\ASN1\ExplicitlyTaggedObject;
use FG\ASN1\Universal\BitString;
use FG\ASN1\Universal\Integer;
@@ -31,12 +21,9 @@
/**
* @internal
*/
-class ECKey
+final class ECKey
{
- /**
- * @var array
- */
- private $values = [];
+ private array $values = [];
private function __construct(array $data)
{
@@ -50,11 +37,6 @@ public static function createFromPEM(string $pem): self
return new self($data);
}
- /**
- * @param ECKey $private
- *
- * @return ECKey
- */
public static function toPublic(self $private): self
{
$data = $private->toArray();
@@ -73,15 +55,11 @@ public function toArray()
return $this->values;
}
- /**
- * @throws InvalidArgumentException if the key cannot be loaded
- * @throws ParserException if the key cannot be loaded
- */
private static function loadPEM(string $data): array
{
$data = base64_decode(preg_replace('#-.*-|\r|\n#', '', $data), true);
$asnObject = ASNObject::fromBinary($data);
- if (!$asnObject instanceof Sequence) {
+ if (! $asnObject instanceof Sequence) {
throw new InvalidArgumentException('Unable to load the key.');
}
$children = $asnObject->getChildren();
@@ -89,10 +67,10 @@ private static function loadPEM(string $data): array
$children = self::loadPKCS8($children);
}
- if (4 === count($children)) {
+ if (count($children) === 4) {
return self::loadPrivatePEM($children);
}
- if (2 === count($children)) {
+ if (count($children) === 2) {
return self::loadPublicPEM($children);
}
@@ -101,56 +79,52 @@ private static function loadPEM(string $data): array
/**
* @param ASNObject[] $children
- *
- * @throws InvalidArgumentException if the key cannot be loaded
- * @throws ParserException if the key cannot be loaded
*/
private static function loadPKCS8(array $children): array
{
$binary = hex2bin($children[2]->getContent());
$asnObject = ASNObject::fromBinary($binary);
- if (!$asnObject instanceof Sequence) {
+ if (! $asnObject instanceof Sequence) {
throw new InvalidArgumentException('Unable to load the key.');
}
return $asnObject->getChildren();
}
- /**
- * @throws InvalidArgumentException if the key cannot be loaded
- */
private static function loadPublicPEM(array $children): array
{
- if (!$children[0] instanceof Sequence) {
+ if (! $children[0] instanceof Sequence) {
throw new InvalidArgumentException('Unsupported key type.');
}
$sub = $children[0]->getChildren();
- if (!$sub[0] instanceof ObjectIdentifier) {
+ if (! $sub[0] instanceof ObjectIdentifier) {
throw new InvalidArgumentException('Unsupported key type.');
}
- if ('1.2.840.10045.2.1' !== $sub[0]->getContent()) {
+ if ($sub[0]->getContent() !== '1.2.840.10045.2.1') {
throw new InvalidArgumentException('Unsupported key type.');
}
- if (!$sub[1] instanceof ObjectIdentifier) {
+ if (! $sub[1] instanceof ObjectIdentifier) {
throw new InvalidArgumentException('Unsupported key type.');
}
- if (!$children[1] instanceof BitString) {
+ if (! $children[1] instanceof BitString) {
throw new InvalidArgumentException('Unable to load the key.');
}
$bits = $children[1]->getContent();
$bits_length = mb_strlen($bits, '8bit');
- if (0 !== mb_strpos($bits, '04', 0, '8bit')) {
+ if (mb_strpos($bits, '04', 0, '8bit') !== 0) {
throw new InvalidArgumentException('Unsupported key type');
}
- $values = ['kty' => 'EC'];
+ $values = [
+ 'kty' => 'EC',
+ ];
$values['crv'] = self::getCurve($sub[1]->getContent());
$xBin = hex2bin(mb_substr($bits, 2, ($bits_length - 2) / 2, '8bit'));
$yBin = hex2bin(mb_substr($bits, (int) (($bits_length - 2) / 2 + 2), ($bits_length - 2) / 2, '8bit'));
- if (!is_string($xBin) || !is_string($yBin)) {
+ if (! is_string($xBin) || ! is_string($yBin)) {
throw new InvalidArgumentException('Unable to load the key.');
}
@@ -160,14 +134,11 @@ private static function loadPublicPEM(array $children): array
return $values;
}
- /**
- * @throws InvalidArgumentException if the OID is not supported
- */
private static function getCurve(string $oid): string
{
$curves = self::getSupportedCurves();
$curve = array_search($oid, $curves, true);
- if (!is_string($curve)) {
+ if (! is_string($curve)) {
throw new InvalidArgumentException('Unsupported OID.');
}
@@ -183,32 +154,28 @@ private static function getSupportedCurves(): array
];
}
- /**
- * @throws InvalidArgumentException if the key cannot be loaded
- */
private static function verifyVersion(ASNObject $children): void
{
- if (!$children instanceof Integer || '1' !== $children->getContent()) {
+ if (! $children instanceof Integer || $children->getContent() !== '1') {
throw new InvalidArgumentException('Unable to load the key.');
}
}
- /**
- * @throws InvalidArgumentException if the key cannot be loaded
- */
private static function getXAndY(ASNObject $children, string &$x, string &$y): void
{
- if (!$children instanceof ExplicitlyTaggedObject || !is_array($children->getContent())) {
+ if (! $children instanceof ExplicitlyTaggedObject || ! is_array($children->getContent())) {
throw new InvalidArgumentException('Unable to load the key.');
}
- if (!$children->getContent()[0] instanceof BitString) {
+ if (! $children->getContent()[0] instanceof BitString) {
throw new InvalidArgumentException('Unable to load the key.');
}
- $bits = $children->getContent()[0]->getContent();
+ $bits = $children->getContent()[0]
+ ->getContent()
+ ;
$bits_length = mb_strlen($bits, '8bit');
- if (0 !== mb_strpos($bits, '04', 0, '8bit')) {
+ if (mb_strpos($bits, '04', 0, '8bit') !== 0) {
throw new InvalidArgumentException('Unsupported key type');
}
@@ -216,21 +183,15 @@ private static function getXAndY(ASNObject $children, string &$x, string &$y): v
$y = mb_substr($bits, (int) (($bits_length - 2) / 2 + 2), (int) (($bits_length - 2) / 2), '8bit');
}
- /**
- * @throws InvalidArgumentException if the key cannot be loaded
- */
private static function getD(ASNObject $children): string
{
- if (!$children instanceof OctetString) {
+ if (! $children instanceof OctetString) {
throw new InvalidArgumentException('Unable to load the key.');
}
return $children->getContent();
}
- /**
- * @throws InvalidArgumentException if the key cannot be loaded
- */
private static function loadPrivatePEM(array $children): array
{
self::verifyVersion($children[0]);
@@ -239,10 +200,10 @@ private static function loadPrivatePEM(array $children): array
$d = self::getD($children[1]);
self::getXAndY($children[3], $x, $y);
- if (!$children[2] instanceof ExplicitlyTaggedObject || !is_array($children[2]->getContent())) {
+ if (! $children[2] instanceof ExplicitlyTaggedObject || ! is_array($children[2]->getContent())) {
throw new InvalidArgumentException('Unable to load the key.');
}
- if (!$children[2]->getContent()[0] instanceof ObjectIdentifier) {
+ if (! $children[2]->getContent()[0] instanceof ObjectIdentifier) {
throw new InvalidArgumentException('Unable to load the key.');
}
@@ -250,11 +211,13 @@ private static function loadPrivatePEM(array $children): array
$dBin = hex2bin($d);
$xBin = hex2bin($x);
$yBin = hex2bin($y);
- if (!is_string($dBin) || !is_string($xBin) || !is_string($yBin)) {
+ if (! is_string($dBin) || ! is_string($xBin) || ! is_string($yBin)) {
throw new InvalidArgumentException('Unable to load the key.');
}
- $values = ['kty' => 'EC'];
+ $values = [
+ 'kty' => 'EC',
+ ];
$values['crv'] = self::getCurve($curve);
$values['d'] = Base64UrlSafe::encodeUnpadded($dBin);
$values['x'] = Base64UrlSafe::encodeUnpadded($xBin);
@@ -268,13 +231,17 @@ private static function loadPrivatePEM(array $children): array
*/
private static function isPKCS8(array $children): bool
{
- if (3 !== count($children)) {
+ if (count($children) !== 3) {
return false;
}
- $classes = [0 => Integer::class, 1 => Sequence::class, 2 => OctetString::class];
+ $classes = [
+ 0 => Integer::class,
+ 1 => Sequence::class,
+ 2 => OctetString::class,
+ ];
foreach ($classes as $k => $class) {
- if (!$children[$k] instanceof $class) {
+ if (! $children[$k] instanceof $class) {
return false;
}
}
@@ -282,9 +249,6 @@ private static function isPKCS8(array $children): bool
return true;
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
private function loadJWK(array $jwk): void
{
$keys = [
@@ -294,12 +258,12 @@ private function loadJWK(array $jwk): void
'y' => 'Point parameters are missing.',
];
foreach ($keys as $k => $v) {
- if (!array_key_exists($k, $jwk)) {
+ if (! array_key_exists($k, $jwk)) {
throw new InvalidArgumentException($v);
}
}
- if ('EC' !== $jwk['kty']) {
+ if ($jwk['kty'] !== 'EC') {
throw new InvalidArgumentException('JWK is not an Elliptic Curve key.');
}
$this->values = $jwk;
diff --git a/src/Component/KeyManagement/KeyConverter/KeyConverter.php b/src/Component/KeyManagement/KeyConverter/KeyConverter.php
index 8fc58ee8..d18185fa 100644
--- a/src/Component/KeyManagement/KeyConverter/KeyConverter.php
+++ b/src/Component/KeyManagement/KeyConverter/KeyConverter.php
@@ -2,15 +2,6 @@
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\KeyManagement\KeyConverter;
use function array_key_exists;
@@ -19,74 +10,67 @@
use InvalidArgumentException;
use function is_array;
use function is_string;
+use const OPENSSL_KEYTYPE_EC;
+use const OPENSSL_KEYTYPE_RSA;
+use const OPENSSL_RAW_DATA;
+use OpenSSLCertificate;
use ParagonIE\ConstantTime\Base64UrlSafe;
+use const PHP_EOL;
+use const PREG_PATTERN_ORDER;
use RuntimeException;
use Throwable;
/**
* @internal
*/
-class KeyConverter
+final class KeyConverter
{
- /**
- * @throws InvalidArgumentException if the certificate file cannot be read
- */
public static function loadKeyFromCertificateFile(string $file): array
{
- if (!file_exists($file)) {
+ if (! file_exists($file)) {
throw new InvalidArgumentException(sprintf('File "%s" does not exist.', $file));
}
$content = file_get_contents($file);
- if (!is_string($content)) {
+ if (! is_string($content)) {
throw new InvalidArgumentException(sprintf('File "%s" cannot be read.', $file));
}
return self::loadKeyFromCertificate($content);
}
- /**
- * @throws InvalidArgumentException if the OpenSSL extension is not available
- * @throws InvalidArgumentException if the certificate is invalid or cannot be loaded
- */
public static function loadKeyFromCertificate(string $certificate): array
{
- if (!extension_loaded('openssl')) {
+ if (! extension_loaded('openssl')) {
throw new RuntimeException('Please install the OpenSSL extension');
}
try {
$res = openssl_x509_read($certificate);
- if (false === $res) {
+ if ($res === false) {
throw new InvalidArgumentException('Unable to load the certificate.');
}
- } catch (Throwable $e) {
+ } catch (Throwable) {
$certificate = self::convertDerToPem($certificate);
$res = openssl_x509_read($certificate);
}
- if (false === $res) {
+ if ($res === false) {
throw new InvalidArgumentException('Unable to load the certificate.');
}
return self::loadKeyFromX509Resource($res);
}
- /**
- * @param resource $res
- *
- * @throws InvalidArgumentException if the OpenSSL extension is not available
- * @throws InvalidArgumentException if the certificate is invalid or cannot be loaded
- */
- public static function loadKeyFromX509Resource($res): array
+ public static function loadKeyFromX509Resource(OpenSSLCertificate $res): array
{
- if (!extension_loaded('openssl')) {
+ if (! extension_loaded('openssl')) {
throw new RuntimeException('Please install the OpenSSL extension');
}
- $key = openssl_get_publickey($res);
- if (false === $key) {
+ $key = openssl_pkey_get_public($res);
+ if ($key === false) {
throw new InvalidArgumentException('Unable to load the certificate.');
}
$details = openssl_pkey_get_details($key);
- if (!is_array($details)) {
+ if (! is_array($details)) {
throw new InvalidArgumentException('Unable to load the certificate');
}
if (isset($details['key'])) {
@@ -94,14 +78,14 @@ public static function loadKeyFromX509Resource($res): array
openssl_x509_export($res, $out);
$x5c = preg_replace('#-.*-#', '', $out);
$x5c = preg_replace('~\R~', PHP_EOL, $x5c);
- if (!is_string($x5c)) {
+ if (! is_string($x5c)) {
throw new InvalidArgumentException('Unable to load the certificate');
}
$x5c = trim($x5c);
$x5tsha1 = openssl_x509_fingerprint($res, 'sha1', true);
$x5tsha256 = openssl_x509_fingerprint($res, 'sha256', true);
- if (!is_string($x5tsha1) || !is_string($x5tsha256)) {
+ if (! is_string($x5tsha1) || ! is_string($x5tsha256)) {
throw new InvalidArgumentException('Unable to compute the certificate fingerprint');
}
@@ -118,7 +102,7 @@ public static function loadKeyFromX509Resource($res): array
public static function loadFromKeyFile(string $file, ?string $password = null): array
{
$content = file_get_contents($file);
- if (!is_string($content)) {
+ if (! is_string($content)) {
throw new InvalidArgumentException('Unable to load the key from the file.');
}
@@ -129,32 +113,32 @@ public static function loadFromKey(string $key, ?string $password = null): array
{
try {
return self::loadKeyFromDER($key, $password);
- } catch (Throwable $e) {
+ } catch (Throwable) {
return self::loadKeyFromPEM($key, $password);
}
}
/**
- * Be careful! The certificate chain is loaded, but it is NOT VERIFIED by any mean!
- * It is mandatory to verify the root CA or intermediate CA are trusted.
- * If not done, it may lead to potential security issues.
- *
- * @throws InvalidArgumentException if the certificate chain is empty
- * @throws InvalidArgumentException if the OpenSSL extension is not available
+ * Be careful! The certificate chain is loaded, but it is NOT VERIFIED by any mean! It is mandatory to verify the
+ * root CA or intermediate CA are trusted. If not done, it may lead to potential security issues.
*/
public static function loadFromX5C(array $x5c): array
{
- if (0 === count($x5c)) {
+ if (count($x5c) === 0) {
throw new InvalidArgumentException('The certificate chain is empty');
}
foreach ($x5c as $id => $cert) {
- $x5c[$id] = '-----BEGIN CERTIFICATE-----'.PHP_EOL.chunk_split($cert, 64, PHP_EOL).'-----END CERTIFICATE-----';
+ $x5c[$id] = '-----BEGIN CERTIFICATE-----' . PHP_EOL . chunk_split(
+ $cert,
+ 64,
+ PHP_EOL
+ ) . '-----END CERTIFICATE-----';
$x509 = openssl_x509_read($x5c[$id]);
- if (false === $x509) {
+ if ($x509 === false) {
throw new InvalidArgumentException('Unable to load the certificate chain');
}
$parsed = openssl_x509_parse($x509);
- if (false === $parsed) {
+ if ($parsed === false) {
throw new InvalidArgumentException('Unable to load the certificate chain');
}
}
@@ -169,23 +153,19 @@ private static function loadKeyFromDER(string $der, ?string $password = null): a
return self::loadKeyFromPEM($pem, $password);
}
- /**
- * @throws InvalidArgumentException if the OpenSSL extension is not available
- * @throws InvalidArgumentException if the key cannot be loaded
- */
private static function loadKeyFromPEM(string $pem, ?string $password = null): array
{
- if (1 === preg_match('#DEK-Info: (.+),(.+)#', $pem, $matches)) {
+ if (preg_match('#DEK-Info: (.+),(.+)#', $pem, $matches) === 1) {
$pem = self::decodePem($pem, $matches, $password);
}
- if (!extension_loaded('openssl')) {
+ if (! extension_loaded('openssl')) {
throw new RuntimeException('Please install the OpenSSL extension');
}
- if (1 === preg_match('#BEGIN ENCRYPTED PRIVATE KEY(.+)(.+)#', $pem)) {
+ if (preg_match('#BEGIN ENCRYPTED PRIVATE KEY(.+)(.+)#', $pem) === 1) {
$decrypted = openssl_pkey_get_private($pem, $password);
- if (false === $decrypted) {
+ if ($decrypted === false) {
throw new InvalidArgumentException('Unable to decrypt the key.');
}
openssl_pkey_export($decrypted, $pem);
@@ -193,15 +173,15 @@ private static function loadKeyFromPEM(string $pem, ?string $password = null): a
self::sanitizePEM($pem);
$res = openssl_pkey_get_private($pem);
- if (false === $res) {
+ if ($res === false) {
$res = openssl_pkey_get_public($pem);
}
- if (false === $res) {
+ if ($res === false) {
throw new InvalidArgumentException('Unable to load the key.');
}
$details = openssl_pkey_get_details($res);
- if (!is_array($details) || !array_key_exists('type', $details)) {
+ if (! is_array($details) || ! array_key_exists('type', $details)) {
throw new InvalidArgumentException('Unable to get details of the key');
}
@@ -229,45 +209,42 @@ private static function sanitizePEM(string &$pem): void
preg_match_all('#(-.*-)#', $pem, $matches, PREG_PATTERN_ORDER);
$ciphertext = preg_replace('#-.*-|\r|\n| #', '', $pem);
- $pem = $matches[0][0].PHP_EOL;
+ $pem = $matches[0][0] . PHP_EOL;
$pem .= chunk_split($ciphertext, 64, PHP_EOL);
- $pem .= $matches[0][1].PHP_EOL;
+ $pem .= $matches[0][1] . PHP_EOL;
}
/**
* @param string[] $matches
- *
- * @throws InvalidArgumentException if the password to decrypt the key is not provided
- * @throws InvalidArgumentException if the key cannot be loaded
*/
private static function decodePem(string $pem, array $matches, ?string $password = null): string
{
- if (null === $password) {
+ if ($password === null) {
throw new InvalidArgumentException('Password required for encrypted keys.');
}
$iv = pack('H*', trim($matches[2]));
$iv_sub = mb_substr($iv, 0, 8, '8bit');
- $symkey = pack('H*', md5($password.$iv_sub));
- $symkey .= pack('H*', md5($symkey.$password.$iv_sub));
+ $symkey = pack('H*', md5($password . $iv_sub));
+ $symkey .= pack('H*', md5($symkey . $password . $iv_sub));
$key = preg_replace('#^(?:Proc-Type|DEK-Info): .*#m', '', $pem);
$ciphertext = base64_decode(preg_replace('#-.*-|\r|\n#', '', $key), true);
- if (!is_string($ciphertext)) {
+ if (! is_string($ciphertext)) {
throw new InvalidArgumentException('Unable to encode the data.');
}
$decoded = openssl_decrypt($ciphertext, mb_strtolower($matches[1]), $symkey, OPENSSL_RAW_DATA, $iv);
- if (false === $decoded) {
+ if ($decoded === false) {
throw new RuntimeException('Unable to decrypt the key');
}
$number = preg_match_all('#-{5}.*-{5}#', $pem, $result);
- if (2 !== $number) {
+ if ($number !== 2) {
throw new InvalidArgumentException('Unable to load the key');
}
- $pem = $result[0][0].PHP_EOL;
+ $pem = $result[0][0] . PHP_EOL;
$pem .= chunk_split(base64_encode($decoded), 64);
- $pem .= $result[0][1].PHP_EOL;
+ $pem .= $result[0][1] . PHP_EOL;
return $pem;
}
@@ -276,6 +253,6 @@ private static function convertDerToPem(string $der_data): string
{
$pem = chunk_split(base64_encode($der_data), 64, PHP_EOL);
- return '-----BEGIN CERTIFICATE-----'.PHP_EOL.$pem.'-----END CERTIFICATE-----'.PHP_EOL;
+ return '-----BEGIN CERTIFICATE-----' . PHP_EOL . $pem . '-----END CERTIFICATE-----' . PHP_EOL;
}
}
diff --git a/src/Component/KeyManagement/KeyConverter/RSAKey.php b/src/Component/KeyManagement/KeyConverter/RSAKey.php
index ba40c422..68a46e37 100644
--- a/src/Component/KeyManagement/KeyConverter/RSAKey.php
+++ b/src/Component/KeyManagement/KeyConverter/RSAKey.php
@@ -2,15 +2,6 @@
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\KeyManagement\KeyConverter;
use function array_key_exists;
@@ -26,27 +17,23 @@
/**
* @internal
*/
-class RSAKey
+final class RSAKey
{
/**
* @var array
*/
private $values = [];
- /**
- * RSAKey constructor.
- */
private function __construct(array $data)
{
$this->loadJWK($data);
}
- /**
- * @return RSAKey
- */
public static function createFromKeyDetails(array $details): self
{
- $values = ['kty' => 'RSA'];
+ $values = [
+ 'kty' => 'RSA',
+ ];
$keys = [
'n' => 'n',
'e' => 'e',
@@ -67,36 +54,27 @@ public static function createFromKeyDetails(array $details): self
return new self($values);
}
- /**
- * @throws RuntimeException if the extension OpenSSL is not available
- * @throws InvalidArgumentException if the key cannot be loaded
- *
- * @return RSAKey
- */
public static function createFromPEM(string $pem): self
{
- if (!extension_loaded('openssl')) {
+ if (! extension_loaded('openssl')) {
throw new RuntimeException('Please install the OpenSSL extension');
}
$res = openssl_pkey_get_private($pem);
- if (false === $res) {
+ if ($res === false) {
$res = openssl_pkey_get_public($pem);
}
- if (false === $res) {
+ if ($res === false) {
throw new InvalidArgumentException('Unable to load the key.');
}
$details = openssl_pkey_get_details($res);
- if (!is_array($details) || !isset($details['rsa'])) {
+ if (! is_array($details) || ! isset($details['rsa'])) {
throw new InvalidArgumentException('Unable to load the key.');
}
return self::createFromKeyDetails($details['rsa']);
}
- /**
- * @return RSAKey
- */
public static function createFromJWK(JWK $jwk): self
{
return new self($jwk->all());
@@ -104,14 +82,9 @@ public static function createFromJWK(JWK $jwk): self
public function isPublic(): bool
{
- return !array_key_exists('d', $this->values);
+ return ! array_key_exists('d', $this->values);
}
- /**
- * @param RSAKey $private
- *
- * @return RSAKey
- */
public static function toPublic(self $private): self
{
$data = $private->toArray();
@@ -136,8 +109,8 @@ public function toJwk(): JWK
}
/**
- * This method will try to add Chinese Remainder Theorem (CRT) parameters.
- * With those primes, the decryption process is really fast.
+ * This method will try to add Chinese Remainder Theorem (CRT) parameters. With those primes, the decryption process
+ * is really fast.
*/
public function optimize(): void
{
@@ -146,15 +119,12 @@ public function optimize(): void
}
}
- /**
- * @throws InvalidArgumentException if the key is invalid or not an RSA key
- */
private function loadJWK(array $jwk): void
{
- if (!array_key_exists('kty', $jwk)) {
+ if (! array_key_exists('kty', $jwk)) {
throw new InvalidArgumentException('The key parameter "kty" is missing.');
}
- if ('RSA' !== $jwk['kty']) {
+ if ($jwk['kty'] !== 'RSA') {
throw new InvalidArgumentException('The JWK is not a RSA key.');
}
@@ -162,12 +132,12 @@ private function loadJWK(array $jwk): void
}
/**
- * This method adds Chinese Remainder Theorem (CRT) parameters if primes 'p' and 'q' are available.
- * If 'p' and 'q' are missing, they are computed and added to the key data.
+ * This method adds Chinese Remainder Theorem (CRT) parameters if primes 'p' and 'q' are available. If 'p' and 'q'
+ * are missing, they are computed and added to the key data.
*/
private function populateCRT(): void
{
- if (!array_key_exists('p', $this->values) && !array_key_exists('q', $this->values)) {
+ if (! array_key_exists('p', $this->values) && ! array_key_exists('q', $this->values)) {
$d = BigInteger::createFromBinaryString(Base64UrlSafe::decode($this->values['d']));
$e = BigInteger::createFromBinaryString(Base64UrlSafe::decode($this->values['e']));
$n = BigInteger::createFromBinaryString(Base64UrlSafe::decode($this->values['n']));
@@ -177,7 +147,10 @@ private function populateCRT(): void
$this->values['q'] = Base64UrlSafe::encodeUnpadded($q->toBytes());
}
- if (array_key_exists('dp', $this->values) && array_key_exists('dq', $this->values) && array_key_exists('qi', $this->values)) {
+ if (array_key_exists('dp', $this->values) && array_key_exists('dq', $this->values) && array_key_exists(
+ 'qi',
+ $this->values
+ )) {
return;
}
@@ -192,8 +165,6 @@ private function populateCRT(): void
}
/**
- * @throws RuntimeException if the prime factors cannot be found
- *
* @return BigInteger[]
*/
private function findPrimeFactors(BigInteger $d, BigInteger $e, BigInteger $n): array
@@ -202,7 +173,9 @@ private function findPrimeFactors(BigInteger $d, BigInteger $e, BigInteger $n):
$one = BigInteger::createFromDecimal(1);
$two = BigInteger::createFromDecimal(2);
- $k = $d->multiply($e)->subtract($one);
+ $k = $d->multiply($e)
+ ->subtract($one)
+ ;
if ($k->isEven()) {
$r = $k;
@@ -247,11 +220,13 @@ private function findPrimeFactors(BigInteger $d, BigInteger $e, BigInteger $n):
break;
}
}
- if (null === $y) {
+ if ($y === null) {
throw new InvalidArgumentException('Unable to find prime factors.');
}
- if (true === $found) {
- $p = $y->subtract($one)->gcd($n);
+ if ($found === true) {
+ $p = $y->subtract($one)
+ ->gcd($n)
+ ;
$q = $n->divide($p);
return [$p, $q];
diff --git a/src/Component/KeyManagement/UrlKeySetFactory.php b/src/Component/KeyManagement/UrlKeySetFactory.php
index e880fd6c..f1b9a117 100644
--- a/src/Component/KeyManagement/UrlKeySetFactory.php
+++ b/src/Component/KeyManagement/UrlKeySetFactory.php
@@ -2,15 +2,6 @@
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\KeyManagement;
use Psr\Http\Client\ClientInterface;
@@ -19,28 +10,12 @@
abstract class UrlKeySetFactory
{
- /**
- * @var ClientInterface
- */
- private $client;
-
- /**
- * @var RequestFactoryInterface
- */
- private $requestFactory;
-
- /**
- * UrlKeySetFactory constructor.
- */
- public function __construct(ClientInterface $client, RequestFactoryInterface $requestFactory)
- {
- $this->client = $client;
- $this->requestFactory = $requestFactory;
+ public function __construct(
+ private ClientInterface $client,
+ private RequestFactoryInterface $requestFactory
+ ) {
}
- /**
- * @throws RuntimeException if the response content is invalid
- */
protected function getContent(string $url, array $header = []): string
{
$request = $this->requestFactory->createRequest('GET', $url);
@@ -53,6 +28,8 @@ protected function getContent(string $url, array $header = []): string
throw new RuntimeException('Unable to get the key set.', $response->getStatusCode());
}
- return $response->getBody()->getContents();
+ return $response->getBody()
+ ->getContents()
+ ;
}
}
diff --git a/src/Component/KeyManagement/X5UFactory.php b/src/Component/KeyManagement/X5UFactory.php
index 8b81c995..32eacd76 100644
--- a/src/Component/KeyManagement/X5UFactory.php
+++ b/src/Component/KeyManagement/X5UFactory.php
@@ -2,15 +2,6 @@
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\KeyManagement;
use function is_array;
@@ -19,28 +10,26 @@
use Jose\Component\Core\JWKSet;
use Jose\Component\Core\Util\JsonConverter;
use Jose\Component\KeyManagement\KeyConverter\KeyConverter;
+use const PHP_EOL;
use RuntimeException;
class X5UFactory extends UrlKeySetFactory
{
/**
- * This method will try to fetch the url a retrieve the key set.
- * Throws an exception in case of failure.
- *
- * @throws RuntimeException if the response content is invalid
+ * This method will try to fetch the url a retrieve the key set. Throws an exception in case of failure.
*/
public function loadFromUrl(string $url, array $header = []): JWKSet
{
$content = $this->getContent($url, $header);
$data = JsonConverter::decode($content);
- if (!is_array($data)) {
+ if (! is_array($data)) {
throw new RuntimeException('Invalid content.');
}
$keys = [];
foreach ($data as $kid => $cert) {
- if (false === mb_strpos($cert, '-----BEGIN CERTIFICATE-----')) {
- $cert = '-----BEGIN CERTIFICATE-----'.PHP_EOL.$cert.PHP_EOL.'-----END CERTIFICATE-----';
+ if (mb_strpos($cert, '-----BEGIN CERTIFICATE-----') === false) {
+ $cert = '-----BEGIN CERTIFICATE-----' . PHP_EOL . $cert . PHP_EOL . '-----END CERTIFICATE-----';
}
$jwk = KeyConverter::loadKeyFromCertificate($cert);
if (is_string($kid)) {
diff --git a/src/Component/NestedToken/NestedTokenBuilder.php b/src/Component/NestedToken/NestedTokenBuilder.php
index bdcbb576..68ced6b6 100644
--- a/src/Component/NestedToken/NestedTokenBuilder.php
+++ b/src/Component/NestedToken/NestedTokenBuilder.php
@@ -2,15 +2,6 @@
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\NestedToken;
use function array_key_exists;
@@ -23,48 +14,40 @@
class NestedTokenBuilder
{
- /**
- * @var JWSBuilder
- */
- private $jwsBuilder;
-
- /**
- * @var JWSSerializerManager
- */
- private $jwsSerializerManager;
-
- /**
- * @var JWEBuilder
- */
- private $jweBuilder;
-
- /**
- * @var JWESerializerManager
- */
- private $jweSerializerManager;
-
- public function __construct(JWEBuilder $jweBuilder, JWESerializerManager $jweSerializerManager, JWSBuilder $jwsBuilder, JWSSerializerManager $jwsSerializerManager)
- {
- $this->jweBuilder = $jweBuilder;
- $this->jwsSerializerManager = $jwsSerializerManager;
- $this->jwsBuilder = $jwsBuilder;
- $this->jweSerializerManager = $jweSerializerManager;
+ public function __construct(
+ private JWEBuilder $jweBuilder,
+ private JWESerializerManager $jweSerializerManager,
+ private JWSBuilder $jwsBuilder,
+ private JWSSerializerManager $jwsSerializerManager
+ ) {
}
/**
* Creates a nested token.
- *
- * @throws InvalidArgumentException if the argument "$signatures" does not include the expected structure
- * @throws InvalidArgumentException if the argument "$recipients" does not include the expected structure
*/
- public function create(string $payload, array $signatures, string $jws_serialization_mode, array $jweSharedProtectedHeader, array $jweSharedHeader, array $recipients, string $jwe_serialization_mode, ?string $aad = null): string
- {
- $jws = $this->jwsBuilder->create()->withPayload($payload);
+ public function create(
+ string $payload,
+ array $signatures,
+ string $jws_serialization_mode,
+ array $jweSharedProtectedHeader,
+ array $jweSharedHeader,
+ array $recipients,
+ string $jwe_serialization_mode,
+ ?string $aad = null
+ ): string {
+ $jws = $this->jwsBuilder->create()
+ ->withPayload($payload)
+ ;
foreach ($signatures as $signature) {
- if (!is_array($signature) || !array_key_exists('key', $signature)) {
- throw new InvalidArgumentException('The signatures must be an array of arrays containing a key, a protected header and a header');
+ if (! is_array($signature) || ! array_key_exists('key', $signature)) {
+ throw new InvalidArgumentException(
+ 'The signatures must be an array of arrays containing a key, a protected header and a header'
+ );
}
- $signature['protected_header'] = array_key_exists('protected_header', $signature) ? $signature['protected_header'] : [];
+ $signature['protected_header'] = array_key_exists(
+ 'protected_header',
+ $signature
+ ) ? $signature['protected_header'] : [];
$signature['header'] = array_key_exists('header', $signature) ? $signature['header'] : [];
$jws = $jws->addSignature($signature['key'], $signature['protected_header'], $signature['header']);
}
@@ -81,8 +64,10 @@ public function create(string $payload, array $signatures, string $jws_serializa
->withAAD($aad)
;
foreach ($recipients as $recipient) {
- if (!is_array($recipient) || !array_key_exists('key', $recipient)) {
- throw new InvalidArgumentException('The recipients must be an array of arrays containing a key and a header');
+ if (! is_array($recipient) || ! array_key_exists('key', $recipient)) {
+ throw new InvalidArgumentException(
+ 'The recipients must be an array of arrays containing a key and a header'
+ );
}
$recipient['header'] = array_key_exists('header', $recipient) ? $recipient['header'] : [];
$jwe = $jwe->addRecipient($recipient['key'], $recipient['header']);
diff --git a/src/Component/NestedToken/NestedTokenBuilderFactory.php b/src/Component/NestedToken/NestedTokenBuilderFactory.php
index 5e8cecd7..43aadceb 100644
--- a/src/Component/NestedToken/NestedTokenBuilderFactory.php
+++ b/src/Component/NestedToken/NestedTokenBuilderFactory.php
@@ -2,15 +2,6 @@
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\NestedToken;
use Jose\Component\Encryption\JWEBuilderFactory;
@@ -20,40 +11,31 @@
class NestedTokenBuilderFactory
{
- /**
- * @var JWEBuilderFactory
- */
- private $jweBuilderFactory;
-
- /**
- * @var JWESerializerManagerFactory
- */
- private $jweSerializerManagerFactory;
-
- /**
- * @var JWSBuilderFactory
- */
- private $jwsBuilderFactory;
-
- /**
- * @var JWSSerializerManagerFactory
- */
- private $jwsSerializerManagerFactory;
-
- public function __construct(JWEBuilderFactory $jweBuilderFactory, JWESerializerManagerFactory $jweSerializerManagerFactory, JWSBuilderFactory $jwsBuilderFactory, JWSSerializerManagerFactory $jwsSerializerManagerFactory)
- {
- $this->jweBuilderFactory = $jweBuilderFactory;
- $this->jweSerializerManagerFactory = $jweSerializerManagerFactory;
- $this->jwsBuilderFactory = $jwsBuilderFactory;
- $this->jwsSerializerManagerFactory = $jwsSerializerManagerFactory;
+ public function __construct(
+ private JWEBuilderFactory $jweBuilderFactory,
+ private JWESerializerManagerFactory $jweSerializerManagerFactory,
+ private JWSBuilderFactory $jwsBuilderFactory,
+ private JWSSerializerManagerFactory $jwsSerializerManagerFactory
+ ) {
}
/**
- * This method creates a Nested Token Builder with the given encryption/signature algorithms, serializers and compression methods.
+ * This method creates a Nested Token Builder with the given encryption/signature algorithms, serializers and
+ * compression methods.
*/
- public function create(array $jwe_serializers, array $keyEncryptionAlgorithms, array $contentEncryptionAlgorithms, array $compressionMethods, array $jws_serializers, array $signatureAlgorithms): NestedTokenBuilder
- {
- $jweBuilder = $this->jweBuilderFactory->create($keyEncryptionAlgorithms, $contentEncryptionAlgorithms, $compressionMethods);
+ public function create(
+ array $jwe_serializers,
+ array $keyEncryptionAlgorithms,
+ array $contentEncryptionAlgorithms,
+ array $compressionMethods,
+ array $jws_serializers,
+ array $signatureAlgorithms
+ ): NestedTokenBuilder {
+ $jweBuilder = $this->jweBuilderFactory->create(
+ $keyEncryptionAlgorithms,
+ $contentEncryptionAlgorithms,
+ $compressionMethods
+ );
$jweSerializerManager = $this->jweSerializerManagerFactory->create($jwe_serializers);
$jwsBuilder = $this->jwsBuilderFactory->create($signatureAlgorithms);
$jwsSerializerManager = $this->jwsSerializerManagerFactory->create($jws_serializers);
diff --git a/src/Component/NestedToken/NestedTokenLoader.php b/src/Component/NestedToken/NestedTokenLoader.php
index efdf1199..70286898 100644
--- a/src/Component/NestedToken/NestedTokenLoader.php
+++ b/src/Component/NestedToken/NestedTokenLoader.php
@@ -2,15 +2,6 @@
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\NestedToken;
use InvalidArgumentException;
@@ -22,66 +13,40 @@
class NestedTokenLoader
{
- /**
- * @var JWSLoader
- */
- private $jwsLoader;
-
- /**
- * @var JWELoader
- */
- private $jweLoader;
-
- public function __construct(JWELoader $jweLoader, JWSLoader $jwsLoader)
- {
- $this->jweLoader = $jweLoader;
- $this->jwsLoader = $jwsLoader;
+ public function __construct(
+ private JWELoader $jweLoader,
+ private JWSLoader $jwsLoader
+ ) {
}
/**
- * This method will try to load, decrypt and verify the token.
- * In case of failure, an exception is thrown, otherwise returns the JWS and populates the $signature variable.
- *
- * @throws InvalidArgumentException if the token has no payload
+ * This method will try to load, decrypt and verify the token. In case of failure, an exception is thrown, otherwise
+ * returns the JWS and populates the $signature variable.
*/
public function load(string $token, JWKSet $encryptionKeySet, JWKSet $signatureKeySet, ?int &$signature = null): JWS
{
$recipient = null;
$jwe = $this->jweLoader->loadAndDecryptWithKeySet($token, $encryptionKeySet, $recipient);
$this->checkContentTypeHeader($jwe, $recipient);
- if (null === $jwe->getPayload()) {
+ if ($jwe->getPayload() === null) {
throw new InvalidArgumentException('The token has no payload.');
}
return $this->jwsLoader->loadAndVerifyWithKeySet($jwe->getPayload(), $signatureKeySet, $signature);
}
- /**
- * @throws InvalidArgumentException if the token is not a valid nested token
- */
private function checkContentTypeHeader(JWE $jwe, int $recipient): void
{
- switch (true) {
- case $jwe->hasSharedProtectedHeaderParameter('cty'):
- $cty = $jwe->getSharedProtectedHeaderParameter('cty');
-
- break;
-
- case $jwe->hasSharedHeaderParameter('cty'):
- $cty = $jwe->getSharedHeaderParameter('cty');
-
- break;
-
- case $jwe->getRecipient($recipient)->hasHeaderParameter('cty'):
- $cty = $jwe->getRecipient($recipient)->getHeaderParameter('cty');
-
- break;
-
- default:
- throw new InvalidArgumentException('The token is not a nested token.');
- }
-
- if (0 !== strcasecmp($cty, 'jwt')) {
+ $cty = match (true) {
+ $jwe->hasSharedProtectedHeaderParameter('cty') => $jwe->getSharedProtectedHeaderParameter('cty'),
+ $jwe->hasSharedHeaderParameter('cty') => $jwe->getSharedHeaderParameter('cty'),
+ $jwe->getRecipient($recipient)
+ ->hasHeaderParameter('cty') => $jwe->getRecipient($recipient)
+ ->getHeaderParameter('cty'),
+ default => throw new InvalidArgumentException('The token is not a nested token.'),
+ };
+
+ if (strcasecmp($cty, 'jwt') !== 0) {
throw new InvalidArgumentException('The token is not a nested token.');
}
}
diff --git a/src/Component/NestedToken/NestedTokenLoaderFactory.php b/src/Component/NestedToken/NestedTokenLoaderFactory.php
index 16972f4f..e3f9881a 100644
--- a/src/Component/NestedToken/NestedTokenLoaderFactory.php
+++ b/src/Component/NestedToken/NestedTokenLoaderFactory.php
@@ -2,15 +2,6 @@
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\NestedToken;
use Jose\Component\Encryption\JWELoaderFactory;
@@ -18,28 +9,33 @@
class NestedTokenLoaderFactory
{
- /**
- * @var JWELoaderFactory
- */
- private $jweLoaderFactory;
-
- /**
- * @var JWSLoaderFactory
- */
- private $jwsLoaderFactory;
-
- public function __construct(JWELoaderFactory $jweLoaderFactory, JWSLoaderFactory $jwsLoaderFactory)
- {
- $this->jweLoaderFactory = $jweLoaderFactory;
- $this->jwsLoaderFactory = $jwsLoaderFactory;
+ public function __construct(
+ private JWELoaderFactory $jweLoaderFactory,
+ private JWSLoaderFactory $jwsLoaderFactory
+ ) {
}
/**
- * This method creates a Nested Token Loader with the given encryption/signature algorithms, serializers, compression methods and header checkers.
+ * This method creates a Nested Token Loader with the given encryption/signature algorithms, serializers,
+ * compression methods and header checkers.
*/
- public function create(array $jweSerializers, array $keyEncryptionAlgorithms, array $contentEncryptionAlgorithms, array $compressionMethods, array $jweHeaderCheckers, array $jwsSerializers, array $signatureAlgorithms, array $jwsHeaderCheckers): NestedTokenLoader
- {
- $jweLoader = $this->jweLoaderFactory->create($jweSerializers, $keyEncryptionAlgorithms, $contentEncryptionAlgorithms, $compressionMethods, $jweHeaderCheckers);
+ public function create(
+ array $jweSerializers,
+ array $keyEncryptionAlgorithms,
+ array $contentEncryptionAlgorithms,
+ 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);
diff --git a/src/Component/Signature/Algorithm/MacAlgorithm.php b/src/Component/Signature/Algorithm/MacAlgorithm.php
index 2304b367..43f86143 100644
--- a/src/Component/Signature/Algorithm/MacAlgorithm.php
+++ b/src/Component/Signature/Algorithm/MacAlgorithm.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use Jose\Component\Core\Algorithm;
diff --git a/src/Component/Signature/Algorithm/SignatureAlgorithm.php b/src/Component/Signature/Algorithm/SignatureAlgorithm.php
index 9f64144d..48448f95 100644
--- a/src/Component/Signature/Algorithm/SignatureAlgorithm.php
+++ b/src/Component/Signature/Algorithm/SignatureAlgorithm.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use Jose\Component\Core\Algorithm;
diff --git a/src/Component/Signature/JWS.php b/src/Component/Signature/JWS.php
index 1276a9e3..beeb30ab 100644
--- a/src/Component/Signature/JWS.php
+++ b/src/Component/Signature/JWS.php
@@ -2,15 +2,6 @@
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\Signature;
use function count;
@@ -19,31 +10,16 @@
class JWS implements JWT
{
- /**
- * @var bool
- */
- private $isPayloadDetached = false;
-
- /**
- * @var null|string
- */
- private $encodedPayload;
-
/**
* @var Signature[]
*/
- private $signatures = [];
+ private array $signatures = [];
- /**
- * @var null|string
- */
- private $payload;
-
- public function __construct(?string $payload, ?string $encodedPayload = null, bool $isPayloadDetached = false)
- {
- $this->payload = $payload;
- $this->encodedPayload = $encodedPayload;
- $this->isPayloadDetached = $isPayloadDetached;
+ public function __construct(
+ private ?string $payload,
+ private ?string $encodedPayload = null,
+ private bool $isPayloadDetached = false
+ ) {
}
public function getPayload(): ?string
@@ -60,12 +36,11 @@ public function isPayloadDetached(): bool
}
/**
- * Returns the Base64Url encoded payload.
- * If the payload is detached, this method returns null.
+ * Returns the Base64Url encoded payload. If the payload is detached, this method returns null.
*/
public function getEncodedPayload(): ?string
{
- if (true === $this->isPayloadDetached()) {
+ if ($this->isPayloadDetached() === true) {
return null;
}
@@ -84,8 +59,6 @@ public function getSignatures(): array
/**
* Returns the signature at the given index.
- *
- * @throws InvalidArgumentException if the signature index does not exist
*/
public function getSignature(int $id): Signature
{
@@ -97,15 +70,16 @@ public function getSignature(int $id): Signature
}
/**
- * This method adds a signature to the JWS object.
- * Its returns a new JWS object.
+ * This method adds a signature to the JWS object. Its returns a new JWS object.
*
* @internal
- *
- * @return JWS
*/
- public function addSignature(string $signature, array $protectedHeader, ?string $encodedProtectedHeader, array $header = []): self
- {
+ public function addSignature(
+ string $signature,
+ array $protectedHeader,
+ ?string $encodedProtectedHeader,
+ array $header = []
+ ): self {
$jws = clone $this;
$jws->signatures[] = new Signature($signature, $protectedHeader, $encodedProtectedHeader, $header);
@@ -121,8 +95,8 @@ public function countSignatures(): int
}
/**
- * This method splits the JWS into a list of JWSs.
- * It is only useful when the JWS contains more than one signature (JSON General Serialization).
+ * This method splits the JWS into a list of JWSs. It is only useful when the JWS contains more than one signature
+ * (JSON General Serialization).
*
* @return JWS[]
*/
@@ -130,11 +104,7 @@ public function split(): array
{
$result = [];
foreach ($this->signatures as $signature) {
- $jws = new self(
- $this->payload,
- $this->encodedPayload,
- $this->isPayloadDetached
- );
+ $jws = new self($this->payload, $this->encodedPayload, $this->isPayloadDetached);
$jws = $jws->addSignature(
$signature->getSignature(),
$signature->getProtectedHeader(),
diff --git a/src/Component/Signature/JWSBuilder.php b/src/Component/Signature/JWSBuilder.php
index 4f2af279..a3d94065 100644
--- a/src/Component/Signature/JWSBuilder.php
+++ b/src/Component/Signature/JWSBuilder.php
@@ -2,15 +2,6 @@
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\Signature;
use function array_key_exists;
@@ -31,34 +22,17 @@
class JWSBuilder
{
- /**
- * @var null|string
- */
- protected $payload;
+ protected ?string $payload = null;
- /**
- * @var bool
- */
- protected $isPayloadDetached;
+ protected ?bool $isPayloadDetached = null;
- /**
- * @var array
- */
- protected $signatures = [];
+ protected array $signatures = [];
- /**
- * @var null|bool
- */
- protected $isPayloadEncoded;
+ protected ?bool $isPayloadEncoded = null;
- /**
- * @var AlgorithmManager
- */
- private $signatureAlgorithmManager;
-
- public function __construct(AlgorithmManager $signatureAlgorithmManager)
- {
- $this->signatureAlgorithmManager = $signatureAlgorithmManager;
+ public function __construct(
+ private AlgorithmManager $signatureAlgorithmManager
+ ) {
}
/**
@@ -71,8 +45,6 @@ public function getSignatureAlgorithmManager(): AlgorithmManager
/**
* Reset the current data.
- *
- * @return JWSBuilder
*/
public function create(): self
{
@@ -85,16 +57,11 @@ public function create(): self
}
/**
- * Set the payload.
- * This method will return a new JWSBuilder object.
- *
- * @throws InvalidArgumentException if the payload is not UTF-8 encoded
- *
- * @return JWSBuilder
+ * Set the payload. This method will return a new JWSBuilder object.
*/
public function withPayload(string $payload, bool $isPayloadDetached = false): self
{
- if (false === mb_detect_encoding($payload, 'UTF-8', true)) {
+ if (mb_detect_encoding($payload, 'UTF-8', true) === false) {
throw new InvalidArgumentException('The payload must be encoded in UTF-8');
}
$clone = clone $this;
@@ -105,18 +72,13 @@ public function withPayload(string $payload, bool $isPayloadDetached = false): s
}
/**
- * Adds the information needed to compute the signature.
- * This method will return a new JWSBuilder object.
- *
- * @throws InvalidArgumentException if the payload encoding is inconsistent
- *
- * @return JWSBuilder
+ * Adds the information needed to compute the signature. This method will return a new JWSBuilder object.
*/
public function addSignature(JWK $signatureKey, array $protectedHeader, array $header = []): self
{
$this->checkB64AndCriticalHeader($protectedHeader);
$isPayloadEncoded = $this->checkIfPayloadIsEncoded($protectedHeader);
- if (null === $this->isPayloadEncoded) {
+ if ($this->isPayloadEncoded === null) {
$this->isPayloadEncoded = $isPayloadEncoded;
} elseif ($this->isPayloadEncoded !== $isPayloadEncoded) {
throw new InvalidArgumentException('Foreign payload encoding detected.');
@@ -138,20 +100,19 @@ public function addSignature(JWK $signatureKey, array $protectedHeader, array $h
/**
* Computes all signatures and return the expected JWS object.
- *
- * @throws RuntimeException if the payload is not set
- * @throws RuntimeException if no signature is defined
*/
public function build(): JWS
{
- if (null === $this->payload) {
+ if ($this->payload === null) {
throw new RuntimeException('The payload is not set.');
}
- if (0 === count($this->signatures)) {
+ if (count($this->signatures) === 0) {
throw new RuntimeException('At least one signature must be set.');
}
- $encodedPayload = false === $this->isPayloadEncoded ? $this->payload : Base64UrlSafe::encodeUnpadded($this->payload);
+ $encodedPayload = $this->isPayloadEncoded === false ? $this->payload : Base64UrlSafe::encodeUnpadded(
+ $this->payload
+ );
$jws = new JWS($this->payload, $encodedPayload, $this->isPayloadDetached);
foreach ($this->signatures as $signature) {
/** @var MacAlgorithm|SignatureAlgorithm $algorithm */
@@ -162,7 +123,9 @@ public function build(): JWS
$protectedHeader = $signature['protected_header'];
/** @var array $header */
$header = $signature['header'];
- $encodedProtectedHeader = 0 === count($protectedHeader) ? null : Base64UrlSafe::encodeUnpadded(JsonConverter::encode($protectedHeader));
+ $encodedProtectedHeader = count($protectedHeader) === 0 ? null : Base64UrlSafe::encodeUnpadded(
+ JsonConverter::encode($protectedHeader)
+ );
$input = sprintf('%s.%s', $encodedProtectedHeader, $encodedPayload);
if ($algorithm instanceof SignatureAlgorithm) {
$s = $algorithm->sign($signatureKey, $input);
@@ -177,59 +140,61 @@ public function build(): JWS
private function checkIfPayloadIsEncoded(array $protectedHeader): bool
{
- return !array_key_exists('b64', $protectedHeader) || true === $protectedHeader['b64'];
+ return ! array_key_exists('b64', $protectedHeader) || $protectedHeader['b64'] === true;
}
- /**
- * @throws LogicException if the header parameter "crit" is missing, invalid or does not contain "b64" when "b64" is set
- */
private function checkB64AndCriticalHeader(array $protectedHeader): void
{
- if (!array_key_exists('b64', $protectedHeader)) {
+ if (! array_key_exists('b64', $protectedHeader)) {
return;
}
- if (!array_key_exists('crit', $protectedHeader)) {
- throw new LogicException('The protected header parameter "crit" is mandatory when protected header parameter "b64" is set.');
+ if (! array_key_exists('crit', $protectedHeader)) {
+ throw new LogicException(
+ 'The protected header parameter "crit" is mandatory when protected header parameter "b64" is set.'
+ );
}
- if (!is_array($protectedHeader['crit'])) {
+ if (! is_array($protectedHeader['crit'])) {
throw new LogicException('The protected header parameter "crit" must be an array.');
}
- if (!in_array('b64', $protectedHeader['crit'], true)) {
- throw new LogicException('The protected header parameter "crit" must contain "b64" when protected header parameter "b64" is set.');
+ if (! in_array('b64', $protectedHeader['crit'], true)) {
+ throw new LogicException(
+ 'The protected header parameter "crit" must contain "b64" when protected header parameter "b64" is set.'
+ );
}
}
/**
- * @throws InvalidArgumentException if the header parameter "alg" is missing or the algorithm is not allowed/not supported
- *
* @return MacAlgorithm|SignatureAlgorithm
*/
private function findSignatureAlgorithm(JWK $key, array $protectedHeader, array $header): Algorithm
{
$completeHeader = array_merge($header, $protectedHeader);
- if (!array_key_exists('alg', $completeHeader)) {
+ if (! array_key_exists('alg', $completeHeader)) {
throw new InvalidArgumentException('No "alg" parameter set in the header.');
}
if ($key->has('alg') && $key->get('alg') !== $completeHeader['alg']) {
- throw new InvalidArgumentException(sprintf('The algorithm "%s" is not allowed with this key.', $completeHeader['alg']));
+ throw new InvalidArgumentException(sprintf(
+ 'The algorithm "%s" is not allowed with this key.',
+ $completeHeader['alg']
+ ));
}
$algorithm = $this->signatureAlgorithmManager->get($completeHeader['alg']);
- if (!$algorithm instanceof SignatureAlgorithm && !$algorithm instanceof MacAlgorithm) {
+ if (! $algorithm instanceof SignatureAlgorithm && ! $algorithm instanceof MacAlgorithm) {
throw new InvalidArgumentException(sprintf('The algorithm "%s" is not supported.', $completeHeader['alg']));
}
return $algorithm;
}
- /**
- * @throws InvalidArgumentException if the header contains duplicated entries
- */
private function checkDuplicatedHeaderParameters(array $header1, array $header2): void
{
$inter = array_intersect_key($header1, $header2);
- if (0 !== count($inter)) {
- throw new InvalidArgumentException(sprintf('The header contains duplicated entries: %s.', implode(', ', array_keys($inter))));
+ if (count($inter) !== 0) {
+ throw new InvalidArgumentException(sprintf(
+ 'The header contains duplicated entries: %s.',
+ implode(', ', array_keys($inter))
+ ));
}
}
}
diff --git a/src/Component/Signature/JWSBuilderFactory.php b/src/Component/Signature/JWSBuilderFactory.php
index dbdf115a..ebcb0c7f 100644
--- a/src/Component/Signature/JWSBuilderFactory.php
+++ b/src/Component/Signature/JWSBuilderFactory.php
@@ -2,29 +2,15 @@
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\Signature;
use Jose\Component\Core\AlgorithmManagerFactory;
class JWSBuilderFactory
{
- /**
- * @var AlgorithmManagerFactory
- */
- private $signatureAlgorithmManagerFactory;
-
- public function __construct(AlgorithmManagerFactory $signatureAlgorithmManagerFactory)
- {
- $this->signatureAlgorithmManagerFactory = $signatureAlgorithmManagerFactory;
+ public function __construct(
+ private AlgorithmManagerFactory $signatureAlgorithmManagerFactory
+ ) {
}
/**
diff --git a/src/Component/Signature/JWSLoader.php b/src/Component/Signature/JWSLoader.php
index f19b449e..0b2d3bdf 100644
--- a/src/Component/Signature/JWSLoader.php
+++ b/src/Component/Signature/JWSLoader.php
@@ -2,15 +2,6 @@
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\Signature;
use Exception;
@@ -22,29 +13,11 @@
class JWSLoader
{
- /**
- * @var JWSVerifier
- */
- private $jwsVerifier;
-
- /**
- * @var null|HeaderCheckerManager
- */
- private $headerCheckerManager;
-
- /**
- * @var JWSSerializerManager
- */
- private $serializerManager;
-
- /**
- * JWSLoader constructor.
- */
- public function __construct(JWSSerializerManager $serializerManager, JWSVerifier $jwsVerifier, ?HeaderCheckerManager $headerCheckerManager)
- {
- $this->serializerManager = $serializerManager;
- $this->jwsVerifier = $jwsVerifier;
- $this->headerCheckerManager = $headerCheckerManager;
+ public function __construct(
+ private JWSSerializerManager $serializerManager,
+ private JWSVerifier $jwsVerifier,
+ private ?HeaderCheckerManager $headerCheckerManager
+ ) {
}
/**
@@ -72,10 +45,8 @@ public function getSerializerManager(): JWSSerializerManager
}
/**
- * This method will try to load and verify the token using the given key.
- * It returns a JWS and will populate the $signature variable in case of success, otherwise an exception is thrown.
- *
- * @throws Exception if the token cannot be loaded or verified
+ * This method will try to load and verify the token using the given key. It returns a JWS and will populate the
+ * $signature variable in case of success, otherwise an exception is thrown.
*/
public function loadAndVerifyWithKey(string $token, JWK $key, ?int &$signature, ?string $payload = null): JWS
{
@@ -85,13 +56,15 @@ public function loadAndVerifyWithKey(string $token, JWK $key, ?int &$signature,
}
/**
- * This method will try to load and verify the token using the given key set.
- * It returns a JWS and will populate the $signature variable in case of success, otherwise an exception is thrown.
- *
- * @throws Exception if the token cannot be loaded or verified
+ * This method will try to load and verify the token using the given key set. It returns a JWS and will populate the
+ * $signature variable in case of success, otherwise an exception is thrown.
*/
- public function loadAndVerifyWithKeySet(string $token, JWKSet $keyset, ?int &$signature, ?string $payload = null): JWS
- {
+ public function loadAndVerifyWithKeySet(
+ string $token,
+ JWKSet $keyset,
+ ?int &$signature,
+ ?string $payload = null
+ ): JWS {
try {
$jws = $this->serializerManager->unserialize($token);
$nbSignatures = $jws->countSignatures();
@@ -102,7 +75,7 @@ public function loadAndVerifyWithKeySet(string $token, JWKSet $keyset, ?int &$si
return $jws;
}
}
- } catch (Throwable $e) {
+ } catch (Throwable) {
// Nothing to do. Exception thrown just after
}
@@ -112,12 +85,12 @@ public function loadAndVerifyWithKeySet(string $token, JWKSet $keyset, ?int &$si
private function processSignature(JWS $jws, JWKSet $keyset, int $signature, ?string $payload): bool
{
try {
- if (null !== $this->headerCheckerManager) {
+ if ($this->headerCheckerManager !== null) {
$this->headerCheckerManager->check($jws, $signature);
}
return $this->jwsVerifier->verifyWithKeySet($jws, $keyset, $signature, $payload);
- } catch (Throwable $e) {
+ } catch (Throwable) {
return false;
}
}
diff --git a/src/Component/Signature/JWSLoaderFactory.php b/src/Component/Signature/JWSLoaderFactory.php
index 8f29650c..589900b9 100644
--- a/src/Component/Signature/JWSLoaderFactory.php
+++ b/src/Component/Signature/JWSLoaderFactory.php
@@ -2,15 +2,6 @@
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\Signature;
use Jose\Component\Checker\HeaderCheckerManagerFactory;
@@ -18,37 +9,22 @@
class JWSLoaderFactory
{
- /**
- * @var JWSVerifierFactory
- */
- private $jwsVerifierFactory;
-
- /**
- * @var JWSSerializerManagerFactory
- */
- private $jwsSerializerManagerFactory;
-
- /**
- * @var null|HeaderCheckerManagerFactory
- */
- private $headerCheckerManagerFactory;
-
- public function __construct(JWSSerializerManagerFactory $jwsSerializerManagerFactory, JWSVerifierFactory $jwsVerifierFactory, ?HeaderCheckerManagerFactory $headerCheckerManagerFactory)
- {
- $this->jwsSerializerManagerFactory = $jwsSerializerManagerFactory;
- $this->jwsVerifierFactory = $jwsVerifierFactory;
- $this->headerCheckerManagerFactory = $headerCheckerManagerFactory;
+ public function __construct(
+ private JWSSerializerManagerFactory $jwsSerializerManagerFactory,
+ private JWSVerifierFactory $jwsVerifierFactory,
+ private ?HeaderCheckerManagerFactory $headerCheckerManagerFactory
+ ) {
}
/**
- * Creates a JWSLoader using the given serializer aliases, signature algorithm aliases and (optionally)
- * the header checker aliases.
+ * Creates a JWSLoader using the given serializer aliases, signature algorithm aliases and (optionally) the header
+ * checker aliases.
*/
public function create(array $serializers, array $algorithms, array $headerCheckers = []): JWSLoader
{
$serializerManager = $this->jwsSerializerManagerFactory->create($serializers);
$jwsVerifier = $this->jwsVerifierFactory->create($algorithms);
- if (null !== $this->headerCheckerManagerFactory) {
+ if ($this->headerCheckerManagerFactory !== null) {
$headerCheckerManager = $this->headerCheckerManagerFactory->create($headerCheckers);
} else {
$headerCheckerManager = null;
diff --git a/src/Component/Signature/JWSTokenSupport.php b/src/Component/Signature/JWSTokenSupport.php
index f2f586f3..83c9b5a7 100644
--- a/src/Component/Signature/JWSTokenSupport.php
+++ b/src/Component/Signature/JWSTokenSupport.php
@@ -2,15 +2,6 @@
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\Signature;
use InvalidArgumentException;
@@ -24,19 +15,20 @@ public function supports(JWT $jwt): bool
return $jwt instanceof JWS;
}
- /**
- * @throws InvalidArgumentException if the signature index does not exist
- */
public function retrieveTokenHeaders(JWT $jwt, int $index, array &$protectedHeader, array &$unprotectedHeader): void
{
- if (!$jwt instanceof JWS) {
+ if (! $jwt instanceof JWS) {
return;
}
if ($index > $jwt->countSignatures()) {
throw new InvalidArgumentException('Unknown signature index.');
}
- $protectedHeader = $jwt->getSignature($index)->getProtectedHeader();
- $unprotectedHeader = $jwt->getSignature($index)->getHeader();
+ $protectedHeader = $jwt->getSignature($index)
+ ->getProtectedHeader()
+ ;
+ $unprotectedHeader = $jwt->getSignature($index)
+ ->getHeader()
+ ;
}
}
diff --git a/src/Component/Signature/JWSVerifier.php b/src/Component/Signature/JWSVerifier.php
index b641a4cc..3d5550e9 100644
--- a/src/Component/Signature/JWSVerifier.php
+++ b/src/Component/Signature/JWSVerifier.php
@@ -2,15 +2,6 @@
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\Signature;
use InvalidArgumentException;
@@ -26,17 +17,9 @@
class JWSVerifier
{
- /**
- * @var AlgorithmManager
- */
- private $signatureAlgorithmManager;
-
- /**
- * JWSVerifier constructor.
- */
- public function __construct(AlgorithmManager $signatureAlgorithmManager)
- {
- $this->signatureAlgorithmManager = $signatureAlgorithmManager;
+ public function __construct(
+ private AlgorithmManager $signatureAlgorithmManager
+ ) {
}
/**
@@ -48,8 +31,8 @@ public function getSignatureAlgorithmManager(): AlgorithmManager
}
/**
- * This method will try to verify the JWS object using the given key and for the given signature.
- * It returns true if the signature is verified, otherwise false.
+ * This method will try to verify the JWS object using the given key and for the given signature. It returns true if
+ * the signature is verified, otherwise false.
*
* @return bool true if the verification of the signature succeeded, else false
*/
@@ -61,25 +44,27 @@ public function verifyWithKey(JWS $jws, JWK $jwk, int $signature, ?string $detac
}
/**
- * This method will try to verify the JWS object using the given key set and for the given signature.
- * It returns true if the signature is verified, otherwise false.
+ * This method will try to verify the JWS object using the given key set and for the given signature. It returns
+ * true if the signature is verified, otherwise false.
*
* @param JWS $jws A JWS object
* @param JWKSet $jwkset The signature will be verified using keys in the key set
* @param JWK $jwk The key used to verify the signature in case of success
- * @param null|string $detachedPayload If not null, the value must be the detached payload encoded in Base64 URL safe. If the input contains a payload, throws an exception.
- *
- * @throws InvalidArgumentException if there is no key in the keyset
- * @throws InvalidArgumentException if the token does not contain any signature
+ * @param string|null $detachedPayload If not null, the value must be the detached payload encoded in Base64 URL safe. If the input contains a payload, throws an exception.
*
* @return bool true if the verification of the signature succeeded, else false
*/
- public function verifyWithKeySet(JWS $jws, JWKSet $jwkset, int $signatureIndex, ?string $detachedPayload = null, JWK &$jwk = null): bool
- {
- if (0 === $jwkset->count()) {
+ public function verifyWithKeySet(
+ JWS $jws,
+ JWKSet $jwkset,
+ int $signatureIndex,
+ ?string $detachedPayload = null,
+ JWK &$jwk = null
+ ): bool {
+ if ($jwkset->count() === 0) {
throw new InvalidArgumentException('There is no key in the key set.');
}
- if (0 === $jws->countSignatures()) {
+ if ($jws->countSignatures() === 0) {
throw new InvalidArgumentException('The JWS does not contain any signature.');
}
$this->checkPayload($jws, $detachedPayload);
@@ -88,20 +73,25 @@ public function verifyWithKeySet(JWS $jws, JWKSet $jwkset, int $signatureIndex,
return $this->verifySignature($jws, $jwkset, $signature, $detachedPayload, $jwk);
}
- private function verifySignature(JWS $jws, JWKSet $jwkset, Signature $signature, ?string $detachedPayload = null, JWK &$successJwk = null): bool
- {
+ private function verifySignature(
+ JWS $jws,
+ JWKSet $jwkset,
+ Signature $signature,
+ ?string $detachedPayload = null,
+ JWK &$successJwk = null
+ ): bool {
$input = $this->getInputToVerify($jws, $signature, $detachedPayload);
$algorithm = $this->getAlgorithm($signature);
foreach ($jwkset->all() as $jwk) {
try {
KeyChecker::checkKeyUsage($jwk, 'verification');
KeyChecker::checkKeyAlgorithm($jwk, $algorithm->name());
- if (true === $algorithm->verify($jwk, $input, $signature->getSignature())) {
+ if ($algorithm->verify($jwk, $input, $signature->getSignature()) === true) {
$successJwk = $jwk;
return true;
}
- } catch (Throwable $e) {
+ } catch (Throwable) {
//We do nothing, we continue with other keys
continue;
}
@@ -115,8 +105,10 @@ private function getInputToVerify(JWS $jws, Signature $signature, ?string $detac
$isPayloadEmpty = $this->isPayloadEmpty($jws->getPayload());
$encodedProtectedHeader = $signature->getEncodedProtectedHeader();
- if (!$signature->hasProtectedHeaderParameter('b64') || true === $signature->getProtectedHeaderParameter('b64')) {
- if (null !== $jws->getEncodedPayload()) {
+ if (! $signature->hasProtectedHeaderParameter('b64') || $signature->getProtectedHeaderParameter(
+ 'b64'
+ ) === true) {
+ if ($jws->getEncodedPayload() !== null) {
return sprintf('%s.%s', $encodedProtectedHeader, $jws->getEncodedPayload());
}
@@ -130,35 +122,33 @@ private function getInputToVerify(JWS $jws, Signature $signature, ?string $detac
return sprintf('%s.%s', $encodedProtectedHeader, $payload);
}
- /**
- * @throws InvalidArgumentException if the payload is set when a detached payload is provided or no payload is defined
- */
private function checkPayload(JWS $jws, ?string $detachedPayload = null): void
{
$isPayloadEmpty = $this->isPayloadEmpty($jws->getPayload());
- if (null !== $detachedPayload && !$isPayloadEmpty) {
+ if ($detachedPayload !== null && ! $isPayloadEmpty) {
throw new InvalidArgumentException('A detached payload is set, but the JWS already has a payload.');
}
- if ($isPayloadEmpty && null === $detachedPayload) {
+ if ($isPayloadEmpty && $detachedPayload === null) {
throw new InvalidArgumentException('The JWS has a detached payload, but no payload is provided.');
}
}
/**
- * @throws InvalidArgumentException if the header parameter "alg" is missing or invalid
- *
* @return MacAlgorithm|SignatureAlgorithm
*/
private function getAlgorithm(Signature $signature): Algorithm
{
$completeHeader = array_merge($signature->getProtectedHeader(), $signature->getHeader());
- if (!isset($completeHeader['alg'])) {
+ if (! isset($completeHeader['alg'])) {
throw new InvalidArgumentException('No "alg" parameter set in the header.');
}
$algorithm = $this->signatureAlgorithmManager->get($completeHeader['alg']);
- if (!$algorithm instanceof SignatureAlgorithm && !$algorithm instanceof MacAlgorithm) {
- throw new InvalidArgumentException(sprintf('The algorithm "%s" is not supported or is not a signature or MAC algorithm.', $completeHeader['alg']));
+ if (! $algorithm instanceof SignatureAlgorithm && ! $algorithm instanceof MacAlgorithm) {
+ throw new InvalidArgumentException(sprintf(
+ 'The algorithm "%s" is not supported or is not a signature or MAC algorithm.',
+ $completeHeader['alg']
+ ));
}
return $algorithm;
@@ -166,6 +156,6 @@ private function getAlgorithm(Signature $signature): Algorithm
private function isPayloadEmpty(?string $payload): bool
{
- return null === $payload || '' === $payload;
+ return $payload === null || $payload === '';
}
}
diff --git a/src/Component/Signature/JWSVerifierFactory.php b/src/Component/Signature/JWSVerifierFactory.php
index 67a65e84..eb79332c 100644
--- a/src/Component/Signature/JWSVerifierFactory.php
+++ b/src/Component/Signature/JWSVerifierFactory.php
@@ -2,29 +2,15 @@
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\Signature;
use Jose\Component\Core\AlgorithmManagerFactory;
class JWSVerifierFactory
{
- /**
- * @var AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
-
- public function __construct(AlgorithmManagerFactory $algorithmManagerFactory)
- {
- $this->algorithmManagerFactory = $algorithmManagerFactory;
+ public function __construct(
+ private AlgorithmManagerFactory $algorithmManagerFactory
+ ) {
}
/**
diff --git a/src/Component/Signature/Serializer/CompactSerializer.php b/src/Component/Signature/Serializer/CompactSerializer.php
index 388e8bf4..ec84b82d 100644
--- a/src/Component/Signature/Serializer/CompactSerializer.php
+++ b/src/Component/Signature/Serializer/CompactSerializer.php
@@ -2,15 +2,6 @@
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\Signature\Serializer;
use function count;
@@ -35,22 +26,20 @@ public function name(): string
return self::NAME;
}
- /**
- * @throws LogicException if the JWS has unprotected header (invalid for compact JSON)
- * @throws LogicException if the payload is not encoded but contains unauthorized characters
- */
public function serialize(JWS $jws, ?int $signatureIndex = null): string
{
- if (null === $signatureIndex) {
+ if ($signatureIndex === null) {
$signatureIndex = 0;
}
$signature = $jws->getSignature($signatureIndex);
- if (0 !== count($signature->getHeader())) {
- throw new LogicException('The signature contains unprotected header parameters and cannot be converted into compact JSON.');
+ if (count($signature->getHeader()) !== 0) {
+ throw new LogicException(
+ 'The signature contains unprotected header parameters and cannot be converted into compact JSON.'
+ );
}
- $isEmptyPayload = null === $jws->getEncodedPayload() || '' === $jws->getEncodedPayload();
- if (!$this->isPayloadEncoded($signature->getProtectedHeader()) && !$isEmptyPayload) {
- if (1 !== preg_match('/^[\x{20}-\x{2d}|\x{2f}-\x{7e}]*$/u', $jws->getPayload())) {
+ $isEmptyPayload = $jws->getEncodedPayload() === null || $jws->getEncodedPayload() === '';
+ if (! $this->isPayloadEncoded($signature->getProtectedHeader()) && ! $isEmptyPayload) {
+ if (preg_match('/^[\x{20}-\x{2d}|\x{2f}-\x{7e}]*$/u', $jws->getPayload()) !== 1) {
throw new LogicException('Unable to convert the JWS with non-encoded payload.');
}
}
@@ -63,30 +52,29 @@ public function serialize(JWS $jws, ?int $signatureIndex = null): string
);
}
- /**
- * @throws InvalidArgumentException if the input is invalid
- */
public function unserialize(string $input): JWS
{
$parts = explode('.', $input);
- if (3 !== count($parts)) {
+ if (count($parts) !== 3) {
throw new InvalidArgumentException('Unsupported input');
}
try {
$encodedProtectedHeader = $parts[0];
$protectedHeader = JsonConverter::decode(Base64UrlSafe::decode($parts[0]));
- $hasPayload = '' !== $parts[1];
- if (!$hasPayload) {
+ $hasPayload = $parts[1] !== '';
+ if (! $hasPayload) {
$payload = null;
$encodedPayload = null;
} else {
$encodedPayload = $parts[1];
- $payload = $this->isPayloadEncoded($protectedHeader) ? Base64UrlSafe::decode($encodedPayload) : $encodedPayload;
+ $payload = $this->isPayloadEncoded($protectedHeader) ? Base64UrlSafe::decode(
+ $encodedPayload
+ ) : $encodedPayload;
}
$signature = Base64UrlSafe::decode($parts[2]);
- $jws = new JWS($payload, $encodedPayload, !$hasPayload);
+ $jws = new JWS($payload, $encodedPayload, ! $hasPayload);
return $jws->addSignature($signature, $protectedHeader, $encodedProtectedHeader);
} catch (Throwable $throwable) {
diff --git a/src/Component/Signature/Serializer/JSONFlattenedSerializer.php b/src/Component/Signature/Serializer/JSONFlattenedSerializer.php
index 9409e874..fc79cb4c 100644
--- a/src/Component/Signature/Serializer/JSONFlattenedSerializer.php
+++ b/src/Component/Signature/Serializer/JSONFlattenedSerializer.php
@@ -2,15 +2,6 @@
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\Signature\Serializer;
use function count;
@@ -36,27 +27,22 @@ public function name(): string
public function serialize(JWS $jws, ?int $signatureIndex = null): string
{
- if (null === $signatureIndex) {
+ if ($signatureIndex === null) {
$signatureIndex = 0;
}
$signature = $jws->getSignature($signatureIndex);
$data = [];
- $values = [
- 'payload' => $jws->getEncodedPayload(),
- 'protected' => $signature->getEncodedProtectedHeader(),
- 'header' => $signature->getHeader(),
- ];
$encodedPayload = $jws->getEncodedPayload();
- if (null !== $encodedPayload && '' !== $encodedPayload) {
+ if ($encodedPayload !== null && $encodedPayload !== '') {
$data['payload'] = $encodedPayload;
}
$encodedProtectedHeader = $signature->getEncodedProtectedHeader();
- if (null !== $encodedProtectedHeader && '' !== $encodedProtectedHeader) {
+ if ($encodedProtectedHeader !== null && $encodedProtectedHeader !== '') {
$data['protected'] = $encodedProtectedHeader;
}
$header = $signature->getHeader();
- if (0 !== count($header)) {
+ if (count($header) !== 0) {
$data['header'] = $header;
}
$data['signature'] = Base64UrlSafe::encodeUnpadded($signature->getSignature());
@@ -64,17 +50,13 @@ public function serialize(JWS $jws, ?int $signatureIndex = null): string
return JsonConverter::encode($data);
}
- /**
- * @throws InvalidArgumentException if the input is not supported
- * @throws InvalidArgumentException if the JWS header is invalid
- */
public function unserialize(string $input): JWS
{
$data = JsonConverter::decode($input);
- if (!is_array($data)) {
+ if (! is_array($data)) {
throw new InvalidArgumentException('Unsupported input.');
}
- if (!isset($data['signature'])) {
+ if (! isset($data['signature'])) {
throw new InvalidArgumentException('Unsupported input.');
}
$signature = Base64UrlSafe::decode($data['signature']);
@@ -87,7 +69,7 @@ public function unserialize(string $input): JWS
$protectedHeader = [];
}
if (isset($data['header'])) {
- if (!is_array($data['header'])) {
+ if (! is_array($data['header'])) {
throw new InvalidArgumentException('Bad header.');
}
$header = $data['header'];
@@ -97,13 +79,15 @@ public function unserialize(string $input): JWS
if (isset($data['payload'])) {
$encodedPayload = $data['payload'];
- $payload = $this->isPayloadEncoded($protectedHeader) ? Base64UrlSafe::decode($encodedPayload) : $encodedPayload;
+ $payload = $this->isPayloadEncoded($protectedHeader) ? Base64UrlSafe::decode(
+ $encodedPayload
+ ) : $encodedPayload;
} else {
$payload = null;
$encodedPayload = null;
}
- $jws = new JWS($payload, $encodedPayload, null === $encodedPayload);
+ $jws = new JWS($payload, $encodedPayload, $encodedPayload === null);
return $jws->addSignature($signature, $protectedHeader, $encodedProtectedHeader, $header);
}
diff --git a/src/Component/Signature/Serializer/JSONGeneralSerializer.php b/src/Component/Signature/Serializer/JSONGeneralSerializer.php
index 8f32051f..11f09bd9 100644
--- a/src/Component/Signature/Serializer/JSONGeneralSerializer.php
+++ b/src/Component/Signature/Serializer/JSONGeneralSerializer.php
@@ -2,15 +2,6 @@
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\Signature\Serializer;
use function array_key_exists;
@@ -37,32 +28,31 @@ public function name(): string
return self::NAME;
}
- /**
- * @throws LogicException if no signature is attached
- */
public function serialize(JWS $jws, ?int $signatureIndex = null): string
{
- if (0 === $jws->countSignatures()) {
+ if ($jws->countSignatures() === 0) {
throw new LogicException('No signature.');
}
$data = [];
$this->checkPayloadEncoding($jws);
- if (false === $jws->isPayloadDetached()) {
+ if ($jws->isPayloadDetached() === false) {
$data['payload'] = $jws->getEncodedPayload();
}
$data['signatures'] = [];
foreach ($jws->getSignatures() as $signature) {
- $tmp = ['signature' => Base64UrlSafe::encodeUnpadded($signature->getSignature())];
+ $tmp = [
+ 'signature' => Base64UrlSafe::encodeUnpadded($signature->getSignature()),
+ ];
$values = [
'protected' => $signature->getEncodedProtectedHeader(),
'header' => $signature->getHeader(),
];
foreach ($values as $key => $value) {
- if ((is_string($value) && '' !== $value) || (is_array($value) && 0 !== count($value))) {
+ if ((is_string($value) && $value !== '') || (is_array($value) && count($value) !== 0)) {
$tmp[$key] = $value;
}
}
@@ -72,13 +62,10 @@ public function serialize(JWS $jws, ?int $signatureIndex = null): string
return JsonConverter::encode($data);
}
- /**
- * @throws InvalidArgumentException if the input is not supported
- */
public function unserialize(string $input): JWS
{
$data = JsonConverter::decode($input);
- if (!isset($data['signatures'])) {
+ if (! isset($data['signatures'])) {
throw new InvalidArgumentException('Unsupported input.');
}
@@ -86,7 +73,7 @@ public function unserialize(string $input): JWS
$rawPayload = $data['payload'] ?? null;
$signatures = [];
foreach ($data['signatures'] as $signature) {
- if (!isset($signature['signature'])) {
+ if (! isset($signature['signature'])) {
throw new InvalidArgumentException('Unsupported input.');
}
[$encodedProtectedHeader, $protectedHeader, $header] = $this->processHeaders($signature);
@@ -113,12 +100,9 @@ public function unserialize(string $input): JWS
return $jws;
}
- /**
- * @throws InvalidArgumentException if the payload encoding is invalid
- */
private function processIsPayloadEncoded(?bool $isPayloadEncoded, array $protectedHeader): bool
{
- if (null === $isPayloadEncoded) {
+ if ($isPayloadEncoded === null) {
return $this->isPayloadEncoded($protectedHeader);
}
if ($this->isPayloadEncoded($protectedHeader) !== $isPayloadEncoded) {
@@ -131,7 +115,9 @@ private function processIsPayloadEncoded(?bool $isPayloadEncoded, array $protect
private function processHeaders(array $signature): array
{
$encodedProtectedHeader = $signature['protected'] ?? null;
- $protectedHeader = null === $encodedProtectedHeader ? [] : JsonConverter::decode(Base64UrlSafe::decode($encodedProtectedHeader));
+ $protectedHeader = $encodedProtectedHeader === null ? [] : JsonConverter::decode(
+ Base64UrlSafe::decode($encodedProtectedHeader)
+ );
$header = array_key_exists('header', $signature) ? $signature['header'] : [];
return [$encodedProtectedHeader, $protectedHeader, $header];
@@ -139,14 +125,13 @@ private function processHeaders(array $signature): array
private function processPayload(?string $rawPayload, ?bool $isPayloadEncoded): ?string
{
- if (null === $rawPayload) {
+ if ($rawPayload === null) {
return null;
}
- return false === $isPayloadEncoded ? $rawPayload : Base64UrlSafe::decode($rawPayload);
+ return $isPayloadEncoded === false ? $rawPayload : Base64UrlSafe::decode($rawPayload);
}
- // @throws LogicException if the payload encoding is invalid
private function checkPayloadEncoding(JWS $jws): void
{
if ($jws->isPayloadDetached()) {
@@ -154,10 +139,10 @@ private function checkPayloadEncoding(JWS $jws): void
}
$is_encoded = null;
foreach ($jws->getSignatures() as $signature) {
- if (null === $is_encoded) {
+ if ($is_encoded === null) {
$is_encoded = $this->isPayloadEncoded($signature->getProtectedHeader());
}
- if (false === $jws->isPayloadDetached()) {
+ if ($jws->isPayloadDetached() === false) {
if ($is_encoded !== $this->isPayloadEncoded($signature->getProtectedHeader())) {
throw new LogicException('Foreign payload encoding detected.');
}
diff --git a/src/Component/Signature/Serializer/JWSSerializer.php b/src/Component/Signature/Serializer/JWSSerializer.php
index c2edd373..d53e84cf 100644
--- a/src/Component/Signature/Serializer/JWSSerializer.php
+++ b/src/Component/Signature/Serializer/JWSSerializer.php
@@ -2,15 +2,6 @@
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\Signature\Serializer;
use Jose\Component\Signature\JWS;
diff --git a/src/Component/Signature/Serializer/JWSSerializerManager.php b/src/Component/Signature/Serializer/JWSSerializerManager.php
index 1d991518..f6ad4707 100644
--- a/src/Component/Signature/Serializer/JWSSerializerManager.php
+++ b/src/Component/Signature/Serializer/JWSSerializerManager.php
@@ -2,15 +2,6 @@
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\Signature\Serializer;
use InvalidArgumentException;
@@ -21,7 +12,7 @@ class JWSSerializerManager
/**
* @var JWSSerializer[]
*/
- private $serializers = [];
+ private array $serializers = [];
/**
* @param JWSSerializer[] $serializers
@@ -43,12 +34,10 @@ public function list(): array
/**
* Converts a JWS into a string.
- *
- * @throws InvalidArgumentException if the serializer is not supported
*/
public function serialize(string $name, JWS $jws, ?int $signatureIndex = null): string
{
- if (!isset($this->serializers[$name])) {
+ if (! isset($this->serializers[$name])) {
throw new InvalidArgumentException(sprintf('Unsupported serializer "%s".', $name));
}
@@ -59,9 +48,7 @@ public function serialize(string $name, JWS $jws, ?int $signatureIndex = null):
* Loads data and return a JWS object.
*
* @param string $input A string that represents a JWS
- * @param null|string $name the name of the serializer if the input is unserialized
- *
- * @throws InvalidArgumentException if the input is not supported
+ * @param string|null $name the name of the serializer if the input is unserialized
*/
public function unserialize(string $input, ?string &$name = null): JWS
{
@@ -71,7 +58,7 @@ public function unserialize(string $input, ?string &$name = null): JWS
$name = $serializer->name();
return $jws;
- } catch (InvalidArgumentException $e) {
+ } catch (InvalidArgumentException) {
continue;
}
}
diff --git a/src/Component/Signature/Serializer/JWSSerializerManagerFactory.php b/src/Component/Signature/Serializer/JWSSerializerManagerFactory.php
index 7e346eed..51322640 100644
--- a/src/Component/Signature/Serializer/JWSSerializerManagerFactory.php
+++ b/src/Component/Signature/Serializer/JWSSerializerManagerFactory.php
@@ -2,15 +2,6 @@
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\Signature\Serializer;
use InvalidArgumentException;
@@ -24,14 +15,12 @@ class JWSSerializerManagerFactory
/**
* @param string[] $names
- *
- * @throws InvalidArgumentException if the serializer is not supported
*/
public function create(array $names): JWSSerializerManager
{
$serializers = [];
foreach ($names as $name) {
- if (!isset($this->serializers[$name])) {
+ if (! isset($this->serializers[$name])) {
throw new InvalidArgumentException(sprintf('Unsupported serializer "%s".', $name));
}
$serializers[] = $this->serializers[$name];
diff --git a/src/Component/Signature/Serializer/Serializer.php b/src/Component/Signature/Serializer/Serializer.php
index 48a11477..05b35587 100644
--- a/src/Component/Signature/Serializer/Serializer.php
+++ b/src/Component/Signature/Serializer/Serializer.php
@@ -2,15 +2,6 @@
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\Signature\Serializer;
use function array_key_exists;
@@ -19,6 +10,6 @@ abstract class Serializer implements JWSSerializer
{
protected function isPayloadEncoded(array $protectedHeader): bool
{
- return !array_key_exists('b64', $protectedHeader) || true === $protectedHeader['b64'];
+ return ! array_key_exists('b64', $protectedHeader) || $protectedHeader['b64'] === true;
}
}
diff --git a/src/Component/Signature/Signature.php b/src/Component/Signature/Signature.php
index fa0006d0..325f1424 100644
--- a/src/Component/Signature/Signature.php
+++ b/src/Component/Signature/Signature.php
@@ -2,15 +2,6 @@
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\Signature;
use function array_key_exists;
@@ -18,10 +9,7 @@
class Signature
{
- /**
- * @var null|string
- */
- private $encodedProtectedHeader;
+ private ?string $encodedProtectedHeader;
/**
* @var array
@@ -33,16 +21,14 @@ class Signature
*/
private $header;
- /**
- * @var string
- */
- private $signature;
-
- public function __construct(string $signature, array $protectedHeader, ?string $encodedProtectedHeader, array $header)
- {
- $this->protectedHeader = null === $encodedProtectedHeader ? [] : $protectedHeader;
+ public function __construct(
+ private string $signature,
+ array $protectedHeader,
+ ?string $encodedProtectedHeader,
+ array $header
+ ) {
+ $this->protectedHeader = $encodedProtectedHeader === null ? [] : $protectedHeader;
$this->encodedProtectedHeader = $encodedProtectedHeader;
- $this->signature = $signature;
$this->header = $header;
}
@@ -75,9 +61,7 @@ public function getEncodedProtectedHeader(): ?string
*
* @param string $key The key
*
- * @throws InvalidArgumentException if the header parameter does not exist
- *
- * @return null|mixed Header value
+ * @return mixed|null Header value
*/
public function getProtectedHeaderParameter(string $key)
{
@@ -103,7 +87,7 @@ public function hasProtectedHeaderParameter(string $key): bool
*
* @param string $key The key
*
- * @return null|mixed Header value
+ * @return mixed|null Header value
*/
public function getHeaderParameter(string $key)
{
diff --git a/src/Easy/.github/CONTRIBUTING.md b/src/Easy/.github/CONTRIBUTING.md
deleted file mode 100644
index fc360e5d..00000000
--- a/src/Easy/.github/CONTRIBUTING.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Contributing
-
-This repository is a sub repository of [the JWT Framework](https://github.com/web-token/jwt-framework) project and is READ ONLY.
-Please do not submit any Pull Requests here. It will be automatically closed.
diff --git a/src/Easy/.github/FUNDING.yml b/src/Easy/.github/FUNDING.yml
deleted file mode 100644
index 7e2ca0e7..00000000
--- a/src/Easy/.github/FUNDING.yml
+++ /dev/null
@@ -1 +0,0 @@
-patreon: FlorentMorselli
diff --git a/src/Easy/.github/PULL_REQUEST_TEMPLATE.md b/src/Easy/.github/PULL_REQUEST_TEMPLATE.md
deleted file mode 100644
index d4ff96cb..00000000
--- a/src/Easy/.github/PULL_REQUEST_TEMPLATE.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Please do not submit any Pull Requests here. It will be automatically closed.
-
-You should submit it here: https://github.com/web-token/jwt-framework/pulls
diff --git a/src/Easy/AbstractBuilder.php b/src/Easy/AbstractBuilder.php
deleted file mode 100644
index 94d962af..00000000
--- a/src/Easy/AbstractBuilder.php
+++ /dev/null
@@ -1,160 +0,0 @@
-jwt = new JWT();
- $this->algorithms = (new AlgorithmProvider($this->getAlgorithmMap()))
- ->getAvailableAlgorithms()
- ;
- }
-
- public function payload(array $payload): self
- {
- $clone = clone $this;
- $clone->jwt->claims->replace($payload);
-
- return $clone;
- }
-
- public function iss(string $iss, bool $inHeader = false): self
- {
- return $this->claim('iss', $iss, $inHeader);
- }
-
- public function sub(string $sub, bool $inHeader = false): self
- {
- return $this->claim('sub', $sub, $inHeader);
- }
-
- public function aud(string $aud, bool $inHeader = false): self
- {
- $audience = $this->jwt->claims->has('aud') ? $this->jwt->claims->get('aud') : [];
- $audience[] = $aud;
-
- return $this->claim('aud', $audience, $inHeader);
- }
-
- public function jti(string $jti, bool $inHeader = false): self
- {
- return $this->claim('jti', $jti, $inHeader);
- }
-
- public function exp(int $exp, bool $inHeader = false): self
- {
- return $this->claim('exp', $exp, $inHeader);
- }
-
- public function iat(?int $iat = null, bool $inHeader = false): self
- {
- $iat = $iat ?? time();
-
- return $this->claim('iat', $iat, $inHeader);
- }
-
- public function nbf(?int $nbf = null, bool $inHeader = false): self
- {
- $nbf = $nbf ?? time();
-
- return $this->claim('nbf', $nbf, $inHeader);
- }
-
- /**
- * @param Algorithm\SignatureAlgorithm|string $alg
- *
- * @throws InvalidArgumentException if the algorithm is not a string or an instance of Jose\Component\Core\Algorithm
- */
- public function alg($alg): self
- {
- $clone = clone $this;
-
- switch (true) {
- case $alg instanceof JoseAlgorithm:
- $clone->algorithms[] = $alg;
- $clone->jwt->header->set('alg', $alg->name());
-
- break;
-
- case is_string($alg):
- $clone->jwt->header->set('alg', $alg);
-
- break;
-
- default:
- throw new InvalidArgumentException('Invalid parameter "alg". Shall be a string or an algorithm instance.');
- }
-
- return $clone;
- }
-
- public function cty(string $cty): self
- {
- return $this->header('cty', $cty);
- }
-
- public function typ(string $typ): self
- {
- return $this->header('typ', $typ);
- }
-
- public function crit(array $crit): self
- {
- return $this->header('crit', $crit);
- }
-
- /**
- * @param mixed $value
- */
- public function claim(string $key, $value, bool $inHeader = false): self
- {
- $clone = clone $this;
- $clone->jwt->claims->set($key, $value);
- if ($inHeader) {
- $clone->jwt->header->set($key, $value);
- }
-
- return $clone;
- }
-
- /**
- * @param mixed $value
- */
- public function header(string $key, $value): self
- {
- $clone = clone $this;
- $clone->jwt->header->set($key, $value);
-
- return $clone;
- }
-
- abstract protected function getAlgorithmMap(): array;
-}
diff --git a/src/Easy/AbstractLoader.php b/src/Easy/AbstractLoader.php
deleted file mode 100644
index 7e041c05..00000000
--- a/src/Easy/AbstractLoader.php
+++ /dev/null
@@ -1,296 +0,0 @@
-token = $token;
- $this->jwkset = new JWKSet([]);
- $this->claimCheckers = [];
-
- $this->algorithms = (new AlgorithmProvider($this->getAlgorithmMap()))
- ->getAvailableAlgorithms()
- ;
- }
-
- /**
- * @param string[] $mandatoryClaims
- */
- public function mandatory(array $mandatoryClaims): self
- {
- $clone = clone $this;
- $clone->mandatoryClaims = $mandatoryClaims;
-
- return $clone;
- }
-
- public function aud(string $aud, bool $inHeader = false): self
- {
- return $this->claim('aud', new Checker\AudienceChecker($aud, true), $inHeader);
- }
-
- public function iss(string $iss, bool $inHeader = false): self
- {
- return $this->claim('iss', new Checker\IssuerChecker([$iss], true), $inHeader);
- }
-
- public function jti(string $jti, bool $inHeader = false): self
- {
- return $this->claim('jti', $jti, $inHeader);
- }
-
- public function sub(string $sub, bool $inHeader = false): self
- {
- return $this->claim('sub', $sub, $inHeader);
- }
-
- /**
- * @param null|array|callable|Checker\ClaimChecker|mixed $checker
- */
- public function claim(string $key, $checker, bool $inHeader = false): self
- {
- $clone = clone $this;
- if (false === $checker) {
- unset($clone->claimCheckers[$key]);
-
- return $clone;
- }
-
- switch (true) {
- case $checker instanceof Checker\ClaimChecker:
- break;
-
- case is_callable($checker):
- $checker = new CallableChecker($key, $checker);
-
- break;
-
- case is_array($checker):
- $checker = new CallableChecker($key, static function ($value) use ($checker): bool {return in_array($value, $checker, true); });
-
- break;
-
- default:
- $checker = new CallableChecker($key, static function ($value) use ($checker): bool {return $value === $checker; });
- }
-
- $clone->claimCheckers[$key] = $checker;
- if ($inHeader) {
- return $clone->header($key, $checker);
- }
-
- return $clone;
- }
-
- /**
- * @param false|int $leeway
- *
- * @throws InvalidArgumentException if the leeway is negative, not an integer or not false
- */
- public function exp($leeway = 0, bool $inHeader = false): self
- {
- if (false === $leeway) {
- $clone = clone $this;
- unset($clone->claimCheckers['exp']);
-
- return $clone;
- }
- if (!is_int($leeway) or $leeway < 0) {
- throw new InvalidArgumentException('First parameter for "exp" claim is invalid. Set false to disable or a positive integer.');
- }
-
- return $this->claim('exp', new Checker\ExpirationTimeChecker($leeway), $inHeader);
- }
-
- /**
- * @param false|int $leeway
- *
- * @throws InvalidArgumentException if the leeway is negative, not an integer or not false
- */
- public function nbf($leeway = 0, bool $inHeader = false): self
- {
- if (false === $leeway) {
- $clone = clone $this;
- unset($clone->claimCheckers['nbf']);
-
- return $clone;
- }
- if (!is_int($leeway) or $leeway < 0) {
- throw new InvalidArgumentException('First parameter for "nbf" claim is invalid. Set false to disable or a positive integer.');
- }
-
- return $this->claim('nbf', new Checker\NotBeforeChecker($leeway, true), $inHeader);
- }
-
- /**
- * @param false|int $leeway
- *
- * @throws InvalidArgumentException if the leeway is negative, not an integer or not false
- */
- public function iat($leeway = 0, bool $inHeader = false): self
- {
- if (false === $leeway) {
- $clone = clone $this;
- unset($clone->claimCheckers['iat']);
-
- return $clone;
- }
- if (!is_int($leeway) or $leeway < 0) {
- throw new InvalidArgumentException('First parameter for "iat" claim is invalid. Set false to disable or a positive integer.');
- }
-
- return $this->claim('iat', new Checker\IssuedAtChecker($leeway, true), $inHeader);
- }
-
- /**
- * @param Algorithm|string $alg
- *
- * @throws InvalidArgumentException if the algorithm is not a string or an instance of Jose\Component\Core\Algorithm
- */
- public function alg($alg): self
- {
- $clone = clone $this;
-
- switch (true) {
- case is_string($alg):
- $clone->allowedAlgorithms[] = $alg;
-
- return $clone;
-
- case $alg instanceof Algorithm:
- $clone->algorithms[$alg->name()] = $alg;
- $clone->allowedAlgorithms[] = $alg->name();
-
- return $clone;
-
- default:
- throw new InvalidArgumentException('Invalid parameter "alg". Shall be a string or an algorithm instance.');
- }
- }
-
- /**
- * @param Algorithm[]|string[] $algs
- */
- public function algs($algs): self
- {
- $clone = clone $this;
- foreach ($algs as $alg) {
- $clone = $clone->alg($alg);
- }
-
- return $clone;
- }
-
- /**
- * @param array|callable|Checker\HeaderChecker|false|mixed $checker
- */
- public function header(string $key, $checker): self
- {
- $clone = clone $this;
- if (false === $checker) {
- unset($clone->headerCheckers[$key]);
-
- return $clone;
- }
-
- switch (true) {
- case $checker instanceof Checker\HeaderChecker:
- break;
-
- case is_callable($checker):
- $checker = new CallableChecker($key, $checker);
-
- break;
-
- case is_array($checker):
- $checker = new CallableChecker($key, static function ($value) use ($checker): bool {return in_array($value, $checker, true); });
-
- break;
-
- default:
- $checker = new CallableChecker($key, static function ($value) use ($checker): bool {return $value === $checker; });
- }
-
- $clone->headerCheckers[$key] = $checker;
-
- return $clone;
- }
-
- public function key(JWK $jwk): self
- {
- $clone = clone $this;
- $jwkset = $this->jwkset->with($jwk);
- $clone->jwkset = $jwkset;
-
- return $clone;
- }
-
- public function keyset(JWKSet $jwkset): self
- {
- $clone = clone $this;
- $clone->jwkset = $jwkset;
-
- return $clone;
- }
-
- abstract protected function getAlgorithmMap(): array;
-}
diff --git a/src/Easy/AlgorithmProvider.php b/src/Easy/AlgorithmProvider.php
deleted file mode 100644
index 3509a7eb..00000000
--- a/src/Easy/AlgorithmProvider.php
+++ /dev/null
@@ -1,59 +0,0 @@
-algorithmClasses = $algorithmClasses;
- foreach ($algorithmClasses as $algorithmClass) {
- $this->addClass($algorithmClass);
- }
- }
-
- public function getAlgorithmClasses(): array
- {
- return $this->algorithmClasses;
- }
-
- public function getAvailableAlgorithms(): array
- {
- return $this->algorithms;
- }
-
- private function addClass(string $algorithmClass): void
- {
- if (class_exists($algorithmClass)) {
- try {
- $this->algorithms[] = new $algorithmClass();
- } catch (Throwable $throwable) {
- //does nothing
- }
- }
- }
-}
diff --git a/src/Easy/Build.php b/src/Easy/Build.php
deleted file mode 100644
index c5971d73..00000000
--- a/src/Easy/Build.php
+++ /dev/null
@@ -1,27 +0,0 @@
-key = $key;
- $this->callable = $callable;
- }
-
- /**
- * @param mixed $value
- *
- * @throws InvalidClaimException if the claim is invalid
- */
- public function checkClaim($value): void
- {
- $callable = $this->callable;
- $isValid = $callable($value);
- if (!$isValid) {
- throw new InvalidClaimException(sprintf('Invalid claim "%s"', $this->key), $this->key, $value);
- }
- }
-
- public function supportedClaim(): string
- {
- return $this->key;
- }
-
- /**
- * {@inheritdoc}
- */
- public function checkHeader($value): void
- {
- $callable = $this->callable;
- $isValid = $callable($value);
- if (!$isValid) {
- throw new InvalidHeaderException(sprintf('Invalid header "%s"', $this->key), $this->key, $value);
- }
- }
-
- public function supportedHeader(): string
- {
- return $this->key;
- }
-
- public function protectedHeaderOnly(): bool
- {
- return true;
- }
-}
diff --git a/src/Easy/ContentEncryptionAlgorithmChecker.php b/src/Easy/ContentEncryptionAlgorithmChecker.php
deleted file mode 100644
index c7606cf5..00000000
--- a/src/Easy/ContentEncryptionAlgorithmChecker.php
+++ /dev/null
@@ -1,72 +0,0 @@
-supportedAlgorithms = $supportedAlgorithms;
- $this->protectedHeader = $protectedHeader;
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws InvalidHeaderException if the header is invalid
- */
- public function checkHeader($value): void
- {
- if (!is_string($value)) {
- throw new InvalidHeaderException('"enc" must be a string.', self::HEADER_NAME, $value);
- }
- if (!in_array($value, $this->supportedAlgorithms, true)) {
- throw new InvalidHeaderException('Unsupported algorithm.', self::HEADER_NAME, $value);
- }
- }
-
- public function supportedHeader(): string
- {
- return self::HEADER_NAME;
- }
-
- public function protectedHeaderOnly(): bool
- {
- return $this->protectedHeader;
- }
-}
diff --git a/src/Easy/Decrypt.php b/src/Easy/Decrypt.php
deleted file mode 100644
index 9c03de93..00000000
--- a/src/Easy/Decrypt.php
+++ /dev/null
@@ -1,152 +0,0 @@
-compressionMethods = [
- new Deflate(),
- ];
- }
-
- public static function token(string $token): self
- {
- return new self($token);
- }
-
- /**
- * @param Algorithm|string $enc
- *
- * @throws InvalidArgumentException if the encryption algorithm is invalid
- */
- public function enc($enc): self
- {
- $clone = clone $this;
-
- switch (true) {
- case is_string($enc):
- $clone->allowedContentEncryptionAlgorithms[] = $enc;
-
- return $clone;
-
- case $enc instanceof Algorithm:
- $clone->algorithms[$enc->name()] = $enc;
- $clone->allowedContentEncryptionAlgorithms[] = $enc->name();
-
- return $clone;
-
- default:
- throw new InvalidArgumentException('Invalid parameter "enc". Shall be a string or an algorithm instance.');
- }
- }
-
- /**
- * @param Algorithm[]|string[] $encs
- */
- public function encs($encs): self
- {
- $clone = clone $this;
- foreach ($encs as $enc) {
- $clone = $clone->enc($enc);
- }
-
- return $clone;
- }
-
- public function run(): JWT
- {
- if (0 !== count($this->allowedAlgorithms)) {
- $this->headerCheckers[] = new Checker\AlgorithmChecker($this->allowedAlgorithms, true);
- }
- if (0 !== count($this->allowedContentEncryptionAlgorithms)) {
- $this->headerCheckers[] = new ContentEncryptionAlgorithmChecker($this->allowedContentEncryptionAlgorithms, true);
- }
- $jwe = (new CompactSerializer())->unserialize($this->token);
- $headerChecker = new Checker\HeaderCheckerManager($this->headerCheckers, [new JWETokenSupport()]);
- $headerChecker->check($jwe, 0);
-
- $verifier = new JWEDecrypter(
- new AlgorithmManager($this->algorithms),
- new AlgorithmManager($this->algorithms),
- new CompressionMethodManager($this->compressionMethods)
- );
- $verifier->decryptUsingKeySet($jwe, $this->jwkset, 0);
-
- $jwt = new JWT();
- $jwt->header->replace($jwe->getSharedProtectedHeader());
- $jwt->claims->replace(JsonConverter::decode($jwe->getPayload()));
-
- $claimChecker = new Checker\ClaimCheckerManager($this->claimCheckers);
- $claimChecker->check($jwt->claims->all(), $this->mandatoryClaims);
-
- return $jwt;
- }
-
- protected function getAlgorithmMap(): array
- {
- return [
- KeyEncryption\A128GCMKW::class,
- KeyEncryption\A192GCMKW::class,
- KeyEncryption\A256GCMKW::class,
- KeyEncryption\A128KW::class,
- KeyEncryption\A192KW::class,
- KeyEncryption\A256KW::class,
- KeyEncryption\Dir::class,
- KeyEncryption\ECDHES::class,
- KeyEncryption\ECDHESA128KW::class,
- KeyEncryption\ECDHESA192KW::class,
- KeyEncryption\ECDHESA256KW::class,
- KeyEncryption\PBES2HS256A128KW::class,
- KeyEncryption\PBES2HS384A192KW::class,
- KeyEncryption\PBES2HS512A256KW::class,
- KeyEncryption\RSA15::class,
- KeyEncryption\RSAOAEP::class,
- KeyEncryption\RSAOAEP256::class,
- ContentEncryption\A128GCM::class,
- ContentEncryption\A192GCM::class,
- ContentEncryption\A256GCM::class,
- ContentEncryption\A128CBCHS256::class,
- ContentEncryption\A192CBCHS384::class,
- ContentEncryption\A256CBCHS512::class,
- ];
- }
-}
diff --git a/src/Easy/JWEBuilder.php b/src/Easy/JWEBuilder.php
deleted file mode 100644
index ca4554c8..00000000
--- a/src/Easy/JWEBuilder.php
+++ /dev/null
@@ -1,147 +0,0 @@
-compressionMethods = [
- new Deflate(),
- ];
- }
-
- /**
- * @param Algorithm|string $enc
- *
- * @throws InvalidArgumentException if the header parameter "enc" is invalid
- */
- public function enc($enc): self
- {
- $clone = clone $this;
-
- switch (true) {
- case $enc instanceof Algorithm:
- $clone->algorithms[] = $enc;
- $clone->jwt->header->set('enc', $enc->name());
-
- break;
-
- case is_string($enc):
- $clone->jwt->header->set('enc', $enc);
-
- break;
-
- default:
- throw new InvalidArgumentException('Invalid algorithm');
- }
-
- return $clone;
- }
-
- /**
- * @param CompressionMethod|string $zip
- *
- * @throws InvalidArgumentException if the header parameter "zip" is invalid
- */
- public function zip($zip): self
- {
- $clone = clone $this;
-
- switch (true) {
- case $zip instanceof CompressionMethod:
- $clone->compressionMethods[] = $zip;
- $clone->jwt->header->set('zip', $zip->name());
-
- break;
-
- case is_string($zip):
- $clone->jwt->header->set('zip', $zip);
-
- break;
-
- default:
- throw new InvalidArgumentException('Invalid compression method');
- }
-
- return $clone;
- }
-
- public function encrypt(JWK $jwk): string
- {
- $builder = new JoseBuilder(
- new AlgorithmManager($this->algorithms),
- new AlgorithmManager($this->algorithms),
- new CompressionMethodManager($this->compressionMethods)
- );
- $jwe = $builder
- ->create()
- ->withPayload(JsonConverter::encode($this->jwt->claims->all()))
- ->withSharedProtectedHeader($this->jwt->header->all())
- ->addRecipient($jwk)
- ->build()
- ;
-
- return (new CompactSerializer())->serialize($jwe);
- }
-
- protected function getAlgorithmMap(): array
- {
- return [
- KeyEncryption\A128GCMKW::class,
- KeyEncryption\A192GCMKW::class,
- KeyEncryption\A256GCMKW::class,
- KeyEncryption\A128KW::class,
- KeyEncryption\A192KW::class,
- KeyEncryption\A256KW::class,
- KeyEncryption\Dir::class,
- KeyEncryption\ECDHES::class,
- KeyEncryption\ECDHESA128KW::class,
- KeyEncryption\ECDHESA192KW::class,
- KeyEncryption\ECDHESA256KW::class,
- KeyEncryption\PBES2HS256A128KW::class,
- KeyEncryption\PBES2HS384A192KW::class,
- KeyEncryption\PBES2HS512A256KW::class,
- KeyEncryption\RSA15::class,
- KeyEncryption\RSAOAEP::class,
- KeyEncryption\RSAOAEP256::class,
- ContentEncryption\A128GCM::class,
- ContentEncryption\A192GCM::class,
- ContentEncryption\A256GCM::class,
- ContentEncryption\A128CBCHS256::class,
- ContentEncryption\A192CBCHS384::class,
- ContentEncryption\A256CBCHS512::class,
- ];
- }
-}
diff --git a/src/Easy/JWSBuilder.php b/src/Easy/JWSBuilder.php
deleted file mode 100644
index 4f5c2f15..00000000
--- a/src/Easy/JWSBuilder.php
+++ /dev/null
@@ -1,56 +0,0 @@
-algorithms));
- $jws = $builder
- ->create()
- ->withPayload(JsonConverter::encode($this->jwt->claims->all()))
- ->addSignature($jwk, $this->jwt->header->all())
- ->build()
- ;
-
- return (new CompactSerializer())->serialize($jws);
- }
-
- protected function getAlgorithmMap(): array
- {
- return [
- Algorithm\HS256::class,
- Algorithm\HS384::class,
- Algorithm\HS512::class,
- Algorithm\RS256::class,
- Algorithm\RS384::class,
- Algorithm\RS512::class,
- Algorithm\PS256::class,
- Algorithm\PS384::class,
- Algorithm\PS512::class,
- Algorithm\ES256::class,
- Algorithm\ES384::class,
- Algorithm\ES512::class,
- Algorithm\EdDSA::class,
- ];
- }
-}
diff --git a/src/Easy/JWT.php b/src/Easy/JWT.php
deleted file mode 100644
index c5f92355..00000000
--- a/src/Easy/JWT.php
+++ /dev/null
@@ -1,33 +0,0 @@
-claims = new ParameterBag();
- $this->header = new ParameterBag();
- }
-}
diff --git a/src/Easy/LICENSE b/src/Easy/LICENSE
deleted file mode 100644
index 37cf976b..00000000
--- a/src/Easy/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2019 Spomky-Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/src/Easy/Load.php b/src/Easy/Load.php
deleted file mode 100644
index 5245ef6b..00000000
--- a/src/Easy/Load.php
+++ /dev/null
@@ -1,27 +0,0 @@
-get($name);
- }
- array_unshift($arguments, $name);
-
- return call_user_func_array([$this, 'set'], $arguments);
- }
-
- public function all(): array
- {
- return $this->parameters;
- }
-
- public function keys(): array
- {
- return array_keys($this->parameters);
- }
-
- public function replace(array $parameters): void
- {
- $this->parameters = $parameters;
- }
-
- /**
- * @throws InvalidArgumentException if the parameters are invalid
- */
- public function add(array $parameters): void
- {
- /** @var null|array $replaced */
- $replaced = array_replace($this->parameters, $parameters);
- if (null === $replaced) {
- throw new InvalidArgumentException('Invalid parameters');
- }
- $this->parameters = $replaced;
- }
-
- /**
- * @throws InvalidArgumentException if the selected parameter is missing
- *
- * @return mixed
- */
- public function get(string $key)
- {
- if (!array_key_exists($key, $this->parameters)) {
- throw new InvalidArgumentException(sprintf('Parameter "%s" is missing', $key));
- }
-
- return $this->parameters[$key];
- }
-
- /**
- * @param mixed $value The value
- */
- public function set(string $key, $value): void
- {
- $this->parameters[$key] = $value;
- }
-
- public function has(string $key): bool
- {
- return array_key_exists($key, $this->parameters);
- }
-
- public function remove(string $key): void
- {
- unset($this->parameters[$key]);
- }
-
- public function getIterator(): ArrayIterator
- {
- return new ArrayIterator($this->parameters);
- }
-
- public function count(): int
- {
- return count($this->parameters);
- }
-}
diff --git a/src/Easy/README.md b/src/Easy/README.md
deleted file mode 100644
index dc2ff743..00000000
--- a/src/Easy/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Easy Toolset For JWT-Framework
-===============================
-
-This repository is a sub repository of [the JWT Framework](https://github.com/web-token/jwt-framework) project and is READ ONLY.
-
-**Please do not submit any Pull Request here.**
-You should go to [the main repository](https://github.com/web-token/jwt-framework) instead.
-
-# Documentation
-
-The official documentation is available as https://web-token.spomky-labs.com/
-
-# Licence
-
-This software is release under [MIT licence](LICENSE).
diff --git a/src/Easy/Validate.php b/src/Easy/Validate.php
deleted file mode 100644
index 0b3736a8..00000000
--- a/src/Easy/Validate.php
+++ /dev/null
@@ -1,75 +0,0 @@
-allowedAlgorithms)) {
- $this->headerCheckers[] = new Checker\AlgorithmChecker($this->allowedAlgorithms, true);
- }
- $jws = (new CompactSerializer())->unserialize($this->token);
- $headerChecker = new Checker\HeaderCheckerManager($this->headerCheckers, [new JWSTokenSupport()]);
- $headerChecker->check($jws, 0);
-
- $verifier = new JWSVerifier(new AlgorithmManager($this->algorithms));
- if (!$verifier->verifyWithKeySet($jws, $this->jwkset, 0)) {
- throw new Exception('Invalid signature');
- }
-
- $jwt = new JWT();
- $jwt->header->replace($jws->getSignature(0)->getProtectedHeader());
- $jwt->claims->replace(JsonConverter::decode($jws->getPayload()));
-
- $claimChecker = new Checker\ClaimCheckerManager($this->claimCheckers);
- $claimChecker->check($jwt->claims->all(), $this->mandatoryClaims);
-
- return $jwt;
- }
-
- protected function getAlgorithmMap(): array
- {
- return [
- Algorithm\HS256::class,
- Algorithm\HS384::class,
- Algorithm\HS512::class,
- Algorithm\RS256::class,
- Algorithm\RS384::class,
- Algorithm\RS512::class,
- Algorithm\PS256::class,
- Algorithm\PS384::class,
- Algorithm\PS512::class,
- Algorithm\ES256::class,
- Algorithm\ES384::class,
- Algorithm\ES512::class,
- Algorithm\EdDSA::class,
- ];
- }
-}
diff --git a/src/Easy/composer.json b/src/Easy/composer.json
deleted file mode 100644
index bdc44fb7..00000000
--- a/src/Easy/composer.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "web-token/jwt-easy",
- "description": "Easy toolset to use the JWT Framework.",
- "type": "library",
- "license": "MIT",
- "keywords": ["JWS", "JWT", "JWE", "JWA", "JWK", "JWKSet", "Jot", "Jose", "RFC7515", "RFC7516", "RFC7517", "RFC7518", "RFC7519", "RFC7520", "Bundle", "Symfony"],
- "homepage": "https://github.com/web-token",
- "authors": [
- {
- "name": "Florent Morselli",
- "homepage": "https://github.com/Spomky"
- },{
- "name": "All contributors",
- "homepage": "https://github.com/web-token/jwt-framework/contributors"
- }
- ],
- "autoload": {
- "psr-4": {
- "Jose\\Easy\\": ""
- }
- },
- "require": {
- "web-token/jwt-encryption": "^2.1",
- "web-token/jwt-signature": "^2.1",
- "web-token/jwt-checker": "^2.1"
- },
- "suggest": {
- "web-token/jwt-encryption-algorithm-aescbc": "Adds AES-CBC based encryption algorithms",
- "web-token/jwt-encryption-algorithm-aesgcm": "Adds AES-GCM based encryption algorithms",
- "web-token/jwt-encryption-algorithm-aesgcmkw": "Adds AES-GCM Key Wrapping based encryption algorithms",
- "web-token/jwt-encryption-algorithm-aeskw": "Adds AES Key Wrapping based encryption algorithms",
- "web-token/jwt-encryption-algorithm-dir": "Adds Direct encryption algorithm",
- "web-token/jwt-encryption-algorithm-ecdh-es": "Adds ECDH-ES based encryption algorithms",
- "web-token/jwt-encryption-algorithm-pbes2": "Adds PBES2 based encryption algorithms",
- "web-token/jwt-encryption-algorithm-rsa": "Adds RSA based encryption algorithms",
- "web-token/jwt-signature-algorithm-ecdsa": "Adds ECDSA based signature algorithms",
- "web-token/jwt-signature-algorithm-eddsa": "Adds EdDSA based signature algorithms",
- "web-token/jwt-signature-algorithm-none": "Adds none signature algorithms",
- "web-token/jwt-signature-algorithm-hmac": "Adds HMAC based signature algorithms",
- "web-token/jwt-signature-algorithm-rsa": "Adds RSA based signature algorithms"
- }
-}
diff --git a/src/Ecc/Curve.php b/src/Ecc/Curve.php
index 1df9aee1..7e2a9942 100644
--- a/src/Ecc/Curve.php
+++ b/src/Ecc/Curve.php
@@ -2,67 +2,32 @@
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\Core\Util\Ecc;
use Brick\Math\BigInteger;
-use function is_null;
use RuntimeException;
+use const STR_PAD_LEFT;
+use Stringable;
/**
* @internal
*/
-class Curve
+final class Curve implements Stringable
{
- /**
- * Elliptic curve over the field of integers modulo a prime.
- *
- * @var BigInteger
- */
- private $a;
-
- /**
- * @var BigInteger
- */
- private $b;
-
- /**
- * @var BigInteger
- */
- private $prime;
-
- /**
- * Binary length of keys associated with these curve parameters.
- *
- * @var int
- */
- private $size;
-
- /**
- * @var Point
- */
- private $generator;
-
- public function __construct(int $size, BigInteger $prime, BigInteger $a, BigInteger $b, Point $generator)
- {
- $this->size = $size;
- $this->prime = $prime;
- $this->a = $a;
- $this->b = $b;
- $this->generator = $generator;
+ public function __construct(
+ private int $size,
+ private BigInteger $prime,
+ private BigInteger $a,
+ private BigInteger $b,
+ private Point $generator
+ ) {
}
public function __toString(): string
{
- return 'curve('.Math::toString($this->getA()).', '.Math::toString($this->getB()).', '.Math::toString($this->getPrime()).')';
+ return 'curve(' . Math::toString($this->getA()) . ', ' . Math::toString($this->getB()) . ', ' . Math::toString(
+ $this->getPrime()
+ ) . ')';
}
public function getA(): BigInteger
@@ -85,18 +50,19 @@ public function getSize(): int
return $this->size;
}
- /**
- * @throws RuntimeException if the curve does not contain the point
- */
public function getPoint(BigInteger $x, BigInteger $y, ?BigInteger $order = null): Point
{
- if (!$this->contains($x, $y)) {
- throw new RuntimeException('Curve '.$this->__toString().' does not contain point ('.Math::toString($x).', '.Math::toString($y).')');
+ if (! $this->contains($x, $y)) {
+ throw new RuntimeException('Curve ' . $this->__toString() . ' does not contain point (' . Math::toString(
+ $x
+ ) . ', ' . Math::toString(
+ $y
+ ) . ')');
}
$point = Point::create($x, $y, $order);
- if (!is_null($order)) {
+ if ($order !== null) {
$mul = $this->mul($point, $order);
- if (!$mul->isInfinity()) {
+ if (! $mul->isInfinity()) {
throw new RuntimeException('SELF * ORDER MUST EQUAL INFINITY.');
}
}
@@ -104,13 +70,13 @@ public function getPoint(BigInteger $x, BigInteger $y, ?BigInteger $order = null
return $point;
}
- /**
- * @throws RuntimeException if the coordinates are out of range
- */
public function getPublicKeyFrom(BigInteger $x, BigInteger $y): PublicKey
{
$zero = BigInteger::zero();
- if ($x->compareTo($zero) < 0 || $y->compareTo($zero) < 0 || $this->generator->getOrder()->compareTo($x) <= 0 || $this->generator->getOrder()->compareTo($y) <= 0) {
+ if ($x->compareTo($zero) < 0 || $y->compareTo($zero) < 0 || $this->generator->getOrder()->compareTo(
+ $x
+ ) <= 0 || $this->generator->getOrder()
+ ->compareTo($y) <= 0) {
throw new RuntimeException('Generator point has x and y out of range.');
}
$point = $this->getPoint($x, $y);
@@ -123,13 +89,7 @@ public function contains(BigInteger $x, BigInteger $y): bool
return Math::equals(
ModularArithmetic::sub(
$y->power(2),
- Math::add(
- Math::add(
- $x->power(3),
- $this->getA()->multipliedBy($x)
- ),
- $this->getB()
- ),
+ Math::add(Math::add($x->power(3), $this->getA()->multipliedBy($x)), $this->getB()),
$this->getPrime()
),
BigInteger::zero()
@@ -155,16 +115,14 @@ public function add(Point $one, Point $two): Point
}
$slope = ModularArithmetic::div(
- $two->getY()->minus($one->getY()),
- $two->getX()->minus($one->getX()),
+ $two->getY()
+ ->minus($one->getY()),
+ $two->getX()
+ ->minus($one->getX()),
$this->getPrime()
);
- $xR = ModularArithmetic::sub(
- $slope->power(2)->minus($one->getX()),
- $two->getX(),
- $this->getPrime()
- );
+ $xR = ModularArithmetic::sub($slope->power(2)->minus($one->getX()), $two->getX(), $this->getPrime());
$yR = ModularArithmetic::sub(
$slope->multipliedBy($one->getX()->minus($xR)),
@@ -192,10 +150,7 @@ public function mul(Point $one, BigInteger $n): Point
}
/** @var Point[] $r */
- $r = [
- Point::infinity(),
- clone $one,
- ];
+ $r = [Point::infinity(), clone $one];
$k = $this->getSize();
$n1 = str_pad(Math::baseConvert(Math::toString($n), 10, 2), $k, '0', STR_PAD_LEFT);
@@ -213,24 +168,22 @@ public function mul(Point $one, BigInteger $n): Point
return $r[0];
}
- /**
- * @param Curve $other
- */
public function cmp(self $other): int
{
- $equal = $this->getA()->isEqualTo($other->getA())
- && $this->getB()->isEqualTo($other->getB())
- && $this->getPrime()->isEqualTo($other->getPrime());
+ $equal = $this->getA()
+ ->isEqualTo($other->getA())
+ && $this->getB()
+ ->isEqualTo($other->getB())
+ && $this->getPrime()
+ ->isEqualTo($other->getPrime())
+ ;
return $equal ? 0 : 1;
}
- /**
- * @param Curve $other
- */
public function equals(self $other): bool
{
- return 0 === $this->cmp($other);
+ return $this->cmp($other) === 0;
}
public function getDouble(Point $point): Point
@@ -280,12 +233,9 @@ public function getGenerator(): Point
return $this->generator;
}
- /**
- * @throws RuntimeException if the point is invalid
- */
private function validate(Point $point): void
{
- if (!$point->isInfinity() && !$this->contains($point->getX(), $point->getY())) {
+ if (! $point->isInfinity() && ! $this->contains($point->getX(), $point->getY())) {
throw new RuntimeException('Invalid point');
}
}
@@ -314,7 +264,7 @@ private function bnNumBits(BigInteger $x): int
return 0;
}
$log2 = 0;
- while (!$x->isEqualTo($zero)) {
+ while (! $x->isEqualTo($zero)) {
$x = $x->shiftedRight(1);
++$log2;
}
diff --git a/src/Ecc/EcDH.php b/src/Ecc/EcDH.php
index 16a366dc..8e7760b4 100644
--- a/src/Ecc/EcDH.php
+++ b/src/Ecc/EcDH.php
@@ -2,15 +2,6 @@
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\Core\Util\Ecc;
use Brick\Math\BigInteger;
@@ -42,10 +33,12 @@
/**
* @internal
*/
-class EcDH
+final class EcDH
{
public static function computeSharedKey(Curve $curve, PublicKey $publicKey, PrivateKey $privateKey): BigInteger
{
- return $curve->mul($publicKey->getPoint(), $privateKey->getSecret())->getX();
+ return $curve->mul($publicKey->getPoint(), $privateKey->getSecret())
+ ->getX()
+ ;
}
}
diff --git a/src/Ecc/Math.php b/src/Ecc/Math.php
index 23d9ed60..645bba54 100644
--- a/src/Ecc/Math.php
+++ b/src/Ecc/Math.php
@@ -2,15 +2,6 @@
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\Core\Util\Ecc;
use Brick\Math\BigInteger;
@@ -19,7 +10,7 @@
/**
* @internal
*/
-class Math
+final class Math
{
public static function equals(BigInteger $first, BigInteger $other): bool
{
diff --git a/src/Ecc/ModularArithmetic.php b/src/Ecc/ModularArithmetic.php
index 99805a30..7990231f 100644
--- a/src/Ecc/ModularArithmetic.php
+++ b/src/Ecc/ModularArithmetic.php
@@ -2,15 +2,6 @@
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\Core\Util\Ecc;
use Brick\Math\BigInteger;
@@ -18,16 +9,20 @@
/**
* @internal
*/
-class ModularArithmetic
+final class ModularArithmetic
{
public static function sub(BigInteger $minuend, BigInteger $subtrahend, BigInteger $modulus): BigInteger
{
- return $minuend->minus($subtrahend)->mod($modulus);
+ return $minuend->minus($subtrahend)
+ ->mod($modulus)
+ ;
}
public static function mul(BigInteger $multiplier, BigInteger $muliplicand, BigInteger $modulus): BigInteger
{
- return $multiplier->multipliedBy($muliplicand)->mod($modulus);
+ return $multiplier->multipliedBy($muliplicand)
+ ->mod($modulus)
+ ;
}
public static function div(BigInteger $dividend, BigInteger $divisor, BigInteger $modulus): BigInteger
diff --git a/src/Ecc/NistCurve.php b/src/Ecc/NistCurve.php
index 5702237b..190fbcff 100644
--- a/src/Ecc/NistCurve.php
+++ b/src/Ecc/NistCurve.php
@@ -2,47 +2,31 @@
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\Core\Util\Ecc;
use Brick\Math\BigInteger;
/**
- * *********************************************************************
* Copyright (C) 2012 Matyas Danter.
*
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+ * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
+ * Software.
*
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
- * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- * ***********************************************************************
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* @internal
*/
-class NistCurve
+final class NistCurve
{
/**
* Returns an NIST P-256 curve.
@@ -65,12 +49,30 @@ public static function curve256(): Curve
*/
public static function curve384(): Curve
{
- $p = BigInteger::fromBase('fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff', 16);
- $a = BigInteger::fromBase('fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc', 16);
- $b = BigInteger::fromBase('b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef', 16);
- $x = BigInteger::fromBase('aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7', 16);
- $y = BigInteger::fromBase('3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f', 16);
- $n = BigInteger::fromBase('ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973', 16);
+ $p = BigInteger::fromBase(
+ 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff',
+ 16
+ );
+ $a = BigInteger::fromBase(
+ 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc',
+ 16
+ );
+ $b = BigInteger::fromBase(
+ 'b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef',
+ 16
+ );
+ $x = BigInteger::fromBase(
+ 'aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7',
+ 16
+ );
+ $y = BigInteger::fromBase(
+ '3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f',
+ 16
+ );
+ $n = BigInteger::fromBase(
+ 'ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973',
+ 16
+ );
$generator = Point::create($x, $y, $n);
return new Curve(384, $p, $a, $b, $generator);
@@ -81,12 +83,30 @@ public static function curve384(): Curve
*/
public static function curve521(): Curve
{
- $p = BigInteger::fromBase('000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);
- $a = BigInteger::fromBase('000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc', 16);
- $b = BigInteger::fromBase('00000051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00', 16);
- $x = BigInteger::fromBase('000000c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66', 16);
- $y = BigInteger::fromBase('0000011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650', 16);
- $n = BigInteger::fromBase('000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409', 16);
+ $p = BigInteger::fromBase(
+ '000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
+ 16
+ );
+ $a = BigInteger::fromBase(
+ '000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc',
+ 16
+ );
+ $b = BigInteger::fromBase(
+ '00000051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00',
+ 16
+ );
+ $x = BigInteger::fromBase(
+ '000000c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66',
+ 16
+ );
+ $y = BigInteger::fromBase(
+ '0000011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650',
+ 16
+ );
+ $n = BigInteger::fromBase(
+ '000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409',
+ 16
+ );
$generator = Point::create($x, $y, $n);
return new Curve(521, $p, $a, $b, $generator);
diff --git a/src/Ecc/Point.php b/src/Ecc/Point.php
index 64a5d6f1..9d5aba34 100644
--- a/src/Ecc/Point.php
+++ b/src/Ecc/Point.php
@@ -2,74 +2,39 @@
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\Core\Util\Ecc;
use Brick\Math\BigInteger;
+use const STR_PAD_LEFT;
/**
- * *********************************************************************
* Copyright (C) 2012 Matyas Danter.
*
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+ * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
+ * Software.
*
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
- * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- * ***********************************************************************
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* @internal
*/
-class Point
+final class Point
{
- /**
- * @var BigInteger
- */
- private $x;
-
- /**
- * @var BigInteger
- */
- private $y;
-
- /**
- * @var BigInteger
- */
- private $order;
-
- /**
- * @var bool
- */
- private $infinity = false;
-
- private function __construct(BigInteger $x, BigInteger $y, BigInteger $order, bool $infinity = false)
- {
- $this->x = $x;
- $this->y = $y;
- $this->order = $order;
- $this->infinity = $infinity;
+ private function __construct(
+ private BigInteger $x,
+ private BigInteger $y,
+ private BigInteger $order,
+ private bool $infinity = false
+ ) {
}
public static function create(BigInteger $x, BigInteger $y, ?BigInteger $order = null): self
@@ -131,8 +96,14 @@ private static function cswapBigInteger(BigInteger &$sa, BigInteger &$sb, int $c
$mask = BigInteger::fromBase($mask, 2);
$taA = $sa->and($mask);
$taB = $sb->and($mask);
- $sa = $sa->xor($sb)->xor($taB);
- $sb = $sa->xor($sb)->xor($taA);
- $sa = $sa->xor($sb)->xor($taB);
+ $sa = $sa->xor($sb)
+ ->xor($taB)
+ ;
+ $sb = $sa->xor($sb)
+ ->xor($taA)
+ ;
+ $sa = $sa->xor($sb)
+ ->xor($taB)
+ ;
}
}
diff --git a/src/Ecc/PrivateKey.php b/src/Ecc/PrivateKey.php
index 88ecfc13..f5e4992d 100644
--- a/src/Ecc/PrivateKey.php
+++ b/src/Ecc/PrivateKey.php
@@ -2,56 +2,35 @@
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\Core\Util\Ecc;
use Brick\Math\BigInteger;
/**
- * *********************************************************************
* Copyright (C) 2012 Matyas Danter.
*
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+ * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
+ * Software.
*
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
- * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- * ***********************************************************************
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* @internal
*/
-class PrivateKey
+final class PrivateKey
{
- /**
- * @var BigInteger
- */
- private $secret;
-
- private function __construct(BigInteger $secret)
- {
- $this->secret = $secret;
+ private function __construct(
+ private BigInteger $secret
+ ) {
}
public static function create(BigInteger $secret): self
diff --git a/src/Ecc/PublicKey.php b/src/Ecc/PublicKey.php
index b0ea43ef..d8469d0a 100644
--- a/src/Ecc/PublicKey.php
+++ b/src/Ecc/PublicKey.php
@@ -2,54 +2,33 @@
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\Core\Util\Ecc;
/**
- * *********************************************************************
* Copyright (C) 2012 Matyas Danter.
*
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+ * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
+ * Software.
*
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
- * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- * ***********************************************************************
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* @internal
*/
-class PublicKey
+final class PublicKey
{
- /**
- * @var Point
- */
- private $point;
-
- public function __construct(Point $point)
- {
- $this->point = $point;
+ public function __construct(
+ private Point $point
+ ) {
}
public function getPoint(): Point
diff --git a/src/Ecc/composer.json b/src/Ecc/composer.json
index 56099cee..51186ca9 100644
--- a/src/Ecc/composer.json
+++ b/src/Ecc/composer.json
@@ -20,7 +20,7 @@
}
},
"require": {
- "brick/math": "^0.8.17|^0.9"
+ "brick/math": "^0.9"
},
"suggest": {
"ext-gmp": "GMP or BCMath is highly recommended to improve the library performance",
diff --git a/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A128CBCHS256.php b/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A128CBCHS256.php
index 8496c1e6..0554a52b 100644
--- a/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A128CBCHS256.php
+++ b/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A128CBCHS256.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A128CBCHS256 extends AESCBCHS
diff --git a/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A192CBCHS384.php b/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A192CBCHS384.php
index 34443430..c45e1694 100644
--- a/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A192CBCHS384.php
+++ b/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A192CBCHS384.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A192CBCHS384 extends AESCBCHS
diff --git a/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A256CBCHS512.php b/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A256CBCHS512.php
index c8dbc0b2..1eb0541d 100644
--- a/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A256CBCHS512.php
+++ b/src/EncryptionAlgorithm/ContentEncryption/AESCBC/A256CBCHS512.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A256CBCHS512 extends AESCBCHS
diff --git a/src/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBCHS.php b/src/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBCHS.php
index 996bf77a..90ee8497 100644
--- a/src/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBCHS.php
+++ b/src/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBCHS.php
@@ -2,18 +2,10 @@
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\Algorithm\ContentEncryption;
use Jose\Component\Encryption\Algorithm\ContentEncryptionAlgorithm;
+use const OPENSSL_RAW_DATA;
use ParagonIE\ConstantTime\Base64UrlSafe;
use RuntimeException;
@@ -24,14 +16,17 @@ public function allowedKeyTypes(): array
return []; //Irrelevant
}
- /**
- * @throws RuntimeException if the data cannot be encrypted
- */
- public function encryptContent(string $data, string $cek, string $iv, ?string $aad, string $encoded_protected_header, ?string &$tag = null): string
- {
+ public function encryptContent(
+ string $data,
+ string $cek,
+ string $iv,
+ ?string $aad,
+ string $encoded_protected_header,
+ ?string &$tag = null
+ ): string {
$k = mb_substr($cek, $this->getCEKSize() / 16, null, '8bit');
$result = openssl_encrypt($data, $this->getMode(), $k, OPENSSL_RAW_DATA, $iv);
- if (false === $result) {
+ if ($result === false) {
throw new RuntimeException('Unable to encrypt the content');
}
@@ -40,18 +35,21 @@ public function encryptContent(string $data, string $cek, string $iv, ?string $a
return $result;
}
- /**
- * @throws RuntimeException if the data cannot be decrypted
- */
- public function decryptContent(string $data, string $cek, string $iv, ?string $aad, string $encoded_protected_header, string $tag): string
- {
- if (!$this->isTagValid($data, $cek, $iv, $aad, $encoded_protected_header, $tag)) {
+ public function decryptContent(
+ string $data,
+ string $cek,
+ string $iv,
+ ?string $aad,
+ string $encoded_protected_header,
+ string $tag
+ ): string {
+ if (! $this->isTagValid($data, $cek, $iv, $aad, $encoded_protected_header, $tag)) {
throw new RuntimeException('Unable to decrypt or to verify the tag.');
}
$k = mb_substr($cek, $this->getCEKSize() / 16, null, '8bit');
$result = openssl_decrypt($data, $this->getMode(), $k, OPENSSL_RAW_DATA, $iv);
- if (false === $result) {
+ if ($result === false) {
throw new RuntimeException('Unable to decrypt or to verify the tag.');
}
@@ -63,11 +61,16 @@ public function getIVSize(): int
return 128;
}
- protected function calculateAuthenticationTag(string $encrypted_data, string $cek, string $iv, ?string $aad, string $encoded_header): string
- {
+ protected function calculateAuthenticationTag(
+ string $encrypted_data,
+ string $cek,
+ string $iv,
+ ?string $aad,
+ string $encoded_header
+ ): string {
$calculated_aad = $encoded_header;
- if (null !== $aad) {
- $calculated_aad .= '.'.Base64UrlSafe::encodeUnpadded($aad);
+ if ($aad !== null) {
+ $calculated_aad .= '.' . Base64UrlSafe::encodeUnpadded($aad);
}
$mac_key = mb_substr($cek, 0, $this->getCEKSize() / 16, '8bit');
$auth_data_length = mb_strlen($encoded_header, '8bit');
@@ -83,9 +86,18 @@ protected function calculateAuthenticationTag(string $encrypted_data, string $ce
return mb_substr($hash, 0, mb_strlen($hash, '8bit') / 2, '8bit');
}
- protected function isTagValid(string $encrypted_data, string $cek, string $iv, ?string $aad, string $encoded_header, string $authentication_tag): bool
- {
- return hash_equals($authentication_tag, $this->calculateAuthenticationTag($encrypted_data, $cek, $iv, $aad, $encoded_header));
+ protected function isTagValid(
+ string $encrypted_data,
+ string $cek,
+ string $iv,
+ ?string $aad,
+ string $encoded_header,
+ string $authentication_tag
+ ): bool {
+ return hash_equals(
+ $authentication_tag,
+ $this->calculateAuthenticationTag($encrypted_data, $cek, $iv, $aad, $encoded_header)
+ );
}
abstract protected function getHashAlgorithm(): string;
diff --git a/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A128GCM.php b/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A128GCM.php
index accc772e..03f3b990 100644
--- a/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A128GCM.php
+++ b/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A128GCM.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A128GCM extends AESGCM
diff --git a/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A192GCM.php b/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A192GCM.php
index ac617ea4..74ba68e1 100644
--- a/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A192GCM.php
+++ b/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A192GCM.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A192GCM extends AESGCM
diff --git a/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A256GCM.php b/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A256GCM.php
index 8f385a5a..6c9e9d23 100644
--- a/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A256GCM.php
+++ b/src/EncryptionAlgorithm/ContentEncryption/AESGCM/A256GCM.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A256GCM extends AESGCM
diff --git a/src/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCM.php b/src/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCM.php
index e413197a..9437f976 100644
--- a/src/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCM.php
+++ b/src/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCM.php
@@ -2,18 +2,10 @@
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\Algorithm\ContentEncryption;
use Jose\Component\Encryption\Algorithm\ContentEncryptionAlgorithm;
+use const OPENSSL_RAW_DATA;
use ParagonIE\ConstantTime\Base64UrlSafe;
use RuntimeException;
@@ -24,36 +16,42 @@ public function allowedKeyTypes(): array
return []; //Irrelevant
}
- /**
- * @throws RuntimeException if the CEK cannot be encrypted
- */
- public function encryptContent(string $data, string $cek, string $iv, ?string $aad, string $encoded_protected_header, ?string &$tag = null): string
- {
+ public function encryptContent(
+ string $data,
+ string $cek,
+ string $iv,
+ ?string $aad,
+ string $encoded_protected_header,
+ ?string &$tag = null
+ ): string {
$calculated_aad = $encoded_protected_header;
- if (null !== $aad) {
- $calculated_aad .= '.'.Base64UrlSafe::encodeUnpadded($aad);
+ if ($aad !== null) {
+ $calculated_aad .= '.' . Base64UrlSafe::encodeUnpadded($aad);
}
$tag = '';
$result = openssl_encrypt($data, $this->getMode(), $cek, OPENSSL_RAW_DATA, $iv, $tag, $calculated_aad);
- if (false === $result) {
+ if ($result === false) {
throw new RuntimeException('Unable to encrypt the content');
}
return $result;
}
- /**
- * @throws RuntimeException if the CEK cannot be decrypted
- */
- public function decryptContent(string $data, string $cek, string $iv, ?string $aad, string $encoded_protected_header, string $tag): string
- {
+ public function decryptContent(
+ string $data,
+ string $cek,
+ string $iv,
+ ?string $aad,
+ string $encoded_protected_header,
+ string $tag
+ ): string {
$calculated_aad = $encoded_protected_header;
- if (null !== $aad) {
- $calculated_aad .= '.'.Base64UrlSafe::encodeUnpadded($aad);
+ if ($aad !== null) {
+ $calculated_aad .= '.' . Base64UrlSafe::encodeUnpadded($aad);
}
$result = openssl_decrypt($data, $this->getMode(), $cek, OPENSSL_RAW_DATA, $iv, $tag, $calculated_aad);
- if (false === $result) {
+ if ($result === false) {
throw new RuntimeException('Unable to decrypt the content');
}
diff --git a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_16_128.php b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_16_128.php
index 9ca8edbc..68c7c54c 100644
--- a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_16_128.php
+++ b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_16_128.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A128CCM_16_128 extends AESCCM
diff --git a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_16_64.php b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_16_64.php
index df9e6923..01249ec2 100644
--- a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_16_64.php
+++ b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_16_64.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A128CCM_16_64 extends AESCCM
diff --git a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_64_128.php b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_64_128.php
index d25441b1..ecb30a95 100644
--- a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_64_128.php
+++ b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_64_128.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A128CCM_64_128 extends AESCCM
diff --git a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_64_64.php b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_64_64.php
index 2928cf81..674b0344 100644
--- a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_64_64.php
+++ b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A128CCM_64_64.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A128CCM_64_64 extends AESCCM
diff --git a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_16_128.php b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_16_128.php
index 6071742e..7f4e2f26 100644
--- a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_16_128.php
+++ b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_16_128.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A256CCM_16_128 extends AESCCM
diff --git a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_16_64.php b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_16_64.php
index c36ecf2e..3626ff94 100644
--- a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_16_64.php
+++ b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_16_64.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A256CCM_16_64 extends AESCCM
diff --git a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_64_128.php b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_64_128.php
index 90b901f8..ce741551 100644
--- a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_64_128.php
+++ b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_64_128.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A256CCM_64_128 extends AESCCM
diff --git a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_64_64.php b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_64_64.php
index 0e71b33d..8abdef69 100644
--- a/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_64_64.php
+++ b/src/EncryptionAlgorithm/Experimental/ContentEncryption/A256CCM_64_64.php
@@ -2,15 +2,6 @@
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\Algorithm\ContentEncryption;
final class A256CCM_64_64 extends AESCCM
diff --git a/src/EncryptionAlgorithm/Experimental/ContentEncryption/AESCCM.php b/src/EncryptionAlgorithm/Experimental/ContentEncryption/AESCCM.php
index 8027a2ce..78e7cdab 100644
--- a/src/EncryptionAlgorithm/Experimental/ContentEncryption/AESCCM.php
+++ b/src/EncryptionAlgorithm/Experimental/ContentEncryption/AESCCM.php
@@ -2,18 +2,10 @@
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\Algorithm\ContentEncryption;
use Jose\Component\Encryption\Algorithm\ContentEncryptionAlgorithm;
+use const OPENSSL_RAW_DATA;
use RuntimeException;
abstract class AESCCM implements ContentEncryptionAlgorithm
@@ -23,36 +15,51 @@ public function allowedKeyTypes(): array
return []; //Irrelevant
}
- /**
- * @throws RuntimeException if the data cannot be encrypted
- */
- public function encryptContent(string $data, string $cek, string $iv, ?string $aad, string $encoded_protected_header, ?string &$tag = null): string
- {
+ public function encryptContent(
+ string $data,
+ string $cek,
+ string $iv,
+ ?string $aad,
+ string $encoded_protected_header,
+ ?string &$tag = null
+ ): string {
$calculated_aad = $encoded_protected_header;
- if (null !== $aad) {
- $calculated_aad .= '.'.$aad;
+ if ($aad !== null) {
+ $calculated_aad .= '.' . $aad;
}
$tag = '';
- $result = openssl_encrypt($data, $this->getMode(), $cek, OPENSSL_RAW_DATA, $iv, $tag, $calculated_aad, $this->getTagLength());
- if (false === $result) {
+ $result = openssl_encrypt(
+ $data,
+ $this->getMode(),
+ $cek,
+ OPENSSL_RAW_DATA,
+ $iv,
+ $tag,
+ $calculated_aad,
+ $this->getTagLength()
+ );
+ if ($result === false) {
throw new RuntimeException('Unable to encrypt the content');
}
return $result;
}
- /**
- * @throws RuntimeException if the data cannot be decrypted
- */
- public function decryptContent(string $data, string $cek, string $iv, ?string $aad, string $encoded_protected_header, string $tag): string
- {
+ public function decryptContent(
+ string $data,
+ string $cek,
+ string $iv,
+ ?string $aad,
+ string $encoded_protected_header,
+ string $tag
+ ): string {
$calculated_aad = $encoded_protected_header;
- if (null !== $aad) {
- $calculated_aad .= '.'.$aad;
+ if ($aad !== null) {
+ $calculated_aad .= '.' . $aad;
}
$result = openssl_decrypt($data, $this->getMode(), $cek, OPENSSL_RAW_DATA, $iv, $tag, $calculated_aad);
- if (false === $result) {
+ if ($result === false) {
throw new RuntimeException('Unable to decrypt the content');
}
diff --git a/src/EncryptionAlgorithm/Experimental/KeyEncryption/A128CTR.php b/src/EncryptionAlgorithm/Experimental/KeyEncryption/A128CTR.php
index 962c397e..77878538 100644
--- a/src/EncryptionAlgorithm/Experimental/KeyEncryption/A128CTR.php
+++ b/src/EncryptionAlgorithm/Experimental/KeyEncryption/A128CTR.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
final class A128CTR extends AESCTR
diff --git a/src/EncryptionAlgorithm/Experimental/KeyEncryption/A192CTR.php b/src/EncryptionAlgorithm/Experimental/KeyEncryption/A192CTR.php
index 79184f17..2cab2f9d 100644
--- a/src/EncryptionAlgorithm/Experimental/KeyEncryption/A192CTR.php
+++ b/src/EncryptionAlgorithm/Experimental/KeyEncryption/A192CTR.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
final class A192CTR extends AESCTR
diff --git a/src/EncryptionAlgorithm/Experimental/KeyEncryption/A256CTR.php b/src/EncryptionAlgorithm/Experimental/KeyEncryption/A256CTR.php
index 9046c6a7..6550090b 100644
--- a/src/EncryptionAlgorithm/Experimental/KeyEncryption/A256CTR.php
+++ b/src/EncryptionAlgorithm/Experimental/KeyEncryption/A256CTR.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
final class A256CTR extends AESCTR
diff --git a/src/EncryptionAlgorithm/Experimental/KeyEncryption/AESCTR.php b/src/EncryptionAlgorithm/Experimental/KeyEncryption/AESCTR.php
index ded22bb6..dd6e5d4c 100644
--- a/src/EncryptionAlgorithm/Experimental/KeyEncryption/AESCTR.php
+++ b/src/EncryptionAlgorithm/Experimental/KeyEncryption/AESCTR.php
@@ -2,21 +2,13 @@
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\Algorithm\KeyEncryption;
use function in_array;
use InvalidArgumentException;
use function is_string;
use Jose\Component\Core\JWK;
+use const OPENSSL_RAW_DATA;
use ParagonIE\ConstantTime\Base64UrlSafe;
use RuntimeException;
@@ -27,9 +19,6 @@ public function allowedKeyTypes(): array
return ['oct'];
}
- /**
- * @throws RuntimeException if the CEK cannot be encrypted
- */
public function encryptKey(JWK $key, string $cek, array $completeHeader, array &$additionalHeader): string
{
$k = $this->getKey($key);
@@ -39,16 +28,13 @@ public function encryptKey(JWK $key, string $cek, array $completeHeader, array &
$additionalHeader['iv'] = Base64UrlSafe::encodeUnpadded($iv);
$result = openssl_encrypt($cek, $this->getMode(), $k, OPENSSL_RAW_DATA, $iv);
- if (false === $result) {
+ if ($result === false) {
throw new RuntimeException('Unable to encrypt the CEK');
}
return $result;
}
- /**
- * @throws RuntimeException if the CEK cannot be decrypted
- */
public function decryptKey(JWK $key, string $encrypted_cek, array $header): string
{
$k = $this->getKey($key);
@@ -56,7 +42,7 @@ public function decryptKey(JWK $key, string $encrypted_cek, array $header): stri
$iv = Base64UrlSafe::decode($header['iv']);
$result = openssl_decrypt($encrypted_cek, $this->getMode(), $k, OPENSSL_RAW_DATA, $iv);
- if (false === $result) {
+ if ($result === false) {
throw new RuntimeException('Unable to decrypt the CEK');
}
@@ -70,34 +56,28 @@ public function getKeyManagementMode(): string
abstract protected function getMode(): string;
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
private function getKey(JWK $key): string
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
- if (!$key->has('k')) {
+ if (! $key->has('k')) {
throw new InvalidArgumentException('The key parameter "k" is missing.');
}
$k = $key->get('k');
- if (!is_string($k)) {
+ if (! is_string($k)) {
throw new InvalidArgumentException('The key parameter "k" is invalid.');
}
return Base64UrlSafe::decode($k);
}
- /**
- * @throws InvalidArgumentException if the IV is missing or invalid
- */
private function checkHeaderAdditionalParameters(array $header): void
{
- if (!isset($header['iv'])) {
+ if (! isset($header['iv'])) {
throw new InvalidArgumentException('The header parameter "iv" is missing.');
}
- if (!is_string($header['iv'])) {
+ if (! is_string($header['iv'])) {
throw new InvalidArgumentException('The header parameter "iv" is not valid.');
}
}
diff --git a/src/EncryptionAlgorithm/Experimental/KeyEncryption/Chacha20Poly1305.php b/src/EncryptionAlgorithm/Experimental/KeyEncryption/Chacha20Poly1305.php
index 334b28a2..6ee72bf2 100644
--- a/src/EncryptionAlgorithm/Experimental/KeyEncryption/Chacha20Poly1305.php
+++ b/src/EncryptionAlgorithm/Experimental/KeyEncryption/Chacha20Poly1305.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use function in_array;
@@ -18,17 +9,15 @@
use function is_string;
use Jose\Component\Core\JWK;
use LogicException;
+use const OPENSSL_RAW_DATA;
use ParagonIE\ConstantTime\Base64UrlSafe;
use RuntimeException;
final class Chacha20Poly1305 implements KeyEncryption
{
- /**
- * @throws LogicException if the algorithm "chacha20-poly1305" is not supported
- */
public function __construct()
{
- if (!in_array('chacha20-poly1305', openssl_get_cipher_methods(), true)) {
+ if (! in_array('chacha20-poly1305', openssl_get_cipher_methods(), true)) {
throw new LogicException('The algorithm "chacha20-poly1305" is not supported in this platform.');
}
}
@@ -43,9 +32,6 @@ public function name(): string
return 'chacha20-poly1305';
}
- /**
- * @throws RuntimeException if the CEK cannot be encrypted
- */
public function encryptKey(JWK $key, string $cek, array $completeHeader, array &$additionalHeader): string
{
$k = $this->getKey($key);
@@ -55,28 +41,24 @@ public function encryptKey(JWK $key, string $cek, array $completeHeader, array &
$additionalHeader['nonce'] = Base64UrlSafe::encodeUnpadded($nonce);
$result = openssl_encrypt($cek, 'chacha20-poly1305', $k, OPENSSL_RAW_DATA, $nonce);
- if (false === $result) {
+ if ($result === false) {
throw new RuntimeException('Unable to encrypt the CEK');
}
return $result;
}
- /**
- * @throws RuntimeException if the CEK cannot be decrypted
- * @throws InvalidArgumentException if the header parameter "nonce" is missing or invalid
- */
public function decryptKey(JWK $key, string $encrypted_cek, array $header): string
{
$k = $this->getKey($key);
$this->checkHeaderAdditionalParameters($header);
$nonce = Base64UrlSafe::decode($header['nonce']);
- if (12 !== mb_strlen($nonce, '8bit')) {
+ if (mb_strlen($nonce, '8bit') !== 12) {
throw new InvalidArgumentException('The header parameter "nonce" is not valid.');
}
$result = openssl_decrypt($encrypted_cek, 'chacha20-poly1305', $k, OPENSSL_RAW_DATA, $nonce);
- if (false === $result) {
+ if ($result === false) {
throw new RuntimeException('Unable to decrypt the CEK');
}
@@ -88,34 +70,28 @@ public function getKeyManagementMode(): string
return self::MODE_ENCRYPT;
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
private function getKey(JWK $key): string
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
- if (!$key->has('k')) {
+ if (! $key->has('k')) {
throw new InvalidArgumentException('The key parameter "k" is missing.');
}
$k = $key->get('k');
- if (!is_string($k)) {
+ if (! is_string($k)) {
throw new InvalidArgumentException('The key parameter "k" is invalid.');
}
return Base64UrlSafe::decode($k);
}
- /**
- * @throws InvalidArgumentException if the header parameter "nonce" is missing or invalid
- */
private function checkHeaderAdditionalParameters(array $header): void
{
- if (!isset($header['nonce'])) {
+ if (! isset($header['nonce'])) {
throw new InvalidArgumentException('The header parameter "nonce" is missing.');
}
- if (!is_string($header['nonce'])) {
+ if (! is_string($header['nonce'])) {
throw new InvalidArgumentException('The header parameter "nonce" is not valid.');
}
}
diff --git a/src/EncryptionAlgorithm/Experimental/KeyEncryption/RSAOAEP384.php b/src/EncryptionAlgorithm/Experimental/KeyEncryption/RSAOAEP384.php
index 8a1a1968..70eda945 100644
--- a/src/EncryptionAlgorithm/Experimental/KeyEncryption/RSAOAEP384.php
+++ b/src/EncryptionAlgorithm/Experimental/KeyEncryption/RSAOAEP384.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use Jose\Component\Encryption\Algorithm\KeyEncryption\Util\RSACrypt;
diff --git a/src/EncryptionAlgorithm/Experimental/KeyEncryption/RSAOAEP512.php b/src/EncryptionAlgorithm/Experimental/KeyEncryption/RSAOAEP512.php
index 599e0e9a..37aaf3ec 100644
--- a/src/EncryptionAlgorithm/Experimental/KeyEncryption/RSAOAEP512.php
+++ b/src/EncryptionAlgorithm/Experimental/KeyEncryption/RSAOAEP512.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use Jose\Component\Encryption\Algorithm\KeyEncryption\Util\RSACrypt;
diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A128GCMKW.php b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A128GCMKW.php
index 6e5eb260..a2163082 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A128GCMKW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A128GCMKW.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
final class A128GCMKW extends AESGCMKW
diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A192GCMKW.php b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A192GCMKW.php
index ab43a1a1..5f54d3fb 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A192GCMKW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A192GCMKW.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
final class A192GCMKW extends AESGCMKW
diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A256GCMKW.php b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A256GCMKW.php
index 146c6219..a93caa4f 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A256GCMKW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/A256GCMKW.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
final class A256GCMKW extends AESGCMKW
diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKW.php b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKW.php
index bfc31873..92b97059 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKW.php
@@ -2,22 +2,13 @@
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\Algorithm\KeyEncryption;
-use Exception;
use function in_array;
use InvalidArgumentException;
use function is_string;
use Jose\Component\Core\JWK;
+use const OPENSSL_RAW_DATA;
use ParagonIE\ConstantTime\Base64UrlSafe;
use RuntimeException;
@@ -28,10 +19,6 @@ public function allowedKeyTypes(): array
return ['oct'];
}
- /**
- * @throws RuntimeException if the CEK cannot be encrypted
- * @throws Exception if the random bytes cannot be generated
- */
public function wrapKey(JWK $key, string $cek, array $completeHeader, array &$additionalHeader): string
{
$kek = $this->getKey($key);
@@ -41,7 +28,7 @@ public function wrapKey(JWK $key, string $cek, array $completeHeader, array &$ad
$mode = sprintf('aes-%d-gcm', $this->getKeySize());
$tag = '';
$encrypted_cek = openssl_encrypt($cek, $mode, $kek, OPENSSL_RAW_DATA, $iv, $tag, '');
- if (false === $encrypted_cek) {
+ if ($encrypted_cek === false) {
throw new RuntimeException('Unable to encrypt the CEK');
}
$additionalHeader['tag'] = Base64UrlSafe::encodeUnpadded($tag);
@@ -49,9 +36,6 @@ public function wrapKey(JWK $key, string $cek, array $completeHeader, array &$ad
return $encrypted_cek;
}
- /**
- * @throws RuntimeException if the CEK cannot be decrypted
- */
public function unwrapKey(JWK $key, string $encrypted_cek, array $completeHeader): string
{
$kek = $this->getKey($key);
@@ -62,7 +46,7 @@ public function unwrapKey(JWK $key, string $encrypted_cek, array $completeHeader
$mode = sprintf('aes-%d-gcm', $this->getKeySize());
$cek = openssl_decrypt($encrypted_cek, $mode, $kek, OPENSSL_RAW_DATA, $iv, $tag, '');
- if (false === $cek) {
+ if ($cek === false) {
throw new RuntimeException('Unable to decrypt the CEK');
}
@@ -74,32 +58,26 @@ public function getKeyManagementMode(): string
return self::MODE_WRAP;
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
protected function getKey(JWK $key): string
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
- if (!$key->has('k')) {
+ if (! $key->has('k')) {
throw new InvalidArgumentException('The key parameter "k" is missing.');
}
$k = $key->get('k');
- if (!is_string($k)) {
+ if (! is_string($k)) {
throw new InvalidArgumentException('The key parameter "k" is invalid.');
}
return Base64UrlSafe::decode($k);
}
- /**
- * @throws InvalidArgumentException if the header parameter iv or tag is missing
- */
protected function checkAdditionalParameters(array $header): void
{
foreach (['iv', 'tag'] as $k) {
- if (!isset($header[$k])) {
+ if (! isset($header[$k])) {
throw new InvalidArgumentException(sprintf('Parameter "%s" is missing.', $k));
}
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/composer.json b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/composer.json
index e453160b..39af730f 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/composer.json
+++ b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/composer.json
@@ -21,7 +21,7 @@
},
"require": {
"ext-openssl": "*",
- "spomky-labs/aes-key-wrap": "^5.0|^6.0",
+ "spomky-labs/aes-key-wrap": "^7.0",
"web-token/jwt-encryption": "^2.1"
}
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESKW/A128KW.php b/src/EncryptionAlgorithm/KeyEncryption/AESKW/A128KW.php
index 0ad3e700..635b9aca 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/AESKW/A128KW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/AESKW/A128KW.php
@@ -2,18 +2,10 @@
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\Algorithm\KeyEncryption;
use AESKW\A128KW as Wrapper;
+use AESKW\Wrapper as WrapperInterface;
final class A128KW extends AESKW
{
@@ -22,7 +14,7 @@ public function name(): string
return 'A128KW';
}
- protected function getWrapper()
+ protected function getWrapper(): WrapperInterface
{
return new Wrapper();
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESKW/A192KW.php b/src/EncryptionAlgorithm/KeyEncryption/AESKW/A192KW.php
index b22084ea..8960ca40 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/AESKW/A192KW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/AESKW/A192KW.php
@@ -2,18 +2,10 @@
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\Algorithm\KeyEncryption;
use AESKW\A192KW as Wrapper;
+use AESKW\Wrapper as WrapperInterface;
final class A192KW extends AESKW
{
@@ -22,7 +14,7 @@ public function name(): string
return 'A192KW';
}
- protected function getWrapper()
+ protected function getWrapper(): WrapperInterface
{
return new Wrapper();
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESKW/A256KW.php b/src/EncryptionAlgorithm/KeyEncryption/AESKW/A256KW.php
index c5deb9ad..52cbf204 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/AESKW/A256KW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/AESKW/A256KW.php
@@ -2,18 +2,10 @@
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\Algorithm\KeyEncryption;
use AESKW\A256KW as Wrapper;
+use AESKW\Wrapper as WrapperInterface;
final class A256KW extends AESKW
{
@@ -22,7 +14,7 @@ public function name(): string
return 'A256KW';
}
- protected function getWrapper()
+ protected function getWrapper(): WrapperInterface
{
return new Wrapper();
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESKW/AESKW.php b/src/EncryptionAlgorithm/KeyEncryption/AESKW/AESKW.php
index 21fbc24b..1e27500c 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/AESKW/AESKW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/AESKW/AESKW.php
@@ -2,17 +2,9 @@
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\Algorithm\KeyEncryption;
+use AESKW\Wrapper as WrapperInterface;
use function in_array;
use InvalidArgumentException;
use function is_string;
@@ -47,24 +39,18 @@ public function getKeyManagementMode(): string
return self::MODE_WRAP;
}
- /**
- * @return \AESKW\A128KW|\AESKW\A192KW|\AESKW\A256KW
- */
- abstract protected function getWrapper();
+ abstract protected function getWrapper(): WrapperInterface;
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
private function getKey(JWK $key): string
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
- if (!$key->has('k')) {
+ if (! $key->has('k')) {
throw new InvalidArgumentException('The key parameter "k" is missing.');
}
$k = $key->get('k');
- if (!is_string($k)) {
+ if (! is_string($k)) {
throw new InvalidArgumentException('The key parameter "k" is invalid.');
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESKW/composer.json b/src/EncryptionAlgorithm/KeyEncryption/AESKW/composer.json
index 489dde8e..8668a032 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/AESKW/composer.json
+++ b/src/EncryptionAlgorithm/KeyEncryption/AESKW/composer.json
@@ -21,7 +21,7 @@
},
"require": {
"ext-openssl": "*",
- "spomky-labs/aes-key-wrap": "^5.0|^6.0",
+ "spomky-labs/aes-key-wrap": "^7.0",
"web-token/jwt-encryption": "^2.1"
}
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/Direct/Dir.php b/src/EncryptionAlgorithm/KeyEncryption/Direct/Dir.php
index eecf2b1e..6409bb00 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/Direct/Dir.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/Direct/Dir.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use function in_array;
@@ -21,19 +12,16 @@
final class Dir implements DirectEncryption
{
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
public function getCEK(JWK $key): string
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
- if (!$key->has('k')) {
+ if (! $key->has('k')) {
throw new InvalidArgumentException('The key parameter "k" is missing.');
}
$k = $key->get('k');
- if (!is_string($k)) {
+ if (! is_string($k)) {
throw new InvalidArgumentException('The key parameter "k" is invalid.');
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHES.php b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHES.php
index 1f6bdb80..1d942f2e 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHES.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHES.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use function array_key_exists;
@@ -38,8 +29,14 @@ public function allowedKeyTypes(): array
return ['EC', 'OKP'];
}
- public function getAgreementKey(int $encryptionKeyLength, string $algorithm, JWK $recipientKey, ?JWK $senderKey, array $complete_header = [], array &$additional_header_values = []): string
- {
+ public function getAgreementKey(
+ int $encryptionKeyLength,
+ string $algorithm,
+ JWK $recipientKey,
+ ?JWK $senderKey,
+ array $complete_header = [],
+ array &$additional_header_values = []
+ ): string {
if ($recipientKey->has('d')) {
[$public_key, $private_key] = $this->getKeysFromPrivateKeyAndHeader($recipientKey, $complete_header);
} else {
@@ -54,9 +51,6 @@ public function getAgreementKey(int $encryptionKeyLength, string $algorithm, JWK
return ConcatKDF::generate($agreed_key, $algorithm, $encryptionKeyLength, $apu, $apv);
}
- /**
- * @throws InvalidArgumentException if the curve is not supported
- */
public function calculateAgreementKey(JWK $private_key, JWK $public_key): string
{
switch ($public_key->get('crv')) {
@@ -70,12 +64,12 @@ public function calculateAgreementKey(JWK $private_key, JWK $public_key): string
$privatePem = ECKey::convertPrivateKeyToPEM($private_key);
$res = openssl_pkey_derive($publicPem, $privatePem, $curve->getSize());
- if (false === $res) {
+ if ($res === false) {
throw new RuntimeException('Unable to derive the key');
}
return $res;
- } catch (Throwable $throwable) {
+ } catch (Throwable) {
//Does nothing. Will fallback to the pure PHP function
}
}
@@ -111,8 +105,6 @@ public function getKeyManagementMode(): string
}
/**
- * @throws InvalidArgumentException if the curve is not supported
- *
* @return JWK[]
*/
private function getKeysFromPublicKey(JWK $recipient_key, array &$additional_header_values): array
@@ -137,15 +129,15 @@ private function getKeysFromPublicKey(JWK $recipient_key, array &$additional_hea
default:
throw new InvalidArgumentException(sprintf('The curve "%s" is not supported', $public_key->get('crv')));
}
- $epk = $private_key->toPublic()->all();
+ $epk = $private_key->toPublic()
+ ->all()
+ ;
$additional_header_values['epk'] = $epk;
return [$public_key, $private_key];
}
/**
- * @throws InvalidArgumentException if the curves are different
- *
* @return JWK[]
*/
private function getKeysFromPrivateKeyAndHeader(JWK $recipient_key, array $complete_header): array
@@ -160,15 +152,12 @@ private function getKeysFromPrivateKeyAndHeader(JWK $recipient_key, array $compl
return [$public_key, $private_key];
}
- /**
- * @throws InvalidArgumentException if the ephemeral public key is missing or invalid
- */
private function getPublicKey(array $complete_header): JWK
{
- if (!isset($complete_header['epk'])) {
+ if (! isset($complete_header['epk'])) {
throw new InvalidArgumentException('The header parameter "epk" is missing.');
}
- if (!is_array($complete_header['epk'])) {
+ if (! is_array($complete_header['epk'])) {
throw new InvalidArgumentException('The header parameter "epk" is not an array of parameters');
}
$public_key = new JWK($complete_header['epk']);
@@ -177,16 +166,13 @@ private function getPublicKey(array $complete_header): JWK
return $public_key;
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
private function checkKey(JWK $key, bool $is_private): void
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
foreach (['x', 'crv'] as $k) {
- if (!$key->has($k)) {
+ if (! $key->has($k)) {
throw new InvalidArgumentException(sprintf('The key parameter "%s" is missing.', $k));
}
}
@@ -195,7 +181,7 @@ private function checkKey(JWK $key, bool $is_private): void
case 'P-256':
case 'P-384':
case 'P-521':
- if (!$key->has('y')) {
+ if (! $key->has('y')) {
throw new InvalidArgumentException('The key parameter "y" is missing.');
}
@@ -207,44 +193,31 @@ private function checkKey(JWK $key, bool $is_private): void
default:
throw new InvalidArgumentException(sprintf('The curve "%s" is not supported', $key->get('crv')));
}
- if (true === $is_private && !$key->has('d')) {
+ if ($is_private === true && ! $key->has('d')) {
throw new InvalidArgumentException('The key parameter "d" is missing.');
}
}
- /**
- * @throws InvalidArgumentException if the curve is not supported
- */
private function getCurve(string $crv): Curve
{
- switch ($crv) {
- case 'P-256':
- return NistCurve::curve256();
-
- case 'P-384':
- return NistCurve::curve384();
-
- case 'P-521':
- return NistCurve::curve521();
-
- default:
- throw new InvalidArgumentException(sprintf('The curve "%s" is not supported', $crv));
- }
+ return match ($crv) {
+ 'P-256' => NistCurve::curve256(),
+ 'P-384' => NistCurve::curve384(),
+ 'P-521' => NistCurve::curve521(),
+ default => throw new InvalidArgumentException(sprintf('The curve "%s" is not supported', $crv)),
+ };
}
private function convertBase64ToBigInteger(string $value): BigInteger
{
$data = unpack('H*', Base64UrlSafe::decode($value));
- if (!is_array($data) || !isset($data[1])) {
+ if (! is_array($data) || ! isset($data[1])) {
throw new InvalidArgumentException('Unable to convert base64 to integer');
}
return BigInteger::fromBase($data[1], 16);
}
- /**
- * @throws InvalidArgumentException if the data cannot be converted
- */
private function convertDecToBin(BigInteger $dec): string
{
if ($dec->compareTo(BigInteger::zero()) < 0) {
@@ -252,12 +225,12 @@ private function convertDecToBin(BigInteger $dec): string
}
$hex = $dec->toBase(16);
- if (0 !== mb_strlen($hex, '8bit') % 2) {
- $hex = '0'.$hex;
+ if (mb_strlen($hex, '8bit') % 2 !== 0) {
+ $hex = '0' . $hex;
}
$bin = hex2bin($hex);
- if (false === $bin) {
+ if ($bin === false) {
throw new InvalidArgumentException('Unable to convert integer to string');
}
@@ -266,8 +239,6 @@ private function convertDecToBin(BigInteger $dec): string
/**
* @param string $curve The curve
- *
- * @throws InvalidArgumentException if the curve is not supported
*/
private function createOKPKey(string $curve): JWK
{
@@ -300,12 +271,9 @@ private function createOKPKey(string $curve): JWK
]);
}
- /**
- * @throws RuntimeException if the extension "sodium" is not available
- */
private function checkSodiumExtensionIsAvailable(): void
{
- if (!extension_loaded('sodium')) {
+ if (! extension_loaded('sodium')) {
throw new RuntimeException('The extension "sodium" is not available. Please install it to use this method');
}
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA128KW.php b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA128KW.php
index 8378b73f..8fbacc11 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA128KW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA128KW.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use AESKW\A128KW as Wrapper;
@@ -22,7 +13,7 @@ public function name(): string
return 'ECDH-ES+A128KW';
}
- protected function getWrapper()
+ protected function getWrapper(): Wrapper
{
return new Wrapper();
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA192KW.php b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA192KW.php
index 32dde770..948c3839 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA192KW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA192KW.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use AESKW\A192KW as Wrapper;
@@ -22,7 +13,7 @@ public function name(): string
return 'ECDH-ES+A192KW';
}
- protected function getWrapper()
+ protected function getWrapper(): Wrapper
{
return new Wrapper();
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA256KW.php b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA256KW.php
index ace3cc74..367cf448 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA256KW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESA256KW.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use AESKW\A256KW as Wrapper;
@@ -22,7 +13,7 @@ public function name(): string
return 'ECDH-ES+A256KW';
}
- protected function getWrapper()
+ protected function getWrapper(): Wrapper
{
return new Wrapper();
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESAESKW.php b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESAESKW.php
index 07f92cbc..7e29ced6 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESAESKW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESAESKW.php
@@ -2,17 +2,11 @@
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\Algorithm\KeyEncryption;
+use AESKW\A128KW;
+use AESKW\A192KW;
+use AESKW\A256KW;
use Jose\Component\Core\JWK;
abstract class ECDHESAESKW implements KeyAgreementWithKeyWrapping
@@ -22,19 +16,43 @@ public function allowedKeyTypes(): array
return ['EC', 'OKP'];
}
- public function wrapAgreementKey(JWK $recipientKey, ?JWK $senderKey, string $cek, int $encryption_key_length, array $complete_header, array &$additional_header_values): string
- {
+ public function wrapAgreementKey(
+ JWK $recipientKey,
+ ?JWK $senderKey,
+ string $cek,
+ int $encryption_key_length,
+ array $complete_header,
+ array &$additional_header_values
+ ): string {
$ecdh_es = new ECDHES();
- $agreement_key = $ecdh_es->getAgreementKey($this->getKeyLength(), $this->name(), $recipientKey->toPublic(), $senderKey, $complete_header, $additional_header_values);
+ $agreement_key = $ecdh_es->getAgreementKey(
+ $this->getKeyLength(),
+ $this->name(),
+ $recipientKey->toPublic(),
+ $senderKey,
+ $complete_header,
+ $additional_header_values
+ );
$wrapper = $this->getWrapper();
return $wrapper::wrap($agreement_key, $cek);
}
- public function unwrapAgreementKey(JWK $recipientKey, ?JWK $senderKey, string $encrypted_cek, int $encryption_key_length, array $complete_header): string
- {
+ public function unwrapAgreementKey(
+ JWK $recipientKey,
+ ?JWK $senderKey,
+ string $encrypted_cek,
+ int $encryption_key_length,
+ array $complete_header
+ ): string {
$ecdh_es = new ECDHES();
- $agreement_key = $ecdh_es->getAgreementKey($this->getKeyLength(), $this->name(), $recipientKey, $senderKey, $complete_header);
+ $agreement_key = $ecdh_es->getAgreementKey(
+ $this->getKeyLength(),
+ $this->name(),
+ $recipientKey,
+ $senderKey,
+ $complete_header
+ );
$wrapper = $this->getWrapper();
return $wrapper::unwrap($agreement_key, $encrypted_cek);
@@ -45,10 +63,7 @@ public function getKeyManagementMode(): string
return self::MODE_WRAP;
}
- /**
- * @return \AESKW\A128KW|\AESKW\A192KW|\AESKW\A256KW
- */
- abstract protected function getWrapper();
+ abstract protected function getWrapper(): A128KW|A192KW|A256KW;
abstract protected function getKeyLength(): int;
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/Util/ConcatKDF.php b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/Util/ConcatKDF.php
index 871395b5..e55e6aa7 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/Util/ConcatKDF.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/Util/ConcatKDF.php
@@ -2,26 +2,18 @@
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\Algorithm\KeyEncryption\Util;
use InvalidArgumentException;
use ParagonIE\ConstantTime\Base64UrlSafe;
+use const STR_PAD_LEFT;
/**
* @internal
*
* @see https://tools.ietf.org/html/rfc7518#section-4.6.2
*/
-class ConcatKDF
+final class ConcatKDF
{
/**
* Key Derivation Function.
@@ -32,16 +24,21 @@ class ConcatKDF
* @param string $apu Agreement PartyUInfo (information about the producer)
* @param string $apv Agreement PartyVInfo (information about the recipient)
*/
- public static function generate(string $Z, string $algorithm, int $encryption_key_size, string $apu = '', string $apv = ''): string
- {
- $apu = !self::isEmpty($apu) ? Base64UrlSafe::decode($apu) : '';
- $apv = !self::isEmpty($apv) ? Base64UrlSafe::decode($apv) : '';
+ public static function generate(
+ string $Z,
+ string $algorithm,
+ int $encryption_key_size,
+ string $apu = '',
+ string $apv = ''
+ ): string {
+ $apu = ! self::isEmpty($apu) ? Base64UrlSafe::decode($apu) : '';
+ $apv = ! self::isEmpty($apv) ? Base64UrlSafe::decode($apv) : '';
$encryption_segments = [
self::toInt32Bits(1), // Round number 1
$Z, // Z (shared secret)
- self::toInt32Bits(mb_strlen($algorithm, '8bit')).$algorithm, // Size of algorithm's name and algorithm
- self::toInt32Bits(mb_strlen($apu, '8bit')).$apu, // PartyUInfo
- self::toInt32Bits(mb_strlen($apv, '8bit')).$apv, // PartyVInfo
+ self::toInt32Bits(mb_strlen($algorithm, '8bit')) . $algorithm, // Size of algorithm's name and algorithm
+ self::toInt32Bits(mb_strlen($apu, '8bit')) . $apu, // PartyUInfo
+ self::toInt32Bits(mb_strlen($apv, '8bit')) . $apv, // PartyVInfo
self::toInt32Bits($encryption_key_size), // SuppPubInfo (the encryption key size)
'', // SuppPrivInfo
];
@@ -60,7 +57,7 @@ public static function generate(string $Z, string $algorithm, int $encryption_ke
private static function toInt32Bits(int $value): string
{
$result = hex2bin(str_pad(dechex($value), 8, '0', STR_PAD_LEFT));
- if (false === $result) {
+ if ($result === false) {
throw new InvalidArgumentException('Invalid result');
}
@@ -69,6 +66,6 @@ private static function toInt32Bits(int $value): string
private static function isEmpty(?string $value): bool
{
- return null === $value || '' === $value;
+ return $value === null || $value === '';
}
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/composer.json b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/composer.json
index 5dbd03c0..6368a590 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/composer.json
+++ b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/composer.json
@@ -24,7 +24,7 @@
},
"require": {
"ext-openssl": "*",
- "spomky-labs/aes-key-wrap": "^5.0|^6.0",
+ "spomky-labs/aes-key-wrap": "^7.0",
"web-token/jwt-encryption": "^2.1",
"web-token/jwt-util-ecc": "^2.1"
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2AESKW.php b/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2AESKW.php
index 9e969219..ce7666da 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2AESKW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2AESKW.php
@@ -2,17 +2,11 @@
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\Algorithm\KeyEncryption;
+use AESKW\A128KW;
+use AESKW\A192KW;
+use AESKW\A256KW;
use function in_array;
use InvalidArgumentException;
use function is_int;
@@ -22,20 +16,10 @@
abstract class PBES2AESKW implements KeyWrapping
{
- /**
- * @var int
- */
- private $salt_size;
-
- /**
- * @var int
- */
- private $nb_count;
-
- public function __construct(int $salt_size = 64, int $nb_count = 4096)
- {
- $this->salt_size = $salt_size;
- $this->nb_count = $nb_count;
+ public function __construct(
+ private int $salt_size = 64,
+ private int $nb_count = 4096
+ ) {
}
public function allowedKeyTypes(): array
@@ -56,7 +40,14 @@ public function wrapKey(JWK $key, string $cek, array $completeHeader, array &$ad
$additionalHeader['p2s'] = Base64UrlSafe::encodeUnpadded($salt);
$additionalHeader['p2c'] = $this->nb_count;
- $derived_key = hash_pbkdf2($hash_algorithm, $password, $completeHeader['alg']."\x00".$salt, $this->nb_count, $key_size, true);
+ $derived_key = hash_pbkdf2(
+ $hash_algorithm,
+ $password,
+ $completeHeader['alg'] . "\x00" . $salt,
+ $this->nb_count,
+ $key_size,
+ true
+ );
return $wrapper::wrap($derived_key, $cek);
}
@@ -69,7 +60,7 @@ public function unwrapKey(JWK $key, string $encrypted_cek, array $completeHeader
$wrapper = $this->getWrapper();
$hash_algorithm = $this->getHashAlgorithm();
$key_size = $this->getKeySize();
- $salt = $completeHeader['alg']."\x00".Base64UrlSafe::decode($completeHeader['p2s']);
+ $salt = $completeHeader['alg'] . "\x00" . Base64UrlSafe::decode($completeHeader['p2s']);
$count = $completeHeader['p2c'];
$derived_key = hash_pbkdf2($hash_algorithm, $password, $salt, $count, $key_size, true);
@@ -82,63 +73,49 @@ public function getKeyManagementMode(): string
return self::MODE_WRAP;
}
- /**
- * @throws InvalidArgumentException if the key type is invalid
- * @throws InvalidArgumentException if the key parameter "k" is missing or invalid
- */
protected function getKey(JWK $key): string
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
- if (!$key->has('k')) {
+ if (! $key->has('k')) {
throw new InvalidArgumentException('The key parameter "k" is missing.');
}
$k = $key->get('k');
- if (!is_string($k)) {
+ if (! is_string($k)) {
throw new InvalidArgumentException('The key parameter "k" is invalid.');
}
return Base64UrlSafe::decode($k);
}
- /**
- * @throws InvalidArgumentException if the header parameter "alg" is missing or invalid
- */
protected function checkHeaderAlgorithm(array $header): void
{
- if (!isset($header['alg'])) {
+ if (! isset($header['alg'])) {
throw new InvalidArgumentException('The header parameter "alg" is missing.');
}
- if (!is_string($header['alg'])) {
+ if (! is_string($header['alg'])) {
throw new InvalidArgumentException('The header parameter "alg" is not valid.');
}
}
- /**
- * @throws InvalidArgumentException if the header parameter "p2s" is missing or invalid
- * @throws InvalidArgumentException if the header parameter "p2c" is missing or invalid
- */
protected function checkHeaderAdditionalParameters(array $header): void
{
- if (!isset($header['p2s'])) {
+ if (! isset($header['p2s'])) {
throw new InvalidArgumentException('The header parameter "p2s" is missing.');
}
- if (!is_string($header['p2s'])) {
+ if (! is_string($header['p2s'])) {
throw new InvalidArgumentException('The header parameter "p2s" is not valid.');
}
- if (!isset($header['p2c'])) {
+ if (! isset($header['p2c'])) {
throw new InvalidArgumentException('The header parameter "p2c" is missing.');
}
- if (!is_int($header['p2c']) || $header['p2c'] <= 0) {
+ if (! is_int($header['p2c']) || $header['p2c'] <= 0) {
throw new InvalidArgumentException('The header parameter "p2c" is not valid.');
}
}
- /**
- * @return \AESKW\A128KW|\AESKW\A192KW|\AESKW\A256KW
- */
- abstract protected function getWrapper();
+ abstract protected function getWrapper(): A256KW|A128KW|A192KW;
abstract protected function getHashAlgorithm(): string;
diff --git a/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS256A128KW.php b/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS256A128KW.php
index 16f94bb9..645ac0f2 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS256A128KW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS256A128KW.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use AESKW\A128KW as Wrapper;
@@ -22,7 +13,7 @@ public function name(): string
return 'PBES2-HS256+A128KW';
}
- protected function getWrapper()
+ protected function getWrapper(): Wrapper
{
return new Wrapper();
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS384A192KW.php b/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS384A192KW.php
index dd849234..018218ea 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS384A192KW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS384A192KW.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use AESKW\A192KW as Wrapper;
@@ -22,7 +13,7 @@ public function name(): string
return 'PBES2-HS384+A192KW';
}
- protected function getWrapper()
+ protected function getWrapper(): Wrapper
{
return new Wrapper();
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS512A256KW.php b/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS512A256KW.php
index f6cad868..adf30c15 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS512A256KW.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2HS512A256KW.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use AESKW\A256KW as Wrapper;
@@ -22,7 +13,7 @@ public function name(): string
return 'PBES2-HS512+A256KW';
}
- protected function getWrapper()
+ protected function getWrapper(): Wrapper
{
return new Wrapper();
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA.php b/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA.php
index 015fc728..456d2f5e 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use function in_array;
@@ -34,13 +25,10 @@ public function encryptKey(JWK $key, string $cek, array $completeHeader, array &
return RSACrypt::encrypt($pub, $cek, $this->getEncryptionMode(), $this->getHashAlgorithm());
}
- /**
- * @throws InvalidArgumentException if the key is not private
- */
public function decryptKey(JWK $key, string $encrypted_cek, array $header): string
{
$this->checkKey($key);
- if (!$key->has('d')) {
+ if (! $key->has('d')) {
throw new InvalidArgumentException('The key is not a private key');
}
$priv = RSAKey::createFromJWK($key);
@@ -53,12 +41,9 @@ public function getKeyManagementMode(): string
return self::MODE_ENCRYPT;
}
- /**
- * @throws InvalidArgumentException if the key type is not allowed
- */
protected function checkKey(JWK $key): void
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA15.php b/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA15.php
index 8bfa2584..0480e214 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA15.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA15.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use Jose\Component\Encryption\Algorithm\KeyEncryption\Util\RSACrypt;
diff --git a/src/EncryptionAlgorithm/KeyEncryption/RSA/RSAOAEP.php b/src/EncryptionAlgorithm/KeyEncryption/RSA/RSAOAEP.php
index b309661e..6c7ea250 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/RSA/RSAOAEP.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/RSA/RSAOAEP.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use Jose\Component\Encryption\Algorithm\KeyEncryption\Util\RSACrypt;
diff --git a/src/EncryptionAlgorithm/KeyEncryption/RSA/RSAOAEP256.php b/src/EncryptionAlgorithm/KeyEncryption/RSA/RSAOAEP256.php
index d736c925..3169b022 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/RSA/RSAOAEP256.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/RSA/RSAOAEP256.php
@@ -2,15 +2,6 @@
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\Algorithm\KeyEncryption;
use Jose\Component\Encryption\Algorithm\KeyEncryption\Util\RSACrypt;
diff --git a/src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php b/src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php
index 49d290ac..00bb37cd 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php
+++ b/src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php
@@ -2,31 +2,22 @@
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\Algorithm\KeyEncryption\Util;
use function chr;
use function count;
use InvalidArgumentException;
-use function is_array;
use Jose\Component\Core\Util\BigInteger;
use Jose\Component\Core\Util\Hash;
use Jose\Component\Core\Util\RSAKey;
use function ord;
use RuntimeException;
+use const STR_PAD_LEFT;
/**
* @internal
*/
-class RSACrypt
+final class RSACrypt
{
/**
* Optimal Asymmetric Encryption Padding (OAEP).
@@ -40,30 +31,20 @@ class RSACrypt
public static function encrypt(RSAKey $key, string $data, int $mode, ?string $hash = null): string
{
- switch ($mode) {
- case self::ENCRYPTION_OAEP:
- return self::encryptWithRSAOAEP($key, $data, $hash);
-
- case self::ENCRYPTION_PKCS1:
- return self::encryptWithRSA15($key, $data);
-
- default:
- throw new InvalidArgumentException('Unsupported mode.');
- }
+ return match ($mode) {
+ self::ENCRYPTION_OAEP => self::encryptWithRSAOAEP($key, $data, $hash),
+ self::ENCRYPTION_PKCS1 => self::encryptWithRSA15($key, $data),
+ default => throw new InvalidArgumentException('Unsupported mode.'),
+ };
}
public static function decrypt(RSAKey $key, string $plaintext, int $mode, ?string $hash = null): string
{
- switch ($mode) {
- case self::ENCRYPTION_OAEP:
- return self::decryptWithRSAOAEP($key, $plaintext, $hash);
-
- case self::ENCRYPTION_PKCS1:
- return self::decryptWithRSA15($key, $plaintext);
-
- default:
- throw new InvalidArgumentException('Unsupported mode.');
- }
+ return match ($mode) {
+ self::ENCRYPTION_OAEP => self::decryptWithRSAOAEP($key, $plaintext, $hash),
+ self::ENCRYPTION_PKCS1 => self::decryptWithRSA15($key, $plaintext),
+ default => throw new InvalidArgumentException('Unsupported mode.'),
+ };
}
public static function encryptWithRSA15(RSAKey $key, string $data): string
@@ -81,7 +62,7 @@ public static function encryptWithRSA15(RSAKey $key, string $data): string
$ps .= $temp;
}
$type = 2;
- $data = chr(0).chr($type).$ps.chr(0).$data;
+ $data = chr(0) . chr($type) . $ps . chr(0) . $data;
$data = BigInteger::createFromBinaryString($data);
$c = self::getRSAEP($key, $data);
@@ -97,7 +78,7 @@ public static function decryptWithRSA15(RSAKey $key, string $c): string
$c = BigInteger::createFromBinaryString($c);
$m = self::getRSADP($key, $c);
$em = self::convertIntegerToOctetString($m, $key->getModulusLength());
- if (0 !== ord($em[0]) || ord($em[1]) > 2) {
+ if (ord($em[0]) !== 0 || ord($em[1]) > 2) {
throw new InvalidArgumentException('Unable to decrypt');
}
$ps = mb_substr($em, 2, (int) mb_strpos($em, chr(0), 2, '8bit') - 2, '8bit');
@@ -117,15 +98,12 @@ public static function encryptWithRSAOAEP(RSAKey $key, string $plaintext, string
/** @var Hash $hash */
$hash = Hash::$hash_algorithm();
$length = $key->getModulusLength() - 2 * $hash->getLength() - 2;
- if (0 >= $length) {
+ if ($length <= 0) {
throw new RuntimeException();
}
- $plaintext = mb_str_split($plaintext, $length, '8bit');
- if (!is_array($plaintext)) {
- throw new RuntimeException('Invalid payload');
- }
+ $splitPlaintext = mb_str_split($plaintext, $length, '8bit');
$ciphertext = '';
- foreach ($plaintext as $m) {
+ foreach ($splitPlaintext as $m) {
$ciphertext .= self::encryptRSAESOAEP($key, $m, $hash);
}
@@ -137,17 +115,19 @@ public static function encryptWithRSAOAEP(RSAKey $key, string $plaintext, string
*/
public static function decryptWithRSAOAEP(RSAKey $key, string $ciphertext, string $hash_algorithm): string
{
- if (0 >= $key->getModulusLength()) {
+ if ($key->getModulusLength() <= 0) {
throw new RuntimeException('Invalid modulus length');
}
$hash = Hash::$hash_algorithm();
- $ciphertext = mb_str_split($ciphertext, $key->getModulusLength(), '8bit');
- if (!is_array($ciphertext)) {
- throw new RuntimeException('Invalid ciphertext');
- }
- $ciphertext[count($ciphertext) - 1] = str_pad($ciphertext[count($ciphertext) - 1], $key->getModulusLength(), chr(0), STR_PAD_LEFT);
+ $splitCiphertext = mb_str_split($ciphertext, $key->getModulusLength(), '8bit');
+ $splitCiphertext[count($splitCiphertext) - 1] = str_pad(
+ $splitCiphertext[count($splitCiphertext) - 1],
+ $key->getModulusLength(),
+ chr(0),
+ STR_PAD_LEFT
+ );
$plaintext = '';
- foreach ($ciphertext as $c) {
+ foreach ($splitCiphertext as $c) {
$temp = self::getRSAESOAEP($key, $c, $hash);
$plaintext .= $temp;
}
@@ -206,7 +186,7 @@ private static function getMGF1(string $mgfSeed, int $maskLen, Hash $mgfHash): s
$count = ceil($maskLen / $mgfHash->getLength());
for ($i = 0; $i < $count; ++$i) {
$c = pack('N', $i);
- $t .= $mgfHash->hash($mgfSeed.$c);
+ $t .= $mgfHash->hash($mgfSeed . $c);
}
return mb_substr($t, 0, $maskLen, '8bit');
@@ -220,13 +200,13 @@ private static function encryptRSAESOAEP(RSAKey $key, string $m, Hash $hash): st
$mLen = mb_strlen($m, '8bit');
$lHash = $hash->hash('');
$ps = str_repeat(chr(0), $key->getModulusLength() - $mLen - 2 * $hash->getLength() - 2);
- $db = $lHash.$ps.chr(1).$m;
+ $db = $lHash . $ps . chr(1) . $m;
$seed = random_bytes($hash->getLength());
$dbMask = self::getMGF1($seed, $key->getModulusLength() - $hash->getLength() - 1, $hash/*MGF*/);
$maskedDB = $db ^ $dbMask;
$seedMask = self::getMGF1($maskedDB, $hash->getLength(), $hash/*MGF*/);
$maskedSeed = $seed ^ $seedMask;
- $em = chr(0).$maskedSeed.$maskedDB;
+ $em = chr(0) . $maskedSeed . $maskedDB;
$m = self::convertOctetStringToInteger($em);
$c = self::getRSAEP($key, $m);
@@ -251,11 +231,11 @@ private static function getRSAESOAEP(RSAKey $key, string $c, Hash $hash): string
$db = $maskedDB ^ $dbMask;
$lHash2 = mb_substr($db, 0, $hash->getLength(), '8bit');
$m = mb_substr($db, $hash->getLength(), null, '8bit');
- if (!hash_equals($lHash, $lHash2)) {
+ if (! hash_equals($lHash, $lHash2)) {
throw new RuntimeException();
}
$m = ltrim($m, chr(0));
- if (1 !== ord($m[0])) {
+ if (ord($m[0]) !== 1) {
throw new RuntimeException();
}
diff --git a/src/EncryptionAlgorithm/KeyEncryption/RSA/composer.json b/src/EncryptionAlgorithm/KeyEncryption/RSA/composer.json
index 0ad9903e..7b019e78 100644
--- a/src/EncryptionAlgorithm/KeyEncryption/RSA/composer.json
+++ b/src/EncryptionAlgorithm/KeyEncryption/RSA/composer.json
@@ -20,7 +20,7 @@
}
},
"require": {
- "brick/math": "^0.8.17|^0.9",
+ "brick/math": "^0.9",
"ext-openssl": "*",
"symfony/polyfill-mbstring": "^1.12",
"web-token/jwt-encryption": "^2.1"
diff --git a/src/SignatureAlgorithm/ECDSA/ECDSA.php b/src/SignatureAlgorithm/ECDSA/ECDSA.php
index 75b28a26..e40c0a07 100644
--- a/src/SignatureAlgorithm/ECDSA/ECDSA.php
+++ b/src/SignatureAlgorithm/ECDSA/ECDSA.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use function defined;
@@ -26,7 +17,7 @@ abstract class ECDSA implements SignatureAlgorithm
{
public function __construct()
{
- if (!defined('OPENSSL_KEYTYPE_EC')) {
+ if (! defined('OPENSSL_KEYTYPE_EC')) {
throw new LogicException('Elliptic Curve key type not supported by your environment.');
}
}
@@ -39,7 +30,7 @@ public function allowedKeyTypes(): array
public function sign(JWK $key, string $input): string
{
$this->checkKey($key);
- if (!$key->has('d')) {
+ if (! $key->has('d')) {
throw new InvalidArgumentException('The EC key is not private');
}
$pem = ECKey::convertPrivateKeyToPEM($key);
@@ -56,8 +47,8 @@ public function verify(JWK $key, string $input, string $signature): bool
$der = ECSignature::toAsn1($signature, $this->getSignaturePartLength());
$pem = ECKey::convertPublicKeyToPEM($key);
- return 1 === openssl_verify($input, $der, $pem, $this->getHashAlgorithm());
- } catch (Throwable $e) {
+ return openssl_verify($input, $der, $pem, $this->getHashAlgorithm()) === 1;
+ } catch (Throwable) {
return false;
}
}
@@ -68,11 +59,11 @@ abstract protected function getSignaturePartLength(): int;
private function checkKey(JWK $key): void
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
foreach (['x', 'y', 'crv'] as $k) {
- if (!$key->has($k)) {
+ if (! $key->has($k)) {
throw new InvalidArgumentException(sprintf('The key parameter "%s" is missing.', $k));
}
}
diff --git a/src/SignatureAlgorithm/ECDSA/ES256.php b/src/SignatureAlgorithm/ECDSA/ES256.php
index 1999e7d4..926cde02 100644
--- a/src/SignatureAlgorithm/ECDSA/ES256.php
+++ b/src/SignatureAlgorithm/ECDSA/ES256.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class ES256 extends ECDSA
diff --git a/src/SignatureAlgorithm/ECDSA/ES384.php b/src/SignatureAlgorithm/ECDSA/ES384.php
index 70dc2347..764a6aed 100644
--- a/src/SignatureAlgorithm/ECDSA/ES384.php
+++ b/src/SignatureAlgorithm/ECDSA/ES384.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class ES384 extends ECDSA
diff --git a/src/SignatureAlgorithm/ECDSA/ES512.php b/src/SignatureAlgorithm/ECDSA/ES512.php
index 0039d5e5..70cfee7d 100644
--- a/src/SignatureAlgorithm/ECDSA/ES512.php
+++ b/src/SignatureAlgorithm/ECDSA/ES512.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class ES512 extends ECDSA
diff --git a/src/SignatureAlgorithm/EdDSA/EdDSA.php b/src/SignatureAlgorithm/EdDSA/EdDSA.php
index 6a1335c1..390c318a 100644
--- a/src/SignatureAlgorithm/EdDSA/EdDSA.php
+++ b/src/SignatureAlgorithm/EdDSA/EdDSA.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use function extension_loaded;
@@ -22,14 +13,9 @@
final class EdDSA implements SignatureAlgorithm
{
- /**
- * EdDSA constructor.
- *
- * @throws RuntimeException if the extension "sodium" is not available
- */
public function __construct()
{
- if (!extension_loaded('sodium')) {
+ if (! extension_loaded('sodium')) {
throw new RuntimeException('The extension "sodium" is not available. Please install it to use this method');
}
}
@@ -39,45 +25,32 @@ public function allowedKeyTypes(): array
return ['OKP'];
}
- /**
- * @throws InvalidArgumentException if the key is not private
- * @throws InvalidArgumentException if the curve is not supported
- */
public function sign(JWK $key, string $input): string
{
$this->checkKey($key);
- if (!$key->has('d')) {
+ if (! $key->has('d')) {
throw new InvalidArgumentException('The EC key is not private');
}
$x = Base64UrlSafe::decode($key->get('x'));
$d = Base64UrlSafe::decode($key->get('d'));
- $secret = $d.$x;
-
- switch ($key->get('crv')) {
- case 'Ed25519':
- return sodium_crypto_sign_detached($input, $secret);
+ $secret = $d . $x;
- default:
- throw new InvalidArgumentException('Unsupported curve');
- }
+ return match ($key->get('crv')) {
+ 'Ed25519' => sodium_crypto_sign_detached($input, $secret),
+ default => throw new InvalidArgumentException('Unsupported curve'),
+ };
}
- /**
- * @throws InvalidArgumentException if the curve is not supported
- */
public function verify(JWK $key, string $input, string $signature): bool
{
$this->checkKey($key);
$public = Base64UrlSafe::decode($key->get('x'));
- switch ($key->get('crv')) {
- case 'Ed25519':
- return sodium_crypto_sign_verify_detached($signature, $input, $public);
-
- default:
- throw new InvalidArgumentException('Unsupported curve');
- }
+ return match ($key->get('crv')) {
+ 'Ed25519' => sodium_crypto_sign_verify_detached($signature, $input, $public),
+ default => throw new InvalidArgumentException('Unsupported curve'),
+ };
}
public function name(): string
@@ -85,22 +58,17 @@ public function name(): string
return 'EdDSA';
}
- /**
- * @throws InvalidArgumentException if the key type is not valid
- * @throws InvalidArgumentException if a mandatory key parameter is missing
- * @throws InvalidArgumentException if the curve is not suuported
- */
private function checkKey(JWK $key): void
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
foreach (['x', 'crv'] as $k) {
- if (!$key->has($k)) {
+ if (! $key->has($k)) {
throw new InvalidArgumentException(sprintf('The key parameter "%s" is missing.', $k));
}
}
- if ('Ed25519' !== $key->get('crv')) {
+ if ($key->get('crv') !== 'Ed25519') {
throw new InvalidArgumentException('Unsupported curve.');
}
}
diff --git a/src/SignatureAlgorithm/Experimental/ES256K.php b/src/SignatureAlgorithm/Experimental/ES256K.php
index 8392da70..bcca8594 100644
--- a/src/SignatureAlgorithm/Experimental/ES256K.php
+++ b/src/SignatureAlgorithm/Experimental/ES256K.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class ES256K extends ECDSA
diff --git a/src/SignatureAlgorithm/Experimental/HS1.php b/src/SignatureAlgorithm/Experimental/HS1.php
index 98cdec4d..7b409a21 100644
--- a/src/SignatureAlgorithm/Experimental/HS1.php
+++ b/src/SignatureAlgorithm/Experimental/HS1.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class HS1 extends HMAC
diff --git a/src/SignatureAlgorithm/Experimental/HS256_64.php b/src/SignatureAlgorithm/Experimental/HS256_64.php
index dc306b3f..f5618dc6 100644
--- a/src/SignatureAlgorithm/Experimental/HS256_64.php
+++ b/src/SignatureAlgorithm/Experimental/HS256_64.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use Jose\Component\Core\JWK;
diff --git a/src/SignatureAlgorithm/Experimental/RS1.php b/src/SignatureAlgorithm/Experimental/RS1.php
index ef6ce193..a000073b 100644
--- a/src/SignatureAlgorithm/Experimental/RS1.php
+++ b/src/SignatureAlgorithm/Experimental/RS1.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class RS1 extends RSAPKCS1
diff --git a/src/SignatureAlgorithm/HMAC/HMAC.php b/src/SignatureAlgorithm/HMAC/HMAC.php
index 7503819d..bd192378 100644
--- a/src/SignatureAlgorithm/HMAC/HMAC.php
+++ b/src/SignatureAlgorithm/HMAC/HMAC.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use function in_array;
@@ -38,19 +29,16 @@ public function hash(JWK $key, string $input): string
return hash_hmac($this->getHashAlgorithm(), $input, $k, true);
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
protected function getKey(JWK $key): string
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
- if (!$key->has('k')) {
+ if (! $key->has('k')) {
throw new InvalidArgumentException('The key parameter "k" is missing.');
}
$k = $key->get('k');
- if (!is_string($k)) {
+ if (! is_string($k)) {
throw new InvalidArgumentException('The key parameter "k" is invalid.');
}
diff --git a/src/SignatureAlgorithm/HMAC/HS256.php b/src/SignatureAlgorithm/HMAC/HS256.php
index a1790139..a27f67eb 100644
--- a/src/SignatureAlgorithm/HMAC/HS256.php
+++ b/src/SignatureAlgorithm/HMAC/HS256.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use InvalidArgumentException;
@@ -28,9 +19,6 @@ protected function getHashAlgorithm(): string
return 'sha256';
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
protected function getKey(JWK $key): string
{
$k = parent::getKey($key);
diff --git a/src/SignatureAlgorithm/HMAC/HS384.php b/src/SignatureAlgorithm/HMAC/HS384.php
index c0a256c3..17fc5c9a 100644
--- a/src/SignatureAlgorithm/HMAC/HS384.php
+++ b/src/SignatureAlgorithm/HMAC/HS384.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use InvalidArgumentException;
@@ -28,9 +19,6 @@ protected function getHashAlgorithm(): string
return 'sha384';
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
protected function getKey(JWK $key): string
{
$k = parent::getKey($key);
diff --git a/src/SignatureAlgorithm/HMAC/HS512.php b/src/SignatureAlgorithm/HMAC/HS512.php
index c6fe352c..4bbbd24b 100644
--- a/src/SignatureAlgorithm/HMAC/HS512.php
+++ b/src/SignatureAlgorithm/HMAC/HS512.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use InvalidArgumentException;
@@ -28,9 +19,6 @@ protected function getHashAlgorithm(): string
return 'sha512';
}
- /**
- * @throws InvalidArgumentException if the key is invalid
- */
protected function getKey(JWK $key): string
{
$k = parent::getKey($key);
diff --git a/src/SignatureAlgorithm/None/None.php b/src/SignatureAlgorithm/None/None.php
index 0df1923f..41c100b5 100644
--- a/src/SignatureAlgorithm/None/None.php
+++ b/src/SignatureAlgorithm/None/None.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use function in_array;
@@ -33,7 +24,7 @@ public function sign(JWK $key, string $input): string
public function verify(JWK $key, string $input, string $signature): bool
{
- return '' === $signature;
+ return $signature === '';
}
public function name(): string
@@ -41,12 +32,9 @@ public function name(): string
return 'none';
}
- /**
- * @throws InvalidArgumentException if the key type is invalid
- */
private function checkKey(JWK $key): void
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
}
diff --git a/src/SignatureAlgorithm/RSA/PS256.php b/src/SignatureAlgorithm/RSA/PS256.php
index dfaabd58..8b4ea316 100644
--- a/src/SignatureAlgorithm/RSA/PS256.php
+++ b/src/SignatureAlgorithm/RSA/PS256.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class PS256 extends RSAPSS
diff --git a/src/SignatureAlgorithm/RSA/PS384.php b/src/SignatureAlgorithm/RSA/PS384.php
index 6b8499d6..36f37df2 100644
--- a/src/SignatureAlgorithm/RSA/PS384.php
+++ b/src/SignatureAlgorithm/RSA/PS384.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class PS384 extends RSAPSS
diff --git a/src/SignatureAlgorithm/RSA/PS512.php b/src/SignatureAlgorithm/RSA/PS512.php
index 596d9ef9..929b989e 100644
--- a/src/SignatureAlgorithm/RSA/PS512.php
+++ b/src/SignatureAlgorithm/RSA/PS512.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class PS512 extends RSAPSS
diff --git a/src/SignatureAlgorithm/RSA/RS256.php b/src/SignatureAlgorithm/RSA/RS256.php
index 9c4f9103..02f6bd7f 100644
--- a/src/SignatureAlgorithm/RSA/RS256.php
+++ b/src/SignatureAlgorithm/RSA/RS256.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class RS256 extends RSAPKCS1
diff --git a/src/SignatureAlgorithm/RSA/RS384.php b/src/SignatureAlgorithm/RSA/RS384.php
index 03e658a4..13d6893a 100644
--- a/src/SignatureAlgorithm/RSA/RS384.php
+++ b/src/SignatureAlgorithm/RSA/RS384.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class RS384 extends RSAPKCS1
diff --git a/src/SignatureAlgorithm/RSA/RS512.php b/src/SignatureAlgorithm/RSA/RS512.php
index b95ae00a..cb9f3f00 100644
--- a/src/SignatureAlgorithm/RSA/RS512.php
+++ b/src/SignatureAlgorithm/RSA/RS512.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
final class RS512 extends RSAPKCS1
diff --git a/src/SignatureAlgorithm/RSA/RSA.php b/src/SignatureAlgorithm/RSA/RSA.php
deleted file mode 100644
index 7890686b..00000000
--- a/src/SignatureAlgorithm/RSA/RSA.php
+++ /dev/null
@@ -1,74 +0,0 @@
-checkKey($key);
- $pub = RSAKey::createFromJWK($key->toPublic());
-
- return JoseRSA::verify($pub, $input, $signature, $this->getAlgorithm(), $this->getSignatureMethod());
- }
-
- /**
- * @throws InvalidArgumentException if the key is not private
- */
- public function sign(JWK $key, string $input): string
- {
- $this->checkKey($key);
- if (!$key->has('d')) {
- throw new InvalidArgumentException('The key is not a private key.');
- }
-
- $priv = RSAKey::createFromJWK($key);
-
- return JoseRSA::sign($priv, $input, $this->getAlgorithm(), $this->getSignatureMethod());
- }
-
- abstract protected function getAlgorithm(): string;
-
- abstract protected function getSignatureMethod(): int;
-
- /**
- * @throws InvalidArgumentException if the key type is not allowed
- * @throws InvalidArgumentException if the key is invalid
- */
- private function checkKey(JWK $key): void
- {
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
- throw new InvalidArgumentException('Wrong key type.');
- }
- foreach (['n', 'e'] as $k) {
- if (!$key->has($k)) {
- throw new InvalidArgumentException(sprintf('The key parameter "%s" is missing.', $k));
- }
- }
- }
-}
diff --git a/src/SignatureAlgorithm/RSA/RSAPKCS1.php b/src/SignatureAlgorithm/RSA/RSAPKCS1.php
index da2fd807..573b1ee1 100644
--- a/src/SignatureAlgorithm/RSA/RSAPKCS1.php
+++ b/src/SignatureAlgorithm/RSA/RSAPKCS1.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use function in_array;
@@ -31,24 +22,20 @@ public function verify(JWK $key, string $input, string $signature): bool
$this->checkKey($key);
$pub = RSAKey::createFromJWK($key->toPublic());
- return 1 === openssl_verify($input, $signature, $pub->toPEM(), $this->getAlgorithm());
+ return openssl_verify($input, $signature, $pub->toPEM(), $this->getAlgorithm()) === 1;
}
- /**
- * @throws InvalidArgumentException if the key is not private
- * @throws InvalidArgumentException if the data cannot be signed
- */
public function sign(JWK $key, string $input): string
{
$this->checkKey($key);
- if (!$key->has('d')) {
+ if (! $key->has('d')) {
throw new InvalidArgumentException('The key is not a private key.');
}
$priv = RSAKey::createFromJWK($key);
$result = openssl_sign($input, $signature, $priv->toPEM(), $this->getAlgorithm());
- if (true !== $result) {
+ if ($result !== true) {
throw new RuntimeException('Unable to sign');
}
@@ -57,17 +44,13 @@ public function sign(JWK $key, string $input): string
abstract protected function getAlgorithm(): string;
- /**
- * @throws InvalidArgumentException if the key type is not allowed
- * @throws InvalidArgumentException if the key is not valid
- */
private function checkKey(JWK $key): void
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
foreach (['n', 'e'] as $k) {
- if (!$key->has($k)) {
+ if (! $key->has($k)) {
throw new InvalidArgumentException(sprintf('The key parameter "%s" is missing.', $k));
}
}
diff --git a/src/SignatureAlgorithm/RSA/RSAPSS.php b/src/SignatureAlgorithm/RSA/RSAPSS.php
index 9112c417..982cd25a 100644
--- a/src/SignatureAlgorithm/RSA/RSAPSS.php
+++ b/src/SignatureAlgorithm/RSA/RSAPSS.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm;
use function in_array;
@@ -34,13 +25,10 @@ public function verify(JWK $key, string $input, string $signature): bool
return JoseRSA::verify($pub, $input, $signature, $this->getAlgorithm(), JoseRSA::SIGNATURE_PSS);
}
- /**
- * @throws InvalidArgumentException if the key is not private
- */
public function sign(JWK $key, string $input): string
{
$this->checkKey($key);
- if (!$key->has('d')) {
+ if (! $key->has('d')) {
throw new InvalidArgumentException('The key is not a private key.');
}
@@ -51,17 +39,13 @@ public function sign(JWK $key, string $input): string
abstract protected function getAlgorithm(): string;
- /**
- * @throws InvalidArgumentException if the key type is not allowed
- * @throws InvalidArgumentException if the key is not valid
- */
private function checkKey(JWK $key): void
{
- if (!in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
+ if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) {
throw new InvalidArgumentException('Wrong key type.');
}
foreach (['n', 'e'] as $k) {
- if (!$key->has($k)) {
+ if (! $key->has($k)) {
throw new InvalidArgumentException(sprintf('The key parameter "%s" is missing.', $k));
}
}
diff --git a/src/SignatureAlgorithm/RSA/Util/RSA.php b/src/SignatureAlgorithm/RSA/Util/RSA.php
index b0f7e313..f8458eee 100644
--- a/src/SignatureAlgorithm/RSA/Util/RSA.php
+++ b/src/SignatureAlgorithm/RSA/Util/RSA.php
@@ -2,15 +2,6 @@
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\Signature\Algorithm\Util;
use function chr;
@@ -20,11 +11,12 @@
use Jose\Component\Core\Util\RSAKey;
use function ord;
use RuntimeException;
+use const STR_PAD_LEFT;
/**
* @internal
*/
-class RSA
+final class RSA
{
/**
* Probabilistic Signature Scheme.
@@ -36,10 +28,6 @@ class RSA
*/
public const SIGNATURE_PKCS1 = 2;
- /**
- * @throws RuntimeException if the data cannot be signed
- * @throws InvalidArgumentException if the signature mode is not supported
- */
public static function sign(RSAKey $key, string $message, string $hash, int $mode): string
{
switch ($mode) {
@@ -48,7 +36,7 @@ public static function sign(RSAKey $key, string $message, string $hash, int $mod
case self::SIGNATURE_PKCS1:
$result = openssl_sign($message, $signature, $key->toPEM(), $hash);
- if (true !== $result) {
+ if ($result !== true) {
throw new RuntimeException('Unable to sign the data');
}
@@ -71,41 +59,17 @@ public static function signWithPSS(RSAKey $key, string $message, string $hash):
return self::convertIntegerToOctetString($signature, $key->getModulusLength());
}
- /**
- * Create a signature.
- *
- * @deprecated Please use openssl_sign
- */
- public static function signWithPKCS15(RSAKey $key, string $message, string $hash): string
- {
- $em = self::encodeEMSA15($message, $key->getModulusLength(), Hash::$hash());
- $message = BigInteger::createFromBinaryString($em);
- $signature = RSAKey::exponentiate($key, $message);
-
- return self::convertIntegerToOctetString($signature, $key->getModulusLength());
- }
-
- /**
- * @throws InvalidArgumentException if the signature mode is not supported
- */
public static function verify(RSAKey $key, string $message, string $signature, string $hash, int $mode): bool
{
- switch ($mode) {
- case self::SIGNATURE_PSS:
- return self::verifyWithPSS($key, $message, $signature, $hash);
-
- case self::SIGNATURE_PKCS1:
- return 1 === openssl_verify($message, $signature, $key->toPEM(), $hash);
-
- default:
- throw new InvalidArgumentException('Unsupported mode.');
- }
+ return match ($mode) {
+ self::SIGNATURE_PSS => self::verifyWithPSS($key, $message, $signature, $hash),
+ self::SIGNATURE_PKCS1 => openssl_verify($message, $signature, $key->toPEM(), $hash) === 1,
+ default => throw new InvalidArgumentException('Unsupported mode.'),
+ };
}
/**
* Verifies a signature.
- *
- * @throws RuntimeException if the signature cannot be verified
*/
public static function verifyWithPSS(RSAKey $key, string $message, string $signature, string $hash): bool
{
@@ -120,28 +84,6 @@ public static function verifyWithPSS(RSAKey $key, string $message, string $signa
return self::verifyEMSAPSS($message, $em, $modBits - 1, Hash::$hash());
}
- /**
- * Verifies a signature.
- *
- * @deprecated Please use openssl_sign
- *
- * @throws RuntimeException if the signature cannot be verified
- */
- public static function verifyWithPKCS15(RSAKey $key, string $message, string $signature, string $hash): bool
- {
- if (mb_strlen($signature, '8bit') !== $key->getModulusLength()) {
- throw new RuntimeException();
- }
- $signature = BigInteger::createFromBinaryString($signature);
- $m2 = RSAKey::exponentiate($key, $signature);
- $em = self::convertIntegerToOctetString($m2, $key->getModulusLength());
-
- return hash_equals($em, self::encodeEMSA15($message, $key->getModulusLength(), Hash::$hash()));
- }
-
- /**
- * @throws RuntimeException if the value cannot be converted
- */
private static function convertIntegerToOctetString(BigInteger $x, int $xLen): string
{
$x = $x->toBytes();
@@ -161,7 +103,7 @@ private static function getMGF1(string $mgfSeed, int $maskLen, Hash $mgfHash): s
$count = ceil($maskLen / $mgfHash->getLength());
for ($i = 0; $i < $count; ++$i) {
$c = pack('N', $i);
- $t .= $mgfHash->hash($mgfSeed.$c);
+ $t .= $mgfHash->hash($mgfSeed . $c);
}
return mb_substr($t, 0, $maskLen, '8bit');
@@ -169,8 +111,6 @@ private static function getMGF1(string $mgfSeed, int $maskLen, Hash $mgfHash): s
/**
* EMSA-PSS-ENCODE.
- *
- * @throws RuntimeException if the message length is invalid
*/
private static function encodeEMSAPSS(string $message, int $modulusLength, Hash $hash): string
{
@@ -181,22 +121,19 @@ private static function encodeEMSAPSS(string $message, int $modulusLength, Hash
throw new RuntimeException();
}
$salt = random_bytes($sLen);
- $m2 = "\0\0\0\0\0\0\0\0".$mHash.$salt;
+ $m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt;
$h = $hash->hash($m2);
$ps = str_repeat(chr(0), $emLen - $sLen - $hash->getLength() - 2);
- $db = $ps.chr(1).$salt;
+ $db = $ps . chr(1) . $salt;
$dbMask = self::getMGF1($h, $emLen - $hash->getLength() - 1, $hash);
$maskedDB = $db ^ $dbMask;
$maskedDB[0] = ~chr(0xFF << ($modulusLength & 7)) & $maskedDB[0];
- $em = $maskedDB.$h.chr(0xBC);
- return $em;
+ return $maskedDB . $h . chr(0xBC);
}
/**
* EMSA-PSS-VERIFY.
- *
- * @throws InvalidArgumentException if the signature cannot be verified
*/
private static function verifyEMSAPSS(string $m, string $em, int $emBits, Hash $hash): bool
{
@@ -222,30 +159,13 @@ private static function verifyEMSAPSS(string $m, string $em, int $emBits, Hash $
if (mb_substr($db, 0, $temp, '8bit') !== str_repeat(chr(0), $temp)) {
throw new InvalidArgumentException();
}
- if (1 !== ord($db[$temp])) {
+ if (ord($db[$temp]) !== 1) {
throw new InvalidArgumentException();
}
$salt = mb_substr($db, $temp + 1, null, '8bit'); // should be $sLen long
- $m2 = "\0\0\0\0\0\0\0\0".$mHash.$salt;
+ $m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt;
$h2 = $hash->hash($m2);
return hash_equals($h, $h2);
}
-
- /**
- * @throws RuntimeException if the value cannot be encoded
- */
- private static function encodeEMSA15(string $m, int $emBits, Hash $hash): string
- {
- $h = $hash->hash($m);
- $t = $hash->t();
- $t .= $h;
- $tLen = mb_strlen($t, '8bit');
- if ($emBits < $tLen + 11) {
- throw new RuntimeException();
- }
- $ps = str_repeat(chr(0xFF), $emBits - $tLen - 3);
-
- return "\0\1{$ps}\0{$t}";
- }
}
diff --git a/src/SignatureAlgorithm/RSA/composer.json b/src/SignatureAlgorithm/RSA/composer.json
index eb57efa8..ae03f8c9 100644
--- a/src/SignatureAlgorithm/RSA/composer.json
+++ b/src/SignatureAlgorithm/RSA/composer.json
@@ -20,7 +20,7 @@
}
},
"require": {
- "brick/math": "^0.8.17|^0.9",
+ "brick/math": "^0.9",
"ext-openssl": "*",
"web-token/jwt-signature": "^2.1"
},
diff --git a/tests/Bundle/JoseFramework/AppKernel.php b/tests/Bundle/JoseFramework/AppKernel.php
index 92fb2217..6e5db505 100644
--- a/tests/Bundle/JoseFramework/AppKernel.php
+++ b/tests/Bundle/JoseFramework/AppKernel.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework;
/*
@@ -29,9 +20,6 @@
use Symfony\Component\HttpKernel\Bundle\BundleInterface;
use Symfony\Component\HttpKernel\Kernel;
-/**
- * Class AppKernel.
- */
class AppKernel extends Kernel
{
public function __construct(string $environment)
@@ -44,15 +32,11 @@ public function __construct(string $environment)
*/
public function registerBundles(): array
{
- return [
- new FrameworkBundle(),
- new JoseFrameworkBundle(),
- new TestBundle(),
- ];
+ return [new FrameworkBundle(), new JoseFrameworkBundle(), new TestBundle()];
}
public function registerContainerConfiguration(LoaderInterface $loader): void
{
- $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
+ $loader->load(__DIR__ . '/config/config_' . $this->getEnvironment() . '.yml');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Checker/ClaimCheckerTest.php b/tests/Bundle/JoseFramework/Functional/Checker/ClaimCheckerTest.php
index 4b81978d..b7531f59 100644
--- a/tests/Bundle/JoseFramework/Functional/Checker/ClaimCheckerTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Checker/ClaimCheckerTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Checker;
use Jose\Bundle\JoseFramework\Services\ClaimCheckerManagerFactory as ClaimCheckerManagerFactoryService;
@@ -19,16 +10,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class ClaimCheckerTest extends WebTestCase
+final class ClaimCheckerTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(ClaimCheckerManagerFactory::class)) {
+ if (! class_exists(ClaimCheckerManagerFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-checker" is not installed.');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Checker/ConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/Checker/ConfigurationTest.php
index b0f26116..27fdfb5b 100644
--- a/tests/Bundle/JoseFramework/Functional/Checker/ConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Checker/ConfigurationTest.php
@@ -2,36 +2,25 @@
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\Tests\Bundle\JoseFramework\Functional\Checker;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Checker\CheckerSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
use Jose\Component\Checker\ClaimCheckerManagerFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group Configuration
- *
* @internal
*/
-class ConfigurationTest extends TestCase
+final class ConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(ClaimCheckerManagerFactory::class)) {
+ if (! class_exists(ClaimCheckerManagerFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-checker" is not installed.');
}
}
@@ -41,9 +30,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -51,11 +38,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- ['checkers' => false],
- ]
- );
+ 'checkers' => false,
+ ],
+ ]);
}
/**
@@ -63,11 +50,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- ['checkers' => []],
- ]
- );
+ 'checkers' => [],
+ ],
+ ]);
}
/**
@@ -75,14 +62,14 @@ public function theConfigurationIsValidIfConfigurationIsEmpty(): void
*/
public function theConfigurationIsValidIfNoHeaderOrClaimCheckerIsSet(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- ['checkers' => [
+ 'checkers' => [
'headers' => [],
'claims' => [],
- ]],
- ]
- );
+ ],
+ ],
+ ]);
}
/**
@@ -92,13 +79,15 @@ public function theHeadersForAHeaderCheckerShouldBeSet(): void
{
$this->assertConfigurationIsInvalid(
[
- ['checkers' => [
- 'headers' => [
- 'foo' => [
- 'is_public' => false,
+ [
+ 'checkers' => [
+ 'headers' => [
+ 'foo' => [
+ 'is_public' => false,
+ ],
],
],
- ]],
+ ],
],
'he child config "headers" under "jose.checkers.headers.foo" must be configured:'
);
@@ -111,14 +100,16 @@ public function aHeaderCheckerMayContainNoChecker(): void
{
$this->assertConfigurationIsValid(
[
- ['checkers' => [
- 'headers' => [
- 'foo' => [
- 'headers' => [],
- 'is_public' => false,
+ [
+ 'checkers' => [
+ 'headers' => [
+ 'foo' => [
+ 'headers' => [],
+ 'is_public' => false,
+ ],
],
],
- ]],
+ ],
]
);
}
@@ -130,13 +121,15 @@ public function theClaimsForAClaimCheckerShouldBeSet(): void
{
$this->assertConfigurationIsInvalid(
[
- ['checkers' => [
- 'claims' => [
- 'foo' => [
- 'is_public' => false,
+ [
+ 'checkers' => [
+ 'claims' => [
+ 'foo' => [
+ 'is_public' => false,
+ ],
],
],
- ]],
+ ],
],
'he child config "claims" under "jose.checkers.claims.foo" must be configured:'
);
@@ -149,23 +142,22 @@ public function aClaimCheckerMayContainNoChecker(): void
{
$this->assertConfigurationIsValid(
[
- ['checkers' => [
- 'claims' => [
- 'foo' => [
- 'claims' => [],
- 'is_public' => false,
+ [
+ 'checkers' => [
+ 'claims' => [
+ 'foo' => [
+ 'claims' => [],
+ 'is_public' => false,
+ ],
],
],
- ]],
+ ],
]
);
}
protected function getConfiguration(): Configuration
{
- return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\Checker\CheckerSource(),
- ]);
+ return new Configuration('jose', [new CoreSource(), new CheckerSource()]);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Checker/HeaderCheckerTest.php b/tests/Bundle/JoseFramework/Functional/Checker/HeaderCheckerTest.php
index 01a8a5b5..21c7a689 100644
--- a/tests/Bundle/JoseFramework/Functional/Checker/HeaderCheckerTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Checker/HeaderCheckerTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Checker;
use Jose\Bundle\JoseFramework\Services\HeaderCheckerManagerFactory as HeaderCheckerManagerFactoryService;
@@ -19,16 +10,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class HeaderCheckerTest extends WebTestCase
+final class HeaderCheckerTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(HeaderCheckerManagerFactory::class)) {
+ if (! class_exists(HeaderCheckerManagerFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-checker" is not installed.');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Console/ConsoleTest.php b/tests/Bundle/JoseFramework/Functional/Console/ConsoleTest.php
index c32d866e..8fd2e35b 100644
--- a/tests/Bundle/JoseFramework/Functional/Console/ConsoleTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Console/ConsoleTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Console;
use Jose\Component\Console\EcKeyGeneratorCommand;
@@ -18,16 +9,13 @@
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class ConsoleTest extends KernelTestCase
+final class ConsoleTest extends KernelTestCase
{
protected function setUp(): void
{
- if (!class_exists(EcKeyGeneratorCommand::class)) {
+ if (! class_exists(EcKeyGeneratorCommand::class)) {
static::markTestSkipped('The component "web-token/jwt-console" is not installed.');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Encryption/JWEBuilderTest.php b/tests/Bundle/JoseFramework/Functional/Encryption/JWEBuilderTest.php
index 0ed66dde..b0b14361 100644
--- a/tests/Bundle/JoseFramework/Functional/Encryption/JWEBuilderTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Encryption/JWEBuilderTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Encryption;
use Jose\Bundle\JoseFramework\Services\JWEBuilder;
@@ -20,16 +11,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class JWEBuilderTest extends WebTestCase
+final class JWEBuilderTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JWEBuilderFactory::class)) {
+ if (! class_exists(JWEBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-encryption" is not installed.');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Encryption/JWEComputationTest.php b/tests/Bundle/JoseFramework/Functional/Encryption/JWEComputationTest.php
index 610da6e0..8ce3f7fa 100644
--- a/tests/Bundle/JoseFramework/Functional/Encryption/JWEComputationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Encryption/JWEComputationTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Encryption;
use Jose\Component\Core\JWK;
@@ -22,16 +13,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class JWEComputationTest extends WebTestCase
+final class JWEComputationTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JWEBuilderFactory::class)) {
+ if (! class_exists(JWEBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-encryption" is not installed.');
}
}
@@ -73,6 +61,6 @@ public function iCanCreateAndLoadAToken(): void
$loaded = $serializer->unserialize($token);
static::assertTrue($loader->decryptUsingKey($loaded, $jwk, 0));
- static::assertEquals('Hello World!', $loaded->getPayload());
+ static::assertSame('Hello World!', $loaded->getPayload());
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Encryption/JWEDecrypterTest.php b/tests/Bundle/JoseFramework/Functional/Encryption/JWEDecrypterTest.php
index efe87498..35906150 100644
--- a/tests/Bundle/JoseFramework/Functional/Encryption/JWEDecrypterTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Encryption/JWEDecrypterTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Encryption;
use Jose\Bundle\JoseFramework\Services\JWEDecrypterFactory as JWEDecrypterFactoryService;
@@ -20,16 +11,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class JWEDecrypterTest extends WebTestCase
+final class JWEDecrypterTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JWEBuilderFactory::class)) {
+ if (! class_exists(JWEBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-encryption" is not installed.');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Encryption/JWELoaderTest.php b/tests/Bundle/JoseFramework/Functional/Encryption/JWELoaderTest.php
index 3d49942f..ee2999e3 100644
--- a/tests/Bundle/JoseFramework/Functional/Encryption/JWELoaderTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Encryption/JWELoaderTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Encryption;
use Jose\Bundle\JoseFramework\Services\JWELoaderFactory as JWELoaderFactoryAlias;
@@ -20,16 +11,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class JWELoaderTest extends WebTestCase
+final class JWELoaderTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JWEBuilderFactory::class)) {
+ if (! class_exists(JWEBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-encryption" is not installed.');
}
}
@@ -61,10 +49,10 @@ public function theWELoaderFactoryCanCreateAJWELoader(): void
$jwe = $jweLoaderFactory->create(['jwe_compact'], ['RSA1_5'], ['A256GCM'], ['DEF']);
- static::assertEquals(['jwe_compact'], $jwe->getSerializerManager()->names());
- static::assertEquals(['RSA1_5'], $jwe->getJweDecrypter()->getKeyEncryptionAlgorithmManager()->list());
- static::assertEquals(['A256GCM'], $jwe->getJweDecrypter()->getContentEncryptionAlgorithmManager()->list());
- static::assertEquals(['DEF'], $jwe->getJweDecrypter()->getCompressionMethodManager()->list());
+ static::assertSame(['jwe_compact'], $jwe->getSerializerManager()->names());
+ static::assertSame(['RSA1_5'], $jwe->getJweDecrypter()->getKeyEncryptionAlgorithmManager()->list());
+ static::assertSame(['A256GCM'], $jwe->getJweDecrypter()->getContentEncryptionAlgorithmManager()->list());
+ static::assertSame(['DEF'], $jwe->getJweDecrypter()->getCompressionMethodManager()->list());
}
/**
diff --git a/tests/Bundle/JoseFramework/Functional/Encryption/JWESerializerTest.php b/tests/Bundle/JoseFramework/Functional/Encryption/JWESerializerTest.php
index db2a71d0..9f97b84e 100644
--- a/tests/Bundle/JoseFramework/Functional/Encryption/JWESerializerTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Encryption/JWESerializerTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Encryption;
use Jose\Component\Encryption\JWEBuilderFactory;
@@ -19,16 +10,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class JWESerializerTest extends WebTestCase
+final class JWESerializerTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JWEBuilderFactory::class)) {
+ if (! class_exists(JWEBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-encryption" is not installed.');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Encryption/JweBuilderConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/Encryption/JweBuilderConfigurationTest.php
index 9f61b14d..0390546b 100644
--- a/tests/Bundle/JoseFramework/Functional/Encryption/JweBuilderConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Encryption/JweBuilderConfigurationTest.php
@@ -2,36 +2,25 @@
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\Tests\Bundle\JoseFramework\Functional\Encryption;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Encryption\EncryptionSource;
use Jose\Component\Encryption\JWEBuilderFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group Configuration
- *
* @internal
*/
-class JweBuilderConfigurationTest extends TestCase
+final class JweBuilderConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(JWEBuilderFactory::class)) {
+ if (! class_exists(JWEBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-encryption" is not installed.');
}
}
@@ -41,9 +30,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -51,13 +38,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jwe' => false,
- ],
- ]
- );
+ 'jwe' => false,
+ ],
+ ]);
}
/**
@@ -65,13 +50,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jwe' => [],
- ],
- ]
- );
+ 'jwe' => [],
+ ],
+ ]);
}
/**
@@ -79,15 +62,13 @@ public function theConfigurationIsValidIfConfigurationIsEmpty(): void
*/
public function theConfigurationIsInvalidIfBuilderIsSet(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jwe' => [
- 'builders' => [],
- ],
+ 'jwe' => [
+ 'builders' => [],
],
- ]
- );
+ ],
+ ]);
}
/**
@@ -175,9 +156,6 @@ public function theConfigurationIsInvalidIfTheContentEncryptionAlgorithmIsEmpty(
protected function getConfiguration(): Configuration
{
- return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\Encryption\EncryptionSource(),
- ]);
+ return new Configuration('jose', [new CoreSource(), new EncryptionSource()]);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Encryption/JweDecrypterConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/Encryption/JweDecrypterConfigurationTest.php
index 8a55756f..4790d566 100644
--- a/tests/Bundle/JoseFramework/Functional/Encryption/JweDecrypterConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Encryption/JweDecrypterConfigurationTest.php
@@ -2,36 +2,25 @@
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\Tests\Bundle\JoseFramework\Functional\Encryption;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Encryption\EncryptionSource;
use Jose\Component\Encryption\JWEBuilderFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group Configuration
- *
* @internal
*/
-class JweDecrypterConfigurationTest extends TestCase
+final class JweDecrypterConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(JWEBuilderFactory::class)) {
+ if (! class_exists(JWEBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-encryption" is not installed.');
}
}
@@ -41,9 +30,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -51,13 +38,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jwe' => false,
- ],
- ]
- );
+ 'jwe' => false,
+ ],
+ ]);
}
/**
@@ -65,13 +50,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jwe' => [],
- ],
- ]
- );
+ 'jwe' => [],
+ ],
+ ]);
}
/**
@@ -79,15 +62,13 @@ public function theConfigurationIsValidIfConfigurationIsEmpty(): void
*/
public function theConfigurationIsInvalidIfBuilderIsSet(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jwe' => [
- 'decrypters' => [],
- ],
+ 'jwe' => [
+ 'decrypters' => [],
],
- ]
- );
+ ],
+ ]);
}
/**
@@ -175,9 +156,6 @@ public function theConfigurationIsInvalidIfTheContentEncryptionAlgorithmIsEmpty(
protected function getConfiguration(): Configuration
{
- return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\Encryption\EncryptionSource(),
- ]);
+ return new Configuration('jose', [new CoreSource(), new EncryptionSource()]);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Encryption/SerializerConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/Encryption/SerializerConfigurationTest.php
index 66dc633e..a0a199e7 100644
--- a/tests/Bundle/JoseFramework/Functional/Encryption/SerializerConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Encryption/SerializerConfigurationTest.php
@@ -2,36 +2,25 @@
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\Tests\Bundle\JoseFramework\Functional\Encryption;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Encryption\EncryptionSource;
use Jose\Component\Encryption\JWEBuilderFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group Configuration
- *
* @internal
*/
-class SerializerConfigurationTest extends TestCase
+final class SerializerConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(JWEBuilderFactory::class)) {
+ if (! class_exists(JWEBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-encryption" is not installed.');
}
}
@@ -41,9 +30,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -51,13 +38,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jwe' => false,
- ],
- ]
- );
+ 'jwe' => false,
+ ],
+ ]);
}
/**
@@ -65,13 +50,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jwe' => [],
- ],
- ]
- );
+ 'jwe' => [],
+ ],
+ ]);
}
/**
@@ -79,15 +62,13 @@ public function theConfigurationIsValidIfConfigurationIsEmpty(): void
*/
public function theConfigurationIsValidIfNoSerializerIsSet(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jwe' => [
- 'serializers' => [],
- ],
+ 'jwe' => [
+ 'serializers' => [],
],
- ]
- );
+ ],
+ ]);
}
/**
@@ -132,9 +113,6 @@ public function theConfigurationIsInvalidIfTheSerializerListIsEmpty(): void
protected function getConfiguration(): Configuration
{
- return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\Encryption\EncryptionSource(),
- ]);
+ return new Configuration('jose', [new CoreSource(), new EncryptionSource()]);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/KeyManagement/JKUAndX5UFactoriesTest.php b/tests/Bundle/JoseFramework/Functional/KeyManagement/JKUAndX5UFactoriesTest.php
index 2892ccfe..47a9ec1b 100644
--- a/tests/Bundle/JoseFramework/Functional/KeyManagement/JKUAndX5UFactoriesTest.php
+++ b/tests/Bundle/JoseFramework/Functional/KeyManagement/JKUAndX5UFactoriesTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\KeyManagement;
use Jose\Component\KeyManagement\JKUFactory;
@@ -19,17 +10,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- * @group KeyManagement
- *
* @internal
*/
-class JKUAndX5UFactoriesTest extends WebTestCase
+final class JKUAndX5UFactoriesTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JKUFactory::class)) {
+ if (! class_exists(JKUFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-key-mgmt" is not installed.');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/KeyManagement/JWKLoaderTest.php b/tests/Bundle/JoseFramework/Functional/KeyManagement/JWKLoaderTest.php
index d10b22e4..a857ccbf 100644
--- a/tests/Bundle/JoseFramework/Functional/KeyManagement/JWKLoaderTest.php
+++ b/tests/Bundle/JoseFramework/Functional/KeyManagement/JWKLoaderTest.php
@@ -2,35 +2,22 @@
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\Tests\Bundle\JoseFramework\Functional\KeyManagement;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Component\KeyManagement\JWKFactory;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- * @group KeyManagement
- *
* @internal
*/
-class JWKLoaderTest extends WebTestCase
+final class JWKLoaderTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JWKFactory::class)) {
+ if (! class_exists(JWKFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-key-mgmt" is not installed.');
}
}
@@ -133,9 +120,9 @@ public function aJWKCanBeLoadedFromASecretInTheConfiguration(): void
$jwk = $container->get('jose.key.secret1');
static::assertInstanceOf(JWK::class, $jwk);
- static::assertEquals('oct', $jwk->get('kty'));
- static::assertEquals('enc', $jwk->get('use'));
- static::assertEquals('RS512', $jwk->get('alg'));
- static::assertEquals('This is my secret', Base64UrlSafe::decode($jwk->get('k')));
+ static::assertSame('oct', $jwk->get('kty'));
+ static::assertSame('enc', $jwk->get('use'));
+ static::assertSame('RS512', $jwk->get('alg'));
+ static::assertSame('This is my secret', Base64UrlSafe::decode($jwk->get('k')));
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/KeyManagement/JWKSetLoaderTest.php b/tests/Bundle/JoseFramework/Functional/KeyManagement/JWKSetLoaderTest.php
index 9406e346..e9c8c47d 100644
--- a/tests/Bundle/JoseFramework/Functional/KeyManagement/JWKSetLoaderTest.php
+++ b/tests/Bundle/JoseFramework/Functional/KeyManagement/JWKSetLoaderTest.php
@@ -2,43 +2,25 @@
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\Tests\Bundle\JoseFramework\Functional\KeyManagement;
-use Http\Mock\Client;
use Jose\Component\Core\JWKSet;
use Jose\Component\KeyManagement\JWKFactory;
use Jose\Tests\Bundle\JoseFramework\TestBundle\Service\MockClientCallback;
use Nyholm\Psr7\Factory\Psr17Factory;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\HttpClient\Response\MockResponse;
use Symfony\Component\HttpFoundation\Response;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class JWKSetLoaderTest extends WebTestCase
+final class JWKSetLoaderTest extends WebTestCase
{
- /**
- * @var Psr17Factory
- */
- private $messageFactory;
+ private Psr17Factory $messageFactory;
protected function setUp(): void
{
- if (!class_exists(JWKFactory::class)) {
+ if (! class_exists(JWKFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-key-mgmt" is not installed.');
}
$this->messageFactory = new Psr17Factory();
@@ -69,9 +51,12 @@ public function aJWKSetCanBeSharedInTheConfiguration(): void
/** @var Response $response */
$response = $client->getResponse();
- static::assertEquals(200, $response->getStatusCode());
- static::assertEquals('{"keys":[{"kty":"oct","k":"dzI6nbW4OcNF-AtfxGAmuyz7IpHRudBI0WgGjZWgaRJt6prBn3DARXgUR8NVwKhfL43QBIU2Un3AvCGCHRgY4TbEqhOi8-i98xxmCggNjde4oaW6wkJ2NgM3Ss9SOX9zS3lcVzdCMdum-RwVJ301kbin4UtGztuzJBeg5oVN00MGxjC2xWwyI0tgXVs-zJs5WlafCuGfX1HrVkIf5bvpE0MQCSjdJpSeVao6-RSTYDajZf7T88a2eVjeW31mMAg-jzAWfUrii61T_bYPJFOXW8kkRWoa1InLRdG6bKB9wQs9-VdXZP60Q4Yuj_WZ-lO7qV9AEFrUkkjpaDgZT86w2g"},{"kty":"oct","k":"bwIAv5Nn-fo8p4LCEvM4IR9eLXgzJRs8jXCLb3xR0tDJGiZ46KheO4ip6htFKyN2aqJqlNi9-7hB6I1aLLy1IRT9-vcBoCSGu977cNAUuRLkRp7vo8s6MsxhB8WvQBDRZghV7jIYaune-3vbE7iDU2AESr8BUtorckLoO9uW__fIabaa3hJMMQIHCzYQbJKZvlCRCKWMk2H_zuS4JeDFTvyZH1skJYF_TET1DrCZHMPicw-Yk3_m2P-ilC-yidPPoVzeU8Jj3tQ6gtX3975qiQW7pt2qbgjKAuq2wsz_9hxLBtMB5rQPafFoxop7O4BklvZ9-ECcK6dfI2CAx9_tjQ"}]}', $response->getContent());
- static::assertEquals('application/jwk-set+json; charset=UTF-8', $response->headers->get('Content-Type'));
+ static::assertSame(200, $response->getStatusCode());
+ static::assertSame(
+ '{"keys":[{"kty":"oct","k":"dzI6nbW4OcNF-AtfxGAmuyz7IpHRudBI0WgGjZWgaRJt6prBn3DARXgUR8NVwKhfL43QBIU2Un3AvCGCHRgY4TbEqhOi8-i98xxmCggNjde4oaW6wkJ2NgM3Ss9SOX9zS3lcVzdCMdum-RwVJ301kbin4UtGztuzJBeg5oVN00MGxjC2xWwyI0tgXVs-zJs5WlafCuGfX1HrVkIf5bvpE0MQCSjdJpSeVao6-RSTYDajZf7T88a2eVjeW31mMAg-jzAWfUrii61T_bYPJFOXW8kkRWoa1InLRdG6bKB9wQs9-VdXZP60Q4Yuj_WZ-lO7qV9AEFrUkkjpaDgZT86w2g"},{"kty":"oct","k":"bwIAv5Nn-fo8p4LCEvM4IR9eLXgzJRs8jXCLb3xR0tDJGiZ46KheO4ip6htFKyN2aqJqlNi9-7hB6I1aLLy1IRT9-vcBoCSGu977cNAUuRLkRp7vo8s6MsxhB8WvQBDRZghV7jIYaune-3vbE7iDU2AESr8BUtorckLoO9uW__fIabaa3hJMMQIHCzYQbJKZvlCRCKWMk2H_zuS4JeDFTvyZH1skJYF_TET1DrCZHMPicw-Yk3_m2P-ilC-yidPPoVzeU8Jj3tQ6gtX3975qiQW7pt2qbgjKAuq2wsz_9hxLBtMB5rQPafFoxop7O4BklvZ9-ECcK6dfI2CAx9_tjQ"}]}',
+ $response->getContent()
+ );
+ static::assertSame('application/jwk-set+json; charset=UTF-8', $response->headers->get('Content-Type'));
}
/**
@@ -99,9 +84,12 @@ public function aJWKSetCanBeSharedFromAnotherBundle(): void
/** @var Response $response */
$response = $client->getResponse();
- static::assertEquals(200, $response->getStatusCode());
- static::assertEquals('{"keys":[{"kty":"oct","k":"dzI6nbW4OcNF-AtfxGAmuyz7IpHRudBI0WgGjZWgaRJt6prBn3DARXgUR8NVwKhfL43QBIU2Un3AvCGCHRgY4TbEqhOi8-i98xxmCggNjde4oaW6wkJ2NgM3Ss9SOX9zS3lcVzdCMdum-RwVJ301kbin4UtGztuzJBeg5oVN00MGxjC2xWwyI0tgXVs-zJs5WlafCuGfX1HrVkIf5bvpE0MQCSjdJpSeVao6-RSTYDajZf7T88a2eVjeW31mMAg-jzAWfUrii61T_bYPJFOXW8kkRWoa1InLRdG6bKB9wQs9-VdXZP60Q4Yuj_WZ-lO7qV9AEFrUkkjpaDgZT86w2g"},{"kty":"oct","k":"bwIAv5Nn-fo8p4LCEvM4IR9eLXgzJRs8jXCLb3xR0tDJGiZ46KheO4ip6htFKyN2aqJqlNi9-7hB6I1aLLy1IRT9-vcBoCSGu977cNAUuRLkRp7vo8s6MsxhB8WvQBDRZghV7jIYaune-3vbE7iDU2AESr8BUtorckLoO9uW__fIabaa3hJMMQIHCzYQbJKZvlCRCKWMk2H_zuS4JeDFTvyZH1skJYF_TET1DrCZHMPicw-Yk3_m2P-ilC-yidPPoVzeU8Jj3tQ6gtX3975qiQW7pt2qbgjKAuq2wsz_9hxLBtMB5rQPafFoxop7O4BklvZ9-ECcK6dfI2CAx9_tjQ"}]}', $response->getContent());
- static::assertEquals('application/jwk-set+json; charset=UTF-8', $response->headers->get('Content-Type'));
+ static::assertSame(200, $response->getStatusCode());
+ static::assertSame(
+ '{"keys":[{"kty":"oct","k":"dzI6nbW4OcNF-AtfxGAmuyz7IpHRudBI0WgGjZWgaRJt6prBn3DARXgUR8NVwKhfL43QBIU2Un3AvCGCHRgY4TbEqhOi8-i98xxmCggNjde4oaW6wkJ2NgM3Ss9SOX9zS3lcVzdCMdum-RwVJ301kbin4UtGztuzJBeg5oVN00MGxjC2xWwyI0tgXVs-zJs5WlafCuGfX1HrVkIf5bvpE0MQCSjdJpSeVao6-RSTYDajZf7T88a2eVjeW31mMAg-jzAWfUrii61T_bYPJFOXW8kkRWoa1InLRdG6bKB9wQs9-VdXZP60Q4Yuj_WZ-lO7qV9AEFrUkkjpaDgZT86w2g"},{"kty":"oct","k":"bwIAv5Nn-fo8p4LCEvM4IR9eLXgzJRs8jXCLb3xR0tDJGiZ46KheO4ip6htFKyN2aqJqlNi9-7hB6I1aLLy1IRT9-vcBoCSGu977cNAUuRLkRp7vo8s6MsxhB8WvQBDRZghV7jIYaune-3vbE7iDU2AESr8BUtorckLoO9uW__fIabaa3hJMMQIHCzYQbJKZvlCRCKWMk2H_zuS4JeDFTvyZH1skJYF_TET1DrCZHMPicw-Yk3_m2P-ilC-yidPPoVzeU8Jj3tQ6gtX3975qiQW7pt2qbgjKAuq2wsz_9hxLBtMB5rQPafFoxop7O4BklvZ9-ECcK6dfI2CAx9_tjQ"}]}',
+ $response->getContent()
+ );
+ static::assertSame('application/jwk-set+json; charset=UTF-8', $response->headers->get('Content-Type'));
}
/**
@@ -113,8 +101,14 @@ public function aJWKSetCanBeRetrieveFromADistantJkuThroughConfiguration(): void
$client = static::createClient();
$container = $client->getContainer();
$response = $this->messageFactory->createResponse(200);
- $response->getBody()->write('{"keys": [{"kty": "RSA","alg": "RS256","use": "sig","kid": "acde8d7c1997d82dcf5d5ed2858ac8d060cd3ca9","n": "kfQP58EQpxAqZUCiGolkyCio8S3hG9HTMfQpB7VVDB69mK3AN68ZmWeGTIvDnbcslQ1TEhjZ8bKJwWHFlyoJOxeGaEsn0G3xAmPeUW8WjS2tLTKx8DUYOAgto9VOWip5dngZVMrCL85fPk-jiKEL3ODsyddZiOOhBEjapco_RTDPVurVreDnG6mbScCslHda5T6KudyFOQLD77BulIENlpE5Lxh3KFGrGgu_RiVOf-XtHDDExiWOsaUhOSZFkecqF56upROBQRIuNqHv98icbVKRzYcDteRckJGfk12faaQhX24QCDsIrT8NHbbB9eKX7rcnDMp8GxSArct7KyOxyw","e": "AQAB"},{"kty": "RSA","alg": "RS256","use": "sig","kid": "ce760dff481ee9bca45ccab64eada328029bc0aa","n": "47QQ2Ru1h3WWxcTUbwQvhD_ncEw7avXtXDmcY_8zxC9FcPwv6GcAvjoWuF0afBNK4UoNqW9gG_eq96FnMUF0iIVkPio-h3cpOHzAhKN-LHB9UMx3WDCVYxeRjGOgKU8oLz7ioqGhyZc-oxWk0v691Ybp83OPhWa0bVAmTgSaAuPpyw-ZLg-Nb4eF---vjb1N0ptYltSOQNEZ3BK9jEbWKNHASTcTpFkigcWyLp_sFv79W_DLZEKIb4TxaoGGWA-AMiErFsAnzcU7Ia4ETyp5ucI6o4SifKzI1SKRkUTinlVnvedwXhu21HBviEe_a-fg3uYc7JTMgFNG3kQlfks8AQ","e": "AQAB"},{"kty": "RSA","alg": "RS256","use": "sig","kid": "3ce4a97d502af058eb66ac8d730a592ab7cea7f1","n": "5JjYSEt7lxpIBtnZSAta6uPZpiAFSwzRhhWdBbRr1QuEMPhBvfWsy0PArA8xx5U8AIWftTmhsTdXvkLRLrG_vT4fxjU22K2YBoeTY2v2QIvJOUyhLWOr5wVtG9iWtg86FsGv0ukEgEpx2mqIlpz0KWkEZwIhtYRTtFQh_G4QFjvyAg70iFi7BvSizfZlEDrg5-5ksia0Gy_gmjGvgTLHGBLciKo5d5Aw-DBPJqunnJacVu6rTkBF_QgsOWpO5Y8XuKbjEKNzUHSv6TxumaK7ueU1ckucdtkAHqURzEInbb3BxWYme_3JCzTDMRy4-pEoWR-NyLZwEZxxOtGFQRXhZw","e": "AQAB"}]}');
- $response->getBody()->rewind();
+ $response->getBody()
+ ->write(
+ '{"keys": [{"kty": "RSA","alg": "RS256","use": "sig","kid": "acde8d7c1997d82dcf5d5ed2858ac8d060cd3ca9","n": "kfQP58EQpxAqZUCiGolkyCio8S3hG9HTMfQpB7VVDB69mK3AN68ZmWeGTIvDnbcslQ1TEhjZ8bKJwWHFlyoJOxeGaEsn0G3xAmPeUW8WjS2tLTKx8DUYOAgto9VOWip5dngZVMrCL85fPk-jiKEL3ODsyddZiOOhBEjapco_RTDPVurVreDnG6mbScCslHda5T6KudyFOQLD77BulIENlpE5Lxh3KFGrGgu_RiVOf-XtHDDExiWOsaUhOSZFkecqF56upROBQRIuNqHv98icbVKRzYcDteRckJGfk12faaQhX24QCDsIrT8NHbbB9eKX7rcnDMp8GxSArct7KyOxyw","e": "AQAB"},{"kty": "RSA","alg": "RS256","use": "sig","kid": "ce760dff481ee9bca45ccab64eada328029bc0aa","n": "47QQ2Ru1h3WWxcTUbwQvhD_ncEw7avXtXDmcY_8zxC9FcPwv6GcAvjoWuF0afBNK4UoNqW9gG_eq96FnMUF0iIVkPio-h3cpOHzAhKN-LHB9UMx3WDCVYxeRjGOgKU8oLz7ioqGhyZc-oxWk0v691Ybp83OPhWa0bVAmTgSaAuPpyw-ZLg-Nb4eF---vjb1N0ptYltSOQNEZ3BK9jEbWKNHASTcTpFkigcWyLp_sFv79W_DLZEKIb4TxaoGGWA-AMiErFsAnzcU7Ia4ETyp5ucI6o4SifKzI1SKRkUTinlVnvedwXhu21HBviEe_a-fg3uYc7JTMgFNG3kQlfks8AQ","e": "AQAB"},{"kty": "RSA","alg": "RS256","use": "sig","kid": "3ce4a97d502af058eb66ac8d730a592ab7cea7f1","n": "5JjYSEt7lxpIBtnZSAta6uPZpiAFSwzRhhWdBbRr1QuEMPhBvfWsy0PArA8xx5U8AIWftTmhsTdXvkLRLrG_vT4fxjU22K2YBoeTY2v2QIvJOUyhLWOr5wVtG9iWtg86FsGv0ukEgEpx2mqIlpz0KWkEZwIhtYRTtFQh_G4QFjvyAg70iFi7BvSizfZlEDrg5-5ksia0Gy_gmjGvgTLHGBLciKo5d5Aw-DBPJqunnJacVu6rTkBF_QgsOWpO5Y8XuKbjEKNzUHSv6TxumaK7ueU1ckucdtkAHqURzEInbb3BxWYme_3JCzTDMRy4-pEoWR-NyLZwEZxxOtGFQRXhZw","e": "AQAB"}]}'
+ )
+ ;
+ $response->getBody()
+ ->rewind()
+ ;
/** @var MockClientCallback $httpClient */
$httpClient = $container->get(MockClientCallback::class);
$httpClient->set($response);
@@ -133,8 +127,14 @@ public function aJWKSetCanBeRetrieveFromADistantX5uThroughConfiguration(): void
$client = static::createClient();
$container = $client->getContainer();
$response = $this->messageFactory->createResponse(200);
- $response->getBody()->write('["MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVM\nxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR2\n8gRGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExM\nTYwMTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UE\nCBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWR\nkeS5jb20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYW\nRkeS5jb20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlc\nnRpZmljYXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJ\nKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTt\nwY6vj3D3HKrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqV\nTr9vcyOdQmVZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aL\nGbqGmu75RpRSgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo\n7RJlbmr2EkRTcDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgW\nJCJjPOq8lh8BJ6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAw\nEAAaOCATIwggEuMB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVH\nSMEGDAWgBTSxLDSkdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEA\nMDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWR\nkeS5jb20wRgYDVR0fBD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2\nRhZGR5LmNvbS9yZXBvc2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVH\nSAAMDgwNgYIKwYBBQUHAgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j\nb20vcmVwb3NpdG9yeTAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggE\nBANKGwOy9+aG2Z+5mC6IGOgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPI\nUyIXvJxwqoJKSQ3kbTJSMUA2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL\n5CkKSkB2XIsKd83ASe8T+5o0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9\np0iRFEUOOjZv2kWzRaJBydTXRE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsx\nuxN89txJx9OjxUUAiKEngHUuHqDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZ\nEjYx8WnM25sgVjOuH0aBsXBTWVU+4=","MIIE+zCCBGSgAwIBAgICAQ0wDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1Z\nhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIE\nluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb\n24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8x\nIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTA0MDYyOTE3MDY\nyMFoXDTI0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRoZS\nBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3MgM\niBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN\nADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XC\nAPVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux\n6wwdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLO\ntXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWo\nriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZ\nEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjggHhMIIB3TAdBgNVHQ\n4EFgQU0sSw0pHUTBFxs2HLPaH+3ahq1OMwgdIGA1UdIwSByjCBx6GBwaSBvjCBu\nzEkMCIGA1UEBxMbVmFsaUNlcnQgVmFsaWRhdGlvbiBOZXR3b3JrMRcwFQYDVQQK\nEw5WYWxpQ2VydCwgSW5jLjE1MDMGA1UECxMsVmFsaUNlcnQgQ2xhc3MgMiBQb2x\npY3kgVmFsaWRhdGlvbiBBdXRob3JpdHkxITAfBgNVBAMTGGh0dHA6Ly93d3cudm\nFsaWNlcnQuY29tLzEgMB4GCSqGSIb3DQEJARYRaW5mb0B2YWxpY2VydC5jb22CA\nQEwDwYDVR0TAQH/BAUwAwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGG\nF2h0dHA6Ly9vY3NwLmdvZGFkZHkuY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA\n6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS9yb290LmNybD\nBLBgNVHSAERDBCMEAGBFUdIAAwODA2BggrBgEFBQcCARYqaHR0cDovL2NlcnRpZ\nmljYXRlcy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5MA4GA1UdDwEB/wQEAwIBBjAN\nBgkqhkiG9w0BAQUFAAOBgQC1QPmnHfbq/qQaQlpE9xXUhUaJwL6e4+PrxeNYiY+\nSn1eocSxI0YGyeR+sBjUZsE4OWBsUs5iB0QQeyAfJg594RAoYC5jcdnplDQ1tgM\nQLARzLrUc+cb53S8wGd9D0VmsfSxOaFIqII6hR8INMqzW/Rn453HWkrugp++85j\n09VZw==","MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ\n0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNT\nAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0a\nG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkq\nhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE\n5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTm\nV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZ\nXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQD\nExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9\nAdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5a\nvIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zf\nN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwb\nP7RfZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQU\nAA4GBADt/UG9vUJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQ\nC1u+mNr0HZDzTuIYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMM\nj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd"]');
- $response->getBody()->rewind();
+ $response->getBody()
+ ->write(
+ '["MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVM\nxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR2\n8gRGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExM\nTYwMTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UE\nCBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWR\nkeS5jb20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYW\nRkeS5jb20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlc\nnRpZmljYXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJ\nKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTt\nwY6vj3D3HKrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqV\nTr9vcyOdQmVZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aL\nGbqGmu75RpRSgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo\n7RJlbmr2EkRTcDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgW\nJCJjPOq8lh8BJ6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAw\nEAAaOCATIwggEuMB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVH\nSMEGDAWgBTSxLDSkdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEA\nMDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWR\nkeS5jb20wRgYDVR0fBD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2\nRhZGR5LmNvbS9yZXBvc2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVH\nSAAMDgwNgYIKwYBBQUHAgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j\nb20vcmVwb3NpdG9yeTAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggE\nBANKGwOy9+aG2Z+5mC6IGOgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPI\nUyIXvJxwqoJKSQ3kbTJSMUA2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL\n5CkKSkB2XIsKd83ASe8T+5o0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9\np0iRFEUOOjZv2kWzRaJBydTXRE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsx\nuxN89txJx9OjxUUAiKEngHUuHqDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZ\nEjYx8WnM25sgVjOuH0aBsXBTWVU+4=","MIIE+zCCBGSgAwIBAgICAQ0wDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1Z\nhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIE\nluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb\n24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8x\nIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTA0MDYyOTE3MDY\nyMFoXDTI0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRoZS\nBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3MgM\niBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN\nADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XC\nAPVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux\n6wwdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLO\ntXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWo\nriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZ\nEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjggHhMIIB3TAdBgNVHQ\n4EFgQU0sSw0pHUTBFxs2HLPaH+3ahq1OMwgdIGA1UdIwSByjCBx6GBwaSBvjCBu\nzEkMCIGA1UEBxMbVmFsaUNlcnQgVmFsaWRhdGlvbiBOZXR3b3JrMRcwFQYDVQQK\nEw5WYWxpQ2VydCwgSW5jLjE1MDMGA1UECxMsVmFsaUNlcnQgQ2xhc3MgMiBQb2x\npY3kgVmFsaWRhdGlvbiBBdXRob3JpdHkxITAfBgNVBAMTGGh0dHA6Ly93d3cudm\nFsaWNlcnQuY29tLzEgMB4GCSqGSIb3DQEJARYRaW5mb0B2YWxpY2VydC5jb22CA\nQEwDwYDVR0TAQH/BAUwAwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGG\nF2h0dHA6Ly9vY3NwLmdvZGFkZHkuY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA\n6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS9yb290LmNybD\nBLBgNVHSAERDBCMEAGBFUdIAAwODA2BggrBgEFBQcCARYqaHR0cDovL2NlcnRpZ\nmljYXRlcy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5MA4GA1UdDwEB/wQEAwIBBjAN\nBgkqhkiG9w0BAQUFAAOBgQC1QPmnHfbq/qQaQlpE9xXUhUaJwL6e4+PrxeNYiY+\nSn1eocSxI0YGyeR+sBjUZsE4OWBsUs5iB0QQeyAfJg594RAoYC5jcdnplDQ1tgM\nQLARzLrUc+cb53S8wGd9D0VmsfSxOaFIqII6hR8INMqzW/Rn453HWkrugp++85j\n09VZw==","MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ\n0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNT\nAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0a\nG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkq\nhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE\n5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTm\nV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZ\nXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQD\nExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9\nAdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5a\nvIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zf\nN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwb\nP7RfZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQU\nAA4GBADt/UG9vUJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQ\nC1u+mNr0HZDzTuIYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMM\nj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd"]'
+ )
+ ;
+ $response->getBody()
+ ->rewind()
+ ;
/** @var MockClientCallback $httpClient */
$httpClient = $container->get(MockClientCallback::class);
$httpClient->set($response);
diff --git a/tests/Bundle/JoseFramework/Functional/KeyManagement/JwkUriConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/KeyManagement/JwkUriConfigurationTest.php
index 93a884e8..63413b99 100644
--- a/tests/Bundle/JoseFramework/Functional/KeyManagement/JwkUriConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/KeyManagement/JwkUriConfigurationTest.php
@@ -2,36 +2,25 @@
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\Tests\Bundle\JoseFramework\Functional\KeyManagement;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\KeyManagementSource;
use Jose\Component\KeyManagement\JWKFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group Configuration
- *
* @internal
*/
-class JwkUriConfigurationTest extends TestCase
+final class JwkUriConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(JWKFactory::class)) {
+ if (! class_exists(JWKFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-key-mgmt" is not installed.');
}
}
@@ -41,9 +30,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -51,13 +38,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jwk_uris' => false,
- ],
- ]
- );
+ 'jwk_uris' => false,
+ ],
+ ]);
}
/**
@@ -65,13 +50,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jwk_uris' => [],
- ],
- ]
- );
+ 'jwk_uris' => [],
+ ],
+ ]);
}
/**
@@ -112,9 +95,6 @@ public function theConfigurationIsInvalidIfNoPathIsSet(): void
protected function getConfiguration(): Configuration
{
- return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\KeyManagement\KeyManagementSource(),
- ]);
+ return new Configuration('jose', [new CoreSource(), new KeyManagementSource()]);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/KeyManagement/KeyConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/KeyManagement/KeyConfigurationTest.php
index c9353033..364c4279 100644
--- a/tests/Bundle/JoseFramework/Functional/KeyManagement/KeyConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/KeyManagement/KeyConfigurationTest.php
@@ -2,36 +2,25 @@
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\Tests\Bundle\JoseFramework\Functional\KeyManagement;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\KeyManagementSource;
use Jose\Component\KeyManagement\JWKFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group Configuration
- *
* @internal
*/
-class KeyConfigurationTest extends TestCase
+final class KeyConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(JWKFactory::class)) {
+ if (! class_exists(JWKFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-key-mgmt" is not installed.');
}
}
@@ -41,9 +30,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -51,13 +38,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'keys' => false,
- ],
- ]
- );
+ 'keys' => false,
+ ],
+ ]);
}
/**
@@ -65,13 +50,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'keys' => [],
- ],
- ]
- );
+ 'keys' => [],
+ ],
+ ]);
}
/**
@@ -247,9 +230,6 @@ public function theX5CConfigurationIsInvalidIfRequiredParametersAreNotSet(): voi
protected function getConfiguration(): Configuration
{
- return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\KeyManagement\KeyManagementSource(),
- ]);
+ return new Configuration('jose', [new CoreSource(), new KeyManagementSource()]);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/KeyManagement/KeySetConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/KeyManagement/KeySetConfigurationTest.php
index 26263c2e..9d9eb9f7 100644
--- a/tests/Bundle/JoseFramework/Functional/KeyManagement/KeySetConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/KeyManagement/KeySetConfigurationTest.php
@@ -2,36 +2,25 @@
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\Tests\Bundle\JoseFramework\Functional\KeyManagement;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\KeyManagementSource;
use Jose\Component\KeyManagement\JWKFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group Configuration
- *
* @internal
*/
-class KeySetConfigurationTest extends TestCase
+final class KeySetConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(JWKFactory::class)) {
+ if (! class_exists(JWKFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-key-mgmt" is not installed.');
}
}
@@ -41,9 +30,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -51,13 +38,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'key_sets' => false,
- ],
- ]
- );
+ 'key_sets' => false,
+ ],
+ ]);
}
/**
@@ -65,13 +50,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'key_sets' => [],
- ],
- ]
- );
+ 'key_sets' => [],
+ ],
+ ]);
}
/**
@@ -169,9 +152,6 @@ public function theX5UConfigurationIsInvalidIfRequiredParametersAreNotSet(): voi
protected function getConfiguration(): Configuration
{
- return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\KeyManagement\KeyManagementSource(),
- ]);
+ return new Configuration('jose', [new CoreSource(), new KeyManagementSource()]);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderConfigurationTest.php
index 5ed25e63..9628c711 100644
--- a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderConfigurationTest.php
@@ -2,37 +2,28 @@
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\Tests\Bundle\JoseFramework\Functional\NestedToken;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Checker\CheckerSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Encryption\EncryptionSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\NestedToken\NestedToken;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Signature\SignatureSource;
use Jose\Bundle\JoseFramework\Services\NestedTokenLoaderFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group functional
- * @group NestedToken
- *
* @internal
*/
-class NestedTokenBuilderConfigurationTest extends TestCase
+final class NestedTokenBuilderConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(NestedTokenLoaderFactory::class)) {
+ if (! class_exists(NestedTokenLoaderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-nested-token" is not installed.');
}
}
@@ -42,9 +33,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -52,13 +41,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'nested_token' => false,
- ],
- ]
- );
+ 'nested_token' => false,
+ ],
+ ]);
}
/**
@@ -66,13 +53,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'nested_token' => [],
- ],
- ]
- );
+ 'nested_token' => [],
+ ],
+ ]);
}
/**
@@ -80,15 +65,13 @@ public function theConfigurationIsValidIfConfigurationIsEmpty(): void
*/
public function theConfigurationIsValidIfNoBuilderIsSet(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'nested_token' => [
- 'builders' => [],
- ],
+ 'nested_token' => [
+ 'builders' => [],
],
- ]
- );
+ ],
+ ]);
}
/**
@@ -227,11 +210,11 @@ public function theConfigurationIsValid(): void
protected function getConfiguration(): Configuration
{
return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\Checker\CheckerSource(),
- new Source\Signature\SignatureSource(),
- new Source\Encryption\EncryptionSource(),
- new Source\NestedToken\NestedToken(),
+ new CoreSource(),
+ new CheckerSource(),
+ new SignatureSource(),
+ new EncryptionSource(),
+ new NestedToken(),
]);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderTest.php b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderTest.php
index 3d5a41b4..77d02558 100644
--- a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderTest.php
+++ b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\NestedToken;
use Jose\Bundle\JoseFramework\Services\NestedTokenBuilderFactory;
@@ -20,16 +11,13 @@
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class NestedTokenBuilderTest extends WebTestCase
+final class NestedTokenBuilderTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(NestedTokenLoaderFactory::class)) {
+ if (! class_exists(NestedTokenLoaderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-nested-token" is not installed.');
}
}
@@ -118,10 +106,15 @@ public function aNestedTokenCanBeSignedAndEncryptedUsingTheServiceCreatedFromThe
$payload,
[[
'key' => $signature_key,
- 'protected_header' => ['alg' => 'PS256'],
+ 'protected_header' => [
+ 'alg' => 'PS256',
+ ],
]],
'jws_compact',
- ['alg' => 'RSA-OAEP', 'enc' => 'A128GCM'],
+ [
+ 'alg' => 'RSA-OAEP',
+ 'enc' => 'A128GCM',
+ ],
[],
[[
'key' => $encryption_key,
@@ -178,10 +171,15 @@ public function aNestedTokenCanBeSignedAndEncryptedUsingTheServiceCreatedFromThe
$payload,
[[
'key' => $signature_key,
- 'protected_header' => ['alg' => 'PS256'],
+ 'protected_header' => [
+ 'alg' => 'PS256',
+ ],
]],
'jws_compact',
- ['alg' => 'RSA-OAEP', 'enc' => 'A128GCM'],
+ [
+ 'alg' => 'RSA-OAEP',
+ 'enc' => 'A128GCM',
+ ],
[],
[[
'key' => $encryption_key,
diff --git a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderConfigurationTest.php
index e9ca3dec..f18281bf 100644
--- a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderConfigurationTest.php
@@ -2,37 +2,28 @@
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\Tests\Bundle\JoseFramework\Functional\NestedToken;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Checker\CheckerSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Encryption\EncryptionSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\NestedToken\NestedToken;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Signature\SignatureSource;
use Jose\Component\Encryption\JWELoaderFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group functional
- * @group NestedToken
- *
* @internal
*/
-class NestedTokenLoaderConfigurationTest extends TestCase
+final class NestedTokenLoaderConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(JWELoaderFactory::class)) {
+ if (! class_exists(JWELoaderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-nested-token" is not installed.');
}
}
@@ -42,9 +33,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -52,13 +41,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'nested_token' => false,
- ],
- ]
- );
+ 'nested_token' => false,
+ ],
+ ]);
}
/**
@@ -66,13 +53,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'nested_token' => [],
- ],
- ]
- );
+ 'nested_token' => [],
+ ],
+ ]);
}
/**
@@ -80,15 +65,13 @@ public function theConfigurationIsValidIfConfigurationIsEmpty(): void
*/
public function theConfigurationIsValidIfNoLoaderIsSet(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'nested_token' => [
- 'loaders' => [],
- ],
+ 'nested_token' => [
+ 'loaders' => [],
],
- ]
- );
+ ],
+ ]);
}
/**
@@ -227,11 +210,11 @@ public function theConfigurationIsValid(): void
protected function getConfiguration(): Configuration
{
return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\Checker\CheckerSource(),
- new Source\Signature\SignatureSource(),
- new Source\Encryption\EncryptionSource(),
- new Source\NestedToken\NestedToken(),
+ new CoreSource(),
+ new CheckerSource(),
+ new SignatureSource(),
+ new EncryptionSource(),
+ new NestedToken(),
]);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderTest.php b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderTest.php
index 266b3cda..6a59ce8b 100644
--- a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderTest.php
+++ b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\NestedToken;
use Jose\Bundle\JoseFramework\Services\NestedTokenLoaderFactory;
@@ -20,16 +11,13 @@
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class NestedTokenLoaderTest extends WebTestCase
+final class NestedTokenLoaderTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(NestedTokenLoaderFactory::class)) {
+ if (! class_exists(NestedTokenLoaderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-nested-token" is not installed.');
}
}
@@ -43,7 +31,7 @@ public function theNestedTokenLoaderFactoryIsAvailable(): void
$client = static::createClient();
$container = $client->getContainer();
static::assertNotNull($container);
- static::assertTrue($container->has(\Jose\Bundle\JoseFramework\Services\NestedTokenLoaderFactory::class));
+ static::assertTrue($container->has(NestedTokenLoaderFactory::class));
}
/**
@@ -112,16 +100,14 @@ public function aNestedTokenCanBeDecryptedAndVerifiedUsingTheServiceCreatedFromT
'dq' => 'R9FUvU88OVzEkTkXl3-5-WusE4DjHmndeZIlu3rifBdfLpq_P-iWPBbGaq9wzQ1c-J7SzCdJqkEJDv5yd2C7rnZ6kpzwBh_nmL8zscAk1qsunnt9CJGAYz7-sGWy1JGShFazfP52ThB4rlCJ0YuEaQMrIzpY77_oLAhpmDA0hLk',
'qi' => 'S8tC7ZknW6hPITkjcwttQOPLVmRfwirRlFAViuDb8NW9CrV_7F2OqUZCqmzHTYAumwGFHI1WVRep7anleWaJjxC_1b3fq_al4qH3Pe-EKiHg6IMazuRtZLUROcThrExDbF5dYbsciDnfRUWLErZ4N1Be0bnxYuPqxwKd9QZwMo0',
]);
- $signature_key_set = new JWKSet([
- $signature_key,
- ]);
+ $signature_key_set = new JWKSet([$signature_key]);
$payload = '{"iss":"hobbiton.example","exp":1300819380,"http://example.com/is_root":true}';
$token = 'eyJhbGciOiJSU0EtT0FFUCIsImN0eSI6IkpXVCIsImVuYyI6IkExMjhHQ00ifQ.a0JHRoITfpX4qRewImjlStn8m3CPxBV1ueYlVhjurCyrBg3I7YhCRYjphDOOS4E7rXbr2Fn6NyQq-A-gqT0FXqNjVOGrG-bi13mwy7RoYhjTkBEC6P7sMYMXXx4gzMedpiJHQVeyI-zkZV7A9matpgevAJWrXzOUysYGTtwoSN6gtUVtlLaivjvb21O0ul4YxSHV-ByK1kyeetRp_fuYJxHoKLQL9P424sKx2WGYb4zsBIPF4ssl_e5IR7nany-25_UmC2urosNkoFz9cQ82MypZP8gqbQJyPN-Fpp4Z-5o6yV64x6yzDUF_5JCIdl-Qv6H5dMVIY7q1eKpXcV1lWO_2FefEBqXxXvIjLeZivjNkzogCq3-IapSjVFnMjBxjpYLT8muaawo1yy1XXMuinIpNcOY3n4KKrXLrCcteX85m4IIHMZa38s1Hpr56fPPseMA-Jltmt-a9iEDtOzhtxz8AXy9tsCAZV2XBWNG8c3kJusAamBKOYwfk7JhLRDgOnJjlJLhn7TI4UxDp9dCmUXEN6z0v23W15qJIEXNJtqnblpymooeWAHCT4e_Owbim1g0AEpTHUdA2iiLNs9WTX_H_TXuPC8yDDhi1smxS_X_xpkIHkiIHWDOLx03BpqDTivpKkBYwqP2UZkcxqX2Fo_GnVrNwlK7Lgxw6FSQvDO0.GbX1i9kXz0sxXPmA.SZI4IvKHmwpazl_pJQXX3mHv1ANnOU4Wf9-utWYUcKrBNgCe2OFMf66cSJ8k2QkxaQD3_R60MGE9ofomwtky3GFxMeGRjtpMt9OAvVLsAXB0_UTCBGyBg3C2bWLXqZlfJAAoJRUPRk-BimYZY81zVBuIhc7HsQePCpu33SzMsFHjn4lP_idrJz_glZTNgKDt8zdnUPauKTKDNOH1DD4fuzvDYfDIAfqGPyL5sVRwbiXpXdGokEszM-9ChMPqW1QNhzuX_Zul3bvrJwr7nuGZs4cUScY3n8yE3AHCLurgls-A9mz1X38xEaulV18l4Fg9tLejdkAuQZjPbqeHQBJe4IwGD5Ee0dQ-Mtz4NnhkIWx-YKBb_Xo2zI3Q_1sYjKUuis7yWW-HTr_vqvFt0bj7WJf2vzB0TZ3dvsoGaTvPH2dyWwumUrlx4gmPUzBdwTO6ubfYSDUEEz5py0d_OtWeUSYcCYBKD-aM7tXg26qJo21gYjLfhn9zy-W19sOCZGuzgFjPhawXHpvnj_t-0_ES96kogjJLxS1IMU9Y5XmnwZMyNc9EIwnogsCg-hVuvzyP0sIruktmI94_SL1xgMl7o03phcTMxtlMizR88NKU1WkBsiXMCjy1Noue7MD-ShDp5dmM.KnIKEhN8U-3C9s4gtSpjSw';
$jws = $loader->load($token, $encryption_key_set, $signature_key_set, $signature);
- static::assertEquals($payload, $jws->getPayload());
- static::assertEquals(0, $signature);
+ static::assertSame($payload, $jws->getPayload());
+ static::assertSame(0, $signature);
}
/**
@@ -166,15 +152,13 @@ public function aNestedTokenCanBeDecryptedAndVerifiedUsingTheServiceCreatedFromT
'dq' => 'R9FUvU88OVzEkTkXl3-5-WusE4DjHmndeZIlu3rifBdfLpq_P-iWPBbGaq9wzQ1c-J7SzCdJqkEJDv5yd2C7rnZ6kpzwBh_nmL8zscAk1qsunnt9CJGAYz7-sGWy1JGShFazfP52ThB4rlCJ0YuEaQMrIzpY77_oLAhpmDA0hLk',
'qi' => 'S8tC7ZknW6hPITkjcwttQOPLVmRfwirRlFAViuDb8NW9CrV_7F2OqUZCqmzHTYAumwGFHI1WVRep7anleWaJjxC_1b3fq_al4qH3Pe-EKiHg6IMazuRtZLUROcThrExDbF5dYbsciDnfRUWLErZ4N1Be0bnxYuPqxwKd9QZwMo0',
]);
- $signature_key_set = new JWKSet([
- $signature_key,
- ]);
+ $signature_key_set = new JWKSet([$signature_key]);
$payload = '{"iss":"hobbiton.example","exp":1300819380,"http://example.com/is_root":true}';
$token = 'eyJhbGciOiJSU0EtT0FFUCIsImN0eSI6IkpXVCIsImVuYyI6IkExMjhHQ00ifQ.a0JHRoITfpX4qRewImjlStn8m3CPxBV1ueYlVhjurCyrBg3I7YhCRYjphDOOS4E7rXbr2Fn6NyQq-A-gqT0FXqNjVOGrG-bi13mwy7RoYhjTkBEC6P7sMYMXXx4gzMedpiJHQVeyI-zkZV7A9matpgevAJWrXzOUysYGTtwoSN6gtUVtlLaivjvb21O0ul4YxSHV-ByK1kyeetRp_fuYJxHoKLQL9P424sKx2WGYb4zsBIPF4ssl_e5IR7nany-25_UmC2urosNkoFz9cQ82MypZP8gqbQJyPN-Fpp4Z-5o6yV64x6yzDUF_5JCIdl-Qv6H5dMVIY7q1eKpXcV1lWO_2FefEBqXxXvIjLeZivjNkzogCq3-IapSjVFnMjBxjpYLT8muaawo1yy1XXMuinIpNcOY3n4KKrXLrCcteX85m4IIHMZa38s1Hpr56fPPseMA-Jltmt-a9iEDtOzhtxz8AXy9tsCAZV2XBWNG8c3kJusAamBKOYwfk7JhLRDgOnJjlJLhn7TI4UxDp9dCmUXEN6z0v23W15qJIEXNJtqnblpymooeWAHCT4e_Owbim1g0AEpTHUdA2iiLNs9WTX_H_TXuPC8yDDhi1smxS_X_xpkIHkiIHWDOLx03BpqDTivpKkBYwqP2UZkcxqX2Fo_GnVrNwlK7Lgxw6FSQvDO0.GbX1i9kXz0sxXPmA.SZI4IvKHmwpazl_pJQXX3mHv1ANnOU4Wf9-utWYUcKrBNgCe2OFMf66cSJ8k2QkxaQD3_R60MGE9ofomwtky3GFxMeGRjtpMt9OAvVLsAXB0_UTCBGyBg3C2bWLXqZlfJAAoJRUPRk-BimYZY81zVBuIhc7HsQePCpu33SzMsFHjn4lP_idrJz_glZTNgKDt8zdnUPauKTKDNOH1DD4fuzvDYfDIAfqGPyL5sVRwbiXpXdGokEszM-9ChMPqW1QNhzuX_Zul3bvrJwr7nuGZs4cUScY3n8yE3AHCLurgls-A9mz1X38xEaulV18l4Fg9tLejdkAuQZjPbqeHQBJe4IwGD5Ee0dQ-Mtz4NnhkIWx-YKBb_Xo2zI3Q_1sYjKUuis7yWW-HTr_vqvFt0bj7WJf2vzB0TZ3dvsoGaTvPH2dyWwumUrlx4gmPUzBdwTO6ubfYSDUEEz5py0d_OtWeUSYcCYBKD-aM7tXg26qJo21gYjLfhn9zy-W19sOCZGuzgFjPhawXHpvnj_t-0_ES96kogjJLxS1IMU9Y5XmnwZMyNc9EIwnogsCg-hVuvzyP0sIruktmI94_SL1xgMl7o03phcTMxtlMizR88NKU1WkBsiXMCjy1Noue7MD-ShDp5dmM.KnIKEhN8U-3C9s4gtSpjSw';
$jws = $loader->load($token, $encryption_key_set, $signature_key_set, $signature);
- static::assertEquals($payload, $jws->getPayload());
- static::assertEquals(0, $signature);
+ static::assertSame($payload, $jws->getPayload());
+ static::assertSame(0, $signature);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Normalizer/JWENormalizerTest.php b/tests/Bundle/JoseFramework/Functional/Normalizer/JWENormalizerTest.php
index 15b444b3..41a40184 100644
--- a/tests/Bundle/JoseFramework/Functional/Normalizer/JWENormalizerTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Normalizer/JWENormalizerTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Normalizer;
use Jose\Bundle\JoseFramework\Normalizer\JWENormalizer;
@@ -23,19 +14,16 @@
use Symfony\Component\Serializer\Serializer;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
final class JWENormalizerTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(BaseJWEBuilderFactory::class)) {
+ if (! class_exists(BaseJWEBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-encryption" is not installed.');
}
- if (!class_exists(Serializer::class)) {
+ if (! class_exists(Serializer::class)) {
static::markTestSkipped('The component "symfony/serializer" is not installed.');
}
}
@@ -99,8 +87,8 @@ public function jWSNormalizerPassesThrough(): void
->build()
;
static::assertTrue($serializer->supportsNormalization($jwe));
- static::assertEquals($jwe, $serializer->normalize($jwe));
- static::assertEquals($jwe, $serializer->denormalize($jwe, JWE::class));
+ static::assertEqualsCanonicalizing($jwe, $serializer->normalize($jwe));
+ static::assertSame($jwe, $serializer->denormalize($jwe, JWE::class));
}
/**
@@ -111,7 +99,6 @@ public function jWSNormalizerFromContainerPassesThrough(): void
static::ensureKernelShutdown();
$client = static::createClient();
$container = $client->getContainer();
- static::assertInstanceOf(ContainerInterface::class, $container);
$serializer = $container->get('serializer');
static::assertInstanceOf(Serializer::class, $serializer);
$jweFactory = $container->get(JWEBuilderFactory::class);
@@ -132,7 +119,7 @@ public function jWSNormalizerFromContainerPassesThrough(): void
->build()
;
static::assertTrue($serializer->supportsNormalization($jwe));
- static::assertEquals($jwe, $serializer->normalize($jwe));
- static::assertEquals($jwe, $serializer->denormalize($jwe, JWE::class));
+ static::assertEqualsCanonicalizing($jwe, $serializer->normalize($jwe));
+ static::assertSame($jwe, $serializer->denormalize($jwe, JWE::class));
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Normalizer/JWSNormalizerTest.php b/tests/Bundle/JoseFramework/Functional/Normalizer/JWSNormalizerTest.php
index a2d743f3..342b918b 100644
--- a/tests/Bundle/JoseFramework/Functional/Normalizer/JWSNormalizerTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Normalizer/JWSNormalizerTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Normalizer;
use Jose\Bundle\JoseFramework\Normalizer\JWSNormalizer;
@@ -23,19 +14,16 @@
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
final class JWSNormalizerTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(BaseJWSBuilderFactory::class)) {
+ if (! class_exists(BaseJWSBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
- if (!class_exists(Serializer::class)) {
+ if (! class_exists(Serializer::class)) {
static::markTestSkipped('The component "symfony/serializer" is not installed.');
}
}
@@ -95,8 +83,8 @@ public function jWSNormalizerPassesThrough(): void
->build()
;
static::assertTrue($serializer->supportsNormalization($jws));
- static::assertEquals($jws, $serializer->normalize($jws));
- static::assertEquals($jws, $serializer->denormalize($jws, JWS::class));
+ static::assertSame($jws, $serializer->normalize($jws));
+ static::assertSame($jws, $serializer->denormalize($jws, JWS::class));
}
/**
@@ -126,7 +114,7 @@ public function jWSNormalizerFromContainerPassesThrough(): void
->build()
;
static::assertTrue($serializer->supportsNormalization($jws));
- static::assertEquals($jws, $serializer->normalize($jws));
- static::assertEquals($jws, $serializer->denormalize($jws, JWS::class));
+ static::assertSame($jws, $serializer->normalize($jws));
+ static::assertSame($jws, $serializer->denormalize($jws, JWS::class));
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Serializer/JWEEncoderTest.php b/tests/Bundle/JoseFramework/Functional/Serializer/JWEEncoderTest.php
index a3a50455..e28de020 100644
--- a/tests/Bundle/JoseFramework/Functional/Serializer/JWEEncoderTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Serializer/JWEEncoderTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Serializer;
use Jose\Bundle\JoseFramework\Serializer\JWEEncoder;
@@ -27,19 +18,16 @@
use Symfony\Component\Serializer\Serializer;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
final class JWEEncoderTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(BaseJWEBuilderFactory::class)) {
+ if (! class_exists(BaseJWEBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-encryption" is not installed.');
}
- if (!class_exists(Serializer::class)) {
+ if (! class_exists(Serializer::class)) {
static::markTestSkipped('The component "symfony/serializer" is not installed.');
}
}
@@ -203,17 +191,29 @@ public function jWEEncoderSupportsEncodingWithSpecificSignature(): void
$this->loadJWE($serializer->encode($jwe, 'jwe_compact'), $jwk, $recipient);
$this->loadJWE($serializer->encode($jwe, 'jwe_json_flattened'), $jwk, $recipient);
$this->loadJWE($serializer->encode($jwe, 'jwe_json_general'), $jwk, $recipient);
- static::assertEquals(0, $recipient);
+ static::assertSame(0, $recipient);
// With context, recipient index = 0
- $this->loadJWE($serializer->encode($jwe, 'jwe_compact', ['recipient_index' => 0]), $jwk, $recipient);
- $this->loadJWE($serializer->encode($jwe, 'jwe_json_flattened', ['recipient_index' => 0]), $jwk, $recipient);
- $this->loadJWE($serializer->encode($jwe, 'jwe_json_general', ['recipient_index' => 0]), $jwk, $recipient);
- static::assertEquals(0, $recipient);
+ $this->loadJWE($serializer->encode($jwe, 'jwe_compact', [
+ 'recipient_index' => 0,
+ ]), $jwk, $recipient);
+ $this->loadJWE($serializer->encode($jwe, 'jwe_json_flattened', [
+ 'recipient_index' => 0,
+ ]), $jwk, $recipient);
+ $this->loadJWE($serializer->encode($jwe, 'jwe_json_general', [
+ 'recipient_index' => 0,
+ ]), $jwk, $recipient);
+ static::assertSame(0, $recipient);
// With context, recipient index = 1
- $this->loadJWE($serializer->encode($jwe, 'jwe_compact', ['recipient_index' => 1]), $jwk2, $recipient);
- $this->loadJWE($serializer->encode($jwe, 'jwe_json_flattened', ['recipient_index' => 1]), $jwk2, $recipient);
- $this->loadJWE($serializer->encode($jwe, 'jwe_json_general', ['recipient_index' => 1]), $jwk2, $recipient);
- static::assertEquals(1, $recipient);
+ $this->loadJWE($serializer->encode($jwe, 'jwe_compact', [
+ 'recipient_index' => 1,
+ ]), $jwk2, $recipient);
+ $this->loadJWE($serializer->encode($jwe, 'jwe_json_flattened', [
+ 'recipient_index' => 1,
+ ]), $jwk2, $recipient);
+ $this->loadJWE($serializer->encode($jwe, 'jwe_json_general', [
+ 'recipient_index' => 1,
+ ]), $jwk2, $recipient);
+ static::assertSame(1, $recipient);
}
/**
@@ -225,9 +225,7 @@ public function jWEEncoderSupportsCustomSerializerManager(): void
$client = static::createClient();
$container = $client->getContainer();
static::assertInstanceOf(ContainerInterface::class, $container);
- $jweSerializerManager = new JWESerializerManager([
- new CompactSerializer(),
- ]);
+ $jweSerializerManager = new JWESerializerManager([new CompactSerializer()]);
$jweSerializerManagerFactory = $container->get(JWESerializerManagerFactory::class);
static::assertInstanceOf(JWESerializerManagerFactory::class, $jweSerializerManagerFactory);
$serializer = new JWEEncoder($jweSerializerManagerFactory, $jweSerializerManager);
@@ -267,9 +265,7 @@ public function jWEEncoderShouldThrowOnUnsupportedFormatWhenEncoding(): void
$client = static::createClient();
$container = $client->getContainer();
static::assertInstanceOf(ContainerInterface::class, $container);
- $jweSerializerManager = new JWESerializerManager([
- new CompactSerializer(),
- ]);
+ $jweSerializerManager = new JWESerializerManager([new CompactSerializer()]);
$jweSerializerManagerFactory = $container->get(JWESerializerManagerFactory::class);
static::assertInstanceOf(JWESerializerManagerFactory::class, $jweSerializerManagerFactory);
$serializer = new JWEEncoder($jweSerializerManagerFactory, $jweSerializerManager);
@@ -304,9 +300,7 @@ public function jWEEncoderShouldThrowOnUnsupportedFormatWhenDecoding(): void
$client = static::createClient();
$container = $client->getContainer();
static::assertInstanceOf(ContainerInterface::class, $container);
- $jweSerializerManager = new JWESerializerManager([
- new CompactSerializer(),
- ]);
+ $jweSerializerManager = new JWESerializerManager([new CompactSerializer()]);
$jweSerializerManagerFactory = $container->get(JWESerializerManagerFactory::class);
static::assertInstanceOf(JWESerializerManagerFactory::class, $jweSerializerManagerFactory);
$serializer = new JWEEncoder($jweSerializerManagerFactory, $jweSerializerManager);
diff --git a/tests/Bundle/JoseFramework/Functional/Serializer/JWSEncoderTest.php b/tests/Bundle/JoseFramework/Functional/Serializer/JWSEncoderTest.php
index 40b6e24e..bec1c31b 100644
--- a/tests/Bundle/JoseFramework/Functional/Serializer/JWSEncoderTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Serializer/JWSEncoderTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Serializer;
use Jose\Bundle\JoseFramework\Serializer\JWSEncoder;
@@ -25,19 +16,16 @@
use Symfony\Component\Serializer\Serializer;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
final class JWSEncoderTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(BaseJWSBuilderFactory::class)) {
+ if (! class_exists(BaseJWSBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
- if (!class_exists(Serializer::class)) {
+ if (! class_exists(Serializer::class)) {
static::markTestSkipped('The component "symfony/serializer" is not installed.');
}
}
@@ -108,9 +96,18 @@ public function jWSEncoderCanEncodeAllFormats(): void
])
->build()
;
- static::assertEquals('eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY', $serializer->encode($jws, 'jws_compact'));
- static::assertEquals('{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY"}', $serializer->encode($jws, 'jws_json_flattened'));
- static::assertEquals('{"payload":"SGVsbG8gV29ybGQh","signatures":[{"signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY","protected":"eyJhbGciOiJIUzI1NiJ9"}]}', $serializer->encode($jws, 'jws_json_general'));
+ static::assertSame(
+ 'eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY',
+ $serializer->encode($jws, 'jws_compact')
+ );
+ static::assertSame(
+ '{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY"}',
+ $serializer->encode($jws, 'jws_json_flattened')
+ );
+ static::assertSame(
+ '{"payload":"SGVsbG8gV29ybGQh","signatures":[{"signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY","protected":"eyJhbGciOiJIUzI1NiJ9"}]}',
+ $serializer->encode($jws, 'jws_json_general')
+ );
}
/**
@@ -140,9 +137,27 @@ public function jWSEncoderCanDecodeAllFormats(): void
])
->build()
;
- static::assertEquals($jws, $serializer->decode('eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY', 'jws_compact'));
- static::assertEquals($jws, $serializer->decode('{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY"}', 'jws_json_flattened'));
- static::assertEquals($jws, $serializer->decode('{"payload":"SGVsbG8gV29ybGQh","signatures":[{"signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY","protected":"eyJhbGciOiJIUzI1NiJ9"}]}', 'jws_json_general'));
+ static::assertEqualsCanonicalizing(
+ $jws,
+ $serializer->decode(
+ 'eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY',
+ 'jws_compact'
+ )
+ );
+ static::assertEqualsCanonicalizing(
+ $jws,
+ $serializer->decode(
+ '{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY"}',
+ 'jws_json_flattened'
+ )
+ );
+ static::assertEqualsCanonicalizing(
+ $jws,
+ $serializer->decode(
+ '{"payload":"SGVsbG8gV29ybGQh","signatures":[{"signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY","protected":"eyJhbGciOiJIUzI1NiJ9"}]}',
+ 'jws_json_general'
+ )
+ );
}
/**
@@ -186,17 +201,44 @@ public function jWSEncoderSupportsEncodingWithSpecificSignature(): void
'signature_index' => 1,
];
// No context, signature index = 0
- static::assertEquals('eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY', $serializer->encode($jws, 'jws_compact'));
- static::assertEquals('{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY"}', $serializer->encode($jws, 'jws_json_flattened'));
- static::assertEquals('{"payload":"SGVsbG8gV29ybGQh","signatures":[{"signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY","protected":"eyJhbGciOiJIUzI1NiJ9"},{"signature":"ZIKPsa3NtNoACjvh6fhfg6PZgmKiuss_9sDPtMZxtNU","protected":"eyJhbGciOiJIUzI1NiJ9"}]}', $serializer->encode($jws, 'jws_json_general'));
+ static::assertSame(
+ 'eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY',
+ $serializer->encode($jws, 'jws_compact')
+ );
+ static::assertSame(
+ '{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY"}',
+ $serializer->encode($jws, 'jws_json_flattened')
+ );
+ static::assertSame(
+ '{"payload":"SGVsbG8gV29ybGQh","signatures":[{"signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY","protected":"eyJhbGciOiJIUzI1NiJ9"},{"signature":"ZIKPsa3NtNoACjvh6fhfg6PZgmKiuss_9sDPtMZxtNU","protected":"eyJhbGciOiJIUzI1NiJ9"}]}',
+ $serializer->encode($jws, 'jws_json_general')
+ );
// With context, signature index = 0
- static::assertEquals('eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY', $serializer->encode($jws, 'jws_compact', $context));
- static::assertEquals('{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY"}', $serializer->encode($jws, 'jws_json_flattened', $context));
- static::assertEquals('{"payload":"SGVsbG8gV29ybGQh","signatures":[{"signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY","protected":"eyJhbGciOiJIUzI1NiJ9"},{"signature":"ZIKPsa3NtNoACjvh6fhfg6PZgmKiuss_9sDPtMZxtNU","protected":"eyJhbGciOiJIUzI1NiJ9"}]}', $serializer->encode($jws, 'jws_json_general', $context));
+ static::assertSame(
+ 'eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY',
+ $serializer->encode($jws, 'jws_compact', $context)
+ );
+ static::assertSame(
+ '{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY"}',
+ $serializer->encode($jws, 'jws_json_flattened', $context)
+ );
+ static::assertSame(
+ '{"payload":"SGVsbG8gV29ybGQh","signatures":[{"signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY","protected":"eyJhbGciOiJIUzI1NiJ9"},{"signature":"ZIKPsa3NtNoACjvh6fhfg6PZgmKiuss_9sDPtMZxtNU","protected":"eyJhbGciOiJIUzI1NiJ9"}]}',
+ $serializer->encode($jws, 'jws_json_general', $context)
+ );
// With context, signature index = 1
- static::assertEquals('eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.ZIKPsa3NtNoACjvh6fhfg6PZgmKiuss_9sDPtMZxtNU', $serializer->encode($jws, 'jws_compact', $context2));
- static::assertEquals('{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"ZIKPsa3NtNoACjvh6fhfg6PZgmKiuss_9sDPtMZxtNU"}', $serializer->encode($jws, 'jws_json_flattened', $context2));
- static::assertEquals('{"payload":"SGVsbG8gV29ybGQh","signatures":[{"signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY","protected":"eyJhbGciOiJIUzI1NiJ9"},{"signature":"ZIKPsa3NtNoACjvh6fhfg6PZgmKiuss_9sDPtMZxtNU","protected":"eyJhbGciOiJIUzI1NiJ9"}]}', $serializer->encode($jws, 'jws_json_general', $context2));
+ static::assertSame(
+ 'eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.ZIKPsa3NtNoACjvh6fhfg6PZgmKiuss_9sDPtMZxtNU',
+ $serializer->encode($jws, 'jws_compact', $context2)
+ );
+ static::assertSame(
+ '{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"ZIKPsa3NtNoACjvh6fhfg6PZgmKiuss_9sDPtMZxtNU"}',
+ $serializer->encode($jws, 'jws_json_flattened', $context2)
+ );
+ static::assertSame(
+ '{"payload":"SGVsbG8gV29ybGQh","signatures":[{"signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY","protected":"eyJhbGciOiJIUzI1NiJ9"},{"signature":"ZIKPsa3NtNoACjvh6fhfg6PZgmKiuss_9sDPtMZxtNU","protected":"eyJhbGciOiJIUzI1NiJ9"}]}',
+ $serializer->encode($jws, 'jws_json_general', $context2)
+ );
}
/**
@@ -208,9 +250,7 @@ public function jWSEncoderSupportsCustomSerializerManager(): void
$client = static::createClient();
$container = $client->getContainer();
static::assertInstanceOf(ContainerInterface::class, $container);
- $jwsSerializerManager = new JWSSerializerManager([
- new CompactSerializer(),
- ]);
+ $jwsSerializerManager = new JWSSerializerManager([new CompactSerializer()]);
$jwsSerializerManagerFactory = $container->get(JWSSerializerManagerFactory::class);
static::assertInstanceOf(JWSSerializerManagerFactory::class, $jwsSerializerManagerFactory);
$serializer = new JWSEncoder($jwsSerializerManagerFactory, $jwsSerializerManager);
@@ -235,8 +275,17 @@ public function jWSEncoderSupportsCustomSerializerManager(): void
static::assertTrue($serializer->supportsDecoding('jws_compact'));
static::assertFalse($serializer->supportsDecoding('jws_json_flattened'));
static::assertFalse($serializer->supportsDecoding('jws_json_general'));
- static::assertEquals('eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY', $serializer->encode($jws, 'jws_compact'));
- static::assertEquals($jws, $serializer->decode('eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY', 'jws_compact'));
+ static::assertSame(
+ 'eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY',
+ $serializer->encode($jws, 'jws_compact')
+ );
+ static::assertEqualsCanonicalizing(
+ $jws,
+ $serializer->decode(
+ 'eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY',
+ 'jws_compact'
+ )
+ );
}
/**
@@ -248,9 +297,7 @@ public function jWSEncoderShouldThrowOnUnsupportedFormatWhenEncoding(): void
$client = static::createClient();
$container = $client->getContainer();
static::assertInstanceOf(ContainerInterface::class, $container);
- $serializerManager = new JWSSerializerManager([
- new CompactSerializer(),
- ]);
+ $serializerManager = new JWSSerializerManager([new CompactSerializer()]);
$jwsSerializerManagerFactory = $container->get(JWSSerializerManagerFactory::class);
static::assertInstanceOf(JWSSerializerManagerFactory::class, $jwsSerializerManagerFactory);
$serializer = new JWSEncoder($jwsSerializerManagerFactory, $serializerManager);
@@ -269,7 +316,10 @@ public function jWSEncoderShouldThrowOnUnsupportedFormatWhenEncoding(): void
])
->build()
;
- static::assertEquals('eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY', $serializer->encode($jws, 'jws_compact'));
+ static::assertSame(
+ 'eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY',
+ $serializer->encode($jws, 'jws_compact')
+ );
$this->expectExceptionMessage('Cannot encode JWS to jws_json_flattened format.');
$serializer->encode($jws, 'jws_json_flattened');
}
@@ -283,9 +333,7 @@ public function jWSEncoderShouldThrowOnUnsupportedFormatWhenDecoding(): void
$client = static::createClient();
$container = $client->getContainer();
static::assertInstanceOf(ContainerInterface::class, $container);
- $serializerManager = new JWSSerializerManager([
- new CompactSerializer(),
- ]);
+ $serializerManager = new JWSSerializerManager([new CompactSerializer()]);
$jwsSerializerManagerFactory = $container->get(JWSSerializerManagerFactory::class);
static::assertInstanceOf(JWSSerializerManagerFactory::class, $jwsSerializerManagerFactory);
$serializer = new JWSEncoder($jwsSerializerManagerFactory, $serializerManager);
@@ -304,8 +352,17 @@ public function jWSEncoderShouldThrowOnUnsupportedFormatWhenDecoding(): void
])
->build()
;
- static::assertEquals($jws, $serializer->decode('eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY', 'jws_compact'));
+ static::assertEqualsCanonicalizing(
+ $jws,
+ $serializer->decode(
+ 'eyJhbGciOiJIUzI1NiJ9.SGVsbG8gV29ybGQh.qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY',
+ 'jws_compact'
+ )
+ );
$this->expectExceptionMessage('Cannot decode JWS from jws_json_flattened format.');
- $serializer->decode('{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY"}', 'jws_json_flattened');
+ $serializer->decode(
+ '{"payload":"SGVsbG8gV29ybGQh","protected":"eyJhbGciOiJIUzI1NiJ9","signature":"qTzr2HflJbt-MDo1Ye7i5W85avH4hrhvb1U6tbd_mzY"}',
+ 'jws_json_flattened'
+ );
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Signature/JWSBuilderTest.php b/tests/Bundle/JoseFramework/Functional/Signature/JWSBuilderTest.php
index a36a7f2f..ca980921 100644
--- a/tests/Bundle/JoseFramework/Functional/Signature/JWSBuilderTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Signature/JWSBuilderTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Signature;
use Jose\Bundle\JoseFramework\Services\JWSBuilder;
@@ -20,16 +11,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class JWSBuilderTest extends WebTestCase
+final class JWSBuilderTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JWSBuilderFactory::class)) {
+ if (! class_exists(JWSBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Signature/JWSComputationTest.php b/tests/Bundle/JoseFramework/Functional/Signature/JWSComputationTest.php
index 0b60fc11..7cef4bea 100644
--- a/tests/Bundle/JoseFramework/Functional/Signature/JWSComputationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Signature/JWSComputationTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Signature;
use Jose\Component\Core\JWK;
@@ -22,16 +13,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class JWSComputationTest extends WebTestCase
+final class JWSComputationTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JWSBuilderFactory::class)) {
+ if (! class_exists(JWSBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Signature/JWSLoaderTest.php b/tests/Bundle/JoseFramework/Functional/Signature/JWSLoaderTest.php
index c512624e..f829589f 100644
--- a/tests/Bundle/JoseFramework/Functional/Signature/JWSLoaderTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Signature/JWSLoaderTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Signature;
use Jose\Bundle\JoseFramework\Services\JWSLoaderFactory as JWSLoaderFactoryService;
@@ -20,16 +11,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class JWSLoaderTest extends WebTestCase
+final class JWSLoaderTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JWSLoaderFactory::class)) {
+ if (! class_exists(JWSLoaderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
}
@@ -61,8 +49,8 @@ public function theWELoaderFactoryCanCreateAJWSLoader(): void
$jws = $jwsLoaderFactory->create(['jws_compact'], ['RS512']);
- static::assertEquals(['jws_compact'], $jws->getSerializerManager()->list());
- static::assertEquals(['RS512'], $jws->getJwsVerifier()->getSignatureAlgorithmManager()->list());
+ static::assertSame(['jws_compact'], $jws->getSerializerManager()->list());
+ static::assertSame(['RS512'], $jws->getJwsVerifier()->getSignatureAlgorithmManager()->list());
}
/**
diff --git a/tests/Bundle/JoseFramework/Functional/Signature/JWSSerializerTest.php b/tests/Bundle/JoseFramework/Functional/Signature/JWSSerializerTest.php
index dfe0c4c2..6afdfedb 100644
--- a/tests/Bundle/JoseFramework/Functional/Signature/JWSSerializerTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Signature/JWSSerializerTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Signature;
use Jose\Component\Signature\JWSBuilderFactory;
@@ -19,16 +10,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class JWSSerializerTest extends WebTestCase
+final class JWSSerializerTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JWSBuilderFactory::class)) {
+ if (! class_exists(JWSBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Signature/JWSVerifierTest.php b/tests/Bundle/JoseFramework/Functional/Signature/JWSVerifierTest.php
index 21c1f502..39f6813b 100644
--- a/tests/Bundle/JoseFramework/Functional/Signature/JWSVerifierTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Signature/JWSVerifierTest.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\Functional\Signature;
use Jose\Bundle\JoseFramework\Services\JWSVerifierFactory as JWSVerifierFactoryService;
@@ -20,16 +11,13 @@
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @group Bundle
- * @group functional
- *
* @internal
*/
-class JWSVerifierTest extends WebTestCase
+final class JWSVerifierTest extends WebTestCase
{
protected function setUp(): void
{
- if (!class_exists(JWSBuilderFactory::class)) {
+ if (! class_exists(JWSBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Signature/JwsBuilderConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/Signature/JwsBuilderConfigurationTest.php
index e0eb230f..58e8f250 100644
--- a/tests/Bundle/JoseFramework/Functional/Signature/JwsBuilderConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Signature/JwsBuilderConfigurationTest.php
@@ -2,36 +2,25 @@
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\Tests\Bundle\JoseFramework\Functional\Signature;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Signature\SignatureSource;
use Jose\Component\Signature\JWSBuilderFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group Configuration
- *
* @internal
*/
-class JwsBuilderConfigurationTest extends TestCase
+final class JwsBuilderConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(JWSBuilderFactory::class)) {
+ if (! class_exists(JWSBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
}
@@ -41,9 +30,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -51,13 +38,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jws' => false,
- ],
- ]
- );
+ 'jws' => false,
+ ],
+ ]);
}
/**
@@ -65,13 +50,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jws' => [],
- ],
- ]
- );
+ 'jws' => [],
+ ],
+ ]);
}
/**
@@ -79,15 +62,13 @@ public function theConfigurationIsValidIfConfigurationIsEmpty(): void
*/
public function theConfigurationIsInvalidIfBuilderIsSet(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jws' => [
- 'builders' => [],
- ],
+ 'jws' => [
+ 'builders' => [],
],
- ]
- );
+ ],
+ ]);
}
/**
@@ -132,9 +113,6 @@ public function theConfigurationIsInvalidIfTheSignatureAlgorithmIsEmpty(): void
protected function getConfiguration(): Configuration
{
- return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\Signature\SignatureSource(),
- ]);
+ return new Configuration('jose', [new CoreSource(), new SignatureSource()]);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Signature/JwsVerifierConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/Signature/JwsVerifierConfigurationTest.php
index 2bac288d..d29b9fea 100644
--- a/tests/Bundle/JoseFramework/Functional/Signature/JwsVerifierConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Signature/JwsVerifierConfigurationTest.php
@@ -2,36 +2,25 @@
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\Tests\Bundle\JoseFramework\Functional\Signature;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Signature\SignatureSource;
use Jose\Component\Signature\JWSBuilderFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group Configuration
- *
* @internal
*/
-class JwsVerifierConfigurationTest extends TestCase
+final class JwsVerifierConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(JWSBuilderFactory::class)) {
+ if (! class_exists(JWSBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
}
@@ -41,9 +30,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -51,13 +38,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jws' => false,
- ],
- ]
- );
+ 'jws' => false,
+ ],
+ ]);
}
/**
@@ -65,13 +50,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jws' => [],
- ],
- ]
- );
+ 'jws' => [],
+ ],
+ ]);
}
/**
@@ -79,15 +62,13 @@ public function theConfigurationIsValidIfConfigurationIsEmpty(): void
*/
public function theConfigurationIsInvalidIfBuilderIsSet(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jws' => [
- 'verifiers' => [],
- ],
+ 'jws' => [
+ 'verifiers' => [],
],
- ]
- );
+ ],
+ ]);
}
/**
@@ -132,9 +113,6 @@ public function theConfigurationIsInvalidIfTheSignatureAlgorithmIsEmpty(): void
protected function getConfiguration(): Configuration
{
- return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\Signature\SignatureSource(),
- ]);
+ return new Configuration('jose', [new CoreSource(), new SignatureSource()]);
}
}
diff --git a/tests/Bundle/JoseFramework/Functional/Signature/SerializerConfigurationTest.php b/tests/Bundle/JoseFramework/Functional/Signature/SerializerConfigurationTest.php
index 7e86f70e..78fa6593 100644
--- a/tests/Bundle/JoseFramework/Functional/Signature/SerializerConfigurationTest.php
+++ b/tests/Bundle/JoseFramework/Functional/Signature/SerializerConfigurationTest.php
@@ -2,36 +2,25 @@
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\Tests\Bundle\JoseFramework\Functional\Signature;
use Jose\Bundle\JoseFramework\DependencyInjection\Configuration;
-use Jose\Bundle\JoseFramework\DependencyInjection\Source;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Core\CoreSource;
+use Jose\Bundle\JoseFramework\DependencyInjection\Source\Signature\SignatureSource;
use Jose\Component\Signature\JWSBuilderFactory;
use Matthias\SymfonyConfigTest\PhpUnit\ConfigurationTestCaseTrait;
use PHPUnit\Framework\TestCase;
/**
- * @group Bundle
- * @group Configuration
- *
* @internal
*/
-class SerializerConfigurationTest extends TestCase
+final class SerializerConfigurationTest extends TestCase
{
use ConfigurationTestCaseTrait;
protected function setUp(): void
{
- if (!class_exists(JWSBuilderFactory::class)) {
+ if (! class_exists(JWSBuilderFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
}
@@ -41,9 +30,7 @@ protected function setUp(): void
*/
public function theConfigurationIsValidIfNoConfigurationIsSet(): void
{
- $this->assertConfigurationIsValid(
- []
- );
+ $this->assertConfigurationIsValid([]);
}
/**
@@ -51,13 +38,11 @@ public function theConfigurationIsValidIfNoConfigurationIsSet(): void
*/
public function theConfigurationIsValidIfConfigurationIsFalse(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jws' => false,
- ],
- ]
- );
+ 'jws' => false,
+ ],
+ ]);
}
/**
@@ -65,13 +50,11 @@ public function theConfigurationIsValidIfConfigurationIsFalse(): void
*/
public function theConfigurationIsValidIfConfigurationIsEmpty(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jws' => [],
- ],
- ]
- );
+ 'jws' => [],
+ ],
+ ]);
}
/**
@@ -79,15 +62,13 @@ public function theConfigurationIsValidIfConfigurationIsEmpty(): void
*/
public function theConfigurationIsValidIfNoSerializerIsSet(): void
{
- $this->assertConfigurationIsValid(
+ $this->assertConfigurationIsValid([
[
- [
- 'jws' => [
- 'serializers' => [],
- ],
+ 'jws' => [
+ 'serializers' => [],
],
- ]
- );
+ ],
+ ]);
}
/**
@@ -132,9 +113,6 @@ public function theConfigurationIsInvalidIfTheSerializerListIsEmpty(): void
protected function getConfiguration(): Configuration
{
- return new Configuration('jose', [
- new Source\Core\CoreSource(),
- new Source\Signature\SignatureSource(),
- ]);
+ return new Configuration('jose', [new CoreSource(), new SignatureSource()]);
}
}
diff --git a/tests/Bundle/JoseFramework/TestBundle/Checker/CustomChecker.php b/tests/Bundle/JoseFramework/TestBundle/Checker/CustomChecker.php
index e60907e9..7c7fb79d 100644
--- a/tests/Bundle/JoseFramework/TestBundle/Checker/CustomChecker.php
+++ b/tests/Bundle/JoseFramework/TestBundle/Checker/CustomChecker.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\TestBundle\Checker;
use InvalidArgumentException;
@@ -24,7 +15,7 @@ class CustomChecker implements ClaimChecker, HeaderChecker
*/
public function checkClaim($value): void
{
- if (true === $value) {
+ if ($value === true) {
throw new InvalidArgumentException('Custom checker!');
}
}
@@ -39,7 +30,7 @@ public function supportedClaim(): string
*/
public function checkHeader($value): void
{
- if (true === $value) {
+ if ($value === true) {
throw new InvalidArgumentException('Custom checker!');
}
}
diff --git a/tests/Bundle/JoseFramework/TestBundle/DependencyInjection/TestExtension.php b/tests/Bundle/JoseFramework/TestBundle/DependencyInjection/TestExtension.php
index e5b14b46..605b0866 100644
--- a/tests/Bundle/JoseFramework/TestBundle/DependencyInjection/TestExtension.php
+++ b/tests/Bundle/JoseFramework/TestBundle/DependencyInjection/TestExtension.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\TestBundle\DependencyInjection;
use Jose\Bundle\JoseFramework\Helper\ConfigurationHelper;
@@ -20,14 +11,11 @@
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
-/**
- * Class TestExtension.
- */
class TestExtension extends Extension implements PrependExtensionInterface
{
public function load(array $configs, ContainerBuilder $container): void
{
- $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.php');
}
@@ -49,13 +37,56 @@ public function prepend(ContainerBuilder $container): void
ConfigurationHelper::addHeaderChecker($container, 'checker2', ['custom_checker'], true);
ConfigurationHelper::addJWSBuilder($container, 'builder2', ['RS512', 'HS512', 'ES512'], true);
ConfigurationHelper::addJWSVerifier($container, 'loader2', ['RS512', 'HS512', 'ES512'], true);
- ConfigurationHelper::addJWSSerializer($container, 'jws_serializer2', ['jws_compact', 'jws_json_flattened', 'jws_json_general'], true);
+ ConfigurationHelper::addJWSSerializer(
+ $container,
+ 'jws_serializer2',
+ ['jws_compact', 'jws_json_flattened', 'jws_json_general'],
+ true
+ );
ConfigurationHelper::addJWSLoader($container, 'jws_loader2', ['jws_compact'], ['HS512'], [], true);
ConfigurationHelper::addJWEBuilder($container, 'builder2', ['RSA-OAEP-256'], ['A128GCM'], ['DEF'], true);
ConfigurationHelper::addJWEDecrypter($container, 'loader2', ['RSA-OAEP-256'], ['A128GCM'], ['DEF'], true);
- ConfigurationHelper::addJWESerializer($container, 'jwe_serializer2', ['jwe_compact', 'jwe_json_flattened', 'jwe_json_general'], true);
- ConfigurationHelper::addJWELoader($container, 'jwe_loader2', ['jwe_compact'], ['RSA-OAEP-256'], ['A128GCM'], ['DEF'], [], true);
- ConfigurationHelper::addNestedTokenLoader($container, 'nested_token_loader_2', ['jwe_compact'], ['RSA-OAEP'], ['A128GCM'], ['DEF'], [], ['jws_compact'], ['PS256'], [], true, []);
- ConfigurationHelper::addNestedTokenBuilder($container, 'nested_token_builder_2', ['jwe_compact'], ['RSA-OAEP'], ['A128GCM'], ['DEF'], ['jws_compact'], ['PS256'], true, []);
+ ConfigurationHelper::addJWESerializer(
+ $container,
+ 'jwe_serializer2',
+ ['jwe_compact', 'jwe_json_flattened', 'jwe_json_general'],
+ true
+ );
+ ConfigurationHelper::addJWELoader(
+ $container,
+ 'jwe_loader2',
+ ['jwe_compact'],
+ ['RSA-OAEP-256'],
+ ['A128GCM'],
+ ['DEF'],
+ [],
+ true
+ );
+ ConfigurationHelper::addNestedTokenLoader(
+ $container,
+ 'nested_token_loader_2',
+ ['jwe_compact'],
+ ['RSA-OAEP'],
+ ['A128GCM'],
+ ['DEF'],
+ [],
+ ['jws_compact'],
+ ['PS256'],
+ [],
+ true,
+ []
+ );
+ ConfigurationHelper::addNestedTokenBuilder(
+ $container,
+ 'nested_token_builder_2',
+ ['jwe_compact'],
+ ['RSA-OAEP'],
+ ['A128GCM'],
+ ['DEF'],
+ ['jws_compact'],
+ ['PS256'],
+ true,
+ []
+ );
}
}
diff --git a/tests/Bundle/JoseFramework/TestBundle/Resources/config/services.php b/tests/Bundle/JoseFramework/TestBundle/Resources/config/services.php
index ae6cada1..1ac8b695 100644
--- a/tests/Bundle/JoseFramework/TestBundle/Resources/config/services.php
+++ b/tests/Bundle/JoseFramework/TestBundle/Resources/config/services.php
@@ -2,27 +2,23 @@
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.
- */
-
use Jose\Tests\Bundle\JoseFramework\TestBundle\Checker\CustomChecker;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container) {
- $container = $container->services()->defaults()
+ $container = $container->services()
+ ->defaults()
->private()
->autoconfigure()
->autowire()
;
$container->set(CustomChecker::class)
- ->tag('jose.checker.header', ['alias' => 'custom_checker'])
- ->tag('jose.checker.claim', ['alias' => 'custom_checker'])
+ ->tag('jose.checker.header', [
+ 'alias' => 'custom_checker',
+ ])
+ ->tag('jose.checker.claim', [
+ 'alias' => 'custom_checker',
+ ])
;
};
diff --git a/tests/Bundle/JoseFramework/TestBundle/Service/MockClientCallback.php b/tests/Bundle/JoseFramework/TestBundle/Service/MockClientCallback.php
index e8937d16..66796938 100644
--- a/tests/Bundle/JoseFramework/TestBundle/Service/MockClientCallback.php
+++ b/tests/Bundle/JoseFramework/TestBundle/Service/MockClientCallback.php
@@ -2,15 +2,6 @@
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\Tests\Bundle\JoseFramework\TestBundle\Service;
use Psr\Http\Client\ClientInterface;
@@ -19,10 +10,7 @@
final class MockClientCallback implements ClientInterface
{
- /**
- * @var ResponseInterface
- */
- private $response;
+ private ?ResponseInterface $response = null;
public function set(ResponseInterface $response): void
{
@@ -33,4 +21,4 @@ public function sendRequest(RequestInterface $request): ResponseInterface
{
return $this->response;
}
-}
\ No newline at end of file
+}
diff --git a/tests/Bundle/JoseFramework/TestBundle/TestBundle.php b/tests/Bundle/JoseFramework/TestBundle/TestBundle.php
index 2641b7e7..181f3f92 100644
--- a/tests/Bundle/JoseFramework/TestBundle/TestBundle.php
+++ b/tests/Bundle/JoseFramework/TestBundle/TestBundle.php
@@ -2,22 +2,10 @@
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\Tests\Bundle\JoseFramework\TestBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
-/**
- * Class TestBundle.
- */
class TestBundle extends Bundle
{
}
diff --git a/tests/Bundle/JoseFramework/config/config_test.yml b/tests/Bundle/JoseFramework/config/config_test.yml
index 1cd46eb0..aaada605 100644
--- a/tests/Bundle/JoseFramework/config/config_test.yml
+++ b/tests/Bundle/JoseFramework/config/config_test.yml
@@ -1,8 +1,7 @@
framework:
test: ~
secret: 'test'
- session:
- storage_id: 'session.storage.mock_file'
+ session: ~
router:
resource: "%kernel.project_dir%/tests/Bundle/JoseFramework/config/routing.yml"
strict_requirements: ~
diff --git a/tests/Component/Checker/AlgorithmHeaderCheckerTest.php b/tests/Component/Checker/AlgorithmHeaderCheckerTest.php
index 636d9de9..906da50a 100644
--- a/tests/Component/Checker/AlgorithmHeaderCheckerTest.php
+++ b/tests/Component/Checker/AlgorithmHeaderCheckerTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Checker;
use Jose\Component\Checker\AlgorithmChecker;
@@ -18,12 +9,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group HeaderChecker
- * @group functional
- *
* @internal
*/
-class AlgorithmHeaderCheckerTest extends TestCase
+final class AlgorithmHeaderCheckerTest extends TestCase
{
/**
* @test
@@ -57,6 +45,6 @@ public function theAlgorithmHeaderIsSupported(): void
$checker = new AlgorithmChecker(['foo']);
$checker->checkHeader('foo');
static::assertFalse($checker->protectedHeaderOnly());
- static::assertEquals('alg', $checker->supportedHeader());
+ static::assertSame('alg', $checker->supportedHeader());
}
}
diff --git a/tests/Component/Checker/AudienceClaimCheckerTest.php b/tests/Component/Checker/AudienceClaimCheckerTest.php
index e1e44887..03e14809 100644
--- a/tests/Component/Checker/AudienceClaimCheckerTest.php
+++ b/tests/Component/Checker/AudienceClaimCheckerTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Checker;
use Jose\Component\Checker\AudienceChecker;
@@ -18,12 +9,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group ClaimChecker
- * @group functional
- *
* @internal
*/
-class AudienceClaimCheckerTest extends TestCase
+final class AudienceClaimCheckerTest extends TestCase
{
/**
* @test
@@ -69,6 +57,6 @@ public function theAudienceClaimIsSupported(): void
$checker = new AudienceChecker('foo');
$checker->checkClaim('foo');
$checker->checkClaim(['foo']);
- static::assertEquals('aud', $checker->supportedClaim());
+ static::assertSame('aud', $checker->supportedClaim());
}
}
diff --git a/tests/Component/Checker/AudienceHeaderCheckerTest.php b/tests/Component/Checker/AudienceHeaderCheckerTest.php
index 9f58bbd4..32fa0267 100644
--- a/tests/Component/Checker/AudienceHeaderCheckerTest.php
+++ b/tests/Component/Checker/AudienceHeaderCheckerTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Checker;
use Jose\Component\Checker\AudienceChecker;
@@ -18,12 +9,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group HeaderChecker
- * @group functional
- *
* @internal
*/
-class AudienceHeaderCheckerTest extends TestCase
+final class AudienceHeaderCheckerTest extends TestCase
{
/**
* @test
@@ -70,6 +58,6 @@ public function theAudienceHeaderIsSupported(): void
$checker->checkHeader('foo');
$checker->checkHeader(['foo']);
static::assertFalse($checker->protectedHeaderOnly());
- static::assertEquals('aud', $checker->supportedHeader());
+ static::assertSame('aud', $checker->supportedHeader());
}
}
diff --git a/tests/Component/Checker/ClaimCheckerManagerFactoryTest.php b/tests/Component/Checker/ClaimCheckerManagerFactoryTest.php
index 0f936c24..f1b3912a 100644
--- a/tests/Component/Checker/ClaimCheckerManagerFactoryTest.php
+++ b/tests/Component/Checker/ClaimCheckerManagerFactoryTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Checker;
use InvalidArgumentException;
@@ -18,28 +9,23 @@
use Jose\Component\Checker\ClaimCheckerManagerFactory;
use Jose\Component\Checker\ExpirationTimeChecker;
use Jose\Component\Checker\IssuedAtChecker;
+use Jose\Component\Checker\MissingMandatoryClaimException;
use Jose\Component\Checker\NotBeforeChecker;
use PHPUnit\Framework\TestCase;
/**
- * @group ClaimChecker
- * @group functional
- *
* @internal
*/
-class ClaimCheckerManagerFactoryTest extends TestCase
+final class ClaimCheckerManagerFactoryTest extends TestCase
{
- /**
- * @var null|ClaimCheckerManagerFactory
- */
- private $claimCheckerManagerFactory;
+ private ?ClaimCheckerManagerFactory $claimCheckerManagerFactory = null;
/**
* @test
*/
public function theAliasListOfTheClaimCheckerManagerFactoryIsAvailable(): void
{
- static::assertEquals(['exp', 'iat', 'nbf', 'aud'], $this->getClaimCheckerManagerFactory()->aliases());
+ static::assertSame(['exp', 'iat', 'nbf', 'aud'], $this->getClaimCheckerManagerFactory()->aliases());
}
/**
@@ -50,7 +36,9 @@ public function theAliasDoesNotExist(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('The claim checker with the alias "foo" is not supported.');
- $this->getClaimCheckerManagerFactory()->create(['foo']);
+ $this->getClaimCheckerManagerFactory()
+ ->create(['foo'])
+ ;
}
/**
@@ -58,7 +46,9 @@ public function theAliasDoesNotExist(): void
*/
public function iCanCreateAClaimCheckerManager(): void
{
- $manager = $this->getClaimCheckerManagerFactory()->create(['exp', 'iat', 'nbf', 'aud']);
+ $manager = $this->getClaimCheckerManagerFactory()
+ ->create(['exp', 'iat', 'nbf', 'aud'])
+ ;
static::assertCount(4, $manager->getCheckers());
}
@@ -75,9 +65,11 @@ public function iCanCheckValidPayloadClaims(): void
];
$expected = $payload;
unset($expected['foo']);
- $manager = $this->getClaimCheckerManagerFactory()->create(['exp', 'iat', 'nbf', 'aud']);
+ $manager = $this->getClaimCheckerManagerFactory()
+ ->create(['exp', 'iat', 'nbf', 'aud'])
+ ;
$result = $manager->check($payload);
- static::assertEquals($expected, $result);
+ static::assertSame($expected, $result);
}
/**
@@ -85,7 +77,7 @@ public function iCanCheckValidPayloadClaims(): void
*/
public function theMandatoryClaimsAreNotSet(): void
{
- $this->expectException(\Jose\Component\Checker\MissingMandatoryClaimException::class);
+ $this->expectException(MissingMandatoryClaimException::class);
$this->expectExceptionMessage('The following claims are mandatory: bar.');
$payload = [
@@ -96,13 +88,15 @@ public function theMandatoryClaimsAreNotSet(): void
];
$expected = $payload;
unset($expected['foo']);
- $manager = $this->getClaimCheckerManagerFactory()->create(['exp', 'iat', 'nbf', 'aud']);
+ $manager = $this->getClaimCheckerManagerFactory()
+ ->create(['exp', 'iat', 'nbf', 'aud'])
+ ;
$manager->check($payload, ['exp', 'foo', 'bar']);
}
private function getClaimCheckerManagerFactory(): ClaimCheckerManagerFactory
{
- if (null === $this->claimCheckerManagerFactory) {
+ if ($this->claimCheckerManagerFactory === null) {
$this->claimCheckerManagerFactory = new ClaimCheckerManagerFactory();
$this->claimCheckerManagerFactory->add('exp', new ExpirationTimeChecker());
$this->claimCheckerManagerFactory->add('iat', new IssuedAtChecker());
diff --git a/tests/Component/Checker/ClaimCheckerManagerTest.php b/tests/Component/Checker/ClaimCheckerManagerTest.php
index 287048d2..b183c97d 100644
--- a/tests/Component/Checker/ClaimCheckerManagerTest.php
+++ b/tests/Component/Checker/ClaimCheckerManagerTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Checker;
use Jose\Component\Checker\AudienceChecker;
@@ -18,23 +9,16 @@
use PHPUnit\Framework\TestCase;
/**
- * @group ClaimChecker
- * @group unit
- *
* @internal
*/
final class ClaimCheckerManagerTest extends TestCase
{
/**
- * @covers \Jose\Component\Checker\AudienceChecker
- * @covers \Jose\Component\Checker\ClaimCheckerManager
* @test
*/
public function getCheckers(): void
{
- $checkers = [
- new AudienceChecker('some-expected-audience'),
- ];
+ $checkers = [new AudienceChecker('some-expected-audience')];
$expectedCheckers = [
'aud' => $checkers[0],
@@ -42,9 +26,6 @@ public function getCheckers(): void
$sut = new ClaimCheckerManager($checkers);
- static::assertEquals(
- $expectedCheckers,
- $sut->getCheckers()
- );
+ static::assertSame($expectedCheckers, $sut->getCheckers());
}
}
diff --git a/tests/Component/Checker/ExpirationTimeClaimCheckerTest.php b/tests/Component/Checker/ExpirationTimeClaimCheckerTest.php
index 4a4183ce..580892ec 100644
--- a/tests/Component/Checker/ExpirationTimeClaimCheckerTest.php
+++ b/tests/Component/Checker/ExpirationTimeClaimCheckerTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Checker;
use Jose\Component\Checker\ExpirationTimeChecker;
@@ -18,12 +9,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group ClaimChecker
- * @group functional
- *
* @internal
*/
-class ExpirationTimeClaimCheckerTest extends TestCase
+final class ExpirationTimeClaimCheckerTest extends TestCase
{
/**
* @test
@@ -56,6 +44,6 @@ public function theExpirationTimeIsInTheFutur(): void
{
$checker = new ExpirationTimeChecker();
$checker->checkClaim(time() + 3600);
- static::assertEquals('exp', $checker->supportedClaim());
+ static::assertSame('exp', $checker->supportedClaim());
}
}
diff --git a/tests/Component/Checker/HeaderCheckerManagerFactoryTest.php b/tests/Component/Checker/HeaderCheckerManagerFactoryTest.php
index 29b2808c..efc24582 100644
--- a/tests/Component/Checker/HeaderCheckerManagerFactoryTest.php
+++ b/tests/Component/Checker/HeaderCheckerManagerFactoryTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Checker;
use InvalidArgumentException;
@@ -25,24 +16,18 @@
use PHPUnit\Framework\TestCase;
/**
- * @group HeaderChecker
- * @group functional
- *
* @internal
*/
-class HeaderCheckerManagerFactoryTest extends TestCase
+final class HeaderCheckerManagerFactoryTest extends TestCase
{
- /**
- * @var null|HeaderCheckerManagerFactory
- */
- private $headerCheckerManagerFactory;
+ private ?HeaderCheckerManagerFactory $headerCheckerManagerFactory = null;
/**
* @test
*/
public function theAliasListOfTheHeaderCheckerManagerFactoryIsAvailable(): void
{
- static::assertEquals(['aud', 'iss'], $this->getHeaderCheckerManagerFactory()->aliases());
+ static::assertSame(['aud', 'iss'], $this->getHeaderCheckerManagerFactory()->aliases());
}
/**
@@ -53,10 +38,16 @@ public function aHeaderMustNotContainDuplicatedHeaderParameters(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('The header contains duplicated entries: alg.');
- $headerCheckerManager = $this->getHeaderCheckerManagerFactory()->create(['aud', 'iss']);
+ $headerCheckerManager = $this->getHeaderCheckerManagerFactory()
+ ->create(['aud', 'iss'])
+ ;
$payload = [];
- $protected = ['alg' => 'foo'];
- $unprotected = ['alg' => 'foo'];
+ $protected = [
+ 'alg' => 'foo',
+ ];
+ $unprotected = [
+ 'alg' => 'foo',
+ ];
$token = new Token(json_encode($payload), $protected, $unprotected);
$headerCheckerManager->check($token, 0);
@@ -68,11 +59,17 @@ public function aHeaderMustNotContainDuplicatedHeaderParameters(): void
public function theTokenHasCriticalHeaderNotSatisfied(): void
{
$this->expectException(InvalidHeaderException::class);
- $this->expectExceptionMessage('One or more header parameters are marked as critical, but they are missing or have not been checked: alg.');
+ $this->expectExceptionMessage(
+ 'One or more header parameters are marked as critical, but they are missing or have not been checked: alg.'
+ );
- $headerCheckerManager = $this->getHeaderCheckerManagerFactory()->create(['aud', 'iss']);
+ $headerCheckerManager = $this->getHeaderCheckerManagerFactory()
+ ->create(['aud', 'iss'])
+ ;
$payload = [];
- $protected = ['crit' => ['alg']];
+ $protected = [
+ 'crit' => ['alg'],
+ ];
$unprotected = [];
$token = new Token(json_encode($payload), $protected, $unprotected);
@@ -84,10 +81,17 @@ public function theTokenHasCriticalHeaderNotSatisfied(): void
*/
public function theHeaderIsSuccessfullyChecked(): void
{
- $headerCheckerManager = $this->getHeaderCheckerManagerFactory()->create(['aud', 'iss']);
+ $headerCheckerManager = $this->getHeaderCheckerManagerFactory()
+ ->create(['aud', 'iss'])
+ ;
$payload = [];
- $protected = ['crit' => ['aud'], 'aud' => 'My Service'];
- $unprotected = ['iss' => 'Another Service'];
+ $protected = [
+ 'crit' => ['aud'],
+ 'aud' => 'My Service',
+ ];
+ $unprotected = [
+ 'iss' => 'Another Service',
+ ];
$token = new Token(json_encode($payload), $protected, $unprotected);
$headerCheckerManager->check($token, 0);
}
@@ -100,10 +104,16 @@ public function theCriticalHeaderParameterMustBeProtected(): void
$this->expectException(InvalidHeaderException::class);
$this->expectExceptionMessage('The header parameter "crit" must be protected.');
- $headerCheckerManager = $this->getHeaderCheckerManagerFactory()->create(['aud', 'iss']);
+ $headerCheckerManager = $this->getHeaderCheckerManagerFactory()
+ ->create(['aud', 'iss'])
+ ;
$payload = [];
- $protected = ['aud' => 'My Service'];
- $unprotected = ['crit' => ['aud']];
+ $protected = [
+ 'aud' => 'My Service',
+ ];
+ $unprotected = [
+ 'crit' => ['aud'],
+ ];
$token = new Token(json_encode($payload), $protected, $unprotected);
$headerCheckerManager->check($token, 0);
}
@@ -116,9 +126,14 @@ public function theCriticalHeaderParameterMustBeAListOfHeaderParameters(): void
$this->expectException(InvalidHeaderException::class);
$this->expectExceptionMessage('The header "crit" must be a list of header parameters.');
- $headerCheckerManager = $this->getHeaderCheckerManagerFactory()->create(['aud', 'iss']);
+ $headerCheckerManager = $this->getHeaderCheckerManagerFactory()
+ ->create(['aud', 'iss'])
+ ;
$payload = [];
- $protected = ['aud' => 'My Service', 'crit' => true];
+ $protected = [
+ 'aud' => 'My Service',
+ 'crit' => true,
+ ];
$unprotected = [];
$token = new Token(json_encode($payload), $protected, $unprotected);
$headerCheckerManager->check($token, 0);
@@ -129,9 +144,14 @@ public function theCriticalHeaderParameterMustBeAListOfHeaderParameters(): void
*/
public function theHeaderContainsUnknownParametersAndIsSuccessfullyChecked(): void
{
- $headerCheckerManager = $this->getHeaderCheckerManagerFactory()->create(['aud', 'iss']);
+ $headerCheckerManager = $this->getHeaderCheckerManagerFactory()
+ ->create(['aud', 'iss'])
+ ;
$payload = [];
- $protected = ['foo' => 'bar', 'iss' => 'Another Service'];
+ $protected = [
+ 'foo' => 'bar',
+ 'iss' => 'Another Service',
+ ];
$unprotected = [];
$token = new Token(json_encode($payload), $protected, $unprotected);
$headerCheckerManager->check($token, 0);
@@ -145,10 +165,17 @@ public function theHeaderDoesNotContainSomeMandatoryParameters(): void
$this->expectException(MissingMandatoryHeaderParameterException::class);
$this->expectExceptionMessage('The following header parameters are mandatory: mandatory.');
- $headerCheckerManager = $this->getHeaderCheckerManagerFactory()->create(['aud', 'iss']);
+ $headerCheckerManager = $this->getHeaderCheckerManagerFactory()
+ ->create(['aud', 'iss'])
+ ;
$payload = [];
- $protected = ['aud' => 'Audience', 'iss' => 'Another Service'];
- $unprotected = ['foo' => 'bar'];
+ $protected = [
+ 'aud' => 'Audience',
+ 'iss' => 'Another Service',
+ ];
+ $unprotected = [
+ 'foo' => 'bar',
+ ];
$token = new Token(json_encode($payload), $protected, $unprotected);
$headerCheckerManager->check($token, 0, ['aud', 'iss', 'mandatory']);
}
@@ -161,9 +188,13 @@ public function iTryToCheckATokenThatIsNotSupported(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Unsupported token type.');
- $headerCheckerManager = $this->getHeaderCheckerManagerFactory()->create(['aud', 'iss']);
+ $headerCheckerManager = $this->getHeaderCheckerManagerFactory()
+ ->create(['aud', 'iss'])
+ ;
$payload = [];
- $protected = ['foo' => 'bar'];
+ $protected = [
+ 'foo' => 'bar',
+ ];
$unprotected = [];
$token = new OtherToken(json_encode($payload), $protected, $unprotected);
$headerCheckerManager->check($token, 0);
@@ -171,7 +202,7 @@ public function iTryToCheckATokenThatIsNotSupported(): void
private function getHeaderCheckerManagerFactory(): HeaderCheckerManagerFactory
{
- if (null === $this->headerCheckerManagerFactory) {
+ if ($this->headerCheckerManagerFactory === null) {
$this->headerCheckerManagerFactory = new HeaderCheckerManagerFactory();
$this->headerCheckerManagerFactory->add('aud', new AudienceChecker('My Service', true));
$this->headerCheckerManagerFactory->add('iss', new IssuerChecker(['Another Service']));
diff --git a/tests/Component/Checker/IssuedAtClaimCheckerTest.php b/tests/Component/Checker/IssuedAtClaimCheckerTest.php
index 429edcc3..986e27b8 100644
--- a/tests/Component/Checker/IssuedAtClaimCheckerTest.php
+++ b/tests/Component/Checker/IssuedAtClaimCheckerTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Checker;
use Jose\Component\Checker\InvalidClaimException;
@@ -18,12 +9,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group ClaimChecker
- * @group functional
- *
* @internal
*/
-class IssuedAtClaimCheckerTest extends TestCase
+final class IssuedAtClaimCheckerTest extends TestCase
{
/**
* @test
@@ -56,6 +44,6 @@ public function theIssuedAtClaimIsInThePast(): void
{
$checker = new IssuedAtChecker();
$checker->checkClaim(time() - 3600);
- static::assertEquals('iat', $checker->supportedClaim());
+ static::assertSame('iat', $checker->supportedClaim());
}
}
diff --git a/tests/Component/Checker/NotBeforeClaimCheckerTest.php b/tests/Component/Checker/NotBeforeClaimCheckerTest.php
index 728f50a0..d9b1cd4d 100644
--- a/tests/Component/Checker/NotBeforeClaimCheckerTest.php
+++ b/tests/Component/Checker/NotBeforeClaimCheckerTest.php
@@ -2,34 +2,23 @@
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\Tests\Component\Checker;
+use Jose\Component\Checker\InvalidClaimException;
use Jose\Component\Checker\NotBeforeChecker;
use PHPUnit\Framework\TestCase;
/**
- * @group ClaimChecker
- * @group functional
- *
* @internal
*/
-class NotBeforeClaimCheckerTest extends TestCase
+final class NotBeforeClaimCheckerTest extends TestCase
{
/**
* @test
*/
public function theNotBeforeClaimMustBeAnInteger(): void
{
- $this->expectException(\Jose\Component\Checker\InvalidClaimException::class);
+ $this->expectException(InvalidClaimException::class);
$this->expectExceptionMessage('"nbf" must be an integer.');
$checker = new NotBeforeChecker();
@@ -41,7 +30,7 @@ public function theNotBeforeClaimMustBeAnInteger(): void
*/
public function theNotBeforeClaimIsInTheFutur(): void
{
- $this->expectException(\Jose\Component\Checker\InvalidClaimException::class);
+ $this->expectException(InvalidClaimException::class);
$this->expectExceptionMessage('The JWT can not be used yet.');
$checker = new NotBeforeChecker();
@@ -55,6 +44,6 @@ public function theNotBeforeClaimIsInThePast(): void
{
$checker = new NotBeforeChecker();
$checker->checkClaim(time() - 3600);
- static::assertEquals('nbf', $checker->supportedClaim());
+ static::assertSame('nbf', $checker->supportedClaim());
}
}
diff --git a/tests/Component/Checker/Stub/OtherToken.php b/tests/Component/Checker/Stub/OtherToken.php
index 16800a01..e29b8a14 100644
--- a/tests/Component/Checker/Stub/OtherToken.php
+++ b/tests/Component/Checker/Stub/OtherToken.php
@@ -2,26 +2,12 @@
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\Tests\Component\Checker\Stub;
use Jose\Component\Core\JWT;
class OtherToken implements JWT
{
- /**
- * @var null|string
- */
- private $payload;
-
/**
* @var array
*/
@@ -32,9 +18,11 @@ class OtherToken implements JWT
*/
private $unprotectedHeader;
- public function __construct(?string $payload, array $protectedHeader, array $unprotectedHeader)
- {
- $this->payload = $payload;
+ public function __construct(
+ private ?string $payload,
+ array $protectedHeader,
+ array $unprotectedHeader
+ ) {
$this->protectedHeader = $protectedHeader;
$this->unprotectedHeader = $unprotectedHeader;
}
diff --git a/tests/Component/Checker/Stub/Token.php b/tests/Component/Checker/Stub/Token.php
index 500fb794..c681604c 100644
--- a/tests/Component/Checker/Stub/Token.php
+++ b/tests/Component/Checker/Stub/Token.php
@@ -2,26 +2,12 @@
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\Tests\Component\Checker\Stub;
use Jose\Component\Core\JWT;
class Token implements JWT
{
- /**
- * @var null|string
- */
- private $payload;
-
/**
* @var array
*/
@@ -32,9 +18,11 @@ class Token implements JWT
*/
private $unprotectedHeader;
- public function __construct(?string $payload, array $protectedHeader, array $unprotectedHeader)
- {
- $this->payload = $payload;
+ public function __construct(
+ private ?string $payload,
+ array $protectedHeader,
+ array $unprotectedHeader
+ ) {
$this->protectedHeader = $protectedHeader;
$this->unprotectedHeader = $unprotectedHeader;
}
diff --git a/tests/Component/Checker/Stub/TokenSupport.php b/tests/Component/Checker/Stub/TokenSupport.php
index 3bfc6f33..d7534fdc 100644
--- a/tests/Component/Checker/Stub/TokenSupport.php
+++ b/tests/Component/Checker/Stub/TokenSupport.php
@@ -2,15 +2,6 @@
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\Tests\Component\Checker\Stub;
use InvalidArgumentException;
@@ -19,12 +10,9 @@
class TokenSupport implements TokenTypeSupport
{
- /**
- * @throws InvalidArgumentException if the token is not supported
- */
public function retrieveTokenHeaders(JWT $jwt, int $index, array &$protectedHeader, array &$unprotectedHeader): void
{
- if (!$jwt instanceof Token) {
+ if (! $jwt instanceof Token) {
throw new InvalidArgumentException('Unsupported token.');
}
$protectedHeader = $jwt->getProtectedHeader();
diff --git a/tests/Component/Checker/UnencodedPayloadHeaderCheckerTest.php b/tests/Component/Checker/UnencodedPayloadHeaderCheckerTest.php
index 44450288..ff0a0a58 100644
--- a/tests/Component/Checker/UnencodedPayloadHeaderCheckerTest.php
+++ b/tests/Component/Checker/UnencodedPayloadHeaderCheckerTest.php
@@ -2,34 +2,23 @@
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\Tests\Component\Checker;
+use Jose\Component\Checker\InvalidHeaderException;
use Jose\Component\Checker\UnencodedPayloadChecker;
use PHPUnit\Framework\TestCase;
/**
- * @group HeaderChecker
- * @group functional
- *
* @internal
*/
-class UnencodedPayloadHeaderCheckerTest extends TestCase
+final class UnencodedPayloadHeaderCheckerTest extends TestCase
{
/**
* @test
*/
public function theB64HeaderMustBeAnBoolean(): void
{
- $this->expectException(\Jose\Component\Checker\InvalidHeaderException::class);
+ $this->expectException(InvalidHeaderException::class);
$this->expectExceptionMessage('"b64" must be a boolean.');
$checker = new UnencodedPayloadChecker();
@@ -45,6 +34,6 @@ public function theB64HeaderIsABoolean(): void
$checker->checkHeader(true);
$checker->checkHeader(false);
static::assertTrue($checker->protectedHeaderOnly());
- static::assertEquals('b64', $checker->supportedHeader());
+ static::assertSame('b64', $checker->supportedHeader());
}
}
diff --git a/tests/Component/Console/AnalyzeCommandTest.php b/tests/Component/Console/AnalyzeCommandTest.php
index acf80481..b98de255 100644
--- a/tests/Component/Console/AnalyzeCommandTest.php
+++ b/tests/Component/Console/AnalyzeCommandTest.php
@@ -2,43 +2,35 @@
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\Tests\Component\Console;
-use Jose\Component\Console;
+use Jose\Component\Console\KeyAnalyzerCommand;
+use Jose\Component\Console\KeysetAnalyzerCommand;
use Jose\Component\Core\JWK;
use Jose\Component\Core\JWKSet;
use Jose\Component\Core\Util\JsonConverter;
-use Jose\Component\KeyManagement\Analyzer;
+use Jose\Component\KeyManagement\Analyzer\AlgorithmAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\KeyAnalyzerManager;
+use Jose\Component\KeyManagement\Analyzer\KeyIdentifierAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\KeysetAnalyzerManager;
+use Jose\Component\KeyManagement\Analyzer\MixedKeyTypes;
+use Jose\Component\KeyManagement\Analyzer\MixedPublicAndPrivateKeys;
+use Jose\Component\KeyManagement\Analyzer\NoneAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\OctAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\RsaAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\UsageAnalyzer;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\BufferedOutput;
/**
- * @group Console
- * @group AnalyzeCommand
- *
* @internal
*/
-class AnalyzeCommandTest extends TestCase
+final class AnalyzeCommandTest extends TestCase
{
- /**
- * @var null|Analyzer\KeyAnalyzerManager
- */
- private $keyAnalyzerManager;
+ private ?KeyAnalyzerManager $keyAnalyzerManager = null;
- /**
- * @var null|Analyzer\KeysetAnalyzerManager
- */
- private $keysetAnalyzerManager;
+ private ?KeysetAnalyzerManager $keysetAnalyzerManager = null;
/**
* @test
@@ -55,7 +47,7 @@ public function iCanAnalyzeAKeyAndGetInformation(): void
'jwk' => JsonConverter::encode($jwk),
]);
$output = new BufferedOutput();
- $command = new Console\KeyAnalyzerCommand($this->getKeyAnalyzer());
+ $command = new KeyAnalyzerCommand($this->getKeyAnalyzer());
$command->run($input, $output);
$content = $output->fetch();
static::assertStringContainsString('* The parameter "alg" should be added.', $content);
@@ -68,26 +60,28 @@ public function iCanAnalyzeAKeyAndGetInformation(): void
*/
public function iCanAnalyzeAKeySetAndGetInformation(): void
{
- $keyset = JWKSet::createFromKeyData(['keys' => [
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
- 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ $keyset = JWKSet::createFromKeyData([
+ 'keys' => [
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
+ 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-521',
+ 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
+ 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
+ ],
],
- [
- 'kty' => 'EC',
- 'crv' => 'P-521',
- 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
- 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
- ],
- ]]);
+ ]);
$input = new ArrayInput([
'jwkset' => JsonConverter::encode($keyset),
]);
$output = new BufferedOutput();
- $command = new Console\KeysetAnalyzerCommand($this->getKeysetAnalyzer(), $this->getKeyAnalyzer());
+ $command = new KeysetAnalyzerCommand($this->getKeysetAnalyzer(), $this->getKeyAnalyzer());
$command->run($input, $output);
$content = $output->fetch();
static::assertStringContainsString('Analysing key with index/kid "1"', $content);
@@ -96,27 +90,27 @@ public function iCanAnalyzeAKeySetAndGetInformation(): void
static::assertStringContainsString('* The parameter "use" should be added.', $content);
}
- private function getKeyAnalyzer(): Analyzer\KeyAnalyzerManager
+ private function getKeyAnalyzer(): KeyAnalyzerManager
{
- if (null === $this->keyAnalyzerManager) {
- $this->keyAnalyzerManager = new Analyzer\KeyAnalyzerManager();
- $this->keyAnalyzerManager->add(new Analyzer\AlgorithmAnalyzer());
- $this->keyAnalyzerManager->add(new Analyzer\KeyIdentifierAnalyzer());
- $this->keyAnalyzerManager->add(new Analyzer\NoneAnalyzer());
- $this->keyAnalyzerManager->add(new Analyzer\OctAnalyzer());
- $this->keyAnalyzerManager->add(new Analyzer\RsaAnalyzer());
- $this->keyAnalyzerManager->add(new Analyzer\UsageAnalyzer());
+ if ($this->keyAnalyzerManager === null) {
+ $this->keyAnalyzerManager = new KeyAnalyzerManager();
+ $this->keyAnalyzerManager->add(new AlgorithmAnalyzer());
+ $this->keyAnalyzerManager->add(new KeyIdentifierAnalyzer());
+ $this->keyAnalyzerManager->add(new NoneAnalyzer());
+ $this->keyAnalyzerManager->add(new OctAnalyzer());
+ $this->keyAnalyzerManager->add(new RsaAnalyzer());
+ $this->keyAnalyzerManager->add(new UsageAnalyzer());
}
return $this->keyAnalyzerManager;
}
- private function getKeysetAnalyzer(): Analyzer\KeysetAnalyzerManager
+ private function getKeysetAnalyzer(): KeysetAnalyzerManager
{
- if (null === $this->keysetAnalyzerManager) {
- $this->keysetAnalyzerManager = new Analyzer\KeysetAnalyzerManager();
- $this->keysetAnalyzerManager->add(new Analyzer\MixedKeyTypes());
- $this->keysetAnalyzerManager->add(new Analyzer\MixedPublicAndPrivateKeys());
+ if ($this->keysetAnalyzerManager === null) {
+ $this->keysetAnalyzerManager = new KeysetAnalyzerManager();
+ $this->keysetAnalyzerManager->add(new MixedKeyTypes());
+ $this->keysetAnalyzerManager->add(new MixedPublicAndPrivateKeys());
}
return $this->keysetAnalyzerManager;
diff --git a/tests/Component/Console/KeyConversionCommandTest.php b/tests/Component/Console/KeyConversionCommandTest.php
index 2289c0ec..6c2ca0b3 100644
--- a/tests/Component/Console/KeyConversionCommandTest.php
+++ b/tests/Component/Console/KeyConversionCommandTest.php
@@ -2,18 +2,16 @@
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\Tests\Component\Console;
-use Jose\Component\Console;
+use Jose\Component\Console\GetThumbprintCommand;
+use Jose\Component\Console\KeyFileLoaderCommand;
+use Jose\Component\Console\OptimizeRsaKeyCommand;
+use Jose\Component\Console\P12CertificateLoaderCommand;
+use Jose\Component\Console\PemConverterCommand;
+use Jose\Component\Console\PublicKeyCommand;
+use Jose\Component\Console\PublicKeysetCommand;
+use Jose\Component\Console\X509CertificateLoaderCommand;
use Jose\Component\Core\JWK;
use Jose\Component\Core\JWKSet;
use Jose\Component\Core\Util\JsonConverter;
@@ -22,12 +20,9 @@
use Symfony\Component\Console\Output\BufferedOutput;
/**
- * @group Console
- * @group KeyConversionCommand
- *
* @internal
*/
-class KeyConversionCommandTest extends TestCase
+final class KeyConversionCommandTest extends TestCase
{
/**
* @test
@@ -35,10 +30,10 @@ class KeyConversionCommandTest extends TestCase
public function iCanLoadAKeyFile(): void
{
$input = new ArrayInput([
- 'file' => __DIR__.'/Sample/2048b-rsa-example-cert.pem',
+ 'file' => __DIR__ . '/Sample/2048b-rsa-example-cert.pem',
]);
$output = new BufferedOutput();
- $command = new Console\KeyFileLoaderCommand();
+ $command = new KeyFileLoaderCommand();
$command->run($input, $output);
$content = $output->fetch();
JWK::createFromJson($content);
@@ -50,11 +45,11 @@ public function iCanLoadAKeyFile(): void
public function iCanLoadAnEncryptedKeyFile(): void
{
$input = new ArrayInput([
- 'file' => __DIR__.'/Sample/private.es512.encrypted.key',
+ 'file' => __DIR__ . '/Sample/private.es512.encrypted.key',
'--secret' => 'test',
]);
$output = new BufferedOutput();
- $command = new Console\KeyFileLoaderCommand();
+ $command = new KeyFileLoaderCommand();
$command->run($input, $output);
$content = $output->fetch();
JWK::createFromJson($content);
@@ -66,11 +61,11 @@ public function iCanLoadAnEncryptedKeyFile(): void
public function iCanLoadAPKCS12CertificateFile(): void
{
$input = new ArrayInput([
- 'file' => __DIR__.'/Sample/CertRSA.p12',
+ 'file' => __DIR__ . '/Sample/CertRSA.p12',
'--secret' => 'certRSA',
]);
$output = new BufferedOutput();
- $command = new Console\P12CertificateLoaderCommand();
+ $command = new P12CertificateLoaderCommand();
$command->run($input, $output);
$content = $output->fetch();
JWK::createFromJson($content);
@@ -82,10 +77,10 @@ public function iCanLoadAPKCS12CertificateFile(): void
public function iCanLoadAX509CertificateFile(): void
{
$input = new ArrayInput([
- 'file' => __DIR__.'/Sample/google.crt',
+ 'file' => __DIR__ . '/Sample/google.crt',
]);
$output = new BufferedOutput();
- $command = new Console\X509CertificateLoaderCommand();
+ $command = new X509CertificateLoaderCommand();
$command->run($input, $output);
$content = $output->fetch();
JWK::createFromJson($content);
@@ -107,7 +102,7 @@ public function iCanOptimizeARsaKey(): void
'jwk' => JsonConverter::encode($jwk),
]);
$output = new BufferedOutput();
- $command = new Console\OptimizeRsaKeyCommand();
+ $command = new OptimizeRsaKeyCommand();
$command->run($input, $output);
$content = $output->fetch();
$jwk = JWK::createFromJson($content);
@@ -139,7 +134,7 @@ public function iCanConvertARsaKeyIntoPKCS1(): void
'jwk' => JsonConverter::encode($jwk),
]);
$output = new BufferedOutput();
- $command = new Console\PemConverterCommand();
+ $command = new PemConverterCommand();
$command->run($input, $output);
$content = $output->fetch();
static::assertStringContainsString('-----BEGIN RSA PRIVATE KEY-----', $content);
@@ -162,7 +157,7 @@ public function iCanConvertAnEcKeyIntoPKCS1(): void
'jwk' => JsonConverter::encode($jwk),
]);
$output = new BufferedOutput();
- $command = new Console\PemConverterCommand();
+ $command = new PemConverterCommand();
$command->run($input, $output);
$content = $output->fetch();
static::assertStringContainsString('-----BEGIN EC PRIVATE KEY-----', $content);
@@ -185,10 +180,13 @@ public function iCanConvertAPrivateKeyIntoPublicKey(): void
'jwk' => JsonConverter::encode($jwk),
]);
$output = new BufferedOutput();
- $command = new Console\PublicKeyCommand();
+ $command = new PublicKeyCommand();
$command->run($input, $output);
$content = $output->fetch();
- static::assertStringContainsString('{"kty":"EC","crv":"P-256","x":"YcIMUkalwbeeAVkUF6FP3aBVlCzlqxEd7i0uN_4roA0","y":"bU8wOWJBkTNZ61gB1_4xp-r8-uVsQB8D6Xsl-aKMCy8"}', $content);
+ static::assertStringContainsString(
+ '{"kty":"EC","crv":"P-256","x":"YcIMUkalwbeeAVkUF6FP3aBVlCzlqxEd7i0uN_4roA0","y":"bU8wOWJBkTNZ61gB1_4xp-r8-uVsQB8D6Xsl-aKMCy8"}',
+ $content
+ );
}
/**
@@ -196,29 +194,34 @@ public function iCanConvertAPrivateKeyIntoPublicKey(): void
*/
public function iCanConvertPrivateKeysIntoPublicKeys(): void
{
- $keyset = JWKSet::createFromKeyData(['keys' => [
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
- 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ $keyset = JWKSet::createFromKeyData([
+ 'keys' => [
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
+ 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-521',
+ 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
+ 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
+ ],
],
- [
- 'kty' => 'EC',
- 'crv' => 'P-521',
- 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
- 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
- ],
- ]]);
+ ]);
$input = new ArrayInput([
'jwkset' => JsonConverter::encode($keyset),
]);
$output = new BufferedOutput();
- $command = new Console\PublicKeysetCommand();
+ $command = new PublicKeysetCommand();
$command->run($input, $output);
$content = $output->fetch();
- static::assertStringContainsString('{"keys":[{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0"},{"kty":"EC","crv":"P-521","x":"AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk","y":"ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2"}]}', $content);
+ static::assertStringContainsString(
+ '{"keys":[{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0"},{"kty":"EC","crv":"P-521","x":"AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk","y":"ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2"}]}',
+ $content
+ );
}
/**
@@ -238,9 +241,9 @@ public function iCanGetTheThumbprintOfAKey(): void
'jwk' => JsonConverter::encode($jwk),
]);
$output = new BufferedOutput();
- $command = new Console\GetThumbprintCommand();
+ $command = new GetThumbprintCommand();
$command->run($input, $output);
$content = $output->fetch();
- static::assertEquals('NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs', $content);
+ static::assertSame('NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs', $content);
}
}
diff --git a/tests/Component/Console/KeyCreationCommandTest.php b/tests/Component/Console/KeyCreationCommandTest.php
index c8938184..097c102a 100644
--- a/tests/Component/Console/KeyCreationCommandTest.php
+++ b/tests/Component/Console/KeyCreationCommandTest.php
@@ -2,40 +2,33 @@
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\Tests\Component\Console;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
-use Jose\Component\Console;
+use Jose\Component\Console\EcKeyGeneratorCommand;
+use Jose\Component\Console\NoneKeyGeneratorCommand;
+use Jose\Component\Console\OctKeyGeneratorCommand;
+use Jose\Component\Console\OkpKeyGeneratorCommand;
+use Jose\Component\Console\RsaKeyGeneratorCommand;
+use Jose\Component\Console\SecretKeyGeneratorCommand;
use Jose\Component\Core\JWK;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
use RuntimeException;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\BufferedOutput;
/**
- * @group Console
- * @group KeyCreationCommand
- *
* @internal
*/
-class KeyCreationCommandTest extends TestCase
+final class KeyCreationCommandTest extends TestCase
{
/**
* @test
*/
public function theEllipticCurveKeyCreationCommandIsAvailable(): void
{
- $command = new Console\EcKeyGeneratorCommand();
+ $command = new EcKeyGeneratorCommand();
static::assertTrue($command->isEnabled());
}
@@ -50,7 +43,7 @@ public function theEllipticCurveKeyCreationCommandNeedTheCurveArgument(): void
$input = new ArrayInput([]);
$output = new BufferedOutput();
- $command = new Console\EcKeyGeneratorCommand();
+ $command = new EcKeyGeneratorCommand();
$command->run($input, $output);
}
@@ -67,7 +60,7 @@ public function iCannotCreateAnEllipticCurveKeyWithAnUnsupportedCurve(): void
'curve' => 'P-128',
]);
$output = new BufferedOutput();
- $command = new Console\EcKeyGeneratorCommand();
+ $command = new EcKeyGeneratorCommand();
$command->run($input, $output);
}
@@ -82,7 +75,7 @@ public function iCanCreateAnEllipticCurveKeyWithCurveP256(): void
'--random_id' => true,
]);
$output = new BufferedOutput();
- $command = new Console\EcKeyGeneratorCommand();
+ $command = new EcKeyGeneratorCommand();
$command->run($input, $output);
$content = $output->fetch();
@@ -97,10 +90,9 @@ public function iCannotCreateAnOctetKeyWithoutKeySize(): void
$this->expectException(RuntimeException::class);
$this->expectExceptionMessage('Not enough arguments (missing: "size").');
- $input = new ArrayInput([
- ]);
+ $input = new ArrayInput([]);
$output = new BufferedOutput();
- $command = new Console\OctKeyGeneratorCommand();
+ $command = new OctKeyGeneratorCommand();
$command->run($input, $output);
}
@@ -115,7 +107,7 @@ public function iCanCreateAnOctetKey(): void
'--random_id' => true,
]);
$output = new BufferedOutput();
- $command = new Console\OctKeyGeneratorCommand();
+ $command = new OctKeyGeneratorCommand();
$command->run($input, $output);
$content = $output->fetch();
@@ -131,13 +123,13 @@ public function iCanCreateAnOctetKeyUsingASecret(): void
'secret' => 'This is my secret',
]);
$output = new BufferedOutput();
- $command = new Console\SecretKeyGeneratorCommand();
+ $command = new SecretKeyGeneratorCommand();
$command->run($input, $output);
$content = $output->fetch();
$jwk = JWK::createFromJson($content);
static::assertTrue($jwk->has('k'));
- static::assertEquals('This is my secret', Base64UrlSafe::decode($jwk->get('k')));
+ static::assertSame('This is my secret', Base64UrlSafe::decode($jwk->get('k')));
}
/**
@@ -152,13 +144,13 @@ public function iCanCreateAnOctetKeyUsingABinarySecret(): void
'--is_b64',
]);
$output = new BufferedOutput();
- $command = new Console\SecretKeyGeneratorCommand();
+ $command = new SecretKeyGeneratorCommand();
$command->run($input, $output);
$content = $output->fetch();
$jwk = JWK::createFromJson($content);
static::assertTrue($jwk->has('k'));
- static::assertEquals($secret, Base64UrlSafe::decode($jwk->get('k')));
+ static::assertSame($secret, Base64UrlSafe::decode($jwk->get('k')));
}
/**
@@ -169,10 +161,9 @@ public function iCannotCreateAnOctetKeyPairWithoutKeyCurve(): void
$this->expectException(RuntimeException::class);
$this->expectExceptionMessage('Not enough arguments (missing: "curve").');
- $input = new ArrayInput([
- ]);
+ $input = new ArrayInput([]);
$output = new BufferedOutput();
- $command = new Console\OkpKeyGeneratorCommand();
+ $command = new OkpKeyGeneratorCommand();
$command->run($input, $output);
}
@@ -187,7 +178,7 @@ public function iCanCreateAnOctetKeyPair(): void
'--random_id' => true,
]);
$output = new BufferedOutput();
- $command = new Console\OkpKeyGeneratorCommand();
+ $command = new OkpKeyGeneratorCommand();
$command->run($input, $output);
$content = $output->fetch();
@@ -203,7 +194,7 @@ public function iCanCreateANoneKey(): void
'--random_id' => true,
]);
$output = new BufferedOutput();
- $command = new Console\NoneKeyGeneratorCommand();
+ $command = new NoneKeyGeneratorCommand();
$command->run($input, $output);
$content = $output->fetch();
@@ -218,10 +209,9 @@ public function iCannotCreateAnRsaKeyWithoutKeySize(): void
$this->expectException(RuntimeException::class);
$this->expectExceptionMessage('Not enough arguments (missing: "size").');
- $input = new ArrayInput([
- ]);
+ $input = new ArrayInput([]);
$output = new BufferedOutput();
- $command = new Console\RsaKeyGeneratorCommand();
+ $command = new RsaKeyGeneratorCommand();
$command->run($input, $output);
}
@@ -236,7 +226,7 @@ public function iCanCreateAnRsaKey(): void
'--random_id' => true,
]);
$output = new BufferedOutput();
- $command = new Console\RsaKeyGeneratorCommand();
+ $command = new RsaKeyGeneratorCommand();
$command->run($input, $output);
$content = $output->fetch();
diff --git a/tests/Component/Console/KeySetCreationCommandTest.php b/tests/Component/Console/KeySetCreationCommandTest.php
index f3551477..89d1b982 100644
--- a/tests/Component/Console/KeySetCreationCommandTest.php
+++ b/tests/Component/Console/KeySetCreationCommandTest.php
@@ -2,19 +2,13 @@
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\Tests\Component\Console;
use InvalidArgumentException;
-use Jose\Component\Console;
+use Jose\Component\Console\EcKeysetGeneratorCommand;
+use Jose\Component\Console\OctKeysetGeneratorCommand;
+use Jose\Component\Console\OkpKeysetGeneratorCommand;
+use Jose\Component\Console\RsaKeysetGeneratorCommand;
use Jose\Component\Core\JWKSet;
use PHPUnit\Framework\TestCase;
use RuntimeException;
@@ -22,19 +16,16 @@
use Symfony\Component\Console\Output\BufferedOutput;
/**
- * @group Console
- * @group KeySetCreationCommand
- *
* @internal
*/
-class KeySetCreationCommandTest extends TestCase
+final class KeySetCreationCommandTest extends TestCase
{
/**
* @test
*/
public function theEllipticCurveKeySetCreationCommandIsAvailable(): void
{
- $command = new Console\EcKeysetGeneratorCommand();
+ $command = new EcKeysetGeneratorCommand();
static::assertTrue($command->isEnabled());
}
@@ -49,7 +40,7 @@ public function theEllipticCurveKeySetCreationCommandNeedTheCurveAndQuantityArgu
$input = new ArrayInput([]);
$output = new BufferedOutput();
- $command = new Console\EcKeysetGeneratorCommand();
+ $command = new EcKeysetGeneratorCommand();
$command->run($input, $output);
}
@@ -67,7 +58,7 @@ public function iCannotCreateAnEllipticCurveKeySetWithAnUnsupportedCurve(): void
'curve' => 'P-128',
]);
$output = new BufferedOutput();
- $command = new Console\EcKeysetGeneratorCommand();
+ $command = new EcKeysetGeneratorCommand();
$command->run($input, $output);
}
@@ -83,7 +74,7 @@ public function iCanCreateAnEllipticCurveKeySetWithCurveP256(): void
'--random_id' => true,
]);
$output = new BufferedOutput();
- $command = new Console\EcKeysetGeneratorCommand();
+ $command = new EcKeysetGeneratorCommand();
$command->run($input, $output);
$content = $output->fetch();
@@ -102,7 +93,7 @@ public function iCannotCreateAnOctetKeySetWithoutKeySetSize(): void
'quantity' => 2,
]);
$output = new BufferedOutput();
- $command = new Console\OctKeysetGeneratorCommand();
+ $command = new OctKeysetGeneratorCommand();
$command->run($input, $output);
}
@@ -118,7 +109,7 @@ public function iCanCreateAnOctetKeySet(): void
'--random_id' => true,
]);
$output = new BufferedOutput();
- $command = new Console\OctKeysetGeneratorCommand();
+ $command = new OctKeysetGeneratorCommand();
$command->run($input, $output);
$content = $output->fetch();
@@ -137,7 +128,7 @@ public function iCannotCreateAnOctetKeySetPairWithoutKeySetCurve(): void
'quantity' => 2,
]);
$output = new BufferedOutput();
- $command = new Console\OkpKeysetGeneratorCommand();
+ $command = new OkpKeysetGeneratorCommand();
$command->run($input, $output);
}
@@ -153,7 +144,7 @@ public function iCanCreateAnOctetKeySetPair(): void
'--random_id' => true,
]);
$output = new BufferedOutput();
- $command = new Console\OkpKeysetGeneratorCommand();
+ $command = new OkpKeysetGeneratorCommand();
$command->run($input, $output);
$content = $output->fetch();
@@ -172,7 +163,7 @@ public function iCannotCreateAnRsaKeySetWithoutKeySetSize(): void
'quantity' => 2,
]);
$output = new BufferedOutput();
- $command = new Console\RsaKeysetGeneratorCommand();
+ $command = new RsaKeysetGeneratorCommand();
$command->run($input, $output);
}
@@ -188,7 +179,7 @@ public function iCanCreateAnRsaKeySet(): void
'--random_id' => true,
]);
$output = new BufferedOutput();
- $command = new Console\RsaKeysetGeneratorCommand();
+ $command = new RsaKeysetGeneratorCommand();
$command->run($input, $output);
$content = $output->fetch();
diff --git a/tests/Component/Core/AlgorithmManagerFactoryTest.php b/tests/Component/Core/AlgorithmManagerFactoryTest.php
index 0cc1250b..961c79d6 100644
--- a/tests/Component/Core/AlgorithmManagerFactoryTest.php
+++ b/tests/Component/Core/AlgorithmManagerFactoryTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Core;
use InvalidArgumentException;
@@ -20,31 +11,23 @@
use TypeError;
/**
- * @group unit
- * @group JWAManager
- *
* @internal
*/
-class AlgorithmManagerFactoryTest extends TestCase
+final class AlgorithmManagerFactoryTest extends TestCase
{
- /**
- * @var null|AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
+ private ?AlgorithmManagerFactory $algorithmManagerFactory = null;
/**
* @test
- * @covers \Jose\Component\Core\AlgorithmManagerFactory
*/
public function iCanListSupportedAliases(): void
{
- static::assertEquals(['foo'], $this->getAlgorithmManagerFactory()->aliases());
- static::assertEquals(['foo'], array_keys($this->getAlgorithmManagerFactory()->all()));
+ static::assertSame(['foo'], $this->getAlgorithmManagerFactory()->aliases());
+ static::assertSame(['foo'], array_keys($this->getAlgorithmManagerFactory()->all()));
}
/**
* @test
- * @covers \Jose\Component\Core\AlgorithmManager
*/
public function iCannotCreateAnAlgorithmManagerWithABadArgument(): void
{
@@ -55,7 +38,6 @@ public function iCannotCreateAnAlgorithmManagerWithABadArgument(): void
/**
* @test
- * @covers \Jose\Component\Core\AlgorithmManager
*/
public function iCannotGetAnAlgorithmThatDoesNotExist(): void
{
@@ -64,7 +46,7 @@ public function iCannotGetAnAlgorithmThatDoesNotExist(): void
$manager = new AlgorithmManager([new FooAlgorithm()]);
- static::assertEquals(['foo'], $manager->list());
+ static::assertSame(['foo'], $manager->list());
static::assertTrue($manager->has('foo'));
static::assertFalse($manager->has('HS384'));
$manager->get('HS384');
@@ -72,7 +54,7 @@ public function iCannotGetAnAlgorithmThatDoesNotExist(): void
private function getAlgorithmManagerFactory(): AlgorithmManagerFactory
{
- if (null === $this->algorithmManagerFactory) {
+ if ($this->algorithmManagerFactory === null) {
$this->algorithmManagerFactory = new AlgorithmManagerFactory();
$this->algorithmManagerFactory->add('foo', new FooAlgorithm());
}
diff --git a/tests/Component/Core/FooAlgorithm.php b/tests/Component/Core/FooAlgorithm.php
index 6d935162..b0115468 100644
--- a/tests/Component/Core/FooAlgorithm.php
+++ b/tests/Component/Core/FooAlgorithm.php
@@ -2,15 +2,6 @@
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\Tests\Component\Core;
use Jose\Component\Core\Algorithm;
diff --git a/tests/Component/Core/JWKSetTest.php b/tests/Component/Core/JWKSetTest.php
index 895cea15..76bd524f 100644
--- a/tests/Component/Core/JWKSetTest.php
+++ b/tests/Component/Core/JWKSetTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Core;
use function count;
@@ -20,12 +11,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group JWKSet
- *
* @internal
*/
-class JWKSetTest extends TestCase
+final class JWKSetTest extends TestCase
{
/**
* @test
@@ -58,7 +46,9 @@ public function iCannotCreateAKeySetWithBadArguments(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Invalid data.');
- JWKSet::createFromKeyData(['keys' => true]);
+ JWKSet::createFromKeyData([
+ 'keys' => true,
+ ]);
}
/**
@@ -67,7 +57,7 @@ public function iCannotCreateAKeySetWithBadArguments(): void
public function iCanGetAllKeysInAKeySet(): void
{
$jwkset = $this->getPublicKeySet();
- static::assertEquals(3, count($jwkset->all()));
+ static::assertSame(3, count($jwkset->all()));
}
/**
@@ -76,8 +66,10 @@ public function iCanGetAllKeysInAKeySet(): void
public function iCanAddKeysInAKeySet(): void
{
$jwkset = $this->getPublicKeySet();
- $new_jwkset = $jwkset->with(new JWK(['kty' => 'none']));
- static::assertEquals(4, count($new_jwkset->all()));
+ $new_jwkset = $jwkset->with(new JWK([
+ 'kty' => 'none',
+ ]));
+ static::assertSame(4, count($new_jwkset->all()));
static::assertNotSame($jwkset, $new_jwkset);
}
@@ -90,7 +82,7 @@ public function iCanSelectAKeyWithAlgorithm(): void
$jwk = $jwkset->selectKey('enc', new FooAlgorithm());
static::assertInstanceOf(JWK::class, $jwk);
- static::assertEquals(
+ static::assertSame(
[
'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
'kty' => 'FOO',
@@ -108,9 +100,11 @@ public function iCanSelectAKeyWithAlgorithmAndKeyId(): void
{
$jwkset = $this->getPublicKeySet();
- $jwk = $jwkset->selectKey('sig', new FooAlgorithm(), ['kid' => '02491f945c951adf156f370788e8ccdabf8877a8']);
+ $jwk = $jwkset->selectKey('sig', new FooAlgorithm(), [
+ 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
+ ]);
static::assertInstanceOf(JWK::class, $jwk);
- static::assertEquals(
+ static::assertSame(
[
'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
'kty' => 'FOO',
@@ -128,9 +122,11 @@ public function iCanSelectAKeyWithWithKeyId(): void
{
$jwkset = $this->getPublicKeySet();
- $jwk = $jwkset->selectKey('sig', null, ['kid' => '02491f945c951adf156f370788e8ccdabf8877a8']);
+ $jwk = $jwkset->selectKey('sig', null, [
+ 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
+ ]);
static::assertInstanceOf(JWK::class, $jwk);
- static::assertEquals(
+ static::assertSame(
[
'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
'kty' => 'FOO',
@@ -148,7 +144,9 @@ public function theKeySetDoesNotContainsSuitableAKeyThatFitsOnTheRequirements():
{
$jwkset = $this->getPublicKeySet();
- $jwk = $jwkset->selectKey('enc', null, ['kid' => '02491f945c951adf156f370788e8ccdabf8877a8']);
+ $jwk = $jwkset->selectKey('enc', null, [
+ 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
+ ]);
static::assertNull($jwk);
}
@@ -157,14 +155,16 @@ public function theKeySetDoesNotContainsSuitableAKeyThatFitsOnTheRequirements():
*/
public function iCanCreateAKeySetUsingValues(): void
{
- $values = ['keys' => [[
- 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
- 'kty' => 'FOO',
- 'alg' => 'foo',
- 'use' => 'sig',
- ]]];
+ $values = [
+ 'keys' => [[
+ 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
+ 'kty' => 'FOO',
+ 'alg' => 'foo',
+ 'use' => 'sig',
+ ]],
+ ];
$jwkset = JWKSet::createFromKeyData($values);
- static::assertEquals(1, count($jwkset));
+ static::assertSame(1, count($jwkset));
static::assertTrue($jwkset->has('71ee230371d19630bc17fb90ccf20ae632ad8cf8'));
static::assertFalse($jwkset->has(0));
}
@@ -200,26 +200,29 @@ public function keySet(): void
$jwkset = new JWKSet([$jwk1]);
$jwkset = $jwkset->with($jwk2);
- static::assertEquals('{"keys":[{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","use":"sign","key_ops":["sign"],"alg":"ES256","kid":"0123456789"},{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","d":"jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI","use":"sign","key_ops":["verify"],"alg":"ES256","kid":"9876543210"}]}', json_encode($jwkset));
- static::assertEquals(2, count($jwkset));
- static::assertEquals(2, $jwkset->count());
+ static::assertSame(
+ '{"keys":[{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","use":"sign","key_ops":["sign"],"alg":"ES256","kid":"0123456789"},{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","d":"jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI","use":"sign","key_ops":["verify"],"alg":"ES256","kid":"9876543210"}]}',
+ json_encode($jwkset)
+ );
+ static::assertSame(2, count($jwkset));
+ static::assertSame(2, $jwkset->count());
static::assertTrue($jwkset->has('0123456789'));
static::assertTrue($jwkset->has('9876543210'));
static::assertFalse($jwkset->has(0));
foreach ($jwkset as $key) {
- static::assertEquals('EC', $key->get('kty'));
+ static::assertSame('EC', $key->get('kty'));
}
- static::assertEquals('9876543210', $jwkset->get('9876543210')->get('kid'));
+ static::assertSame('9876543210', $jwkset->get('9876543210')->get('kid'));
$jwkset = $jwkset->without('9876543210');
$jwkset = $jwkset->without('9876543210');
- static::assertEquals(1, count($jwkset));
- static::assertEquals(1, $jwkset->count());
+ static::assertSame(1, count($jwkset));
+ static::assertSame(1, $jwkset->count());
$jwkset = $jwkset->without('0123456789');
- static::assertEquals(0, $jwkset->count());
+ static::assertSame(0, $jwkset->count());
}
/**
@@ -260,26 +263,28 @@ public function keySet2(): void
private function getPublicKeySet(): JWKSet
{
- $keys = ['keys' => [
- [
- 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
- 'kty' => 'FOO',
- 'alg' => 'foo',
- 'use' => 'enc',
- ],
- [
- 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
- 'kty' => 'FOO',
- 'alg' => 'foo',
- 'use' => 'sig',
- ],
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
- 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ $keys = [
+ 'keys' => [
+ [
+ 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
+ 'kty' => 'FOO',
+ 'alg' => 'foo',
+ 'use' => 'enc',
+ ],
+ [
+ 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
+ 'kty' => 'FOO',
+ 'alg' => 'foo',
+ 'use' => 'sig',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
+ 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ ],
],
- ]];
+ ];
return JWKSet::createFromKeyData($keys);
}
diff --git a/tests/Component/Core/JWKTest.php b/tests/Component/Core/JWKTest.php
index 33285ea9..70f699af 100644
--- a/tests/Component/Core/JWKTest.php
+++ b/tests/Component/Core/JWKTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Core;
use InvalidArgumentException;
@@ -18,12 +9,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group JWK
- *
* @internal
*/
-class JWKTest extends TestCase
+final class JWKTest extends TestCase
{
/**
* @test
@@ -41,22 +29,25 @@ public function aKeyContainsAllExpectedParameters(): void
'bar' => 'plic',
]);
- static::assertEquals('EC', $jwk->get('kty'));
- static::assertEquals('ES256', $jwk->get('alg'));
- static::assertEquals('sig', $jwk->get('use'));
+ static::assertSame('EC', $jwk->get('kty'));
+ static::assertSame('ES256', $jwk->get('alg'));
+ static::assertSame('sig', $jwk->get('use'));
static::assertFalse($jwk->has('kid'));
- static::assertEquals(['sign'], $jwk->get('key_ops'));
- static::assertEquals('P-256', $jwk->get('crv'));
+ static::assertSame(['sign'], $jwk->get('key_ops'));
+ static::assertSame('P-256', $jwk->get('crv'));
static::assertFalse($jwk->has('x5u'));
static::assertFalse($jwk->has('x5c'));
static::assertFalse($jwk->has('x5t'));
static::assertFalse($jwk->has('x5t#256'));
- static::assertEquals('f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU', $jwk->get('x'));
- static::assertEquals('x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0', $jwk->get('y'));
- static::assertEquals('{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","use":"sig","key_ops":["sign"],"alg":"ES256","bar":"plic"}', json_encode($jwk));
- static::assertEquals('oKIywvGUpTVTyxMQ3bwIIeQUudfr_CkLMjCE19ECD-U', $jwk->thumbprint('sha256'));
- static::assertEquals('EMMMl6Rj75mqhcABihxxl_VCN9s', $jwk->thumbprint('sha1'));
- static::assertEquals('dqwHnan4iJ1_eEll-o4Egw', $jwk->thumbprint('md5'));
+ static::assertSame('f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU', $jwk->get('x'));
+ static::assertSame('x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0', $jwk->get('y'));
+ static::assertSame(
+ '{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","use":"sig","key_ops":["sign"],"alg":"ES256","bar":"plic"}',
+ json_encode($jwk)
+ );
+ static::assertSame('oKIywvGUpTVTyxMQ3bwIIeQUudfr_CkLMjCE19ECD-U', $jwk->thumbprint('sha256'));
+ static::assertSame('EMMMl6Rj75mqhcABihxxl_VCN9s', $jwk->thumbprint('sha1'));
+ static::assertSame('dqwHnan4iJ1_eEll-o4Egw', $jwk->thumbprint('md5'));
}
/**
@@ -133,7 +124,7 @@ public function iCanConvertAPrivateKeyIntoPublicKey(): void
$public = $private->toPublic();
- static::assertEquals(json_encode([
+ static::assertSame(json_encode([
'kty' => 'EC',
'crv' => 'P-256',
'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
diff --git a/tests/Component/Core/JsonConverterTest.php b/tests/Component/Core/JsonConverterTest.php
index 169aad2f..791640e8 100644
--- a/tests/Component/Core/JsonConverterTest.php
+++ b/tests/Component/Core/JsonConverterTest.php
@@ -2,34 +2,26 @@
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\Tests\Component\Core;
use Jose\Component\Core\Util\JsonConverter;
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group JsonConverter
- *
* @internal
*/
-class JsonConverterTest extends TestCase
+final class JsonConverterTest extends TestCase
{
/**
* @test
*/
public function iCanConvertAnObjectIntoAJsonString(): void
{
- static::assertEquals('{"foo":"BAR"}', JsonConverter::encode(['foo' => 'BAR']));
- static::assertEquals(['foo' => 'BAR'], JsonConverter::decode('{"foo":"BAR"}'));
+ static::assertSame('{"foo":"BAR"}', JsonConverter::encode([
+ 'foo' => 'BAR',
+ ]));
+ static::assertSame([
+ 'foo' => 'BAR',
+ ], JsonConverter::decode('{"foo":"BAR"}'));
}
}
diff --git a/tests/Component/Encryption/CompressionTest.php b/tests/Component/Encryption/CompressionTest.php
index 591709f4..110c5870 100644
--- a/tests/Component/Encryption/CompressionTest.php
+++ b/tests/Component/Encryption/CompressionTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Encryption;
use InvalidArgumentException;
@@ -20,28 +11,22 @@
/**
* Class CompressionTest.
*
- * @group unit
- *
* @internal
*/
-class CompressionTest extends EncryptionTest
+final class CompressionTest extends EncryptionTest
{
/**
- * @covers \Jose\Component\Encryption\Compression\CompressionMethodManager
* @test
*/
public function getValidCompressionAlgorithm(): void
{
- $manager = new CompressionMethodManager([
- new Deflate(),
- ]);
+ $manager = new CompressionMethodManager([new Deflate()]);
- static::assertEquals(['DEF'], $manager->list());
+ static::assertSame(['DEF'], $manager->list());
$manager->get('DEF');
}
/**
- * @covers \Jose\Component\Encryption\Compression\CompressionMethodManager
* @test
*/
public function getInvalidCompressionAlgorithm(): void
@@ -55,7 +40,6 @@ public function getInvalidCompressionAlgorithm(): void
}
/**
- * @covers \Jose\Component\Encryption\Compression\Deflate
* @test
*/
public function deflate(): void
@@ -70,13 +54,14 @@ public function deflate(): void
}
/**
- * @covers \Jose\Component\Encryption\Compression\Deflate
* @test
*/
public function deflateInvalidCompressionLevel(): void
{
$this->expectException(InvalidArgumentException::class);
- $this->expectExceptionMessage('The compression level can be given as 0 for no compression up to 9 for maximum compression. If -1 given, the default compression level will be the default compression level of the zlib library.');
+ $this->expectExceptionMessage(
+ 'The compression level can be given as 0 for no compression up to 9 for maximum compression. If -1 given, the default compression level will be the default compression level of the zlib library.'
+ );
new Deflate(100);
}
diff --git a/tests/Component/Encryption/ECDHESWithX25519EncryptionTest.php b/tests/Component/Encryption/ECDHESWithX25519EncryptionTest.php
index 8acc7a92..311e6042 100644
--- a/tests/Component/Encryption/ECDHESWithX25519EncryptionTest.php
+++ b/tests/Component/Encryption/ECDHESWithX25519EncryptionTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Encryption;
use Jose\Component\Core\JWK;
@@ -18,12 +9,9 @@
/**
* Class ECDHESWithX25519EncryptionTest.
*
- * @group ECDHES
- * @group unit
- *
* @internal
*/
-class ECDHESWithX25519EncryptionTest extends EncryptionTest
+final class ECDHESWithX25519EncryptionTest extends EncryptionTest
{
/**
* @see https://tools.ietf.org/html/rfc7516#appendix-B
@@ -45,20 +33,29 @@ public function a128CBCHS256EncryptAndDecrypt(): void
'enc' => 'A128GCM',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['ECDH-ES+A128KW'], ['A128GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['ECDH-ES+A128KW'], ['A128GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['ECDH-ES+A128KW'], ['A128GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['ECDH-ES+A128KW'], ['A128GCM'], ['DEF'])
+ ;
$jwt = $jweBuilder
- ->create()->withPayload($input)
+ ->create()
+ ->withPayload($input)
->withSharedProtectedHeader($protectedHeader)
->addRecipient($receiverKey)
->build()
;
- $jwt = $this->getJWESerializerManager()->serialize('jwe_compact', $jwt, 0);
+ $jwt = $this->getJWESerializerManager()
+ ->serialize('jwe_compact', $jwt, 0)
+ ;
- $jwe = $this->getJWESerializerManager()->unserialize($jwt);
+ $jwe = $this->getJWESerializerManager()
+ ->unserialize($jwt)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($jwe, $receiverKey, 0));
static::assertTrue($jwe->hasSharedProtectedHeaderParameter('epk'));
- static::assertEquals($input, $jwe->getPayload());
+ static::assertSame($input, $jwe->getPayload());
}
}
diff --git a/tests/Component/Encryption/EncrypterTest.php b/tests/Component/Encryption/EncrypterTest.php
index 10806561..33c212b9 100644
--- a/tests/Component/Encryption/EncrypterTest.php
+++ b/tests/Component/Encryption/EncrypterTest.php
@@ -2,41 +2,35 @@
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\Tests\Component\Encryption;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use function is_string;
use Jose\Component\Core\JWK;
use Jose\Component\Core\JWKSet;
+use const JSON_THROW_ON_ERROR;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
- * @group Encrypter
- * @group functional
- *
* @internal
*/
-class EncrypterTest extends EncryptionTest
+final class EncrypterTest extends EncryptionTest
{
/**
* @test
*/
public function encryptWithJWTInput(): void
{
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload('FOO')
+ ->create()
+ ->withPayload('FOO')
->withSharedProtectedHeader([
'enc' => 'A256CBC-HS512',
'alg' => 'RSA-OAEP-256',
@@ -47,17 +41,21 @@ public function encryptWithJWTInput(): void
->build()
;
- $jwe = $this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0);
+ $jwe = $this->getJWESerializerManager()
+ ->serialize('jwe_json_flattened', $jwe, 0)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwe);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwe)
+ ;
- static::assertEquals('RSA-OAEP-256', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
- static::assertEquals('DEF', $loaded->getSharedProtectedHeaderParameter('zip'));
+ static::assertSame('RSA-OAEP-256', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('DEF', $loaded->getSharedProtectedHeaderParameter('zip'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
- static::assertEquals('FOO', $loaded->getPayload());
+ static::assertSame('FOO', $loaded->getPayload());
}
/**
@@ -68,19 +66,21 @@ public function duplicatedHeader(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('The header contains duplicated entries: zip.');
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jweBuilder
- ->create()->withPayload('FOO')
+ ->create()
+ ->withPayload('FOO')
->withSharedProtectedHeader([
'enc' => 'A256CBC-HS512',
'alg' => 'RSA-OAEP-256',
'zip' => 'DEF',
])
- ->addRecipient(
- $this->getRSARecipientKey(),
- ['zip' => 'DEF']
- )
+ ->addRecipient($this->getRSARecipientKey(), [
+ 'zip' => 'DEF',
+ ])
;
}
@@ -89,11 +89,16 @@ public function duplicatedHeader(): void
*/
public function createCompactJWEUsingFactory(): void
{
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload('FOO')
+ ->create()
+ ->withPayload('FOO')
->withSharedProtectedHeader([
'enc' => 'A256CBC-HS512',
'alg' => 'RSA-OAEP-256',
@@ -102,18 +107,22 @@ public function createCompactJWEUsingFactory(): void
->addRecipient($this->getRSARecipientKey())
->build()
;
- $jwe = $this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0);
+ $jwe = $this->getJWESerializerManager()
+ ->serialize('jwe_compact', $jwe, 0)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwe);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwe)
+ ;
- static::assertEquals('RSA-OAEP-256', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
- static::assertEquals('DEF', $loaded->getSharedProtectedHeaderParameter('zip'));
+ static::assertSame('RSA-OAEP-256', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('DEF', $loaded->getSharedProtectedHeaderParameter('zip'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
- static::assertEquals('FOO', $loaded->getPayload());
+ static::assertSame('FOO', $loaded->getPayload());
}
/**
@@ -121,11 +130,16 @@ public function createCompactJWEUsingFactory(): void
*/
public function createFlattenedJWEUsingFactory(): void
{
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload('FOO')
+ ->create()
+ ->withPayload('FOO')
->withSharedProtectedHeader([
'enc' => 'A256CBC-HS512',
'alg' => 'RSA-OAEP-256',
@@ -134,30 +148,31 @@ public function createFlattenedJWEUsingFactory(): void
->withSharedHeader([
'foo' => 'bar',
])
- ->addRecipient(
- $this->getRSARecipientKey(),
- [
- 'plic' => 'ploc',
- ]
- )
+ ->addRecipient($this->getRSARecipientKey(), [
+ 'plic' => 'ploc',
+ ])
->withAAD('A,B,C,D')
->build()
;
- $jwe = $this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0);
+ $jwe = $this->getJWESerializerManager()
+ ->serialize('jwe_json_flattened', $jwe, 0)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwe);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwe)
+ ;
- static::assertEquals('RSA-OAEP-256', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
- static::assertEquals('DEF', $loaded->getSharedProtectedHeaderParameter('zip'));
- static::assertEquals('bar', $loaded->getSharedHeaderParameter('foo'));
- static::assertEquals('A,B,C,D', $loaded->getAAD());
- static::assertEquals('ploc', $loaded->getRecipient(0)->getHeaderParameter('plic'));
+ static::assertSame('RSA-OAEP-256', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('DEF', $loaded->getSharedProtectedHeaderParameter('zip'));
+ static::assertSame('bar', $loaded->getSharedHeaderParameter('foo'));
+ static::assertSame('A,B,C,D', $loaded->getAAD());
+ static::assertSame('ploc', $loaded->getRecipient(0)->getHeaderParameter('plic'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
- static::assertEquals('FOO', $loaded->getPayload());
+ static::assertSame('FOO', $loaded->getPayload());
}
/**
@@ -165,11 +180,16 @@ public function createFlattenedJWEUsingFactory(): void
*/
public function encryptAndLoadFlattenedWithAAD(): void
{
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload(json_encode($this->getKeyToEncrypt()))
+ ->create()
+ ->withPayload(json_encode($this->getKeyToEncrypt()))
->withSharedProtectedHeader([
'enc' => 'A256CBC-HS512',
'alg' => 'RSA-OAEP-256',
@@ -179,18 +199,25 @@ public function encryptAndLoadFlattenedWithAAD(): void
->withAAD('foo,bar,baz')
->build()
;
- $jwe = $this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0);
+ $jwe = $this->getJWESerializerManager()
+ ->serialize('jwe_json_flattened', $jwe, 0)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwe);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwe)
+ ;
- static::assertEquals('RSA-OAEP-256', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
- static::assertEquals('DEF', $loaded->getSharedProtectedHeaderParameter('zip'));
+ static::assertSame('RSA-OAEP-256', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('DEF', $loaded->getSharedProtectedHeaderParameter('zip'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
- static::assertEquals($this->getKeyToEncrypt(), new JWK(json_decode($loaded->getPayload(), true)));
+ static::assertEqualsCanonicalizing(
+ $this->getKeyToEncrypt(),
+ new JWK(json_decode($loaded->getPayload(), true, 512, JSON_THROW_ON_ERROR))
+ );
}
/**
@@ -201,10 +228,13 @@ public function compressionAlgorithmNotSupported(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('The compression method "FIP" is not supported.');
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload(json_encode($this->getKeyToEncrypt()))
+ ->create()
+ ->withPayload(json_encode($this->getKeyToEncrypt()))
->withSharedProtectedHeader([
'enc' => 'A256CBC-HS512',
'alg' => 'RSA-OAEP-256',
@@ -214,7 +244,9 @@ public function compressionAlgorithmNotSupported(): void
->withAAD('foo,bar,baz')
->build()
;
- $this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0);
+ $this->getJWESerializerManager()
+ ->serialize('jwe_json_flattened', $jwe, 0)
+ ;
}
/**
@@ -225,15 +257,24 @@ public function foreignKeyManagementModeForbidden(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Foreign key management mode forbidden.');
- $jweBuilder = $this->getJWEBuilderFactory()->create(['dir', 'ECDH-ES+A256KW'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['dir', 'ECDH-ES+A256KW'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jweBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->withSharedProtectedHeader([
'enc' => 'A256CBC-HS512',
])
- ->addRecipient($this->getECDHRecipientPublicKey(), ['kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d', 'alg' => 'ECDH-ES+A256KW'])
- ->addRecipient($this->getDirectKey(), ['kid' => 'DIR_1', 'alg' => 'dir'])
+ ->addRecipient($this->getECDHRecipientPublicKey(), [
+ 'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
+ 'alg' => 'ECDH-ES+A256KW',
+ ])
+ ->addRecipient($this->getDirectKey(), [
+ 'kid' => 'DIR_1',
+ 'alg' => 'dir',
+ ])
->build()
;
}
@@ -246,10 +287,13 @@ public function operationNotAllowedForTheKey(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Key cannot be used to encrypt');
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jweBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->withSharedProtectedHeader([
'enc' => 'A256CBC-HS512',
'alg' => 'RSA-OAEP-256',
@@ -268,10 +312,13 @@ public function algorithmNotAllowedForTheKey(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Key is only allowed for algorithm "RSA-OAEP".');
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jweBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->withSharedProtectedHeader([
'enc' => 'A256CBC-HS512',
'alg' => 'RSA-OAEP-256',
@@ -287,11 +334,16 @@ public function algorithmNotAllowedForTheKey(): void
*/
public function encryptAndLoadFlattenedWithDeflateCompression(): void
{
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256'], ['A128CBC-HS256'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA-OAEP-256'], ['A128CBC-HS256'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256'], ['A128CBC-HS256'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA-OAEP-256'], ['A128CBC-HS256'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload(json_encode($this->getKeySetToEncrypt()))
+ ->create()
+ ->withPayload(json_encode($this->getKeySetToEncrypt()))
->withSharedProtectedHeader([
'kid' => '123456789',
'enc' => 'A128CBC-HS256',
@@ -301,18 +353,25 @@ public function encryptAndLoadFlattenedWithDeflateCompression(): void
->addRecipient($this->getRSARecipientKey())
->build()
;
- $jwe = $this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0);
+ $jwe = $this->getJWESerializerManager()
+ ->serialize('jwe_compact', $jwe, 0)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwe);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwe)
+ ;
- static::assertEquals('RSA-OAEP-256', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A128CBC-HS256', $loaded->getSharedProtectedHeaderParameter('enc'));
- static::assertEquals('DEF', $loaded->getSharedProtectedHeaderParameter('zip'));
+ static::assertSame('RSA-OAEP-256', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A128CBC-HS256', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('DEF', $loaded->getSharedProtectedHeaderParameter('zip'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
- static::assertEquals($this->getKeySetToEncrypt(), JWKSet::createFromKeyData(json_decode($loaded->getPayload(), true)));
+ static::assertEqualsCanonicalizing(
+ $this->getKeySetToEncrypt(),
+ JWKSet::createFromKeyData(json_decode($loaded->getPayload(), true, 512, JSON_THROW_ON_ERROR))
+ );
}
/**
@@ -323,10 +382,13 @@ public function algParameterIsMissing(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Parameter "alg" is missing.');
- $jweBuilder = $this->getJWEBuilderFactory()->create([], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create([], ['A256CBC-HS512'], ['DEF'])
+ ;
$jweBuilder
- ->create()->withPayload(json_encode($this->getKeyToEncrypt()))
+ ->create()
+ ->withPayload(json_encode($this->getKeyToEncrypt()))
->withSharedProtectedHeader([
'kid' => '123456789',
'enc' => 'A256CBC-HS512',
@@ -345,10 +407,13 @@ public function encParameterIsMissing(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Parameter "enc" is missing.');
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256'], [], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256'], [], ['DEF'])
+ ;
$jweBuilder
- ->create()->withPayload(json_encode($this->getKeyToEncrypt()))
+ ->create()
+ ->withPayload(json_encode($this->getKeyToEncrypt()))
->withSharedProtectedHeader([
'kid' => '123456789',
'alg' => 'RSA-OAEP-256',
@@ -365,12 +430,17 @@ public function encParameterIsMissing(): void
public function notAKeyEncryptionAlgorithm(): void
{
$this->expectException(InvalidArgumentException::class);
- $this->expectExceptionMessage('The key encryption algorithm "A256CBC-HS512" is not supported or not a key encryption algorithm instance.');
+ $this->expectExceptionMessage(
+ 'The key encryption algorithm "A256CBC-HS512" is not supported or not a key encryption algorithm instance.'
+ );
- $jweBuilder = $this->getJWEBuilderFactory()->create(['A256CBC-HS512'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['A256CBC-HS512'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jweBuilder
- ->create()->withPayload(json_encode($this->getKeyToEncrypt()))
+ ->create()
+ ->withPayload(json_encode($this->getKeyToEncrypt()))
->withSharedProtectedHeader([
'kid' => '123456789',
'enc' => 'A256CBC-HS512',
@@ -388,12 +458,17 @@ public function notAKeyEncryptionAlgorithm(): void
public function notAContentEncryptionAlgorithm(): void
{
$this->expectException(InvalidArgumentException::class);
- $this->expectExceptionMessage('The content encryption algorithm "RSA-OAEP-256" is not supported or not a content encryption algorithm instance.');
+ $this->expectExceptionMessage(
+ 'The content encryption algorithm "RSA-OAEP-256" is not supported or not a content encryption algorithm instance.'
+ );
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256'], ['RSA-OAEP-256'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256'], ['RSA-OAEP-256'], ['DEF'])
+ ;
$jweBuilder
- ->create()->withPayload(json_encode($this->getKeyToEncrypt()))
+ ->create()
+ ->withPayload(json_encode($this->getKeyToEncrypt()))
->withSharedProtectedHeader([
'kid' => '123456789',
'enc' => 'RSA-OAEP-256',
@@ -410,11 +485,16 @@ public function notAContentEncryptionAlgorithm(): void
*/
public function encryptAndLoadCompactWithDirectKeyEncryption(): void
{
- $jweBuilder = $this->getJWEBuilderFactory()->create(['dir'], ['A192CBC-HS384'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['dir'], ['A192CBC-HS384'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['dir'], ['A192CBC-HS384'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['dir'], ['A192CBC-HS384'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload(json_encode($this->getKeyToEncrypt()))
+ ->create()
+ ->withPayload(json_encode($this->getKeyToEncrypt()))
->withSharedProtectedHeader([
'kid' => 'DIR_1',
'enc' => 'A192CBC-HS384',
@@ -423,18 +503,25 @@ public function encryptAndLoadCompactWithDirectKeyEncryption(): void
->addRecipient($this->getDirectKey())
->build()
;
- $jwe = $this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0);
+ $jwe = $this->getJWESerializerManager()
+ ->serialize('jwe_json_flattened', $jwe, 0)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwe);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwe)
+ ;
- static::assertEquals('dir', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A192CBC-HS384', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('dir', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A192CBC-HS384', $loaded->getSharedProtectedHeaderParameter('enc'));
static::assertFalse($loaded->hasSharedHeaderParameter('zip'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getSymmetricKeySet(), 0));
- static::assertEquals($this->getKeyToEncrypt(), new JWK(json_decode($loaded->getPayload(), true)));
+ static::assertEqualsCanonicalizing(
+ $this->getKeyToEncrypt(),
+ new JWK(json_decode($loaded->getPayload(), true, 512, JSON_THROW_ON_ERROR))
+ );
}
/**
@@ -442,12 +529,20 @@ public function encryptAndLoadCompactWithDirectKeyEncryption(): void
*/
public function encryptAndLoadCompactKeyAgreement(): void
{
- $jweBuilder = $this->getJWEBuilderFactory()->create(['ECDH-ES'], ['A192CBC-HS384'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['ECDH-ES'], ['A192CBC-HS384'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['ECDH-ES'], ['A192CBC-HS384'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['ECDH-ES'], ['A192CBC-HS384'], ['DEF'])
+ ;
- $payload = json_encode(['user_id' => '1234', 'exp' => time() + 3600]);
+ $payload = json_encode([
+ 'user_id' => '1234',
+ 'exp' => time() + 3600,
+ ]);
$jwe = $jweBuilder
- ->create()->withPayload($payload)
+ ->create()
+ ->withPayload($payload)
->withSharedProtectedHeader([
'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
'enc' => 'A192CBC-HS384',
@@ -456,18 +551,22 @@ public function encryptAndLoadCompactKeyAgreement(): void
->addRecipient($this->getECDHRecipientPublicKey())
->build()
;
- $jwe = $this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0);
+ $jwe = $this->getJWESerializerManager()
+ ->serialize('jwe_json_flattened', $jwe, 0)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwe);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwe)
+ ;
- static::assertEquals('ECDH-ES', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A192CBC-HS384', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('ECDH-ES', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A192CBC-HS384', $loaded->getSharedProtectedHeaderParameter('enc'));
static::assertFalse($loaded->hasSharedProtectedHeaderParameter('zip'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
- static::assertEquals($payload, $loaded->getPayload());
+ static::assertSame($payload, $loaded->getPayload());
}
/**
@@ -475,11 +574,16 @@ public function encryptAndLoadCompactKeyAgreement(): void
*/
public function encryptAndLoadCompactKeyAgreementWithWrappingCompact(): void
{
- $jweBuilder = $this->getJWEBuilderFactory()->create(['ECDH-ES+A256KW'], ['A256CBC-HS512'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['ECDH-ES+A256KW'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['ECDH-ES+A256KW'], ['A256CBC-HS512'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['ECDH-ES+A256KW'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->withSharedProtectedHeader([
'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
'enc' => 'A256CBC-HS512',
@@ -488,12 +592,16 @@ public function encryptAndLoadCompactKeyAgreementWithWrappingCompact(): void
->addRecipient($this->getECDHRecipientPublicKey())
->build()
;
- $jwe = $this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0);
+ $jwe = $this->getJWESerializerManager()
+ ->serialize('jwe_json_flattened', $jwe, 0)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwe);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwe)
+ ;
- static::assertEquals('ECDH-ES+A256KW', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('ECDH-ES+A256KW', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
static::assertFalse($loaded->hasSharedProtectedHeaderParameter('zip'));
static::assertFalse($loaded->hasSharedHeaderParameter('zip'));
static::assertNull($loaded->getPayload());
@@ -501,7 +609,7 @@ public function encryptAndLoadCompactKeyAgreementWithWrappingCompact(): void
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
static::assertTrue(is_string($loaded->getPayload()));
- static::assertEquals('Live long and Prosper.', $loaded->getPayload());
+ static::assertSame('Live long and Prosper.', $loaded->getPayload());
}
/**
@@ -509,11 +617,16 @@ public function encryptAndLoadCompactKeyAgreementWithWrappingCompact(): void
*/
public function encryptAndLoadWithGCMAndAAD(): void
{
- $jweBuilder = $this->getJWEBuilderFactory()->create(['ECDH-ES+A256KW'], ['A256GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['ECDH-ES+A256KW'], ['A256GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['ECDH-ES+A256KW'], ['A256GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['ECDH-ES+A256KW'], ['A256GCM'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->withSharedProtectedHeader([
'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
'enc' => 'A256GCM',
@@ -523,12 +636,16 @@ public function encryptAndLoadWithGCMAndAAD(): void
->addRecipient($this->getECDHRecipientPublicKey())
->build()
;
- $jwe = $this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0);
+ $jwe = $this->getJWESerializerManager()
+ ->serialize('jwe_json_flattened', $jwe, 0)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwe);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwe)
+ ;
- static::assertEquals('ECDH-ES+A256KW', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A256GCM', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('ECDH-ES+A256KW', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A256GCM', $loaded->getSharedProtectedHeaderParameter('enc'));
static::assertFalse($loaded->hasSharedProtectedHeaderParameter('zip'));
static::assertFalse($loaded->hasSharedHeaderParameter('zip'));
static::assertNull($loaded->getPayload());
@@ -536,7 +653,7 @@ public function encryptAndLoadWithGCMAndAAD(): void
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
static::assertTrue(is_string($loaded->getPayload()));
- static::assertEquals('Live long and Prosper.', $loaded->getPayload());
+ static::assertSame('Live long and Prosper.', $loaded->getPayload());
}
/**
@@ -544,28 +661,43 @@ public function encryptAndLoadWithGCMAndAAD(): void
*/
public function encryptAndLoadCompactKeyAgreementWithWrapping(): void
{
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP-256', 'ECDH-ES+A256KW'], ['A256CBC-HS512'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA-OAEP-256', 'ECDH-ES+A256KW'], ['A256CBC-HS512'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP-256', 'ECDH-ES+A256KW'], ['A256CBC-HS512'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA-OAEP-256', 'ECDH-ES+A256KW'], ['A256CBC-HS512'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->withSharedProtectedHeader([
'enc' => 'A256CBC-HS512',
])
->withAAD('foo,bar,baz')
- ->addRecipient($this->getECDHRecipientPublicKey(), ['kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d', 'alg' => 'ECDH-ES+A256KW'])
- ->addRecipient($this->getRSARecipientKey(), ['kid' => '123456789', 'alg' => 'RSA-OAEP-256'])
+ ->addRecipient($this->getECDHRecipientPublicKey(), [
+ 'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
+ 'alg' => 'ECDH-ES+A256KW',
+ ])
+ ->addRecipient($this->getRSARecipientKey(), [
+ 'kid' => '123456789',
+ 'alg' => 'RSA-OAEP-256',
+ ])
->build()
;
- $jwe = $this->getJWESerializerManager()->serialize('jwe_json_general', $jwe);
+ $jwe = $this->getJWESerializerManager()
+ ->serialize('jwe_json_general', $jwe)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwe);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwe)
+ ;
- static::assertEquals(2, $loaded->countRecipients());
+ static::assertSame(2, $loaded->countRecipients());
- static::assertEquals('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
- static::assertEquals('ECDH-ES+A256KW', $loaded->getRecipient(0)->getHeaderParameter('alg'));
- static::assertEquals('RSA-OAEP-256', $loaded->getRecipient(1)->getHeaderParameter('alg'));
+ static::assertSame('A256CBC-HS512', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('ECDH-ES+A256KW', $loaded->getRecipient(0)->getHeaderParameter('alg'));
+ static::assertSame('RSA-OAEP-256', $loaded->getRecipient(1)->getHeaderParameter('alg'));
static::assertFalse($loaded->hasSharedHeaderParameter('zip'));
static::assertFalse($loaded->hasSharedProtectedHeaderParameter('zip'));
static::assertNull($loaded->getPayload());
@@ -573,7 +705,7 @@ public function encryptAndLoadCompactKeyAgreementWithWrapping(): void
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
static::assertTrue(is_string($loaded->getPayload()));
- static::assertEquals('Live long and Prosper.', $loaded->getPayload());
+ static::assertSame('Live long and Prosper.', $loaded->getPayload());
}
/**
@@ -673,120 +805,128 @@ private function getDirectKey()
'kid' => 'DIR_1',
'key_ops' => ['encrypt', 'decrypt'],
'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded(hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F')),
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F')
+ ),
]);
}
private function getPrivateKeySet(): JWKSet
{
- $keys = ['keys' => [
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'weNJy2HscCSM6AEDTDg04biOvhFhyyWvOHQfeF_PxMQ',
- 'y' => 'e8lnCO-AlStT-NJVX-crhB7QRYhiix03illJOVAOyck',
- 'd' => 'VEmDZpDXXK8p8N0Cndsxs924q6nS1RXFASRl6BfUqdw',
- ],
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'gI0GAILBdu7T53akrFmMyGcsF3n5dO7MmwNBHKW5SV0',
- 'y' => 'SLW_xSffzlPWrHEVI30DHM_4egVwt3NQqeUD7nMFpps',
- 'd' => '0_NxaRPUMQoAJt50Gz8YiTr8gRTwyEaCumd-MToTmIo',
- ],
- [
- 'kid' => '2010-12-29',
- 'kty' => 'RSA',
- 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
- 'e' => 'AQAB',
- 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
- ],
- [
- 'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
- 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
- 'd' => 'jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI',
- ],
- [
- 'kid' => '123456789',
- 'kty' => 'RSA',
- 'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
- 'e' => 'AQAB',
- 'p' => '5BGU1c7af_5sFyfsa-onIJgo5BZu8uHvz3Uyb8OA0a-G9UPO1ShLYjX0wUfhZcFB7fwPtgmmYAN6wKGVce9eMAbX4PliPk3r-BcpZuPKkuLk_wFvgWAQ5Hqw2iEuwXLV0_e8c2gaUt_hyMC5-nFc4v0Bmv6NT6Pfry-UrK3BKWc',
- 'd' => 'Kp0KuZwCZGL1BLgsVM-N0edMNitl9wN5Hf2WOYDoIqOZNAEKzdJuenIMhITJjRFUX05GVL138uyp2js_pqDdY9ipA7rAKThwGuDdNphZHech9ih3DGEPXs-YpmHqvIbCd3GoGm38MKwxYkddEpFnjo8rKna1_BpJthrFxjDRhw9DxJBycOdH2yWTyp62ZENPvneK40H2a57W4QScTgfecZqD59m2fGUaWaX5uUmIxaEmtGoJnd9RE4oywKhgN7_TK7wXRlqA4UoRPiH2ACrdU-_cLQL9Jc0u0GqZJK31LDbOeN95QgtSCc72k3Vtzy3CrVpp5TAA67s1Gj9Skn-CAQ',
- 'q' => 'zPD-B-nrngwF-O99BHvb47XGKR7ON8JCI6JxavzIkusMXCB8rMyYW8zLs68L8JLAzWZ34oMq0FPUnysBxc5nTF8Nb4BZxTZ5-9cHfoKrYTI3YWsmVW2FpCJFEjMs4NXZ28PBkS9b4zjfS2KhNdkmCeOYU0tJpNfwmOTI90qeUdU',
- 'dp' => 'aJrzw_kjWK9uDlTeaES2e4muv6bWbopYfrPHVWG7NPGoGdhnBnd70-jhgMEiTZSNU8VXw2u7prAR3kZ-kAp1DdwlqedYOzFsOJcPA0UZhbORyrBy30kbll_7u6CanFm6X4VyJxCpejd7jKNw6cCTFP1sfhWg5NVJ5EUTkPwE66M',
- 'dq' => 'Swz1-m_vmTFN_pu1bK7vF7S5nNVrL4A0OFiEsGliCmuJWzOKdL14DiYxctvnw3H6qT2dKZZfV2tbse5N9-JecdldUjfuqAoLIe7dD7dKi42YOlTC9QXmqvTh1ohnJu8pmRFXEZQGUm_BVhoIb2_WPkjav6YSkguCUHt4HRd2YwE',
- 'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
- 'e' => 'AQAB',
- 'd' => 'kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-WY5NWV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD93Dt62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghkqDp0Vqj3kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vlt3UVe4WO3JkJOzlpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-VFs3VSndVTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ',
- 'p' => '1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-SWxkbkmoEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lffNn03IXqWF5MDFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0',
- 'q' => 'wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBmUDdaDYVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aXIWxKwd4gvxFImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc',
- 'dp' => 'ZK-YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KLhMXvo-uz-KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827rnpZzAJKpdhWAgqrXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE',
- 'dq' => 'Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCjywcMlYYg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDBUfCAiJVeESOjJDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis',
- 'qi' => 'VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
- 'e' => 'AQAB',
- 'd' => 'VFCWOqXr8nvZNyaaJLXdnNPXZKRaWCjkU5Q2egQQpTBMwhprMzWzpR8Sxq1OPThh_J6MUD8Z35wky9b8eEO0pwNS8xlh1lOFRRBoNqDIKVOku0aZb-rynq8cxjDTLZQ6Fz7jSjR1Klop-YKaUHc9GsEofQqYruPhzSA-QgajZGPbE_0ZaVDJHfyd7UUBUKunFMScbflYAAOYJqVIVwaYR5zWEEceUjNnTNo_CVSj-VvXLO5VZfCUAVLgW4dpf1SrtZjSt34YLsRarSb127reG_DUwg9Ch-KyvjT1SkHgUWRVGcyly7uvVGRSDwsXypdrNinPA4jlhoNdizK2zF2CWQ',
- 'p' => '9gY2w6I6S6L0juEKsbeDAwpd9WMfgqFoeA9vEyEUuk4kLwBKcoe1x4HG68ik918hdDSE9vDQSccA3xXHOAFOPJ8R9EeIAbTi1VwBYnbTp87X-xcPWlEPkrdoUKW60tgs1aNd_Nnc9LEVVPMS390zbFxt8TN_biaBgelNgbC95sM',
- 'q' => 'uKlCKvKv_ZJMVcdIs5vVSU_6cPtYI1ljWytExV_skstvRSNi9r66jdd9-yBhVfuG4shsp2j7rGnIio901RBeHo6TPKWVVykPu1iYhQXw1jIABfw-MVsN-3bQ76WLdt2SDxsHs7q7zPyUyHXmps7ycZ5c72wGkUwNOjYelmkiNS0',
- 'dp' => 'w0kZbV63cVRvVX6yk3C8cMxo2qCM4Y8nsq1lmMSYhG4EcL6FWbX5h9yuvngs4iLEFk6eALoUS4vIWEwcL4txw9LsWH_zKI-hwoReoP77cOdSL4AVcraHawlkpyd2TWjE5evgbhWtOxnZee3cXJBkAi64Ik6jZxbvk-RR3pEhnCs',
- 'dq' => 'o_8V14SezckO6CNLKs_btPdFiO9_kC1DsuUTd2LAfIIVeMZ7jn1Gus_Ff7B7IVx3p5KuBGOVF8L-qifLb6nQnLysgHDh132NDioZkhH7mI7hPG-PYE_odApKdnqECHWw0J-F0JWnUd6D2B_1TvF9mXA2Qx-iGYn8OVV1Bsmp6qU',
- 'qi' => 'eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlCtUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZB9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
- 'e' => 'AQAB',
- 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
- 'p' => '4BzEEOtIpmVdVEZNCqS7baC4crd0pqnRH_5IB3jw3bcxGn6QLvnEtfdUdiYrqBdss1l58BQ3KhooKeQTa9AB0Hw_Py5PJdTJNPY8cQn7ouZ2KKDcmnPGBY5t7yLc1QlQ5xHdwW1VhvKn-nXqhJTBgIPgtldC-KDV5z-y2XDwGUc',
- 'q' => 'uQPEfgmVtjL0Uyyx88GZFF1fOunH3-7cepKmtH4pxhtCoHqpWmT8YAmZxaewHgHAjLYsp1ZSe7zFYHj7C6ul7TjeLQeZD_YwD66t62wDmpe_HlB-TnBA-njbglfIsRLtXlnDzQkv5dTltRJ11BKBBypeeF6689rjcJIDEz9RWdc',
- 'dp' => 'BwKfV3Akq5_MFZDFZCnW-wzl-CCo83WoZvnLQwCTeDv8uzluRSnm71I3QCLdhrqE2e9YkxvuxdBfpT_PI7Yz-FOKnu1R6HsJeDCjn12Sk3vmAktV2zb34MCdy7cpdTh_YVr7tss2u6vneTwrA86rZtu5Mbr1C1XsmvkxHQAdYo0',
- 'dq' => 'h_96-mK1R_7glhsum81dZxjTnYynPbZpHziZjeeHcXYsXaaMwkOlODsWa7I9xXDoRwbKgB719rrmI2oKr6N3Do9U0ajaHF-NKJnwgjMd2w9cjz3_-kyNlxAr2v4IKhGNpmM5iIgOS1VZnOZ68m6_pbLBSp3nssTdlqvd0tIiTHU',
- 'qi' => 'IYd7DHOhrWvxkwPQsRM2tOgrjbcrfvtQJipd-DlcxyVuuM9sQLdgjVk2oy26F0EmpScGLq2MowX7fhd_QJQ3ydy5cY7YIBi87w93IKLEdfnbJtoOPLUW0ITrJReOgo1cq9SbsxYawBgfp_gh6A5603k2-ZQwVK0JKSHuLFkuQ3U',
- ],
- [
- 'kty' => 'EC',
- 'crv' => 'P-521',
- 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
- 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
- 'd' => 'AY5pb7A0UFiB3RELSD64fTLOSV_jazdF7fLYyuTw8lOfRhWg6Y6rUrPAxerEzgdRhajnu0ferB0d53vM9mE15j2C',
+ $keys = [
+ 'keys' => [
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'weNJy2HscCSM6AEDTDg04biOvhFhyyWvOHQfeF_PxMQ',
+ 'y' => 'e8lnCO-AlStT-NJVX-crhB7QRYhiix03illJOVAOyck',
+ 'd' => 'VEmDZpDXXK8p8N0Cndsxs924q6nS1RXFASRl6BfUqdw',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'gI0GAILBdu7T53akrFmMyGcsF3n5dO7MmwNBHKW5SV0',
+ 'y' => 'SLW_xSffzlPWrHEVI30DHM_4egVwt3NQqeUD7nMFpps',
+ 'd' => '0_NxaRPUMQoAJt50Gz8YiTr8gRTwyEaCumd-MToTmIo',
+ ],
+ [
+ 'kid' => '2010-12-29',
+ 'kty' => 'RSA',
+ 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
+ 'e' => 'AQAB',
+ 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
+ ],
+ [
+ 'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
+ 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ 'd' => 'jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI',
+ ],
+ [
+ 'kid' => '123456789',
+ 'kty' => 'RSA',
+ 'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
+ 'e' => 'AQAB',
+ 'p' => '5BGU1c7af_5sFyfsa-onIJgo5BZu8uHvz3Uyb8OA0a-G9UPO1ShLYjX0wUfhZcFB7fwPtgmmYAN6wKGVce9eMAbX4PliPk3r-BcpZuPKkuLk_wFvgWAQ5Hqw2iEuwXLV0_e8c2gaUt_hyMC5-nFc4v0Bmv6NT6Pfry-UrK3BKWc',
+ 'd' => 'Kp0KuZwCZGL1BLgsVM-N0edMNitl9wN5Hf2WOYDoIqOZNAEKzdJuenIMhITJjRFUX05GVL138uyp2js_pqDdY9ipA7rAKThwGuDdNphZHech9ih3DGEPXs-YpmHqvIbCd3GoGm38MKwxYkddEpFnjo8rKna1_BpJthrFxjDRhw9DxJBycOdH2yWTyp62ZENPvneK40H2a57W4QScTgfecZqD59m2fGUaWaX5uUmIxaEmtGoJnd9RE4oywKhgN7_TK7wXRlqA4UoRPiH2ACrdU-_cLQL9Jc0u0GqZJK31LDbOeN95QgtSCc72k3Vtzy3CrVpp5TAA67s1Gj9Skn-CAQ',
+ 'q' => 'zPD-B-nrngwF-O99BHvb47XGKR7ON8JCI6JxavzIkusMXCB8rMyYW8zLs68L8JLAzWZ34oMq0FPUnysBxc5nTF8Nb4BZxTZ5-9cHfoKrYTI3YWsmVW2FpCJFEjMs4NXZ28PBkS9b4zjfS2KhNdkmCeOYU0tJpNfwmOTI90qeUdU',
+ 'dp' => 'aJrzw_kjWK9uDlTeaES2e4muv6bWbopYfrPHVWG7NPGoGdhnBnd70-jhgMEiTZSNU8VXw2u7prAR3kZ-kAp1DdwlqedYOzFsOJcPA0UZhbORyrBy30kbll_7u6CanFm6X4VyJxCpejd7jKNw6cCTFP1sfhWg5NVJ5EUTkPwE66M',
+ 'dq' => 'Swz1-m_vmTFN_pu1bK7vF7S5nNVrL4A0OFiEsGliCmuJWzOKdL14DiYxctvnw3H6qT2dKZZfV2tbse5N9-JecdldUjfuqAoLIe7dD7dKi42YOlTC9QXmqvTh1ohnJu8pmRFXEZQGUm_BVhoIb2_WPkjav6YSkguCUHt4HRd2YwE',
+ 'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
+ 'e' => 'AQAB',
+ 'd' => 'kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-WY5NWV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD93Dt62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghkqDp0Vqj3kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vlt3UVe4WO3JkJOzlpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-VFs3VSndVTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ',
+ 'p' => '1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-SWxkbkmoEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lffNn03IXqWF5MDFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0',
+ 'q' => 'wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBmUDdaDYVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aXIWxKwd4gvxFImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc',
+ 'dp' => 'ZK-YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KLhMXvo-uz-KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827rnpZzAJKpdhWAgqrXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE',
+ 'dq' => 'Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCjywcMlYYg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDBUfCAiJVeESOjJDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis',
+ 'qi' => 'VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
+ 'e' => 'AQAB',
+ 'd' => 'VFCWOqXr8nvZNyaaJLXdnNPXZKRaWCjkU5Q2egQQpTBMwhprMzWzpR8Sxq1OPThh_J6MUD8Z35wky9b8eEO0pwNS8xlh1lOFRRBoNqDIKVOku0aZb-rynq8cxjDTLZQ6Fz7jSjR1Klop-YKaUHc9GsEofQqYruPhzSA-QgajZGPbE_0ZaVDJHfyd7UUBUKunFMScbflYAAOYJqVIVwaYR5zWEEceUjNnTNo_CVSj-VvXLO5VZfCUAVLgW4dpf1SrtZjSt34YLsRarSb127reG_DUwg9Ch-KyvjT1SkHgUWRVGcyly7uvVGRSDwsXypdrNinPA4jlhoNdizK2zF2CWQ',
+ 'p' => '9gY2w6I6S6L0juEKsbeDAwpd9WMfgqFoeA9vEyEUuk4kLwBKcoe1x4HG68ik918hdDSE9vDQSccA3xXHOAFOPJ8R9EeIAbTi1VwBYnbTp87X-xcPWlEPkrdoUKW60tgs1aNd_Nnc9LEVVPMS390zbFxt8TN_biaBgelNgbC95sM',
+ 'q' => 'uKlCKvKv_ZJMVcdIs5vVSU_6cPtYI1ljWytExV_skstvRSNi9r66jdd9-yBhVfuG4shsp2j7rGnIio901RBeHo6TPKWVVykPu1iYhQXw1jIABfw-MVsN-3bQ76WLdt2SDxsHs7q7zPyUyHXmps7ycZ5c72wGkUwNOjYelmkiNS0',
+ 'dp' => 'w0kZbV63cVRvVX6yk3C8cMxo2qCM4Y8nsq1lmMSYhG4EcL6FWbX5h9yuvngs4iLEFk6eALoUS4vIWEwcL4txw9LsWH_zKI-hwoReoP77cOdSL4AVcraHawlkpyd2TWjE5evgbhWtOxnZee3cXJBkAi64Ik6jZxbvk-RR3pEhnCs',
+ 'dq' => 'o_8V14SezckO6CNLKs_btPdFiO9_kC1DsuUTd2LAfIIVeMZ7jn1Gus_Ff7B7IVx3p5KuBGOVF8L-qifLb6nQnLysgHDh132NDioZkhH7mI7hPG-PYE_odApKdnqECHWw0J-F0JWnUd6D2B_1TvF9mXA2Qx-iGYn8OVV1Bsmp6qU',
+ 'qi' => 'eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlCtUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZB9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
+ 'e' => 'AQAB',
+ 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
+ 'p' => '4BzEEOtIpmVdVEZNCqS7baC4crd0pqnRH_5IB3jw3bcxGn6QLvnEtfdUdiYrqBdss1l58BQ3KhooKeQTa9AB0Hw_Py5PJdTJNPY8cQn7ouZ2KKDcmnPGBY5t7yLc1QlQ5xHdwW1VhvKn-nXqhJTBgIPgtldC-KDV5z-y2XDwGUc',
+ 'q' => 'uQPEfgmVtjL0Uyyx88GZFF1fOunH3-7cepKmtH4pxhtCoHqpWmT8YAmZxaewHgHAjLYsp1ZSe7zFYHj7C6ul7TjeLQeZD_YwD66t62wDmpe_HlB-TnBA-njbglfIsRLtXlnDzQkv5dTltRJ11BKBBypeeF6689rjcJIDEz9RWdc',
+ 'dp' => 'BwKfV3Akq5_MFZDFZCnW-wzl-CCo83WoZvnLQwCTeDv8uzluRSnm71I3QCLdhrqE2e9YkxvuxdBfpT_PI7Yz-FOKnu1R6HsJeDCjn12Sk3vmAktV2zb34MCdy7cpdTh_YVr7tss2u6vneTwrA86rZtu5Mbr1C1XsmvkxHQAdYo0',
+ 'dq' => 'h_96-mK1R_7glhsum81dZxjTnYynPbZpHziZjeeHcXYsXaaMwkOlODsWa7I9xXDoRwbKgB719rrmI2oKr6N3Do9U0ajaHF-NKJnwgjMd2w9cjz3_-kyNlxAr2v4IKhGNpmM5iIgOS1VZnOZ68m6_pbLBSp3nssTdlqvd0tIiTHU',
+ 'qi' => 'IYd7DHOhrWvxkwPQsRM2tOgrjbcrfvtQJipd-DlcxyVuuM9sQLdgjVk2oy26F0EmpScGLq2MowX7fhd_QJQ3ydy5cY7YIBi87w93IKLEdfnbJtoOPLUW0ITrJReOgo1cq9SbsxYawBgfp_gh6A5603k2-ZQwVK0JKSHuLFkuQ3U',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-521',
+ 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
+ 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
+ 'd' => 'AY5pb7A0UFiB3RELSD64fTLOSV_jazdF7fLYyuTw8lOfRhWg6Y6rUrPAxerEzgdRhajnu0ferB0d53vM9mE15j2C',
+ ],
],
- ]];
+ ];
return JWKSet::createFromKeyData($keys);
}
private function getSymmetricKeySet(): JWKSet
{
- $keys = ['keys' => [
- [
- 'kid' => 'DIR_1',
- 'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded(hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F')),
- ],
- [
- 'kty' => 'oct',
- 'k' => 'f5aN5V6iihwQVqP-tPNNtkIJNCwUb9-JukCIKkF0rNfxqxA771RJynYAT2xtzAP0MYaR7U5fMP_wvbRQq5l38Q',
- ],
- [
- 'kty' => 'oct',
- 'k' => 'GawgguFyGrWKav7AX4VKUg',
- ],
- [
- 'kty' => 'oct',
- 'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
+ $keys = [
+ 'keys' => [
+ [
+ 'kid' => 'DIR_1',
+ 'kty' => 'oct',
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F')
+ ),
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'f5aN5V6iihwQVqP-tPNNtkIJNCwUb9-JukCIKkF0rNfxqxA771RJynYAT2xtzAP0MYaR7U5fMP_wvbRQq5l38Q',
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'GawgguFyGrWKav7AX4VKUg',
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
+ ],
],
- ]];
+ ];
return JWKSet::createFromKeyData($keys);
}
diff --git a/tests/Component/Encryption/EncryptionTest.php b/tests/Component/Encryption/EncryptionTest.php
index fe7ba05d..204065f9 100644
--- a/tests/Component/Encryption/EncryptionTest.php
+++ b/tests/Component/Encryption/EncryptionTest.php
@@ -2,92 +2,87 @@
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\Tests\Component\Encryption;
use Jose\Component\Core\AlgorithmManagerFactory;
-use Jose\Component\Encryption\Algorithm\ContentEncryption;
-use Jose\Component\Encryption\Algorithm\KeyEncryption;
-use Jose\Component\Encryption\Compression;
+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\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;
+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 EncryptionTest extends TestCase
{
- /**
- * @var AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
-
- /**
- * @var CompressionMethodManagerFactory
- */
- private $compressionMethodManagerFactory;
-
- /**
- * @var JWEBuilderFactory
- */
- private $jweBuilderFactory;
-
- /**
- * @var JWEDecrypterFactory
- */
- private $jweDecrypterFactory;
-
- /**
- * @var JWELoaderFactory
- */
- private $jweLoaderFactory;
-
- /**
- * @var null|Serializer\JWESerializerManagerFactory
- */
- private $jwsSerializerManagerFactory;
-
- /**
- * @var null|Serializer\JWESerializerManager
- */
- private $jwsSerializerManager;
+ 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 (null === $this->algorithmManagerFactory) {
+ if ($this->algorithmManagerFactory === null) {
$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());
+ $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('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;
@@ -95,9 +90,9 @@ protected function getAlgorithmManagerFactory(): AlgorithmManagerFactory
protected function getCompressionMethodManagerFactory(): CompressionMethodManagerFactory
{
- if (null === $this->compressionMethodManagerFactory) {
+ if ($this->compressionMethodManagerFactory === null) {
$this->compressionMethodManagerFactory = new CompressionMethodManagerFactory();
- $this->compressionMethodManagerFactory->add('DEF', new Compression\Deflate());
+ $this->compressionMethodManagerFactory->add('DEF', new Deflate());
}
return $this->compressionMethodManagerFactory;
@@ -105,7 +100,7 @@ protected function getCompressionMethodManagerFactory(): CompressionMethodManage
protected function getJWEBuilderFactory(): JWEBuilderFactory
{
- if (null === $this->jweBuilderFactory) {
+ if ($this->jweBuilderFactory === null) {
$this->jweBuilderFactory = new JWEBuilderFactory(
$this->getAlgorithmManagerFactory(),
$this->getCompressionMethodManagerFactory()
@@ -117,7 +112,7 @@ protected function getJWEBuilderFactory(): JWEBuilderFactory
protected function getJWEDecrypterFactory(): JWEDecrypterFactory
{
- if (null === $this->jweDecrypterFactory) {
+ if ($this->jweDecrypterFactory === null) {
$this->jweDecrypterFactory = new JWEDecrypterFactory(
$this->getAlgorithmManagerFactory(),
$this->getCompressionMethodManagerFactory()
@@ -129,7 +124,7 @@ protected function getJWEDecrypterFactory(): JWEDecrypterFactory
protected function getJWELoaderFactory(): JWELoaderFactory
{
- if (null === $this->jweLoaderFactory) {
+ if ($this->jweLoaderFactory === null) {
$this->jweLoaderFactory = new JWELoaderFactory(
$this->getJWESerializerManagerFactory(),
$this->getJWEDecrypterFactory(),
@@ -140,25 +135,25 @@ protected function getJWELoaderFactory(): JWELoaderFactory
return $this->jweLoaderFactory;
}
- protected function getJWESerializerManagerFactory(): Serializer\JWESerializerManagerFactory
+ protected function getJWESerializerManagerFactory(): 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());
+ 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(): Serializer\JWESerializerManager
+ protected function getJWESerializerManager(): JWESerializerManager
{
- if (null === $this->jwsSerializerManager) {
- $this->jwsSerializerManager = new Serializer\JWESerializerManager([
- new Serializer\CompactSerializer(),
- new Serializer\JSONFlattenedSerializer(),
- new Serializer\JSONGeneralSerializer(),
+ if ($this->jwsSerializerManager === null) {
+ $this->jwsSerializerManager = new JWESerializerManager([
+ new CompactSerializer(),
+ new JSONFlattenedSerializer(),
+ new JSONGeneralSerializer(),
]);
}
diff --git a/tests/Component/Encryption/InvalidCurveAttackTest.php b/tests/Component/Encryption/InvalidCurveAttackTest.php
index 0aa29897..5d2ee9fd 100644
--- a/tests/Component/Encryption/InvalidCurveAttackTest.php
+++ b/tests/Component/Encryption/InvalidCurveAttackTest.php
@@ -2,26 +2,14 @@
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\Tests\Component\Encryption;
use Jose\Component\Core\JWK;
/**
- * @group CVE
- * @group functional
- *
* @internal
*/
-class InvalidCurveAttackTest extends EncryptionTest
+final class InvalidCurveAttackTest extends EncryptionTest
{
/**
* @test
@@ -30,9 +18,13 @@ public function curveCheckNegativeP256AttackPt1(): void
{
$maliciousJWE = 'eyJhbGciOiJFQ0RILUVTK0ExMjhLVyIsImVuYyI6IkExMjhDQkMtSFMyNTYiLCJlcGsiOnsia3R5IjoiRUMiLCJ4IjoiZ1RsaTY1ZVRRN3otQmgxNDdmZjhLM203azJVaURpRzJMcFlrV0FhRkpDYyIsInkiOiJjTEFuakthNGJ6akQ3REpWUHdhOUVQclJ6TUc3ck9OZ3NpVUQta2YzMEZzIiwiY3J2IjoiUC0yNTYifX0.qGAdxtEnrV_3zbIxU2ZKrMWcejNltjA_dtefBFnRh9A2z9cNIqYRWg.pEA5kX304PMCOmFSKX_cEg.a9fwUrx2JXi1OnWEMOmZhXd94-bEGCH9xxRwqcGuG2AMo-AwHoljdsH5C_kcTqlXS5p51OB1tvgQcMwB5rpTxg.72CHiYFecyDvuUa43KKT6w';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['ECDH-ES+A128KW'], ['A128CBC-HS256'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['ECDH-ES+A128KW'], ['A128CBC-HS256'], ['DEF'])
+ ;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($maliciousJWE);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($maliciousJWE)
+ ;
$privateKey = new JWK([
'kty' => 'EC',
'crv' => 'P-256',
@@ -50,9 +42,13 @@ public function curveCheckNegativeP256AttackPt2(): void
{
// The malicious JWE contains a public key with order 2447
$maliciousJWE = 'eyJhbGciOiJFQ0RILUVTK0ExMjhLVyIsImVuYyI6IkExMjhDQkMtSFMyNTYiLCJlcGsiOnsia3R5IjoiRUMiLCJ4IjoiWE9YR1E5XzZRQ3ZCZzN1OHZDSS1VZEJ2SUNBRWNOTkJyZnFkN3RHN29RNCIsInkiOiJoUW9XTm90bk56S2x3aUNuZUprTElxRG5UTnc3SXNkQkM1M1ZVcVZqVkpjIiwiY3J2IjoiUC0yNTYifX0.UGb3hX3ePAvtFB9TCdWsNkFTv9QWxSr3MpYNiSBdW630uRXRBT3sxw.6VpU84oMob16DxOR98YTRw.y1UslvtkoWdl9HpugfP0rSAkTw1xhm_LbK1iRXzGdpYqNwIG5VU33UBpKAtKFBoA1Kk_sYtfnHYAvn-aes4FTg.UZPN8h7FcvA5MIOq-Pkj8A';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['ECDH-ES+A128KW'], ['A128CBC-HS256'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['ECDH-ES+A128KW'], ['A128CBC-HS256'], ['DEF'])
+ ;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($maliciousJWE);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($maliciousJWE)
+ ;
$privateKey = new JWK([
'kty' => 'EC',
'crv' => 'P-256',
diff --git a/tests/Component/Encryption/JWEFlattenedTest.php b/tests/Component/Encryption/JWEFlattenedTest.php
index 4586d4a6..050baace 100644
--- a/tests/Component/Encryption/JWEFlattenedTest.php
+++ b/tests/Component/Encryption/JWEFlattenedTest.php
@@ -2,26 +2,15 @@
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\Tests\Component\Encryption;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWKSet;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
- * @group functional
- *
* @internal
*/
-class JWEFlattenedTest extends EncryptionTest
+final class JWEFlattenedTest extends EncryptionTest
{
/**
* @see https://tools.ietf.org/html/rfc7516#appendix-A.5
@@ -30,38 +19,48 @@ class JWEFlattenedTest extends EncryptionTest
*/
public function loadFlattenedJWE(): void
{
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128CBC-HS256'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128CBC-HS256'], ['DEF'])
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize('{"protected":"eyJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","unprotected":{"jku":"https://server.example.com/keys.jwks"},"header":{"alg":"A128KW","kid":"7"},"encrypted_key":"6KB707dM9YTIgHtLvtgWQ8mKwboJW3of9locizkDTHzBC2IlrT1oOQ","iv":"AxY8DCtDaGlsbGljb3RoZQ","ciphertext":"KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY","tag":"Mz-VPPyU4RlcuYv1IwIvzw"}');
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize(
+ '{"protected":"eyJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","unprotected":{"jku":"https://server.example.com/keys.jwks"},"header":{"alg":"A128KW","kid":"7"},"encrypted_key":"6KB707dM9YTIgHtLvtgWQ8mKwboJW3of9locizkDTHzBC2IlrT1oOQ","iv":"AxY8DCtDaGlsbGljb3RoZQ","ciphertext":"KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY","tag":"Mz-VPPyU4RlcuYv1IwIvzw"}'
+ )
+ ;
- static::assertEquals('A128KW', $loaded->getRecipient(0)->getHeaderParameter('alg'));
- static::assertEquals('A128CBC-HS256', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('A128KW', $loaded->getRecipient(0)->getHeaderParameter('alg'));
+ static::assertSame('A128CBC-HS256', $loaded->getSharedProtectedHeaderParameter('enc'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getSymmetricKeySet(), 0));
- static::assertEquals('Live long and prosper.', $loaded->getPayload());
+ static::assertSame('Live long and prosper.', $loaded->getPayload());
}
private function getSymmetricKeySet(): JWKSet
{
- $keys = ['keys' => [
- [
- 'kid' => 'DIR_1',
- 'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded(hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F')),
- ],
- [
- 'kty' => 'oct',
- 'k' => 'f5aN5V6iihwQVqP-tPNNtkIJNCwUb9-JukCIKkF0rNfxqxA771RJynYAT2xtzAP0MYaR7U5fMP_wvbRQq5l38Q',
- ],
- [
- 'kty' => 'oct',
- 'k' => 'GawgguFyGrWKav7AX4VKUg',
- ],
- [
- 'kty' => 'oct',
- 'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
+ $keys = [
+ 'keys' => [
+ [
+ 'kid' => 'DIR_1',
+ 'kty' => 'oct',
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F')
+ ),
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'f5aN5V6iihwQVqP-tPNNtkIJNCwUb9-JukCIKkF0rNfxqxA771RJynYAT2xtzAP0MYaR7U5fMP_wvbRQq5l38Q',
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'GawgguFyGrWKav7AX4VKUg',
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
+ ],
],
- ]];
+ ];
return JWKSet::createFromKeyData($keys);
}
diff --git a/tests/Component/Encryption/JWELoaderTest.php b/tests/Component/Encryption/JWELoaderTest.php
index 1775621f..30832594 100644
--- a/tests/Component/Encryption/JWELoaderTest.php
+++ b/tests/Component/Encryption/JWELoaderTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Encryption;
use Exception;
@@ -20,17 +11,11 @@
/**
* Class JWELoaderTest.
*
- * @group JWELoader
- * @group functional
- *
* @internal
*/
-class JWELoaderTest extends EncryptionTest
+final class JWELoaderTest extends EncryptionTest
{
- /**
- * @var null|JWELoader
- */
- private $jweLoader;
+ private ?JWELoader $jweLoader = null;
/**
* @test
@@ -50,7 +35,9 @@ public function theFlattenedTokenCannotBeLoaded(): void
'y' => 'A8-yxCHxkfBz3hKZfI1jUYMjUhsEveZ9THuwFjH2sCNdtksRJU7D5-SkgaFL1ETP',
]);
- $this->getJWELoader()->loadAndDecryptWithKey($token, $key, $recipient);
+ $this->getJWELoader()
+ ->loadAndDecryptWithKey($token, $key, $recipient)
+ ;
}
/**
@@ -71,7 +58,9 @@ public function theTokenCannotBeVerifiedBecauseOfAnUnsupportedAlgorithm(): void
'y' => 'A8-yxCHxkfBz3hKZfI1jUYMjUhsEveZ9THuwFjH2sCNdtksRJU7D5-SkgaFL1ETP',
]);
- $this->getJWELoader()->loadAndDecryptWithKey($token, $key, $recipient);
+ $this->getJWELoader()
+ ->loadAndDecryptWithKey($token, $key, $recipient)
+ ;
}
/**
@@ -92,7 +81,9 @@ public function theTokenCannotBeVerifiedBecauseOfABadKey(): void
'y' => 'A8-yxCHxkfBz3hKZfI1jUYMjUhsEveZ9THuwFjH2sCNdtksRJU7D5-SkgaFL1ETP',
]);
- $this->getJWELoader()->loadAndDecryptWithKey($token, $key, $recipient);
+ $this->getJWELoader()
+ ->loadAndDecryptWithKey($token, $key, $recipient)
+ ;
}
/**
@@ -109,16 +100,23 @@ public function theJweLoaderCanLoadAndDecryptAToken(): void
'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
]);
$recipient = 0;
- $jwe = $this->getJWELoader()->loadAndDecryptWithKey($token, $key, $recipient);
-
- static::assertEquals('You can trust us to stick with you through thick and thin–to the bitter end. And you can trust us to keep any secret of yours–closer than you keep it yourself. But you cannot trust us to let you face trouble alone, and go off without a word. We are your friends, Frodo.', $jwe->getPayload());
- static::assertEquals(0, $recipient);
+ $jwe = $this->getJWELoader()
+ ->loadAndDecryptWithKey($token, $key, $recipient)
+ ;
+
+ static::assertSame(
+ 'You can trust us to stick with you through thick and thin–to the bitter end. And you can trust us to keep any secret of yours–closer than you keep it yourself. But you cannot trust us to let you face trouble alone, and go off without a word. We are your friends, Frodo.',
+ $jwe->getPayload()
+ );
+ static::assertSame(0, $recipient);
}
private function getJWELoader(): JWELoader
{
- if (null === $this->jweLoader) {
- $this->jweLoader = $this->getJWELoaderFactory()->create(['jwe_compact'], ['A128KW'], ['A128GCM'], ['DEF']);
+ if ($this->jweLoader === null) {
+ $this->jweLoader = $this->getJWELoaderFactory()
+ ->create(['jwe_compact'], ['A128KW'], ['A128GCM'], ['DEF'])
+ ;
}
return $this->jweLoader;
diff --git a/tests/Component/Encryption/JWESplitTest.php b/tests/Component/Encryption/JWESplitTest.php
index cf941891..6d4a2ce3 100644
--- a/tests/Component/Encryption/JWESplitTest.php
+++ b/tests/Component/Encryption/JWESplitTest.php
@@ -2,26 +2,15 @@
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\Tests\Component\Encryption;
use function count;
use Jose\Component\Encryption\Serializer\JSONGeneralSerializer;
/**
- * @group JWE
- *
* @internal
*/
-class JWESplitTest extends EncryptionTest
+final class JWESplitTest extends EncryptionTest
{
/**
* @test
@@ -33,25 +22,25 @@ public function aJweObjectWithMoreThanOneRecipientCanBeSplittedIntoSeveralJweObj
$jwe = $serializer->unserialize($input);
$split = $jwe->split();
- static::assertEquals(3, $jwe->countRecipients());
- static::assertEquals(3, count($split));
+ static::assertSame(3, $jwe->countRecipients());
+ static::assertSame(3, count($split));
for ($i = 0; $i < $jwe->countRecipients(); ++$i) {
$recipient1 = $jwe->getRecipient($i);
$tempJwe = $split[$i];
- static::assertEquals(1, $tempJwe->countRecipients());
- static::assertEquals($jwe->getAAD(), $tempJwe->getAAD());
- static::assertEquals($jwe->getCiphertext(), $tempJwe->getCiphertext());
- static::assertEquals($jwe->getEncodedSharedProtectedHeader(), $tempJwe->getEncodedSharedProtectedHeader());
- static::assertEquals($jwe->getSharedProtectedHeader(), $tempJwe->getSharedProtectedHeader());
- static::assertEquals($jwe->getSharedHeader(), $tempJwe->getSharedHeader());
- static::assertEquals($jwe->getIV(), $tempJwe->getIV());
- static::assertEquals($jwe->getTag(), $tempJwe->getTag());
- static::assertEquals($jwe->isEncrypted(), $tempJwe->isEncrypted());
+ static::assertSame(1, $tempJwe->countRecipients());
+ static::assertSame($jwe->getAAD(), $tempJwe->getAAD());
+ static::assertSame($jwe->getCiphertext(), $tempJwe->getCiphertext());
+ static::assertSame($jwe->getEncodedSharedProtectedHeader(), $tempJwe->getEncodedSharedProtectedHeader());
+ static::assertSame($jwe->getSharedProtectedHeader(), $tempJwe->getSharedProtectedHeader());
+ static::assertSame($jwe->getSharedHeader(), $tempJwe->getSharedHeader());
+ static::assertSame($jwe->getIV(), $tempJwe->getIV());
+ static::assertSame($jwe->getTag(), $tempJwe->getTag());
+ static::assertSame($jwe->isEncrypted(), $tempJwe->isEncrypted());
$recipient2 = $tempJwe->getRecipient(0);
- static::assertEquals($recipient1->getHeader(), $recipient2->getHeader());
- static::assertEquals($recipient1->getEncryptedKey(), $recipient2->getEncryptedKey());
+ static::assertSame($recipient1->getHeader(), $recipient2->getHeader());
+ static::assertSame($recipient1->getEncryptedKey(), $recipient2->getEncryptedKey());
}
}
}
diff --git a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTest.php b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTest.php
index f92a3c11..ccc0ecc1 100644
--- a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTest.php
+++ b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTest.php
@@ -2,33 +2,22 @@
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\Tests\Component\Encryption\RFC7520;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.12
*
- * @group RFC7520
- *
* @internal
*/
-class A128KWAndA128GCMEncryptionProtectedContentOnlyTest extends EncryptionTest
+final class A128KWAndA128GCMEncryptionProtectedContentOnlyTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -44,8 +33,7 @@ public function a128KWAndA128GCMEncryptionProtectedContentOnly(): void
'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
]);
- $protectedHeader = [
- ];
+ $protectedHeader = [];
$header = [
'enc' => 'A128GCM',
@@ -60,30 +48,45 @@ public function a128KWAndA128GCMEncryptionProtectedContentOnly(): void
$expected_ciphertext = 'qtPIMMaOBRgASL10dNQhOa7Gqrk7Eal1vwht7R4TT1uq-arsVCPaIeFwQfzrSS6oEUWbBtxEasE0vC6r7sphyVziMCVJEuRJyoAHFSP3eqQPb4Ic1SDSqyXjw_L3svybhHYUGyQuTmUQEDjgjJfBOifwHIsDsRPeBz1NomqeifVPq5GTCWFo5k_MNIQURR2Wj0AHC2k7JZfu2iWjUHLF8ExFZLZ4nlmsvJu_mvifMYiikfNfsZAudISOa6O73yPZtL04k_1FI7WDfrb2w7OqKLWDXzlpcxohPVOLQwpA3mFNRKdY-bQz4Z4KX9lfz1cne31N4-8BKmojpw-OdQjKdLOGkC445Fb_K1tlDQXw2sBF';
$expected_tag = 'e2m0Vm7JvjK2VpCKXS-kyg';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($expected_flattened_json);
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($expected_flattened_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($header, $loaded_flattened_json->getSharedHeader());
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($header, $loaded_json->getSharedHeader());
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
-
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertEqualsCanonicalizing($header, $loaded_flattened_json->getSharedHeader());
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
+
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertEqualsCanonicalizing($header, $loaded_json->getSharedHeader());
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -103,8 +106,7 @@ public function a128KWAndA128GCMEncryptionProtectedContentOnlyBis(): void
'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
]);
- $protectedHeader = [
- ];
+ $protectedHeader = [];
$header = [
'enc' => 'A128GCM',
@@ -112,30 +114,39 @@ public function a128KWAndA128GCMEncryptionProtectedContentOnlyBis(): void
'kid' => '81b20965-8332-43d9-a468-82160ad91ac8',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->withSharedHeader($header)
->addRecipient($private_key)
->build()
;
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0));
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($header, $loaded_flattened_json->getSharedHeader());
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($header, $loaded_flattened_json->getSharedHeader());
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($header, $loaded_json->getSharedHeader());
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($header, $loaded_json->getSharedHeader());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionTest.php b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionTest.php
index be4fbb8b..3b57302e 100644
--- a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionTest.php
+++ b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionTest.php
@@ -2,33 +2,22 @@
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\Tests\Component\Encryption\RFC7520;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.8
*
- * @group RFC7520
- *
* @internal
*/
-class A128KWAndA128GCMEncryptionTest extends EncryptionTest
+final class A128KWAndA128GCMEncryptionTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -58,38 +47,61 @@ public function a128KWAndA128GCMEncryption(): void
$expected_ciphertext = 'AwliP-KmWgsZ37BvzCefNen6VTbRK3QMA4TkvRkH0tP1bTdhtFJgJxeVmJkLD61A1hnWGetdg11c9ADsnWgL56NyxwSYjU1ZEHcGkd3EkU0vjHi9gTlb90qSYFfeF0LwkcTtjbYKCsiNJQkcIp1yeM03OmuiYSoYJVSpf7ej6zaYcMv3WwdxDFl8REwOhNImk2Xld2JXq6BR53TSFkyT7PwVLuq-1GwtGHlQeg7gDT6xW0JqHDPn_H-puQsmthc9Zg0ojmJfqqFvETUxLAF-KjcBTS5dNy6egwkYtOt8EIHK-oEsKYtZRaa8Z7MOZ7UGxGIMvEmxrGCPeJa14slv2-gaqK0kEThkaSqdYw0FkQZF';
$expected_tag = 'ER7MWJZ1FBI_NKvn7Zb1Lw';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($expected_compact_json);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($expected_compact_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($expected_flattened_json);
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($expected_flattened_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
-
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
+
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
+
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -115,33 +127,44 @@ public function a128KWAndA128GCMEncryptionBis(): void
'enc' => 'A128GCM',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->addRecipient($private_key)
->build()
;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0));
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0));
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest.php b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest.php
index 9682c84c..057071b2 100644
--- a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest.php
+++ b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest.php
@@ -2,33 +2,22 @@
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\Tests\Component\Encryption\RFC7520;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.10
*
- * @group RFC7520
- *
* @internal
*/
-class A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest extends EncryptionTest
+final class A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -58,30 +47,45 @@ public function a128KWAndA128GCMEncryptionWithAdditionalAuthenticatedData(): voi
$expected_ciphertext = 'Z_3cbr0k3bVM6N3oSNmHz7Lyf3iPppGf3Pj17wNZqteJ0Ui8p74SchQP8xygM1oFRWCNzeIa6s6BcEtp8qEFiqTUEyiNkOWDNoF14T_4NFqF-p2Mx8zkbKxI7oPK8KNarFbyxIDvICNqBLba-v3uzXBdB89fzOI-Lv4PjOFAQGHrgv1rjXAmKbgkft9cB4WeyZw8MldbBhc-V_KWZslrsLNygon_JJWd_ek6LQn5NRehvApqf9ZrxB4aq3FXBxOxCys35PhCdaggy2kfUfl2OkwKnWUbgXVD1C6HxLIlqHhCwXDG59weHrRDQeHyMRoBljoV3X_bUTJDnKBFOod7nLz-cj48JMx3SnCZTpbQAkFV';
$expected_tag = 'vOaH_Rajnpy_3hOtqvZHRA';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($expected_flattened_json);
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($expected_flattened_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
- static::assertEquals($expected_aad, $loaded_flattened_json->getAAD());
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
- static::assertEquals($expected_aad, $loaded_json->getAAD());
-
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
+ static::assertSame($expected_aad, $loaded_flattened_json->getAAD());
+
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+ static::assertSame($expected_aad, $loaded_json->getAAD());
+
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -107,27 +111,36 @@ public function a128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataBis():
'enc' => 'A128GCM',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->addRecipient($private_key)
->build()
;
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0));
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTest.php b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTest.php
index f5117dd5..97113a9d 100644
--- a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTest.php
+++ b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTest.php
@@ -2,33 +2,22 @@
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\Tests\Component\Encryption\RFC7520;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.9
*
- * @group RFC7520
- *
* @internal
*/
-class A128KWAndA128GCMEncryptionWithCompressionTest extends EncryptionTest
+final class A128KWAndA128GCMEncryptionWithCompressionTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -59,38 +48,61 @@ public function a128KWAndA128GCMEncryptionWithCompression(): void
$expected_ciphertext = 'HbDtOsdai1oYziSx25KEeTxmwnh8L8jKMFNc1k3zmMI6VB8hry57tDZ61jXyezSPt0fdLVfe6Jf5y5-JaCap_JQBcb5opbmT60uWGml8blyiMQmOn9J--XhhlYg0m-BHaqfDO5iTOWxPxFMUedx7WCy8mxgDHj0aBMG6152PsM-w5E_o2B3jDbrYBKhpYA7qi3AyijnCJ7BP9rr3U8kxExCpG3mK420TjOw';
$expected_tag = 'VILuUwuIxaLVmh5X-T7kmA';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($expected_compact_json);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($expected_compact_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($expected_flattened_json);
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($expected_flattened_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
-
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
+
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
+
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -117,33 +129,44 @@ public function a128KWAndA128GCMEncryptionWithCompressionBis(): void
'zip' => 'DEF',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->addRecipient($private_key)
->build()
;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0));
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0));
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest.php b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest.php
index a5746505..8a29d756 100644
--- a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest.php
+++ b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest.php
@@ -2,33 +2,22 @@
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\Tests\Component\Encryption\RFC7520;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.11
*
- * @group RFC7520
- *
* @internal
*/
-class A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest extends EncryptionTest
+final class A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -60,30 +49,45 @@ public function a128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValues(): v
$expected_ciphertext = 'lIbCyRmRJxnB2yLQOTqjCDKV3H30ossOw3uD9DPsqLL2DM3swKkjOwQyZtWsFLYMj5YeLht_StAn21tHmQJuuNt64T8D4t6C7kC9OCCJ1IHAolUv4MyOt80MoPb8fZYbNKqplzYJgIL58g8N2v46OgyG637d6uuKPwhAnTGm_zWhqc_srOvgiLkzyFXPq1hBAURbc3-8BqeRb48iR1-_5g5UjWVD3lgiLCN_P7AW8mIiFvUNXBPJK3nOWL4teUPS8yHLbWeL83olU4UAgL48x-8dDkH23JykibVSQju-f7e-1xreHWXzWLHs1NqBbre0dEwK3HX_xM0LjUz77Krppgegoutpf5qaKg3l-_xMINmf';
$expected_tag = 'fNYLqpUe84KD45lvDiaBAQ';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($expected_flattened_json);
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($expected_flattened_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($header, $loaded_flattened_json->getSharedHeader());
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($header, $loaded_json->getSharedHeader());
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
-
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($header, $loaded_flattened_json->getSharedHeader());
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
+
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($header, $loaded_json->getSharedHeader());
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -112,30 +116,39 @@ public function a128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesBis()
'kid' => '81b20965-8332-43d9-a468-82160ad91ac8',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128GCM'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->withSharedHeader($header)
->addRecipient($private_key)
->build()
;
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0));
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($header, $loaded_flattened_json->getSharedHeader());
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($header, $loaded_flattened_json->getSharedHeader());
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($header, $loaded_json->getSharedHeader());
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($header, $loaded_json->getSharedHeader());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTest.php b/tests/Component/Encryption/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTest.php
index e049a6de..46894295 100644
--- a/tests/Component/Encryption/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTest.php
+++ b/tests/Component/Encryption/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTest.php
@@ -2,34 +2,23 @@
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\Tests\Component\Encryption\RFC7520;
use function array_key_exists;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.7
*
- * @group RFC7520
- *
* @internal
*/
-class A256GCMKWAndA128CBC_HS256EncryptionTest extends EncryptionTest
+final class A256GCMKWAndA128CBC_HS256EncryptionTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -67,38 +56,61 @@ public function a256GCMKWAndA128CBCHS256Encryption(): void
$expected_ciphertext = 'Jf5p9-ZhJlJy_IQ_byKFmI0Ro7w7G1QiaZpI8OaiVgD8EqoDZHyFKFBupS8iaEeVIgMqWmsuJKuoVgzR3YfzoMd3GxEm3VxNhzWyWtZKX0gxKdy6HgLvqoGNbZCzLjqcpDiF8q2_62EVAbr2uSc2oaxFmFuIQHLcqAHxy51449xkjZ7ewzZaGV3eFqhpco8o4DijXaG5_7kp3h2cajRfDgymuxUbWgLqaeNQaJtvJmSMFuEOSAzw9Hdeb6yhdTynCRmu-kqtO5Dec4lT2OMZKpnxc_F1_4yDJFcqb5CiDSmA-psB2k0JtjxAj4UPI61oONK7zzFIu4gBfjJCndsZfdvG7h8wGjV98QhrKEnR7xKZ3KCr0_qR1B-gxpNk3xWU';
$expected_tag = 'DKW7jrb4WaRSNfbXVPlT5g';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A256GCMKW'], ['A128CBC-HS256'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A256GCMKW'], ['A128CBC-HS256'], ['DEF'])
+ ;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($expected_compact_json);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($expected_compact_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($expected_flattened_json);
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($expected_flattened_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
-
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
+
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
+
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -124,23 +136,34 @@ public function a256GCMKWAndA128CBCHS256EncryptionBis(): void
'enc' => 'A128CBC-HS256',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['A256GCMKW'], ['A128CBC-HS256'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A256GCMKW'], ['A128CBC-HS256'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['A256GCMKW'], ['A128CBC-HS256'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A256GCMKW'], ['A128CBC-HS256'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->addRecipient($private_key)
->build()
;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0));
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0));
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
static::assertTrue(array_key_exists('iv', $loaded_compact_json->getSharedProtectedHeader()));
@@ -152,8 +175,8 @@ public function a256GCMKWAndA128CBCHS256EncryptionBis(): void
static::assertTrue(array_key_exists('iv', $loaded_json->getSharedProtectedHeader()));
static::assertTrue(array_key_exists('tag', $loaded_json->getSharedProtectedHeader()));
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RFC7520/DirAndA128GCMEncryptionTest.php b/tests/Component/Encryption/RFC7520/DirAndA128GCMEncryptionTest.php
index 05547549..7cefee44 100644
--- a/tests/Component/Encryption/RFC7520/DirAndA128GCMEncryptionTest.php
+++ b/tests/Component/Encryption/RFC7520/DirAndA128GCMEncryptionTest.php
@@ -2,33 +2,22 @@
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\Tests\Component\Encryption\RFC7520;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.6
*
- * @group RFC7520
- *
* @internal
*/
-class DirAndA128GCMEncryptionTest extends EncryptionTest
+final class DirAndA128GCMEncryptionTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -56,26 +45,35 @@ public function dirAndA128GCMEncryption(): void
$expected_ciphertext = 'JW_i_f52hww_ELQPGaYyeAB6HYGcR559l9TYnSovc23XJoBcW29rHP8yZOZG7YhLpT1bjFuvZPjQS-m0IFtVcXkZXdH_lr_FrdYt9HRUYkshtrMmIUAyGmUnd9zMDB2n0cRDIHAzFVeJUDxkUwVAE7_YGRPdcqMyiBoCO-FBdE-Nceb4h3-FtBP-c_BIwCPTjb9o0SbdcdREEMJMyZBH8ySWMVi1gPD9yxi-aQpGbSv_F9N4IZAxscj5g-NJsUPbjk29-s7LJAGb15wEBtXphVCgyy53CoIKLHHeJHXex45Uz9aKZSRSInZI-wjsY0yu3cT4_aQ3i1o-tiE-F8Ios61EKgyIQ4CWao8PFMj8TTnp';
$expected_tag = 'vbb32Xvllea2OtmHAdccRQ';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['dir'], ['A128GCM'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['dir'], ['A128GCM'], ['DEF'])
+ ;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($expected_compact_json);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($expected_compact_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
-
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
+
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -101,27 +99,36 @@ public function dirAndA128GCMEncryptionBis(): void
'enc' => 'A128GCM',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['dir'], ['A128GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['dir'], ['A128GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['dir'], ['A128GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['dir'], ['A128GCM'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->addRecipient($private_key)
->build()
;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0));
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTest.php b/tests/Component/Encryption/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTest.php
index 063d522e..18e32f35 100644
--- a/tests/Component/Encryption/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTest.php
+++ b/tests/Component/Encryption/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTest.php
@@ -2,34 +2,23 @@
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\Tests\Component\Encryption\RFC7520;
use function array_key_exists;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.4
*
- * @group RFC7520
- *
* @internal
*/
-class ECDH_ES_A128KWAndA128GCMEncryptionTest extends EncryptionTest
+final class ECDH_ES_A128KWAndA128GCMEncryptionTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -67,38 +56,61 @@ public function eCDHESA128KWAndA128GCMEncryption(): void
$expected_ciphertext = 'tkZuOO9h95OgHJmkkrfLBisku8rGf6nzVxhRM3sVOhXgz5NJ76oID7lpnAi_cPWJRCjSpAaUZ5dOR3Spy7QuEkmKx8-3RCMhSYMzsXaEwDdXta9Mn5B7cCBoJKB0IgEnj_qfo1hIi-uEkUpOZ8aLTZGHfpl05jMwbKkTe2yK3mjF6SBAsgicQDVCkcY9BLluzx1RmC3ORXaM0JaHPB93YcdSDGgpgBWMVrNU1ErkjcMqMoT_wtCex3w03XdLkjXIuEr2hWgeP-nkUZTPU9EoGSPj6fAS-bSz87RCPrxZdj_iVyC6QWcqAu07WNhjzJEPc4jVntRJ6K53NgPQ5p99l3Z408OUqj4ioYezbS6vTPlQ';
$expected_tag = 'WuGzxmcreYjpHGJoa17EBg';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['ECDH-ES+A128KW'], ['A128GCM'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['ECDH-ES+A128KW'], ['A128GCM'], ['DEF'])
+ ;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($expected_compact_json);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($expected_compact_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($expected_flattened_json);
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($expected_flattened_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
-
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
+
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
+
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -135,27 +147,36 @@ public function eCDHESA128KWAndA128GCMEncryptionBis(): void
'enc' => 'A128GCM',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['ECDH-ES+A128KW'], ['A128GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['ECDH-ES+A128KW'], ['A128GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['ECDH-ES+A128KW'], ['A128GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['ECDH-ES+A128KW'], ['A128GCM'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->addRecipient($public_key)
->build()
;
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0));
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
static::assertTrue(array_key_exists('epk', $loaded_flattened_json->getSharedProtectedHeader()));
static::assertTrue(array_key_exists('epk', $loaded_json->getSharedProtectedHeader()));
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTest.php b/tests/Component/Encryption/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTest.php
index bf3b0cba..9f274f4c 100644
--- a/tests/Component/Encryption/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTest.php
+++ b/tests/Component/Encryption/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTest.php
@@ -2,34 +2,23 @@
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\Tests\Component\Encryption\RFC7520;
use function array_key_exists;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.5
*
- * @group RFC7520
- *
* @internal
*/
-class ECDH_ES_AndA128CBC_HS256EncryptionTest extends EncryptionTest
+final class ECDH_ES_AndA128CBC_HS256EncryptionTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -65,27 +54,36 @@ public function eCDHESAndA128CBCHS256Encryption(): void
$expected_ciphertext = 'BoDlwPnTypYq-ivjmQvAYJLb5Q6l-F3LIgQomlz87yW4OPKbWE1zSTEFjDfhU9IPIOSA9Bml4m7iDFwA-1ZXvHteLDtw4R1XRGMEsDIqAYtskTTmzmzNa-_q4F_evAPUmwlO-ZG45Mnq4uhM1fm_D9rBtWolqZSF3xGNNkpOMQKF1Cl8i8wjzRli7-IXgyirlKQsbhhqRzkv8IcY6aHl24j03C-AR2le1r7URUhArM79BY8soZU0lzwI-sD5PZ3l4NDCCei9XkoIAfsXJWmySPoeRb2Ni5UZL4mYpvKDiwmyzGd65KqVw7MsFfI_K767G9C9Azp73gKZD0DyUn1mn0WW5LmyX_yJ-3AROq8p1WZBfG-ZyJ6195_JGG2m9Csg';
$expected_tag = 'WCCkNa-x4BeB9hIDIfFuhg';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['ECDH-ES'], ['A128CBC-HS256'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['ECDH-ES'], ['A128CBC-HS256'], ['DEF'])
+ ;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($expected_compact_json);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($expected_compact_json)
+ ;
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -122,21 +120,28 @@ public function eCDHESAndA128CBCHS256EncryptionBis(): void
'enc' => 'A128CBC-HS256',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['ECDH-ES'], ['A128CBC-HS256'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['ECDH-ES'], ['A128CBC-HS256'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['ECDH-ES'], ['A128CBC-HS256'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['ECDH-ES'], ['A128CBC-HS256'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->addRecipient($public_key)
->build()
;
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
static::assertTrue(array_key_exists('epk', $loaded_json->getSharedProtectedHeader()));
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RFC7520/MultipleRecipientEncryptionTest.php b/tests/Component/Encryption/RFC7520/MultipleRecipientEncryptionTest.php
index 779d8968..8121a40a 100644
--- a/tests/Component/Encryption/RFC7520/MultipleRecipientEncryptionTest.php
+++ b/tests/Component/Encryption/RFC7520/MultipleRecipientEncryptionTest.php
@@ -2,35 +2,24 @@
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\Tests\Component\Encryption\RFC7520;
use function array_key_exists;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.13
*
- * @group RFC7520
- *
* @internal
*/
-class MultipleRecipientEncryptionTest extends EncryptionTest
+final class MultipleRecipientEncryptionTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -91,7 +80,8 @@ public function multipleRecipientEncryption(): void
'crv' => 'P-384',
'x' => 'Uzdvk3pi5wKCRc1izp5_r0OjeqT-I68i8g2b8mva8diRhsE2xAn2DtMRb25Ma2CX',
'y' => 'VDrRyFJh-Kwd1EjAgmj5Eo-CTHAZ53MC7PjjpLioy3ylEjI1pOMbw91fzZ84pbfm',
- ], ];
+ ],
+ ];
$recipient_3Header = [
'alg' => 'A256GCMKW',
@@ -108,30 +98,47 @@ public function multipleRecipientEncryption(): void
$expected_ciphertext = 'ajm2Q-OpPXCr7-MHXicknb1lsxLdXxK_yLds0KuhJzfWK04SjdxQeSw2L9mu3a_k1C55kCQ_3xlkcVKC5yr__Is48VOoK0k63_QRM9tBURMFqLByJ8vOYQX0oJW4VUHJLmGhF-tVQWB7Kz8mr8zeE7txF0MSaP6ga7-siYxStR7_G07Thd1jh-zGT0wxM5g-VRORtq0K6AXpLlwEqRp7pkt2zRM0ZAXqSpe1O6FJ7FHLDyEFnD-zDIZukLpCbzhzMDLLw2-8I14FQrgi-iEuzHgIJFIJn2wh9Tj0cg_kOZy9BqMRZbmYXMY9YQjorZ_P_JYG3ARAIF3OjDNqpdYe-K_5Q5crGJSDNyij_ygEiItR5jssQVH2ofDQdLChtazE';
$expected_tag = 'BESYyFN7T09KY7i8zKs5_g';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA1_5', 'ECDH-ES+A256KW', 'A256GCMKW'], ['A128CBC-HS256'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA1_5', 'ECDH-ES+A256KW', 'A256GCMKW'], ['A128CBC-HS256'], ['DEF'])
+ ;
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $recipient_1_private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $recipient_2_private_key, 1));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $recipient_3_private_key, 2));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_recipient_1_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_recipient_2_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(1)->getEncryptedKey()));
- static::assertEquals($expected_recipient_3_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(2)->getEncryptedKey()));
- static::assertEquals($recipient_1Header, $loaded_json->getRecipient(0)->getHeader());
- static::assertEquals($recipient_2Header, $loaded_json->getRecipient(1)->getHeader());
- static::assertEquals($recipient_3Header, $loaded_json->getRecipient(2)->getHeader());
- static::assertEquals($header, $loaded_json->getSharedHeader());
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
-
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame(
+ $expected_recipient_1_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame(
+ $expected_recipient_2_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(1)->getEncryptedKey())
+ );
+ static::assertSame(
+ $expected_recipient_3_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(2)->getEncryptedKey())
+ );
+ static::assertSame($recipient_1Header, $loaded_json->getRecipient(0)->getHeader());
+ static::assertSame($recipient_2Header, $loaded_json->getRecipient(1)->getHeader());
+ static::assertSame($recipient_3Header, $loaded_json->getRecipient(2)->getHeader());
+ static::assertSame($header, $loaded_json->getSharedHeader());
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -207,11 +214,16 @@ public function multipleRecipientEncryptionBis(): void
'kid' => '18ec08e1-bfa9-4d95-b205-2b4dd1d4321d',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA1_5', 'ECDH-ES+A256KW', 'A256GCMKW'], ['A128CBC-HS256'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA1_5', 'ECDH-ES+A256KW', 'A256GCMKW'], ['A128CBC-HS256'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA1_5', 'ECDH-ES+A256KW', 'A256GCMKW'], ['A128CBC-HS256'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA1_5', 'ECDH-ES+A256KW', 'A256GCMKW'], ['A128CBC-HS256'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->withSharedHeader($header)
->addRecipient($recipient_1_private_key, $recipient_1Header)
@@ -220,23 +232,29 @@ public function multipleRecipientEncryptionBis(): void
->build()
;
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $recipient_1_private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $recipient_2_private_key, 1));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $recipient_3_private_key, 2));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($recipient_1Header, $loaded_json->getRecipient(0)->getHeader());
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($recipient_1Header, $loaded_json->getRecipient(0)->getHeader());
static::assertTrue(array_key_exists('epk', $loaded_json->getRecipient(1)->getHeader()));
static::assertTrue(array_key_exists('iv', $loaded_json->getRecipient(2)->getHeader()));
static::assertTrue(array_key_exists('tag', $loaded_json->getRecipient(2)->getHeader()));
- static::assertEquals($header, $loaded_json->getSharedHeader());
+ static::assertSame($header, $loaded_json->getSharedHeader());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -290,7 +308,9 @@ public function multipleRecipientEncryptionWithDifferentContentEncryptionAlgorit
'kid' => 'peregrin.took@tuckborough.example',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA1_5', 'A256GCMKW'], ['A128CBC-HS256', 'A128GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA1_5', 'A256GCMKW'], ['A128CBC-HS256', 'A128GCM'], ['DEF'])
+ ;
$jweBuilder
->create()
->withPayload($expected_payload)
diff --git a/tests/Component/Encryption/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest.php b/tests/Component/Encryption/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest.php
index 82037a82..0de7e284 100644
--- a/tests/Component/Encryption/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest.php
+++ b/tests/Component/Encryption/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest.php
@@ -2,60 +2,51 @@
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\Tests\Component\Encryption\RFC7520;
use function array_key_exists;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.3
*
- * @group RFC7520
- *
* @internal
*/
-class PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest extends EncryptionTest
+final class PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
public function pBES2HS512A256KWAndA128CBCHS256Encryption(): void
{
- $expected_payload = ['keys' => [
- [
- 'kty' => 'oct',
- 'kid' => '77c7e2b8-6e13-45cf-8672-617b5b45243a',
- 'use' => 'enc',
- 'alg' => 'A128GCM',
- 'k' => 'XctOhJAkA-pD9Lh7ZgW_2A',
- ], [
- 'kty' => 'oct',
- 'kid' => '81b20965-8332-43d9-a468-82160ad91ac8',
- 'use' => 'enc',
- 'alg' => 'A128KW',
- 'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
- ], [
- 'kty' => 'oct',
- 'kid' => '18ec08e1-bfa9-4d95-b205-2b4dd1d4321d',
- 'use' => 'enc',
- 'alg' => 'A256GCMKW',
- 'k' => 'qC57l_uxcm7Nm3K-ct4GFjx8tM1U8CZ0NLBvdQstiS8',
+ $expected_payload = [
+ 'keys' => [
+ [
+ 'kty' => 'oct',
+ 'kid' => '77c7e2b8-6e13-45cf-8672-617b5b45243a',
+ 'use' => 'enc',
+ 'alg' => 'A128GCM',
+ 'k' => 'XctOhJAkA-pD9Lh7ZgW_2A',
+ ], [
+ 'kty' => 'oct',
+ 'kid' => '81b20965-8332-43d9-a468-82160ad91ac8',
+ 'use' => 'enc',
+ 'alg' => 'A128KW',
+ 'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
+ ], [
+ 'kty' => 'oct',
+ 'kid' => '18ec08e1-bfa9-4d95-b205-2b4dd1d4321d',
+ 'use' => 'enc',
+ 'alg' => 'A256GCMKW',
+ 'k' => 'qC57l_uxcm7Nm3K-ct4GFjx8tM1U8CZ0NLBvdQstiS8',
+ ],
],
- ]];
+ ];
$private_key = new JWK([
'kty' => 'oct',
@@ -79,38 +70,61 @@ public function pBES2HS512A256KWAndA128CBCHS256Encryption(): void
$expected_ciphertext = '23i-Tb1AV4n0WKVSSgcQrdg6GRqsUKxjruHXYsTHAJLZ2nsnGIX86vMXqIi6IRsfywCRFzLxEcZBRnTvG3nhzPk0GDD7FMyXhUHpDjEYCNA_XOmzg8yZR9oyjo6lTF6si4q9FZ2EhzgFQCLO_6h5EVg3vR75_hkBsnuoqoM3dwejXBtIodN84PeqMb6asmas_dpSsz7H10fC5ni9xIz424givB1YLldF6exVmL93R3fOoOJbmk2GBQZL_SEGllv2cQsBgeprARsaQ7Bq99tT80coH8ItBjgV08AtzXFFsx9qKvC982KLKdPQMTlVJKkqtV4Ru5LEVpBZXBnZrtViSOgyg6AiuwaS-rCrcD_ePOGSuxvgtrokAKYPqmXUeRdjFJwafkYEkiuDCV9vWGAi1DH2xTafhJwcmywIyzi4BqRpmdn_N-zl5tuJYyuvKhjKv6ihbsV_k1hJGPGAxJ6wUpmwC4PTQ2izEm0TuSE8oMKdTw8V3kobXZ77ulMwDs4p';
$expected_tag = '0HlwodAhOCILG5SQ2LQ9dg';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['PBES2-HS512+A256KW'], ['A128CBC-HS256'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['PBES2-HS512+A256KW'], ['A128CBC-HS256'], ['DEF'])
+ ;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($expected_compact_json);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($expected_compact_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($expected_flattened_json);
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($expected_flattened_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
-
- static::assertEquals($expected_payload, json_decode($loaded_compact_json->getPayload(), true));
- static::assertEquals($expected_payload, json_decode($loaded_flattened_json->getPayload(), true));
- static::assertEquals($expected_payload, json_decode($loaded_json->getPayload(), true));
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
+
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
+
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+
+ static::assertSame($expected_payload, json_decode($loaded_compact_json->getPayload(), true));
+ static::assertSame($expected_payload, json_decode($loaded_flattened_json->getPayload(), true));
+ static::assertSame($expected_payload, json_decode($loaded_json->getPayload(), true));
}
/**
@@ -120,27 +134,29 @@ public function pBES2HS512A256KWAndA128CBCHS256Encryption(): void
*/
public function pBES2HS512A256KWAndA128CBCHS256EncryptionBis(): void
{
- $expected_payload = json_encode(['keys' => [
- [
- 'kty' => 'oct',
- 'kid' => '77c7e2b8-6e13-45cf-8672-617b5b45243a',
- 'use' => 'enc',
- 'alg' => 'A128GCM',
- 'k' => 'XctOhJAkA-pD9Lh7ZgW_2A',
- ], [
- 'kty' => 'oct',
- 'kid' => '81b20965-8332-43d9-a468-82160ad91ac8',
- 'use' => 'enc',
- 'alg' => 'A128KW',
- 'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
- ], [
- 'kty' => 'oct',
- 'kid' => '18ec08e1-bfa9-4d95-b205-2b4dd1d4321d',
- 'use' => 'enc',
- 'alg' => 'A256GCMKW',
- 'k' => 'qC57l_uxcm7Nm3K-ct4GFjx8tM1U8CZ0NLBvdQstiS8',
+ $expected_payload = json_encode([
+ 'keys' => [
+ [
+ 'kty' => 'oct',
+ 'kid' => '77c7e2b8-6e13-45cf-8672-617b5b45243a',
+ 'use' => 'enc',
+ 'alg' => 'A128GCM',
+ 'k' => 'XctOhJAkA-pD9Lh7ZgW_2A',
+ ], [
+ 'kty' => 'oct',
+ 'kid' => '81b20965-8332-43d9-a468-82160ad91ac8',
+ 'use' => 'enc',
+ 'alg' => 'A128KW',
+ 'k' => 'GZy6sIZ6wl9NJOKB-jnmVQ',
+ ], [
+ 'kty' => 'oct',
+ 'kid' => '18ec08e1-bfa9-4d95-b205-2b4dd1d4321d',
+ 'use' => 'enc',
+ 'alg' => 'A256GCMKW',
+ 'k' => 'qC57l_uxcm7Nm3K-ct4GFjx8tM1U8CZ0NLBvdQstiS8',
+ ],
],
- ]]);
+ ]);
$private_key = new JWK([
'kty' => 'oct',
@@ -154,20 +170,29 @@ public function pBES2HS512A256KWAndA128CBCHS256EncryptionBis(): void
'enc' => 'A128CBC-HS256',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['PBES2-HS512+A256KW'], ['A128CBC-HS256'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['PBES2-HS512+A256KW'], ['A128CBC-HS256'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['PBES2-HS512+A256KW'], ['A128CBC-HS256'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['PBES2-HS512+A256KW'], ['A128CBC-HS256'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->addRecipient($private_key)
->build()
;
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0));
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
static::assertTrue(array_key_exists('p2s', $loaded_flattened_json->getSharedProtectedHeader()));
@@ -176,7 +201,7 @@ public function pBES2HS512A256KWAndA128CBCHS256EncryptionBis(): void
static::assertTrue(array_key_exists('p2s', $loaded_json->getSharedProtectedHeader()));
static::assertTrue(array_key_exists('p2c', $loaded_json->getSharedProtectedHeader()));
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTest.php b/tests/Component/Encryption/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTest.php
index 51a37cfd..bb7e3d52 100644
--- a/tests/Component/Encryption/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTest.php
+++ b/tests/Component/Encryption/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTest.php
@@ -2,33 +2,22 @@
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\Tests\Component\Encryption\RFC7520;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.1
*
- * @group RFC7520
- *
* @internal
*/
-class RSA1_5AndA128CBC_HS256EncryptionTest extends EncryptionTest
+final class RSA1_5AndA128CBC_HS256EncryptionTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -64,38 +53,61 @@ public function rSA15AndA128CBCHS256Encryption(): void
$expected_ciphertext = '0fys_TY_na7f8dwSfXLiYdHaA2DxUjD67ieF7fcVbIR62JhJvGZ4_FNVSiGc_raa0HnLQ6s1P2sv3Xzl1p1l_o5wR_RsSzrS8Z-wnI3Jvo0mkpEEnlDmZvDu_k8OWzJv7eZVEqiWKdyVzFhPpiyQU28GLOpRc2VbVbK4dQKPdNTjPPEmRqcaGeTWZVyeSUvf5k59yJZxRuSvWFf6KrNtmRdZ8R4mDOjHSrM_s8uwIFcqt4r5GX8TKaI0zT5CbL5Qlw3sRc7u_hg0yKVOiRytEAEs3vZkcfLkP6nbXdC_PkMdNS-ohP78T2O6_7uInMGhFeX4ctHG7VelHGiT93JfWDEQi5_V9UN1rhXNrYu-0fVMkZAKX3VWi7lzA6BP430m';
$expected_tag = 'kvKuFBXHe5mQr4lqgobAUg';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA1_5'], ['A128CBC-HS256'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA1_5'], ['A128CBC-HS256'], ['DEF'])
+ ;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($expected_compact_json);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($expected_compact_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($expected_flattened_json);
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($expected_flattened_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
-
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
+
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
+
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -127,33 +139,44 @@ public function rSA15AndA128CBCHS256EncryptionBis(): void
'enc' => 'A128CBC-HS256',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA1_5'], ['A128CBC-HS256'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA1_5'], ['A128CBC-HS256'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA1_5'], ['A128CBC-HS256'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA1_5'], ['A128CBC-HS256'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->addRecipient($private_key)
->build()
;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0));
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0));
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RFC7520/RSA_OAEPAndA256GCMEncryptionTest.php b/tests/Component/Encryption/RFC7520/RSA_OAEPAndA256GCMEncryptionTest.php
index 72664674..ba3ab044 100644
--- a/tests/Component/Encryption/RFC7520/RSA_OAEPAndA256GCMEncryptionTest.php
+++ b/tests/Component/Encryption/RFC7520/RSA_OAEPAndA256GCMEncryptionTest.php
@@ -2,33 +2,22 @@
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\Tests\Component\Encryption\RFC7520;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Tests\Component\Encryption\EncryptionTest;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
* @see https://tools.ietf.org/html/rfc7520#section-5.2
*
- * @group RFC7520
- *
* @internal
*/
-class RSA_OAEPAndA256GCMEncryptionTest extends EncryptionTest
+final class RSA_OAEPAndA256GCMEncryptionTest extends EncryptionTest
{
/**
- * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are always different).
- * The output given in the RFC is used and only decrypted.
+ * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are
+ * always different). The output given in the RFC is used and only decrypted.
*
* @test
*/
@@ -65,38 +54,61 @@ public function rSAOAEPAndA256GCMEncryption(): void
$expected_ciphertext = 'o4k2cnGN8rSSw3IDo1YuySkqeS_t2m1GXklSgqBdpACm6UJuJowOHC5ytjqYgRL-I-soPlwqMUf4UgRWWeaOGNw6vGW-xyM01lTYxrXfVzIIaRdhYtEMRBvBWbEwP7ua1DRfvaOjgZv6Ifa3brcAM64d8p5lhhNcizPersuhw5f-pGYzseva-TUaL8iWnctc-sSwy7SQmRkfhDjwbz0fz6kFovEgj64X1I5s7E6GLp5fnbYGLa1QUiML7Cc2GxgvI7zqWo0YIEc7aCflLG1-8BboVWFdZKLK9vNoycrYHumwzKluLWEbSVmaPpOslY2n525DxDfWaVFUfKQxMF56vn4B9QMpWAbnypNimbM8zVOw';
$expected_tag = 'UCGiqJxhBI3IFVdPalHHvA';
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA-OAEP'], ['A256GCM'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA-OAEP'], ['A256GCM'], ['DEF'])
+ ;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($expected_compact_json);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($expected_compact_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($expected_flattened_json);
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($expected_flattened_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($expected_json);
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($expected_json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
-
- static::assertEquals($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
- static::assertEquals($expected_encrypted_key, Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey()));
- static::assertEquals($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
-
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_compact_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_compact_json->getTag()));
+
+ static::assertSame(
+ $expected_ciphertext,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getCiphertext())
+ );
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_flattened_json->getTag()));
+
+ static::assertSame($expected_ciphertext, Base64UrlSafe::encodeUnpadded($loaded_json->getCiphertext()));
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($expected_iv, Base64UrlSafe::encodeUnpadded($loaded_json->getIV()));
+ static::assertSame(
+ $expected_encrypted_key,
+ Base64UrlSafe::encodeUnpadded($loaded_json->getRecipient(0)->getEncryptedKey())
+ );
+ static::assertSame($expected_tag, Base64UrlSafe::encodeUnpadded($loaded_json->getTag()));
+
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
/**
@@ -129,33 +141,44 @@ public function rSAOAEPAndA256GCMEncryptionBis(): void
'enc' => 'A256GCM',
];
- $jweBuilder = $this->getJWEBuilderFactory()->create(['RSA-OAEP'], ['A256GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA-OAEP'], ['A256GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create(['RSA-OAEP'], ['A256GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA-OAEP'], ['A256GCM'], ['DEF'])
+ ;
$jwe = $jweBuilder
- ->create()->withPayload($expected_payload)
+ ->create()
+ ->withPayload($expected_payload)
->withSharedProtectedHeader($protectedHeader)
->addRecipient($private_key)
->build()
;
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0));
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_compact', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $private_key, 0));
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0));
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_flattened', $jwe, 0))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $private_key, 0));
- $loaded_json = $this->getJWESerializerManager()->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe));
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($this->getJWESerializerManager()->serialize('jwe_json_general', $jwe))
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0));
- static::assertEquals($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($protectedHeader, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($protectedHeader, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($expected_payload, $loaded_compact_json->getPayload());
- static::assertEquals($expected_payload, $loaded_flattened_json->getPayload());
- static::assertEquals($expected_payload, $loaded_json->getPayload());
+ static::assertSame($expected_payload, $loaded_compact_json->getPayload());
+ static::assertSame($expected_payload, $loaded_flattened_json->getPayload());
+ static::assertSame($expected_payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/Encryption/RSAEncryptionTest.php b/tests/Component/Encryption/RSAEncryptionTest.php
index 12c40945..428c97e3 100644
--- a/tests/Component/Encryption/RSAEncryptionTest.php
+++ b/tests/Component/Encryption/RSAEncryptionTest.php
@@ -2,26 +2,14 @@
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\Tests\Component\Encryption;
use Jose\Component\Core\JWKSet;
/**
- * @group RSA
- * @group unit
- *
* @internal
*/
-class RSAEncryptionTest extends EncryptionTest
+final class RSAEncryptionTest extends EncryptionTest
{
/**
* @see https://tools.ietf.org/html/rfc7516
@@ -30,15 +18,21 @@ class RSAEncryptionTest extends EncryptionTest
*/
public function loadJWEFromRFC7516(): void
{
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA1_5'], ['A128CBC-HS256'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA1_5'], ['A128CBC-HS256'], ['DEF'])
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize('eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKxGHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPhcCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A.AxY8DCtDaGlsbGljb3RoZQ.KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY.9hH0vgRfYgPnAHOd8stkvw');
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize(
+ 'eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKxGHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPhcCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A.AxY8DCtDaGlsbGljb3RoZQ.KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY.9hH0vgRfYgPnAHOd8stkvw'
+ )
+ ;
- static::assertEquals('RSA1_5', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A128CBC-HS256', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('RSA1_5', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A128CBC-HS256', $loaded->getSharedProtectedHeaderParameter('enc'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
- static::assertEquals('Live long and prosper.', $loaded->getPayload());
+ static::assertSame('Live long and prosper.', $loaded->getPayload());
}
/**
@@ -48,104 +42,112 @@ public function loadJWEFromRFC7516(): void
*/
public function loadJWEJSONSerialization(): void
{
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA1_5', 'A128KW'], ['A128CBC-HS256'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA1_5', 'A128KW'], ['A128CBC-HS256'], ['DEF'])
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize('{"protected":"eyJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","unprotected":{"jku":"https://server.example.com/keys.jwks"},"recipients":[{"header":{"alg":"RSA1_5","kid":"2011-04-29"},"encrypted_key":"UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKxGHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPhcCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A"},{"header":{"alg":"A128KW","kid":"7"},"encrypted_key":"6KB707dM9YTIgHtLvtgWQ8mKwboJW3of9locizkDTHzBC2IlrT1oOQ"}],"iv":"AxY8DCtDaGlsbGljb3RoZQ","ciphertext":"KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY","tag":"Mz-VPPyU4RlcuYv1IwIvzw"}');
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize(
+ '{"protected":"eyJlbmMiOiJBMTI4Q0JDLUhTMjU2In0","unprotected":{"jku":"https://server.example.com/keys.jwks"},"recipients":[{"header":{"alg":"RSA1_5","kid":"2011-04-29"},"encrypted_key":"UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKxGHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPhcCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A"},{"header":{"alg":"A128KW","kid":"7"},"encrypted_key":"6KB707dM9YTIgHtLvtgWQ8mKwboJW3of9locizkDTHzBC2IlrT1oOQ"}],"iv":"AxY8DCtDaGlsbGljb3RoZQ","ciphertext":"KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY","tag":"Mz-VPPyU4RlcuYv1IwIvzw"}'
+ )
+ ;
- static::assertEquals(2, $loaded->countRecipients());
- static::assertEquals('A128CBC-HS256', $loaded->getSharedProtectedHeaderParameter('enc'));
- static::assertEquals('RSA1_5', $loaded->getRecipient(0)->getHeaderParameter('alg'));
- static::assertEquals('A128KW', $loaded->getRecipient(1)->getHeaderParameter('alg'));
+ static::assertSame(2, $loaded->countRecipients());
+ static::assertSame('A128CBC-HS256', $loaded->getSharedProtectedHeaderParameter('enc'));
+ static::assertSame('RSA1_5', $loaded->getRecipient(0)->getHeaderParameter('alg'));
+ static::assertSame('A128KW', $loaded->getRecipient(1)->getHeaderParameter('alg'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
- static::assertEquals('Live long and prosper.', $loaded->getPayload());
+ static::assertSame('Live long and prosper.', $loaded->getPayload());
}
private function getPrivateKeySet(): JWKSet
{
- $keys = ['keys' => [
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'weNJy2HscCSM6AEDTDg04biOvhFhyyWvOHQfeF_PxMQ',
- 'y' => 'e8lnCO-AlStT-NJVX-crhB7QRYhiix03illJOVAOyck',
- 'd' => 'VEmDZpDXXK8p8N0Cndsxs924q6nS1RXFASRl6BfUqdw',
- ],
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'gI0GAILBdu7T53akrFmMyGcsF3n5dO7MmwNBHKW5SV0',
- 'y' => 'SLW_xSffzlPWrHEVI30DHM_4egVwt3NQqeUD7nMFpps',
- 'd' => '0_NxaRPUMQoAJt50Gz8YiTr8gRTwyEaCumd-MToTmIo',
- ],
- [
- 'kid' => '2010-12-29',
- 'kty' => 'RSA',
- 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
- 'e' => 'AQAB',
- 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
- ],
- [
- 'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
- 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
- 'd' => 'jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI',
- ],
- [
- 'kid' => '123456789',
- 'kty' => 'RSA',
- 'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
- 'e' => 'AQAB',
- 'p' => '5BGU1c7af_5sFyfsa-onIJgo5BZu8uHvz3Uyb8OA0a-G9UPO1ShLYjX0wUfhZcFB7fwPtgmmYAN6wKGVce9eMAbX4PliPk3r-BcpZuPKkuLk_wFvgWAQ5Hqw2iEuwXLV0_e8c2gaUt_hyMC5-nFc4v0Bmv6NT6Pfry-UrK3BKWc',
- 'd' => 'Kp0KuZwCZGL1BLgsVM-N0edMNitl9wN5Hf2WOYDoIqOZNAEKzdJuenIMhITJjRFUX05GVL138uyp2js_pqDdY9ipA7rAKThwGuDdNphZHech9ih3DGEPXs-YpmHqvIbCd3GoGm38MKwxYkddEpFnjo8rKna1_BpJthrFxjDRhw9DxJBycOdH2yWTyp62ZENPvneK40H2a57W4QScTgfecZqD59m2fGUaWaX5uUmIxaEmtGoJnd9RE4oywKhgN7_TK7wXRlqA4UoRPiH2ACrdU-_cLQL9Jc0u0GqZJK31LDbOeN95QgtSCc72k3Vtzy3CrVpp5TAA67s1Gj9Skn-CAQ',
- 'q' => 'zPD-B-nrngwF-O99BHvb47XGKR7ON8JCI6JxavzIkusMXCB8rMyYW8zLs68L8JLAzWZ34oMq0FPUnysBxc5nTF8Nb4BZxTZ5-9cHfoKrYTI3YWsmVW2FpCJFEjMs4NXZ28PBkS9b4zjfS2KhNdkmCeOYU0tJpNfwmOTI90qeUdU',
- 'dp' => 'aJrzw_kjWK9uDlTeaES2e4muv6bWbopYfrPHVWG7NPGoGdhnBnd70-jhgMEiTZSNU8VXw2u7prAR3kZ-kAp1DdwlqedYOzFsOJcPA0UZhbORyrBy30kbll_7u6CanFm6X4VyJxCpejd7jKNw6cCTFP1sfhWg5NVJ5EUTkPwE66M',
- 'dq' => 'Swz1-m_vmTFN_pu1bK7vF7S5nNVrL4A0OFiEsGliCmuJWzOKdL14DiYxctvnw3H6qT2dKZZfV2tbse5N9-JecdldUjfuqAoLIe7dD7dKi42YOlTC9QXmqvTh1ohnJu8pmRFXEZQGUm_BVhoIb2_WPkjav6YSkguCUHt4HRd2YwE',
- 'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
- 'e' => 'AQAB',
- 'd' => 'kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-WY5NWV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD93Dt62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghkqDp0Vqj3kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vlt3UVe4WO3JkJOzlpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-VFs3VSndVTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ',
- 'p' => '1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-SWxkbkmoEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lffNn03IXqWF5MDFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0',
- 'q' => 'wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBmUDdaDYVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aXIWxKwd4gvxFImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc',
- 'dp' => 'ZK-YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KLhMXvo-uz-KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827rnpZzAJKpdhWAgqrXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE',
- 'dq' => 'Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCjywcMlYYg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDBUfCAiJVeESOjJDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis',
- 'qi' => 'VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
- 'e' => 'AQAB',
- 'd' => 'VFCWOqXr8nvZNyaaJLXdnNPXZKRaWCjkU5Q2egQQpTBMwhprMzWzpR8Sxq1OPThh_J6MUD8Z35wky9b8eEO0pwNS8xlh1lOFRRBoNqDIKVOku0aZb-rynq8cxjDTLZQ6Fz7jSjR1Klop-YKaUHc9GsEofQqYruPhzSA-QgajZGPbE_0ZaVDJHfyd7UUBUKunFMScbflYAAOYJqVIVwaYR5zWEEceUjNnTNo_CVSj-VvXLO5VZfCUAVLgW4dpf1SrtZjSt34YLsRarSb127reG_DUwg9Ch-KyvjT1SkHgUWRVGcyly7uvVGRSDwsXypdrNinPA4jlhoNdizK2zF2CWQ',
- 'p' => '9gY2w6I6S6L0juEKsbeDAwpd9WMfgqFoeA9vEyEUuk4kLwBKcoe1x4HG68ik918hdDSE9vDQSccA3xXHOAFOPJ8R9EeIAbTi1VwBYnbTp87X-xcPWlEPkrdoUKW60tgs1aNd_Nnc9LEVVPMS390zbFxt8TN_biaBgelNgbC95sM',
- 'q' => 'uKlCKvKv_ZJMVcdIs5vVSU_6cPtYI1ljWytExV_skstvRSNi9r66jdd9-yBhVfuG4shsp2j7rGnIio901RBeHo6TPKWVVykPu1iYhQXw1jIABfw-MVsN-3bQ76WLdt2SDxsHs7q7zPyUyHXmps7ycZ5c72wGkUwNOjYelmkiNS0',
- 'dp' => 'w0kZbV63cVRvVX6yk3C8cMxo2qCM4Y8nsq1lmMSYhG4EcL6FWbX5h9yuvngs4iLEFk6eALoUS4vIWEwcL4txw9LsWH_zKI-hwoReoP77cOdSL4AVcraHawlkpyd2TWjE5evgbhWtOxnZee3cXJBkAi64Ik6jZxbvk-RR3pEhnCs',
- 'dq' => 'o_8V14SezckO6CNLKs_btPdFiO9_kC1DsuUTd2LAfIIVeMZ7jn1Gus_Ff7B7IVx3p5KuBGOVF8L-qifLb6nQnLysgHDh132NDioZkhH7mI7hPG-PYE_odApKdnqECHWw0J-F0JWnUd6D2B_1TvF9mXA2Qx-iGYn8OVV1Bsmp6qU',
- 'qi' => 'eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlCtUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZB9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
- 'e' => 'AQAB',
- 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
- 'p' => '4BzEEOtIpmVdVEZNCqS7baC4crd0pqnRH_5IB3jw3bcxGn6QLvnEtfdUdiYrqBdss1l58BQ3KhooKeQTa9AB0Hw_Py5PJdTJNPY8cQn7ouZ2KKDcmnPGBY5t7yLc1QlQ5xHdwW1VhvKn-nXqhJTBgIPgtldC-KDV5z-y2XDwGUc',
- 'q' => 'uQPEfgmVtjL0Uyyx88GZFF1fOunH3-7cepKmtH4pxhtCoHqpWmT8YAmZxaewHgHAjLYsp1ZSe7zFYHj7C6ul7TjeLQeZD_YwD66t62wDmpe_HlB-TnBA-njbglfIsRLtXlnDzQkv5dTltRJ11BKBBypeeF6689rjcJIDEz9RWdc',
- 'dp' => 'BwKfV3Akq5_MFZDFZCnW-wzl-CCo83WoZvnLQwCTeDv8uzluRSnm71I3QCLdhrqE2e9YkxvuxdBfpT_PI7Yz-FOKnu1R6HsJeDCjn12Sk3vmAktV2zb34MCdy7cpdTh_YVr7tss2u6vneTwrA86rZtu5Mbr1C1XsmvkxHQAdYo0',
- 'dq' => 'h_96-mK1R_7glhsum81dZxjTnYynPbZpHziZjeeHcXYsXaaMwkOlODsWa7I9xXDoRwbKgB719rrmI2oKr6N3Do9U0ajaHF-NKJnwgjMd2w9cjz3_-kyNlxAr2v4IKhGNpmM5iIgOS1VZnOZ68m6_pbLBSp3nssTdlqvd0tIiTHU',
- 'qi' => 'IYd7DHOhrWvxkwPQsRM2tOgrjbcrfvtQJipd-DlcxyVuuM9sQLdgjVk2oy26F0EmpScGLq2MowX7fhd_QJQ3ydy5cY7YIBi87w93IKLEdfnbJtoOPLUW0ITrJReOgo1cq9SbsxYawBgfp_gh6A5603k2-ZQwVK0JKSHuLFkuQ3U',
- ],
- [
- 'kty' => 'EC',
- 'crv' => 'P-521',
- 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
- 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
- 'd' => 'AY5pb7A0UFiB3RELSD64fTLOSV_jazdF7fLYyuTw8lOfRhWg6Y6rUrPAxerEzgdRhajnu0ferB0d53vM9mE15j2C',
+ $keys = [
+ 'keys' => [
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'weNJy2HscCSM6AEDTDg04biOvhFhyyWvOHQfeF_PxMQ',
+ 'y' => 'e8lnCO-AlStT-NJVX-crhB7QRYhiix03illJOVAOyck',
+ 'd' => 'VEmDZpDXXK8p8N0Cndsxs924q6nS1RXFASRl6BfUqdw',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'gI0GAILBdu7T53akrFmMyGcsF3n5dO7MmwNBHKW5SV0',
+ 'y' => 'SLW_xSffzlPWrHEVI30DHM_4egVwt3NQqeUD7nMFpps',
+ 'd' => '0_NxaRPUMQoAJt50Gz8YiTr8gRTwyEaCumd-MToTmIo',
+ ],
+ [
+ 'kid' => '2010-12-29',
+ 'kty' => 'RSA',
+ 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
+ 'e' => 'AQAB',
+ 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
+ ],
+ [
+ 'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
+ 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ 'd' => 'jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI',
+ ],
+ [
+ 'kid' => '123456789',
+ 'kty' => 'RSA',
+ 'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
+ 'e' => 'AQAB',
+ 'p' => '5BGU1c7af_5sFyfsa-onIJgo5BZu8uHvz3Uyb8OA0a-G9UPO1ShLYjX0wUfhZcFB7fwPtgmmYAN6wKGVce9eMAbX4PliPk3r-BcpZuPKkuLk_wFvgWAQ5Hqw2iEuwXLV0_e8c2gaUt_hyMC5-nFc4v0Bmv6NT6Pfry-UrK3BKWc',
+ 'd' => 'Kp0KuZwCZGL1BLgsVM-N0edMNitl9wN5Hf2WOYDoIqOZNAEKzdJuenIMhITJjRFUX05GVL138uyp2js_pqDdY9ipA7rAKThwGuDdNphZHech9ih3DGEPXs-YpmHqvIbCd3GoGm38MKwxYkddEpFnjo8rKna1_BpJthrFxjDRhw9DxJBycOdH2yWTyp62ZENPvneK40H2a57W4QScTgfecZqD59m2fGUaWaX5uUmIxaEmtGoJnd9RE4oywKhgN7_TK7wXRlqA4UoRPiH2ACrdU-_cLQL9Jc0u0GqZJK31LDbOeN95QgtSCc72k3Vtzy3CrVpp5TAA67s1Gj9Skn-CAQ',
+ 'q' => 'zPD-B-nrngwF-O99BHvb47XGKR7ON8JCI6JxavzIkusMXCB8rMyYW8zLs68L8JLAzWZ34oMq0FPUnysBxc5nTF8Nb4BZxTZ5-9cHfoKrYTI3YWsmVW2FpCJFEjMs4NXZ28PBkS9b4zjfS2KhNdkmCeOYU0tJpNfwmOTI90qeUdU',
+ 'dp' => 'aJrzw_kjWK9uDlTeaES2e4muv6bWbopYfrPHVWG7NPGoGdhnBnd70-jhgMEiTZSNU8VXw2u7prAR3kZ-kAp1DdwlqedYOzFsOJcPA0UZhbORyrBy30kbll_7u6CanFm6X4VyJxCpejd7jKNw6cCTFP1sfhWg5NVJ5EUTkPwE66M',
+ 'dq' => 'Swz1-m_vmTFN_pu1bK7vF7S5nNVrL4A0OFiEsGliCmuJWzOKdL14DiYxctvnw3H6qT2dKZZfV2tbse5N9-JecdldUjfuqAoLIe7dD7dKi42YOlTC9QXmqvTh1ohnJu8pmRFXEZQGUm_BVhoIb2_WPkjav6YSkguCUHt4HRd2YwE',
+ 'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
+ 'e' => 'AQAB',
+ 'd' => 'kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-WY5NWV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD93Dt62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghkqDp0Vqj3kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vlt3UVe4WO3JkJOzlpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-VFs3VSndVTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ',
+ 'p' => '1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-SWxkbkmoEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lffNn03IXqWF5MDFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0',
+ 'q' => 'wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBmUDdaDYVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aXIWxKwd4gvxFImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc',
+ 'dp' => 'ZK-YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KLhMXvo-uz-KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827rnpZzAJKpdhWAgqrXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE',
+ 'dq' => 'Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCjywcMlYYg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDBUfCAiJVeESOjJDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis',
+ 'qi' => 'VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
+ 'e' => 'AQAB',
+ 'd' => 'VFCWOqXr8nvZNyaaJLXdnNPXZKRaWCjkU5Q2egQQpTBMwhprMzWzpR8Sxq1OPThh_J6MUD8Z35wky9b8eEO0pwNS8xlh1lOFRRBoNqDIKVOku0aZb-rynq8cxjDTLZQ6Fz7jSjR1Klop-YKaUHc9GsEofQqYruPhzSA-QgajZGPbE_0ZaVDJHfyd7UUBUKunFMScbflYAAOYJqVIVwaYR5zWEEceUjNnTNo_CVSj-VvXLO5VZfCUAVLgW4dpf1SrtZjSt34YLsRarSb127reG_DUwg9Ch-KyvjT1SkHgUWRVGcyly7uvVGRSDwsXypdrNinPA4jlhoNdizK2zF2CWQ',
+ 'p' => '9gY2w6I6S6L0juEKsbeDAwpd9WMfgqFoeA9vEyEUuk4kLwBKcoe1x4HG68ik918hdDSE9vDQSccA3xXHOAFOPJ8R9EeIAbTi1VwBYnbTp87X-xcPWlEPkrdoUKW60tgs1aNd_Nnc9LEVVPMS390zbFxt8TN_biaBgelNgbC95sM',
+ 'q' => 'uKlCKvKv_ZJMVcdIs5vVSU_6cPtYI1ljWytExV_skstvRSNi9r66jdd9-yBhVfuG4shsp2j7rGnIio901RBeHo6TPKWVVykPu1iYhQXw1jIABfw-MVsN-3bQ76WLdt2SDxsHs7q7zPyUyHXmps7ycZ5c72wGkUwNOjYelmkiNS0',
+ 'dp' => 'w0kZbV63cVRvVX6yk3C8cMxo2qCM4Y8nsq1lmMSYhG4EcL6FWbX5h9yuvngs4iLEFk6eALoUS4vIWEwcL4txw9LsWH_zKI-hwoReoP77cOdSL4AVcraHawlkpyd2TWjE5evgbhWtOxnZee3cXJBkAi64Ik6jZxbvk-RR3pEhnCs',
+ 'dq' => 'o_8V14SezckO6CNLKs_btPdFiO9_kC1DsuUTd2LAfIIVeMZ7jn1Gus_Ff7B7IVx3p5KuBGOVF8L-qifLb6nQnLysgHDh132NDioZkhH7mI7hPG-PYE_odApKdnqECHWw0J-F0JWnUd6D2B_1TvF9mXA2Qx-iGYn8OVV1Bsmp6qU',
+ 'qi' => 'eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlCtUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZB9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
+ 'e' => 'AQAB',
+ 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
+ 'p' => '4BzEEOtIpmVdVEZNCqS7baC4crd0pqnRH_5IB3jw3bcxGn6QLvnEtfdUdiYrqBdss1l58BQ3KhooKeQTa9AB0Hw_Py5PJdTJNPY8cQn7ouZ2KKDcmnPGBY5t7yLc1QlQ5xHdwW1VhvKn-nXqhJTBgIPgtldC-KDV5z-y2XDwGUc',
+ 'q' => 'uQPEfgmVtjL0Uyyx88GZFF1fOunH3-7cepKmtH4pxhtCoHqpWmT8YAmZxaewHgHAjLYsp1ZSe7zFYHj7C6ul7TjeLQeZD_YwD66t62wDmpe_HlB-TnBA-njbglfIsRLtXlnDzQkv5dTltRJ11BKBBypeeF6689rjcJIDEz9RWdc',
+ 'dp' => 'BwKfV3Akq5_MFZDFZCnW-wzl-CCo83WoZvnLQwCTeDv8uzluRSnm71I3QCLdhrqE2e9YkxvuxdBfpT_PI7Yz-FOKnu1R6HsJeDCjn12Sk3vmAktV2zb34MCdy7cpdTh_YVr7tss2u6vneTwrA86rZtu5Mbr1C1XsmvkxHQAdYo0',
+ 'dq' => 'h_96-mK1R_7glhsum81dZxjTnYynPbZpHziZjeeHcXYsXaaMwkOlODsWa7I9xXDoRwbKgB719rrmI2oKr6N3Do9U0ajaHF-NKJnwgjMd2w9cjz3_-kyNlxAr2v4IKhGNpmM5iIgOS1VZnOZ68m6_pbLBSp3nssTdlqvd0tIiTHU',
+ 'qi' => 'IYd7DHOhrWvxkwPQsRM2tOgrjbcrfvtQJipd-DlcxyVuuM9sQLdgjVk2oy26F0EmpScGLq2MowX7fhd_QJQ3ydy5cY7YIBi87w93IKLEdfnbJtoOPLUW0ITrJReOgo1cq9SbsxYawBgfp_gh6A5603k2-ZQwVK0JKSHuLFkuQ3U',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-521',
+ 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
+ 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
+ 'd' => 'AY5pb7A0UFiB3RELSD64fTLOSV_jazdF7fLYyuTw8lOfRhWg6Y6rUrPAxerEzgdRhajnu0ferB0d53vM9mE15j2C',
+ ],
],
- ]];
+ ];
return JWKSet::createFromKeyData($keys);
}
diff --git a/tests/Component/Encryption/RSAKeyEncryptionTest.php b/tests/Component/Encryption/RSAKeyEncryptionTest.php
index b39aa9cf..5a6828f6 100644
--- a/tests/Component/Encryption/RSAKeyEncryptionTest.php
+++ b/tests/Component/Encryption/RSAKeyEncryptionTest.php
@@ -2,33 +2,23 @@
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\Tests\Component\Encryption;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Component\Core\JWKSet;
use Jose\Component\Encryption\Algorithm\KeyEncryption\RSA15;
use Jose\Component\Encryption\Algorithm\KeyEncryption\RSAOAEP;
use Jose\Component\Encryption\Algorithm\KeyEncryption\RSAOAEP256;
+use ParagonIE\ConstantTime\Base64UrlSafe;
+use const STR_PAD_LEFT;
/**
* Class RSAKeyEncryptionTest.
*
- * @group unit
- *
* @internal
*/
-class RSAKeyEncryptionTest extends EncryptionTest
+final class RSAKeyEncryptionTest extends EncryptionTest
{
/**
* @test
@@ -71,20 +61,55 @@ public function rSA15EncryptionAndDecryption(): void
'qi' => 'eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlCtUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZB9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo',
]);
- $cek = [4, 211, 31, 197, 84, 157, 252, 254, 11, 100, 157, 250, 63, 170, 106, 206, 107, 124, 212, 45, 111, 107, 9, 219, 200, 177, 0, 240, 143, 156, 44, 207];
+ $cek = [
+ 4,
+ 211,
+ 31,
+ 197,
+ 84,
+ 157,
+ 252,
+ 254,
+ 11,
+ 100,
+ 157,
+ 250,
+ 63,
+ 170,
+ 106,
+ 206,
+ 107,
+ 124,
+ 212,
+ 45,
+ 111,
+ 107,
+ 9,
+ 219,
+ 200,
+ 177,
+ 0,
+ 240,
+ 143,
+ 156,
+ 44,
+ 207,
+ ];
foreach ($cek as $key => $value) {
$cek[$key] = str_pad(dechex($value), 2, '0', STR_PAD_LEFT);
}
$cek = hex2bin(implode('', $cek));
- $from_specification = Base64UrlSafe::decode('UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKxGHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPhcCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A');
+ $from_specification = Base64UrlSafe::decode(
+ 'UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKxGHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPhcCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A'
+ );
$rsa1_5 = new RSA15();
$additionalHeader = [];
$encrypted = $rsa1_5->encryptKey($jwk, $cek, $header, $additionalHeader);
- static::assertEquals($cek, $rsa1_5->decryptKey($jwk, $encrypted, $header));
- static::assertEquals($cek, $rsa1_5->decryptKey($jwk, $from_specification, $header));
+ static::assertSame($cek, $rsa1_5->decryptKey($jwk, $encrypted, $header));
+ static::assertSame($cek, $rsa1_5->decryptKey($jwk, $from_specification, $header));
}
/**
@@ -107,20 +132,55 @@ public function rSAOAEPEncryptionAndDecryption(): void
'qi' => 'VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY',
]);
- $cek = [177, 161, 244, 128, 84, 143, 225, 115, 63, 180, 3, 255, 107, 154, 212, 246, 138, 7, 110, 91, 112, 46, 34, 105, 47, 130, 203, 46, 122, 234, 64, 252];
+ $cek = [
+ 177,
+ 161,
+ 244,
+ 128,
+ 84,
+ 143,
+ 225,
+ 115,
+ 63,
+ 180,
+ 3,
+ 255,
+ 107,
+ 154,
+ 212,
+ 246,
+ 138,
+ 7,
+ 110,
+ 91,
+ 112,
+ 46,
+ 34,
+ 105,
+ 47,
+ 130,
+ 203,
+ 46,
+ 122,
+ 234,
+ 64,
+ 252,
+ ];
foreach ($cek as $key => $value) {
$cek[$key] = str_pad(dechex($value), 2, '0', STR_PAD_LEFT);
}
$cek = hex2bin(implode('', $cek));
- $from_specification = Base64UrlSafe::decode('OKOawDo13gRp2ojaHV7LFpZcgV7T6DVZKTyKOMTYUmKoTCVJRgckCL9kiMT03JGeipsEdY3mx_etLbbWSrFr05kLzcSr4qKAq7YN7e9jwQRb23nfa6c9d-StnImGyFDbSv04uVuxIp5Zms1gNxKKK2Da14B8S4rzVRltdYwam_lDp5XnZAYpQdb76FdIKLaVmqgfwX7XWRxv2322i-vDxRfqNzo_tETKzpVLzfiwQyeyPGLBIO56YJ7eObdv0je81860ppamavo35UgoRdbYaBcoh9QcfylQr66oc6vFWXRcZ_ZT2LawVCWTIy3brGPi6UklfCpIMfIjf7iGdXKHzg');
+ $from_specification = Base64UrlSafe::decode(
+ 'OKOawDo13gRp2ojaHV7LFpZcgV7T6DVZKTyKOMTYUmKoTCVJRgckCL9kiMT03JGeipsEdY3mx_etLbbWSrFr05kLzcSr4qKAq7YN7e9jwQRb23nfa6c9d-StnImGyFDbSv04uVuxIp5Zms1gNxKKK2Da14B8S4rzVRltdYwam_lDp5XnZAYpQdb76FdIKLaVmqgfwX7XWRxv2322i-vDxRfqNzo_tETKzpVLzfiwQyeyPGLBIO56YJ7eObdv0je81860ppamavo35UgoRdbYaBcoh9QcfylQr66oc6vFWXRcZ_ZT2LawVCWTIy3brGPi6UklfCpIMfIjf7iGdXKHzg'
+ );
$rsa_oaep = new RSAOAEP();
$additionalHeader = [];
$encrypted = $rsa_oaep->encryptKey($jwk, $cek, $header, $additionalHeader);
- static::assertEquals($cek, $rsa_oaep->decryptKey($jwk, $encrypted, $header));
- static::assertEquals($cek, $rsa_oaep->decryptKey($jwk, $from_specification, $header));
+ static::assertSame($cek, $rsa_oaep->decryptKey($jwk, $encrypted, $header));
+ static::assertSame($cek, $rsa_oaep->decryptKey($jwk, $from_specification, $header));
}
/**
@@ -143,7 +203,40 @@ public function rSAOAEP256EncryptionAndDecryption(): void
'qi' => 'VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY',
]);
- $cek = [177, 161, 244, 128, 84, 143, 225, 115, 63, 180, 3, 255, 107, 154, 212, 246, 138, 7, 110, 91, 112, 46, 34, 105, 47, 130, 203, 46, 122, 234, 64, 252];
+ $cek = [
+ 177,
+ 161,
+ 244,
+ 128,
+ 84,
+ 143,
+ 225,
+ 115,
+ 63,
+ 180,
+ 3,
+ 255,
+ 107,
+ 154,
+ 212,
+ 246,
+ 138,
+ 7,
+ 110,
+ 91,
+ 112,
+ 46,
+ 34,
+ 105,
+ 47,
+ 130,
+ 203,
+ 46,
+ 122,
+ 234,
+ 64,
+ 252,
+ ];
foreach ($cek as $key => $value) {
$cek[$key] = str_pad(dechex($value), 2, '0', STR_PAD_LEFT);
}
@@ -153,7 +246,7 @@ public function rSAOAEP256EncryptionAndDecryption(): void
$additionalHeader = [];
$encrypted = $rsa_oaep_256->encryptKey($jwk, $cek, $header, $additionalHeader);
- static::assertEquals($cek, $rsa_oaep_256->decryptKey($jwk, $encrypted, $header));
+ static::assertSame($cek, $rsa_oaep_256->decryptKey($jwk, $encrypted, $header));
}
/**
@@ -163,15 +256,21 @@ public function rSAOAEP256EncryptionAndDecryption(): void
*/
public function loadJWK1(): void
{
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA-OAEP'], ['A256GCM'], ['DEF']);
-
- $loaded = $this->getJWESerializerManager()->unserialize('eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ.OKOawDo13gRp2ojaHV7LFpZcgV7T6DVZKTyKOMTYUmKoTCVJRgckCL9kiMT03JGeipsEdY3mx_etLbbWSrFr05kLzcSr4qKAq7YN7e9jwQRb23nfa6c9d-StnImGyFDbSv04uVuxIp5Zms1gNxKKK2Da14B8S4rzVRltdYwam_lDp5XnZAYpQdb76FdIKLaVmqgfwX7XWRxv2322i-vDxRfqNzo_tETKzpVLzfiwQyeyPGLBIO56YJ7eObdv0je81860ppamavo35UgoRdbYaBcoh9QcfylQr66oc6vFWXRcZ_ZT2LawVCWTIy3brGPi6UklfCpIMfIjf7iGdXKHzg.48V1_ALb6US04U3b.5eym8TW_c8SuK0ltJ3rpYIzOeDQz7TALvtu6UG9oMo4vpzs9tX_EFShS8iB7j6jiSdiwkIr3ajwQzaBtQD_A.XFBoMYUZodetZdvTiFvSkQ');
-
- static::assertEquals('RSA-OAEP', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A256GCM', $loaded->getSharedProtectedHeaderParameter('enc'));
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA-OAEP'], ['A256GCM'], ['DEF'])
+ ;
+
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize(
+ 'eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ.OKOawDo13gRp2ojaHV7LFpZcgV7T6DVZKTyKOMTYUmKoTCVJRgckCL9kiMT03JGeipsEdY3mx_etLbbWSrFr05kLzcSr4qKAq7YN7e9jwQRb23nfa6c9d-StnImGyFDbSv04uVuxIp5Zms1gNxKKK2Da14B8S4rzVRltdYwam_lDp5XnZAYpQdb76FdIKLaVmqgfwX7XWRxv2322i-vDxRfqNzo_tETKzpVLzfiwQyeyPGLBIO56YJ7eObdv0je81860ppamavo35UgoRdbYaBcoh9QcfylQr66oc6vFWXRcZ_ZT2LawVCWTIy3brGPi6UklfCpIMfIjf7iGdXKHzg.48V1_ALb6US04U3b.5eym8TW_c8SuK0ltJ3rpYIzOeDQz7TALvtu6UG9oMo4vpzs9tX_EFShS8iB7j6jiSdiwkIr3ajwQzaBtQD_A.XFBoMYUZodetZdvTiFvSkQ'
+ )
+ ;
+
+ static::assertSame('RSA-OAEP', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A256GCM', $loaded->getSharedProtectedHeaderParameter('enc'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
- static::assertEquals('The true sign of intelligence is not knowledge but imagination.', $loaded->getPayload());
+ static::assertSame('The true sign of intelligence is not knowledge but imagination.', $loaded->getPayload());
}
/**
@@ -181,13 +280,19 @@ public function loadJWK1(): void
*/
public function loadJWK2(): void
{
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA1_5'], ['A128CBC-HS256'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA1_5'], ['A128CBC-HS256'], ['DEF'])
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize('eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKxGHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPhcCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A.AxY8DCtDaGlsbGljb3RoZQ.KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY.9hH0vgRfYgPnAHOd8stkvw');
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize(
+ 'eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKxGHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPhcCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A.AxY8DCtDaGlsbGljb3RoZQ.KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY.9hH0vgRfYgPnAHOd8stkvw'
+ )
+ ;
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getPrivateKeySet(), 0));
- static::assertEquals('Live long and prosper.', $loaded->getPayload());
+ static::assertSame('Live long and prosper.', $loaded->getPayload());
}
/**
@@ -197,127 +302,139 @@ public function loadJWK2(): void
*/
public function loadJWK3(): void
{
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['A128KW'], ['A128CBC-HS256'], ['DEF']);
-
- $loaded = $this->getJWESerializerManager()->unserialize('eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.6KB707dM9YTIgHtLvtgWQ8mKwboJW3of9locizkDTHzBC2IlrT1oOQ.AxY8DCtDaGlsbGljb3RoZQ.KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY.U0m_YmjN04DJvceFICbCVQ');
-
- static::assertEquals('A128KW', $loaded->getSharedProtectedHeaderParameter('alg'));
- static::assertEquals('A128CBC-HS256', $loaded->getSharedProtectedHeaderParameter('enc'));
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['A128KW'], ['A128CBC-HS256'], ['DEF'])
+ ;
+
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize(
+ 'eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.6KB707dM9YTIgHtLvtgWQ8mKwboJW3of9locizkDTHzBC2IlrT1oOQ.AxY8DCtDaGlsbGljb3RoZQ.KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY.U0m_YmjN04DJvceFICbCVQ'
+ )
+ ;
+
+ static::assertSame('A128KW', $loaded->getSharedProtectedHeaderParameter('alg'));
+ static::assertSame('A128CBC-HS256', $loaded->getSharedProtectedHeaderParameter('enc'));
static::assertNull($loaded->getPayload());
static::assertTrue($jweDecrypter->decryptUsingKeySet($loaded, $this->getSymmetricKeySet(), 0));
- static::assertEquals('Live long and prosper.', $loaded->getPayload());
+ static::assertSame('Live long and prosper.', $loaded->getPayload());
}
private function getPrivateKeySet(): JWKSet
{
- $keys = ['keys' => [
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'weNJy2HscCSM6AEDTDg04biOvhFhyyWvOHQfeF_PxMQ',
- 'y' => 'e8lnCO-AlStT-NJVX-crhB7QRYhiix03illJOVAOyck',
- 'd' => 'VEmDZpDXXK8p8N0Cndsxs924q6nS1RXFASRl6BfUqdw',
+ $keys = [
+ 'keys' => [
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'weNJy2HscCSM6AEDTDg04biOvhFhyyWvOHQfeF_PxMQ',
+ 'y' => 'e8lnCO-AlStT-NJVX-crhB7QRYhiix03illJOVAOyck',
+ 'd' => 'VEmDZpDXXK8p8N0Cndsxs924q6nS1RXFASRl6BfUqdw',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'gI0GAILBdu7T53akrFmMyGcsF3n5dO7MmwNBHKW5SV0',
+ 'y' => 'SLW_xSffzlPWrHEVI30DHM_4egVwt3NQqeUD7nMFpps',
+ 'd' => '0_NxaRPUMQoAJt50Gz8YiTr8gRTwyEaCumd-MToTmIo',
+ ],
+ [
+ 'kid' => '2010-12-29',
+ 'kty' => 'RSA',
+ 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
+ 'e' => 'AQAB',
+ 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
+ ],
+ [
+ 'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
+ 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ 'd' => 'jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI',
+ ],
+ [
+ 'kid' => '123456789',
+ 'kty' => 'RSA',
+ 'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
+ 'e' => 'AQAB',
+ 'p' => '5BGU1c7af_5sFyfsa-onIJgo5BZu8uHvz3Uyb8OA0a-G9UPO1ShLYjX0wUfhZcFB7fwPtgmmYAN6wKGVce9eMAbX4PliPk3r-BcpZuPKkuLk_wFvgWAQ5Hqw2iEuwXLV0_e8c2gaUt_hyMC5-nFc4v0Bmv6NT6Pfry-UrK3BKWc',
+ 'd' => 'Kp0KuZwCZGL1BLgsVM-N0edMNitl9wN5Hf2WOYDoIqOZNAEKzdJuenIMhITJjRFUX05GVL138uyp2js_pqDdY9ipA7rAKThwGuDdNphZHech9ih3DGEPXs-YpmHqvIbCd3GoGm38MKwxYkddEpFnjo8rKna1_BpJthrFxjDRhw9DxJBycOdH2yWTyp62ZENPvneK40H2a57W4QScTgfecZqD59m2fGUaWaX5uUmIxaEmtGoJnd9RE4oywKhgN7_TK7wXRlqA4UoRPiH2ACrdU-_cLQL9Jc0u0GqZJK31LDbOeN95QgtSCc72k3Vtzy3CrVpp5TAA67s1Gj9Skn-CAQ',
+ 'q' => 'zPD-B-nrngwF-O99BHvb47XGKR7ON8JCI6JxavzIkusMXCB8rMyYW8zLs68L8JLAzWZ34oMq0FPUnysBxc5nTF8Nb4BZxTZ5-9cHfoKrYTI3YWsmVW2FpCJFEjMs4NXZ28PBkS9b4zjfS2KhNdkmCeOYU0tJpNfwmOTI90qeUdU',
+ 'dp' => 'aJrzw_kjWK9uDlTeaES2e4muv6bWbopYfrPHVWG7NPGoGdhnBnd70-jhgMEiTZSNU8VXw2u7prAR3kZ-kAp1DdwlqedYOzFsOJcPA0UZhbORyrBy30kbll_7u6CanFm6X4VyJxCpejd7jKNw6cCTFP1sfhWg5NVJ5EUTkPwE66M',
+ 'dq' => 'Swz1-m_vmTFN_pu1bK7vF7S5nNVrL4A0OFiEsGliCmuJWzOKdL14DiYxctvnw3H6qT2dKZZfV2tbse5N9-JecdldUjfuqAoLIe7dD7dKi42YOlTC9QXmqvTh1ohnJu8pmRFXEZQGUm_BVhoIb2_WPkjav6YSkguCUHt4HRd2YwE',
+ 'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
+ 'e' => 'AQAB',
+ 'd' => 'kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-WY5NWV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD93Dt62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghkqDp0Vqj3kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vlt3UVe4WO3JkJOzlpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-VFs3VSndVTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ',
+ 'p' => '1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-SWxkbkmoEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lffNn03IXqWF5MDFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0',
+ 'q' => 'wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBmUDdaDYVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aXIWxKwd4gvxFImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc',
+ 'dp' => 'ZK-YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KLhMXvo-uz-KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827rnpZzAJKpdhWAgqrXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE',
+ 'dq' => 'Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCjywcMlYYg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDBUfCAiJVeESOjJDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis',
+ 'qi' => 'VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
+ 'e' => 'AQAB',
+ 'd' => 'VFCWOqXr8nvZNyaaJLXdnNPXZKRaWCjkU5Q2egQQpTBMwhprMzWzpR8Sxq1OPThh_J6MUD8Z35wky9b8eEO0pwNS8xlh1lOFRRBoNqDIKVOku0aZb-rynq8cxjDTLZQ6Fz7jSjR1Klop-YKaUHc9GsEofQqYruPhzSA-QgajZGPbE_0ZaVDJHfyd7UUBUKunFMScbflYAAOYJqVIVwaYR5zWEEceUjNnTNo_CVSj-VvXLO5VZfCUAVLgW4dpf1SrtZjSt34YLsRarSb127reG_DUwg9Ch-KyvjT1SkHgUWRVGcyly7uvVGRSDwsXypdrNinPA4jlhoNdizK2zF2CWQ',
+ 'p' => '9gY2w6I6S6L0juEKsbeDAwpd9WMfgqFoeA9vEyEUuk4kLwBKcoe1x4HG68ik918hdDSE9vDQSccA3xXHOAFOPJ8R9EeIAbTi1VwBYnbTp87X-xcPWlEPkrdoUKW60tgs1aNd_Nnc9LEVVPMS390zbFxt8TN_biaBgelNgbC95sM',
+ 'q' => 'uKlCKvKv_ZJMVcdIs5vVSU_6cPtYI1ljWytExV_skstvRSNi9r66jdd9-yBhVfuG4shsp2j7rGnIio901RBeHo6TPKWVVykPu1iYhQXw1jIABfw-MVsN-3bQ76WLdt2SDxsHs7q7zPyUyHXmps7ycZ5c72wGkUwNOjYelmkiNS0',
+ 'dp' => 'w0kZbV63cVRvVX6yk3C8cMxo2qCM4Y8nsq1lmMSYhG4EcL6FWbX5h9yuvngs4iLEFk6eALoUS4vIWEwcL4txw9LsWH_zKI-hwoReoP77cOdSL4AVcraHawlkpyd2TWjE5evgbhWtOxnZee3cXJBkAi64Ik6jZxbvk-RR3pEhnCs',
+ 'dq' => 'o_8V14SezckO6CNLKs_btPdFiO9_kC1DsuUTd2LAfIIVeMZ7jn1Gus_Ff7B7IVx3p5KuBGOVF8L-qifLb6nQnLysgHDh132NDioZkhH7mI7hPG-PYE_odApKdnqECHWw0J-F0JWnUd6D2B_1TvF9mXA2Qx-iGYn8OVV1Bsmp6qU',
+ 'qi' => 'eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlCtUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZB9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
+ 'e' => 'AQAB',
+ 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
+ 'p' => '4BzEEOtIpmVdVEZNCqS7baC4crd0pqnRH_5IB3jw3bcxGn6QLvnEtfdUdiYrqBdss1l58BQ3KhooKeQTa9AB0Hw_Py5PJdTJNPY8cQn7ouZ2KKDcmnPGBY5t7yLc1QlQ5xHdwW1VhvKn-nXqhJTBgIPgtldC-KDV5z-y2XDwGUc',
+ 'q' => 'uQPEfgmVtjL0Uyyx88GZFF1fOunH3-7cepKmtH4pxhtCoHqpWmT8YAmZxaewHgHAjLYsp1ZSe7zFYHj7C6ul7TjeLQeZD_YwD66t62wDmpe_HlB-TnBA-njbglfIsRLtXlnDzQkv5dTltRJ11BKBBypeeF6689rjcJIDEz9RWdc',
+ 'dp' => 'BwKfV3Akq5_MFZDFZCnW-wzl-CCo83WoZvnLQwCTeDv8uzluRSnm71I3QCLdhrqE2e9YkxvuxdBfpT_PI7Yz-FOKnu1R6HsJeDCjn12Sk3vmAktV2zb34MCdy7cpdTh_YVr7tss2u6vneTwrA86rZtu5Mbr1C1XsmvkxHQAdYo0',
+ 'dq' => 'h_96-mK1R_7glhsum81dZxjTnYynPbZpHziZjeeHcXYsXaaMwkOlODsWa7I9xXDoRwbKgB719rrmI2oKr6N3Do9U0ajaHF-NKJnwgjMd2w9cjz3_-kyNlxAr2v4IKhGNpmM5iIgOS1VZnOZ68m6_pbLBSp3nssTdlqvd0tIiTHU',
+ 'qi' => 'IYd7DHOhrWvxkwPQsRM2tOgrjbcrfvtQJipd-DlcxyVuuM9sQLdgjVk2oy26F0EmpScGLq2MowX7fhd_QJQ3ydy5cY7YIBi87w93IKLEdfnbJtoOPLUW0ITrJReOgo1cq9SbsxYawBgfp_gh6A5603k2-ZQwVK0JKSHuLFkuQ3U',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-521',
+ 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
+ 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
+ 'd' => 'AY5pb7A0UFiB3RELSD64fTLOSV_jazdF7fLYyuTw8lOfRhWg6Y6rUrPAxerEzgdRhajnu0ferB0d53vM9mE15j2C',
+ ],
],
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'gI0GAILBdu7T53akrFmMyGcsF3n5dO7MmwNBHKW5SV0',
- 'y' => 'SLW_xSffzlPWrHEVI30DHM_4egVwt3NQqeUD7nMFpps',
- 'd' => '0_NxaRPUMQoAJt50Gz8YiTr8gRTwyEaCumd-MToTmIo',
- ],
- [
- 'kid' => '2010-12-29',
- 'kty' => 'RSA',
- 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
- 'e' => 'AQAB',
- 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
- ],
- [
- 'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
- 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
- 'd' => 'jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI',
- ],
- [
- 'kid' => '123456789',
- 'kty' => 'RSA',
- 'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
- 'e' => 'AQAB',
- 'p' => '5BGU1c7af_5sFyfsa-onIJgo5BZu8uHvz3Uyb8OA0a-G9UPO1ShLYjX0wUfhZcFB7fwPtgmmYAN6wKGVce9eMAbX4PliPk3r-BcpZuPKkuLk_wFvgWAQ5Hqw2iEuwXLV0_e8c2gaUt_hyMC5-nFc4v0Bmv6NT6Pfry-UrK3BKWc',
- 'd' => 'Kp0KuZwCZGL1BLgsVM-N0edMNitl9wN5Hf2WOYDoIqOZNAEKzdJuenIMhITJjRFUX05GVL138uyp2js_pqDdY9ipA7rAKThwGuDdNphZHech9ih3DGEPXs-YpmHqvIbCd3GoGm38MKwxYkddEpFnjo8rKna1_BpJthrFxjDRhw9DxJBycOdH2yWTyp62ZENPvneK40H2a57W4QScTgfecZqD59m2fGUaWaX5uUmIxaEmtGoJnd9RE4oywKhgN7_TK7wXRlqA4UoRPiH2ACrdU-_cLQL9Jc0u0GqZJK31LDbOeN95QgtSCc72k3Vtzy3CrVpp5TAA67s1Gj9Skn-CAQ',
- 'q' => 'zPD-B-nrngwF-O99BHvb47XGKR7ON8JCI6JxavzIkusMXCB8rMyYW8zLs68L8JLAzWZ34oMq0FPUnysBxc5nTF8Nb4BZxTZ5-9cHfoKrYTI3YWsmVW2FpCJFEjMs4NXZ28PBkS9b4zjfS2KhNdkmCeOYU0tJpNfwmOTI90qeUdU',
- 'dp' => 'aJrzw_kjWK9uDlTeaES2e4muv6bWbopYfrPHVWG7NPGoGdhnBnd70-jhgMEiTZSNU8VXw2u7prAR3kZ-kAp1DdwlqedYOzFsOJcPA0UZhbORyrBy30kbll_7u6CanFm6X4VyJxCpejd7jKNw6cCTFP1sfhWg5NVJ5EUTkPwE66M',
- 'dq' => 'Swz1-m_vmTFN_pu1bK7vF7S5nNVrL4A0OFiEsGliCmuJWzOKdL14DiYxctvnw3H6qT2dKZZfV2tbse5N9-JecdldUjfuqAoLIe7dD7dKi42YOlTC9QXmqvTh1ohnJu8pmRFXEZQGUm_BVhoIb2_WPkjav6YSkguCUHt4HRd2YwE',
- 'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
- 'e' => 'AQAB',
- 'd' => 'kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-WY5NWV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD93Dt62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghkqDp0Vqj3kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vlt3UVe4WO3JkJOzlpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-VFs3VSndVTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ',
- 'p' => '1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-SWxkbkmoEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lffNn03IXqWF5MDFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0',
- 'q' => 'wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBmUDdaDYVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aXIWxKwd4gvxFImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc',
- 'dp' => 'ZK-YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KLhMXvo-uz-KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827rnpZzAJKpdhWAgqrXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE',
- 'dq' => 'Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCjywcMlYYg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDBUfCAiJVeESOjJDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis',
- 'qi' => 'VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
- 'e' => 'AQAB',
- 'd' => 'VFCWOqXr8nvZNyaaJLXdnNPXZKRaWCjkU5Q2egQQpTBMwhprMzWzpR8Sxq1OPThh_J6MUD8Z35wky9b8eEO0pwNS8xlh1lOFRRBoNqDIKVOku0aZb-rynq8cxjDTLZQ6Fz7jSjR1Klop-YKaUHc9GsEofQqYruPhzSA-QgajZGPbE_0ZaVDJHfyd7UUBUKunFMScbflYAAOYJqVIVwaYR5zWEEceUjNnTNo_CVSj-VvXLO5VZfCUAVLgW4dpf1SrtZjSt34YLsRarSb127reG_DUwg9Ch-KyvjT1SkHgUWRVGcyly7uvVGRSDwsXypdrNinPA4jlhoNdizK2zF2CWQ',
- 'p' => '9gY2w6I6S6L0juEKsbeDAwpd9WMfgqFoeA9vEyEUuk4kLwBKcoe1x4HG68ik918hdDSE9vDQSccA3xXHOAFOPJ8R9EeIAbTi1VwBYnbTp87X-xcPWlEPkrdoUKW60tgs1aNd_Nnc9LEVVPMS390zbFxt8TN_biaBgelNgbC95sM',
- 'q' => 'uKlCKvKv_ZJMVcdIs5vVSU_6cPtYI1ljWytExV_skstvRSNi9r66jdd9-yBhVfuG4shsp2j7rGnIio901RBeHo6TPKWVVykPu1iYhQXw1jIABfw-MVsN-3bQ76WLdt2SDxsHs7q7zPyUyHXmps7ycZ5c72wGkUwNOjYelmkiNS0',
- 'dp' => 'w0kZbV63cVRvVX6yk3C8cMxo2qCM4Y8nsq1lmMSYhG4EcL6FWbX5h9yuvngs4iLEFk6eALoUS4vIWEwcL4txw9LsWH_zKI-hwoReoP77cOdSL4AVcraHawlkpyd2TWjE5evgbhWtOxnZee3cXJBkAi64Ik6jZxbvk-RR3pEhnCs',
- 'dq' => 'o_8V14SezckO6CNLKs_btPdFiO9_kC1DsuUTd2LAfIIVeMZ7jn1Gus_Ff7B7IVx3p5KuBGOVF8L-qifLb6nQnLysgHDh132NDioZkhH7mI7hPG-PYE_odApKdnqECHWw0J-F0JWnUd6D2B_1TvF9mXA2Qx-iGYn8OVV1Bsmp6qU',
- 'qi' => 'eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlCtUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZB9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
- 'e' => 'AQAB',
- 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
- 'p' => '4BzEEOtIpmVdVEZNCqS7baC4crd0pqnRH_5IB3jw3bcxGn6QLvnEtfdUdiYrqBdss1l58BQ3KhooKeQTa9AB0Hw_Py5PJdTJNPY8cQn7ouZ2KKDcmnPGBY5t7yLc1QlQ5xHdwW1VhvKn-nXqhJTBgIPgtldC-KDV5z-y2XDwGUc',
- 'q' => 'uQPEfgmVtjL0Uyyx88GZFF1fOunH3-7cepKmtH4pxhtCoHqpWmT8YAmZxaewHgHAjLYsp1ZSe7zFYHj7C6ul7TjeLQeZD_YwD66t62wDmpe_HlB-TnBA-njbglfIsRLtXlnDzQkv5dTltRJ11BKBBypeeF6689rjcJIDEz9RWdc',
- 'dp' => 'BwKfV3Akq5_MFZDFZCnW-wzl-CCo83WoZvnLQwCTeDv8uzluRSnm71I3QCLdhrqE2e9YkxvuxdBfpT_PI7Yz-FOKnu1R6HsJeDCjn12Sk3vmAktV2zb34MCdy7cpdTh_YVr7tss2u6vneTwrA86rZtu5Mbr1C1XsmvkxHQAdYo0',
- 'dq' => 'h_96-mK1R_7glhsum81dZxjTnYynPbZpHziZjeeHcXYsXaaMwkOlODsWa7I9xXDoRwbKgB719rrmI2oKr6N3Do9U0ajaHF-NKJnwgjMd2w9cjz3_-kyNlxAr2v4IKhGNpmM5iIgOS1VZnOZ68m6_pbLBSp3nssTdlqvd0tIiTHU',
- 'qi' => 'IYd7DHOhrWvxkwPQsRM2tOgrjbcrfvtQJipd-DlcxyVuuM9sQLdgjVk2oy26F0EmpScGLq2MowX7fhd_QJQ3ydy5cY7YIBi87w93IKLEdfnbJtoOPLUW0ITrJReOgo1cq9SbsxYawBgfp_gh6A5603k2-ZQwVK0JKSHuLFkuQ3U',
- ],
- [
- 'kty' => 'EC',
- 'crv' => 'P-521',
- 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
- 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
- 'd' => 'AY5pb7A0UFiB3RELSD64fTLOSV_jazdF7fLYyuTw8lOfRhWg6Y6rUrPAxerEzgdRhajnu0ferB0d53vM9mE15j2C',
- ],
- ]];
+ ];
return JWKSet::createFromKeyData($keys);
}
private function getSymmetricKeySet(): JWKSet
{
- $keys = ['keys' => [
- [
- 'kid' => 'DIR_1',
- 'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded(hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F')),
- ],
- [
- 'kty' => 'oct',
- 'k' => 'f5aN5V6iihwQVqP-tPNNtkIJNCwUb9-JukCIKkF0rNfxqxA771RJynYAT2xtzAP0MYaR7U5fMP_wvbRQq5l38Q',
- ],
- [
- 'kty' => 'oct',
- 'k' => 'GawgguFyGrWKav7AX4VKUg',
- ],
- [
- 'kty' => 'oct',
- 'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
+ $keys = [
+ 'keys' => [
+ [
+ 'kid' => 'DIR_1',
+ 'kty' => 'oct',
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F')
+ ),
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'f5aN5V6iihwQVqP-tPNNtkIJNCwUb9-JukCIKkF0rNfxqxA771RJynYAT2xtzAP0MYaR7U5fMP_wvbRQq5l38Q',
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'GawgguFyGrWKav7AX4VKUg',
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
+ ],
],
- ]];
+ ];
return JWKSet::createFromKeyData($keys);
}
diff --git a/tests/Component/Encryption/RSAKeyWithoutAllPrimesTest.php b/tests/Component/Encryption/RSAKeyWithoutAllPrimesTest.php
index 3eddf8a9..f2957423 100644
--- a/tests/Component/Encryption/RSAKeyWithoutAllPrimesTest.php
+++ b/tests/Component/Encryption/RSAKeyWithoutAllPrimesTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Encryption;
use Jose\Component\Core\JWK;
@@ -19,12 +10,9 @@
/**
* Class RSAKeyWithoutAllPrimesTest.
*
- * @group RSA2
- * @group unit
- *
* @internal
*/
-class RSAKeyWithoutAllPrimesTest extends EncryptionTest
+final class RSAKeyWithoutAllPrimesTest extends EncryptionTest
{
/**
* @dataProvider dataEncryptionAlgorithms
@@ -35,20 +23,34 @@ public function encryptionAlgorithms(string $encryption_algorithm): void
{
$key = $this->getPrivateKey();
- $claims = JsonConverter::encode(['foo' => 'bar']);
+ $claims = JsonConverter::encode([
+ 'foo' => 'bar',
+ ]);
- $jweBuilder = $this->getJWEBuilderFactory()->create([$encryption_algorithm], ['A256GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create([$encryption_algorithm], ['A256GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create([$encryption_algorithm], ['A256GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create([$encryption_algorithm], ['A256GCM'], ['DEF'])
+ ;
$jwt = $jweBuilder
- ->create()->withPayload($claims)
- ->withSharedProtectedHeader(['alg' => $encryption_algorithm, 'enc' => 'A256GCM'])
+ ->create()
+ ->withPayload($claims)
+ ->withSharedProtectedHeader([
+ 'alg' => $encryption_algorithm,
+ 'enc' => 'A256GCM',
+ ])
->addRecipient($key)
->build()
;
- $jwt = $this->getJWESerializerManager()->serialize('jwe_compact', $jwt, 0);
+ $jwt = $this->getJWESerializerManager()
+ ->serialize('jwe_compact', $jwt, 0)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwt);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwt)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded, $key, 0));
}
@@ -62,39 +64,46 @@ public function encryptionAlgorithmsWithMinimalRsaKey(string $encryption_algorit
{
$key = $this->getMinimalPrivateKey();
- $claims = JsonConverter::encode(['foo' => 'bar']);
+ $claims = JsonConverter::encode([
+ 'foo' => 'bar',
+ ]);
- $jweBuilder = $this->getJWEBuilderFactory()->create([$encryption_algorithm], ['A256GCM'], ['DEF']);
- $jweDecrypter = $this->getJWEDecrypterFactory()->create([$encryption_algorithm], ['A256GCM'], ['DEF']);
+ $jweBuilder = $this->getJWEBuilderFactory()
+ ->create([$encryption_algorithm], ['A256GCM'], ['DEF'])
+ ;
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create([$encryption_algorithm], ['A256GCM'], ['DEF'])
+ ;
$jwt = $jweBuilder
- ->create()->withPayload($claims)
- ->withSharedProtectedHeader(['alg' => $encryption_algorithm, 'enc' => 'A256GCM'])
+ ->create()
+ ->withPayload($claims)
+ ->withSharedProtectedHeader([
+ 'alg' => $encryption_algorithm,
+ 'enc' => 'A256GCM',
+ ])
->addRecipient($key)
->build()
;
- $jwt = $this->getJWESerializerManager()->serialize('jwe_compact', $jwt, 0);
+ $jwt = $this->getJWESerializerManager()
+ ->serialize('jwe_compact', $jwt, 0)
+ ;
- $loaded = $this->getJWESerializerManager()->unserialize($jwt);
+ $loaded = $this->getJWESerializerManager()
+ ->unserialize($jwt)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded, $key, 0));
}
public function dataEncryptionAlgorithms(): array
{
- return [
- ['RSA1_5'],
- ['RSA-OAEP'],
- ['RSA-OAEP-256'],
- ];
+ return [['RSA1_5'], ['RSA-OAEP'], ['RSA-OAEP-256']];
}
public function dataEncryptionAlgorithmsWithSimpleKey(): array
{
- return [
- ['RSA-OAEP'],
- ['RSA-OAEP-256'],
- ];
+ return [['RSA-OAEP'], ['RSA-OAEP-256']];
}
private function getPrivateKey(): JWK
diff --git a/tests/Component/KeyManagement/CertificateTest.php b/tests/Component/KeyManagement/CertificateTest.php
index dd4efc23..a227ea46 100644
--- a/tests/Component/KeyManagement/CertificateTest.php
+++ b/tests/Component/KeyManagement/CertificateTest.php
@@ -2,35 +2,23 @@
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\Tests\Component\KeyManagement;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Component\KeyManagement\JWKFactory;
use Jose\Component\KeyManagement\KeyConverter\KeyConverter;
+use const PHP_EOL;
use PHPUnit\Framework\TestCase;
/**
* @see http://fm4dd.com/openssl/certexamples.htm
*
- * @group Certificate
- * @group unit
- *
* @internal
*/
-class CertificateTest extends TestCase
+final class CertificateTest extends TestCase
{
/**
- * @covers \Jose\Component\KeyManagement\KeyConverter\KeyConverter
* @test
*/
public function fileNotFound(): void
@@ -42,24 +30,22 @@ public function fileNotFound(): void
}
/**
- * @covers \Jose\Component\KeyManagement\KeyConverter\KeyConverter
* @test
*/
public function fileNotValid(): void
{
$this->expectException(InvalidArgumentException::class);
- KeyConverter::loadKeyFromCertificateFile(__DIR__.__FILE__);
+ KeyConverter::loadKeyFromCertificateFile(__DIR__ . __FILE__);
}
/**
- * @covers \Jose\Component\KeyManagement\KeyConverter\KeyConverter
* @test
*/
public function certificateConversion(): void
{
- $details = KeyConverter::loadFromKeyFile(__DIR__.'/Keys/RSA/private.encrypted.key', 'tests');
- static::assertEquals($details, [
+ $details = KeyConverter::loadFromKeyFile(__DIR__ . '/Keys/RSA/private.encrypted.key', 'tests');
+ static::assertEqualsCanonicalizing($details, [
'kty' => 'RSA',
'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
'e' => 'AQAB',
@@ -71,8 +57,8 @@ public function certificateConversion(): void
'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
]);
- $details = KeyConverter::loadFromKeyFile(__DIR__.'/Keys/RSA/public.key');
- static::assertEquals($details, [
+ $details = KeyConverter::loadFromKeyFile(__DIR__ . '/Keys/RSA/public.key');
+ static::assertSame($details, [
'kty' => 'RSA',
'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
'e' => 'AQAB',
@@ -80,13 +66,12 @@ public function certificateConversion(): void
}
/**
- * @covers \Jose\Component\KeyManagement\KeyConverter\KeyConverter
* @test
*/
public function certificateConversionPkcs8(): void
{
- $details = KeyConverter::loadFromKeyFile(__DIR__.'/Keys/RSA/pkcs8.private.encrypted.key', 'tests');
- static::assertEquals($details, [
+ $details = KeyConverter::loadFromKeyFile(__DIR__ . '/Keys/RSA/pkcs8.private.encrypted.key', 'tests');
+ static::assertSame($details, [
'kty' => 'RSA',
'n' => 'w6o04pb9gWvXwne6hNWYMjEqIVpKxsPSZbZWPX1TvhBnHwxj0WV6i9jiuc0zoelBf9nNtfWSS-87XcpLILh0N5UuVwx1HAuD3oBeDw0JereA8VUHeyNJlCle8LaeI0zx4v_YEoOv7sZ4bOx3sLgDSp6rp5N0mnD0oSt6p_bsk-TvCnNW4-1ip8tCwfBCNDpNeX9SViJ3Msy2WmOLHxtdc32r1SurO6WK7mbmqSCwnskcf5ylKupApE_1JO_EwUAEkEJG_RFQhBUGeQitrmdm_wcP0-I4qb23q__DC31CnV1UU4VkpqjTmzbnQdeoXMip9Mvv2S-1Xh1ag7x1tUpxTutCFn3lRXHydzzRPf5SojRcPA9fZWdyLVvj_iFPj0k-Lh5Ru8vA5Qq01OuvIdQDLJkhgVcvlqtycBXE2QqqdzNGhfv-rLjt_GzL-lTotS7cvocueA3gjSOQQiI37YEaI_hPr3P5ta9UK0amwZmbK1cpSxPNqpY6g_VeWGd7CvdjFc-SHsJbuWobvSaqmdPbAWyyQcCfFQkyJHKxOMBovUmHnCtUbgs88UvD9Cs9CZFUZ7y2cEdkfUZE6avZ5M1BwXkRxi2gg0hQyEIkfi3jxG7YAEG2YXSaJvPRw9b00DdF3gFRVN4iJ1fxeMhBFriEaULuCnKBZiC75lrOra1f70s',
'e' => 'AQAB',
@@ -101,7 +86,6 @@ public function certificateConversionPkcs8(): void
/**
* @dataProvider dataLoadCertificate
- * @covers \Jose\Component\KeyManagement\KeyConverter\KeyConverter
*
* @test
*/
@@ -109,168 +93,196 @@ public function loadCertificate(string $file, array $expected_values): void
{
$result = KeyConverter::loadKeyFromCertificateFile($file);
- static::assertEquals($expected_values, $result);
+ static::assertEqualsCanonicalizing($expected_values, $result);
}
public function dataLoadCertificate(): array
{
return [
[
- __DIR__.'/RSA/PEM/512b-rsa-example-cert.pem',
+ __DIR__ . '/RSA/PEM/512b-rsa-example-cert.pem',
[
'kty' => 'RSA',
'n' => 'm_xmkHmEQrurE_0re_jeFRLl8ZPjBop7uLHhnia7lQG_5zDtZIUC3RVpqDSwBuw_NTweGyuP-o8AG98HxqxTBw',
'e' => 'AQAB',
'x5t' => 'Bxy5TwzIUU0CQSRwjuiyaHvX2dU',
'x5t#256' => 'Xw-1FmWBquZKEBwVg7G-vnToFKkeeooUuh6DXXj26ec',
- 'x5c' => ['MIICEjCCAXsCAg36MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'ODIyMDUyNjU0WhcNMTcwODIxMDUyNjU0WjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wXDANBgkqhkiG9w0BAQEFAANLADBIAkEAm/xmkHmEQrurE/0re/jeFRLl'.PHP_EOL.'8ZPjBop7uLHhnia7lQG/5zDtZIUC3RVpqDSwBuw/NTweGyuP+o8AG98HxqxTBwID'.PHP_EOL.'AQABMA0GCSqGSIb3DQEBBQUAA4GBABS2TLuBeTPmcaTaUW/LCB2NYOy8GMdzR1mx'.PHP_EOL.'8iBIu2H6/E2tiY3RIevV2OW61qY2/XRQg7YPxx3ffeUugX9F4J/iPnnu1zAxxyBy'.PHP_EOL.'2VguKv4SWjRFoRkIfIlHX0qVviMhSlNy2ioFLy7JcPZb+v3ftDGywUqcBiVDoea0'.PHP_EOL.'Hn+GmxZA'],
+ 'x5c' => [
+ 'MIICEjCCAXsCAg36MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'ODIyMDUyNjU0WhcNMTcwODIxMDUyNjU0WjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wXDANBgkqhkiG9w0BAQEFAANLADBIAkEAm/xmkHmEQrurE/0re/jeFRLl' . PHP_EOL . '8ZPjBop7uLHhnia7lQG/5zDtZIUC3RVpqDSwBuw/NTweGyuP+o8AG98HxqxTBwID' . PHP_EOL . 'AQABMA0GCSqGSIb3DQEBBQUAA4GBABS2TLuBeTPmcaTaUW/LCB2NYOy8GMdzR1mx' . PHP_EOL . '8iBIu2H6/E2tiY3RIevV2OW61qY2/XRQg7YPxx3ffeUugX9F4J/iPnnu1zAxxyBy' . PHP_EOL . '2VguKv4SWjRFoRkIfIlHX0qVviMhSlNy2ioFLy7JcPZb+v3ftDGywUqcBiVDoea0' . PHP_EOL . 'Hn+GmxZA',
+ ],
],
],
[
- __DIR__.'/RSA/PEM/1024b-rsa-example-cert.pem',
+ __DIR__ . '/RSA/PEM/1024b-rsa-example-cert.pem',
[
'kty' => 'RSA',
'n' => 'xgEGvHk-U_RY0j9l3MP7o-S2a6uf4XaRBhu1ztdCHz8tMG8Kj4_qJmgsSZQD17sRctHGBTUJWp4CLtBwCf0zAGVzySwUkcHSu1_2mZ_w7Nr0TQHKeWr_j8pvXH534DKEvugr21DAHbi4c654eLUL-JW_wJJYqJh7qHM3W3Fh7ys',
'e' => 'AQAB',
'x5t' => '4bK45ewZ00Wk-a_shpTw2cCqJc8',
'x5t#256' => '5F5GTPOxBGAOsVyuYzqUBjri0R2YDTiDowiQbs6oGgU',
- 'x5c' => ['MIICVjCCAb8CAg37MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'ODIyMDUyNzIzWhcNMTcwODIxMDUyNzIzWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYBBrx5PlP0WNI/ZdzD'.PHP_EOL.'+6Pktmurn+F2kQYbtc7XQh8/LTBvCo+P6iZoLEmUA9e7EXLRxgU1CVqeAi7QcAn9'.PHP_EOL.'MwBlc8ksFJHB0rtf9pmf8Oza9E0Bynlq/4/Kb1x+d+AyhL7oK9tQwB24uHOueHi1'.PHP_EOL.'C/iVv8CSWKiYe6hzN1txYe8rAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAASPdjigJ'.PHP_EOL.'kXCqKWpnZ/Oc75EUcMi6HztaW8abUMlYXPIgkV2F7YanHOB7K4f7OOLjiz8DTPFf'.PHP_EOL.'jC9UeuErhaA/zzWi8ewMTFZW/WshOrm3fNvcMrMLKtH534JKvcdMg6qIdjTFINIr'.PHP_EOL.'evnAhf0cwULaebn+lMs8Pdl7y37+sfluVok='],
+ 'x5c' => [
+ 'MIICVjCCAb8CAg37MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'ODIyMDUyNzIzWhcNMTcwODIxMDUyNzIzWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYBBrx5PlP0WNI/ZdzD' . PHP_EOL . '+6Pktmurn+F2kQYbtc7XQh8/LTBvCo+P6iZoLEmUA9e7EXLRxgU1CVqeAi7QcAn9' . PHP_EOL . 'MwBlc8ksFJHB0rtf9pmf8Oza9E0Bynlq/4/Kb1x+d+AyhL7oK9tQwB24uHOueHi1' . PHP_EOL . 'C/iVv8CSWKiYe6hzN1txYe8rAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAASPdjigJ' . PHP_EOL . 'kXCqKWpnZ/Oc75EUcMi6HztaW8abUMlYXPIgkV2F7YanHOB7K4f7OOLjiz8DTPFf' . PHP_EOL . 'jC9UeuErhaA/zzWi8ewMTFZW/WshOrm3fNvcMrMLKtH534JKvcdMg6qIdjTFINIr' . PHP_EOL . 'evnAhf0cwULaebn+lMs8Pdl7y37+sfluVok=',
+ ],
],
],
[
- __DIR__.'/RSA/PEM/2048b-rsa-example-cert.pem',
+ __DIR__ . '/RSA/PEM/2048b-rsa-example-cert.pem',
[
'kty' => 'RSA',
'n' => 'tM_RXjMp7AvPrnb1_i3ImcZ4ebkY-AvUurTXngJSBgn0GJNM1HDRQqApE5JzUHf2BImsAyzW8QarrWzA2dWmq8rNWtJWJlHlSwiKr8wZDyU0kLAqKUEPVfFrk9uds8zc7OvHVRjXQiXeSTUUMpKcHsZp4zz79Jr4-4vF4Bt-_U8luj_llleaJHlJFyfXiUtqLg2HUdkjPQaFVvhYMQ7ugZl4aM1uRH7J2oxaexy_JEApSNEDnO_cripd-Pdqx-m8xbBZ9pX8FsvYnO3D_BKQk3hadbRWg_r8QYT2ZHk0NRyseoUOc3hyAeckiSWe2n9lvK-HkxmM23UVtuAwxwj4WQ',
'e' => 'AQAB',
'x5t' => 'y17eUFeZUYeOLmcTxTvpOOsjfkA',
'x5t#256' => 'B4plbjZwSZyZG7AnRoIFive9wF_EYsYF8PiVgXmBbNc',
- 'x5c' => ['MIIC2jCCAkMCAg38MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'ODIyMDUyNzQxWhcNMTcwODIxMDUyNzQxWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0z9FeMynsC8+u'.PHP_EOL.'dvX+LciZxnh5uRj4C9S6tNeeAlIGCfQYk0zUcNFCoCkTknNQd/YEiawDLNbxBqut'.PHP_EOL.'bMDZ1aarys1a0lYmUeVLCIqvzBkPJTSQsCopQQ9V8WuT252zzNzs68dVGNdCJd5J'.PHP_EOL.'NRQykpwexmnjPPv0mvj7i8XgG379TyW6P+WWV5okeUkXJ9eJS2ouDYdR2SM9BoVW'.PHP_EOL.'+FgxDu6BmXhozW5EfsnajFp7HL8kQClI0QOc79yuKl3492rH6bzFsFn2lfwWy9ic'.PHP_EOL.'7cP8EpCTeFp1tFaD+vxBhPZkeTQ1HKx6hQ5zeHIB5ySJJZ7af2W8r4eTGYzbdRW2'.PHP_EOL.'4DDHCPhZAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAQMv+BFvGdMVzkQaQ3/+2noVz'.PHP_EOL.'/uAKbzpEL8xTcxYyP3lkOeh4FoxiSWqy5pGFALdPONoDuYFpLhjJSZaEwuvjI/Tr'.PHP_EOL.'rGhLV1pRG9frwDFshqD2Vaj4ENBCBh6UpeBop5+285zQ4SI7q4U9oSebUDJiuOx6'.PHP_EOL.'+tZ9KynmrbJpTSi0+BM='],
+ 'x5c' => [
+ 'MIIC2jCCAkMCAg38MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'ODIyMDUyNzQxWhcNMTcwODIxMDUyNzQxWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0z9FeMynsC8+u' . PHP_EOL . 'dvX+LciZxnh5uRj4C9S6tNeeAlIGCfQYk0zUcNFCoCkTknNQd/YEiawDLNbxBqut' . PHP_EOL . 'bMDZ1aarys1a0lYmUeVLCIqvzBkPJTSQsCopQQ9V8WuT252zzNzs68dVGNdCJd5J' . PHP_EOL . 'NRQykpwexmnjPPv0mvj7i8XgG379TyW6P+WWV5okeUkXJ9eJS2ouDYdR2SM9BoVW' . PHP_EOL . '+FgxDu6BmXhozW5EfsnajFp7HL8kQClI0QOc79yuKl3492rH6bzFsFn2lfwWy9ic' . PHP_EOL . '7cP8EpCTeFp1tFaD+vxBhPZkeTQ1HKx6hQ5zeHIB5ySJJZ7af2W8r4eTGYzbdRW2' . PHP_EOL . '4DDHCPhZAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAQMv+BFvGdMVzkQaQ3/+2noVz' . PHP_EOL . '/uAKbzpEL8xTcxYyP3lkOeh4FoxiSWqy5pGFALdPONoDuYFpLhjJSZaEwuvjI/Tr' . PHP_EOL . 'rGhLV1pRG9frwDFshqD2Vaj4ENBCBh6UpeBop5+285zQ4SI7q4U9oSebUDJiuOx6' . PHP_EOL . '+tZ9KynmrbJpTSi0+BM=',
+ ],
],
],
[
- __DIR__.'/RSA/PEM/4096b-rsa-example-cert.pem',
+ __DIR__ . '/RSA/PEM/4096b-rsa-example-cert.pem',
[
'kty' => 'RSA',
'n' => 'sL1iEzi3sk20tUP1GnKniCyCtelBy70spiJW24k-5qQ-EjMAd-N8aSJVzeuHwtGNcpU-iy3l-ErewHCaxiFdwDJiXLA7Dc4KOe-y6rTb5zpCx9BqI4rBRCkIkRF-oDoKvbVkqsGhDXHExLAF7legENUk_hterNNIjfdoY1_Vf1eurJ0cE7Cf6eFkaS0nQI-Nu9oYjNfaiIPc64fdntq0MuxP1EoVuIKTq4YNn-n3AgZvmlyIGvqsWki3IXA1Lz166SMU3fzlkNt0IbyBM5Bmz5QQPCezcPSgsmsW2DARW9YtJQY8Ci45nKIoYiOz1bYQDrvwe9Q9oSnBYyqX7-A9VGpv9FbpisIcLoWVTYy6tQUdRSkSdQoqCxuMAk69C1YLb71MoRa0vtz3VEdE-R5QEFjzMkAx4AqWzh1tMHNIW7jXjv5UvNi44nhjRcSpjARRfZbDds7AOkMN9l5G9vxBZbVwrabjsFc7XZODA652g18vczGbqhR6b-ZVk2w1cA3chEDXJWJWwBGw3rxEKP6wDmRZfeDLut6wIC4j3mTeCHUv-PKK-SmkGgjntA7gG-BljSEONnGEOU7BB1rfhSDgDEqX_YTT4w3rtbn3-NAzrbIshnl_TVYqirbbWh6b3e629s7GrG3ABlJfnzUCY-KiJj0gfU4amaj07pBHDPzbW3k',
'e' => 'AQAB',
'x5t' => 'IBO6381r3QWOObmNaxF36HBgO5M',
'x5t#256' => 'yVWIatQnBpbU9lUGZmRlGg2bldGtJPpqQXfq3LhBq3M',
- 'x5c' => ['MIID2jCCA0MCAg39MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'ODIyMDUyODAwWhcNMTcwODIxMDUyODAwWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwvWITOLeyTbS1'.PHP_EOL.'Q/UacqeILIK16UHLvSymIlbbiT7mpD4SMwB343xpIlXN64fC0Y1ylT6LLeX4St7A'.PHP_EOL.'cJrGIV3AMmJcsDsNzgo577LqtNvnOkLH0GojisFEKQiREX6gOgq9tWSqwaENccTE'.PHP_EOL.'sAXuV6AQ1ST+G16s00iN92hjX9V/V66snRwTsJ/p4WRpLSdAj4272hiM19qIg9zr'.PHP_EOL.'h92e2rQy7E/UShW4gpOrhg2f6fcCBm+aXIga+qxaSLchcDUvPXrpIxTd/OWQ23Qh'.PHP_EOL.'vIEzkGbPlBA8J7Nw9KCyaxbYMBFb1i0lBjwKLjmcoihiI7PVthAOu/B71D2hKcFj'.PHP_EOL.'Kpfv4D1Uam/0VumKwhwuhZVNjLq1BR1FKRJ1CioLG4wCTr0LVgtvvUyhFrS+3PdU'.PHP_EOL.'R0T5HlAQWPMyQDHgCpbOHW0wc0hbuNeO/lS82LjieGNFxKmMBFF9lsN2zsA6Qw32'.PHP_EOL.'Xkb2/EFltXCtpuOwVztdk4MDrnaDXy9zMZuqFHpv5lWTbDVwDdyEQNclYlbAEbDe'.PHP_EOL.'vEQo/rAOZFl94Mu63rAgLiPeZN4IdS/48or5KaQaCOe0DuAb4GWNIQ42cYQ5TsEH'.PHP_EOL.'Wt+FIOAMSpf9hNPjDeu1uff40DOtsiyGeX9NViqKtttaHpvd7rb2zsasbcAGUl+f'.PHP_EOL.'NQJj4qImPSB9ThqZqPTukEcM/NtbeQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAIAi'.PHP_EOL.'gU3My8kYYniDuKEXSJmbVB+K1upHxWDA8R6KMZGXfbe5BRd8s40cY6JBYL52Tgqd'.PHP_EOL.'l8z5Ek8dC4NNpfpcZc/teT1WqiO2wnpGHjgMDuDL1mxCZNL422jHpiPWkWp3AuDI'.PHP_EOL.'c7tL1QjbfAUHAQYwmHkWgPP+T2wAv0pOt36GgMCM'],
+ 'x5c' => [
+ 'MIID2jCCA0MCAg39MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'ODIyMDUyODAwWhcNMTcwODIxMDUyODAwWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwvWITOLeyTbS1' . PHP_EOL . 'Q/UacqeILIK16UHLvSymIlbbiT7mpD4SMwB343xpIlXN64fC0Y1ylT6LLeX4St7A' . PHP_EOL . 'cJrGIV3AMmJcsDsNzgo577LqtNvnOkLH0GojisFEKQiREX6gOgq9tWSqwaENccTE' . PHP_EOL . 'sAXuV6AQ1ST+G16s00iN92hjX9V/V66snRwTsJ/p4WRpLSdAj4272hiM19qIg9zr' . PHP_EOL . 'h92e2rQy7E/UShW4gpOrhg2f6fcCBm+aXIga+qxaSLchcDUvPXrpIxTd/OWQ23Qh' . PHP_EOL . 'vIEzkGbPlBA8J7Nw9KCyaxbYMBFb1i0lBjwKLjmcoihiI7PVthAOu/B71D2hKcFj' . PHP_EOL . 'Kpfv4D1Uam/0VumKwhwuhZVNjLq1BR1FKRJ1CioLG4wCTr0LVgtvvUyhFrS+3PdU' . PHP_EOL . 'R0T5HlAQWPMyQDHgCpbOHW0wc0hbuNeO/lS82LjieGNFxKmMBFF9lsN2zsA6Qw32' . PHP_EOL . 'Xkb2/EFltXCtpuOwVztdk4MDrnaDXy9zMZuqFHpv5lWTbDVwDdyEQNclYlbAEbDe' . PHP_EOL . 'vEQo/rAOZFl94Mu63rAgLiPeZN4IdS/48or5KaQaCOe0DuAb4GWNIQ42cYQ5TsEH' . PHP_EOL . 'Wt+FIOAMSpf9hNPjDeu1uff40DOtsiyGeX9NViqKtttaHpvd7rb2zsasbcAGUl+f' . PHP_EOL . 'NQJj4qImPSB9ThqZqPTukEcM/NtbeQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAIAi' . PHP_EOL . 'gU3My8kYYniDuKEXSJmbVB+K1upHxWDA8R6KMZGXfbe5BRd8s40cY6JBYL52Tgqd' . PHP_EOL . 'l8z5Ek8dC4NNpfpcZc/teT1WqiO2wnpGHjgMDuDL1mxCZNL422jHpiPWkWp3AuDI' . PHP_EOL . 'c7tL1QjbfAUHAQYwmHkWgPP+T2wAv0pOt36GgMCM',
+ ],
],
],
[
- __DIR__.'/RSA/PEM/8192b-rsa-example-cert.pem',
+ __DIR__ . '/RSA/PEM/8192b-rsa-example-cert.pem',
[
'kty' => 'RSA',
'n' => 'q5lcEwG8rUflI1aL6omAaF5R1DFkCMllFaQ3HUwlwCWYNNyKxF1G2e-P3Y6SFWyp0sFfmDcvuebOY_Dw3KlC756bQUMEXH6TaubYDcXaKDyrdKgCSoufjhwHkNpRz3VxpkLADJQIHdijes2JN3daGARxSJLcjoSaZvq_LBCIHTTDGESBXJP6RtbjAjGjuLUgmcvkl029Xl8ylkrcibjTzXmOod3vioTnX5aZNT1c7evmskvixWG1NlHOhZ1HdXiPHLjKxnr4lHl9lxtTjkNSsF-Nz0bYHCpWZ9u98nkgvFAxNUmiwX5nHIqo39AK8YVuVmDGYzY-dPtD1UtCBXgj-Ryq1cPU66H7kEfvbn1kZRF0XcxqIUVDlpa_h4Aq7r8KnQ6nVF59oM8AwsrRu3llvlRzNCaRUhafZ6YUHR19j_6GpAJtOWwwV5m2qKs9EhfL9Kvz9DqWh3DBt0CuGIDS0NuBAt2_RmNQBP1u7L8pYZ_9kV-Y7YM9ocbuYpUbTy4vio33Pl2wG8iozgPIgOcbne4Vh4TGpe0hbXaL-a_84CVOWX4JyLxyBEWGB6PLfH74NyXyvh57X6Cn3P0Xr2rSgPEgEEovw5i9qDeqqzeO-GvUouhQjZgURP5USjd120IPjVoZP8RPRCAPUBQSUmi2dyHANRI3ydIhTKOEdZCVvIlVNu33wfN55kEeLCXBiDvfvozUbCGuuOkbs5Yz7vE8K9xlU_Xo2icptY_u3XMPW6YKRP6lvGtovn9295vENHOJDFCVkcJ819vHVqJnoiGAf_QX0J74NLm6fnWboH6-5BcIDl18uB3qEFAlneRflIrC2XBZju-dTuTaHy14WvVJNjTMUBgVQ4gaS1X2wmAztwv-Rk8o6k-KJuSZDWVEZyH3NaddkYSVONOMzIuuClbg4cEgLP2cxxqz8JdnyT2NNfMdGfxP4Nd_RvPtTD9kTVewlurzYVjoi8CC6VhV2Tgcp-UvT6Z0Yne-65dXi31VRqQWG8adWQ3gc9NP1oXfJqVt26ldXF9AVf7PcFcm7xzr2mwZKY-DMk1m1hBvUGeg7Iab34OABOY6J4AxXiXqKx3JV24SFydaSSevsulSrmUJU3g8TR-WwTh06Yp8DZplCU9MEvfyUSShtHED72anVRgVe8jw47k9TavJ-hPiAq0HUmmKGUeKvrqWN4bMpSiMCmHTkcqS_d4Dn4ZAI8W0DIluc9sXBaiUUSIt6t7gGNOZGUyZ-ZN4GNxVlMazB6CieGRhoPfRmXw7wq0k2R5BU1Q8PSj8jrZ88DgdfENnWCGy6Aq450OwfufGaHZDwAUD1kUoRGBkzIxvkWLVdQtmP4iZXOLSany0RtPZLGjSH-x0vQ',
'e' => 'AQAB',
'x5t' => 'YV6dSQ9sNS7rhNWcj-M4XuMmOE4',
'x5t#256' => 'ZNEUscWwJu03bRinDYd0BAuwiWGG3oDocehVMwX2oVo',
- 'x5c' => ['MIIF2jCCBUMCAg3+MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'OTI3MDYwNzQ5WhcNMTcwOTI2MDYwNzQ5WjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wggQiMA0GCSqGSIb3DQEBAQUAA4IEDwAwggQKAoIEAQCrmVwTAbytR+Uj'.PHP_EOL.'VovqiYBoXlHUMWQIyWUVpDcdTCXAJZg03IrEXUbZ74/djpIVbKnSwV+YNy+55s5j'.PHP_EOL.'8PDcqULvnptBQwRcfpNq5tgNxdooPKt0qAJKi5+OHAeQ2lHPdXGmQsAMlAgd2KN6'.PHP_EOL.'zYk3d1oYBHFIktyOhJpm+r8sEIgdNMMYRIFck/pG1uMCMaO4tSCZy+SXTb1eXzKW'.PHP_EOL.'StyJuNPNeY6h3e+KhOdflpk1PVzt6+ayS+LFYbU2Uc6FnUd1eI8cuMrGeviUeX2X'.PHP_EOL.'G1OOQ1KwX43PRtgcKlZn273yeSC8UDE1SaLBfmcciqjf0ArxhW5WYMZjNj50+0PV'.PHP_EOL.'S0IFeCP5HKrVw9TrofuQR+9ufWRlEXRdzGohRUOWlr+HgCruvwqdDqdUXn2gzwDC'.PHP_EOL.'ytG7eWW+VHM0JpFSFp9nphQdHX2P/oakAm05bDBXmbaoqz0SF8v0q/P0OpaHcMG3'.PHP_EOL.'QK4YgNLQ24EC3b9GY1AE/W7svylhn/2RX5jtgz2hxu5ilRtPLi+Kjfc+XbAbyKjO'.PHP_EOL.'A8iA5xud7hWHhMal7SFtdov5r/zgJU5ZfgnIvHIERYYHo8t8fvg3JfK+HntfoKfc'.PHP_EOL.'/RevatKA8SAQSi/DmL2oN6qrN474a9Si6FCNmBRE/lRKN3XbQg+NWhk/xE9EIA9Q'.PHP_EOL.'FBJSaLZ3IcA1EjfJ0iFMo4R1kJW8iVU27ffB83nmQR4sJcGIO9++jNRsIa646Ruz'.PHP_EOL.'ljPu8Twr3GVT9ejaJym1j+7dcw9bpgpE/qW8a2i+f3b3m8Q0c4kMUJWRwnzX28dW'.PHP_EOL.'omeiIYB/9BfQnvg0ubp+dZugfr7kFwgOXXy4HeoQUCWd5F+UisLZcFmO751O5Nof'.PHP_EOL.'LXha9Uk2NMxQGBVDiBpLVfbCYDO3C/5GTyjqT4om5JkNZURnIfc1p12RhJU404zM'.PHP_EOL.'i64KVuDhwSAs/ZzHGrPwl2fJPY018x0Z/E/g139G8+1MP2RNV7CW6vNhWOiLwILp'.PHP_EOL.'WFXZOByn5S9PpnRid77rl1eLfVVGpBYbxp1ZDeBz00/Whd8mpW3bqV1cX0BV/s9w'.PHP_EOL.'VybvHOvabBkpj4MyTWbWEG9QZ6Dshpvfg4AE5jongDFeJeorHclXbhIXJ1pJJ6+y'.PHP_EOL.'6VKuZQlTeDxNH5bBOHTpinwNmmUJT0wS9/JRJKG0cQPvZqdVGBV7yPDjuT1Nq8n6'.PHP_EOL.'E+ICrQdSaYoZR4q+upY3hsylKIwKYdORypL93gOfhkAjxbQMiW5z2xcFqJRRIi3q'.PHP_EOL.'3uAY05kZTJn5k3gY3FWUxrMHoKJ4ZGGg99GZfDvCrSTZHkFTVDw9KPyOtnzwOB18'.PHP_EOL.'Q2dYIbLoCrjnQ7B+58ZodkPABQPWRShEYGTMjG+RYtV1C2Y/iJlc4tJqfLRG09ks'.PHP_EOL.'aNIf7HS9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAiXbxR0T+C6MT7Jh/SbDJ/1Gd'.PHP_EOL.'vbqskiKmmKnzOcX1x0uUHY4zHIhx3M0neYRr//XOh+FeSwM1JqAPztHy3SMRXzfP'.PHP_EOL.'xzm/nwbRwdK8C/fPy7H+uMV1mKumem8WSoOMOoxFJ+o2nJgyViwnEOu9EejlH1sc'.PHP_EOL.'uKPIoTCLUCInRRhrI84='],
+ 'x5c' => [
+ 'MIIF2jCCBUMCAg3+MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'OTI3MDYwNzQ5WhcNMTcwOTI2MDYwNzQ5WjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wggQiMA0GCSqGSIb3DQEBAQUAA4IEDwAwggQKAoIEAQCrmVwTAbytR+Uj' . PHP_EOL . 'VovqiYBoXlHUMWQIyWUVpDcdTCXAJZg03IrEXUbZ74/djpIVbKnSwV+YNy+55s5j' . PHP_EOL . '8PDcqULvnptBQwRcfpNq5tgNxdooPKt0qAJKi5+OHAeQ2lHPdXGmQsAMlAgd2KN6' . PHP_EOL . 'zYk3d1oYBHFIktyOhJpm+r8sEIgdNMMYRIFck/pG1uMCMaO4tSCZy+SXTb1eXzKW' . PHP_EOL . 'StyJuNPNeY6h3e+KhOdflpk1PVzt6+ayS+LFYbU2Uc6FnUd1eI8cuMrGeviUeX2X' . PHP_EOL . 'G1OOQ1KwX43PRtgcKlZn273yeSC8UDE1SaLBfmcciqjf0ArxhW5WYMZjNj50+0PV' . PHP_EOL . 'S0IFeCP5HKrVw9TrofuQR+9ufWRlEXRdzGohRUOWlr+HgCruvwqdDqdUXn2gzwDC' . PHP_EOL . 'ytG7eWW+VHM0JpFSFp9nphQdHX2P/oakAm05bDBXmbaoqz0SF8v0q/P0OpaHcMG3' . PHP_EOL . 'QK4YgNLQ24EC3b9GY1AE/W7svylhn/2RX5jtgz2hxu5ilRtPLi+Kjfc+XbAbyKjO' . PHP_EOL . 'A8iA5xud7hWHhMal7SFtdov5r/zgJU5ZfgnIvHIERYYHo8t8fvg3JfK+HntfoKfc' . PHP_EOL . '/RevatKA8SAQSi/DmL2oN6qrN474a9Si6FCNmBRE/lRKN3XbQg+NWhk/xE9EIA9Q' . PHP_EOL . 'FBJSaLZ3IcA1EjfJ0iFMo4R1kJW8iVU27ffB83nmQR4sJcGIO9++jNRsIa646Ruz' . PHP_EOL . 'ljPu8Twr3GVT9ejaJym1j+7dcw9bpgpE/qW8a2i+f3b3m8Q0c4kMUJWRwnzX28dW' . PHP_EOL . 'omeiIYB/9BfQnvg0ubp+dZugfr7kFwgOXXy4HeoQUCWd5F+UisLZcFmO751O5Nof' . PHP_EOL . 'LXha9Uk2NMxQGBVDiBpLVfbCYDO3C/5GTyjqT4om5JkNZURnIfc1p12RhJU404zM' . PHP_EOL . 'i64KVuDhwSAs/ZzHGrPwl2fJPY018x0Z/E/g139G8+1MP2RNV7CW6vNhWOiLwILp' . PHP_EOL . 'WFXZOByn5S9PpnRid77rl1eLfVVGpBYbxp1ZDeBz00/Whd8mpW3bqV1cX0BV/s9w' . PHP_EOL . 'VybvHOvabBkpj4MyTWbWEG9QZ6Dshpvfg4AE5jongDFeJeorHclXbhIXJ1pJJ6+y' . PHP_EOL . '6VKuZQlTeDxNH5bBOHTpinwNmmUJT0wS9/JRJKG0cQPvZqdVGBV7yPDjuT1Nq8n6' . PHP_EOL . 'E+ICrQdSaYoZR4q+upY3hsylKIwKYdORypL93gOfhkAjxbQMiW5z2xcFqJRRIi3q' . PHP_EOL . '3uAY05kZTJn5k3gY3FWUxrMHoKJ4ZGGg99GZfDvCrSTZHkFTVDw9KPyOtnzwOB18' . PHP_EOL . 'Q2dYIbLoCrjnQ7B+58ZodkPABQPWRShEYGTMjG+RYtV1C2Y/iJlc4tJqfLRG09ks' . PHP_EOL . 'aNIf7HS9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAiXbxR0T+C6MT7Jh/SbDJ/1Gd' . PHP_EOL . 'vbqskiKmmKnzOcX1x0uUHY4zHIhx3M0neYRr//XOh+FeSwM1JqAPztHy3SMRXzfP' . PHP_EOL . 'xzm/nwbRwdK8C/fPy7H+uMV1mKumem8WSoOMOoxFJ+o2nJgyViwnEOu9EejlH1sc' . PHP_EOL . 'uKPIoTCLUCInRRhrI84=',
+ ],
],
],
[
- __DIR__.'/RSA/PEM/16k-rsa-example-cert.pem',
+ __DIR__ . '/RSA/PEM/16k-rsa-example-cert.pem',
[
'kty' => 'RSA',
'n' => 'tS3aeWW_wzlyXsDNFeBONFNq7W4lNWDjOUseNxx-R9AsqNJEWZFzaTtBI4Cam9Wf_2AlfP6i3RRpK76ooZObKwJmm1ReGcP7gf7JnODQv0W-m9x85a_fwHiI86Dhfy1YNh2zg1DO1kL_Q-sqKMOZ4g6uUfXGXjS5968sKCua3o-GEr-7GM6uw8zgpDmURtpupAFj3X1qCg6cjblPzMzcXdjACP4_zJpLc-sWpqY7pdLa26J5dgFGpTKWS7Xs96AlCPDz4uTRRFKDZarMFtzpjhWhNZyDGuYFFxNL4ca1tm-r4JyL-XuK9BTXC1WNXpqutzHNOj-tO9nCtRX02ZS3hmm1A9xndTZpfQ7lPuSA_kZEohkjcGyxtS-nup9khyMKGwvhg0MJS43VOuYSV6msk_z4dZ3-MCXVlJMTxLqWOSGHxHG0vDJQI5_IXCwkQLrVQIbt_X1ZylUdkmnKm4VuCBt4AHqK1F1jWpNXLYcFY-QW43c2Iln7v1uQFm_82CFHTanrNMBYNax2egYpSXpPS0naF6O1Y8bMPjPBU1jaoBAlfiSjCmHx5MOTg-PU9m1OnnR4XnOdDR0W8rUSS_iYz4Ucivou_7_XCTVlfuieAXT069ibXpGkTE58AgI6piVVYtaxyoADb3zr0a11Br0kS3gKRqxTq5GtgWTpz75VrFxXk8ATfwZF4PcOVX9fkUQStBKY9OGRryswLJbQ0lnz5ZR8QAAw1D2cAoWYoxUol5upjsrYrsGc7Ol3NhPPtoE0Vnxg49xQSZ0hhjhryId07aZ3QBr3NQ0XBoGhSNvO-M7ZyzDTNSUQusS5WyZsZputw_12E5y55_bbMPpKYbnx0aG93wmcna49jXoo5ZUMoJ_BQLaavGC0u-JTLT_subk5tKh3oVgDRevHwYeK1U4L4cdzpOzG8JVpcHyclofESk25DnHiQ92BfB1DR-6YadfQ8a4BXrIFlktDho1EmhXwWdT-dhO4ERPwf2Cx04iP3OdYCU_TNr3gVdB3fQLPkhV1K_od8zWrX7oqCGLkYCP_GUvl84dJoMequlyIO9IHtVpVHzGl-E48JoOHN00ULnoHzWzxUeGtda4twn9NQ-ptEjy9u0_8R-y2UqnC632wEmHpHzFqrOSYixp4GO_zAh-gmIhPJHuoH97vdcDRjGGFPO7kmMI0tBmxkt03ahYIqJKbPynHVLhsTuU7TVYrgTX6JkCR_IbudQTqVdz8oYO6tNqVrU89JI94_5ndJX1Wjmf1LPa8c31IQovBB0e-MlZ-rBkyTEttNuI8xC__OycsLhjAFx_bm0Qf2jfg2IJdLmDjGFHv3RlEdlRmJSyLY_lqKV4GAhjiEIEmduAKbygg2Jqhb6NKzHr1vxhRcWasnuhgTOunlGs3vezu9xz_4CvEKRMT6viU3tzqmGpT3zE7d0w9zMwn2eUlX0j7pKIiznrbkW2Dfe63f9X9bKYAsO5pcqcfAHqVaHl0iFXy5QoFwwjSuWwxKyhaY3tfY2rufLXCOzQ_G7BDoMRns8x6nCR-64Xuvp-EvBw0S790J_u9Z2W98rrW6c1cfn4cb9BRy3Rj64kWqlAUTRu6-qrX2RN5ywhoKfiJDH3m2q_MtgDlR3ke-5KuxaZwfM0hrcCppU5THbOwMe3XoDX-ZjD-3q-ikM8ueu4uTqDjtQrTQioFIxa-3prbNTsxBERQFZwlJtz2GmNHEAjgU-OwkMDObYAGc-ZAZritXe9vGtGFpdowMZ5k0FTUKSIsecPxn-nZlG-_qML8S63NXlU0RdbtYaLwQteFuXl_acAvuxOOnB3nZppJyIStP0uOPGhRowXSlThn0yFDht65TLly171JVrf4oFBDO4Q6EIJ7JMbRXCaEWJmeSNe_k71c3u4elbZ-C2i5JaO6bctZzO-xZ-CP7raQzHXMlpChYXqmpDU5bK2ySAbcDJDvg5WeRmQsqRxsFnI1EK1Jj_BKHZqOPz_q2SYyv69zPTsp5_w9z9YWCbOKP1KHyf9i9n6P5G3QkCzvlTDAbjR6nrrrnva0PZ0SjO4MzDOsIAa9S6vwRnWyE23vVI5RCv-IkLZ075LRkXKcj2EVPrDI3Mb1pUtfGu1H1M7m6V0SOTnaCwimIz3Ju2mwgnR-2lAAJKMd3vUaN1NfbEDuhZoMZfDrWzqOqA8Z2oyv6jHhby3DknbW4pn8tcaPCvScn1wotOeNFDvAfOIxikGEjUuXj-_gV2_dcFVIANseYpdhAS1tJjVX9JBwWcjbHnShy_9Y4f1zzrSwv4UbG7xDEGS1VaDUk5UwTTeeKQKzCkd6nYXxZYRMYDD_DcuGiCG9YvWm9hry1DkfdyCx5Pe8j8KMGUuEtIwLOIfmJDiCmE9fRAY85f9TAXyxkM-P1S_TcScKeSYrxLubX1DTuOGNDFKB4xNf0vi-lCFgLmx8tOr-RY7qtzrwrfcf7Kbpop-B5KpA2PhmoRTtZl4kF7RDeh-ZnUqcfyQcCIv_HewiMOmJ6iQDDjOWbsM8uEhl3ab-FzDYGAeT5bJs4EJAwEhsk28sXqnGzwJDUxw4mdLCYhiuI0ZwGOBUIzXQ-KHaH88PwYuQGLwM-s9uCKqJyO84I6XPe6bnqsL9NWmPhpvFxEZ7MvFCC2Z7nuGswQKpL92_QOS0NibZwzxBDUY7Qm3WsHxFzYm73JenQJGKzZPPLtjhIar7af2qb8KINgWGfIvrxR38osLT0Vg29M0DuMc',
'e' => 'AQAB',
'x5t' => 'XC_s0q4lqNalTFU6tNWR_Szk5dk',
'x5t#256' => '3nz2wIAoSbfVCmvy9k18bCPyIXacd3YfHrGq-qg3DVY',
- 'x5c' => ['MIIJ2jCCCUMCAg3/MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'ODIyMDUyOTAyWhcNMTcwODIxMDUyOTAyWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wgggiMA0GCSqGSIb3DQEBAQUAA4IIDwAwgggKAoIIAQC1Ldp5Zb/DOXJe'.PHP_EOL.'wM0V4E40U2rtbiU1YOM5Sx43HH5H0Cyo0kRZkXNpO0EjgJqb1Z//YCV8/qLdFGkr'.PHP_EOL.'vqihk5srAmabVF4Zw/uB/smc4NC/Rb6b3Hzlr9/AeIjzoOF/LVg2HbODUM7WQv9D'.PHP_EOL.'6yoow5niDq5R9cZeNLn3rywoK5rej4YSv7sYzq7DzOCkOZRG2m6kAWPdfWoKDpyN'.PHP_EOL.'uU/MzNxd2MAI/j/Mmktz6xampjul0trbonl2AUalMpZLtez3oCUI8PPi5NFEUoNl'.PHP_EOL.'qswW3OmOFaE1nIMa5gUXE0vhxrW2b6vgnIv5e4r0FNcLVY1emq63Mc06P6072cK1'.PHP_EOL.'FfTZlLeGabUD3Gd1Nml9DuU+5ID+RkSiGSNwbLG1L6e6n2SHIwobC+GDQwlLjdU6'.PHP_EOL.'5hJXqayT/Ph1nf4wJdWUkxPEupY5IYfEcbS8MlAjn8hcLCRAutVAhu39fVnKVR2S'.PHP_EOL.'acqbhW4IG3gAeorUXWNak1cthwVj5BbjdzYiWfu/W5AWb/zYIUdNqes0wFg1rHZ6'.PHP_EOL.'BilJek9LSdoXo7Vjxsw+M8FTWNqgECV+JKMKYfHkw5OD49T2bU6edHhec50NHRby'.PHP_EOL.'tRJL+JjPhRyK+i7/v9cJNWV+6J4BdPTr2JtekaRMTnwCAjqmJVVi1rHKgANvfOvR'.PHP_EOL.'rXUGvSRLeApGrFOrka2BZOnPvlWsXFeTwBN/BkXg9w5Vf1+RRBK0Epj04ZGvKzAs'.PHP_EOL.'ltDSWfPllHxAADDUPZwChZijFSiXm6mOytiuwZzs6Xc2E8+2gTRWfGDj3FBJnSGG'.PHP_EOL.'OGvIh3TtpndAGvc1DRcGgaFI2874ztnLMNM1JRC6xLlbJmxmm63D/XYTnLnn9tsw'.PHP_EOL.'+kphufHRob3fCZydrj2NeijllQygn8FAtpq8YLS74lMtP+y5uTm0qHehWANF68fB'.PHP_EOL.'h4rVTgvhx3Ok7MbwlWlwfJyWh8RKTbkOceJD3YF8HUNH7php19DxrgFesgWWS0OG'.PHP_EOL.'jUSaFfBZ1P52E7gRE/B/YLHTiI/c51gJT9M2veBV0Hd9As+SFXUr+h3zNatfuioI'.PHP_EOL.'YuRgI/8ZS+Xzh0mgx6q6XIg70ge1WlUfMaX4Tjwmg4c3TRQuegfNbPFR4a11ri3C'.PHP_EOL.'f01D6m0SPL27T/xH7LZSqcLrfbASYekfMWqs5JiLGngY7/MCH6CYiE8ke6gf3u91'.PHP_EOL.'wNGMYYU87uSYwjS0GbGS3TdqFgiokps/KcdUuGxO5TtNViuBNfomQJH8hu51BOpV'.PHP_EOL.'3Pyhg7q02pWtTz0kj3j/md0lfVaOZ/Us9rxzfUhCi8EHR74yVn6sGTJMS2024jzE'.PHP_EOL.'L/87JywuGMAXH9ubRB/aN+DYgl0uYOMYUe/dGUR2VGYlLItj+WopXgYCGOIQgSZ2'.PHP_EOL.'4ApvKCDYmqFvo0rMevW/GFFxZqye6GBM66eUaze97O73HP/gK8QpExPq+JTe3OqY'.PHP_EOL.'alPfMTt3TD3MzCfZ5SVfSPukoiLOetuRbYN97rd/1f1spgCw7mlypx8AepVoeXSI'.PHP_EOL.'VfLlCgXDCNK5bDErKFpje19jau58tcI7ND8bsEOgxGezzHqcJH7rhe6+n4S8HDRL'.PHP_EOL.'v3Qn+71nZb3yutbpzVx+fhxv0FHLdGPriRaqUBRNG7r6qtfZE3nLCGgp+IkMfeba'.PHP_EOL.'r8y2AOVHeR77kq7FpnB8zSGtwKmlTlMds7Ax7degNf5mMP7er6KQzy567i5OoOO1'.PHP_EOL.'CtNCKgUjFr7emts1OzEERFAVnCUm3PYaY0cQCOBT47CQwM5tgAZz5kBmuK1d728a'.PHP_EOL.'0YWl2jAxnmTQVNQpIix5w/Gf6dmUb7+owvxLrc1eVTRF1u1hovBC14W5eX9pwC+7'.PHP_EOL.'E46cHedmmknIhK0/S448aFGjBdKVOGfTIUOG3rlMuXLXvUlWt/igUEM7hDoQgnsk'.PHP_EOL.'xtFcJoRYmZ5I17+TvVze7h6Vtn4LaLklo7pty1nM77Fn4I/utpDMdcyWkKFheqak'.PHP_EOL.'NTlsrbJIBtwMkO+DlZ5GZCypHGwWcjUQrUmP8Eodmo4/P+rZJjK/r3M9Oynn/D3P'.PHP_EOL.'1hYJs4o/UofJ/2L2fo/kbdCQLO+VMMBuNHqeuuue9rQ9nRKM7gzMM6wgBr1Lq/BG'.PHP_EOL.'dbITbe9UjlEK/4iQtnTvktGRcpyPYRU+sMjcxvWlS18a7UfUzubpXRI5OdoLCKYj'.PHP_EOL.'Pcm7abCCdH7aUAAkox3e9Ro3U19sQO6Fmgxl8OtbOo6oDxnajK/qMeFvLcOSdtbi'.PHP_EOL.'mfy1xo8K9JyfXCi0540UO8B84jGKQYSNS5eP7+BXb91wVUgA2x5il2EBLW0mNVf0'.PHP_EOL.'kHBZyNsedKHL/1jh/XPOtLC/hRsbvEMQZLVVoNSTlTBNN54pArMKR3qdhfFlhExg'.PHP_EOL.'MP8Ny4aIIb1i9ab2GvLUOR93ILHk97yPwowZS4S0jAs4h+YkOIKYT19EBjzl/1MB'.PHP_EOL.'fLGQz4/VL9NxJwp5JivEu5tfUNO44Y0MUoHjE1/S+L6UIWAubHy06v5Fjuq3OvCt'.PHP_EOL.'9x/spumin4HkqkDY+GahFO1mXiQXtEN6H5mdSpx/JBwIi/8d7CIw6YnqJAMOM5Zu'.PHP_EOL.'wzy4SGXdpv4XMNgYB5PlsmzgQkDASGyTbyxeqcbPAkNTHDiZ0sJiGK4jRnAY4FQj'.PHP_EOL.'NdD4odofzw/Bi5AYvAz6z24IqonI7zgjpc97pueqwv01aY+Gm8XERnsy8UILZnue'.PHP_EOL.'4azBAqkv3b9A5LQ2JtnDPEENRjtCbdawfEXNibvcl6dAkYrNk88u2OEhqvtp/apv'.PHP_EOL.'wog2BYZ8i+vFHfyiwtPRWDb0zQO4xwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADg3'.PHP_EOL.'1Ah8wT/xjIhtUTAIcFGtgN2321aV8pIz8VSJu3CrbJJD09Ek6WUQgTbEq0pxwhQo'.PHP_EOL.'ubkr2+CJ2Gw/FTd0WFet7T57aFg7qh5xraEhH21icHmNBUG7ETUXNEf8TjbhREVY'.PHP_EOL.'gF6l8RI6rrGv0zm5awmcj+4+2OXQ+OM88dV7chMn'],
+ 'x5c' => [
+ 'MIIJ2jCCCUMCAg3/MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'ODIyMDUyOTAyWhcNMTcwODIxMDUyOTAyWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wgggiMA0GCSqGSIb3DQEBAQUAA4IIDwAwgggKAoIIAQC1Ldp5Zb/DOXJe' . PHP_EOL . 'wM0V4E40U2rtbiU1YOM5Sx43HH5H0Cyo0kRZkXNpO0EjgJqb1Z//YCV8/qLdFGkr' . PHP_EOL . 'vqihk5srAmabVF4Zw/uB/smc4NC/Rb6b3Hzlr9/AeIjzoOF/LVg2HbODUM7WQv9D' . PHP_EOL . '6yoow5niDq5R9cZeNLn3rywoK5rej4YSv7sYzq7DzOCkOZRG2m6kAWPdfWoKDpyN' . PHP_EOL . 'uU/MzNxd2MAI/j/Mmktz6xampjul0trbonl2AUalMpZLtez3oCUI8PPi5NFEUoNl' . PHP_EOL . 'qswW3OmOFaE1nIMa5gUXE0vhxrW2b6vgnIv5e4r0FNcLVY1emq63Mc06P6072cK1' . PHP_EOL . 'FfTZlLeGabUD3Gd1Nml9DuU+5ID+RkSiGSNwbLG1L6e6n2SHIwobC+GDQwlLjdU6' . PHP_EOL . '5hJXqayT/Ph1nf4wJdWUkxPEupY5IYfEcbS8MlAjn8hcLCRAutVAhu39fVnKVR2S' . PHP_EOL . 'acqbhW4IG3gAeorUXWNak1cthwVj5BbjdzYiWfu/W5AWb/zYIUdNqes0wFg1rHZ6' . PHP_EOL . 'BilJek9LSdoXo7Vjxsw+M8FTWNqgECV+JKMKYfHkw5OD49T2bU6edHhec50NHRby' . PHP_EOL . 'tRJL+JjPhRyK+i7/v9cJNWV+6J4BdPTr2JtekaRMTnwCAjqmJVVi1rHKgANvfOvR' . PHP_EOL . 'rXUGvSRLeApGrFOrka2BZOnPvlWsXFeTwBN/BkXg9w5Vf1+RRBK0Epj04ZGvKzAs' . PHP_EOL . 'ltDSWfPllHxAADDUPZwChZijFSiXm6mOytiuwZzs6Xc2E8+2gTRWfGDj3FBJnSGG' . PHP_EOL . 'OGvIh3TtpndAGvc1DRcGgaFI2874ztnLMNM1JRC6xLlbJmxmm63D/XYTnLnn9tsw' . PHP_EOL . '+kphufHRob3fCZydrj2NeijllQygn8FAtpq8YLS74lMtP+y5uTm0qHehWANF68fB' . PHP_EOL . 'h4rVTgvhx3Ok7MbwlWlwfJyWh8RKTbkOceJD3YF8HUNH7php19DxrgFesgWWS0OG' . PHP_EOL . 'jUSaFfBZ1P52E7gRE/B/YLHTiI/c51gJT9M2veBV0Hd9As+SFXUr+h3zNatfuioI' . PHP_EOL . 'YuRgI/8ZS+Xzh0mgx6q6XIg70ge1WlUfMaX4Tjwmg4c3TRQuegfNbPFR4a11ri3C' . PHP_EOL . 'f01D6m0SPL27T/xH7LZSqcLrfbASYekfMWqs5JiLGngY7/MCH6CYiE8ke6gf3u91' . PHP_EOL . 'wNGMYYU87uSYwjS0GbGS3TdqFgiokps/KcdUuGxO5TtNViuBNfomQJH8hu51BOpV' . PHP_EOL . '3Pyhg7q02pWtTz0kj3j/md0lfVaOZ/Us9rxzfUhCi8EHR74yVn6sGTJMS2024jzE' . PHP_EOL . 'L/87JywuGMAXH9ubRB/aN+DYgl0uYOMYUe/dGUR2VGYlLItj+WopXgYCGOIQgSZ2' . PHP_EOL . '4ApvKCDYmqFvo0rMevW/GFFxZqye6GBM66eUaze97O73HP/gK8QpExPq+JTe3OqY' . PHP_EOL . 'alPfMTt3TD3MzCfZ5SVfSPukoiLOetuRbYN97rd/1f1spgCw7mlypx8AepVoeXSI' . PHP_EOL . 'VfLlCgXDCNK5bDErKFpje19jau58tcI7ND8bsEOgxGezzHqcJH7rhe6+n4S8HDRL' . PHP_EOL . 'v3Qn+71nZb3yutbpzVx+fhxv0FHLdGPriRaqUBRNG7r6qtfZE3nLCGgp+IkMfeba' . PHP_EOL . 'r8y2AOVHeR77kq7FpnB8zSGtwKmlTlMds7Ax7degNf5mMP7er6KQzy567i5OoOO1' . PHP_EOL . 'CtNCKgUjFr7emts1OzEERFAVnCUm3PYaY0cQCOBT47CQwM5tgAZz5kBmuK1d728a' . PHP_EOL . '0YWl2jAxnmTQVNQpIix5w/Gf6dmUb7+owvxLrc1eVTRF1u1hovBC14W5eX9pwC+7' . PHP_EOL . 'E46cHedmmknIhK0/S448aFGjBdKVOGfTIUOG3rlMuXLXvUlWt/igUEM7hDoQgnsk' . PHP_EOL . 'xtFcJoRYmZ5I17+TvVze7h6Vtn4LaLklo7pty1nM77Fn4I/utpDMdcyWkKFheqak' . PHP_EOL . 'NTlsrbJIBtwMkO+DlZ5GZCypHGwWcjUQrUmP8Eodmo4/P+rZJjK/r3M9Oynn/D3P' . PHP_EOL . '1hYJs4o/UofJ/2L2fo/kbdCQLO+VMMBuNHqeuuue9rQ9nRKM7gzMM6wgBr1Lq/BG' . PHP_EOL . 'dbITbe9UjlEK/4iQtnTvktGRcpyPYRU+sMjcxvWlS18a7UfUzubpXRI5OdoLCKYj' . PHP_EOL . 'Pcm7abCCdH7aUAAkox3e9Ro3U19sQO6Fmgxl8OtbOo6oDxnajK/qMeFvLcOSdtbi' . PHP_EOL . 'mfy1xo8K9JyfXCi0540UO8B84jGKQYSNS5eP7+BXb91wVUgA2x5il2EBLW0mNVf0' . PHP_EOL . 'kHBZyNsedKHL/1jh/XPOtLC/hRsbvEMQZLVVoNSTlTBNN54pArMKR3qdhfFlhExg' . PHP_EOL . 'MP8Ny4aIIb1i9ab2GvLUOR93ILHk97yPwowZS4S0jAs4h+YkOIKYT19EBjzl/1MB' . PHP_EOL . 'fLGQz4/VL9NxJwp5JivEu5tfUNO44Y0MUoHjE1/S+L6UIWAubHy06v5Fjuq3OvCt' . PHP_EOL . '9x/spumin4HkqkDY+GahFO1mXiQXtEN6H5mdSpx/JBwIi/8d7CIw6YnqJAMOM5Zu' . PHP_EOL . 'wzy4SGXdpv4XMNgYB5PlsmzgQkDASGyTbyxeqcbPAkNTHDiZ0sJiGK4jRnAY4FQj' . PHP_EOL . 'NdD4odofzw/Bi5AYvAz6z24IqonI7zgjpc97pueqwv01aY+Gm8XERnsy8UILZnue' . PHP_EOL . '4azBAqkv3b9A5LQ2JtnDPEENRjtCbdawfEXNibvcl6dAkYrNk88u2OEhqvtp/apv' . PHP_EOL . 'wog2BYZ8i+vFHfyiwtPRWDb0zQO4xwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADg3' . PHP_EOL . '1Ah8wT/xjIhtUTAIcFGtgN2321aV8pIz8VSJu3CrbJJD09Ek6WUQgTbEq0pxwhQo' . PHP_EOL . 'ubkr2+CJ2Gw/FTd0WFet7T57aFg7qh5xraEhH21icHmNBUG7ETUXNEf8TjbhREVY' . PHP_EOL . 'gF6l8RI6rrGv0zm5awmcj+4+2OXQ+OM88dV7chMn',
+ ],
],
],
[
- __DIR__.'/RSA/PEM/32k-rsa-example-cert.pem',
+ __DIR__ . '/RSA/PEM/32k-rsa-example-cert.pem',
[
'kty' => 'RSA',
'n' => 'qzPFsFIf3cSes25DloV3y3d8gKMcZVE_EQ_6e_MZnyqDbuOEP39yQs3aunzbZRoO8Xw8lLoJNduiKKsco7odI753kBvz1eLyke-sWBVZttbnYyz9AE3ZXfAb9rHW2AxgIqHNsQOsLJS_douGZwxawNdE90WM4QG80bDpkxxHfObtmZIbZoOFSeokDHA5jokQGzJ65t6ARtQOIht84pIlAr8RO0vCUiJ0R4TdAffbdIukMcVfSoZBlZJ_q-yBtPoqB1Nmr1x1FqCtR81NrEtdp7CUHy4yLIskMzHTwJL24dx8zPS9RBIAuR6HO6soQwQgKY5NYmyaZGuWDrzw0Lor9_jjcx3x7NlXEUffGyUdT_bZ6owsgd-SpvnbqXPXIf-u5JH7afSUuajytHnGVilQOpEg06B0F-AumUEx8vdLPczCx0CED11mhRhT1eRQPJlzxgqA22SN1Yz0P55R8QbfFYcflpEtZbHmdvwMSipEoEUyI8aA9z268oNVnnAGhG3cOqk8-4HOvtqZ9LIc8jUcQLtWX-PJav9EePnWuV6pFwzvKcwl09m08xIfIh9DvFVJz3Fks-X6c1tVo2Valftlj8fnlzu9WgownkwhM4KN2UpcHcff4G-v9zckhcpROSzZ1ax5mPOUMF6B2OVawMhf3li9A9JEpBDxVu2-gZU6NbhvfH1f4PdNPUnlasPylHn4qz4S6_V1fuxho-2O_V72w3V5FDBi-m2D9vDVQvJtuoiJxUEyOWaxsenuzoFlq3jNHwm0SiabwVjaMyre4qktmHopLuLX2ixME3rbTtaXLAaly-t2X6oS4nFyhwP9f_WbJb4Yh_RDxksPj1hR_4nH43NTYjZBlLDM0YRb4xRzFmATQOUhPou6LSUbl8Tl2z7WYFzlcKgHwkWRaTGUV8Sz_h-_IfgZDvCtyyLhzvWOmfJBhsV1nTbDrr8DivZGH5huBNH88v_gbCVw36aAjH8BnmcHQ0ImUUwXoiB1iWSWB3x1xdYnAyQf5RV2PK86wVc4EBRxW6MeJHWZr-kFgHtcwk2ys8MewL8xlKs1S64APAWtD-WsLGEnUVMfM5EuWjoS9kB4BI4DC6M0uyDjaCuFu80wMmWfx9C3-Y2x7l5Lw0G4gRcUk-F3ONtKfsxMqAmV6aUVkXmdkX5LLa105CpIVqflM40CPl5mlVGEFlTf9u0zclyQ0_-qWt78ZzkpolPj9XKHikdYA_DKbvtfgtgNC07GIwBctoQsOrKGOxigeWzrAwfS9S5Wt7hvcs2R0Y04rXoeSTPbHWLumsJYLxC2HPtam3IxQJzCljIOFB5Sqi9WLO5l_yjmUGS2Fzy5DkuyFuC3o79rB-Vu0zpHQ5sHdbyYkfvi3QZx4jLuj2ki-3_1Qj7RfVdd1yWeudnFUy5QGfWh3-VoaK9UIZ1EeX62owXTGNOJovn9yMdwbXmy75qrkPXadFQG3lnuqq_Ucd8ZAYJvwfQb6uhTSv1kSFCpxyyaSBYjLU44QDF6FRh_QHLMBM2DVasOT0hsF2UWsIXUneoJHk_qVZSRmj5EDaIrWAUEZfL_geiwcW3_L3Y9iaHMkB93fHNsVEpLmTO-vLHZHYN0c-kKNVBw_40xGZ5ZgPJlT4JZVvBKuB2ka2OsSLcRXZvzZZZTnrRHb_9dngGkFpI0gc6gFu2d1mPIIFp6JS7AJ4_sYKE4yxuGG7IsA4ErnNBEK9Sr1XSu0_KfcIv63dm_AybDg1vmqMLCl5EiP9OIFsWdIM42970PH9h8Ri7KUn0D53RSRVkV38NW312A2JYCHfEfbIxyibEIrsusib98x6Bedh-3BpsWyih2XlDT6AFwJdD0cc_Uf56Vqv9waUtsSx-1xBwliZ35MKq-IfV6hcLnFgLhxsqakV8aFLAEzI8Ulned6zjRAC28aaDOZcFdKEMD0wHPUW8-9UTQxAgug8otEITWSkKubyXbdofpVa9Xwjq1-jLb4eylqey0RokKrHO6B7F3KtUF8Zsm0mGEg7nvUhjEBFL3AqkLke5Nb_78uqb3tzZF3iO6ghENar9s1DUIYqNkbMSeh7smgER_PBUB0MGMqRnx8qcr5t5yBEurZ7qq7-LYoJOoc6UwaPrQN_AFRou4ugiRrxIrvOwrDPr4y2zoi9XKnBBuYMnt2AkGVCNIA0WOKgmex4x_2Nri2JlRieAPwNPfW5PLkyPVRfw0dNzhg7csMl1Wctdw1JpHJhgMswuhYhRWGyzYWE4ZU8lvQWqA42MOKfUixAV4LmEzGz2eRQSPGWjLC85-mcxf_vssmD-mbuJAjzlLDzzwllrTDCQrt18DftpAAHhD5hG2HmQH9RDzcS3sniIx4p2zyqBHVQsWM74BlQjbODjgHRHerTgxYaNmh4KRA38lmb9omrUhI2Q0Lj5CF2of_Apd7fo8u6LpBpdEtirkn_7-9vPPiGerClV6lSjoNi_I_hHCneAq-3KZq7hM5XliJPvUrws_m0X5n6_fazdk-gOohEuF0Aq_1I5633sS-DGrFyan2K7oeoBGQN994-kweTR0lLko14nC5wnvizbsv7sDUNJTjM7LMYIrhKEILTjjGQ6WuCkYhQuM4RAnx74jFIchW8pS1tEnUcIOyBWgFB9M2zdbNmJg7vH43mmX408jMYVKs9CQz2Y7Vu33S0dSp9sWxM1KUREFVy1xTbVgKNxLxOzXiLOjm_b4EifAHZh_KTf0POm5RESU-TSrO29y5puTHL-PLuOE30jrxXaKhW5UzmQLUMhBGI7geYP6fE6QxyUi0gD_tLdMmzxTlZiOXkE6HnBQ-3Ar54uA-RFUhnzU-XT3wm--eINsvqyrHCyLQlmM71aBXnMlH5g0NJjdm42XSecTopWfFCfcNe1-ufpUuMGGg0C3LxVN5fkTmB2_6gai0AHh4dNhefGkKCZ5OcSNtA_UUI1nKr_wgPTI4X1catN9RE9mMYhOt-I5gOVRCihxDcUcBl2apUaFK-jHPs5rABqhykbi_dOS-zy42I86Vcu4B-_0GNlRIPRLZWFIhNRy_kfCOq4kb4SK9DjTvHsaq6YWMoL9Jk3JiqvH4yrMZ6T-XEFdJ8DGSc41lo1YJwhFUu0eGbGFKxyUBrHv1l9ByPrqWaiepnBBsda4y8G3SoiCfndwkbvLeE5ykYgurPpkYX_bau2PqsoAkiJ_GmbitKpXD71C5PmzvzLvpxkgC6hQq-v4L4WLelADvBpeikX9k23qhR5H3mkzNeMZgHyoFisy161cDgOlcg64g6C2UzJKlb5C1tOlQwM3fdm7cjBJXOjuxgi8Ewx6ov90eeaqIEfFvnUu1_IC_tFve9P_Us21Ak53vwStlHueYHtedJsHg84C5Ppt_z1LFR3Hh8m1pOnlb3kJw5eGpvsXweZrIIN0cvwz-NZ_orIxjPxLf23wy-y-lhObK17BfX1g-p759XtRSaG4Rj_QedauXHAA-SKgvwAOY3kBuWo9Oxx73JbC1kov55TkecHj2lXO_o49O5LCOa_h0nHIVb3JIGWot11sF_6zwNzFM2WtHFNu7Iu9hllumC8rvz3HEbylvSPQYzBQKy8NSyC6T9wbH6cAYY-vl59q1J4DwBH3DHKoMAec8InlnBO_ekJa8SMdQMZxov0BaxJc0W__29w2Sza0cBsMslfpRIWRWMb4jNpyvCyEVxrGf7AakOl0_9P3JCQ2o8cuf-BGg_z_iQ3aTMYVWi_pWuxnhh5NchjQU8C3dxvnEd0Te9mmDlvZh-N9GULo0tlzHz3WZniUp7mxVQ3nkeS31M0LIIF3SetSMjXrGJ_4bzAnb3EjH44eFuvgOiJ8ChXLCmHLtIpFa0WSC6YVpBxqfPrxke-DyB2Lvz_46MSQ4iKvCFhdYWxBtwXCZDN5Dt4XFpMknL_VnuVU8a5_rRqpEebv_VF1pBZsvfTK6UXFWAApFvL4ebApuLsFInG3uk89N2SbenTTiBGWZWZjsEFsvf3iSFZdQ2bgKSLmJIsuXV1mUPkzGEr8SsPLDKhGNZBevtka-CfnukEPn7a3K_O5sYcccEtYwx0VNiC6dWu7B_-pflffa1m4pbhdg6KfykDO9_jU_LE692dhWUzbv977zGUlOnmsEMeqmSTo9V5Hv0UsEDGEjoe9piKidoZ8JdAq1WIpSBfW9M2wtkZHbi2nlaBnKJuTaaNs_nWjbG4y73hEqEqRlQMKrLsJU7rsmy3h6x6-J_tXfkKpWu_Z_PhR-ca2RV4ldwUNejBhBomg-6bcSq1lHXGTpwc0wSDmIUfE2W6ZZysaFpmGpTDFjTDqfeeAwwbzShK7Uc-OnJVNiQ5w1KALJNjXURSfI61vyWRBMtFHaC7t6ixwDfv6pqEa0xeDe4xf4Z1qdX1Zfs4xpdAyzZWmslUsXIYDtiTXq6NYGjnCEPYqneVGOWhP6re0UfzeqqB6p6_L42UoqFrrjU7jnEWRlz6gxdU9qOJgLX3u6CIYtN6b44tpsqA23fNBiuf4SqoYimbd2YVjXFRFFNZ2XqJ-wBqYcD5xIfudMN6W5cAD4p5cTQ11_-EqIp8rDxiWOs-PN8SQTIE7ZYQ6na-lSITpchNybreE9SqhzluoY71DN8oQuUJHonrAW5Hh_VroGBxpbO9XdNhw0XrC-S9iH9DDEUedanM2DznPUZsHHutG8H0K9AEyWRS01sAwrF73ZG57qy5IciYMHZuFbkY0lzwbF-vd15jgNfP4JTmZD2sVWwVgI7Qp9T2hd0uuZL_huHl2baRCyC_DSI9c6p3q9Ud_tBN_yCcNcUVx0rS6EGfzM8VYOGwyiBVBAgVDjBXiKBsUVWA3ljfOtYhLKBDHkqhvoQaczSI2fKX7L7cwgXeBdckoaNhno6mCpZBamuyBZ1Iy6TnguQi59MCCKdiczIpfeumbSDEovy2IbQmPqld_JI6WOufgldiITu3hXR5KNazan2mc3NrKu1SEXZpdzb4wJZZ26U_1xE2GLMJru05yZoVNEkN72DhagM1R5oqHwPzRcn3ahdYvUzDoP6UHEpa76A23lqafY7F98l66hmAnXXlEKzEVwthYoxWANYtVsxs9NktNJdNMB3OCMnCo9BWkefmjlrzMJSkBP_1mfxN2o3W1tMNXpk5OQPO20_eWPF3iYhobSo8fcxzXtw9bg1BXr0TADj0hl_z4jw93wVGGLlsA3qYstay0I9yJgHBZmhxc7V1JzNWdwxIDmRgA5eCm1ELVBxpIup9WGZlUs1rzwqXzI-37i7l3dwFfCf_i2g8m-gNQjuM6YqkSz-XKcn-sJEg1XSMhoB15sgYE9U-2Oe-_EGLK0dOU2zyHO40F8ghvhKWpuAcITX_QnEMremwsiCl0PEnGZ98BXzlRvd1MFNc0ZUwzN-wTVxs4jNkteNbp0MjIKA5Y6FiCEX6koNWY9cLXSNg4XG4IsWRQrfIn2WWFz_nhzlaZNm_NUM1kmKRREPmsvQ',
'e' => 'AQAB',
'x5t' => 'KGApLybHWJmBwZGgBk07AlRD9nU',
'x5t#256' => 'YD12k6kc4xuh_5vEHMyyOFpGs6VqTyaKMlxg0Nt2crA',
- 'x5c' => ['MIIR2jCCEUMCAg4EMA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIx'.PHP_EOL.'MDEwMTIxNzQ5WhcNMTcxMDA5MTIxNzQ5WjBKMQswCQYDVQQGDAJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wghAiMA0GCSqGSIb3DQEBAQUAA4IQDwAwghAKAoIQAQCrM8WwUh/dxJ6z'.PHP_EOL.'bkOWhXfLd3yAoxxlUT8RD/p78xmfKoNu44Q/f3JCzdq6fNtlGg7xfDyUugk126Io'.PHP_EOL.'qxyjuh0jvneQG/PV4vKR76xYFVm21udjLP0ATdld8Bv2sdbYDGAioc2xA6wslL92'.PHP_EOL.'i4ZnDFrA10T3RYzhAbzRsOmTHEd85u2Zkhtmg4VJ6iQMcDmOiRAbMnrm3oBG1A4i'.PHP_EOL.'G3zikiUCvxE7S8JSInRHhN0B99t0i6QxxV9KhkGVkn+r7IG0+ioHU2avXHUWoK1H'.PHP_EOL.'zU2sS12nsJQfLjIsiyQzMdPAkvbh3HzM9L1EEgC5Hoc7qyhDBCApjk1ibJpka5YO'.PHP_EOL.'vPDQuiv3+ONzHfHs2VcRR98bJR1P9tnqjCyB35Km+dupc9ch/67kkftp9JS5qPK0'.PHP_EOL.'ecZWKVA6kSDToHQX4C6ZQTHy90s9zMLHQIQPXWaFGFPV5FA8mXPGCoDbZI3VjPQ/'.PHP_EOL.'nlHxBt8Vhx+WkS1lseZ2/AxKKkSgRTIjxoD3Pbryg1WecAaEbdw6qTz7gc6+2pn0'.PHP_EOL.'shzyNRxAu1Zf48lq/0R4+da5XqkXDO8pzCXT2bTzEh8iH0O8VUnPcWSz5fpzW1Wj'.PHP_EOL.'ZVqV+2WPx+eXO71aCjCeTCEzgo3ZSlwdx9/gb6/3NySFylE5LNnVrHmY85QwXoHY'.PHP_EOL.'5VrAyF/eWL0D0kSkEPFW7b6BlTo1uG98fV/g9009SeVqw/KUefirPhLr9XV+7GGj'.PHP_EOL.'7Y79XvbDdXkUMGL6bYP28NVC8m26iInFQTI5ZrGx6e7OgWWreM0fCbRKJpvBWNoz'.PHP_EOL.'Kt7iqS2Yeiku4tfaLEwTettO1pcsBqXL63ZfqhLicXKHA/1/9ZslvhiH9EPGSw+P'.PHP_EOL.'WFH/icfjc1NiNkGUsMzRhFvjFHMWYBNA5SE+i7otJRuXxOXbPtZgXOVwqAfCRZFp'.PHP_EOL.'MZRXxLP+H78h+BkO8K3LIuHO9Y6Z8kGGxXWdNsOuvwOK9kYfmG4E0fzy/+BsJXDf'.PHP_EOL.'poCMfwGeZwdDQiZRTBeiIHWJZJYHfHXF1icDJB/lFXY8rzrBVzgQFHFbox4kdZmv'.PHP_EOL.'6QWAe1zCTbKzwx7AvzGUqzVLrgA8Ba0P5awsYSdRUx8zkS5aOhL2QHgEjgMLozS7'.PHP_EOL.'IONoK4W7zTAyZZ/H0Lf5jbHuXkvDQbiBFxST4Xc420p+zEyoCZXppRWReZ2Rfkst'.PHP_EOL.'rXTkKkhWp+UzjQI+XmaVUYQWVN/27TNyXJDT/6pa3vxnOSmiU+P1coeKR1gD8Mpu'.PHP_EOL.'+1+C2A0LTsYjAFy2hCw6soY7GKB5bOsDB9L1Lla3uG9yzZHRjTiteh5JM9sdYu6a'.PHP_EOL.'wlgvELYc+1qbcjFAnMKWMg4UHlKqL1Ys7mX/KOZQZLYXPLkOS7IW4Lejv2sH5W7T'.PHP_EOL.'OkdDmwd1vJiR++LdBnHiMu6PaSL7f/VCPtF9V13XJZ652cVTLlAZ9aHf5Whor1Qh'.PHP_EOL.'nUR5frajBdMY04mi+f3Ix3BtebLvmquQ9dp0VAbeWe6qr9Rx3xkBgm/B9Bvq6FNK'.PHP_EOL.'/WRIUKnHLJpIFiMtTjhAMXoVGH9AcswEzYNVqw5PSGwXZRawhdSd6gkeT+pVlJGa'.PHP_EOL.'PkQNoitYBQRl8v+B6LBxbf8vdj2JocyQH3d8c2xUSkuZM768sdkdg3Rz6Qo1UHD/'.PHP_EOL.'jTEZnlmA8mVPgllW8Eq4HaRrY6xItxFdm/NlllOetEdv/12eAaQWkjSBzqAW7Z3W'.PHP_EOL.'Y8ggWnolLsAnj+xgoTjLG4YbsiwDgSuc0EQr1KvVdK7T8p9wi/rd2b8DJsODW+ao'.PHP_EOL.'wsKXkSI/04gWxZ0gzjb3vQ8f2HxGLspSfQPndFJFWRXfw1bfXYDYlgId8R9sjHKJ'.PHP_EOL.'sQiuy6yJv3zHoF52H7cGmxbKKHZeUNPoAXAl0PRxz9R/npWq/3BpS2xLH7XEHCWJ'.PHP_EOL.'nfkwqr4h9XqFwucWAuHGypqRXxoUsATMjxSWd53rONEALbxpoM5lwV0oQwPTAc9R'.PHP_EOL.'bz71RNDECC6Dyi0QhNZKQq5vJdt2h+lVr1fCOrX6Mtvh7KWp7LRGiQqsc7oHsXcq'.PHP_EOL.'1QXxmybSYYSDue9SGMQEUvcCqQuR7k1v/vy6pve3NkXeI7qCEQ1qv2zUNQhio2Rs'.PHP_EOL.'xJ6HuyaARH88FQHQwYypGfHypyvm3nIES6tnuqrv4tigk6hzpTBo+tA38AVGi7i6'.PHP_EOL.'CJGvEiu87CsM+vjLbOiL1cqcEG5gye3YCQZUI0gDRY4qCZ7HjH/Y2uLYmVGJ4A/A'.PHP_EOL.'099bk8uTI9VF/DR03OGDtywyXVZy13DUmkcmGAyzC6FiFFYbLNhYThlTyW9BaoDj'.PHP_EOL.'Yw4p9SLEBXguYTMbPZ5FBI8ZaMsLzn6ZzF/++yyYP6Zu4kCPOUsPPPCWWtMMJCu3'.PHP_EOL.'XwN+2kAAeEPmEbYeZAf1EPNxLeyeIjHinbPKoEdVCxYzvgGVCNs4OOAdEd6tODFh'.PHP_EOL.'o2aHgpEDfyWZv2iatSEjZDQuPkIXah/8Cl3t+jy7oukGl0S2KuSf/v7288+IZ6sK'.PHP_EOL.'VXqVKOg2L8j+EcKd4Cr7cpmruEzleWIk+9SvCz+bRfmfr99rN2T6A6iES4XQCr/U'.PHP_EOL.'jnrfexL4MasXJqfYruh6gEZA333j6TB5NHSUuSjXicLnCe+LNuy/uwNQ0lOMzssx'.PHP_EOL.'giuEoQgtOOMZDpa4KRiFC4zhECfHviMUhyFbylLW0SdRwg7IFaAUH0zbN1s2YmDu'.PHP_EOL.'8fjeaZfjTyMxhUqz0JDPZjtW7fdLR1Kn2xbEzUpREQVXLXFNtWAo3EvE7NeIs6Ob'.PHP_EOL.'9vgSJ8AdmH8pN/Q86blERJT5NKs7b3Lmm5Mcv48u44TfSOvFdoqFblTOZAtQyEEY'.PHP_EOL.'juB5g/p8TpDHJSLSAP+0t0ybPFOVmI5eQToecFD7cCvni4D5EVSGfNT5dPfCb754'.PHP_EOL.'g2y+rKscLItCWYzvVoFecyUfmDQ0mN2bjZdJ5xOilZ8UJ9w17X65+lS4wYaDQLcv'.PHP_EOL.'FU3l+ROYHb/qBqLQAeHh02F58aQoJnk5xI20D9RQjWcqv/CA9MjhfVxq031ET2Yx'.PHP_EOL.'iE634jmA5VEKKHENxRwGXZqlRoUr6Mc+zmsAGqHKRuL905L7PLjYjzpVy7gH7/QY'.PHP_EOL.'2VEg9EtlYUiE1HL+R8I6riRvhIr0ONO8exqrphYygv0mTcmKq8fjKsxnpP5cQV0n'.PHP_EOL.'wMZJzjWWjVgnCEVS7R4ZsYUrHJQGse/WX0HI+upZqJ6mcEGx1rjLwbdKiIJ+d3CR'.PHP_EOL.'u8t4TnKRiC6s+mRhf9tq7Y+qygCSIn8aZuK0qlcPvULk+bO/Mu+nGSALqFCr6/gv'.PHP_EOL.'hYt6UAO8Gl6KRf2TbeqFHkfeaTM14xmAfKgWKzLXrVwOA6VyDriDoLZTMkqVvkLW'.PHP_EOL.'06VDAzd92btyMElc6O7GCLwTDHqi/3R55qogR8W+dS7X8gL+0W970/9SzbUCTne/'.PHP_EOL.'BK2Ue55ge150mweDzgLk+m3/PUsVHceHybWk6eVveQnDl4am+xfB5msgg3Ry/DP4'.PHP_EOL.'1n+isjGM/Et/bfDL7L6WE5srXsF9fWD6nvn1e1FJobhGP9B51q5ccAD5IqC/AA5j'.PHP_EOL.'eQG5aj07HHvclsLWSi/nlOR5wePaVc7+jj07ksI5r+HScchVvckgZai3XWwX/rPA'.PHP_EOL.'3MUzZa0cU27si72GWW6YLyu/PccRvKW9I9BjMFArLw1LILpP3BsfpwBhj6+Xn2rU'.PHP_EOL.'ngPAEfcMcqgwB5zwieWcE796QlrxIx1AxnGi/QFrElzRb//b3DZLNrRwGwyyV+lE'.PHP_EOL.'hZFYxviM2nK8LIRXGsZ/sBqQ6XT/0/ckJDajxy5/4EaD/P+JDdpMxhVaL+la7GeG'.PHP_EOL.'Hk1yGNBTwLd3G+cR3RN72aYOW9mH430ZQujS2XMfPdZmeJSnubFVDeeR5LfUzQsg'.PHP_EOL.'gXdJ61IyNesYn/hvMCdvcSMfjh4W6+A6InwKFcsKYcu0ikVrRZILphWkHGp8+vGR'.PHP_EOL.'74PIHYu/P/joxJDiIq8IWF1hbEG3BcJkM3kO3hcWkyScv9We5VTxrn+tGqkR5u/9'.PHP_EOL.'UXWkFmy99MrpRcVYACkW8vh5sCm4uwUicbe6Tz03ZJt6dNOIEZZlZmOwQWy9/eJI'.PHP_EOL.'Vl1DZuApIuYkiy5dXWZQ+TMYSvxKw8sMqEY1kF6+2Rr4J+e6QQ+ftrcr87mxhxxw'.PHP_EOL.'S1jDHRU2ILp1a7sH/6l+V99rWbiluF2Dop/KQM73+NT8sTr3Z2FZTNu/3vvMZSU6'.PHP_EOL.'eawQx6qZJOj1Xke/RSwQMYSOh72mIqJ2hnwl0CrVYilIF9b0zbC2RkduLaeVoGco'.PHP_EOL.'m5Npo2z+daNsbjLveESoSpGVAwqsuwlTuuybLeHrHr4n+1d+Qqla79n8+FH5xrZF'.PHP_EOL.'XiV3BQ16MGEGiaD7ptxKrWUdcZOnBzTBIOYhR8TZbplnKxoWmYalMMWNMOp954DD'.PHP_EOL.'BvNKErtRz46clU2JDnDUoAsk2NdRFJ8jrW/JZEEy0UdoLu3qLHAN+/qmoRrTF4N7'.PHP_EOL.'jF/hnWp1fVl+zjGl0DLNlaayVSxchgO2JNero1gaOcIQ9iqd5UY5aE/qt7RR/N6q'.PHP_EOL.'oHqnr8vjZSioWuuNTuOcRZGXPqDF1T2o4mAtfe7oIhi03pvji2myoDbd80GK5/hK'.PHP_EOL.'qhiKZt3ZhWNcVEUU1nZeon7AGphwPnEh+50w3pblwAPinlxNDXX/4SoinysPGJY6'.PHP_EOL.'z483xJBMgTtlhDqdr6VIhOlyE3Jut4T1KqHOW6hjvUM3yhC5QkeiesBbkeH9WugY'.PHP_EOL.'HGls71d02HDResL5L2If0MMRR51qczYPOc9Rmwce60bwfQr0ATJZFLTWwDCsXvdk'.PHP_EOL.'bnurLkhyJgwdm4VuRjSXPBsX693XmOA18/glOZkPaxVbBWAjtCn1PaF3S65kv+G4'.PHP_EOL.'eXZtpELIL8NIj1zqner1R3+0E3/IJw1xRXHStLoQZ/MzxVg4bDKIFUECBUOMFeIo'.PHP_EOL.'GxRVYDeWN861iEsoEMeSqG+hBpzNIjZ8pfsvtzCBd4F1ySho2GejqYKlkFqa7IFn'.PHP_EOL.'UjLpOeC5CLn0wIIp2JzMil966ZtIMSi/LYhtCY+qV38kjpY65+CV2IhO7eFdHko1'.PHP_EOL.'rNqfaZzc2sq7VIRdml3NvjAllnbpT/XETYYswmu7TnJmhU0SQ3vYOFqAzVHmiofA'.PHP_EOL.'/NFyfdqF1i9TMOg/pQcSlrvoDbeWpp9jsX3yXrqGYCddeUQrMRXC2FijFYA1i1Wz'.PHP_EOL.'Gz02S00l00wHc4IycKj0FaR5+aOWvMwlKQE//WZ/E3ajdbW0w1emTk5A87bT95Y8'.PHP_EOL.'XeJiGhtKjx9zHNe3D1uDUFevRMAOPSGX/PiPD3fBUYYuWwDepiy1rLQj3ImAcFma'.PHP_EOL.'HFztXUnM1Z3DEgOZGADl4KbUQtUHGki6n1YZmVSzWvPCpfMj7fuLuXd3AV8J/+La'.PHP_EOL.'Dyb6A1CO4zpiqRLP5cpyf6wkSDVdIyGgHXmyBgT1T7Y5778QYsrR05TbPIc7jQXy'.PHP_EOL.'CG+Epam4BwhNf9CcQyt6bCyIKXQ8ScZn3wFfOVG93UwU1zRlTDM37BNXGziM2S14'.PHP_EOL.'1unQyMgoDljoWIIRfqSg1Zj1wtdI2DhcbgixZFCt8ifZZYXP+eHOVpk2b81QzWSY'.PHP_EOL.'pFEQ+ay9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEATPINk/17H+RLz459iCVQAGes'.PHP_EOL.'8kc5sxYj3CkMlWrGMiCxvsgu2kak6dCa0f3DfiVt54Fry7s0OklHiZmipoiF4RCt'.PHP_EOL.'yJwUSAzRrZFAbkpDg8oIu4Ui/Bt13kY7xON+u4m0IgkLZSE+8BSjMrfjVvVxe+qH'.PHP_EOL.'5i7X/ibUTDjgyfdA8XI='],
+ 'x5c' => [
+ 'MIIR2jCCEUMCAg4EMA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIx' . PHP_EOL . 'MDEwMTIxNzQ5WhcNMTcxMDA5MTIxNzQ5WjBKMQswCQYDVQQGDAJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wghAiMA0GCSqGSIb3DQEBAQUAA4IQDwAwghAKAoIQAQCrM8WwUh/dxJ6z' . PHP_EOL . 'bkOWhXfLd3yAoxxlUT8RD/p78xmfKoNu44Q/f3JCzdq6fNtlGg7xfDyUugk126Io' . PHP_EOL . 'qxyjuh0jvneQG/PV4vKR76xYFVm21udjLP0ATdld8Bv2sdbYDGAioc2xA6wslL92' . PHP_EOL . 'i4ZnDFrA10T3RYzhAbzRsOmTHEd85u2Zkhtmg4VJ6iQMcDmOiRAbMnrm3oBG1A4i' . PHP_EOL . 'G3zikiUCvxE7S8JSInRHhN0B99t0i6QxxV9KhkGVkn+r7IG0+ioHU2avXHUWoK1H' . PHP_EOL . 'zU2sS12nsJQfLjIsiyQzMdPAkvbh3HzM9L1EEgC5Hoc7qyhDBCApjk1ibJpka5YO' . PHP_EOL . 'vPDQuiv3+ONzHfHs2VcRR98bJR1P9tnqjCyB35Km+dupc9ch/67kkftp9JS5qPK0' . PHP_EOL . 'ecZWKVA6kSDToHQX4C6ZQTHy90s9zMLHQIQPXWaFGFPV5FA8mXPGCoDbZI3VjPQ/' . PHP_EOL . 'nlHxBt8Vhx+WkS1lseZ2/AxKKkSgRTIjxoD3Pbryg1WecAaEbdw6qTz7gc6+2pn0' . PHP_EOL . 'shzyNRxAu1Zf48lq/0R4+da5XqkXDO8pzCXT2bTzEh8iH0O8VUnPcWSz5fpzW1Wj' . PHP_EOL . 'ZVqV+2WPx+eXO71aCjCeTCEzgo3ZSlwdx9/gb6/3NySFylE5LNnVrHmY85QwXoHY' . PHP_EOL . '5VrAyF/eWL0D0kSkEPFW7b6BlTo1uG98fV/g9009SeVqw/KUefirPhLr9XV+7GGj' . PHP_EOL . '7Y79XvbDdXkUMGL6bYP28NVC8m26iInFQTI5ZrGx6e7OgWWreM0fCbRKJpvBWNoz' . PHP_EOL . 'Kt7iqS2Yeiku4tfaLEwTettO1pcsBqXL63ZfqhLicXKHA/1/9ZslvhiH9EPGSw+P' . PHP_EOL . 'WFH/icfjc1NiNkGUsMzRhFvjFHMWYBNA5SE+i7otJRuXxOXbPtZgXOVwqAfCRZFp' . PHP_EOL . 'MZRXxLP+H78h+BkO8K3LIuHO9Y6Z8kGGxXWdNsOuvwOK9kYfmG4E0fzy/+BsJXDf' . PHP_EOL . 'poCMfwGeZwdDQiZRTBeiIHWJZJYHfHXF1icDJB/lFXY8rzrBVzgQFHFbox4kdZmv' . PHP_EOL . '6QWAe1zCTbKzwx7AvzGUqzVLrgA8Ba0P5awsYSdRUx8zkS5aOhL2QHgEjgMLozS7' . PHP_EOL . 'IONoK4W7zTAyZZ/H0Lf5jbHuXkvDQbiBFxST4Xc420p+zEyoCZXppRWReZ2Rfkst' . PHP_EOL . 'rXTkKkhWp+UzjQI+XmaVUYQWVN/27TNyXJDT/6pa3vxnOSmiU+P1coeKR1gD8Mpu' . PHP_EOL . '+1+C2A0LTsYjAFy2hCw6soY7GKB5bOsDB9L1Lla3uG9yzZHRjTiteh5JM9sdYu6a' . PHP_EOL . 'wlgvELYc+1qbcjFAnMKWMg4UHlKqL1Ys7mX/KOZQZLYXPLkOS7IW4Lejv2sH5W7T' . PHP_EOL . 'OkdDmwd1vJiR++LdBnHiMu6PaSL7f/VCPtF9V13XJZ652cVTLlAZ9aHf5Whor1Qh' . PHP_EOL . 'nUR5frajBdMY04mi+f3Ix3BtebLvmquQ9dp0VAbeWe6qr9Rx3xkBgm/B9Bvq6FNK' . PHP_EOL . '/WRIUKnHLJpIFiMtTjhAMXoVGH9AcswEzYNVqw5PSGwXZRawhdSd6gkeT+pVlJGa' . PHP_EOL . 'PkQNoitYBQRl8v+B6LBxbf8vdj2JocyQH3d8c2xUSkuZM768sdkdg3Rz6Qo1UHD/' . PHP_EOL . 'jTEZnlmA8mVPgllW8Eq4HaRrY6xItxFdm/NlllOetEdv/12eAaQWkjSBzqAW7Z3W' . PHP_EOL . 'Y8ggWnolLsAnj+xgoTjLG4YbsiwDgSuc0EQr1KvVdK7T8p9wi/rd2b8DJsODW+ao' . PHP_EOL . 'wsKXkSI/04gWxZ0gzjb3vQ8f2HxGLspSfQPndFJFWRXfw1bfXYDYlgId8R9sjHKJ' . PHP_EOL . 'sQiuy6yJv3zHoF52H7cGmxbKKHZeUNPoAXAl0PRxz9R/npWq/3BpS2xLH7XEHCWJ' . PHP_EOL . 'nfkwqr4h9XqFwucWAuHGypqRXxoUsATMjxSWd53rONEALbxpoM5lwV0oQwPTAc9R' . PHP_EOL . 'bz71RNDECC6Dyi0QhNZKQq5vJdt2h+lVr1fCOrX6Mtvh7KWp7LRGiQqsc7oHsXcq' . PHP_EOL . '1QXxmybSYYSDue9SGMQEUvcCqQuR7k1v/vy6pve3NkXeI7qCEQ1qv2zUNQhio2Rs' . PHP_EOL . 'xJ6HuyaARH88FQHQwYypGfHypyvm3nIES6tnuqrv4tigk6hzpTBo+tA38AVGi7i6' . PHP_EOL . 'CJGvEiu87CsM+vjLbOiL1cqcEG5gye3YCQZUI0gDRY4qCZ7HjH/Y2uLYmVGJ4A/A' . PHP_EOL . '099bk8uTI9VF/DR03OGDtywyXVZy13DUmkcmGAyzC6FiFFYbLNhYThlTyW9BaoDj' . PHP_EOL . 'Yw4p9SLEBXguYTMbPZ5FBI8ZaMsLzn6ZzF/++yyYP6Zu4kCPOUsPPPCWWtMMJCu3' . PHP_EOL . 'XwN+2kAAeEPmEbYeZAf1EPNxLeyeIjHinbPKoEdVCxYzvgGVCNs4OOAdEd6tODFh' . PHP_EOL . 'o2aHgpEDfyWZv2iatSEjZDQuPkIXah/8Cl3t+jy7oukGl0S2KuSf/v7288+IZ6sK' . PHP_EOL . 'VXqVKOg2L8j+EcKd4Cr7cpmruEzleWIk+9SvCz+bRfmfr99rN2T6A6iES4XQCr/U' . PHP_EOL . 'jnrfexL4MasXJqfYruh6gEZA333j6TB5NHSUuSjXicLnCe+LNuy/uwNQ0lOMzssx' . PHP_EOL . 'giuEoQgtOOMZDpa4KRiFC4zhECfHviMUhyFbylLW0SdRwg7IFaAUH0zbN1s2YmDu' . PHP_EOL . '8fjeaZfjTyMxhUqz0JDPZjtW7fdLR1Kn2xbEzUpREQVXLXFNtWAo3EvE7NeIs6Ob' . PHP_EOL . '9vgSJ8AdmH8pN/Q86blERJT5NKs7b3Lmm5Mcv48u44TfSOvFdoqFblTOZAtQyEEY' . PHP_EOL . 'juB5g/p8TpDHJSLSAP+0t0ybPFOVmI5eQToecFD7cCvni4D5EVSGfNT5dPfCb754' . PHP_EOL . 'g2y+rKscLItCWYzvVoFecyUfmDQ0mN2bjZdJ5xOilZ8UJ9w17X65+lS4wYaDQLcv' . PHP_EOL . 'FU3l+ROYHb/qBqLQAeHh02F58aQoJnk5xI20D9RQjWcqv/CA9MjhfVxq031ET2Yx' . PHP_EOL . 'iE634jmA5VEKKHENxRwGXZqlRoUr6Mc+zmsAGqHKRuL905L7PLjYjzpVy7gH7/QY' . PHP_EOL . '2VEg9EtlYUiE1HL+R8I6riRvhIr0ONO8exqrphYygv0mTcmKq8fjKsxnpP5cQV0n' . PHP_EOL . 'wMZJzjWWjVgnCEVS7R4ZsYUrHJQGse/WX0HI+upZqJ6mcEGx1rjLwbdKiIJ+d3CR' . PHP_EOL . 'u8t4TnKRiC6s+mRhf9tq7Y+qygCSIn8aZuK0qlcPvULk+bO/Mu+nGSALqFCr6/gv' . PHP_EOL . 'hYt6UAO8Gl6KRf2TbeqFHkfeaTM14xmAfKgWKzLXrVwOA6VyDriDoLZTMkqVvkLW' . PHP_EOL . '06VDAzd92btyMElc6O7GCLwTDHqi/3R55qogR8W+dS7X8gL+0W970/9SzbUCTne/' . PHP_EOL . 'BK2Ue55ge150mweDzgLk+m3/PUsVHceHybWk6eVveQnDl4am+xfB5msgg3Ry/DP4' . PHP_EOL . '1n+isjGM/Et/bfDL7L6WE5srXsF9fWD6nvn1e1FJobhGP9B51q5ccAD5IqC/AA5j' . PHP_EOL . 'eQG5aj07HHvclsLWSi/nlOR5wePaVc7+jj07ksI5r+HScchVvckgZai3XWwX/rPA' . PHP_EOL . '3MUzZa0cU27si72GWW6YLyu/PccRvKW9I9BjMFArLw1LILpP3BsfpwBhj6+Xn2rU' . PHP_EOL . 'ngPAEfcMcqgwB5zwieWcE796QlrxIx1AxnGi/QFrElzRb//b3DZLNrRwGwyyV+lE' . PHP_EOL . 'hZFYxviM2nK8LIRXGsZ/sBqQ6XT/0/ckJDajxy5/4EaD/P+JDdpMxhVaL+la7GeG' . PHP_EOL . 'Hk1yGNBTwLd3G+cR3RN72aYOW9mH430ZQujS2XMfPdZmeJSnubFVDeeR5LfUzQsg' . PHP_EOL . 'gXdJ61IyNesYn/hvMCdvcSMfjh4W6+A6InwKFcsKYcu0ikVrRZILphWkHGp8+vGR' . PHP_EOL . '74PIHYu/P/joxJDiIq8IWF1hbEG3BcJkM3kO3hcWkyScv9We5VTxrn+tGqkR5u/9' . PHP_EOL . 'UXWkFmy99MrpRcVYACkW8vh5sCm4uwUicbe6Tz03ZJt6dNOIEZZlZmOwQWy9/eJI' . PHP_EOL . 'Vl1DZuApIuYkiy5dXWZQ+TMYSvxKw8sMqEY1kF6+2Rr4J+e6QQ+ftrcr87mxhxxw' . PHP_EOL . 'S1jDHRU2ILp1a7sH/6l+V99rWbiluF2Dop/KQM73+NT8sTr3Z2FZTNu/3vvMZSU6' . PHP_EOL . 'eawQx6qZJOj1Xke/RSwQMYSOh72mIqJ2hnwl0CrVYilIF9b0zbC2RkduLaeVoGco' . PHP_EOL . 'm5Npo2z+daNsbjLveESoSpGVAwqsuwlTuuybLeHrHr4n+1d+Qqla79n8+FH5xrZF' . PHP_EOL . 'XiV3BQ16MGEGiaD7ptxKrWUdcZOnBzTBIOYhR8TZbplnKxoWmYalMMWNMOp954DD' . PHP_EOL . 'BvNKErtRz46clU2JDnDUoAsk2NdRFJ8jrW/JZEEy0UdoLu3qLHAN+/qmoRrTF4N7' . PHP_EOL . 'jF/hnWp1fVl+zjGl0DLNlaayVSxchgO2JNero1gaOcIQ9iqd5UY5aE/qt7RR/N6q' . PHP_EOL . 'oHqnr8vjZSioWuuNTuOcRZGXPqDF1T2o4mAtfe7oIhi03pvji2myoDbd80GK5/hK' . PHP_EOL . 'qhiKZt3ZhWNcVEUU1nZeon7AGphwPnEh+50w3pblwAPinlxNDXX/4SoinysPGJY6' . PHP_EOL . 'z483xJBMgTtlhDqdr6VIhOlyE3Jut4T1KqHOW6hjvUM3yhC5QkeiesBbkeH9WugY' . PHP_EOL . 'HGls71d02HDResL5L2If0MMRR51qczYPOc9Rmwce60bwfQr0ATJZFLTWwDCsXvdk' . PHP_EOL . 'bnurLkhyJgwdm4VuRjSXPBsX693XmOA18/glOZkPaxVbBWAjtCn1PaF3S65kv+G4' . PHP_EOL . 'eXZtpELIL8NIj1zqner1R3+0E3/IJw1xRXHStLoQZ/MzxVg4bDKIFUECBUOMFeIo' . PHP_EOL . 'GxRVYDeWN861iEsoEMeSqG+hBpzNIjZ8pfsvtzCBd4F1ySho2GejqYKlkFqa7IFn' . PHP_EOL . 'UjLpOeC5CLn0wIIp2JzMil966ZtIMSi/LYhtCY+qV38kjpY65+CV2IhO7eFdHko1' . PHP_EOL . 'rNqfaZzc2sq7VIRdml3NvjAllnbpT/XETYYswmu7TnJmhU0SQ3vYOFqAzVHmiofA' . PHP_EOL . '/NFyfdqF1i9TMOg/pQcSlrvoDbeWpp9jsX3yXrqGYCddeUQrMRXC2FijFYA1i1Wz' . PHP_EOL . 'Gz02S00l00wHc4IycKj0FaR5+aOWvMwlKQE//WZ/E3ajdbW0w1emTk5A87bT95Y8' . PHP_EOL . 'XeJiGhtKjx9zHNe3D1uDUFevRMAOPSGX/PiPD3fBUYYuWwDepiy1rLQj3ImAcFma' . PHP_EOL . 'HFztXUnM1Z3DEgOZGADl4KbUQtUHGki6n1YZmVSzWvPCpfMj7fuLuXd3AV8J/+La' . PHP_EOL . 'Dyb6A1CO4zpiqRLP5cpyf6wkSDVdIyGgHXmyBgT1T7Y5778QYsrR05TbPIc7jQXy' . PHP_EOL . 'CG+Epam4BwhNf9CcQyt6bCyIKXQ8ScZn3wFfOVG93UwU1zRlTDM37BNXGziM2S14' . PHP_EOL . '1unQyMgoDljoWIIRfqSg1Zj1wtdI2DhcbgixZFCt8ifZZYXP+eHOVpk2b81QzWSY' . PHP_EOL . 'pFEQ+ay9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEATPINk/17H+RLz459iCVQAGes' . PHP_EOL . '8kc5sxYj3CkMlWrGMiCxvsgu2kak6dCa0f3DfiVt54Fry7s0OklHiZmipoiF4RCt' . PHP_EOL . 'yJwUSAzRrZFAbkpDg8oIu4Ui/Bt13kY7xON+u4m0IgkLZSE+8BSjMrfjVvVxe+qH' . PHP_EOL . '5i7X/ibUTDjgyfdA8XI=',
+ ],
],
],
[
- __DIR__.'/RSA/DER/512b-rsa-example-cert.der',
+ __DIR__ . '/RSA/DER/512b-rsa-example-cert.der',
[
'kty' => 'RSA',
'n' => 'm_xmkHmEQrurE_0re_jeFRLl8ZPjBop7uLHhnia7lQG_5zDtZIUC3RVpqDSwBuw_NTweGyuP-o8AG98HxqxTBw',
'e' => 'AQAB',
'x5t' => 'Bxy5TwzIUU0CQSRwjuiyaHvX2dU',
'x5t#256' => 'Xw-1FmWBquZKEBwVg7G-vnToFKkeeooUuh6DXXj26ec',
- 'x5c' => ['MIICEjCCAXsCAg36MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'ODIyMDUyNjU0WhcNMTcwODIxMDUyNjU0WjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wXDANBgkqhkiG9w0BAQEFAANLADBIAkEAm/xmkHmEQrurE/0re/jeFRLl'.PHP_EOL.'8ZPjBop7uLHhnia7lQG/5zDtZIUC3RVpqDSwBuw/NTweGyuP+o8AG98HxqxTBwID'.PHP_EOL.'AQABMA0GCSqGSIb3DQEBBQUAA4GBABS2TLuBeTPmcaTaUW/LCB2NYOy8GMdzR1mx'.PHP_EOL.'8iBIu2H6/E2tiY3RIevV2OW61qY2/XRQg7YPxx3ffeUugX9F4J/iPnnu1zAxxyBy'.PHP_EOL.'2VguKv4SWjRFoRkIfIlHX0qVviMhSlNy2ioFLy7JcPZb+v3ftDGywUqcBiVDoea0'.PHP_EOL.'Hn+GmxZA'],
+ 'x5c' => [
+ 'MIICEjCCAXsCAg36MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'ODIyMDUyNjU0WhcNMTcwODIxMDUyNjU0WjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wXDANBgkqhkiG9w0BAQEFAANLADBIAkEAm/xmkHmEQrurE/0re/jeFRLl' . PHP_EOL . '8ZPjBop7uLHhnia7lQG/5zDtZIUC3RVpqDSwBuw/NTweGyuP+o8AG98HxqxTBwID' . PHP_EOL . 'AQABMA0GCSqGSIb3DQEBBQUAA4GBABS2TLuBeTPmcaTaUW/LCB2NYOy8GMdzR1mx' . PHP_EOL . '8iBIu2H6/E2tiY3RIevV2OW61qY2/XRQg7YPxx3ffeUugX9F4J/iPnnu1zAxxyBy' . PHP_EOL . '2VguKv4SWjRFoRkIfIlHX0qVviMhSlNy2ioFLy7JcPZb+v3ftDGywUqcBiVDoea0' . PHP_EOL . 'Hn+GmxZA',
+ ],
],
],
[
- __DIR__.'/RSA/DER/1024b-rsa-example-cert.der',
+ __DIR__ . '/RSA/DER/1024b-rsa-example-cert.der',
[
'kty' => 'RSA',
'n' => 'xgEGvHk-U_RY0j9l3MP7o-S2a6uf4XaRBhu1ztdCHz8tMG8Kj4_qJmgsSZQD17sRctHGBTUJWp4CLtBwCf0zAGVzySwUkcHSu1_2mZ_w7Nr0TQHKeWr_j8pvXH534DKEvugr21DAHbi4c654eLUL-JW_wJJYqJh7qHM3W3Fh7ys',
'e' => 'AQAB',
'x5t' => '4bK45ewZ00Wk-a_shpTw2cCqJc8',
'x5t#256' => '5F5GTPOxBGAOsVyuYzqUBjri0R2YDTiDowiQbs6oGgU',
- 'x5c' => ['MIICVjCCAb8CAg37MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'ODIyMDUyNzIzWhcNMTcwODIxMDUyNzIzWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYBBrx5PlP0WNI/ZdzD'.PHP_EOL.'+6Pktmurn+F2kQYbtc7XQh8/LTBvCo+P6iZoLEmUA9e7EXLRxgU1CVqeAi7QcAn9'.PHP_EOL.'MwBlc8ksFJHB0rtf9pmf8Oza9E0Bynlq/4/Kb1x+d+AyhL7oK9tQwB24uHOueHi1'.PHP_EOL.'C/iVv8CSWKiYe6hzN1txYe8rAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAASPdjigJ'.PHP_EOL.'kXCqKWpnZ/Oc75EUcMi6HztaW8abUMlYXPIgkV2F7YanHOB7K4f7OOLjiz8DTPFf'.PHP_EOL.'jC9UeuErhaA/zzWi8ewMTFZW/WshOrm3fNvcMrMLKtH534JKvcdMg6qIdjTFINIr'.PHP_EOL.'evnAhf0cwULaebn+lMs8Pdl7y37+sfluVok='],
+ 'x5c' => [
+ 'MIICVjCCAb8CAg37MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'ODIyMDUyNzIzWhcNMTcwODIxMDUyNzIzWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYBBrx5PlP0WNI/ZdzD' . PHP_EOL . '+6Pktmurn+F2kQYbtc7XQh8/LTBvCo+P6iZoLEmUA9e7EXLRxgU1CVqeAi7QcAn9' . PHP_EOL . 'MwBlc8ksFJHB0rtf9pmf8Oza9E0Bynlq/4/Kb1x+d+AyhL7oK9tQwB24uHOueHi1' . PHP_EOL . 'C/iVv8CSWKiYe6hzN1txYe8rAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAASPdjigJ' . PHP_EOL . 'kXCqKWpnZ/Oc75EUcMi6HztaW8abUMlYXPIgkV2F7YanHOB7K4f7OOLjiz8DTPFf' . PHP_EOL . 'jC9UeuErhaA/zzWi8ewMTFZW/WshOrm3fNvcMrMLKtH534JKvcdMg6qIdjTFINIr' . PHP_EOL . 'evnAhf0cwULaebn+lMs8Pdl7y37+sfluVok=',
+ ],
],
],
[
- __DIR__.'/RSA/DER/2048b-rsa-example-cert.der',
+ __DIR__ . '/RSA/DER/2048b-rsa-example-cert.der',
[
'kty' => 'RSA',
'n' => 'tM_RXjMp7AvPrnb1_i3ImcZ4ebkY-AvUurTXngJSBgn0GJNM1HDRQqApE5JzUHf2BImsAyzW8QarrWzA2dWmq8rNWtJWJlHlSwiKr8wZDyU0kLAqKUEPVfFrk9uds8zc7OvHVRjXQiXeSTUUMpKcHsZp4zz79Jr4-4vF4Bt-_U8luj_llleaJHlJFyfXiUtqLg2HUdkjPQaFVvhYMQ7ugZl4aM1uRH7J2oxaexy_JEApSNEDnO_cripd-Pdqx-m8xbBZ9pX8FsvYnO3D_BKQk3hadbRWg_r8QYT2ZHk0NRyseoUOc3hyAeckiSWe2n9lvK-HkxmM23UVtuAwxwj4WQ',
'e' => 'AQAB',
'x5t' => 'y17eUFeZUYeOLmcTxTvpOOsjfkA',
'x5t#256' => 'B4plbjZwSZyZG7AnRoIFive9wF_EYsYF8PiVgXmBbNc',
- 'x5c' => ['MIIC2jCCAkMCAg38MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'ODIyMDUyNzQxWhcNMTcwODIxMDUyNzQxWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0z9FeMynsC8+u'.PHP_EOL.'dvX+LciZxnh5uRj4C9S6tNeeAlIGCfQYk0zUcNFCoCkTknNQd/YEiawDLNbxBqut'.PHP_EOL.'bMDZ1aarys1a0lYmUeVLCIqvzBkPJTSQsCopQQ9V8WuT252zzNzs68dVGNdCJd5J'.PHP_EOL.'NRQykpwexmnjPPv0mvj7i8XgG379TyW6P+WWV5okeUkXJ9eJS2ouDYdR2SM9BoVW'.PHP_EOL.'+FgxDu6BmXhozW5EfsnajFp7HL8kQClI0QOc79yuKl3492rH6bzFsFn2lfwWy9ic'.PHP_EOL.'7cP8EpCTeFp1tFaD+vxBhPZkeTQ1HKx6hQ5zeHIB5ySJJZ7af2W8r4eTGYzbdRW2'.PHP_EOL.'4DDHCPhZAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAQMv+BFvGdMVzkQaQ3/+2noVz'.PHP_EOL.'/uAKbzpEL8xTcxYyP3lkOeh4FoxiSWqy5pGFALdPONoDuYFpLhjJSZaEwuvjI/Tr'.PHP_EOL.'rGhLV1pRG9frwDFshqD2Vaj4ENBCBh6UpeBop5+285zQ4SI7q4U9oSebUDJiuOx6'.PHP_EOL.'+tZ9KynmrbJpTSi0+BM='],
+ 'x5c' => [
+ 'MIIC2jCCAkMCAg38MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'ODIyMDUyNzQxWhcNMTcwODIxMDUyNzQxWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0z9FeMynsC8+u' . PHP_EOL . 'dvX+LciZxnh5uRj4C9S6tNeeAlIGCfQYk0zUcNFCoCkTknNQd/YEiawDLNbxBqut' . PHP_EOL . 'bMDZ1aarys1a0lYmUeVLCIqvzBkPJTSQsCopQQ9V8WuT252zzNzs68dVGNdCJd5J' . PHP_EOL . 'NRQykpwexmnjPPv0mvj7i8XgG379TyW6P+WWV5okeUkXJ9eJS2ouDYdR2SM9BoVW' . PHP_EOL . '+FgxDu6BmXhozW5EfsnajFp7HL8kQClI0QOc79yuKl3492rH6bzFsFn2lfwWy9ic' . PHP_EOL . '7cP8EpCTeFp1tFaD+vxBhPZkeTQ1HKx6hQ5zeHIB5ySJJZ7af2W8r4eTGYzbdRW2' . PHP_EOL . '4DDHCPhZAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAQMv+BFvGdMVzkQaQ3/+2noVz' . PHP_EOL . '/uAKbzpEL8xTcxYyP3lkOeh4FoxiSWqy5pGFALdPONoDuYFpLhjJSZaEwuvjI/Tr' . PHP_EOL . 'rGhLV1pRG9frwDFshqD2Vaj4ENBCBh6UpeBop5+285zQ4SI7q4U9oSebUDJiuOx6' . PHP_EOL . '+tZ9KynmrbJpTSi0+BM=',
+ ],
],
],
[
- __DIR__.'/RSA/DER/4096b-rsa-example-cert.der',
+ __DIR__ . '/RSA/DER/4096b-rsa-example-cert.der',
[
'kty' => 'RSA',
'n' => 'sL1iEzi3sk20tUP1GnKniCyCtelBy70spiJW24k-5qQ-EjMAd-N8aSJVzeuHwtGNcpU-iy3l-ErewHCaxiFdwDJiXLA7Dc4KOe-y6rTb5zpCx9BqI4rBRCkIkRF-oDoKvbVkqsGhDXHExLAF7legENUk_hterNNIjfdoY1_Vf1eurJ0cE7Cf6eFkaS0nQI-Nu9oYjNfaiIPc64fdntq0MuxP1EoVuIKTq4YNn-n3AgZvmlyIGvqsWki3IXA1Lz166SMU3fzlkNt0IbyBM5Bmz5QQPCezcPSgsmsW2DARW9YtJQY8Ci45nKIoYiOz1bYQDrvwe9Q9oSnBYyqX7-A9VGpv9FbpisIcLoWVTYy6tQUdRSkSdQoqCxuMAk69C1YLb71MoRa0vtz3VEdE-R5QEFjzMkAx4AqWzh1tMHNIW7jXjv5UvNi44nhjRcSpjARRfZbDds7AOkMN9l5G9vxBZbVwrabjsFc7XZODA652g18vczGbqhR6b-ZVk2w1cA3chEDXJWJWwBGw3rxEKP6wDmRZfeDLut6wIC4j3mTeCHUv-PKK-SmkGgjntA7gG-BljSEONnGEOU7BB1rfhSDgDEqX_YTT4w3rtbn3-NAzrbIshnl_TVYqirbbWh6b3e629s7GrG3ABlJfnzUCY-KiJj0gfU4amaj07pBHDPzbW3k',
'e' => 'AQAB',
'x5t' => 'IBO6381r3QWOObmNaxF36HBgO5M',
'x5t#256' => 'yVWIatQnBpbU9lUGZmRlGg2bldGtJPpqQXfq3LhBq3M',
- 'x5c' => ['MIID2jCCA0MCAg39MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'ODIyMDUyODAwWhcNMTcwODIxMDUyODAwWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwvWITOLeyTbS1'.PHP_EOL.'Q/UacqeILIK16UHLvSymIlbbiT7mpD4SMwB343xpIlXN64fC0Y1ylT6LLeX4St7A'.PHP_EOL.'cJrGIV3AMmJcsDsNzgo577LqtNvnOkLH0GojisFEKQiREX6gOgq9tWSqwaENccTE'.PHP_EOL.'sAXuV6AQ1ST+G16s00iN92hjX9V/V66snRwTsJ/p4WRpLSdAj4272hiM19qIg9zr'.PHP_EOL.'h92e2rQy7E/UShW4gpOrhg2f6fcCBm+aXIga+qxaSLchcDUvPXrpIxTd/OWQ23Qh'.PHP_EOL.'vIEzkGbPlBA8J7Nw9KCyaxbYMBFb1i0lBjwKLjmcoihiI7PVthAOu/B71D2hKcFj'.PHP_EOL.'Kpfv4D1Uam/0VumKwhwuhZVNjLq1BR1FKRJ1CioLG4wCTr0LVgtvvUyhFrS+3PdU'.PHP_EOL.'R0T5HlAQWPMyQDHgCpbOHW0wc0hbuNeO/lS82LjieGNFxKmMBFF9lsN2zsA6Qw32'.PHP_EOL.'Xkb2/EFltXCtpuOwVztdk4MDrnaDXy9zMZuqFHpv5lWTbDVwDdyEQNclYlbAEbDe'.PHP_EOL.'vEQo/rAOZFl94Mu63rAgLiPeZN4IdS/48or5KaQaCOe0DuAb4GWNIQ42cYQ5TsEH'.PHP_EOL.'Wt+FIOAMSpf9hNPjDeu1uff40DOtsiyGeX9NViqKtttaHpvd7rb2zsasbcAGUl+f'.PHP_EOL.'NQJj4qImPSB9ThqZqPTukEcM/NtbeQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAIAi'.PHP_EOL.'gU3My8kYYniDuKEXSJmbVB+K1upHxWDA8R6KMZGXfbe5BRd8s40cY6JBYL52Tgqd'.PHP_EOL.'l8z5Ek8dC4NNpfpcZc/teT1WqiO2wnpGHjgMDuDL1mxCZNL422jHpiPWkWp3AuDI'.PHP_EOL.'c7tL1QjbfAUHAQYwmHkWgPP+T2wAv0pOt36GgMCM'],
+ 'x5c' => [
+ 'MIID2jCCA0MCAg39MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'ODIyMDUyODAwWhcNMTcwODIxMDUyODAwWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwvWITOLeyTbS1' . PHP_EOL . 'Q/UacqeILIK16UHLvSymIlbbiT7mpD4SMwB343xpIlXN64fC0Y1ylT6LLeX4St7A' . PHP_EOL . 'cJrGIV3AMmJcsDsNzgo577LqtNvnOkLH0GojisFEKQiREX6gOgq9tWSqwaENccTE' . PHP_EOL . 'sAXuV6AQ1ST+G16s00iN92hjX9V/V66snRwTsJ/p4WRpLSdAj4272hiM19qIg9zr' . PHP_EOL . 'h92e2rQy7E/UShW4gpOrhg2f6fcCBm+aXIga+qxaSLchcDUvPXrpIxTd/OWQ23Qh' . PHP_EOL . 'vIEzkGbPlBA8J7Nw9KCyaxbYMBFb1i0lBjwKLjmcoihiI7PVthAOu/B71D2hKcFj' . PHP_EOL . 'Kpfv4D1Uam/0VumKwhwuhZVNjLq1BR1FKRJ1CioLG4wCTr0LVgtvvUyhFrS+3PdU' . PHP_EOL . 'R0T5HlAQWPMyQDHgCpbOHW0wc0hbuNeO/lS82LjieGNFxKmMBFF9lsN2zsA6Qw32' . PHP_EOL . 'Xkb2/EFltXCtpuOwVztdk4MDrnaDXy9zMZuqFHpv5lWTbDVwDdyEQNclYlbAEbDe' . PHP_EOL . 'vEQo/rAOZFl94Mu63rAgLiPeZN4IdS/48or5KaQaCOe0DuAb4GWNIQ42cYQ5TsEH' . PHP_EOL . 'Wt+FIOAMSpf9hNPjDeu1uff40DOtsiyGeX9NViqKtttaHpvd7rb2zsasbcAGUl+f' . PHP_EOL . 'NQJj4qImPSB9ThqZqPTukEcM/NtbeQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAIAi' . PHP_EOL . 'gU3My8kYYniDuKEXSJmbVB+K1upHxWDA8R6KMZGXfbe5BRd8s40cY6JBYL52Tgqd' . PHP_EOL . 'l8z5Ek8dC4NNpfpcZc/teT1WqiO2wnpGHjgMDuDL1mxCZNL422jHpiPWkWp3AuDI' . PHP_EOL . 'c7tL1QjbfAUHAQYwmHkWgPP+T2wAv0pOt36GgMCM',
+ ],
],
],
[
- __DIR__.'/RSA/DER/8192b-rsa-example-cert.der',
+ __DIR__ . '/RSA/DER/8192b-rsa-example-cert.der',
[
'kty' => 'RSA',
'n' => 'q5lcEwG8rUflI1aL6omAaF5R1DFkCMllFaQ3HUwlwCWYNNyKxF1G2e-P3Y6SFWyp0sFfmDcvuebOY_Dw3KlC756bQUMEXH6TaubYDcXaKDyrdKgCSoufjhwHkNpRz3VxpkLADJQIHdijes2JN3daGARxSJLcjoSaZvq_LBCIHTTDGESBXJP6RtbjAjGjuLUgmcvkl029Xl8ylkrcibjTzXmOod3vioTnX5aZNT1c7evmskvixWG1NlHOhZ1HdXiPHLjKxnr4lHl9lxtTjkNSsF-Nz0bYHCpWZ9u98nkgvFAxNUmiwX5nHIqo39AK8YVuVmDGYzY-dPtD1UtCBXgj-Ryq1cPU66H7kEfvbn1kZRF0XcxqIUVDlpa_h4Aq7r8KnQ6nVF59oM8AwsrRu3llvlRzNCaRUhafZ6YUHR19j_6GpAJtOWwwV5m2qKs9EhfL9Kvz9DqWh3DBt0CuGIDS0NuBAt2_RmNQBP1u7L8pYZ_9kV-Y7YM9ocbuYpUbTy4vio33Pl2wG8iozgPIgOcbne4Vh4TGpe0hbXaL-a_84CVOWX4JyLxyBEWGB6PLfH74NyXyvh57X6Cn3P0Xr2rSgPEgEEovw5i9qDeqqzeO-GvUouhQjZgURP5USjd120IPjVoZP8RPRCAPUBQSUmi2dyHANRI3ydIhTKOEdZCVvIlVNu33wfN55kEeLCXBiDvfvozUbCGuuOkbs5Yz7vE8K9xlU_Xo2icptY_u3XMPW6YKRP6lvGtovn9295vENHOJDFCVkcJ819vHVqJnoiGAf_QX0J74NLm6fnWboH6-5BcIDl18uB3qEFAlneRflIrC2XBZju-dTuTaHy14WvVJNjTMUBgVQ4gaS1X2wmAztwv-Rk8o6k-KJuSZDWVEZyH3NaddkYSVONOMzIuuClbg4cEgLP2cxxqz8JdnyT2NNfMdGfxP4Nd_RvPtTD9kTVewlurzYVjoi8CC6VhV2Tgcp-UvT6Z0Yne-65dXi31VRqQWG8adWQ3gc9NP1oXfJqVt26ldXF9AVf7PcFcm7xzr2mwZKY-DMk1m1hBvUGeg7Iab34OABOY6J4AxXiXqKx3JV24SFydaSSevsulSrmUJU3g8TR-WwTh06Yp8DZplCU9MEvfyUSShtHED72anVRgVe8jw47k9TavJ-hPiAq0HUmmKGUeKvrqWN4bMpSiMCmHTkcqS_d4Dn4ZAI8W0DIluc9sXBaiUUSIt6t7gGNOZGUyZ-ZN4GNxVlMazB6CieGRhoPfRmXw7wq0k2R5BU1Q8PSj8jrZ88DgdfENnWCGy6Aq450OwfufGaHZDwAUD1kUoRGBkzIxvkWLVdQtmP4iZXOLSany0RtPZLGjSH-x0vQ',
'e' => 'AQAB',
'x5t' => 'YV6dSQ9sNS7rhNWcj-M4XuMmOE4',
'x5t#256' => 'ZNEUscWwJu03bRinDYd0BAuwiWGG3oDocehVMwX2oVo',
- 'x5c' => ['MIIF2jCCBUMCAg3+MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'OTI3MDYwNzQ5WhcNMTcwOTI2MDYwNzQ5WjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wggQiMA0GCSqGSIb3DQEBAQUAA4IEDwAwggQKAoIEAQCrmVwTAbytR+Uj'.PHP_EOL.'VovqiYBoXlHUMWQIyWUVpDcdTCXAJZg03IrEXUbZ74/djpIVbKnSwV+YNy+55s5j'.PHP_EOL.'8PDcqULvnptBQwRcfpNq5tgNxdooPKt0qAJKi5+OHAeQ2lHPdXGmQsAMlAgd2KN6'.PHP_EOL.'zYk3d1oYBHFIktyOhJpm+r8sEIgdNMMYRIFck/pG1uMCMaO4tSCZy+SXTb1eXzKW'.PHP_EOL.'StyJuNPNeY6h3e+KhOdflpk1PVzt6+ayS+LFYbU2Uc6FnUd1eI8cuMrGeviUeX2X'.PHP_EOL.'G1OOQ1KwX43PRtgcKlZn273yeSC8UDE1SaLBfmcciqjf0ArxhW5WYMZjNj50+0PV'.PHP_EOL.'S0IFeCP5HKrVw9TrofuQR+9ufWRlEXRdzGohRUOWlr+HgCruvwqdDqdUXn2gzwDC'.PHP_EOL.'ytG7eWW+VHM0JpFSFp9nphQdHX2P/oakAm05bDBXmbaoqz0SF8v0q/P0OpaHcMG3'.PHP_EOL.'QK4YgNLQ24EC3b9GY1AE/W7svylhn/2RX5jtgz2hxu5ilRtPLi+Kjfc+XbAbyKjO'.PHP_EOL.'A8iA5xud7hWHhMal7SFtdov5r/zgJU5ZfgnIvHIERYYHo8t8fvg3JfK+HntfoKfc'.PHP_EOL.'/RevatKA8SAQSi/DmL2oN6qrN474a9Si6FCNmBRE/lRKN3XbQg+NWhk/xE9EIA9Q'.PHP_EOL.'FBJSaLZ3IcA1EjfJ0iFMo4R1kJW8iVU27ffB83nmQR4sJcGIO9++jNRsIa646Ruz'.PHP_EOL.'ljPu8Twr3GVT9ejaJym1j+7dcw9bpgpE/qW8a2i+f3b3m8Q0c4kMUJWRwnzX28dW'.PHP_EOL.'omeiIYB/9BfQnvg0ubp+dZugfr7kFwgOXXy4HeoQUCWd5F+UisLZcFmO751O5Nof'.PHP_EOL.'LXha9Uk2NMxQGBVDiBpLVfbCYDO3C/5GTyjqT4om5JkNZURnIfc1p12RhJU404zM'.PHP_EOL.'i64KVuDhwSAs/ZzHGrPwl2fJPY018x0Z/E/g139G8+1MP2RNV7CW6vNhWOiLwILp'.PHP_EOL.'WFXZOByn5S9PpnRid77rl1eLfVVGpBYbxp1ZDeBz00/Whd8mpW3bqV1cX0BV/s9w'.PHP_EOL.'VybvHOvabBkpj4MyTWbWEG9QZ6Dshpvfg4AE5jongDFeJeorHclXbhIXJ1pJJ6+y'.PHP_EOL.'6VKuZQlTeDxNH5bBOHTpinwNmmUJT0wS9/JRJKG0cQPvZqdVGBV7yPDjuT1Nq8n6'.PHP_EOL.'E+ICrQdSaYoZR4q+upY3hsylKIwKYdORypL93gOfhkAjxbQMiW5z2xcFqJRRIi3q'.PHP_EOL.'3uAY05kZTJn5k3gY3FWUxrMHoKJ4ZGGg99GZfDvCrSTZHkFTVDw9KPyOtnzwOB18'.PHP_EOL.'Q2dYIbLoCrjnQ7B+58ZodkPABQPWRShEYGTMjG+RYtV1C2Y/iJlc4tJqfLRG09ks'.PHP_EOL.'aNIf7HS9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAiXbxR0T+C6MT7Jh/SbDJ/1Gd'.PHP_EOL.'vbqskiKmmKnzOcX1x0uUHY4zHIhx3M0neYRr//XOh+FeSwM1JqAPztHy3SMRXzfP'.PHP_EOL.'xzm/nwbRwdK8C/fPy7H+uMV1mKumem8WSoOMOoxFJ+o2nJgyViwnEOu9EejlH1sc'.PHP_EOL.'uKPIoTCLUCInRRhrI84='],
+ 'x5c' => [
+ 'MIIF2jCCBUMCAg3+MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'OTI3MDYwNzQ5WhcNMTcwOTI2MDYwNzQ5WjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wggQiMA0GCSqGSIb3DQEBAQUAA4IEDwAwggQKAoIEAQCrmVwTAbytR+Uj' . PHP_EOL . 'VovqiYBoXlHUMWQIyWUVpDcdTCXAJZg03IrEXUbZ74/djpIVbKnSwV+YNy+55s5j' . PHP_EOL . '8PDcqULvnptBQwRcfpNq5tgNxdooPKt0qAJKi5+OHAeQ2lHPdXGmQsAMlAgd2KN6' . PHP_EOL . 'zYk3d1oYBHFIktyOhJpm+r8sEIgdNMMYRIFck/pG1uMCMaO4tSCZy+SXTb1eXzKW' . PHP_EOL . 'StyJuNPNeY6h3e+KhOdflpk1PVzt6+ayS+LFYbU2Uc6FnUd1eI8cuMrGeviUeX2X' . PHP_EOL . 'G1OOQ1KwX43PRtgcKlZn273yeSC8UDE1SaLBfmcciqjf0ArxhW5WYMZjNj50+0PV' . PHP_EOL . 'S0IFeCP5HKrVw9TrofuQR+9ufWRlEXRdzGohRUOWlr+HgCruvwqdDqdUXn2gzwDC' . PHP_EOL . 'ytG7eWW+VHM0JpFSFp9nphQdHX2P/oakAm05bDBXmbaoqz0SF8v0q/P0OpaHcMG3' . PHP_EOL . 'QK4YgNLQ24EC3b9GY1AE/W7svylhn/2RX5jtgz2hxu5ilRtPLi+Kjfc+XbAbyKjO' . PHP_EOL . 'A8iA5xud7hWHhMal7SFtdov5r/zgJU5ZfgnIvHIERYYHo8t8fvg3JfK+HntfoKfc' . PHP_EOL . '/RevatKA8SAQSi/DmL2oN6qrN474a9Si6FCNmBRE/lRKN3XbQg+NWhk/xE9EIA9Q' . PHP_EOL . 'FBJSaLZ3IcA1EjfJ0iFMo4R1kJW8iVU27ffB83nmQR4sJcGIO9++jNRsIa646Ruz' . PHP_EOL . 'ljPu8Twr3GVT9ejaJym1j+7dcw9bpgpE/qW8a2i+f3b3m8Q0c4kMUJWRwnzX28dW' . PHP_EOL . 'omeiIYB/9BfQnvg0ubp+dZugfr7kFwgOXXy4HeoQUCWd5F+UisLZcFmO751O5Nof' . PHP_EOL . 'LXha9Uk2NMxQGBVDiBpLVfbCYDO3C/5GTyjqT4om5JkNZURnIfc1p12RhJU404zM' . PHP_EOL . 'i64KVuDhwSAs/ZzHGrPwl2fJPY018x0Z/E/g139G8+1MP2RNV7CW6vNhWOiLwILp' . PHP_EOL . 'WFXZOByn5S9PpnRid77rl1eLfVVGpBYbxp1ZDeBz00/Whd8mpW3bqV1cX0BV/s9w' . PHP_EOL . 'VybvHOvabBkpj4MyTWbWEG9QZ6Dshpvfg4AE5jongDFeJeorHclXbhIXJ1pJJ6+y' . PHP_EOL . '6VKuZQlTeDxNH5bBOHTpinwNmmUJT0wS9/JRJKG0cQPvZqdVGBV7yPDjuT1Nq8n6' . PHP_EOL . 'E+ICrQdSaYoZR4q+upY3hsylKIwKYdORypL93gOfhkAjxbQMiW5z2xcFqJRRIi3q' . PHP_EOL . '3uAY05kZTJn5k3gY3FWUxrMHoKJ4ZGGg99GZfDvCrSTZHkFTVDw9KPyOtnzwOB18' . PHP_EOL . 'Q2dYIbLoCrjnQ7B+58ZodkPABQPWRShEYGTMjG+RYtV1C2Y/iJlc4tJqfLRG09ks' . PHP_EOL . 'aNIf7HS9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAiXbxR0T+C6MT7Jh/SbDJ/1Gd' . PHP_EOL . 'vbqskiKmmKnzOcX1x0uUHY4zHIhx3M0neYRr//XOh+FeSwM1JqAPztHy3SMRXzfP' . PHP_EOL . 'xzm/nwbRwdK8C/fPy7H+uMV1mKumem8WSoOMOoxFJ+o2nJgyViwnEOu9EejlH1sc' . PHP_EOL . 'uKPIoTCLUCInRRhrI84=',
+ ],
],
],
[
- __DIR__.'/RSA/DER/16k-rsa-example-cert.der',
+ __DIR__ . '/RSA/DER/16k-rsa-example-cert.der',
[
'kty' => 'RSA',
'n' => 'tS3aeWW_wzlyXsDNFeBONFNq7W4lNWDjOUseNxx-R9AsqNJEWZFzaTtBI4Cam9Wf_2AlfP6i3RRpK76ooZObKwJmm1ReGcP7gf7JnODQv0W-m9x85a_fwHiI86Dhfy1YNh2zg1DO1kL_Q-sqKMOZ4g6uUfXGXjS5968sKCua3o-GEr-7GM6uw8zgpDmURtpupAFj3X1qCg6cjblPzMzcXdjACP4_zJpLc-sWpqY7pdLa26J5dgFGpTKWS7Xs96AlCPDz4uTRRFKDZarMFtzpjhWhNZyDGuYFFxNL4ca1tm-r4JyL-XuK9BTXC1WNXpqutzHNOj-tO9nCtRX02ZS3hmm1A9xndTZpfQ7lPuSA_kZEohkjcGyxtS-nup9khyMKGwvhg0MJS43VOuYSV6msk_z4dZ3-MCXVlJMTxLqWOSGHxHG0vDJQI5_IXCwkQLrVQIbt_X1ZylUdkmnKm4VuCBt4AHqK1F1jWpNXLYcFY-QW43c2Iln7v1uQFm_82CFHTanrNMBYNax2egYpSXpPS0naF6O1Y8bMPjPBU1jaoBAlfiSjCmHx5MOTg-PU9m1OnnR4XnOdDR0W8rUSS_iYz4Ucivou_7_XCTVlfuieAXT069ibXpGkTE58AgI6piVVYtaxyoADb3zr0a11Br0kS3gKRqxTq5GtgWTpz75VrFxXk8ATfwZF4PcOVX9fkUQStBKY9OGRryswLJbQ0lnz5ZR8QAAw1D2cAoWYoxUol5upjsrYrsGc7Ol3NhPPtoE0Vnxg49xQSZ0hhjhryId07aZ3QBr3NQ0XBoGhSNvO-M7ZyzDTNSUQusS5WyZsZputw_12E5y55_bbMPpKYbnx0aG93wmcna49jXoo5ZUMoJ_BQLaavGC0u-JTLT_subk5tKh3oVgDRevHwYeK1U4L4cdzpOzG8JVpcHyclofESk25DnHiQ92BfB1DR-6YadfQ8a4BXrIFlktDho1EmhXwWdT-dhO4ERPwf2Cx04iP3OdYCU_TNr3gVdB3fQLPkhV1K_od8zWrX7oqCGLkYCP_GUvl84dJoMequlyIO9IHtVpVHzGl-E48JoOHN00ULnoHzWzxUeGtda4twn9NQ-ptEjy9u0_8R-y2UqnC632wEmHpHzFqrOSYixp4GO_zAh-gmIhPJHuoH97vdcDRjGGFPO7kmMI0tBmxkt03ahYIqJKbPynHVLhsTuU7TVYrgTX6JkCR_IbudQTqVdz8oYO6tNqVrU89JI94_5ndJX1Wjmf1LPa8c31IQovBB0e-MlZ-rBkyTEttNuI8xC__OycsLhjAFx_bm0Qf2jfg2IJdLmDjGFHv3RlEdlRmJSyLY_lqKV4GAhjiEIEmduAKbygg2Jqhb6NKzHr1vxhRcWasnuhgTOunlGs3vezu9xz_4CvEKRMT6viU3tzqmGpT3zE7d0w9zMwn2eUlX0j7pKIiznrbkW2Dfe63f9X9bKYAsO5pcqcfAHqVaHl0iFXy5QoFwwjSuWwxKyhaY3tfY2rufLXCOzQ_G7BDoMRns8x6nCR-64Xuvp-EvBw0S790J_u9Z2W98rrW6c1cfn4cb9BRy3Rj64kWqlAUTRu6-qrX2RN5ywhoKfiJDH3m2q_MtgDlR3ke-5KuxaZwfM0hrcCppU5THbOwMe3XoDX-ZjD-3q-ikM8ueu4uTqDjtQrTQioFIxa-3prbNTsxBERQFZwlJtz2GmNHEAjgU-OwkMDObYAGc-ZAZritXe9vGtGFpdowMZ5k0FTUKSIsecPxn-nZlG-_qML8S63NXlU0RdbtYaLwQteFuXl_acAvuxOOnB3nZppJyIStP0uOPGhRowXSlThn0yFDht65TLly171JVrf4oFBDO4Q6EIJ7JMbRXCaEWJmeSNe_k71c3u4elbZ-C2i5JaO6bctZzO-xZ-CP7raQzHXMlpChYXqmpDU5bK2ySAbcDJDvg5WeRmQsqRxsFnI1EK1Jj_BKHZqOPz_q2SYyv69zPTsp5_w9z9YWCbOKP1KHyf9i9n6P5G3QkCzvlTDAbjR6nrrrnva0PZ0SjO4MzDOsIAa9S6vwRnWyE23vVI5RCv-IkLZ075LRkXKcj2EVPrDI3Mb1pUtfGu1H1M7m6V0SOTnaCwimIz3Ju2mwgnR-2lAAJKMd3vUaN1NfbEDuhZoMZfDrWzqOqA8Z2oyv6jHhby3DknbW4pn8tcaPCvScn1wotOeNFDvAfOIxikGEjUuXj-_gV2_dcFVIANseYpdhAS1tJjVX9JBwWcjbHnShy_9Y4f1zzrSwv4UbG7xDEGS1VaDUk5UwTTeeKQKzCkd6nYXxZYRMYDD_DcuGiCG9YvWm9hry1DkfdyCx5Pe8j8KMGUuEtIwLOIfmJDiCmE9fRAY85f9TAXyxkM-P1S_TcScKeSYrxLubX1DTuOGNDFKB4xNf0vi-lCFgLmx8tOr-RY7qtzrwrfcf7Kbpop-B5KpA2PhmoRTtZl4kF7RDeh-ZnUqcfyQcCIv_HewiMOmJ6iQDDjOWbsM8uEhl3ab-FzDYGAeT5bJs4EJAwEhsk28sXqnGzwJDUxw4mdLCYhiuI0ZwGOBUIzXQ-KHaH88PwYuQGLwM-s9uCKqJyO84I6XPe6bnqsL9NWmPhpvFxEZ7MvFCC2Z7nuGswQKpL92_QOS0NibZwzxBDUY7Qm3WsHxFzYm73JenQJGKzZPPLtjhIar7af2qb8KINgWGfIvrxR38osLT0Vg29M0DuMc',
'e' => 'AQAB',
'x5t' => 'XC_s0q4lqNalTFU6tNWR_Szk5dk',
'x5t#256' => '3nz2wIAoSbfVCmvy9k18bCPyIXacd3YfHrGq-qg3DVY',
- 'x5c' => ['MIIJ2jCCCUMCAg3/MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'ODIyMDUyOTAyWhcNMTcwODIxMDUyOTAyWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wgggiMA0GCSqGSIb3DQEBAQUAA4IIDwAwgggKAoIIAQC1Ldp5Zb/DOXJe'.PHP_EOL.'wM0V4E40U2rtbiU1YOM5Sx43HH5H0Cyo0kRZkXNpO0EjgJqb1Z//YCV8/qLdFGkr'.PHP_EOL.'vqihk5srAmabVF4Zw/uB/smc4NC/Rb6b3Hzlr9/AeIjzoOF/LVg2HbODUM7WQv9D'.PHP_EOL.'6yoow5niDq5R9cZeNLn3rywoK5rej4YSv7sYzq7DzOCkOZRG2m6kAWPdfWoKDpyN'.PHP_EOL.'uU/MzNxd2MAI/j/Mmktz6xampjul0trbonl2AUalMpZLtez3oCUI8PPi5NFEUoNl'.PHP_EOL.'qswW3OmOFaE1nIMa5gUXE0vhxrW2b6vgnIv5e4r0FNcLVY1emq63Mc06P6072cK1'.PHP_EOL.'FfTZlLeGabUD3Gd1Nml9DuU+5ID+RkSiGSNwbLG1L6e6n2SHIwobC+GDQwlLjdU6'.PHP_EOL.'5hJXqayT/Ph1nf4wJdWUkxPEupY5IYfEcbS8MlAjn8hcLCRAutVAhu39fVnKVR2S'.PHP_EOL.'acqbhW4IG3gAeorUXWNak1cthwVj5BbjdzYiWfu/W5AWb/zYIUdNqes0wFg1rHZ6'.PHP_EOL.'BilJek9LSdoXo7Vjxsw+M8FTWNqgECV+JKMKYfHkw5OD49T2bU6edHhec50NHRby'.PHP_EOL.'tRJL+JjPhRyK+i7/v9cJNWV+6J4BdPTr2JtekaRMTnwCAjqmJVVi1rHKgANvfOvR'.PHP_EOL.'rXUGvSRLeApGrFOrka2BZOnPvlWsXFeTwBN/BkXg9w5Vf1+RRBK0Epj04ZGvKzAs'.PHP_EOL.'ltDSWfPllHxAADDUPZwChZijFSiXm6mOytiuwZzs6Xc2E8+2gTRWfGDj3FBJnSGG'.PHP_EOL.'OGvIh3TtpndAGvc1DRcGgaFI2874ztnLMNM1JRC6xLlbJmxmm63D/XYTnLnn9tsw'.PHP_EOL.'+kphufHRob3fCZydrj2NeijllQygn8FAtpq8YLS74lMtP+y5uTm0qHehWANF68fB'.PHP_EOL.'h4rVTgvhx3Ok7MbwlWlwfJyWh8RKTbkOceJD3YF8HUNH7php19DxrgFesgWWS0OG'.PHP_EOL.'jUSaFfBZ1P52E7gRE/B/YLHTiI/c51gJT9M2veBV0Hd9As+SFXUr+h3zNatfuioI'.PHP_EOL.'YuRgI/8ZS+Xzh0mgx6q6XIg70ge1WlUfMaX4Tjwmg4c3TRQuegfNbPFR4a11ri3C'.PHP_EOL.'f01D6m0SPL27T/xH7LZSqcLrfbASYekfMWqs5JiLGngY7/MCH6CYiE8ke6gf3u91'.PHP_EOL.'wNGMYYU87uSYwjS0GbGS3TdqFgiokps/KcdUuGxO5TtNViuBNfomQJH8hu51BOpV'.PHP_EOL.'3Pyhg7q02pWtTz0kj3j/md0lfVaOZ/Us9rxzfUhCi8EHR74yVn6sGTJMS2024jzE'.PHP_EOL.'L/87JywuGMAXH9ubRB/aN+DYgl0uYOMYUe/dGUR2VGYlLItj+WopXgYCGOIQgSZ2'.PHP_EOL.'4ApvKCDYmqFvo0rMevW/GFFxZqye6GBM66eUaze97O73HP/gK8QpExPq+JTe3OqY'.PHP_EOL.'alPfMTt3TD3MzCfZ5SVfSPukoiLOetuRbYN97rd/1f1spgCw7mlypx8AepVoeXSI'.PHP_EOL.'VfLlCgXDCNK5bDErKFpje19jau58tcI7ND8bsEOgxGezzHqcJH7rhe6+n4S8HDRL'.PHP_EOL.'v3Qn+71nZb3yutbpzVx+fhxv0FHLdGPriRaqUBRNG7r6qtfZE3nLCGgp+IkMfeba'.PHP_EOL.'r8y2AOVHeR77kq7FpnB8zSGtwKmlTlMds7Ax7degNf5mMP7er6KQzy567i5OoOO1'.PHP_EOL.'CtNCKgUjFr7emts1OzEERFAVnCUm3PYaY0cQCOBT47CQwM5tgAZz5kBmuK1d728a'.PHP_EOL.'0YWl2jAxnmTQVNQpIix5w/Gf6dmUb7+owvxLrc1eVTRF1u1hovBC14W5eX9pwC+7'.PHP_EOL.'E46cHedmmknIhK0/S448aFGjBdKVOGfTIUOG3rlMuXLXvUlWt/igUEM7hDoQgnsk'.PHP_EOL.'xtFcJoRYmZ5I17+TvVze7h6Vtn4LaLklo7pty1nM77Fn4I/utpDMdcyWkKFheqak'.PHP_EOL.'NTlsrbJIBtwMkO+DlZ5GZCypHGwWcjUQrUmP8Eodmo4/P+rZJjK/r3M9Oynn/D3P'.PHP_EOL.'1hYJs4o/UofJ/2L2fo/kbdCQLO+VMMBuNHqeuuue9rQ9nRKM7gzMM6wgBr1Lq/BG'.PHP_EOL.'dbITbe9UjlEK/4iQtnTvktGRcpyPYRU+sMjcxvWlS18a7UfUzubpXRI5OdoLCKYj'.PHP_EOL.'Pcm7abCCdH7aUAAkox3e9Ro3U19sQO6Fmgxl8OtbOo6oDxnajK/qMeFvLcOSdtbi'.PHP_EOL.'mfy1xo8K9JyfXCi0540UO8B84jGKQYSNS5eP7+BXb91wVUgA2x5il2EBLW0mNVf0'.PHP_EOL.'kHBZyNsedKHL/1jh/XPOtLC/hRsbvEMQZLVVoNSTlTBNN54pArMKR3qdhfFlhExg'.PHP_EOL.'MP8Ny4aIIb1i9ab2GvLUOR93ILHk97yPwowZS4S0jAs4h+YkOIKYT19EBjzl/1MB'.PHP_EOL.'fLGQz4/VL9NxJwp5JivEu5tfUNO44Y0MUoHjE1/S+L6UIWAubHy06v5Fjuq3OvCt'.PHP_EOL.'9x/spumin4HkqkDY+GahFO1mXiQXtEN6H5mdSpx/JBwIi/8d7CIw6YnqJAMOM5Zu'.PHP_EOL.'wzy4SGXdpv4XMNgYB5PlsmzgQkDASGyTbyxeqcbPAkNTHDiZ0sJiGK4jRnAY4FQj'.PHP_EOL.'NdD4odofzw/Bi5AYvAz6z24IqonI7zgjpc97pueqwv01aY+Gm8XERnsy8UILZnue'.PHP_EOL.'4azBAqkv3b9A5LQ2JtnDPEENRjtCbdawfEXNibvcl6dAkYrNk88u2OEhqvtp/apv'.PHP_EOL.'wog2BYZ8i+vFHfyiwtPRWDb0zQO4xwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADg3'.PHP_EOL.'1Ah8wT/xjIhtUTAIcFGtgN2321aV8pIz8VSJu3CrbJJD09Ek6WUQgTbEq0pxwhQo'.PHP_EOL.'ubkr2+CJ2Gw/FTd0WFet7T57aFg7qh5xraEhH21icHmNBUG7ETUXNEf8TjbhREVY'.PHP_EOL.'gF6l8RI6rrGv0zm5awmcj+4+2OXQ+OM88dV7chMn'],
+ 'x5c' => [
+ 'MIIJ2jCCCUMCAg3/MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'ODIyMDUyOTAyWhcNMTcwODIxMDUyOTAyWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wgggiMA0GCSqGSIb3DQEBAQUAA4IIDwAwgggKAoIIAQC1Ldp5Zb/DOXJe' . PHP_EOL . 'wM0V4E40U2rtbiU1YOM5Sx43HH5H0Cyo0kRZkXNpO0EjgJqb1Z//YCV8/qLdFGkr' . PHP_EOL . 'vqihk5srAmabVF4Zw/uB/smc4NC/Rb6b3Hzlr9/AeIjzoOF/LVg2HbODUM7WQv9D' . PHP_EOL . '6yoow5niDq5R9cZeNLn3rywoK5rej4YSv7sYzq7DzOCkOZRG2m6kAWPdfWoKDpyN' . PHP_EOL . 'uU/MzNxd2MAI/j/Mmktz6xampjul0trbonl2AUalMpZLtez3oCUI8PPi5NFEUoNl' . PHP_EOL . 'qswW3OmOFaE1nIMa5gUXE0vhxrW2b6vgnIv5e4r0FNcLVY1emq63Mc06P6072cK1' . PHP_EOL . 'FfTZlLeGabUD3Gd1Nml9DuU+5ID+RkSiGSNwbLG1L6e6n2SHIwobC+GDQwlLjdU6' . PHP_EOL . '5hJXqayT/Ph1nf4wJdWUkxPEupY5IYfEcbS8MlAjn8hcLCRAutVAhu39fVnKVR2S' . PHP_EOL . 'acqbhW4IG3gAeorUXWNak1cthwVj5BbjdzYiWfu/W5AWb/zYIUdNqes0wFg1rHZ6' . PHP_EOL . 'BilJek9LSdoXo7Vjxsw+M8FTWNqgECV+JKMKYfHkw5OD49T2bU6edHhec50NHRby' . PHP_EOL . 'tRJL+JjPhRyK+i7/v9cJNWV+6J4BdPTr2JtekaRMTnwCAjqmJVVi1rHKgANvfOvR' . PHP_EOL . 'rXUGvSRLeApGrFOrka2BZOnPvlWsXFeTwBN/BkXg9w5Vf1+RRBK0Epj04ZGvKzAs' . PHP_EOL . 'ltDSWfPllHxAADDUPZwChZijFSiXm6mOytiuwZzs6Xc2E8+2gTRWfGDj3FBJnSGG' . PHP_EOL . 'OGvIh3TtpndAGvc1DRcGgaFI2874ztnLMNM1JRC6xLlbJmxmm63D/XYTnLnn9tsw' . PHP_EOL . '+kphufHRob3fCZydrj2NeijllQygn8FAtpq8YLS74lMtP+y5uTm0qHehWANF68fB' . PHP_EOL . 'h4rVTgvhx3Ok7MbwlWlwfJyWh8RKTbkOceJD3YF8HUNH7php19DxrgFesgWWS0OG' . PHP_EOL . 'jUSaFfBZ1P52E7gRE/B/YLHTiI/c51gJT9M2veBV0Hd9As+SFXUr+h3zNatfuioI' . PHP_EOL . 'YuRgI/8ZS+Xzh0mgx6q6XIg70ge1WlUfMaX4Tjwmg4c3TRQuegfNbPFR4a11ri3C' . PHP_EOL . 'f01D6m0SPL27T/xH7LZSqcLrfbASYekfMWqs5JiLGngY7/MCH6CYiE8ke6gf3u91' . PHP_EOL . 'wNGMYYU87uSYwjS0GbGS3TdqFgiokps/KcdUuGxO5TtNViuBNfomQJH8hu51BOpV' . PHP_EOL . '3Pyhg7q02pWtTz0kj3j/md0lfVaOZ/Us9rxzfUhCi8EHR74yVn6sGTJMS2024jzE' . PHP_EOL . 'L/87JywuGMAXH9ubRB/aN+DYgl0uYOMYUe/dGUR2VGYlLItj+WopXgYCGOIQgSZ2' . PHP_EOL . '4ApvKCDYmqFvo0rMevW/GFFxZqye6GBM66eUaze97O73HP/gK8QpExPq+JTe3OqY' . PHP_EOL . 'alPfMTt3TD3MzCfZ5SVfSPukoiLOetuRbYN97rd/1f1spgCw7mlypx8AepVoeXSI' . PHP_EOL . 'VfLlCgXDCNK5bDErKFpje19jau58tcI7ND8bsEOgxGezzHqcJH7rhe6+n4S8HDRL' . PHP_EOL . 'v3Qn+71nZb3yutbpzVx+fhxv0FHLdGPriRaqUBRNG7r6qtfZE3nLCGgp+IkMfeba' . PHP_EOL . 'r8y2AOVHeR77kq7FpnB8zSGtwKmlTlMds7Ax7degNf5mMP7er6KQzy567i5OoOO1' . PHP_EOL . 'CtNCKgUjFr7emts1OzEERFAVnCUm3PYaY0cQCOBT47CQwM5tgAZz5kBmuK1d728a' . PHP_EOL . '0YWl2jAxnmTQVNQpIix5w/Gf6dmUb7+owvxLrc1eVTRF1u1hovBC14W5eX9pwC+7' . PHP_EOL . 'E46cHedmmknIhK0/S448aFGjBdKVOGfTIUOG3rlMuXLXvUlWt/igUEM7hDoQgnsk' . PHP_EOL . 'xtFcJoRYmZ5I17+TvVze7h6Vtn4LaLklo7pty1nM77Fn4I/utpDMdcyWkKFheqak' . PHP_EOL . 'NTlsrbJIBtwMkO+DlZ5GZCypHGwWcjUQrUmP8Eodmo4/P+rZJjK/r3M9Oynn/D3P' . PHP_EOL . '1hYJs4o/UofJ/2L2fo/kbdCQLO+VMMBuNHqeuuue9rQ9nRKM7gzMM6wgBr1Lq/BG' . PHP_EOL . 'dbITbe9UjlEK/4iQtnTvktGRcpyPYRU+sMjcxvWlS18a7UfUzubpXRI5OdoLCKYj' . PHP_EOL . 'Pcm7abCCdH7aUAAkox3e9Ro3U19sQO6Fmgxl8OtbOo6oDxnajK/qMeFvLcOSdtbi' . PHP_EOL . 'mfy1xo8K9JyfXCi0540UO8B84jGKQYSNS5eP7+BXb91wVUgA2x5il2EBLW0mNVf0' . PHP_EOL . 'kHBZyNsedKHL/1jh/XPOtLC/hRsbvEMQZLVVoNSTlTBNN54pArMKR3qdhfFlhExg' . PHP_EOL . 'MP8Ny4aIIb1i9ab2GvLUOR93ILHk97yPwowZS4S0jAs4h+YkOIKYT19EBjzl/1MB' . PHP_EOL . 'fLGQz4/VL9NxJwp5JivEu5tfUNO44Y0MUoHjE1/S+L6UIWAubHy06v5Fjuq3OvCt' . PHP_EOL . '9x/spumin4HkqkDY+GahFO1mXiQXtEN6H5mdSpx/JBwIi/8d7CIw6YnqJAMOM5Zu' . PHP_EOL . 'wzy4SGXdpv4XMNgYB5PlsmzgQkDASGyTbyxeqcbPAkNTHDiZ0sJiGK4jRnAY4FQj' . PHP_EOL . 'NdD4odofzw/Bi5AYvAz6z24IqonI7zgjpc97pueqwv01aY+Gm8XERnsy8UILZnue' . PHP_EOL . '4azBAqkv3b9A5LQ2JtnDPEENRjtCbdawfEXNibvcl6dAkYrNk88u2OEhqvtp/apv' . PHP_EOL . 'wog2BYZ8i+vFHfyiwtPRWDb0zQO4xwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADg3' . PHP_EOL . '1Ah8wT/xjIhtUTAIcFGtgN2321aV8pIz8VSJu3CrbJJD09Ek6WUQgTbEq0pxwhQo' . PHP_EOL . 'ubkr2+CJ2Gw/FTd0WFet7T57aFg7qh5xraEhH21icHmNBUG7ETUXNEf8TjbhREVY' . PHP_EOL . 'gF6l8RI6rrGv0zm5awmcj+4+2OXQ+OM88dV7chMn',
+ ],
],
],
[
- __DIR__.'/RSA/DER/32k-rsa-example-cert.der',
+ __DIR__ . '/RSA/DER/32k-rsa-example-cert.der',
[
'kty' => 'RSA',
'n' => 'qzPFsFIf3cSes25DloV3y3d8gKMcZVE_EQ_6e_MZnyqDbuOEP39yQs3aunzbZRoO8Xw8lLoJNduiKKsco7odI753kBvz1eLyke-sWBVZttbnYyz9AE3ZXfAb9rHW2AxgIqHNsQOsLJS_douGZwxawNdE90WM4QG80bDpkxxHfObtmZIbZoOFSeokDHA5jokQGzJ65t6ARtQOIht84pIlAr8RO0vCUiJ0R4TdAffbdIukMcVfSoZBlZJ_q-yBtPoqB1Nmr1x1FqCtR81NrEtdp7CUHy4yLIskMzHTwJL24dx8zPS9RBIAuR6HO6soQwQgKY5NYmyaZGuWDrzw0Lor9_jjcx3x7NlXEUffGyUdT_bZ6owsgd-SpvnbqXPXIf-u5JH7afSUuajytHnGVilQOpEg06B0F-AumUEx8vdLPczCx0CED11mhRhT1eRQPJlzxgqA22SN1Yz0P55R8QbfFYcflpEtZbHmdvwMSipEoEUyI8aA9z268oNVnnAGhG3cOqk8-4HOvtqZ9LIc8jUcQLtWX-PJav9EePnWuV6pFwzvKcwl09m08xIfIh9DvFVJz3Fks-X6c1tVo2Valftlj8fnlzu9WgownkwhM4KN2UpcHcff4G-v9zckhcpROSzZ1ax5mPOUMF6B2OVawMhf3li9A9JEpBDxVu2-gZU6NbhvfH1f4PdNPUnlasPylHn4qz4S6_V1fuxho-2O_V72w3V5FDBi-m2D9vDVQvJtuoiJxUEyOWaxsenuzoFlq3jNHwm0SiabwVjaMyre4qktmHopLuLX2ixME3rbTtaXLAaly-t2X6oS4nFyhwP9f_WbJb4Yh_RDxksPj1hR_4nH43NTYjZBlLDM0YRb4xRzFmATQOUhPou6LSUbl8Tl2z7WYFzlcKgHwkWRaTGUV8Sz_h-_IfgZDvCtyyLhzvWOmfJBhsV1nTbDrr8DivZGH5huBNH88v_gbCVw36aAjH8BnmcHQ0ImUUwXoiB1iWSWB3x1xdYnAyQf5RV2PK86wVc4EBRxW6MeJHWZr-kFgHtcwk2ys8MewL8xlKs1S64APAWtD-WsLGEnUVMfM5EuWjoS9kB4BI4DC6M0uyDjaCuFu80wMmWfx9C3-Y2x7l5Lw0G4gRcUk-F3ONtKfsxMqAmV6aUVkXmdkX5LLa105CpIVqflM40CPl5mlVGEFlTf9u0zclyQ0_-qWt78ZzkpolPj9XKHikdYA_DKbvtfgtgNC07GIwBctoQsOrKGOxigeWzrAwfS9S5Wt7hvcs2R0Y04rXoeSTPbHWLumsJYLxC2HPtam3IxQJzCljIOFB5Sqi9WLO5l_yjmUGS2Fzy5DkuyFuC3o79rB-Vu0zpHQ5sHdbyYkfvi3QZx4jLuj2ki-3_1Qj7RfVdd1yWeudnFUy5QGfWh3-VoaK9UIZ1EeX62owXTGNOJovn9yMdwbXmy75qrkPXadFQG3lnuqq_Ucd8ZAYJvwfQb6uhTSv1kSFCpxyyaSBYjLU44QDF6FRh_QHLMBM2DVasOT0hsF2UWsIXUneoJHk_qVZSRmj5EDaIrWAUEZfL_geiwcW3_L3Y9iaHMkB93fHNsVEpLmTO-vLHZHYN0c-kKNVBw_40xGZ5ZgPJlT4JZVvBKuB2ka2OsSLcRXZvzZZZTnrRHb_9dngGkFpI0gc6gFu2d1mPIIFp6JS7AJ4_sYKE4yxuGG7IsA4ErnNBEK9Sr1XSu0_KfcIv63dm_AybDg1vmqMLCl5EiP9OIFsWdIM42970PH9h8Ri7KUn0D53RSRVkV38NW312A2JYCHfEfbIxyibEIrsusib98x6Bedh-3BpsWyih2XlDT6AFwJdD0cc_Uf56Vqv9waUtsSx-1xBwliZ35MKq-IfV6hcLnFgLhxsqakV8aFLAEzI8Ulned6zjRAC28aaDOZcFdKEMD0wHPUW8-9UTQxAgug8otEITWSkKubyXbdofpVa9Xwjq1-jLb4eylqey0RokKrHO6B7F3KtUF8Zsm0mGEg7nvUhjEBFL3AqkLke5Nb_78uqb3tzZF3iO6ghENar9s1DUIYqNkbMSeh7smgER_PBUB0MGMqRnx8qcr5t5yBEurZ7qq7-LYoJOoc6UwaPrQN_AFRou4ugiRrxIrvOwrDPr4y2zoi9XKnBBuYMnt2AkGVCNIA0WOKgmex4x_2Nri2JlRieAPwNPfW5PLkyPVRfw0dNzhg7csMl1Wctdw1JpHJhgMswuhYhRWGyzYWE4ZU8lvQWqA42MOKfUixAV4LmEzGz2eRQSPGWjLC85-mcxf_vssmD-mbuJAjzlLDzzwllrTDCQrt18DftpAAHhD5hG2HmQH9RDzcS3sniIx4p2zyqBHVQsWM74BlQjbODjgHRHerTgxYaNmh4KRA38lmb9omrUhI2Q0Lj5CF2of_Apd7fo8u6LpBpdEtirkn_7-9vPPiGerClV6lSjoNi_I_hHCneAq-3KZq7hM5XliJPvUrws_m0X5n6_fazdk-gOohEuF0Aq_1I5633sS-DGrFyan2K7oeoBGQN994-kweTR0lLko14nC5wnvizbsv7sDUNJTjM7LMYIrhKEILTjjGQ6WuCkYhQuM4RAnx74jFIchW8pS1tEnUcIOyBWgFB9M2zdbNmJg7vH43mmX408jMYVKs9CQz2Y7Vu33S0dSp9sWxM1KUREFVy1xTbVgKNxLxOzXiLOjm_b4EifAHZh_KTf0POm5RESU-TSrO29y5puTHL-PLuOE30jrxXaKhW5UzmQLUMhBGI7geYP6fE6QxyUi0gD_tLdMmzxTlZiOXkE6HnBQ-3Ar54uA-RFUhnzU-XT3wm--eINsvqyrHCyLQlmM71aBXnMlH5g0NJjdm42XSecTopWfFCfcNe1-ufpUuMGGg0C3LxVN5fkTmB2_6gai0AHh4dNhefGkKCZ5OcSNtA_UUI1nKr_wgPTI4X1catN9RE9mMYhOt-I5gOVRCihxDcUcBl2apUaFK-jHPs5rABqhykbi_dOS-zy42I86Vcu4B-_0GNlRIPRLZWFIhNRy_kfCOq4kb4SK9DjTvHsaq6YWMoL9Jk3JiqvH4yrMZ6T-XEFdJ8DGSc41lo1YJwhFUu0eGbGFKxyUBrHv1l9ByPrqWaiepnBBsda4y8G3SoiCfndwkbvLeE5ykYgurPpkYX_bau2PqsoAkiJ_GmbitKpXD71C5PmzvzLvpxkgC6hQq-v4L4WLelADvBpeikX9k23qhR5H3mkzNeMZgHyoFisy161cDgOlcg64g6C2UzJKlb5C1tOlQwM3fdm7cjBJXOjuxgi8Ewx6ov90eeaqIEfFvnUu1_IC_tFve9P_Us21Ak53vwStlHueYHtedJsHg84C5Ppt_z1LFR3Hh8m1pOnlb3kJw5eGpvsXweZrIIN0cvwz-NZ_orIxjPxLf23wy-y-lhObK17BfX1g-p759XtRSaG4Rj_QedauXHAA-SKgvwAOY3kBuWo9Oxx73JbC1kov55TkecHj2lXO_o49O5LCOa_h0nHIVb3JIGWot11sF_6zwNzFM2WtHFNu7Iu9hllumC8rvz3HEbylvSPQYzBQKy8NSyC6T9wbH6cAYY-vl59q1J4DwBH3DHKoMAec8InlnBO_ekJa8SMdQMZxov0BaxJc0W__29w2Sza0cBsMslfpRIWRWMb4jNpyvCyEVxrGf7AakOl0_9P3JCQ2o8cuf-BGg_z_iQ3aTMYVWi_pWuxnhh5NchjQU8C3dxvnEd0Te9mmDlvZh-N9GULo0tlzHz3WZniUp7mxVQ3nkeS31M0LIIF3SetSMjXrGJ_4bzAnb3EjH44eFuvgOiJ8ChXLCmHLtIpFa0WSC6YVpBxqfPrxke-DyB2Lvz_46MSQ4iKvCFhdYWxBtwXCZDN5Dt4XFpMknL_VnuVU8a5_rRqpEebv_VF1pBZsvfTK6UXFWAApFvL4ebApuLsFInG3uk89N2SbenTTiBGWZWZjsEFsvf3iSFZdQ2bgKSLmJIsuXV1mUPkzGEr8SsPLDKhGNZBevtka-CfnukEPn7a3K_O5sYcccEtYwx0VNiC6dWu7B_-pflffa1m4pbhdg6KfykDO9_jU_LE692dhWUzbv977zGUlOnmsEMeqmSTo9V5Hv0UsEDGEjoe9piKidoZ8JdAq1WIpSBfW9M2wtkZHbi2nlaBnKJuTaaNs_nWjbG4y73hEqEqRlQMKrLsJU7rsmy3h6x6-J_tXfkKpWu_Z_PhR-ca2RV4ldwUNejBhBomg-6bcSq1lHXGTpwc0wSDmIUfE2W6ZZysaFpmGpTDFjTDqfeeAwwbzShK7Uc-OnJVNiQ5w1KALJNjXURSfI61vyWRBMtFHaC7t6ixwDfv6pqEa0xeDe4xf4Z1qdX1Zfs4xpdAyzZWmslUsXIYDtiTXq6NYGjnCEPYqneVGOWhP6re0UfzeqqB6p6_L42UoqFrrjU7jnEWRlz6gxdU9qOJgLX3u6CIYtN6b44tpsqA23fNBiuf4SqoYimbd2YVjXFRFFNZ2XqJ-wBqYcD5xIfudMN6W5cAD4p5cTQ11_-EqIp8rDxiWOs-PN8SQTIE7ZYQ6na-lSITpchNybreE9SqhzluoY71DN8oQuUJHonrAW5Hh_VroGBxpbO9XdNhw0XrC-S9iH9DDEUedanM2DznPUZsHHutG8H0K9AEyWRS01sAwrF73ZG57qy5IciYMHZuFbkY0lzwbF-vd15jgNfP4JTmZD2sVWwVgI7Qp9T2hd0uuZL_huHl2baRCyC_DSI9c6p3q9Ud_tBN_yCcNcUVx0rS6EGfzM8VYOGwyiBVBAgVDjBXiKBsUVWA3ljfOtYhLKBDHkqhvoQaczSI2fKX7L7cwgXeBdckoaNhno6mCpZBamuyBZ1Iy6TnguQi59MCCKdiczIpfeumbSDEovy2IbQmPqld_JI6WOufgldiITu3hXR5KNazan2mc3NrKu1SEXZpdzb4wJZZ26U_1xE2GLMJru05yZoVNEkN72DhagM1R5oqHwPzRcn3ahdYvUzDoP6UHEpa76A23lqafY7F98l66hmAnXXlEKzEVwthYoxWANYtVsxs9NktNJdNMB3OCMnCo9BWkefmjlrzMJSkBP_1mfxN2o3W1tMNXpk5OQPO20_eWPF3iYhobSo8fcxzXtw9bg1BXr0TADj0hl_z4jw93wVGGLlsA3qYstay0I9yJgHBZmhxc7V1JzNWdwxIDmRgA5eCm1ELVBxpIup9WGZlUs1rzwqXzI-37i7l3dwFfCf_i2g8m-gNQjuM6YqkSz-XKcn-sJEg1XSMhoB15sgYE9U-2Oe-_EGLK0dOU2zyHO40F8ghvhKWpuAcITX_QnEMremwsiCl0PEnGZ98BXzlRvd1MFNc0ZUwzN-wTVxs4jNkteNbp0MjIKA5Y6FiCEX6koNWY9cLXSNg4XG4IsWRQrfIn2WWFz_nhzlaZNm_NUM1kmKRREPmsvQ',
'e' => 'AQAB',
'x5t' => 'KGApLybHWJmBwZGgBk07AlRD9nU',
'x5t#256' => 'YD12k6kc4xuh_5vEHMyyOFpGs6VqTyaKMlxg0Nt2crA',
- 'x5c' => ['MIIR2jCCEUMCAg4EMA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIx'.PHP_EOL.'MDEwMTIxNzQ5WhcNMTcxMDA5MTIxNzQ5WjBKMQswCQYDVQQGDAJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wghAiMA0GCSqGSIb3DQEBAQUAA4IQDwAwghAKAoIQAQCrM8WwUh/dxJ6z'.PHP_EOL.'bkOWhXfLd3yAoxxlUT8RD/p78xmfKoNu44Q/f3JCzdq6fNtlGg7xfDyUugk126Io'.PHP_EOL.'qxyjuh0jvneQG/PV4vKR76xYFVm21udjLP0ATdld8Bv2sdbYDGAioc2xA6wslL92'.PHP_EOL.'i4ZnDFrA10T3RYzhAbzRsOmTHEd85u2Zkhtmg4VJ6iQMcDmOiRAbMnrm3oBG1A4i'.PHP_EOL.'G3zikiUCvxE7S8JSInRHhN0B99t0i6QxxV9KhkGVkn+r7IG0+ioHU2avXHUWoK1H'.PHP_EOL.'zU2sS12nsJQfLjIsiyQzMdPAkvbh3HzM9L1EEgC5Hoc7qyhDBCApjk1ibJpka5YO'.PHP_EOL.'vPDQuiv3+ONzHfHs2VcRR98bJR1P9tnqjCyB35Km+dupc9ch/67kkftp9JS5qPK0'.PHP_EOL.'ecZWKVA6kSDToHQX4C6ZQTHy90s9zMLHQIQPXWaFGFPV5FA8mXPGCoDbZI3VjPQ/'.PHP_EOL.'nlHxBt8Vhx+WkS1lseZ2/AxKKkSgRTIjxoD3Pbryg1WecAaEbdw6qTz7gc6+2pn0'.PHP_EOL.'shzyNRxAu1Zf48lq/0R4+da5XqkXDO8pzCXT2bTzEh8iH0O8VUnPcWSz5fpzW1Wj'.PHP_EOL.'ZVqV+2WPx+eXO71aCjCeTCEzgo3ZSlwdx9/gb6/3NySFylE5LNnVrHmY85QwXoHY'.PHP_EOL.'5VrAyF/eWL0D0kSkEPFW7b6BlTo1uG98fV/g9009SeVqw/KUefirPhLr9XV+7GGj'.PHP_EOL.'7Y79XvbDdXkUMGL6bYP28NVC8m26iInFQTI5ZrGx6e7OgWWreM0fCbRKJpvBWNoz'.PHP_EOL.'Kt7iqS2Yeiku4tfaLEwTettO1pcsBqXL63ZfqhLicXKHA/1/9ZslvhiH9EPGSw+P'.PHP_EOL.'WFH/icfjc1NiNkGUsMzRhFvjFHMWYBNA5SE+i7otJRuXxOXbPtZgXOVwqAfCRZFp'.PHP_EOL.'MZRXxLP+H78h+BkO8K3LIuHO9Y6Z8kGGxXWdNsOuvwOK9kYfmG4E0fzy/+BsJXDf'.PHP_EOL.'poCMfwGeZwdDQiZRTBeiIHWJZJYHfHXF1icDJB/lFXY8rzrBVzgQFHFbox4kdZmv'.PHP_EOL.'6QWAe1zCTbKzwx7AvzGUqzVLrgA8Ba0P5awsYSdRUx8zkS5aOhL2QHgEjgMLozS7'.PHP_EOL.'IONoK4W7zTAyZZ/H0Lf5jbHuXkvDQbiBFxST4Xc420p+zEyoCZXppRWReZ2Rfkst'.PHP_EOL.'rXTkKkhWp+UzjQI+XmaVUYQWVN/27TNyXJDT/6pa3vxnOSmiU+P1coeKR1gD8Mpu'.PHP_EOL.'+1+C2A0LTsYjAFy2hCw6soY7GKB5bOsDB9L1Lla3uG9yzZHRjTiteh5JM9sdYu6a'.PHP_EOL.'wlgvELYc+1qbcjFAnMKWMg4UHlKqL1Ys7mX/KOZQZLYXPLkOS7IW4Lejv2sH5W7T'.PHP_EOL.'OkdDmwd1vJiR++LdBnHiMu6PaSL7f/VCPtF9V13XJZ652cVTLlAZ9aHf5Whor1Qh'.PHP_EOL.'nUR5frajBdMY04mi+f3Ix3BtebLvmquQ9dp0VAbeWe6qr9Rx3xkBgm/B9Bvq6FNK'.PHP_EOL.'/WRIUKnHLJpIFiMtTjhAMXoVGH9AcswEzYNVqw5PSGwXZRawhdSd6gkeT+pVlJGa'.PHP_EOL.'PkQNoitYBQRl8v+B6LBxbf8vdj2JocyQH3d8c2xUSkuZM768sdkdg3Rz6Qo1UHD/'.PHP_EOL.'jTEZnlmA8mVPgllW8Eq4HaRrY6xItxFdm/NlllOetEdv/12eAaQWkjSBzqAW7Z3W'.PHP_EOL.'Y8ggWnolLsAnj+xgoTjLG4YbsiwDgSuc0EQr1KvVdK7T8p9wi/rd2b8DJsODW+ao'.PHP_EOL.'wsKXkSI/04gWxZ0gzjb3vQ8f2HxGLspSfQPndFJFWRXfw1bfXYDYlgId8R9sjHKJ'.PHP_EOL.'sQiuy6yJv3zHoF52H7cGmxbKKHZeUNPoAXAl0PRxz9R/npWq/3BpS2xLH7XEHCWJ'.PHP_EOL.'nfkwqr4h9XqFwucWAuHGypqRXxoUsATMjxSWd53rONEALbxpoM5lwV0oQwPTAc9R'.PHP_EOL.'bz71RNDECC6Dyi0QhNZKQq5vJdt2h+lVr1fCOrX6Mtvh7KWp7LRGiQqsc7oHsXcq'.PHP_EOL.'1QXxmybSYYSDue9SGMQEUvcCqQuR7k1v/vy6pve3NkXeI7qCEQ1qv2zUNQhio2Rs'.PHP_EOL.'xJ6HuyaARH88FQHQwYypGfHypyvm3nIES6tnuqrv4tigk6hzpTBo+tA38AVGi7i6'.PHP_EOL.'CJGvEiu87CsM+vjLbOiL1cqcEG5gye3YCQZUI0gDRY4qCZ7HjH/Y2uLYmVGJ4A/A'.PHP_EOL.'099bk8uTI9VF/DR03OGDtywyXVZy13DUmkcmGAyzC6FiFFYbLNhYThlTyW9BaoDj'.PHP_EOL.'Yw4p9SLEBXguYTMbPZ5FBI8ZaMsLzn6ZzF/++yyYP6Zu4kCPOUsPPPCWWtMMJCu3'.PHP_EOL.'XwN+2kAAeEPmEbYeZAf1EPNxLeyeIjHinbPKoEdVCxYzvgGVCNs4OOAdEd6tODFh'.PHP_EOL.'o2aHgpEDfyWZv2iatSEjZDQuPkIXah/8Cl3t+jy7oukGl0S2KuSf/v7288+IZ6sK'.PHP_EOL.'VXqVKOg2L8j+EcKd4Cr7cpmruEzleWIk+9SvCz+bRfmfr99rN2T6A6iES4XQCr/U'.PHP_EOL.'jnrfexL4MasXJqfYruh6gEZA333j6TB5NHSUuSjXicLnCe+LNuy/uwNQ0lOMzssx'.PHP_EOL.'giuEoQgtOOMZDpa4KRiFC4zhECfHviMUhyFbylLW0SdRwg7IFaAUH0zbN1s2YmDu'.PHP_EOL.'8fjeaZfjTyMxhUqz0JDPZjtW7fdLR1Kn2xbEzUpREQVXLXFNtWAo3EvE7NeIs6Ob'.PHP_EOL.'9vgSJ8AdmH8pN/Q86blERJT5NKs7b3Lmm5Mcv48u44TfSOvFdoqFblTOZAtQyEEY'.PHP_EOL.'juB5g/p8TpDHJSLSAP+0t0ybPFOVmI5eQToecFD7cCvni4D5EVSGfNT5dPfCb754'.PHP_EOL.'g2y+rKscLItCWYzvVoFecyUfmDQ0mN2bjZdJ5xOilZ8UJ9w17X65+lS4wYaDQLcv'.PHP_EOL.'FU3l+ROYHb/qBqLQAeHh02F58aQoJnk5xI20D9RQjWcqv/CA9MjhfVxq031ET2Yx'.PHP_EOL.'iE634jmA5VEKKHENxRwGXZqlRoUr6Mc+zmsAGqHKRuL905L7PLjYjzpVy7gH7/QY'.PHP_EOL.'2VEg9EtlYUiE1HL+R8I6riRvhIr0ONO8exqrphYygv0mTcmKq8fjKsxnpP5cQV0n'.PHP_EOL.'wMZJzjWWjVgnCEVS7R4ZsYUrHJQGse/WX0HI+upZqJ6mcEGx1rjLwbdKiIJ+d3CR'.PHP_EOL.'u8t4TnKRiC6s+mRhf9tq7Y+qygCSIn8aZuK0qlcPvULk+bO/Mu+nGSALqFCr6/gv'.PHP_EOL.'hYt6UAO8Gl6KRf2TbeqFHkfeaTM14xmAfKgWKzLXrVwOA6VyDriDoLZTMkqVvkLW'.PHP_EOL.'06VDAzd92btyMElc6O7GCLwTDHqi/3R55qogR8W+dS7X8gL+0W970/9SzbUCTne/'.PHP_EOL.'BK2Ue55ge150mweDzgLk+m3/PUsVHceHybWk6eVveQnDl4am+xfB5msgg3Ry/DP4'.PHP_EOL.'1n+isjGM/Et/bfDL7L6WE5srXsF9fWD6nvn1e1FJobhGP9B51q5ccAD5IqC/AA5j'.PHP_EOL.'eQG5aj07HHvclsLWSi/nlOR5wePaVc7+jj07ksI5r+HScchVvckgZai3XWwX/rPA'.PHP_EOL.'3MUzZa0cU27si72GWW6YLyu/PccRvKW9I9BjMFArLw1LILpP3BsfpwBhj6+Xn2rU'.PHP_EOL.'ngPAEfcMcqgwB5zwieWcE796QlrxIx1AxnGi/QFrElzRb//b3DZLNrRwGwyyV+lE'.PHP_EOL.'hZFYxviM2nK8LIRXGsZ/sBqQ6XT/0/ckJDajxy5/4EaD/P+JDdpMxhVaL+la7GeG'.PHP_EOL.'Hk1yGNBTwLd3G+cR3RN72aYOW9mH430ZQujS2XMfPdZmeJSnubFVDeeR5LfUzQsg'.PHP_EOL.'gXdJ61IyNesYn/hvMCdvcSMfjh4W6+A6InwKFcsKYcu0ikVrRZILphWkHGp8+vGR'.PHP_EOL.'74PIHYu/P/joxJDiIq8IWF1hbEG3BcJkM3kO3hcWkyScv9We5VTxrn+tGqkR5u/9'.PHP_EOL.'UXWkFmy99MrpRcVYACkW8vh5sCm4uwUicbe6Tz03ZJt6dNOIEZZlZmOwQWy9/eJI'.PHP_EOL.'Vl1DZuApIuYkiy5dXWZQ+TMYSvxKw8sMqEY1kF6+2Rr4J+e6QQ+ftrcr87mxhxxw'.PHP_EOL.'S1jDHRU2ILp1a7sH/6l+V99rWbiluF2Dop/KQM73+NT8sTr3Z2FZTNu/3vvMZSU6'.PHP_EOL.'eawQx6qZJOj1Xke/RSwQMYSOh72mIqJ2hnwl0CrVYilIF9b0zbC2RkduLaeVoGco'.PHP_EOL.'m5Npo2z+daNsbjLveESoSpGVAwqsuwlTuuybLeHrHr4n+1d+Qqla79n8+FH5xrZF'.PHP_EOL.'XiV3BQ16MGEGiaD7ptxKrWUdcZOnBzTBIOYhR8TZbplnKxoWmYalMMWNMOp954DD'.PHP_EOL.'BvNKErtRz46clU2JDnDUoAsk2NdRFJ8jrW/JZEEy0UdoLu3qLHAN+/qmoRrTF4N7'.PHP_EOL.'jF/hnWp1fVl+zjGl0DLNlaayVSxchgO2JNero1gaOcIQ9iqd5UY5aE/qt7RR/N6q'.PHP_EOL.'oHqnr8vjZSioWuuNTuOcRZGXPqDF1T2o4mAtfe7oIhi03pvji2myoDbd80GK5/hK'.PHP_EOL.'qhiKZt3ZhWNcVEUU1nZeon7AGphwPnEh+50w3pblwAPinlxNDXX/4SoinysPGJY6'.PHP_EOL.'z483xJBMgTtlhDqdr6VIhOlyE3Jut4T1KqHOW6hjvUM3yhC5QkeiesBbkeH9WugY'.PHP_EOL.'HGls71d02HDResL5L2If0MMRR51qczYPOc9Rmwce60bwfQr0ATJZFLTWwDCsXvdk'.PHP_EOL.'bnurLkhyJgwdm4VuRjSXPBsX693XmOA18/glOZkPaxVbBWAjtCn1PaF3S65kv+G4'.PHP_EOL.'eXZtpELIL8NIj1zqner1R3+0E3/IJw1xRXHStLoQZ/MzxVg4bDKIFUECBUOMFeIo'.PHP_EOL.'GxRVYDeWN861iEsoEMeSqG+hBpzNIjZ8pfsvtzCBd4F1ySho2GejqYKlkFqa7IFn'.PHP_EOL.'UjLpOeC5CLn0wIIp2JzMil966ZtIMSi/LYhtCY+qV38kjpY65+CV2IhO7eFdHko1'.PHP_EOL.'rNqfaZzc2sq7VIRdml3NvjAllnbpT/XETYYswmu7TnJmhU0SQ3vYOFqAzVHmiofA'.PHP_EOL.'/NFyfdqF1i9TMOg/pQcSlrvoDbeWpp9jsX3yXrqGYCddeUQrMRXC2FijFYA1i1Wz'.PHP_EOL.'Gz02S00l00wHc4IycKj0FaR5+aOWvMwlKQE//WZ/E3ajdbW0w1emTk5A87bT95Y8'.PHP_EOL.'XeJiGhtKjx9zHNe3D1uDUFevRMAOPSGX/PiPD3fBUYYuWwDepiy1rLQj3ImAcFma'.PHP_EOL.'HFztXUnM1Z3DEgOZGADl4KbUQtUHGki6n1YZmVSzWvPCpfMj7fuLuXd3AV8J/+La'.PHP_EOL.'Dyb6A1CO4zpiqRLP5cpyf6wkSDVdIyGgHXmyBgT1T7Y5778QYsrR05TbPIc7jQXy'.PHP_EOL.'CG+Epam4BwhNf9CcQyt6bCyIKXQ8ScZn3wFfOVG93UwU1zRlTDM37BNXGziM2S14'.PHP_EOL.'1unQyMgoDljoWIIRfqSg1Zj1wtdI2DhcbgixZFCt8ifZZYXP+eHOVpk2b81QzWSY'.PHP_EOL.'pFEQ+ay9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEATPINk/17H+RLz459iCVQAGes'.PHP_EOL.'8kc5sxYj3CkMlWrGMiCxvsgu2kak6dCa0f3DfiVt54Fry7s0OklHiZmipoiF4RCt'.PHP_EOL.'yJwUSAzRrZFAbkpDg8oIu4Ui/Bt13kY7xON+u4m0IgkLZSE+8BSjMrfjVvVxe+qH'.PHP_EOL.'5i7X/ibUTDjgyfdA8XI='],
+ 'x5c' => [
+ 'MIIR2jCCEUMCAg4EMA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIx' . PHP_EOL . 'MDEwMTIxNzQ5WhcNMTcxMDA5MTIxNzQ5WjBKMQswCQYDVQQGDAJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wghAiMA0GCSqGSIb3DQEBAQUAA4IQDwAwghAKAoIQAQCrM8WwUh/dxJ6z' . PHP_EOL . 'bkOWhXfLd3yAoxxlUT8RD/p78xmfKoNu44Q/f3JCzdq6fNtlGg7xfDyUugk126Io' . PHP_EOL . 'qxyjuh0jvneQG/PV4vKR76xYFVm21udjLP0ATdld8Bv2sdbYDGAioc2xA6wslL92' . PHP_EOL . 'i4ZnDFrA10T3RYzhAbzRsOmTHEd85u2Zkhtmg4VJ6iQMcDmOiRAbMnrm3oBG1A4i' . PHP_EOL . 'G3zikiUCvxE7S8JSInRHhN0B99t0i6QxxV9KhkGVkn+r7IG0+ioHU2avXHUWoK1H' . PHP_EOL . 'zU2sS12nsJQfLjIsiyQzMdPAkvbh3HzM9L1EEgC5Hoc7qyhDBCApjk1ibJpka5YO' . PHP_EOL . 'vPDQuiv3+ONzHfHs2VcRR98bJR1P9tnqjCyB35Km+dupc9ch/67kkftp9JS5qPK0' . PHP_EOL . 'ecZWKVA6kSDToHQX4C6ZQTHy90s9zMLHQIQPXWaFGFPV5FA8mXPGCoDbZI3VjPQ/' . PHP_EOL . 'nlHxBt8Vhx+WkS1lseZ2/AxKKkSgRTIjxoD3Pbryg1WecAaEbdw6qTz7gc6+2pn0' . PHP_EOL . 'shzyNRxAu1Zf48lq/0R4+da5XqkXDO8pzCXT2bTzEh8iH0O8VUnPcWSz5fpzW1Wj' . PHP_EOL . 'ZVqV+2WPx+eXO71aCjCeTCEzgo3ZSlwdx9/gb6/3NySFylE5LNnVrHmY85QwXoHY' . PHP_EOL . '5VrAyF/eWL0D0kSkEPFW7b6BlTo1uG98fV/g9009SeVqw/KUefirPhLr9XV+7GGj' . PHP_EOL . '7Y79XvbDdXkUMGL6bYP28NVC8m26iInFQTI5ZrGx6e7OgWWreM0fCbRKJpvBWNoz' . PHP_EOL . 'Kt7iqS2Yeiku4tfaLEwTettO1pcsBqXL63ZfqhLicXKHA/1/9ZslvhiH9EPGSw+P' . PHP_EOL . 'WFH/icfjc1NiNkGUsMzRhFvjFHMWYBNA5SE+i7otJRuXxOXbPtZgXOVwqAfCRZFp' . PHP_EOL . 'MZRXxLP+H78h+BkO8K3LIuHO9Y6Z8kGGxXWdNsOuvwOK9kYfmG4E0fzy/+BsJXDf' . PHP_EOL . 'poCMfwGeZwdDQiZRTBeiIHWJZJYHfHXF1icDJB/lFXY8rzrBVzgQFHFbox4kdZmv' . PHP_EOL . '6QWAe1zCTbKzwx7AvzGUqzVLrgA8Ba0P5awsYSdRUx8zkS5aOhL2QHgEjgMLozS7' . PHP_EOL . 'IONoK4W7zTAyZZ/H0Lf5jbHuXkvDQbiBFxST4Xc420p+zEyoCZXppRWReZ2Rfkst' . PHP_EOL . 'rXTkKkhWp+UzjQI+XmaVUYQWVN/27TNyXJDT/6pa3vxnOSmiU+P1coeKR1gD8Mpu' . PHP_EOL . '+1+C2A0LTsYjAFy2hCw6soY7GKB5bOsDB9L1Lla3uG9yzZHRjTiteh5JM9sdYu6a' . PHP_EOL . 'wlgvELYc+1qbcjFAnMKWMg4UHlKqL1Ys7mX/KOZQZLYXPLkOS7IW4Lejv2sH5W7T' . PHP_EOL . 'OkdDmwd1vJiR++LdBnHiMu6PaSL7f/VCPtF9V13XJZ652cVTLlAZ9aHf5Whor1Qh' . PHP_EOL . 'nUR5frajBdMY04mi+f3Ix3BtebLvmquQ9dp0VAbeWe6qr9Rx3xkBgm/B9Bvq6FNK' . PHP_EOL . '/WRIUKnHLJpIFiMtTjhAMXoVGH9AcswEzYNVqw5PSGwXZRawhdSd6gkeT+pVlJGa' . PHP_EOL . 'PkQNoitYBQRl8v+B6LBxbf8vdj2JocyQH3d8c2xUSkuZM768sdkdg3Rz6Qo1UHD/' . PHP_EOL . 'jTEZnlmA8mVPgllW8Eq4HaRrY6xItxFdm/NlllOetEdv/12eAaQWkjSBzqAW7Z3W' . PHP_EOL . 'Y8ggWnolLsAnj+xgoTjLG4YbsiwDgSuc0EQr1KvVdK7T8p9wi/rd2b8DJsODW+ao' . PHP_EOL . 'wsKXkSI/04gWxZ0gzjb3vQ8f2HxGLspSfQPndFJFWRXfw1bfXYDYlgId8R9sjHKJ' . PHP_EOL . 'sQiuy6yJv3zHoF52H7cGmxbKKHZeUNPoAXAl0PRxz9R/npWq/3BpS2xLH7XEHCWJ' . PHP_EOL . 'nfkwqr4h9XqFwucWAuHGypqRXxoUsATMjxSWd53rONEALbxpoM5lwV0oQwPTAc9R' . PHP_EOL . 'bz71RNDECC6Dyi0QhNZKQq5vJdt2h+lVr1fCOrX6Mtvh7KWp7LRGiQqsc7oHsXcq' . PHP_EOL . '1QXxmybSYYSDue9SGMQEUvcCqQuR7k1v/vy6pve3NkXeI7qCEQ1qv2zUNQhio2Rs' . PHP_EOL . 'xJ6HuyaARH88FQHQwYypGfHypyvm3nIES6tnuqrv4tigk6hzpTBo+tA38AVGi7i6' . PHP_EOL . 'CJGvEiu87CsM+vjLbOiL1cqcEG5gye3YCQZUI0gDRY4qCZ7HjH/Y2uLYmVGJ4A/A' . PHP_EOL . '099bk8uTI9VF/DR03OGDtywyXVZy13DUmkcmGAyzC6FiFFYbLNhYThlTyW9BaoDj' . PHP_EOL . 'Yw4p9SLEBXguYTMbPZ5FBI8ZaMsLzn6ZzF/++yyYP6Zu4kCPOUsPPPCWWtMMJCu3' . PHP_EOL . 'XwN+2kAAeEPmEbYeZAf1EPNxLeyeIjHinbPKoEdVCxYzvgGVCNs4OOAdEd6tODFh' . PHP_EOL . 'o2aHgpEDfyWZv2iatSEjZDQuPkIXah/8Cl3t+jy7oukGl0S2KuSf/v7288+IZ6sK' . PHP_EOL . 'VXqVKOg2L8j+EcKd4Cr7cpmruEzleWIk+9SvCz+bRfmfr99rN2T6A6iES4XQCr/U' . PHP_EOL . 'jnrfexL4MasXJqfYruh6gEZA333j6TB5NHSUuSjXicLnCe+LNuy/uwNQ0lOMzssx' . PHP_EOL . 'giuEoQgtOOMZDpa4KRiFC4zhECfHviMUhyFbylLW0SdRwg7IFaAUH0zbN1s2YmDu' . PHP_EOL . '8fjeaZfjTyMxhUqz0JDPZjtW7fdLR1Kn2xbEzUpREQVXLXFNtWAo3EvE7NeIs6Ob' . PHP_EOL . '9vgSJ8AdmH8pN/Q86blERJT5NKs7b3Lmm5Mcv48u44TfSOvFdoqFblTOZAtQyEEY' . PHP_EOL . 'juB5g/p8TpDHJSLSAP+0t0ybPFOVmI5eQToecFD7cCvni4D5EVSGfNT5dPfCb754' . PHP_EOL . 'g2y+rKscLItCWYzvVoFecyUfmDQ0mN2bjZdJ5xOilZ8UJ9w17X65+lS4wYaDQLcv' . PHP_EOL . 'FU3l+ROYHb/qBqLQAeHh02F58aQoJnk5xI20D9RQjWcqv/CA9MjhfVxq031ET2Yx' . PHP_EOL . 'iE634jmA5VEKKHENxRwGXZqlRoUr6Mc+zmsAGqHKRuL905L7PLjYjzpVy7gH7/QY' . PHP_EOL . '2VEg9EtlYUiE1HL+R8I6riRvhIr0ONO8exqrphYygv0mTcmKq8fjKsxnpP5cQV0n' . PHP_EOL . 'wMZJzjWWjVgnCEVS7R4ZsYUrHJQGse/WX0HI+upZqJ6mcEGx1rjLwbdKiIJ+d3CR' . PHP_EOL . 'u8t4TnKRiC6s+mRhf9tq7Y+qygCSIn8aZuK0qlcPvULk+bO/Mu+nGSALqFCr6/gv' . PHP_EOL . 'hYt6UAO8Gl6KRf2TbeqFHkfeaTM14xmAfKgWKzLXrVwOA6VyDriDoLZTMkqVvkLW' . PHP_EOL . '06VDAzd92btyMElc6O7GCLwTDHqi/3R55qogR8W+dS7X8gL+0W970/9SzbUCTne/' . PHP_EOL . 'BK2Ue55ge150mweDzgLk+m3/PUsVHceHybWk6eVveQnDl4am+xfB5msgg3Ry/DP4' . PHP_EOL . '1n+isjGM/Et/bfDL7L6WE5srXsF9fWD6nvn1e1FJobhGP9B51q5ccAD5IqC/AA5j' . PHP_EOL . 'eQG5aj07HHvclsLWSi/nlOR5wePaVc7+jj07ksI5r+HScchVvckgZai3XWwX/rPA' . PHP_EOL . '3MUzZa0cU27si72GWW6YLyu/PccRvKW9I9BjMFArLw1LILpP3BsfpwBhj6+Xn2rU' . PHP_EOL . 'ngPAEfcMcqgwB5zwieWcE796QlrxIx1AxnGi/QFrElzRb//b3DZLNrRwGwyyV+lE' . PHP_EOL . 'hZFYxviM2nK8LIRXGsZ/sBqQ6XT/0/ckJDajxy5/4EaD/P+JDdpMxhVaL+la7GeG' . PHP_EOL . 'Hk1yGNBTwLd3G+cR3RN72aYOW9mH430ZQujS2XMfPdZmeJSnubFVDeeR5LfUzQsg' . PHP_EOL . 'gXdJ61IyNesYn/hvMCdvcSMfjh4W6+A6InwKFcsKYcu0ikVrRZILphWkHGp8+vGR' . PHP_EOL . '74PIHYu/P/joxJDiIq8IWF1hbEG3BcJkM3kO3hcWkyScv9We5VTxrn+tGqkR5u/9' . PHP_EOL . 'UXWkFmy99MrpRcVYACkW8vh5sCm4uwUicbe6Tz03ZJt6dNOIEZZlZmOwQWy9/eJI' . PHP_EOL . 'Vl1DZuApIuYkiy5dXWZQ+TMYSvxKw8sMqEY1kF6+2Rr4J+e6QQ+ftrcr87mxhxxw' . PHP_EOL . 'S1jDHRU2ILp1a7sH/6l+V99rWbiluF2Dop/KQM73+NT8sTr3Z2FZTNu/3vvMZSU6' . PHP_EOL . 'eawQx6qZJOj1Xke/RSwQMYSOh72mIqJ2hnwl0CrVYilIF9b0zbC2RkduLaeVoGco' . PHP_EOL . 'm5Npo2z+daNsbjLveESoSpGVAwqsuwlTuuybLeHrHr4n+1d+Qqla79n8+FH5xrZF' . PHP_EOL . 'XiV3BQ16MGEGiaD7ptxKrWUdcZOnBzTBIOYhR8TZbplnKxoWmYalMMWNMOp954DD' . PHP_EOL . 'BvNKErtRz46clU2JDnDUoAsk2NdRFJ8jrW/JZEEy0UdoLu3qLHAN+/qmoRrTF4N7' . PHP_EOL . 'jF/hnWp1fVl+zjGl0DLNlaayVSxchgO2JNero1gaOcIQ9iqd5UY5aE/qt7RR/N6q' . PHP_EOL . 'oHqnr8vjZSioWuuNTuOcRZGXPqDF1T2o4mAtfe7oIhi03pvji2myoDbd80GK5/hK' . PHP_EOL . 'qhiKZt3ZhWNcVEUU1nZeon7AGphwPnEh+50w3pblwAPinlxNDXX/4SoinysPGJY6' . PHP_EOL . 'z483xJBMgTtlhDqdr6VIhOlyE3Jut4T1KqHOW6hjvUM3yhC5QkeiesBbkeH9WugY' . PHP_EOL . 'HGls71d02HDResL5L2If0MMRR51qczYPOc9Rmwce60bwfQr0ATJZFLTWwDCsXvdk' . PHP_EOL . 'bnurLkhyJgwdm4VuRjSXPBsX693XmOA18/glOZkPaxVbBWAjtCn1PaF3S65kv+G4' . PHP_EOL . 'eXZtpELIL8NIj1zqner1R3+0E3/IJw1xRXHStLoQZ/MzxVg4bDKIFUECBUOMFeIo' . PHP_EOL . 'GxRVYDeWN861iEsoEMeSqG+hBpzNIjZ8pfsvtzCBd4F1ySho2GejqYKlkFqa7IFn' . PHP_EOL . 'UjLpOeC5CLn0wIIp2JzMil966ZtIMSi/LYhtCY+qV38kjpY65+CV2IhO7eFdHko1' . PHP_EOL . 'rNqfaZzc2sq7VIRdml3NvjAllnbpT/XETYYswmu7TnJmhU0SQ3vYOFqAzVHmiofA' . PHP_EOL . '/NFyfdqF1i9TMOg/pQcSlrvoDbeWpp9jsX3yXrqGYCddeUQrMRXC2FijFYA1i1Wz' . PHP_EOL . 'Gz02S00l00wHc4IycKj0FaR5+aOWvMwlKQE//WZ/E3ajdbW0w1emTk5A87bT95Y8' . PHP_EOL . 'XeJiGhtKjx9zHNe3D1uDUFevRMAOPSGX/PiPD3fBUYYuWwDepiy1rLQj3ImAcFma' . PHP_EOL . 'HFztXUnM1Z3DEgOZGADl4KbUQtUHGki6n1YZmVSzWvPCpfMj7fuLuXd3AV8J/+La' . PHP_EOL . 'Dyb6A1CO4zpiqRLP5cpyf6wkSDVdIyGgHXmyBgT1T7Y5778QYsrR05TbPIc7jQXy' . PHP_EOL . 'CG+Epam4BwhNf9CcQyt6bCyIKXQ8ScZn3wFfOVG93UwU1zRlTDM37BNXGziM2S14' . PHP_EOL . '1unQyMgoDljoWIIRfqSg1Zj1wtdI2DhcbgixZFCt8ifZZYXP+eHOVpk2b81QzWSY' . PHP_EOL . 'pFEQ+ay9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEATPINk/17H+RLz459iCVQAGes' . PHP_EOL . '8kc5sxYj3CkMlWrGMiCxvsgu2kak6dCa0f3DfiVt54Fry7s0OklHiZmipoiF4RCt' . PHP_EOL . 'yJwUSAzRrZFAbkpDg8oIu4Ui/Bt13kY7xON+u4m0IgkLZSE+8BSjMrfjVvVxe+qH' . PHP_EOL . '5i7X/ibUTDjgyfdA8XI=',
+ ],
],
],
[
- __DIR__.'/EC/PEM/prime256v1-cert.pem',
+ __DIR__ . '/EC/PEM/prime256v1-cert.pem',
[
'kty' => 'EC',
'crv' => 'P-256',
@@ -278,11 +290,13 @@ public function dataLoadCertificate(): array
'y' => 'SM45Hsr9dnUR6Ox-TpmNv2fbDX4CoVo-3patMUpXANA',
'x5t' => 'ZnnaQDssCKJQZLp6zyHssIZOa7o',
'x5t#256' => 'v7VlokKTGL3anRk8Nl0VcqVC9u5j2Fb5tdlQntUgDT4',
- 'x5c' => ['MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYT'.PHP_EOL.'AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn'.PHP_EOL.'aXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQsw'.PHP_EOL.'CQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJu'.PHP_EOL.'ZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr'.PHP_EOL.'/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sN'.PHP_EOL.'fgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXh'.PHP_EOL.'MB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8w'.PHP_EOL.'CgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+'.PHP_EOL.'kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM='],
+ 'x5c' => [
+ 'MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYT' . PHP_EOL . 'AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn' . PHP_EOL . 'aXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQsw' . PHP_EOL . 'CQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJu' . PHP_EOL . 'ZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr' . PHP_EOL . '/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sN' . PHP_EOL . 'fgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXh' . PHP_EOL . 'MB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8w' . PHP_EOL . 'CgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+' . PHP_EOL . 'kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM=',
+ ],
],
],
[
- __DIR__.'/EC/DER/prime256v1-cert.der',
+ __DIR__ . '/EC/DER/prime256v1-cert.der',
[
'kty' => 'EC',
'crv' => 'P-256',
@@ -290,14 +304,15 @@ public function dataLoadCertificate(): array
'y' => 'SM45Hsr9dnUR6Ox-TpmNv2fbDX4CoVo-3patMUpXANA',
'x5t' => 'ZnnaQDssCKJQZLp6zyHssIZOa7o',
'x5t#256' => 'v7VlokKTGL3anRk8Nl0VcqVC9u5j2Fb5tdlQntUgDT4',
- 'x5c' => ['MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYT'.PHP_EOL.'AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn'.PHP_EOL.'aXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQsw'.PHP_EOL.'CQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJu'.PHP_EOL.'ZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr'.PHP_EOL.'/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sN'.PHP_EOL.'fgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXh'.PHP_EOL.'MB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8w'.PHP_EOL.'CgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+'.PHP_EOL.'kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM='],
+ 'x5c' => [
+ 'MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYT' . PHP_EOL . 'AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn' . PHP_EOL . 'aXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQsw' . PHP_EOL . 'CQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJu' . PHP_EOL . 'ZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr' . PHP_EOL . '/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sN' . PHP_EOL . 'fgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXh' . PHP_EOL . 'MB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8w' . PHP_EOL . 'CgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+' . PHP_EOL . 'kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM=',
+ ],
],
],
];
}
/**
- * @covers \Jose\Component\KeyManagement\JWKFactory
* @test
*/
public function loadX5CParameter(): void
@@ -308,12 +323,17 @@ public function loadX5CParameter(): void
'kid' => '1b94c',
'n' => 'vrjOfz9Ccdgx5nQudyhdoR17V-IubWMeOZCwX_jj0hgAsz2J_pqYW08PLbK_PdiVGKPrqzmDIsLI7sA25VEnHU1uCLNwBuUiCO11_-7dYbsr4iJmG0Qu2j8DsVyT1azpJC_NG84Ty5KKthuCaPod7iI7w0LK9orSMhBEwwZDCxTWq4aYWAchc8t-emd9qOvWtVMDC2BXksRngh6X5bUYLy6AyHKvj-nUy1wgzjYQDwHMTplCoLtU-o-8SNnZ1tmRoGE9uJkBLdh5gFENabWnU5m1ZqZPdwS-qo-meMvVfJb6jJVWRpl2SUtCnYG2C32qvbWbjZ_jBPD5eunqsIo1vQ',
'e' => 'AQAB',
- 'x5c' => ['MIIDQjCCAiqgAwIBAgIGATz/FuLiMA0GCSqGSIb3DQEBBQUAMGIxCzAJB'.PHP_EOL.'gNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYD'.PHP_EOL.'VQQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1'.PHP_EOL.'wYmVsbDAeFw0xMzAyMjEyMzI5MTVaFw0xODA4MTQyMjI5MTVaMGIxCzAJBg'.PHP_EOL.'NVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDV'.PHP_EOL.'QQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1w'.PHP_EOL.'YmVsbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL64zn8/QnH'.PHP_EOL.'YMeZ0LncoXaEde1fiLm1jHjmQsF/449IYALM9if6amFtPDy2yvz3YlRij66'.PHP_EOL.'s5gyLCyO7ANuVRJx1NbgizcAblIgjtdf/u3WG7K+IiZhtELto/A7Fck9Ws6'.PHP_EOL.'SQvzRvOE8uSirYbgmj6He4iO8NCyvaK0jIQRMMGQwsU1quGmFgHIXPLfnpn'.PHP_EOL.'fajr1rVTAwtgV5LEZ4Iel+W1GC8ugMhyr4/p1MtcIM42EA8BzE6ZQqC7VPq'.PHP_EOL.'PvEjZ2dbZkaBhPbiZAS3YeYBRDWm1p1OZtWamT3cEvqqPpnjL1XyW+oyVVk'.PHP_EOL.'aZdklLQp2Btgt9qr21m42f4wTw+Xrp6rCKNb0CAwEAATANBgkqhkiG9w0BA'.PHP_EOL.'QUFAAOCAQEAh8zGlfSlcI0o3rYDPBB07aXNswb4ECNIKG0CETTUxmXl9KUL'.PHP_EOL.'+9gGlqCz5iWLOgWsnrcKcY0vXPG9J1r9AqBNTqNgHq2G03X09266X5CpOe1'.PHP_EOL.'zFo+Owb1zxtp3PehFdfQJ610CDLEaS9V9Rqp17hCyybEpOGVwe8fnk+fbEL'.PHP_EOL.'2Bo3UPGrpsHzUoaGpDftmWssZkhpBJKVMJyf/RuP2SmmaIzmnw9JiSlYhzo'.PHP_EOL.'4tpzd5rFXhjRbg4zW9C+2qok+2+qDM1iJ684gPHMIY8aLWrdgQTxkumGmTq'.PHP_EOL.'gawR+N5MDtdPTEQ0XfIBc2cJEUyMTY5MPvACWpkA6SdS4xSvdXK3IVfOWA=='],
+ 'x5c' => [
+ 'MIIDQjCCAiqgAwIBAgIGATz/FuLiMA0GCSqGSIb3DQEBBQUAMGIxCzAJB' . PHP_EOL . 'gNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYD' . PHP_EOL . 'VQQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1' . PHP_EOL . 'wYmVsbDAeFw0xMzAyMjEyMzI5MTVaFw0xODA4MTQyMjI5MTVaMGIxCzAJBg' . PHP_EOL . 'NVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDV' . PHP_EOL . 'QQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1w' . PHP_EOL . 'YmVsbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL64zn8/QnH' . PHP_EOL . 'YMeZ0LncoXaEde1fiLm1jHjmQsF/449IYALM9if6amFtPDy2yvz3YlRij66' . PHP_EOL . 's5gyLCyO7ANuVRJx1NbgizcAblIgjtdf/u3WG7K+IiZhtELto/A7Fck9Ws6' . PHP_EOL . 'SQvzRvOE8uSirYbgmj6He4iO8NCyvaK0jIQRMMGQwsU1quGmFgHIXPLfnpn' . PHP_EOL . 'fajr1rVTAwtgV5LEZ4Iel+W1GC8ugMhyr4/p1MtcIM42EA8BzE6ZQqC7VPq' . PHP_EOL . 'PvEjZ2dbZkaBhPbiZAS3YeYBRDWm1p1OZtWamT3cEvqqPpnjL1XyW+oyVVk' . PHP_EOL . 'aZdklLQp2Btgt9qr21m42f4wTw+Xrp6rCKNb0CAwEAATANBgkqhkiG9w0BA' . PHP_EOL . 'QUFAAOCAQEAh8zGlfSlcI0o3rYDPBB07aXNswb4ECNIKG0CETTUxmXl9KUL' . PHP_EOL . '+9gGlqCz5iWLOgWsnrcKcY0vXPG9J1r9AqBNTqNgHq2G03X09266X5CpOe1' . PHP_EOL . 'zFo+Owb1zxtp3PehFdfQJ610CDLEaS9V9Rqp17hCyybEpOGVwe8fnk+fbEL' . PHP_EOL . '2Bo3UPGrpsHzUoaGpDftmWssZkhpBJKVMJyf/RuP2SmmaIzmnw9JiSlYhzo' . PHP_EOL . '4tpzd5rFXhjRbg4zW9C+2qok+2+qDM1iJ684gPHMIY8aLWrdgQTxkumGmTq' . PHP_EOL . 'gawR+N5MDtdPTEQ0XfIBc2cJEUyMTY5MPvACWpkA6SdS4xSvdXK3IVfOWA==',
+ ],
]);
- $certificate = JWKFactory::createFromX5C($key->get('x5c'), ['use' => 'sig', 'kid' => '1b94c']);
+ $certificate = JWKFactory::createFromX5C($key->get('x5c'), [
+ 'use' => 'sig',
+ 'kid' => '1b94c',
+ ]);
- static::assertEquals(
+ static::assertEqualsCanonicalizing(
[
'kty' => 'RSA',
'use' => 'sig',
@@ -322,7 +342,9 @@ public function loadX5CParameter(): void
'e' => 'AQAB',
'x5t' => '4pNenEBLv0JpLIdugWxQkOsZcK0',
'x5t#256' => 'pJm2BBpkB8y7tCqrWM0X37WOmQTO8zQw-VpxVgBb21I',
- 'x5c' => ['MIIDQjCCAiqgAwIBAgIGATz/FuLiMA0GCSqGSIb3DQEBBQUAMGIxCzAJBgNVBAYT'.PHP_EOL.'AlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDVQQKExNQaW5n'.PHP_EOL.'IElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1wYmVsbDAeFw0xMzAy'.PHP_EOL.'MjEyMzI5MTVaFw0xODA4MTQyMjI5MTVaMGIxCzAJBgNVBAYTAlVTMQswCQYDVQQI'.PHP_EOL.'EwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDVQQKExNQaW5nIElkZW50aXR5IENv'.PHP_EOL.'cnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1wYmVsbDCCASIwDQYJKoZIhvcNAQEBBQAD'.PHP_EOL.'ggEPADCCAQoCggEBAL64zn8/QnHYMeZ0LncoXaEde1fiLm1jHjmQsF/449IYALM9'.PHP_EOL.'if6amFtPDy2yvz3YlRij66s5gyLCyO7ANuVRJx1NbgizcAblIgjtdf/u3WG7K+Ii'.PHP_EOL.'ZhtELto/A7Fck9Ws6SQvzRvOE8uSirYbgmj6He4iO8NCyvaK0jIQRMMGQwsU1quG'.PHP_EOL.'mFgHIXPLfnpnfajr1rVTAwtgV5LEZ4Iel+W1GC8ugMhyr4/p1MtcIM42EA8BzE6Z'.PHP_EOL.'QqC7VPqPvEjZ2dbZkaBhPbiZAS3YeYBRDWm1p1OZtWamT3cEvqqPpnjL1XyW+oyV'.PHP_EOL.'VkaZdklLQp2Btgt9qr21m42f4wTw+Xrp6rCKNb0CAwEAATANBgkqhkiG9w0BAQUF'.PHP_EOL.'AAOCAQEAh8zGlfSlcI0o3rYDPBB07aXNswb4ECNIKG0CETTUxmXl9KUL+9gGlqCz'.PHP_EOL.'5iWLOgWsnrcKcY0vXPG9J1r9AqBNTqNgHq2G03X09266X5CpOe1zFo+Owb1zxtp3'.PHP_EOL.'PehFdfQJ610CDLEaS9V9Rqp17hCyybEpOGVwe8fnk+fbEL2Bo3UPGrpsHzUoaGpD'.PHP_EOL.'ftmWssZkhpBJKVMJyf/RuP2SmmaIzmnw9JiSlYhzo4tpzd5rFXhjRbg4zW9C+2qo'.PHP_EOL.'k+2+qDM1iJ684gPHMIY8aLWrdgQTxkumGmTqgawR+N5MDtdPTEQ0XfIBc2cJEUyM'.PHP_EOL.'TY5MPvACWpkA6SdS4xSvdXK3IVfOWA=='],
+ 'x5c' => [
+ 'MIIDQjCCAiqgAwIBAgIGATz/FuLiMA0GCSqGSIb3DQEBBQUAMGIxCzAJBgNVBAYT' . PHP_EOL . 'AlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDVQQKExNQaW5n' . PHP_EOL . 'IElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1wYmVsbDAeFw0xMzAy' . PHP_EOL . 'MjEyMzI5MTVaFw0xODA4MTQyMjI5MTVaMGIxCzAJBgNVBAYTAlVTMQswCQYDVQQI' . PHP_EOL . 'EwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDVQQKExNQaW5nIElkZW50aXR5IENv' . PHP_EOL . 'cnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1wYmVsbDCCASIwDQYJKoZIhvcNAQEBBQAD' . PHP_EOL . 'ggEPADCCAQoCggEBAL64zn8/QnHYMeZ0LncoXaEde1fiLm1jHjmQsF/449IYALM9' . PHP_EOL . 'if6amFtPDy2yvz3YlRij66s5gyLCyO7ANuVRJx1NbgizcAblIgjtdf/u3WG7K+Ii' . PHP_EOL . 'ZhtELto/A7Fck9Ws6SQvzRvOE8uSirYbgmj6He4iO8NCyvaK0jIQRMMGQwsU1quG' . PHP_EOL . 'mFgHIXPLfnpnfajr1rVTAwtgV5LEZ4Iel+W1GC8ugMhyr4/p1MtcIM42EA8BzE6Z' . PHP_EOL . 'QqC7VPqPvEjZ2dbZkaBhPbiZAS3YeYBRDWm1p1OZtWamT3cEvqqPpnjL1XyW+oyV' . PHP_EOL . 'VkaZdklLQp2Btgt9qr21m42f4wTw+Xrp6rCKNb0CAwEAATANBgkqhkiG9w0BAQUF' . PHP_EOL . 'AAOCAQEAh8zGlfSlcI0o3rYDPBB07aXNswb4ECNIKG0CETTUxmXl9KUL+9gGlqCz' . PHP_EOL . '5iWLOgWsnrcKcY0vXPG9J1r9AqBNTqNgHq2G03X09266X5CpOe1zFo+Owb1zxtp3' . PHP_EOL . 'PehFdfQJ610CDLEaS9V9Rqp17hCyybEpOGVwe8fnk+fbEL2Bo3UPGrpsHzUoaGpD' . PHP_EOL . 'ftmWssZkhpBJKVMJyf/RuP2SmmaIzmnw9JiSlYhzo4tpzd5rFXhjRbg4zW9C+2qo' . PHP_EOL . 'k+2+qDM1iJ684gPHMIY8aLWrdgQTxkumGmTqgawR+N5MDtdPTEQ0XfIBc2cJEUyM' . PHP_EOL . 'TY5MPvACWpkA6SdS4xSvdXK3IVfOWA==',
+ ],
],
$certificate->all()
);
diff --git a/tests/Component/KeyManagement/FooAlgorithm.php b/tests/Component/KeyManagement/FooAlgorithm.php
index b9745129..88aac35e 100644
--- a/tests/Component/KeyManagement/FooAlgorithm.php
+++ b/tests/Component/KeyManagement/FooAlgorithm.php
@@ -2,23 +2,10 @@
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\Tests\Component\KeyManagement;
use Jose\Component\Core\Algorithm;
-/**
- * @group unit
- * @group JWKSet
- */
class FooAlgorithm implements Algorithm
{
public function name(): string
diff --git a/tests/Component/KeyManagement/JWKAnalyzerTest.php b/tests/Component/KeyManagement/JWKAnalyzerTest.php
index cbc2e6de..ce5f59b4 100644
--- a/tests/Component/KeyManagement/JWKAnalyzerTest.php
+++ b/tests/Component/KeyManagement/JWKAnalyzerTest.php
@@ -2,34 +2,25 @@
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\Tests\Component\KeyManagement;
use Jose\Component\Core\JWK;
-use Jose\Component\KeyManagement\Analyzer;
+use Jose\Component\KeyManagement\Analyzer\AlgorithmAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\KeyAnalyzerManager;
+use Jose\Component\KeyManagement\Analyzer\KeyIdentifierAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\NoneAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\OctAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\RsaAnalyzer;
+use Jose\Component\KeyManagement\Analyzer\UsageAnalyzer;
use Jose\Component\KeyManagement\JWKFactory;
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group JWKAnalyzer
- *
* @internal
*/
-class JWKAnalyzerTest extends TestCase
+final class JWKAnalyzerTest extends TestCase
{
- /**
- * @var null|Analyzer\KeyAnalyzerManager
- */
- private $keyAnalyzerManager;
+ private ?KeyAnalyzerManager $keyAnalyzerManager = null;
/**
* @test
@@ -37,7 +28,9 @@ class JWKAnalyzerTest extends TestCase
public function iCanAnalyzeANoneKeyAndGetMessages(): void
{
$key = JWKFactory::createNoneKey();
- $messages = $this->getKeyAnalyzer()->analyze($key);
+ $messages = $this->getKeyAnalyzer()
+ ->analyze($key)
+ ;
static::assertNotEmpty($messages);
}
@@ -53,7 +46,9 @@ public function iCanAnalyzeAnRsaKeyAndGetMessages(): void
'e' => 'AQAB',
'd' => 'asuBS2jRbT50FCkP8PxdRVQ7RIWJ3s5UWAi-c233cQam1kRjGN2QzAv79hrpjLQB',
]);
- $messages = $this->getKeyAnalyzer()->analyze($key);
+ $messages = $this->getKeyAnalyzer()
+ ->analyze($key)
+ ;
static::assertNotEmpty($messages);
}
@@ -63,11 +58,15 @@ public function iCanAnalyzeAnRsaKeyAndGetMessages(): void
*/
public function theRsaKeyHasALowExponent(): void
{
- $key = JWK::createFromJson('{"kty":"RSA","n":"sv2gihrIZaT4tkxb0B70Aw","e":"Aw","d":"d1PAXBHa7mzdZNOkuSwnSw","p":"4Kz0hhYYddk","q":"y_IaXqREQzs","dp":"lcijBA66-Ts","dq":"h_a8Pxgtgic","qi":"YehXzJzN5bw"}');
- $messages = $this->getKeyAnalyzer()->analyze($key);
+ $key = JWK::createFromJson(
+ '{"kty":"RSA","n":"sv2gihrIZaT4tkxb0B70Aw","e":"Aw","d":"d1PAXBHa7mzdZNOkuSwnSw","p":"4Kz0hhYYddk","q":"y_IaXqREQzs","dp":"lcijBA66-Ts","dq":"h_a8Pxgtgic","qi":"YehXzJzN5bw"}'
+ );
+ $messages = $this->getKeyAnalyzer()
+ ->analyze($key)
+ ;
foreach ($messages->all() as $message) {
- if ('The exponent is too low. It should be at least 65537.' === $message->getMessage()) {
+ if ($message->getMessage() === 'The exponent is too low. It should be at least 65537.') {
return; // Message found. OK
}
}
@@ -79,22 +78,27 @@ public function theRsaKeyHasALowExponent(): void
*/
public function iCanAnalyzeAnOctKeyAndGetMessages(): void
{
- $key = JWKFactory::createOctKey(16, ['use' => 'foo', 'key_ops' => 'foo']);
- $messages = $this->getKeyAnalyzer()->analyze($key);
+ $key = JWKFactory::createOctKey(16, [
+ 'use' => 'foo',
+ 'key_ops' => 'foo',
+ ]);
+ $messages = $this->getKeyAnalyzer()
+ ->analyze($key)
+ ;
static::assertNotEmpty($messages);
}
- private function getKeyAnalyzer(): Analyzer\KeyAnalyzerManager
+ private function getKeyAnalyzer(): KeyAnalyzerManager
{
- if (null === $this->keyAnalyzerManager) {
- $this->keyAnalyzerManager = new Analyzer\KeyAnalyzerManager();
- $this->keyAnalyzerManager->add(new Analyzer\AlgorithmAnalyzer());
- $this->keyAnalyzerManager->add(new Analyzer\KeyIdentifierAnalyzer());
- $this->keyAnalyzerManager->add(new Analyzer\NoneAnalyzer());
- $this->keyAnalyzerManager->add(new Analyzer\OctAnalyzer());
- $this->keyAnalyzerManager->add(new Analyzer\RsaAnalyzer());
- $this->keyAnalyzerManager->add(new Analyzer\UsageAnalyzer());
+ if ($this->keyAnalyzerManager === null) {
+ $this->keyAnalyzerManager = new KeyAnalyzerManager();
+ $this->keyAnalyzerManager->add(new AlgorithmAnalyzer());
+ $this->keyAnalyzerManager->add(new KeyIdentifierAnalyzer());
+ $this->keyAnalyzerManager->add(new NoneAnalyzer());
+ $this->keyAnalyzerManager->add(new OctAnalyzer());
+ $this->keyAnalyzerManager->add(new RsaAnalyzer());
+ $this->keyAnalyzerManager->add(new UsageAnalyzer());
}
return $this->keyAnalyzerManager;
diff --git a/tests/Component/KeyManagement/JWKFactoryTest.php b/tests/Component/KeyManagement/JWKFactoryTest.php
index 88a7d1e3..7d587d4b 100644
--- a/tests/Component/KeyManagement/JWKFactoryTest.php
+++ b/tests/Component/KeyManagement/JWKFactoryTest.php
@@ -2,37 +2,26 @@
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\Tests\Component\KeyManagement;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\KeyManagement\JWKFactory;
+use ParagonIE\ConstantTime\Base64UrlSafe;
+use const PHP_EOL;
use PHPUnit\Framework\TestCase;
/**
- * @group JWKFactory
- * @group unit
- *
* @internal
*/
-class JWKFactoryTest extends TestCase
+final class JWKFactoryTest extends TestCase
{
/**
* @test
*/
public function iCanLoadAP12CertificateThatContainsARSAKey(): void
{
- $result = JWKFactory::createFromPKCS12CertificateFile(__DIR__.'/P12/CertRSA.p12', 'certRSA');
+ $result = JWKFactory::createFromPKCS12CertificateFile(__DIR__ . '/P12/CertRSA.p12', 'certRSA');
- static::assertEquals(
+ static::assertSame(
[
'kty' => 'RSA',
'n' => 'acqZqFSLArU71p9yp8ZH1nDfi5g0TLgPCgAYESrfb-DB0_F89LUSSukRRkCjNCuJqp6j6jpe4VmJ2YzGiBV3eoMqORIdUmQ3XlKKX_ONM3oWhZZoFS_2s1RLFl1faXORe4JSJIN9gt_4EpXoKTjX1gftTcFOLrXPgODEwjAYll0',
@@ -53,17 +42,20 @@ public function iCanLoadAP12CertificateThatContainsARSAKey(): void
*/
public function createFromECCertificateFileInDERFormat(): void
{
- $result = JWKFactory::createFromCertificateFile(__DIR__.'/EC/DER/prime256v1-cert.der');
+ $result = JWKFactory::createFromCertificateFile(__DIR__ . '/EC/DER/prime256v1-cert.der');
- static::assertEquals(
+ static::assertSame(
[
'kty' => 'EC',
'crv' => 'P-256',
'x' => 'xEsr_55aqgFXdrbRNz1_WSNI8UaSUxCka2kGEN1bXsI',
'y' => 'SM45Hsr9dnUR6Ox-TpmNv2fbDX4CoVo-3patMUpXANA',
- 'x5c' => ['MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYT'.PHP_EOL.'AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn'.PHP_EOL.'aXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQsw'.PHP_EOL.'CQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJu'.PHP_EOL.'ZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr'.PHP_EOL.'/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sN'.PHP_EOL.'fgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXh'.PHP_EOL.'MB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8w'.PHP_EOL.'CgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+'.PHP_EOL.'kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM='],
+ 'x5c' => [
+ 'MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYT' . PHP_EOL . 'AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn' . PHP_EOL . 'aXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQsw' . PHP_EOL . 'CQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJu' . PHP_EOL . 'ZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr' . PHP_EOL . '/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sN' . PHP_EOL . 'fgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXh' . PHP_EOL . 'MB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8w' . PHP_EOL . 'CgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+' . PHP_EOL . 'kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM=',
+ ],
'x5t' => 'ZnnaQDssCKJQZLp6zyHssIZOa7o',
- 'x5t#256' => 'v7VlokKTGL3anRk8Nl0VcqVC9u5j2Fb5tdlQntUgDT4', ],
+ 'x5t#256' => 'v7VlokKTGL3anRk8Nl0VcqVC9u5j2Fb5tdlQntUgDT4',
+ ],
$result->all()
);
}
@@ -73,13 +65,15 @@ public function createFromECCertificateFileInDERFormat(): void
*/
public function createFromSecret(): void
{
- $jwk = JWKFactory::createFromSecret('This is a very secured secret!!!!', ['kid' => 'FOO']);
+ $jwk = JWKFactory::createFromSecret('This is a very secured secret!!!!', [
+ 'kid' => 'FOO',
+ ]);
static::assertTrue($jwk->has('kty'));
static::assertTrue($jwk->has('k'));
static::assertTrue($jwk->has('kid'));
- static::assertEquals('oct', $jwk->get('kty'));
- static::assertEquals('This is a very secured secret!!!!', Base64UrlSafe::decode($jwk->get('k')));
- static::assertEquals('FOO', $jwk->get('kid'));
+ static::assertSame('oct', $jwk->get('kty'));
+ static::assertSame('This is a very secured secret!!!!', Base64UrlSafe::decode($jwk->get('k')));
+ static::assertSame('FOO', $jwk->get('kid'));
}
/**
@@ -87,8 +81,11 @@ public function createFromSecret(): void
*/
public function createFromKey(): void
{
- $jwk = JWKFactory::createFromKey(file_get_contents(__DIR__.'/Keys/EC/private.es256.encrypted.key'), 'test');
- static::assertEquals('{"kty":"EC","crv":"P-256","d":"q_VkzNnxTG39jHB0qkwA_SeVXud7yCHT7kb7kZv-0xQ","x":"vuYsP-QnrqAbM7Iyhzjt08hFSuzapyojCB_gFsBt65U","y":"oq-E2K-X0kPeqGuKnhlXkxc5fnxomRSC6KLby7Ij8AE"}', json_encode($jwk));
+ $jwk = JWKFactory::createFromKey(file_get_contents(__DIR__ . '/Keys/EC/private.es256.encrypted.key'), 'test');
+ static::assertSame(
+ '{"kty":"EC","crv":"P-256","d":"q_VkzNnxTG39jHB0qkwA_SeVXud7yCHT7kb7kZv-0xQ","x":"vuYsP-QnrqAbM7Iyhzjt08hFSuzapyojCB_gFsBt65U","y":"oq-E2K-X0kPeqGuKnhlXkxc5fnxomRSC6KLby7Ij8AE"}',
+ json_encode($jwk)
+ );
}
/**
@@ -96,15 +93,17 @@ public function createFromKey(): void
*/
public function createFromResource(): void
{
- $res = openssl_x509_read(file_get_contents(__DIR__.'/RSA/PEM/1024b-rsa-example-cert.pem'));
+ $res = openssl_x509_read(file_get_contents(__DIR__ . '/RSA/PEM/1024b-rsa-example-cert.pem'));
$jwk = JWKFactory::createFromX509Resource($res);
- static::assertEquals(
+ static::assertSame(
[
'kty' => 'RSA',
'n' => 'xgEGvHk-U_RY0j9l3MP7o-S2a6uf4XaRBhu1ztdCHz8tMG8Kj4_qJmgsSZQD17sRctHGBTUJWp4CLtBwCf0zAGVzySwUkcHSu1_2mZ_w7Nr0TQHKeWr_j8pvXH534DKEvugr21DAHbi4c654eLUL-JW_wJJYqJh7qHM3W3Fh7ys',
'e' => 'AQAB',
- 'x5c' => ['MIICVjCCAb8CAg37MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw'.PHP_EOL.'ODIyMDUyNzIzWhcNMTcwODIxMDUyNzIzWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYBBrx5PlP0WNI/ZdzD'.PHP_EOL.'+6Pktmurn+F2kQYbtc7XQh8/LTBvCo+P6iZoLEmUA9e7EXLRxgU1CVqeAi7QcAn9'.PHP_EOL.'MwBlc8ksFJHB0rtf9pmf8Oza9E0Bynlq/4/Kb1x+d+AyhL7oK9tQwB24uHOueHi1'.PHP_EOL.'C/iVv8CSWKiYe6hzN1txYe8rAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAASPdjigJ'.PHP_EOL.'kXCqKWpnZ/Oc75EUcMi6HztaW8abUMlYXPIgkV2F7YanHOB7K4f7OOLjiz8DTPFf'.PHP_EOL.'jC9UeuErhaA/zzWi8ewMTFZW/WshOrm3fNvcMrMLKtH534JKvcdMg6qIdjTFINIr'.PHP_EOL.'evnAhf0cwULaebn+lMs8Pdl7y37+sfluVok='],
+ 'x5c' => [
+ 'MIICVjCCAb8CAg37MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw' . PHP_EOL . 'ODIyMDUyNzIzWhcNMTcwODIxMDUyNzIzWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYBBrx5PlP0WNI/ZdzD' . PHP_EOL . '+6Pktmurn+F2kQYbtc7XQh8/LTBvCo+P6iZoLEmUA9e7EXLRxgU1CVqeAi7QcAn9' . PHP_EOL . 'MwBlc8ksFJHB0rtf9pmf8Oza9E0Bynlq/4/Kb1x+d+AyhL7oK9tQwB24uHOueHi1' . PHP_EOL . 'C/iVv8CSWKiYe6hzN1txYe8rAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAASPdjigJ' . PHP_EOL . 'kXCqKWpnZ/Oc75EUcMi6HztaW8abUMlYXPIgkV2F7YanHOB7K4f7OOLjiz8DTPFf' . PHP_EOL . 'jC9UeuErhaA/zzWi8ewMTFZW/WshOrm3fNvcMrMLKtH534JKvcdMg6qIdjTFINIr' . PHP_EOL . 'evnAhf0cwULaebn+lMs8Pdl7y37+sfluVok=',
+ ],
'x5t' => '4bK45ewZ00Wk-a_shpTw2cCqJc8',
'x5t#256' => '5F5GTPOxBGAOsVyuYzqUBjri0R2YDTiDowiQbs6oGgU',
],
@@ -117,17 +116,20 @@ public function createFromResource(): void
*/
public function createFromECCertificateFileInPEMFormat(): void
{
- $result = JWKFactory::createFromCertificateFile(__DIR__.'/EC/PEM/prime256v1-cert.pem');
+ $result = JWKFactory::createFromCertificateFile(__DIR__ . '/EC/PEM/prime256v1-cert.pem');
- static::assertEquals(
+ static::assertSame(
[
'kty' => 'EC',
'crv' => 'P-256',
'x' => 'xEsr_55aqgFXdrbRNz1_WSNI8UaSUxCka2kGEN1bXsI',
'y' => 'SM45Hsr9dnUR6Ox-TpmNv2fbDX4CoVo-3patMUpXANA',
- 'x5c' => ['MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYT'.PHP_EOL.'AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn'.PHP_EOL.'aXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQsw'.PHP_EOL.'CQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJu'.PHP_EOL.'ZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr'.PHP_EOL.'/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sN'.PHP_EOL.'fgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXh'.PHP_EOL.'MB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8w'.PHP_EOL.'CgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+'.PHP_EOL.'kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM='],
+ 'x5c' => [
+ 'MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYT' . PHP_EOL . 'AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn' . PHP_EOL . 'aXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQsw' . PHP_EOL . 'CQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJu' . PHP_EOL . 'ZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr' . PHP_EOL . '/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sN' . PHP_EOL . 'fgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXh' . PHP_EOL . 'MB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8w' . PHP_EOL . 'CgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+' . PHP_EOL . 'kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM=',
+ ],
'x5t' => 'ZnnaQDssCKJQZLp6zyHssIZOa7o',
- 'x5t#256' => 'v7VlokKTGL3anRk8Nl0VcqVC9u5j2Fb5tdlQntUgDT4', ],
+ 'x5t#256' => 'v7VlokKTGL3anRk8Nl0VcqVC9u5j2Fb5tdlQntUgDT4',
+ ],
$result->all()
);
}
@@ -137,16 +139,19 @@ public function createFromECCertificateFileInPEMFormat(): void
*/
public function createFrom32kRSACertificateFileInDERFormat(): void
{
- $result = JWKFactory::createFromCertificateFile(__DIR__.'/RSA/DER/32k-rsa-example-cert.der');
+ $result = JWKFactory::createFromCertificateFile(__DIR__ . '/RSA/DER/32k-rsa-example-cert.der');
- static::assertEquals(
+ static::assertSame(
[
'kty' => 'RSA',
'n' => 'qzPFsFIf3cSes25DloV3y3d8gKMcZVE_EQ_6e_MZnyqDbuOEP39yQs3aunzbZRoO8Xw8lLoJNduiKKsco7odI753kBvz1eLyke-sWBVZttbnYyz9AE3ZXfAb9rHW2AxgIqHNsQOsLJS_douGZwxawNdE90WM4QG80bDpkxxHfObtmZIbZoOFSeokDHA5jokQGzJ65t6ARtQOIht84pIlAr8RO0vCUiJ0R4TdAffbdIukMcVfSoZBlZJ_q-yBtPoqB1Nmr1x1FqCtR81NrEtdp7CUHy4yLIskMzHTwJL24dx8zPS9RBIAuR6HO6soQwQgKY5NYmyaZGuWDrzw0Lor9_jjcx3x7NlXEUffGyUdT_bZ6owsgd-SpvnbqXPXIf-u5JH7afSUuajytHnGVilQOpEg06B0F-AumUEx8vdLPczCx0CED11mhRhT1eRQPJlzxgqA22SN1Yz0P55R8QbfFYcflpEtZbHmdvwMSipEoEUyI8aA9z268oNVnnAGhG3cOqk8-4HOvtqZ9LIc8jUcQLtWX-PJav9EePnWuV6pFwzvKcwl09m08xIfIh9DvFVJz3Fks-X6c1tVo2Valftlj8fnlzu9WgownkwhM4KN2UpcHcff4G-v9zckhcpROSzZ1ax5mPOUMF6B2OVawMhf3li9A9JEpBDxVu2-gZU6NbhvfH1f4PdNPUnlasPylHn4qz4S6_V1fuxho-2O_V72w3V5FDBi-m2D9vDVQvJtuoiJxUEyOWaxsenuzoFlq3jNHwm0SiabwVjaMyre4qktmHopLuLX2ixME3rbTtaXLAaly-t2X6oS4nFyhwP9f_WbJb4Yh_RDxksPj1hR_4nH43NTYjZBlLDM0YRb4xRzFmATQOUhPou6LSUbl8Tl2z7WYFzlcKgHwkWRaTGUV8Sz_h-_IfgZDvCtyyLhzvWOmfJBhsV1nTbDrr8DivZGH5huBNH88v_gbCVw36aAjH8BnmcHQ0ImUUwXoiB1iWSWB3x1xdYnAyQf5RV2PK86wVc4EBRxW6MeJHWZr-kFgHtcwk2ys8MewL8xlKs1S64APAWtD-WsLGEnUVMfM5EuWjoS9kB4BI4DC6M0uyDjaCuFu80wMmWfx9C3-Y2x7l5Lw0G4gRcUk-F3ONtKfsxMqAmV6aUVkXmdkX5LLa105CpIVqflM40CPl5mlVGEFlTf9u0zclyQ0_-qWt78ZzkpolPj9XKHikdYA_DKbvtfgtgNC07GIwBctoQsOrKGOxigeWzrAwfS9S5Wt7hvcs2R0Y04rXoeSTPbHWLumsJYLxC2HPtam3IxQJzCljIOFB5Sqi9WLO5l_yjmUGS2Fzy5DkuyFuC3o79rB-Vu0zpHQ5sHdbyYkfvi3QZx4jLuj2ki-3_1Qj7RfVdd1yWeudnFUy5QGfWh3-VoaK9UIZ1EeX62owXTGNOJovn9yMdwbXmy75qrkPXadFQG3lnuqq_Ucd8ZAYJvwfQb6uhTSv1kSFCpxyyaSBYjLU44QDF6FRh_QHLMBM2DVasOT0hsF2UWsIXUneoJHk_qVZSRmj5EDaIrWAUEZfL_geiwcW3_L3Y9iaHMkB93fHNsVEpLmTO-vLHZHYN0c-kKNVBw_40xGZ5ZgPJlT4JZVvBKuB2ka2OsSLcRXZvzZZZTnrRHb_9dngGkFpI0gc6gFu2d1mPIIFp6JS7AJ4_sYKE4yxuGG7IsA4ErnNBEK9Sr1XSu0_KfcIv63dm_AybDg1vmqMLCl5EiP9OIFsWdIM42970PH9h8Ri7KUn0D53RSRVkV38NW312A2JYCHfEfbIxyibEIrsusib98x6Bedh-3BpsWyih2XlDT6AFwJdD0cc_Uf56Vqv9waUtsSx-1xBwliZ35MKq-IfV6hcLnFgLhxsqakV8aFLAEzI8Ulned6zjRAC28aaDOZcFdKEMD0wHPUW8-9UTQxAgug8otEITWSkKubyXbdofpVa9Xwjq1-jLb4eylqey0RokKrHO6B7F3KtUF8Zsm0mGEg7nvUhjEBFL3AqkLke5Nb_78uqb3tzZF3iO6ghENar9s1DUIYqNkbMSeh7smgER_PBUB0MGMqRnx8qcr5t5yBEurZ7qq7-LYoJOoc6UwaPrQN_AFRou4ugiRrxIrvOwrDPr4y2zoi9XKnBBuYMnt2AkGVCNIA0WOKgmex4x_2Nri2JlRieAPwNPfW5PLkyPVRfw0dNzhg7csMl1Wctdw1JpHJhgMswuhYhRWGyzYWE4ZU8lvQWqA42MOKfUixAV4LmEzGz2eRQSPGWjLC85-mcxf_vssmD-mbuJAjzlLDzzwllrTDCQrt18DftpAAHhD5hG2HmQH9RDzcS3sniIx4p2zyqBHVQsWM74BlQjbODjgHRHerTgxYaNmh4KRA38lmb9omrUhI2Q0Lj5CF2of_Apd7fo8u6LpBpdEtirkn_7-9vPPiGerClV6lSjoNi_I_hHCneAq-3KZq7hM5XliJPvUrws_m0X5n6_fazdk-gOohEuF0Aq_1I5633sS-DGrFyan2K7oeoBGQN994-kweTR0lLko14nC5wnvizbsv7sDUNJTjM7LMYIrhKEILTjjGQ6WuCkYhQuM4RAnx74jFIchW8pS1tEnUcIOyBWgFB9M2zdbNmJg7vH43mmX408jMYVKs9CQz2Y7Vu33S0dSp9sWxM1KUREFVy1xTbVgKNxLxOzXiLOjm_b4EifAHZh_KTf0POm5RESU-TSrO29y5puTHL-PLuOE30jrxXaKhW5UzmQLUMhBGI7geYP6fE6QxyUi0gD_tLdMmzxTlZiOXkE6HnBQ-3Ar54uA-RFUhnzU-XT3wm--eINsvqyrHCyLQlmM71aBXnMlH5g0NJjdm42XSecTopWfFCfcNe1-ufpUuMGGg0C3LxVN5fkTmB2_6gai0AHh4dNhefGkKCZ5OcSNtA_UUI1nKr_wgPTI4X1catN9RE9mMYhOt-I5gOVRCihxDcUcBl2apUaFK-jHPs5rABqhykbi_dOS-zy42I86Vcu4B-_0GNlRIPRLZWFIhNRy_kfCOq4kb4SK9DjTvHsaq6YWMoL9Jk3JiqvH4yrMZ6T-XEFdJ8DGSc41lo1YJwhFUu0eGbGFKxyUBrHv1l9ByPrqWaiepnBBsda4y8G3SoiCfndwkbvLeE5ykYgurPpkYX_bau2PqsoAkiJ_GmbitKpXD71C5PmzvzLvpxkgC6hQq-v4L4WLelADvBpeikX9k23qhR5H3mkzNeMZgHyoFisy161cDgOlcg64g6C2UzJKlb5C1tOlQwM3fdm7cjBJXOjuxgi8Ewx6ov90eeaqIEfFvnUu1_IC_tFve9P_Us21Ak53vwStlHueYHtedJsHg84C5Ppt_z1LFR3Hh8m1pOnlb3kJw5eGpvsXweZrIIN0cvwz-NZ_orIxjPxLf23wy-y-lhObK17BfX1g-p759XtRSaG4Rj_QedauXHAA-SKgvwAOY3kBuWo9Oxx73JbC1kov55TkecHj2lXO_o49O5LCOa_h0nHIVb3JIGWot11sF_6zwNzFM2WtHFNu7Iu9hllumC8rvz3HEbylvSPQYzBQKy8NSyC6T9wbH6cAYY-vl59q1J4DwBH3DHKoMAec8InlnBO_ekJa8SMdQMZxov0BaxJc0W__29w2Sza0cBsMslfpRIWRWMb4jNpyvCyEVxrGf7AakOl0_9P3JCQ2o8cuf-BGg_z_iQ3aTMYVWi_pWuxnhh5NchjQU8C3dxvnEd0Te9mmDlvZh-N9GULo0tlzHz3WZniUp7mxVQ3nkeS31M0LIIF3SetSMjXrGJ_4bzAnb3EjH44eFuvgOiJ8ChXLCmHLtIpFa0WSC6YVpBxqfPrxke-DyB2Lvz_46MSQ4iKvCFhdYWxBtwXCZDN5Dt4XFpMknL_VnuVU8a5_rRqpEebv_VF1pBZsvfTK6UXFWAApFvL4ebApuLsFInG3uk89N2SbenTTiBGWZWZjsEFsvf3iSFZdQ2bgKSLmJIsuXV1mUPkzGEr8SsPLDKhGNZBevtka-CfnukEPn7a3K_O5sYcccEtYwx0VNiC6dWu7B_-pflffa1m4pbhdg6KfykDO9_jU_LE692dhWUzbv977zGUlOnmsEMeqmSTo9V5Hv0UsEDGEjoe9piKidoZ8JdAq1WIpSBfW9M2wtkZHbi2nlaBnKJuTaaNs_nWjbG4y73hEqEqRlQMKrLsJU7rsmy3h6x6-J_tXfkKpWu_Z_PhR-ca2RV4ldwUNejBhBomg-6bcSq1lHXGTpwc0wSDmIUfE2W6ZZysaFpmGpTDFjTDqfeeAwwbzShK7Uc-OnJVNiQ5w1KALJNjXURSfI61vyWRBMtFHaC7t6ixwDfv6pqEa0xeDe4xf4Z1qdX1Zfs4xpdAyzZWmslUsXIYDtiTXq6NYGjnCEPYqneVGOWhP6re0UfzeqqB6p6_L42UoqFrrjU7jnEWRlz6gxdU9qOJgLX3u6CIYtN6b44tpsqA23fNBiuf4SqoYimbd2YVjXFRFFNZ2XqJ-wBqYcD5xIfudMN6W5cAD4p5cTQ11_-EqIp8rDxiWOs-PN8SQTIE7ZYQ6na-lSITpchNybreE9SqhzluoY71DN8oQuUJHonrAW5Hh_VroGBxpbO9XdNhw0XrC-S9iH9DDEUedanM2DznPUZsHHutG8H0K9AEyWRS01sAwrF73ZG57qy5IciYMHZuFbkY0lzwbF-vd15jgNfP4JTmZD2sVWwVgI7Qp9T2hd0uuZL_huHl2baRCyC_DSI9c6p3q9Ud_tBN_yCcNcUVx0rS6EGfzM8VYOGwyiBVBAgVDjBXiKBsUVWA3ljfOtYhLKBDHkqhvoQaczSI2fKX7L7cwgXeBdckoaNhno6mCpZBamuyBZ1Iy6TnguQi59MCCKdiczIpfeumbSDEovy2IbQmPqld_JI6WOufgldiITu3hXR5KNazan2mc3NrKu1SEXZpdzb4wJZZ26U_1xE2GLMJru05yZoVNEkN72DhagM1R5oqHwPzRcn3ahdYvUzDoP6UHEpa76A23lqafY7F98l66hmAnXXlEKzEVwthYoxWANYtVsxs9NktNJdNMB3OCMnCo9BWkefmjlrzMJSkBP_1mfxN2o3W1tMNXpk5OQPO20_eWPF3iYhobSo8fcxzXtw9bg1BXr0TADj0hl_z4jw93wVGGLlsA3qYstay0I9yJgHBZmhxc7V1JzNWdwxIDmRgA5eCm1ELVBxpIup9WGZlUs1rzwqXzI-37i7l3dwFfCf_i2g8m-gNQjuM6YqkSz-XKcn-sJEg1XSMhoB15sgYE9U-2Oe-_EGLK0dOU2zyHO40F8ghvhKWpuAcITX_QnEMremwsiCl0PEnGZ98BXzlRvd1MFNc0ZUwzN-wTVxs4jNkteNbp0MjIKA5Y6FiCEX6koNWY9cLXSNg4XG4IsWRQrfIn2WWFz_nhzlaZNm_NUM1kmKRREPmsvQ',
'e' => 'AQAB',
- 'x5c' => ['MIIR2jCCEUMCAg4EMA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIx'.PHP_EOL.'MDEwMTIxNzQ5WhcNMTcxMDA5MTIxNzQ5WjBKMQswCQYDVQQGDAJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wghAiMA0GCSqGSIb3DQEBAQUAA4IQDwAwghAKAoIQAQCrM8WwUh/dxJ6z'.PHP_EOL.'bkOWhXfLd3yAoxxlUT8RD/p78xmfKoNu44Q/f3JCzdq6fNtlGg7xfDyUugk126Io'.PHP_EOL.'qxyjuh0jvneQG/PV4vKR76xYFVm21udjLP0ATdld8Bv2sdbYDGAioc2xA6wslL92'.PHP_EOL.'i4ZnDFrA10T3RYzhAbzRsOmTHEd85u2Zkhtmg4VJ6iQMcDmOiRAbMnrm3oBG1A4i'.PHP_EOL.'G3zikiUCvxE7S8JSInRHhN0B99t0i6QxxV9KhkGVkn+r7IG0+ioHU2avXHUWoK1H'.PHP_EOL.'zU2sS12nsJQfLjIsiyQzMdPAkvbh3HzM9L1EEgC5Hoc7qyhDBCApjk1ibJpka5YO'.PHP_EOL.'vPDQuiv3+ONzHfHs2VcRR98bJR1P9tnqjCyB35Km+dupc9ch/67kkftp9JS5qPK0'.PHP_EOL.'ecZWKVA6kSDToHQX4C6ZQTHy90s9zMLHQIQPXWaFGFPV5FA8mXPGCoDbZI3VjPQ/'.PHP_EOL.'nlHxBt8Vhx+WkS1lseZ2/AxKKkSgRTIjxoD3Pbryg1WecAaEbdw6qTz7gc6+2pn0'.PHP_EOL.'shzyNRxAu1Zf48lq/0R4+da5XqkXDO8pzCXT2bTzEh8iH0O8VUnPcWSz5fpzW1Wj'.PHP_EOL.'ZVqV+2WPx+eXO71aCjCeTCEzgo3ZSlwdx9/gb6/3NySFylE5LNnVrHmY85QwXoHY'.PHP_EOL.'5VrAyF/eWL0D0kSkEPFW7b6BlTo1uG98fV/g9009SeVqw/KUefirPhLr9XV+7GGj'.PHP_EOL.'7Y79XvbDdXkUMGL6bYP28NVC8m26iInFQTI5ZrGx6e7OgWWreM0fCbRKJpvBWNoz'.PHP_EOL.'Kt7iqS2Yeiku4tfaLEwTettO1pcsBqXL63ZfqhLicXKHA/1/9ZslvhiH9EPGSw+P'.PHP_EOL.'WFH/icfjc1NiNkGUsMzRhFvjFHMWYBNA5SE+i7otJRuXxOXbPtZgXOVwqAfCRZFp'.PHP_EOL.'MZRXxLP+H78h+BkO8K3LIuHO9Y6Z8kGGxXWdNsOuvwOK9kYfmG4E0fzy/+BsJXDf'.PHP_EOL.'poCMfwGeZwdDQiZRTBeiIHWJZJYHfHXF1icDJB/lFXY8rzrBVzgQFHFbox4kdZmv'.PHP_EOL.'6QWAe1zCTbKzwx7AvzGUqzVLrgA8Ba0P5awsYSdRUx8zkS5aOhL2QHgEjgMLozS7'.PHP_EOL.'IONoK4W7zTAyZZ/H0Lf5jbHuXkvDQbiBFxST4Xc420p+zEyoCZXppRWReZ2Rfkst'.PHP_EOL.'rXTkKkhWp+UzjQI+XmaVUYQWVN/27TNyXJDT/6pa3vxnOSmiU+P1coeKR1gD8Mpu'.PHP_EOL.'+1+C2A0LTsYjAFy2hCw6soY7GKB5bOsDB9L1Lla3uG9yzZHRjTiteh5JM9sdYu6a'.PHP_EOL.'wlgvELYc+1qbcjFAnMKWMg4UHlKqL1Ys7mX/KOZQZLYXPLkOS7IW4Lejv2sH5W7T'.PHP_EOL.'OkdDmwd1vJiR++LdBnHiMu6PaSL7f/VCPtF9V13XJZ652cVTLlAZ9aHf5Whor1Qh'.PHP_EOL.'nUR5frajBdMY04mi+f3Ix3BtebLvmquQ9dp0VAbeWe6qr9Rx3xkBgm/B9Bvq6FNK'.PHP_EOL.'/WRIUKnHLJpIFiMtTjhAMXoVGH9AcswEzYNVqw5PSGwXZRawhdSd6gkeT+pVlJGa'.PHP_EOL.'PkQNoitYBQRl8v+B6LBxbf8vdj2JocyQH3d8c2xUSkuZM768sdkdg3Rz6Qo1UHD/'.PHP_EOL.'jTEZnlmA8mVPgllW8Eq4HaRrY6xItxFdm/NlllOetEdv/12eAaQWkjSBzqAW7Z3W'.PHP_EOL.'Y8ggWnolLsAnj+xgoTjLG4YbsiwDgSuc0EQr1KvVdK7T8p9wi/rd2b8DJsODW+ao'.PHP_EOL.'wsKXkSI/04gWxZ0gzjb3vQ8f2HxGLspSfQPndFJFWRXfw1bfXYDYlgId8R9sjHKJ'.PHP_EOL.'sQiuy6yJv3zHoF52H7cGmxbKKHZeUNPoAXAl0PRxz9R/npWq/3BpS2xLH7XEHCWJ'.PHP_EOL.'nfkwqr4h9XqFwucWAuHGypqRXxoUsATMjxSWd53rONEALbxpoM5lwV0oQwPTAc9R'.PHP_EOL.'bz71RNDECC6Dyi0QhNZKQq5vJdt2h+lVr1fCOrX6Mtvh7KWp7LRGiQqsc7oHsXcq'.PHP_EOL.'1QXxmybSYYSDue9SGMQEUvcCqQuR7k1v/vy6pve3NkXeI7qCEQ1qv2zUNQhio2Rs'.PHP_EOL.'xJ6HuyaARH88FQHQwYypGfHypyvm3nIES6tnuqrv4tigk6hzpTBo+tA38AVGi7i6'.PHP_EOL.'CJGvEiu87CsM+vjLbOiL1cqcEG5gye3YCQZUI0gDRY4qCZ7HjH/Y2uLYmVGJ4A/A'.PHP_EOL.'099bk8uTI9VF/DR03OGDtywyXVZy13DUmkcmGAyzC6FiFFYbLNhYThlTyW9BaoDj'.PHP_EOL.'Yw4p9SLEBXguYTMbPZ5FBI8ZaMsLzn6ZzF/++yyYP6Zu4kCPOUsPPPCWWtMMJCu3'.PHP_EOL.'XwN+2kAAeEPmEbYeZAf1EPNxLeyeIjHinbPKoEdVCxYzvgGVCNs4OOAdEd6tODFh'.PHP_EOL.'o2aHgpEDfyWZv2iatSEjZDQuPkIXah/8Cl3t+jy7oukGl0S2KuSf/v7288+IZ6sK'.PHP_EOL.'VXqVKOg2L8j+EcKd4Cr7cpmruEzleWIk+9SvCz+bRfmfr99rN2T6A6iES4XQCr/U'.PHP_EOL.'jnrfexL4MasXJqfYruh6gEZA333j6TB5NHSUuSjXicLnCe+LNuy/uwNQ0lOMzssx'.PHP_EOL.'giuEoQgtOOMZDpa4KRiFC4zhECfHviMUhyFbylLW0SdRwg7IFaAUH0zbN1s2YmDu'.PHP_EOL.'8fjeaZfjTyMxhUqz0JDPZjtW7fdLR1Kn2xbEzUpREQVXLXFNtWAo3EvE7NeIs6Ob'.PHP_EOL.'9vgSJ8AdmH8pN/Q86blERJT5NKs7b3Lmm5Mcv48u44TfSOvFdoqFblTOZAtQyEEY'.PHP_EOL.'juB5g/p8TpDHJSLSAP+0t0ybPFOVmI5eQToecFD7cCvni4D5EVSGfNT5dPfCb754'.PHP_EOL.'g2y+rKscLItCWYzvVoFecyUfmDQ0mN2bjZdJ5xOilZ8UJ9w17X65+lS4wYaDQLcv'.PHP_EOL.'FU3l+ROYHb/qBqLQAeHh02F58aQoJnk5xI20D9RQjWcqv/CA9MjhfVxq031ET2Yx'.PHP_EOL.'iE634jmA5VEKKHENxRwGXZqlRoUr6Mc+zmsAGqHKRuL905L7PLjYjzpVy7gH7/QY'.PHP_EOL.'2VEg9EtlYUiE1HL+R8I6riRvhIr0ONO8exqrphYygv0mTcmKq8fjKsxnpP5cQV0n'.PHP_EOL.'wMZJzjWWjVgnCEVS7R4ZsYUrHJQGse/WX0HI+upZqJ6mcEGx1rjLwbdKiIJ+d3CR'.PHP_EOL.'u8t4TnKRiC6s+mRhf9tq7Y+qygCSIn8aZuK0qlcPvULk+bO/Mu+nGSALqFCr6/gv'.PHP_EOL.'hYt6UAO8Gl6KRf2TbeqFHkfeaTM14xmAfKgWKzLXrVwOA6VyDriDoLZTMkqVvkLW'.PHP_EOL.'06VDAzd92btyMElc6O7GCLwTDHqi/3R55qogR8W+dS7X8gL+0W970/9SzbUCTne/'.PHP_EOL.'BK2Ue55ge150mweDzgLk+m3/PUsVHceHybWk6eVveQnDl4am+xfB5msgg3Ry/DP4'.PHP_EOL.'1n+isjGM/Et/bfDL7L6WE5srXsF9fWD6nvn1e1FJobhGP9B51q5ccAD5IqC/AA5j'.PHP_EOL.'eQG5aj07HHvclsLWSi/nlOR5wePaVc7+jj07ksI5r+HScchVvckgZai3XWwX/rPA'.PHP_EOL.'3MUzZa0cU27si72GWW6YLyu/PccRvKW9I9BjMFArLw1LILpP3BsfpwBhj6+Xn2rU'.PHP_EOL.'ngPAEfcMcqgwB5zwieWcE796QlrxIx1AxnGi/QFrElzRb//b3DZLNrRwGwyyV+lE'.PHP_EOL.'hZFYxviM2nK8LIRXGsZ/sBqQ6XT/0/ckJDajxy5/4EaD/P+JDdpMxhVaL+la7GeG'.PHP_EOL.'Hk1yGNBTwLd3G+cR3RN72aYOW9mH430ZQujS2XMfPdZmeJSnubFVDeeR5LfUzQsg'.PHP_EOL.'gXdJ61IyNesYn/hvMCdvcSMfjh4W6+A6InwKFcsKYcu0ikVrRZILphWkHGp8+vGR'.PHP_EOL.'74PIHYu/P/joxJDiIq8IWF1hbEG3BcJkM3kO3hcWkyScv9We5VTxrn+tGqkR5u/9'.PHP_EOL.'UXWkFmy99MrpRcVYACkW8vh5sCm4uwUicbe6Tz03ZJt6dNOIEZZlZmOwQWy9/eJI'.PHP_EOL.'Vl1DZuApIuYkiy5dXWZQ+TMYSvxKw8sMqEY1kF6+2Rr4J+e6QQ+ftrcr87mxhxxw'.PHP_EOL.'S1jDHRU2ILp1a7sH/6l+V99rWbiluF2Dop/KQM73+NT8sTr3Z2FZTNu/3vvMZSU6'.PHP_EOL.'eawQx6qZJOj1Xke/RSwQMYSOh72mIqJ2hnwl0CrVYilIF9b0zbC2RkduLaeVoGco'.PHP_EOL.'m5Npo2z+daNsbjLveESoSpGVAwqsuwlTuuybLeHrHr4n+1d+Qqla79n8+FH5xrZF'.PHP_EOL.'XiV3BQ16MGEGiaD7ptxKrWUdcZOnBzTBIOYhR8TZbplnKxoWmYalMMWNMOp954DD'.PHP_EOL.'BvNKErtRz46clU2JDnDUoAsk2NdRFJ8jrW/JZEEy0UdoLu3qLHAN+/qmoRrTF4N7'.PHP_EOL.'jF/hnWp1fVl+zjGl0DLNlaayVSxchgO2JNero1gaOcIQ9iqd5UY5aE/qt7RR/N6q'.PHP_EOL.'oHqnr8vjZSioWuuNTuOcRZGXPqDF1T2o4mAtfe7oIhi03pvji2myoDbd80GK5/hK'.PHP_EOL.'qhiKZt3ZhWNcVEUU1nZeon7AGphwPnEh+50w3pblwAPinlxNDXX/4SoinysPGJY6'.PHP_EOL.'z483xJBMgTtlhDqdr6VIhOlyE3Jut4T1KqHOW6hjvUM3yhC5QkeiesBbkeH9WugY'.PHP_EOL.'HGls71d02HDResL5L2If0MMRR51qczYPOc9Rmwce60bwfQr0ATJZFLTWwDCsXvdk'.PHP_EOL.'bnurLkhyJgwdm4VuRjSXPBsX693XmOA18/glOZkPaxVbBWAjtCn1PaF3S65kv+G4'.PHP_EOL.'eXZtpELIL8NIj1zqner1R3+0E3/IJw1xRXHStLoQZ/MzxVg4bDKIFUECBUOMFeIo'.PHP_EOL.'GxRVYDeWN861iEsoEMeSqG+hBpzNIjZ8pfsvtzCBd4F1ySho2GejqYKlkFqa7IFn'.PHP_EOL.'UjLpOeC5CLn0wIIp2JzMil966ZtIMSi/LYhtCY+qV38kjpY65+CV2IhO7eFdHko1'.PHP_EOL.'rNqfaZzc2sq7VIRdml3NvjAllnbpT/XETYYswmu7TnJmhU0SQ3vYOFqAzVHmiofA'.PHP_EOL.'/NFyfdqF1i9TMOg/pQcSlrvoDbeWpp9jsX3yXrqGYCddeUQrMRXC2FijFYA1i1Wz'.PHP_EOL.'Gz02S00l00wHc4IycKj0FaR5+aOWvMwlKQE//WZ/E3ajdbW0w1emTk5A87bT95Y8'.PHP_EOL.'XeJiGhtKjx9zHNe3D1uDUFevRMAOPSGX/PiPD3fBUYYuWwDepiy1rLQj3ImAcFma'.PHP_EOL.'HFztXUnM1Z3DEgOZGADl4KbUQtUHGki6n1YZmVSzWvPCpfMj7fuLuXd3AV8J/+La'.PHP_EOL.'Dyb6A1CO4zpiqRLP5cpyf6wkSDVdIyGgHXmyBgT1T7Y5778QYsrR05TbPIc7jQXy'.PHP_EOL.'CG+Epam4BwhNf9CcQyt6bCyIKXQ8ScZn3wFfOVG93UwU1zRlTDM37BNXGziM2S14'.PHP_EOL.'1unQyMgoDljoWIIRfqSg1Zj1wtdI2DhcbgixZFCt8ifZZYXP+eHOVpk2b81QzWSY'.PHP_EOL.'pFEQ+ay9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEATPINk/17H+RLz459iCVQAGes'.PHP_EOL.'8kc5sxYj3CkMlWrGMiCxvsgu2kak6dCa0f3DfiVt54Fry7s0OklHiZmipoiF4RCt'.PHP_EOL.'yJwUSAzRrZFAbkpDg8oIu4Ui/Bt13kY7xON+u4m0IgkLZSE+8BSjMrfjVvVxe+qH'.PHP_EOL.'5i7X/ibUTDjgyfdA8XI='],
+ 'x5c' => [
+ 'MIIR2jCCEUMCAg4EMA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIx' . PHP_EOL . 'MDEwMTIxNzQ5WhcNMTcxMDA5MTIxNzQ5WjBKMQswCQYDVQQGDAJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wghAiMA0GCSqGSIb3DQEBAQUAA4IQDwAwghAKAoIQAQCrM8WwUh/dxJ6z' . PHP_EOL . 'bkOWhXfLd3yAoxxlUT8RD/p78xmfKoNu44Q/f3JCzdq6fNtlGg7xfDyUugk126Io' . PHP_EOL . 'qxyjuh0jvneQG/PV4vKR76xYFVm21udjLP0ATdld8Bv2sdbYDGAioc2xA6wslL92' . PHP_EOL . 'i4ZnDFrA10T3RYzhAbzRsOmTHEd85u2Zkhtmg4VJ6iQMcDmOiRAbMnrm3oBG1A4i' . PHP_EOL . 'G3zikiUCvxE7S8JSInRHhN0B99t0i6QxxV9KhkGVkn+r7IG0+ioHU2avXHUWoK1H' . PHP_EOL . 'zU2sS12nsJQfLjIsiyQzMdPAkvbh3HzM9L1EEgC5Hoc7qyhDBCApjk1ibJpka5YO' . PHP_EOL . 'vPDQuiv3+ONzHfHs2VcRR98bJR1P9tnqjCyB35Km+dupc9ch/67kkftp9JS5qPK0' . PHP_EOL . 'ecZWKVA6kSDToHQX4C6ZQTHy90s9zMLHQIQPXWaFGFPV5FA8mXPGCoDbZI3VjPQ/' . PHP_EOL . 'nlHxBt8Vhx+WkS1lseZ2/AxKKkSgRTIjxoD3Pbryg1WecAaEbdw6qTz7gc6+2pn0' . PHP_EOL . 'shzyNRxAu1Zf48lq/0R4+da5XqkXDO8pzCXT2bTzEh8iH0O8VUnPcWSz5fpzW1Wj' . PHP_EOL . 'ZVqV+2WPx+eXO71aCjCeTCEzgo3ZSlwdx9/gb6/3NySFylE5LNnVrHmY85QwXoHY' . PHP_EOL . '5VrAyF/eWL0D0kSkEPFW7b6BlTo1uG98fV/g9009SeVqw/KUefirPhLr9XV+7GGj' . PHP_EOL . '7Y79XvbDdXkUMGL6bYP28NVC8m26iInFQTI5ZrGx6e7OgWWreM0fCbRKJpvBWNoz' . PHP_EOL . 'Kt7iqS2Yeiku4tfaLEwTettO1pcsBqXL63ZfqhLicXKHA/1/9ZslvhiH9EPGSw+P' . PHP_EOL . 'WFH/icfjc1NiNkGUsMzRhFvjFHMWYBNA5SE+i7otJRuXxOXbPtZgXOVwqAfCRZFp' . PHP_EOL . 'MZRXxLP+H78h+BkO8K3LIuHO9Y6Z8kGGxXWdNsOuvwOK9kYfmG4E0fzy/+BsJXDf' . PHP_EOL . 'poCMfwGeZwdDQiZRTBeiIHWJZJYHfHXF1icDJB/lFXY8rzrBVzgQFHFbox4kdZmv' . PHP_EOL . '6QWAe1zCTbKzwx7AvzGUqzVLrgA8Ba0P5awsYSdRUx8zkS5aOhL2QHgEjgMLozS7' . PHP_EOL . 'IONoK4W7zTAyZZ/H0Lf5jbHuXkvDQbiBFxST4Xc420p+zEyoCZXppRWReZ2Rfkst' . PHP_EOL . 'rXTkKkhWp+UzjQI+XmaVUYQWVN/27TNyXJDT/6pa3vxnOSmiU+P1coeKR1gD8Mpu' . PHP_EOL . '+1+C2A0LTsYjAFy2hCw6soY7GKB5bOsDB9L1Lla3uG9yzZHRjTiteh5JM9sdYu6a' . PHP_EOL . 'wlgvELYc+1qbcjFAnMKWMg4UHlKqL1Ys7mX/KOZQZLYXPLkOS7IW4Lejv2sH5W7T' . PHP_EOL . 'OkdDmwd1vJiR++LdBnHiMu6PaSL7f/VCPtF9V13XJZ652cVTLlAZ9aHf5Whor1Qh' . PHP_EOL . 'nUR5frajBdMY04mi+f3Ix3BtebLvmquQ9dp0VAbeWe6qr9Rx3xkBgm/B9Bvq6FNK' . PHP_EOL . '/WRIUKnHLJpIFiMtTjhAMXoVGH9AcswEzYNVqw5PSGwXZRawhdSd6gkeT+pVlJGa' . PHP_EOL . 'PkQNoitYBQRl8v+B6LBxbf8vdj2JocyQH3d8c2xUSkuZM768sdkdg3Rz6Qo1UHD/' . PHP_EOL . 'jTEZnlmA8mVPgllW8Eq4HaRrY6xItxFdm/NlllOetEdv/12eAaQWkjSBzqAW7Z3W' . PHP_EOL . 'Y8ggWnolLsAnj+xgoTjLG4YbsiwDgSuc0EQr1KvVdK7T8p9wi/rd2b8DJsODW+ao' . PHP_EOL . 'wsKXkSI/04gWxZ0gzjb3vQ8f2HxGLspSfQPndFJFWRXfw1bfXYDYlgId8R9sjHKJ' . PHP_EOL . 'sQiuy6yJv3zHoF52H7cGmxbKKHZeUNPoAXAl0PRxz9R/npWq/3BpS2xLH7XEHCWJ' . PHP_EOL . 'nfkwqr4h9XqFwucWAuHGypqRXxoUsATMjxSWd53rONEALbxpoM5lwV0oQwPTAc9R' . PHP_EOL . 'bz71RNDECC6Dyi0QhNZKQq5vJdt2h+lVr1fCOrX6Mtvh7KWp7LRGiQqsc7oHsXcq' . PHP_EOL . '1QXxmybSYYSDue9SGMQEUvcCqQuR7k1v/vy6pve3NkXeI7qCEQ1qv2zUNQhio2Rs' . PHP_EOL . 'xJ6HuyaARH88FQHQwYypGfHypyvm3nIES6tnuqrv4tigk6hzpTBo+tA38AVGi7i6' . PHP_EOL . 'CJGvEiu87CsM+vjLbOiL1cqcEG5gye3YCQZUI0gDRY4qCZ7HjH/Y2uLYmVGJ4A/A' . PHP_EOL . '099bk8uTI9VF/DR03OGDtywyXVZy13DUmkcmGAyzC6FiFFYbLNhYThlTyW9BaoDj' . PHP_EOL . 'Yw4p9SLEBXguYTMbPZ5FBI8ZaMsLzn6ZzF/++yyYP6Zu4kCPOUsPPPCWWtMMJCu3' . PHP_EOL . 'XwN+2kAAeEPmEbYeZAf1EPNxLeyeIjHinbPKoEdVCxYzvgGVCNs4OOAdEd6tODFh' . PHP_EOL . 'o2aHgpEDfyWZv2iatSEjZDQuPkIXah/8Cl3t+jy7oukGl0S2KuSf/v7288+IZ6sK' . PHP_EOL . 'VXqVKOg2L8j+EcKd4Cr7cpmruEzleWIk+9SvCz+bRfmfr99rN2T6A6iES4XQCr/U' . PHP_EOL . 'jnrfexL4MasXJqfYruh6gEZA333j6TB5NHSUuSjXicLnCe+LNuy/uwNQ0lOMzssx' . PHP_EOL . 'giuEoQgtOOMZDpa4KRiFC4zhECfHviMUhyFbylLW0SdRwg7IFaAUH0zbN1s2YmDu' . PHP_EOL . '8fjeaZfjTyMxhUqz0JDPZjtW7fdLR1Kn2xbEzUpREQVXLXFNtWAo3EvE7NeIs6Ob' . PHP_EOL . '9vgSJ8AdmH8pN/Q86blERJT5NKs7b3Lmm5Mcv48u44TfSOvFdoqFblTOZAtQyEEY' . PHP_EOL . 'juB5g/p8TpDHJSLSAP+0t0ybPFOVmI5eQToecFD7cCvni4D5EVSGfNT5dPfCb754' . PHP_EOL . 'g2y+rKscLItCWYzvVoFecyUfmDQ0mN2bjZdJ5xOilZ8UJ9w17X65+lS4wYaDQLcv' . PHP_EOL . 'FU3l+ROYHb/qBqLQAeHh02F58aQoJnk5xI20D9RQjWcqv/CA9MjhfVxq031ET2Yx' . PHP_EOL . 'iE634jmA5VEKKHENxRwGXZqlRoUr6Mc+zmsAGqHKRuL905L7PLjYjzpVy7gH7/QY' . PHP_EOL . '2VEg9EtlYUiE1HL+R8I6riRvhIr0ONO8exqrphYygv0mTcmKq8fjKsxnpP5cQV0n' . PHP_EOL . 'wMZJzjWWjVgnCEVS7R4ZsYUrHJQGse/WX0HI+upZqJ6mcEGx1rjLwbdKiIJ+d3CR' . PHP_EOL . 'u8t4TnKRiC6s+mRhf9tq7Y+qygCSIn8aZuK0qlcPvULk+bO/Mu+nGSALqFCr6/gv' . PHP_EOL . 'hYt6UAO8Gl6KRf2TbeqFHkfeaTM14xmAfKgWKzLXrVwOA6VyDriDoLZTMkqVvkLW' . PHP_EOL . '06VDAzd92btyMElc6O7GCLwTDHqi/3R55qogR8W+dS7X8gL+0W970/9SzbUCTne/' . PHP_EOL . 'BK2Ue55ge150mweDzgLk+m3/PUsVHceHybWk6eVveQnDl4am+xfB5msgg3Ry/DP4' . PHP_EOL . '1n+isjGM/Et/bfDL7L6WE5srXsF9fWD6nvn1e1FJobhGP9B51q5ccAD5IqC/AA5j' . PHP_EOL . 'eQG5aj07HHvclsLWSi/nlOR5wePaVc7+jj07ksI5r+HScchVvckgZai3XWwX/rPA' . PHP_EOL . '3MUzZa0cU27si72GWW6YLyu/PccRvKW9I9BjMFArLw1LILpP3BsfpwBhj6+Xn2rU' . PHP_EOL . 'ngPAEfcMcqgwB5zwieWcE796QlrxIx1AxnGi/QFrElzRb//b3DZLNrRwGwyyV+lE' . PHP_EOL . 'hZFYxviM2nK8LIRXGsZ/sBqQ6XT/0/ckJDajxy5/4EaD/P+JDdpMxhVaL+la7GeG' . PHP_EOL . 'Hk1yGNBTwLd3G+cR3RN72aYOW9mH430ZQujS2XMfPdZmeJSnubFVDeeR5LfUzQsg' . PHP_EOL . 'gXdJ61IyNesYn/hvMCdvcSMfjh4W6+A6InwKFcsKYcu0ikVrRZILphWkHGp8+vGR' . PHP_EOL . '74PIHYu/P/joxJDiIq8IWF1hbEG3BcJkM3kO3hcWkyScv9We5VTxrn+tGqkR5u/9' . PHP_EOL . 'UXWkFmy99MrpRcVYACkW8vh5sCm4uwUicbe6Tz03ZJt6dNOIEZZlZmOwQWy9/eJI' . PHP_EOL . 'Vl1DZuApIuYkiy5dXWZQ+TMYSvxKw8sMqEY1kF6+2Rr4J+e6QQ+ftrcr87mxhxxw' . PHP_EOL . 'S1jDHRU2ILp1a7sH/6l+V99rWbiluF2Dop/KQM73+NT8sTr3Z2FZTNu/3vvMZSU6' . PHP_EOL . 'eawQx6qZJOj1Xke/RSwQMYSOh72mIqJ2hnwl0CrVYilIF9b0zbC2RkduLaeVoGco' . PHP_EOL . 'm5Npo2z+daNsbjLveESoSpGVAwqsuwlTuuybLeHrHr4n+1d+Qqla79n8+FH5xrZF' . PHP_EOL . 'XiV3BQ16MGEGiaD7ptxKrWUdcZOnBzTBIOYhR8TZbplnKxoWmYalMMWNMOp954DD' . PHP_EOL . 'BvNKErtRz46clU2JDnDUoAsk2NdRFJ8jrW/JZEEy0UdoLu3qLHAN+/qmoRrTF4N7' . PHP_EOL . 'jF/hnWp1fVl+zjGl0DLNlaayVSxchgO2JNero1gaOcIQ9iqd5UY5aE/qt7RR/N6q' . PHP_EOL . 'oHqnr8vjZSioWuuNTuOcRZGXPqDF1T2o4mAtfe7oIhi03pvji2myoDbd80GK5/hK' . PHP_EOL . 'qhiKZt3ZhWNcVEUU1nZeon7AGphwPnEh+50w3pblwAPinlxNDXX/4SoinysPGJY6' . PHP_EOL . 'z483xJBMgTtlhDqdr6VIhOlyE3Jut4T1KqHOW6hjvUM3yhC5QkeiesBbkeH9WugY' . PHP_EOL . 'HGls71d02HDResL5L2If0MMRR51qczYPOc9Rmwce60bwfQr0ATJZFLTWwDCsXvdk' . PHP_EOL . 'bnurLkhyJgwdm4VuRjSXPBsX693XmOA18/glOZkPaxVbBWAjtCn1PaF3S65kv+G4' . PHP_EOL . 'eXZtpELIL8NIj1zqner1R3+0E3/IJw1xRXHStLoQZ/MzxVg4bDKIFUECBUOMFeIo' . PHP_EOL . 'GxRVYDeWN861iEsoEMeSqG+hBpzNIjZ8pfsvtzCBd4F1ySho2GejqYKlkFqa7IFn' . PHP_EOL . 'UjLpOeC5CLn0wIIp2JzMil966ZtIMSi/LYhtCY+qV38kjpY65+CV2IhO7eFdHko1' . PHP_EOL . 'rNqfaZzc2sq7VIRdml3NvjAllnbpT/XETYYswmu7TnJmhU0SQ3vYOFqAzVHmiofA' . PHP_EOL . '/NFyfdqF1i9TMOg/pQcSlrvoDbeWpp9jsX3yXrqGYCddeUQrMRXC2FijFYA1i1Wz' . PHP_EOL . 'Gz02S00l00wHc4IycKj0FaR5+aOWvMwlKQE//WZ/E3ajdbW0w1emTk5A87bT95Y8' . PHP_EOL . 'XeJiGhtKjx9zHNe3D1uDUFevRMAOPSGX/PiPD3fBUYYuWwDepiy1rLQj3ImAcFma' . PHP_EOL . 'HFztXUnM1Z3DEgOZGADl4KbUQtUHGki6n1YZmVSzWvPCpfMj7fuLuXd3AV8J/+La' . PHP_EOL . 'Dyb6A1CO4zpiqRLP5cpyf6wkSDVdIyGgHXmyBgT1T7Y5778QYsrR05TbPIc7jQXy' . PHP_EOL . 'CG+Epam4BwhNf9CcQyt6bCyIKXQ8ScZn3wFfOVG93UwU1zRlTDM37BNXGziM2S14' . PHP_EOL . '1unQyMgoDljoWIIRfqSg1Zj1wtdI2DhcbgixZFCt8ifZZYXP+eHOVpk2b81QzWSY' . PHP_EOL . 'pFEQ+ay9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEATPINk/17H+RLz459iCVQAGes' . PHP_EOL . '8kc5sxYj3CkMlWrGMiCxvsgu2kak6dCa0f3DfiVt54Fry7s0OklHiZmipoiF4RCt' . PHP_EOL . 'yJwUSAzRrZFAbkpDg8oIu4Ui/Bt13kY7xON+u4m0IgkLZSE+8BSjMrfjVvVxe+qH' . PHP_EOL . '5i7X/ibUTDjgyfdA8XI=',
+ ],
'x5t' => 'KGApLybHWJmBwZGgBk07AlRD9nU',
- 'x5t#256' => 'YD12k6kc4xuh_5vEHMyyOFpGs6VqTyaKMlxg0Nt2crA', ],
+ 'x5t#256' => 'YD12k6kc4xuh_5vEHMyyOFpGs6VqTyaKMlxg0Nt2crA',
+ ],
$result->all()
);
}
@@ -156,16 +161,19 @@ public function createFrom32kRSACertificateFileInDERFormat(): void
*/
public function createFrom32kRSACertificateFileInPEMFormat(): void
{
- $result = JWKFactory::createFromCertificateFile(__DIR__.'/RSA/PEM/32k-rsa-example-cert.pem');
+ $result = JWKFactory::createFromCertificateFile(__DIR__ . '/RSA/PEM/32k-rsa-example-cert.pem');
- static::assertEquals(
+ static::assertSame(
[
'kty' => 'RSA',
'n' => 'qzPFsFIf3cSes25DloV3y3d8gKMcZVE_EQ_6e_MZnyqDbuOEP39yQs3aunzbZRoO8Xw8lLoJNduiKKsco7odI753kBvz1eLyke-sWBVZttbnYyz9AE3ZXfAb9rHW2AxgIqHNsQOsLJS_douGZwxawNdE90WM4QG80bDpkxxHfObtmZIbZoOFSeokDHA5jokQGzJ65t6ARtQOIht84pIlAr8RO0vCUiJ0R4TdAffbdIukMcVfSoZBlZJ_q-yBtPoqB1Nmr1x1FqCtR81NrEtdp7CUHy4yLIskMzHTwJL24dx8zPS9RBIAuR6HO6soQwQgKY5NYmyaZGuWDrzw0Lor9_jjcx3x7NlXEUffGyUdT_bZ6owsgd-SpvnbqXPXIf-u5JH7afSUuajytHnGVilQOpEg06B0F-AumUEx8vdLPczCx0CED11mhRhT1eRQPJlzxgqA22SN1Yz0P55R8QbfFYcflpEtZbHmdvwMSipEoEUyI8aA9z268oNVnnAGhG3cOqk8-4HOvtqZ9LIc8jUcQLtWX-PJav9EePnWuV6pFwzvKcwl09m08xIfIh9DvFVJz3Fks-X6c1tVo2Valftlj8fnlzu9WgownkwhM4KN2UpcHcff4G-v9zckhcpROSzZ1ax5mPOUMF6B2OVawMhf3li9A9JEpBDxVu2-gZU6NbhvfH1f4PdNPUnlasPylHn4qz4S6_V1fuxho-2O_V72w3V5FDBi-m2D9vDVQvJtuoiJxUEyOWaxsenuzoFlq3jNHwm0SiabwVjaMyre4qktmHopLuLX2ixME3rbTtaXLAaly-t2X6oS4nFyhwP9f_WbJb4Yh_RDxksPj1hR_4nH43NTYjZBlLDM0YRb4xRzFmATQOUhPou6LSUbl8Tl2z7WYFzlcKgHwkWRaTGUV8Sz_h-_IfgZDvCtyyLhzvWOmfJBhsV1nTbDrr8DivZGH5huBNH88v_gbCVw36aAjH8BnmcHQ0ImUUwXoiB1iWSWB3x1xdYnAyQf5RV2PK86wVc4EBRxW6MeJHWZr-kFgHtcwk2ys8MewL8xlKs1S64APAWtD-WsLGEnUVMfM5EuWjoS9kB4BI4DC6M0uyDjaCuFu80wMmWfx9C3-Y2x7l5Lw0G4gRcUk-F3ONtKfsxMqAmV6aUVkXmdkX5LLa105CpIVqflM40CPl5mlVGEFlTf9u0zclyQ0_-qWt78ZzkpolPj9XKHikdYA_DKbvtfgtgNC07GIwBctoQsOrKGOxigeWzrAwfS9S5Wt7hvcs2R0Y04rXoeSTPbHWLumsJYLxC2HPtam3IxQJzCljIOFB5Sqi9WLO5l_yjmUGS2Fzy5DkuyFuC3o79rB-Vu0zpHQ5sHdbyYkfvi3QZx4jLuj2ki-3_1Qj7RfVdd1yWeudnFUy5QGfWh3-VoaK9UIZ1EeX62owXTGNOJovn9yMdwbXmy75qrkPXadFQG3lnuqq_Ucd8ZAYJvwfQb6uhTSv1kSFCpxyyaSBYjLU44QDF6FRh_QHLMBM2DVasOT0hsF2UWsIXUneoJHk_qVZSRmj5EDaIrWAUEZfL_geiwcW3_L3Y9iaHMkB93fHNsVEpLmTO-vLHZHYN0c-kKNVBw_40xGZ5ZgPJlT4JZVvBKuB2ka2OsSLcRXZvzZZZTnrRHb_9dngGkFpI0gc6gFu2d1mPIIFp6JS7AJ4_sYKE4yxuGG7IsA4ErnNBEK9Sr1XSu0_KfcIv63dm_AybDg1vmqMLCl5EiP9OIFsWdIM42970PH9h8Ri7KUn0D53RSRVkV38NW312A2JYCHfEfbIxyibEIrsusib98x6Bedh-3BpsWyih2XlDT6AFwJdD0cc_Uf56Vqv9waUtsSx-1xBwliZ35MKq-IfV6hcLnFgLhxsqakV8aFLAEzI8Ulned6zjRAC28aaDOZcFdKEMD0wHPUW8-9UTQxAgug8otEITWSkKubyXbdofpVa9Xwjq1-jLb4eylqey0RokKrHO6B7F3KtUF8Zsm0mGEg7nvUhjEBFL3AqkLke5Nb_78uqb3tzZF3iO6ghENar9s1DUIYqNkbMSeh7smgER_PBUB0MGMqRnx8qcr5t5yBEurZ7qq7-LYoJOoc6UwaPrQN_AFRou4ugiRrxIrvOwrDPr4y2zoi9XKnBBuYMnt2AkGVCNIA0WOKgmex4x_2Nri2JlRieAPwNPfW5PLkyPVRfw0dNzhg7csMl1Wctdw1JpHJhgMswuhYhRWGyzYWE4ZU8lvQWqA42MOKfUixAV4LmEzGz2eRQSPGWjLC85-mcxf_vssmD-mbuJAjzlLDzzwllrTDCQrt18DftpAAHhD5hG2HmQH9RDzcS3sniIx4p2zyqBHVQsWM74BlQjbODjgHRHerTgxYaNmh4KRA38lmb9omrUhI2Q0Lj5CF2of_Apd7fo8u6LpBpdEtirkn_7-9vPPiGerClV6lSjoNi_I_hHCneAq-3KZq7hM5XliJPvUrws_m0X5n6_fazdk-gOohEuF0Aq_1I5633sS-DGrFyan2K7oeoBGQN994-kweTR0lLko14nC5wnvizbsv7sDUNJTjM7LMYIrhKEILTjjGQ6WuCkYhQuM4RAnx74jFIchW8pS1tEnUcIOyBWgFB9M2zdbNmJg7vH43mmX408jMYVKs9CQz2Y7Vu33S0dSp9sWxM1KUREFVy1xTbVgKNxLxOzXiLOjm_b4EifAHZh_KTf0POm5RESU-TSrO29y5puTHL-PLuOE30jrxXaKhW5UzmQLUMhBGI7geYP6fE6QxyUi0gD_tLdMmzxTlZiOXkE6HnBQ-3Ar54uA-RFUhnzU-XT3wm--eINsvqyrHCyLQlmM71aBXnMlH5g0NJjdm42XSecTopWfFCfcNe1-ufpUuMGGg0C3LxVN5fkTmB2_6gai0AHh4dNhefGkKCZ5OcSNtA_UUI1nKr_wgPTI4X1catN9RE9mMYhOt-I5gOVRCihxDcUcBl2apUaFK-jHPs5rABqhykbi_dOS-zy42I86Vcu4B-_0GNlRIPRLZWFIhNRy_kfCOq4kb4SK9DjTvHsaq6YWMoL9Jk3JiqvH4yrMZ6T-XEFdJ8DGSc41lo1YJwhFUu0eGbGFKxyUBrHv1l9ByPrqWaiepnBBsda4y8G3SoiCfndwkbvLeE5ykYgurPpkYX_bau2PqsoAkiJ_GmbitKpXD71C5PmzvzLvpxkgC6hQq-v4L4WLelADvBpeikX9k23qhR5H3mkzNeMZgHyoFisy161cDgOlcg64g6C2UzJKlb5C1tOlQwM3fdm7cjBJXOjuxgi8Ewx6ov90eeaqIEfFvnUu1_IC_tFve9P_Us21Ak53vwStlHueYHtedJsHg84C5Ppt_z1LFR3Hh8m1pOnlb3kJw5eGpvsXweZrIIN0cvwz-NZ_orIxjPxLf23wy-y-lhObK17BfX1g-p759XtRSaG4Rj_QedauXHAA-SKgvwAOY3kBuWo9Oxx73JbC1kov55TkecHj2lXO_o49O5LCOa_h0nHIVb3JIGWot11sF_6zwNzFM2WtHFNu7Iu9hllumC8rvz3HEbylvSPQYzBQKy8NSyC6T9wbH6cAYY-vl59q1J4DwBH3DHKoMAec8InlnBO_ekJa8SMdQMZxov0BaxJc0W__29w2Sza0cBsMslfpRIWRWMb4jNpyvCyEVxrGf7AakOl0_9P3JCQ2o8cuf-BGg_z_iQ3aTMYVWi_pWuxnhh5NchjQU8C3dxvnEd0Te9mmDlvZh-N9GULo0tlzHz3WZniUp7mxVQ3nkeS31M0LIIF3SetSMjXrGJ_4bzAnb3EjH44eFuvgOiJ8ChXLCmHLtIpFa0WSC6YVpBxqfPrxke-DyB2Lvz_46MSQ4iKvCFhdYWxBtwXCZDN5Dt4XFpMknL_VnuVU8a5_rRqpEebv_VF1pBZsvfTK6UXFWAApFvL4ebApuLsFInG3uk89N2SbenTTiBGWZWZjsEFsvf3iSFZdQ2bgKSLmJIsuXV1mUPkzGEr8SsPLDKhGNZBevtka-CfnukEPn7a3K_O5sYcccEtYwx0VNiC6dWu7B_-pflffa1m4pbhdg6KfykDO9_jU_LE692dhWUzbv977zGUlOnmsEMeqmSTo9V5Hv0UsEDGEjoe9piKidoZ8JdAq1WIpSBfW9M2wtkZHbi2nlaBnKJuTaaNs_nWjbG4y73hEqEqRlQMKrLsJU7rsmy3h6x6-J_tXfkKpWu_Z_PhR-ca2RV4ldwUNejBhBomg-6bcSq1lHXGTpwc0wSDmIUfE2W6ZZysaFpmGpTDFjTDqfeeAwwbzShK7Uc-OnJVNiQ5w1KALJNjXURSfI61vyWRBMtFHaC7t6ixwDfv6pqEa0xeDe4xf4Z1qdX1Zfs4xpdAyzZWmslUsXIYDtiTXq6NYGjnCEPYqneVGOWhP6re0UfzeqqB6p6_L42UoqFrrjU7jnEWRlz6gxdU9qOJgLX3u6CIYtN6b44tpsqA23fNBiuf4SqoYimbd2YVjXFRFFNZ2XqJ-wBqYcD5xIfudMN6W5cAD4p5cTQ11_-EqIp8rDxiWOs-PN8SQTIE7ZYQ6na-lSITpchNybreE9SqhzluoY71DN8oQuUJHonrAW5Hh_VroGBxpbO9XdNhw0XrC-S9iH9DDEUedanM2DznPUZsHHutG8H0K9AEyWRS01sAwrF73ZG57qy5IciYMHZuFbkY0lzwbF-vd15jgNfP4JTmZD2sVWwVgI7Qp9T2hd0uuZL_huHl2baRCyC_DSI9c6p3q9Ud_tBN_yCcNcUVx0rS6EGfzM8VYOGwyiBVBAgVDjBXiKBsUVWA3ljfOtYhLKBDHkqhvoQaczSI2fKX7L7cwgXeBdckoaNhno6mCpZBamuyBZ1Iy6TnguQi59MCCKdiczIpfeumbSDEovy2IbQmPqld_JI6WOufgldiITu3hXR5KNazan2mc3NrKu1SEXZpdzb4wJZZ26U_1xE2GLMJru05yZoVNEkN72DhagM1R5oqHwPzRcn3ahdYvUzDoP6UHEpa76A23lqafY7F98l66hmAnXXlEKzEVwthYoxWANYtVsxs9NktNJdNMB3OCMnCo9BWkefmjlrzMJSkBP_1mfxN2o3W1tMNXpk5OQPO20_eWPF3iYhobSo8fcxzXtw9bg1BXr0TADj0hl_z4jw93wVGGLlsA3qYstay0I9yJgHBZmhxc7V1JzNWdwxIDmRgA5eCm1ELVBxpIup9WGZlUs1rzwqXzI-37i7l3dwFfCf_i2g8m-gNQjuM6YqkSz-XKcn-sJEg1XSMhoB15sgYE9U-2Oe-_EGLK0dOU2zyHO40F8ghvhKWpuAcITX_QnEMremwsiCl0PEnGZ98BXzlRvd1MFNc0ZUwzN-wTVxs4jNkteNbp0MjIKA5Y6FiCEX6koNWY9cLXSNg4XG4IsWRQrfIn2WWFz_nhzlaZNm_NUM1kmKRREPmsvQ',
'e' => 'AQAB',
- 'x5c' => ['MIIR2jCCEUMCAg4EMA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG'.PHP_EOL.'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE'.PHP_EOL.'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl'.PHP_EOL.'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIx'.PHP_EOL.'MDEwMTIxNzQ5WhcNMTcxMDA5MTIxNzQ5WjBKMQswCQYDVQQGDAJKUDEOMAwGA1UE'.PHP_EOL.'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs'.PHP_EOL.'ZS5jb20wghAiMA0GCSqGSIb3DQEBAQUAA4IQDwAwghAKAoIQAQCrM8WwUh/dxJ6z'.PHP_EOL.'bkOWhXfLd3yAoxxlUT8RD/p78xmfKoNu44Q/f3JCzdq6fNtlGg7xfDyUugk126Io'.PHP_EOL.'qxyjuh0jvneQG/PV4vKR76xYFVm21udjLP0ATdld8Bv2sdbYDGAioc2xA6wslL92'.PHP_EOL.'i4ZnDFrA10T3RYzhAbzRsOmTHEd85u2Zkhtmg4VJ6iQMcDmOiRAbMnrm3oBG1A4i'.PHP_EOL.'G3zikiUCvxE7S8JSInRHhN0B99t0i6QxxV9KhkGVkn+r7IG0+ioHU2avXHUWoK1H'.PHP_EOL.'zU2sS12nsJQfLjIsiyQzMdPAkvbh3HzM9L1EEgC5Hoc7qyhDBCApjk1ibJpka5YO'.PHP_EOL.'vPDQuiv3+ONzHfHs2VcRR98bJR1P9tnqjCyB35Km+dupc9ch/67kkftp9JS5qPK0'.PHP_EOL.'ecZWKVA6kSDToHQX4C6ZQTHy90s9zMLHQIQPXWaFGFPV5FA8mXPGCoDbZI3VjPQ/'.PHP_EOL.'nlHxBt8Vhx+WkS1lseZ2/AxKKkSgRTIjxoD3Pbryg1WecAaEbdw6qTz7gc6+2pn0'.PHP_EOL.'shzyNRxAu1Zf48lq/0R4+da5XqkXDO8pzCXT2bTzEh8iH0O8VUnPcWSz5fpzW1Wj'.PHP_EOL.'ZVqV+2WPx+eXO71aCjCeTCEzgo3ZSlwdx9/gb6/3NySFylE5LNnVrHmY85QwXoHY'.PHP_EOL.'5VrAyF/eWL0D0kSkEPFW7b6BlTo1uG98fV/g9009SeVqw/KUefirPhLr9XV+7GGj'.PHP_EOL.'7Y79XvbDdXkUMGL6bYP28NVC8m26iInFQTI5ZrGx6e7OgWWreM0fCbRKJpvBWNoz'.PHP_EOL.'Kt7iqS2Yeiku4tfaLEwTettO1pcsBqXL63ZfqhLicXKHA/1/9ZslvhiH9EPGSw+P'.PHP_EOL.'WFH/icfjc1NiNkGUsMzRhFvjFHMWYBNA5SE+i7otJRuXxOXbPtZgXOVwqAfCRZFp'.PHP_EOL.'MZRXxLP+H78h+BkO8K3LIuHO9Y6Z8kGGxXWdNsOuvwOK9kYfmG4E0fzy/+BsJXDf'.PHP_EOL.'poCMfwGeZwdDQiZRTBeiIHWJZJYHfHXF1icDJB/lFXY8rzrBVzgQFHFbox4kdZmv'.PHP_EOL.'6QWAe1zCTbKzwx7AvzGUqzVLrgA8Ba0P5awsYSdRUx8zkS5aOhL2QHgEjgMLozS7'.PHP_EOL.'IONoK4W7zTAyZZ/H0Lf5jbHuXkvDQbiBFxST4Xc420p+zEyoCZXppRWReZ2Rfkst'.PHP_EOL.'rXTkKkhWp+UzjQI+XmaVUYQWVN/27TNyXJDT/6pa3vxnOSmiU+P1coeKR1gD8Mpu'.PHP_EOL.'+1+C2A0LTsYjAFy2hCw6soY7GKB5bOsDB9L1Lla3uG9yzZHRjTiteh5JM9sdYu6a'.PHP_EOL.'wlgvELYc+1qbcjFAnMKWMg4UHlKqL1Ys7mX/KOZQZLYXPLkOS7IW4Lejv2sH5W7T'.PHP_EOL.'OkdDmwd1vJiR++LdBnHiMu6PaSL7f/VCPtF9V13XJZ652cVTLlAZ9aHf5Whor1Qh'.PHP_EOL.'nUR5frajBdMY04mi+f3Ix3BtebLvmquQ9dp0VAbeWe6qr9Rx3xkBgm/B9Bvq6FNK'.PHP_EOL.'/WRIUKnHLJpIFiMtTjhAMXoVGH9AcswEzYNVqw5PSGwXZRawhdSd6gkeT+pVlJGa'.PHP_EOL.'PkQNoitYBQRl8v+B6LBxbf8vdj2JocyQH3d8c2xUSkuZM768sdkdg3Rz6Qo1UHD/'.PHP_EOL.'jTEZnlmA8mVPgllW8Eq4HaRrY6xItxFdm/NlllOetEdv/12eAaQWkjSBzqAW7Z3W'.PHP_EOL.'Y8ggWnolLsAnj+xgoTjLG4YbsiwDgSuc0EQr1KvVdK7T8p9wi/rd2b8DJsODW+ao'.PHP_EOL.'wsKXkSI/04gWxZ0gzjb3vQ8f2HxGLspSfQPndFJFWRXfw1bfXYDYlgId8R9sjHKJ'.PHP_EOL.'sQiuy6yJv3zHoF52H7cGmxbKKHZeUNPoAXAl0PRxz9R/npWq/3BpS2xLH7XEHCWJ'.PHP_EOL.'nfkwqr4h9XqFwucWAuHGypqRXxoUsATMjxSWd53rONEALbxpoM5lwV0oQwPTAc9R'.PHP_EOL.'bz71RNDECC6Dyi0QhNZKQq5vJdt2h+lVr1fCOrX6Mtvh7KWp7LRGiQqsc7oHsXcq'.PHP_EOL.'1QXxmybSYYSDue9SGMQEUvcCqQuR7k1v/vy6pve3NkXeI7qCEQ1qv2zUNQhio2Rs'.PHP_EOL.'xJ6HuyaARH88FQHQwYypGfHypyvm3nIES6tnuqrv4tigk6hzpTBo+tA38AVGi7i6'.PHP_EOL.'CJGvEiu87CsM+vjLbOiL1cqcEG5gye3YCQZUI0gDRY4qCZ7HjH/Y2uLYmVGJ4A/A'.PHP_EOL.'099bk8uTI9VF/DR03OGDtywyXVZy13DUmkcmGAyzC6FiFFYbLNhYThlTyW9BaoDj'.PHP_EOL.'Yw4p9SLEBXguYTMbPZ5FBI8ZaMsLzn6ZzF/++yyYP6Zu4kCPOUsPPPCWWtMMJCu3'.PHP_EOL.'XwN+2kAAeEPmEbYeZAf1EPNxLeyeIjHinbPKoEdVCxYzvgGVCNs4OOAdEd6tODFh'.PHP_EOL.'o2aHgpEDfyWZv2iatSEjZDQuPkIXah/8Cl3t+jy7oukGl0S2KuSf/v7288+IZ6sK'.PHP_EOL.'VXqVKOg2L8j+EcKd4Cr7cpmruEzleWIk+9SvCz+bRfmfr99rN2T6A6iES4XQCr/U'.PHP_EOL.'jnrfexL4MasXJqfYruh6gEZA333j6TB5NHSUuSjXicLnCe+LNuy/uwNQ0lOMzssx'.PHP_EOL.'giuEoQgtOOMZDpa4KRiFC4zhECfHviMUhyFbylLW0SdRwg7IFaAUH0zbN1s2YmDu'.PHP_EOL.'8fjeaZfjTyMxhUqz0JDPZjtW7fdLR1Kn2xbEzUpREQVXLXFNtWAo3EvE7NeIs6Ob'.PHP_EOL.'9vgSJ8AdmH8pN/Q86blERJT5NKs7b3Lmm5Mcv48u44TfSOvFdoqFblTOZAtQyEEY'.PHP_EOL.'juB5g/p8TpDHJSLSAP+0t0ybPFOVmI5eQToecFD7cCvni4D5EVSGfNT5dPfCb754'.PHP_EOL.'g2y+rKscLItCWYzvVoFecyUfmDQ0mN2bjZdJ5xOilZ8UJ9w17X65+lS4wYaDQLcv'.PHP_EOL.'FU3l+ROYHb/qBqLQAeHh02F58aQoJnk5xI20D9RQjWcqv/CA9MjhfVxq031ET2Yx'.PHP_EOL.'iE634jmA5VEKKHENxRwGXZqlRoUr6Mc+zmsAGqHKRuL905L7PLjYjzpVy7gH7/QY'.PHP_EOL.'2VEg9EtlYUiE1HL+R8I6riRvhIr0ONO8exqrphYygv0mTcmKq8fjKsxnpP5cQV0n'.PHP_EOL.'wMZJzjWWjVgnCEVS7R4ZsYUrHJQGse/WX0HI+upZqJ6mcEGx1rjLwbdKiIJ+d3CR'.PHP_EOL.'u8t4TnKRiC6s+mRhf9tq7Y+qygCSIn8aZuK0qlcPvULk+bO/Mu+nGSALqFCr6/gv'.PHP_EOL.'hYt6UAO8Gl6KRf2TbeqFHkfeaTM14xmAfKgWKzLXrVwOA6VyDriDoLZTMkqVvkLW'.PHP_EOL.'06VDAzd92btyMElc6O7GCLwTDHqi/3R55qogR8W+dS7X8gL+0W970/9SzbUCTne/'.PHP_EOL.'BK2Ue55ge150mweDzgLk+m3/PUsVHceHybWk6eVveQnDl4am+xfB5msgg3Ry/DP4'.PHP_EOL.'1n+isjGM/Et/bfDL7L6WE5srXsF9fWD6nvn1e1FJobhGP9B51q5ccAD5IqC/AA5j'.PHP_EOL.'eQG5aj07HHvclsLWSi/nlOR5wePaVc7+jj07ksI5r+HScchVvckgZai3XWwX/rPA'.PHP_EOL.'3MUzZa0cU27si72GWW6YLyu/PccRvKW9I9BjMFArLw1LILpP3BsfpwBhj6+Xn2rU'.PHP_EOL.'ngPAEfcMcqgwB5zwieWcE796QlrxIx1AxnGi/QFrElzRb//b3DZLNrRwGwyyV+lE'.PHP_EOL.'hZFYxviM2nK8LIRXGsZ/sBqQ6XT/0/ckJDajxy5/4EaD/P+JDdpMxhVaL+la7GeG'.PHP_EOL.'Hk1yGNBTwLd3G+cR3RN72aYOW9mH430ZQujS2XMfPdZmeJSnubFVDeeR5LfUzQsg'.PHP_EOL.'gXdJ61IyNesYn/hvMCdvcSMfjh4W6+A6InwKFcsKYcu0ikVrRZILphWkHGp8+vGR'.PHP_EOL.'74PIHYu/P/joxJDiIq8IWF1hbEG3BcJkM3kO3hcWkyScv9We5VTxrn+tGqkR5u/9'.PHP_EOL.'UXWkFmy99MrpRcVYACkW8vh5sCm4uwUicbe6Tz03ZJt6dNOIEZZlZmOwQWy9/eJI'.PHP_EOL.'Vl1DZuApIuYkiy5dXWZQ+TMYSvxKw8sMqEY1kF6+2Rr4J+e6QQ+ftrcr87mxhxxw'.PHP_EOL.'S1jDHRU2ILp1a7sH/6l+V99rWbiluF2Dop/KQM73+NT8sTr3Z2FZTNu/3vvMZSU6'.PHP_EOL.'eawQx6qZJOj1Xke/RSwQMYSOh72mIqJ2hnwl0CrVYilIF9b0zbC2RkduLaeVoGco'.PHP_EOL.'m5Npo2z+daNsbjLveESoSpGVAwqsuwlTuuybLeHrHr4n+1d+Qqla79n8+FH5xrZF'.PHP_EOL.'XiV3BQ16MGEGiaD7ptxKrWUdcZOnBzTBIOYhR8TZbplnKxoWmYalMMWNMOp954DD'.PHP_EOL.'BvNKErtRz46clU2JDnDUoAsk2NdRFJ8jrW/JZEEy0UdoLu3qLHAN+/qmoRrTF4N7'.PHP_EOL.'jF/hnWp1fVl+zjGl0DLNlaayVSxchgO2JNero1gaOcIQ9iqd5UY5aE/qt7RR/N6q'.PHP_EOL.'oHqnr8vjZSioWuuNTuOcRZGXPqDF1T2o4mAtfe7oIhi03pvji2myoDbd80GK5/hK'.PHP_EOL.'qhiKZt3ZhWNcVEUU1nZeon7AGphwPnEh+50w3pblwAPinlxNDXX/4SoinysPGJY6'.PHP_EOL.'z483xJBMgTtlhDqdr6VIhOlyE3Jut4T1KqHOW6hjvUM3yhC5QkeiesBbkeH9WugY'.PHP_EOL.'HGls71d02HDResL5L2If0MMRR51qczYPOc9Rmwce60bwfQr0ATJZFLTWwDCsXvdk'.PHP_EOL.'bnurLkhyJgwdm4VuRjSXPBsX693XmOA18/glOZkPaxVbBWAjtCn1PaF3S65kv+G4'.PHP_EOL.'eXZtpELIL8NIj1zqner1R3+0E3/IJw1xRXHStLoQZ/MzxVg4bDKIFUECBUOMFeIo'.PHP_EOL.'GxRVYDeWN861iEsoEMeSqG+hBpzNIjZ8pfsvtzCBd4F1ySho2GejqYKlkFqa7IFn'.PHP_EOL.'UjLpOeC5CLn0wIIp2JzMil966ZtIMSi/LYhtCY+qV38kjpY65+CV2IhO7eFdHko1'.PHP_EOL.'rNqfaZzc2sq7VIRdml3NvjAllnbpT/XETYYswmu7TnJmhU0SQ3vYOFqAzVHmiofA'.PHP_EOL.'/NFyfdqF1i9TMOg/pQcSlrvoDbeWpp9jsX3yXrqGYCddeUQrMRXC2FijFYA1i1Wz'.PHP_EOL.'Gz02S00l00wHc4IycKj0FaR5+aOWvMwlKQE//WZ/E3ajdbW0w1emTk5A87bT95Y8'.PHP_EOL.'XeJiGhtKjx9zHNe3D1uDUFevRMAOPSGX/PiPD3fBUYYuWwDepiy1rLQj3ImAcFma'.PHP_EOL.'HFztXUnM1Z3DEgOZGADl4KbUQtUHGki6n1YZmVSzWvPCpfMj7fuLuXd3AV8J/+La'.PHP_EOL.'Dyb6A1CO4zpiqRLP5cpyf6wkSDVdIyGgHXmyBgT1T7Y5778QYsrR05TbPIc7jQXy'.PHP_EOL.'CG+Epam4BwhNf9CcQyt6bCyIKXQ8ScZn3wFfOVG93UwU1zRlTDM37BNXGziM2S14'.PHP_EOL.'1unQyMgoDljoWIIRfqSg1Zj1wtdI2DhcbgixZFCt8ifZZYXP+eHOVpk2b81QzWSY'.PHP_EOL.'pFEQ+ay9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEATPINk/17H+RLz459iCVQAGes'.PHP_EOL.'8kc5sxYj3CkMlWrGMiCxvsgu2kak6dCa0f3DfiVt54Fry7s0OklHiZmipoiF4RCt'.PHP_EOL.'yJwUSAzRrZFAbkpDg8oIu4Ui/Bt13kY7xON+u4m0IgkLZSE+8BSjMrfjVvVxe+qH'.PHP_EOL.'5i7X/ibUTDjgyfdA8XI='],
+ 'x5c' => [
+ 'MIIR2jCCEUMCAg4EMA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG' . PHP_EOL . 'A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE' . PHP_EOL . 'MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl' . PHP_EOL . 'YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIx' . PHP_EOL . 'MDEwMTIxNzQ5WhcNMTcxMDA5MTIxNzQ5WjBKMQswCQYDVQQGDAJKUDEOMAwGA1UE' . PHP_EOL . 'CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs' . PHP_EOL . 'ZS5jb20wghAiMA0GCSqGSIb3DQEBAQUAA4IQDwAwghAKAoIQAQCrM8WwUh/dxJ6z' . PHP_EOL . 'bkOWhXfLd3yAoxxlUT8RD/p78xmfKoNu44Q/f3JCzdq6fNtlGg7xfDyUugk126Io' . PHP_EOL . 'qxyjuh0jvneQG/PV4vKR76xYFVm21udjLP0ATdld8Bv2sdbYDGAioc2xA6wslL92' . PHP_EOL . 'i4ZnDFrA10T3RYzhAbzRsOmTHEd85u2Zkhtmg4VJ6iQMcDmOiRAbMnrm3oBG1A4i' . PHP_EOL . 'G3zikiUCvxE7S8JSInRHhN0B99t0i6QxxV9KhkGVkn+r7IG0+ioHU2avXHUWoK1H' . PHP_EOL . 'zU2sS12nsJQfLjIsiyQzMdPAkvbh3HzM9L1EEgC5Hoc7qyhDBCApjk1ibJpka5YO' . PHP_EOL . 'vPDQuiv3+ONzHfHs2VcRR98bJR1P9tnqjCyB35Km+dupc9ch/67kkftp9JS5qPK0' . PHP_EOL . 'ecZWKVA6kSDToHQX4C6ZQTHy90s9zMLHQIQPXWaFGFPV5FA8mXPGCoDbZI3VjPQ/' . PHP_EOL . 'nlHxBt8Vhx+WkS1lseZ2/AxKKkSgRTIjxoD3Pbryg1WecAaEbdw6qTz7gc6+2pn0' . PHP_EOL . 'shzyNRxAu1Zf48lq/0R4+da5XqkXDO8pzCXT2bTzEh8iH0O8VUnPcWSz5fpzW1Wj' . PHP_EOL . 'ZVqV+2WPx+eXO71aCjCeTCEzgo3ZSlwdx9/gb6/3NySFylE5LNnVrHmY85QwXoHY' . PHP_EOL . '5VrAyF/eWL0D0kSkEPFW7b6BlTo1uG98fV/g9009SeVqw/KUefirPhLr9XV+7GGj' . PHP_EOL . '7Y79XvbDdXkUMGL6bYP28NVC8m26iInFQTI5ZrGx6e7OgWWreM0fCbRKJpvBWNoz' . PHP_EOL . 'Kt7iqS2Yeiku4tfaLEwTettO1pcsBqXL63ZfqhLicXKHA/1/9ZslvhiH9EPGSw+P' . PHP_EOL . 'WFH/icfjc1NiNkGUsMzRhFvjFHMWYBNA5SE+i7otJRuXxOXbPtZgXOVwqAfCRZFp' . PHP_EOL . 'MZRXxLP+H78h+BkO8K3LIuHO9Y6Z8kGGxXWdNsOuvwOK9kYfmG4E0fzy/+BsJXDf' . PHP_EOL . 'poCMfwGeZwdDQiZRTBeiIHWJZJYHfHXF1icDJB/lFXY8rzrBVzgQFHFbox4kdZmv' . PHP_EOL . '6QWAe1zCTbKzwx7AvzGUqzVLrgA8Ba0P5awsYSdRUx8zkS5aOhL2QHgEjgMLozS7' . PHP_EOL . 'IONoK4W7zTAyZZ/H0Lf5jbHuXkvDQbiBFxST4Xc420p+zEyoCZXppRWReZ2Rfkst' . PHP_EOL . 'rXTkKkhWp+UzjQI+XmaVUYQWVN/27TNyXJDT/6pa3vxnOSmiU+P1coeKR1gD8Mpu' . PHP_EOL . '+1+C2A0LTsYjAFy2hCw6soY7GKB5bOsDB9L1Lla3uG9yzZHRjTiteh5JM9sdYu6a' . PHP_EOL . 'wlgvELYc+1qbcjFAnMKWMg4UHlKqL1Ys7mX/KOZQZLYXPLkOS7IW4Lejv2sH5W7T' . PHP_EOL . 'OkdDmwd1vJiR++LdBnHiMu6PaSL7f/VCPtF9V13XJZ652cVTLlAZ9aHf5Whor1Qh' . PHP_EOL . 'nUR5frajBdMY04mi+f3Ix3BtebLvmquQ9dp0VAbeWe6qr9Rx3xkBgm/B9Bvq6FNK' . PHP_EOL . '/WRIUKnHLJpIFiMtTjhAMXoVGH9AcswEzYNVqw5PSGwXZRawhdSd6gkeT+pVlJGa' . PHP_EOL . 'PkQNoitYBQRl8v+B6LBxbf8vdj2JocyQH3d8c2xUSkuZM768sdkdg3Rz6Qo1UHD/' . PHP_EOL . 'jTEZnlmA8mVPgllW8Eq4HaRrY6xItxFdm/NlllOetEdv/12eAaQWkjSBzqAW7Z3W' . PHP_EOL . 'Y8ggWnolLsAnj+xgoTjLG4YbsiwDgSuc0EQr1KvVdK7T8p9wi/rd2b8DJsODW+ao' . PHP_EOL . 'wsKXkSI/04gWxZ0gzjb3vQ8f2HxGLspSfQPndFJFWRXfw1bfXYDYlgId8R9sjHKJ' . PHP_EOL . 'sQiuy6yJv3zHoF52H7cGmxbKKHZeUNPoAXAl0PRxz9R/npWq/3BpS2xLH7XEHCWJ' . PHP_EOL . 'nfkwqr4h9XqFwucWAuHGypqRXxoUsATMjxSWd53rONEALbxpoM5lwV0oQwPTAc9R' . PHP_EOL . 'bz71RNDECC6Dyi0QhNZKQq5vJdt2h+lVr1fCOrX6Mtvh7KWp7LRGiQqsc7oHsXcq' . PHP_EOL . '1QXxmybSYYSDue9SGMQEUvcCqQuR7k1v/vy6pve3NkXeI7qCEQ1qv2zUNQhio2Rs' . PHP_EOL . 'xJ6HuyaARH88FQHQwYypGfHypyvm3nIES6tnuqrv4tigk6hzpTBo+tA38AVGi7i6' . PHP_EOL . 'CJGvEiu87CsM+vjLbOiL1cqcEG5gye3YCQZUI0gDRY4qCZ7HjH/Y2uLYmVGJ4A/A' . PHP_EOL . '099bk8uTI9VF/DR03OGDtywyXVZy13DUmkcmGAyzC6FiFFYbLNhYThlTyW9BaoDj' . PHP_EOL . 'Yw4p9SLEBXguYTMbPZ5FBI8ZaMsLzn6ZzF/++yyYP6Zu4kCPOUsPPPCWWtMMJCu3' . PHP_EOL . 'XwN+2kAAeEPmEbYeZAf1EPNxLeyeIjHinbPKoEdVCxYzvgGVCNs4OOAdEd6tODFh' . PHP_EOL . 'o2aHgpEDfyWZv2iatSEjZDQuPkIXah/8Cl3t+jy7oukGl0S2KuSf/v7288+IZ6sK' . PHP_EOL . 'VXqVKOg2L8j+EcKd4Cr7cpmruEzleWIk+9SvCz+bRfmfr99rN2T6A6iES4XQCr/U' . PHP_EOL . 'jnrfexL4MasXJqfYruh6gEZA333j6TB5NHSUuSjXicLnCe+LNuy/uwNQ0lOMzssx' . PHP_EOL . 'giuEoQgtOOMZDpa4KRiFC4zhECfHviMUhyFbylLW0SdRwg7IFaAUH0zbN1s2YmDu' . PHP_EOL . '8fjeaZfjTyMxhUqz0JDPZjtW7fdLR1Kn2xbEzUpREQVXLXFNtWAo3EvE7NeIs6Ob' . PHP_EOL . '9vgSJ8AdmH8pN/Q86blERJT5NKs7b3Lmm5Mcv48u44TfSOvFdoqFblTOZAtQyEEY' . PHP_EOL . 'juB5g/p8TpDHJSLSAP+0t0ybPFOVmI5eQToecFD7cCvni4D5EVSGfNT5dPfCb754' . PHP_EOL . 'g2y+rKscLItCWYzvVoFecyUfmDQ0mN2bjZdJ5xOilZ8UJ9w17X65+lS4wYaDQLcv' . PHP_EOL . 'FU3l+ROYHb/qBqLQAeHh02F58aQoJnk5xI20D9RQjWcqv/CA9MjhfVxq031ET2Yx' . PHP_EOL . 'iE634jmA5VEKKHENxRwGXZqlRoUr6Mc+zmsAGqHKRuL905L7PLjYjzpVy7gH7/QY' . PHP_EOL . '2VEg9EtlYUiE1HL+R8I6riRvhIr0ONO8exqrphYygv0mTcmKq8fjKsxnpP5cQV0n' . PHP_EOL . 'wMZJzjWWjVgnCEVS7R4ZsYUrHJQGse/WX0HI+upZqJ6mcEGx1rjLwbdKiIJ+d3CR' . PHP_EOL . 'u8t4TnKRiC6s+mRhf9tq7Y+qygCSIn8aZuK0qlcPvULk+bO/Mu+nGSALqFCr6/gv' . PHP_EOL . 'hYt6UAO8Gl6KRf2TbeqFHkfeaTM14xmAfKgWKzLXrVwOA6VyDriDoLZTMkqVvkLW' . PHP_EOL . '06VDAzd92btyMElc6O7GCLwTDHqi/3R55qogR8W+dS7X8gL+0W970/9SzbUCTne/' . PHP_EOL . 'BK2Ue55ge150mweDzgLk+m3/PUsVHceHybWk6eVveQnDl4am+xfB5msgg3Ry/DP4' . PHP_EOL . '1n+isjGM/Et/bfDL7L6WE5srXsF9fWD6nvn1e1FJobhGP9B51q5ccAD5IqC/AA5j' . PHP_EOL . 'eQG5aj07HHvclsLWSi/nlOR5wePaVc7+jj07ksI5r+HScchVvckgZai3XWwX/rPA' . PHP_EOL . '3MUzZa0cU27si72GWW6YLyu/PccRvKW9I9BjMFArLw1LILpP3BsfpwBhj6+Xn2rU' . PHP_EOL . 'ngPAEfcMcqgwB5zwieWcE796QlrxIx1AxnGi/QFrElzRb//b3DZLNrRwGwyyV+lE' . PHP_EOL . 'hZFYxviM2nK8LIRXGsZ/sBqQ6XT/0/ckJDajxy5/4EaD/P+JDdpMxhVaL+la7GeG' . PHP_EOL . 'Hk1yGNBTwLd3G+cR3RN72aYOW9mH430ZQujS2XMfPdZmeJSnubFVDeeR5LfUzQsg' . PHP_EOL . 'gXdJ61IyNesYn/hvMCdvcSMfjh4W6+A6InwKFcsKYcu0ikVrRZILphWkHGp8+vGR' . PHP_EOL . '74PIHYu/P/joxJDiIq8IWF1hbEG3BcJkM3kO3hcWkyScv9We5VTxrn+tGqkR5u/9' . PHP_EOL . 'UXWkFmy99MrpRcVYACkW8vh5sCm4uwUicbe6Tz03ZJt6dNOIEZZlZmOwQWy9/eJI' . PHP_EOL . 'Vl1DZuApIuYkiy5dXWZQ+TMYSvxKw8sMqEY1kF6+2Rr4J+e6QQ+ftrcr87mxhxxw' . PHP_EOL . 'S1jDHRU2ILp1a7sH/6l+V99rWbiluF2Dop/KQM73+NT8sTr3Z2FZTNu/3vvMZSU6' . PHP_EOL . 'eawQx6qZJOj1Xke/RSwQMYSOh72mIqJ2hnwl0CrVYilIF9b0zbC2RkduLaeVoGco' . PHP_EOL . 'm5Npo2z+daNsbjLveESoSpGVAwqsuwlTuuybLeHrHr4n+1d+Qqla79n8+FH5xrZF' . PHP_EOL . 'XiV3BQ16MGEGiaD7ptxKrWUdcZOnBzTBIOYhR8TZbplnKxoWmYalMMWNMOp954DD' . PHP_EOL . 'BvNKErtRz46clU2JDnDUoAsk2NdRFJ8jrW/JZEEy0UdoLu3qLHAN+/qmoRrTF4N7' . PHP_EOL . 'jF/hnWp1fVl+zjGl0DLNlaayVSxchgO2JNero1gaOcIQ9iqd5UY5aE/qt7RR/N6q' . PHP_EOL . 'oHqnr8vjZSioWuuNTuOcRZGXPqDF1T2o4mAtfe7oIhi03pvji2myoDbd80GK5/hK' . PHP_EOL . 'qhiKZt3ZhWNcVEUU1nZeon7AGphwPnEh+50w3pblwAPinlxNDXX/4SoinysPGJY6' . PHP_EOL . 'z483xJBMgTtlhDqdr6VIhOlyE3Jut4T1KqHOW6hjvUM3yhC5QkeiesBbkeH9WugY' . PHP_EOL . 'HGls71d02HDResL5L2If0MMRR51qczYPOc9Rmwce60bwfQr0ATJZFLTWwDCsXvdk' . PHP_EOL . 'bnurLkhyJgwdm4VuRjSXPBsX693XmOA18/glOZkPaxVbBWAjtCn1PaF3S65kv+G4' . PHP_EOL . 'eXZtpELIL8NIj1zqner1R3+0E3/IJw1xRXHStLoQZ/MzxVg4bDKIFUECBUOMFeIo' . PHP_EOL . 'GxRVYDeWN861iEsoEMeSqG+hBpzNIjZ8pfsvtzCBd4F1ySho2GejqYKlkFqa7IFn' . PHP_EOL . 'UjLpOeC5CLn0wIIp2JzMil966ZtIMSi/LYhtCY+qV38kjpY65+CV2IhO7eFdHko1' . PHP_EOL . 'rNqfaZzc2sq7VIRdml3NvjAllnbpT/XETYYswmu7TnJmhU0SQ3vYOFqAzVHmiofA' . PHP_EOL . '/NFyfdqF1i9TMOg/pQcSlrvoDbeWpp9jsX3yXrqGYCddeUQrMRXC2FijFYA1i1Wz' . PHP_EOL . 'Gz02S00l00wHc4IycKj0FaR5+aOWvMwlKQE//WZ/E3ajdbW0w1emTk5A87bT95Y8' . PHP_EOL . 'XeJiGhtKjx9zHNe3D1uDUFevRMAOPSGX/PiPD3fBUYYuWwDepiy1rLQj3ImAcFma' . PHP_EOL . 'HFztXUnM1Z3DEgOZGADl4KbUQtUHGki6n1YZmVSzWvPCpfMj7fuLuXd3AV8J/+La' . PHP_EOL . 'Dyb6A1CO4zpiqRLP5cpyf6wkSDVdIyGgHXmyBgT1T7Y5778QYsrR05TbPIc7jQXy' . PHP_EOL . 'CG+Epam4BwhNf9CcQyt6bCyIKXQ8ScZn3wFfOVG93UwU1zRlTDM37BNXGziM2S14' . PHP_EOL . '1unQyMgoDljoWIIRfqSg1Zj1wtdI2DhcbgixZFCt8ifZZYXP+eHOVpk2b81QzWSY' . PHP_EOL . 'pFEQ+ay9AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEATPINk/17H+RLz459iCVQAGes' . PHP_EOL . '8kc5sxYj3CkMlWrGMiCxvsgu2kak6dCa0f3DfiVt54Fry7s0OklHiZmipoiF4RCt' . PHP_EOL . 'yJwUSAzRrZFAbkpDg8oIu4Ui/Bt13kY7xON+u4m0IgkLZSE+8BSjMrfjVvVxe+qH' . PHP_EOL . '5i7X/ibUTDjgyfdA8XI=',
+ ],
'x5t' => 'KGApLybHWJmBwZGgBk07AlRD9nU',
- 'x5t#256' => 'YD12k6kc4xuh_5vEHMyyOFpGs6VqTyaKMlxg0Nt2crA', ],
+ 'x5t#256' => 'YD12k6kc4xuh_5vEHMyyOFpGs6VqTyaKMlxg0Nt2crA',
+ ],
$result->all()
);
}
@@ -175,9 +183,12 @@ public function createFrom32kRSACertificateFileInPEMFormat(): void
*/
public function createFromPrivateEC256KeyFileEncrypted(): void
{
- $result = JWKFactory::createFromKeyFile(__DIR__.'/Keys/EC/private.es256.encrypted.key', 'test');
+ $result = JWKFactory::createFromKeyFile(__DIR__ . '/Keys/EC/private.es256.encrypted.key', 'test');
- static::assertEquals('{"kty":"EC","crv":"P-256","d":"q_VkzNnxTG39jHB0qkwA_SeVXud7yCHT7kb7kZv-0xQ","x":"vuYsP-QnrqAbM7Iyhzjt08hFSuzapyojCB_gFsBt65U","y":"oq-E2K-X0kPeqGuKnhlXkxc5fnxomRSC6KLby7Ij8AE"}', json_encode($result));
+ static::assertSame(
+ '{"kty":"EC","crv":"P-256","d":"q_VkzNnxTG39jHB0qkwA_SeVXud7yCHT7kb7kZv-0xQ","x":"vuYsP-QnrqAbM7Iyhzjt08hFSuzapyojCB_gFsBt65U","y":"oq-E2K-X0kPeqGuKnhlXkxc5fnxomRSC6KLby7Ij8AE"}',
+ json_encode($result)
+ );
}
/**
@@ -185,9 +196,12 @@ public function createFromPrivateEC256KeyFileEncrypted(): void
*/
public function createFromPrivateEC384KeyFileEncrypted(): void
{
- $result = JWKFactory::createFromKeyFile(__DIR__.'/Keys/EC/private.es384.encrypted.key', 'test');
+ $result = JWKFactory::createFromKeyFile(__DIR__ . '/Keys/EC/private.es384.encrypted.key', 'test');
- static::assertEquals('{"kty":"EC","crv":"P-384","d":"pcSSXrbeZEOaBIs7IwqcU9M_OOM81XhZuOHoGgmS_2PdECwcdQcXzv7W8-lYL0cr","x":"6f-XZsg2Tvn0EoEapQ-ylMYNtsm8CPf0cb8HI2EkfY9Bqpt3QMzwlM7mVsFRmaMZ","y":"b8nOnRwmpmEnvA2U8ydS-dbnPv7bwYl-q1qNeh8Wpjor3VO-RTt4ce0Pn25oGGWU"}', json_encode($result));
+ static::assertSame(
+ '{"kty":"EC","crv":"P-384","d":"pcSSXrbeZEOaBIs7IwqcU9M_OOM81XhZuOHoGgmS_2PdECwcdQcXzv7W8-lYL0cr","x":"6f-XZsg2Tvn0EoEapQ-ylMYNtsm8CPf0cb8HI2EkfY9Bqpt3QMzwlM7mVsFRmaMZ","y":"b8nOnRwmpmEnvA2U8ydS-dbnPv7bwYl-q1qNeh8Wpjor3VO-RTt4ce0Pn25oGGWU"}',
+ json_encode($result)
+ );
}
/**
@@ -195,9 +209,12 @@ public function createFromPrivateEC384KeyFileEncrypted(): void
*/
public function createFromPrivateEC512KeyFileEncrypted(): void
{
- $result = JWKFactory::createFromKeyFile(__DIR__.'/Keys/EC/private.es512.encrypted.key', 'test');
+ $result = JWKFactory::createFromKeyFile(__DIR__ . '/Keys/EC/private.es512.encrypted.key', 'test');
- static::assertEquals('{"kty":"EC","crv":"P-521","d":"Fp6KFKRiHIdR_7PP2VKxz6OkS_phyoQqwzv2I89-8zP7QScrx5r8GFLcN5mCCNJt3rN3SIgI4XoIQbNePlAj6vE","x":"AVpvo7TGpQk5P7ZLo0qkBpaT-fFDv6HQrWElBKMxcrJd_mRNapweATsVv83YON4lTIIRXzgGkmWeqbDr6RQO-1cS","y":"AIs-MoRmLaiPyG2xmPwQCHX2CGX_uCZiT3iOxTAJEZuUbeSA828K4WfAA4ODdGiB87YVShhPOkiQswV3LpbpPGhC"}', json_encode($result));
+ static::assertSame(
+ '{"kty":"EC","crv":"P-521","d":"Fp6KFKRiHIdR_7PP2VKxz6OkS_phyoQqwzv2I89-8zP7QScrx5r8GFLcN5mCCNJt3rN3SIgI4XoIQbNePlAj6vE","x":"AVpvo7TGpQk5P7ZLo0qkBpaT-fFDv6HQrWElBKMxcrJd_mRNapweATsVv83YON4lTIIRXzgGkmWeqbDr6RQO-1cS","y":"AIs-MoRmLaiPyG2xmPwQCHX2CGX_uCZiT3iOxTAJEZuUbeSA828K4WfAA4ODdGiB87YVShhPOkiQswV3LpbpPGhC"}',
+ json_encode($result)
+ );
}
/**
@@ -205,9 +222,12 @@ public function createFromPrivateEC512KeyFileEncrypted(): void
*/
public function createFromPublicEC256KeyFile(): void
{
- $result = JWKFactory::createFromKeyFile(__DIR__.'/Keys/EC/public.es256.key');
+ $result = JWKFactory::createFromKeyFile(__DIR__ . '/Keys/EC/public.es256.key');
- static::assertEquals('{"kty":"EC","crv":"P-256","x":"vuYsP-QnrqAbM7Iyhzjt08hFSuzapyojCB_gFsBt65U","y":"oq-E2K-X0kPeqGuKnhlXkxc5fnxomRSC6KLby7Ij8AE"}', json_encode($result));
+ static::assertSame(
+ '{"kty":"EC","crv":"P-256","x":"vuYsP-QnrqAbM7Iyhzjt08hFSuzapyojCB_gFsBt65U","y":"oq-E2K-X0kPeqGuKnhlXkxc5fnxomRSC6KLby7Ij8AE"}',
+ json_encode($result)
+ );
}
/**
@@ -215,9 +235,12 @@ public function createFromPublicEC256KeyFile(): void
*/
public function createFromPublicEC384KeyFile(): void
{
- $result = JWKFactory::createFromKeyFile(__DIR__.'/Keys/EC/public.es384.key');
+ $result = JWKFactory::createFromKeyFile(__DIR__ . '/Keys/EC/public.es384.key');
- static::assertEquals('{"kty":"EC","crv":"P-384","x":"6f-XZsg2Tvn0EoEapQ-ylMYNtsm8CPf0cb8HI2EkfY9Bqpt3QMzwlM7mVsFRmaMZ","y":"b8nOnRwmpmEnvA2U8ydS-dbnPv7bwYl-q1qNeh8Wpjor3VO-RTt4ce0Pn25oGGWU"}', json_encode($result));
+ static::assertSame(
+ '{"kty":"EC","crv":"P-384","x":"6f-XZsg2Tvn0EoEapQ-ylMYNtsm8CPf0cb8HI2EkfY9Bqpt3QMzwlM7mVsFRmaMZ","y":"b8nOnRwmpmEnvA2U8ydS-dbnPv7bwYl-q1qNeh8Wpjor3VO-RTt4ce0Pn25oGGWU"}',
+ json_encode($result)
+ );
}
/**
@@ -225,9 +248,12 @@ public function createFromPublicEC384KeyFile(): void
*/
public function createFromPublicEC512KeyFile(): void
{
- $result = JWKFactory::createFromKeyFile(__DIR__.'/Keys/EC/public.es512.key');
+ $result = JWKFactory::createFromKeyFile(__DIR__ . '/Keys/EC/public.es512.key');
- static::assertEquals('{"kty":"EC","crv":"P-521","x":"AVpvo7TGpQk5P7ZLo0qkBpaT-fFDv6HQrWElBKMxcrJd_mRNapweATsVv83YON4lTIIRXzgGkmWeqbDr6RQO-1cS","y":"AIs-MoRmLaiPyG2xmPwQCHX2CGX_uCZiT3iOxTAJEZuUbeSA828K4WfAA4ODdGiB87YVShhPOkiQswV3LpbpPGhC"}', json_encode($result));
+ static::assertSame(
+ '{"kty":"EC","crv":"P-521","x":"AVpvo7TGpQk5P7ZLo0qkBpaT-fFDv6HQrWElBKMxcrJd_mRNapweATsVv83YON4lTIIRXzgGkmWeqbDr6RQO-1cS","y":"AIs-MoRmLaiPyG2xmPwQCHX2CGX_uCZiT3iOxTAJEZuUbeSA828K4WfAA4ODdGiB87YVShhPOkiQswV3LpbpPGhC"}',
+ json_encode($result)
+ );
}
/**
@@ -243,6 +269,9 @@ public function createFromValues(): void
'y' => 'AIs-MoRmLaiPyG2xmPwQCHX2CGX_uCZiT3iOxTAJEZuUbeSA828K4WfAA4ODdGiB87YVShhPOkiQswV3LpbpPGhC',
]);
- static::assertEquals('{"kty":"EC","crv":"P-521","d":"Fp6KFKRiHIdR_7PP2VKxz6OkS_phyoQqwzv2I89-8zP7QScrx5r8GFLcN5mCCNJt3rN3SIgI4XoIQbNePlAj6vE","x":"AVpvo7TGpQk5P7ZLo0qkBpaT-fFDv6HQrWElBKMxcrJd_mRNapweATsVv83YON4lTIIRXzgGkmWeqbDr6RQO-1cS","y":"AIs-MoRmLaiPyG2xmPwQCHX2CGX_uCZiT3iOxTAJEZuUbeSA828K4WfAA4ODdGiB87YVShhPOkiQswV3LpbpPGhC"}', json_encode($result));
+ static::assertSame(
+ '{"kty":"EC","crv":"P-521","d":"Fp6KFKRiHIdR_7PP2VKxz6OkS_phyoQqwzv2I89-8zP7QScrx5r8GFLcN5mCCNJt3rN3SIgI4XoIQbNePlAj6vE","x":"AVpvo7TGpQk5P7ZLo0qkBpaT-fFDv6HQrWElBKMxcrJd_mRNapweATsVv83YON4lTIIRXzgGkmWeqbDr6RQO-1cS","y":"AIs-MoRmLaiPyG2xmPwQCHX2CGX_uCZiT3iOxTAJEZuUbeSA828K4WfAA4ODdGiB87YVShhPOkiQswV3LpbpPGhC"}',
+ json_encode($result)
+ );
}
}
diff --git a/tests/Component/KeyManagement/JWKSetAnalyzerTest.php b/tests/Component/KeyManagement/JWKSetAnalyzerTest.php
index 7de131cf..4be20257 100644
--- a/tests/Component/KeyManagement/JWKSetAnalyzerTest.php
+++ b/tests/Component/KeyManagement/JWKSetAnalyzerTest.php
@@ -2,34 +2,21 @@
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\Tests\Component\KeyManagement;
use Jose\Component\Core\JWK;
use Jose\Component\Core\JWKSet;
-use Jose\Component\KeyManagement\Analyzer;
+use Jose\Component\KeyManagement\Analyzer\KeysetAnalyzerManager;
+use Jose\Component\KeyManagement\Analyzer\MixedKeyTypes;
+use Jose\Component\KeyManagement\Analyzer\MixedPublicAndPrivateKeys;
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group JWKSetAnalyzer
- *
* @internal
*/
-class JWKSetAnalyzerTest extends TestCase
+final class JWKSetAnalyzerTest extends TestCase
{
- /**
- * @var null|Analyzer\KeysetAnalyzerManager
- */
- private $keysetAnalyzerManager;
+ private ?KeysetAnalyzerManager $keysetAnalyzerManager = null;
/**
* @test
@@ -37,7 +24,9 @@ class JWKSetAnalyzerTest extends TestCase
public function theKeysetHasNoKey(): void
{
$jwkset = new JWKSet([]);
- $messages = $this->getKeysetAnalyzer()->analyze($jwkset);
+ $messages = $this->getKeysetAnalyzer()
+ ->analyze($jwkset)
+ ;
static::assertEmpty($messages);
}
@@ -48,12 +37,22 @@ public function theKeysetHasNoKey(): void
public function theKeysetDoesNotMixesKeys(): void
{
$jwkset = new JWKSet([
- new JWK(['kty' => 'OKP']),
- new JWK(['kty' => 'OKP']),
- new JWK(['kty' => 'EC']),
- new JWK(['kty' => 'EC']),
+ new JWK([
+ 'kty' => 'OKP',
+ ]),
+ new JWK([
+ 'kty' => 'OKP',
+ ]),
+ new JWK([
+ 'kty' => 'EC',
+ ]),
+ new JWK([
+ 'kty' => 'EC',
+ ]),
]);
- $messages = $this->getKeysetAnalyzer()->analyze($jwkset);
+ $messages = $this->getKeysetAnalyzer()
+ ->analyze($jwkset)
+ ;
static::assertEmpty($messages);
}
@@ -64,13 +63,25 @@ public function theKeysetDoesNotMixesKeys(): void
public function theKeysetMixesKeys(): void
{
$jwkset = new JWKSet([
- new JWK(['kty' => 'oct']),
- new JWK(['kty' => 'OKP']),
- new JWK(['kty' => 'OKP']),
- new JWK(['kty' => 'EC']),
- new JWK(['kty' => 'EC']),
+ new JWK([
+ 'kty' => 'oct',
+ ]),
+ new JWK([
+ 'kty' => 'OKP',
+ ]),
+ new JWK([
+ 'kty' => 'OKP',
+ ]),
+ new JWK([
+ 'kty' => 'EC',
+ ]),
+ new JWK([
+ 'kty' => 'EC',
+ ]),
]);
- $messages = $this->getKeysetAnalyzer()->analyze($jwkset);
+ $messages = $this->getKeysetAnalyzer()
+ ->analyze($jwkset)
+ ;
static::assertNotEmpty($messages);
}
@@ -81,11 +92,22 @@ public function theKeysetMixesKeys(): void
public function theKeysetHasOnlyPrivateKeys(): void
{
$jwkset = new JWKSet([
- new JWK(['kty' => 'OKP', 'd' => 'foo']),
- new JWK(['kty' => 'RSA', 'd' => 'foo']),
- new JWK(['kty' => 'EC', 'd' => 'foo']),
+ new JWK([
+ 'kty' => 'OKP',
+ 'd' => 'foo',
+ ]),
+ new JWK([
+ 'kty' => 'RSA',
+ 'd' => 'foo',
+ ]),
+ new JWK([
+ 'kty' => 'EC',
+ 'd' => 'foo',
+ ]),
]);
- $messages = $this->getKeysetAnalyzer()->analyze($jwkset);
+ $messages = $this->getKeysetAnalyzer()
+ ->analyze($jwkset)
+ ;
static::assertEmpty($messages);
}
@@ -96,11 +118,19 @@ public function theKeysetHasOnlyPrivateKeys(): void
public function theKeysetHasOnlyPublicKeys(): void
{
$jwkset = new JWKSet([
- new JWK(['kty' => 'OKP']),
- new JWK(['kty' => 'RSA']),
- new JWK(['kty' => 'EC']),
+ new JWK([
+ 'kty' => 'OKP',
+ ]),
+ new JWK([
+ 'kty' => 'RSA',
+ ]),
+ new JWK([
+ 'kty' => 'EC',
+ ]),
]);
- $messages = $this->getKeysetAnalyzer()->analyze($jwkset);
+ $messages = $this->getKeysetAnalyzer()
+ ->analyze($jwkset)
+ ;
static::assertEmpty($messages);
}
@@ -111,21 +141,30 @@ public function theKeysetHasOnlyPublicKeys(): void
public function theKeysetMixesPublicAndPrivateKeys(): void
{
$jwkset = new JWKSet([
- new JWK(['kty' => 'OKP']),
- new JWK(['kty' => 'RSA']),
- new JWK(['kty' => 'EC', 'd' => 'foo']),
+ new JWK([
+ 'kty' => 'OKP',
+ ]),
+ new JWK([
+ 'kty' => 'RSA',
+ ]),
+ new JWK([
+ 'kty' => 'EC',
+ 'd' => 'foo',
+ ]),
]);
- $messages = $this->getKeysetAnalyzer()->analyze($jwkset);
+ $messages = $this->getKeysetAnalyzer()
+ ->analyze($jwkset)
+ ;
static::assertNotEmpty($messages);
}
- private function getKeysetAnalyzer(): Analyzer\KeysetAnalyzerManager
+ private function getKeysetAnalyzer(): KeysetAnalyzerManager
{
- if (null === $this->keysetAnalyzerManager) {
- $this->keysetAnalyzerManager = new Analyzer\KeysetAnalyzerManager();
- $this->keysetAnalyzerManager->add(new Analyzer\MixedPublicAndPrivateKeys());
- $this->keysetAnalyzerManager->add(new Analyzer\MixedKeyTypes());
+ if ($this->keysetAnalyzerManager === null) {
+ $this->keysetAnalyzerManager = new KeysetAnalyzerManager();
+ $this->keysetAnalyzerManager->add(new MixedPublicAndPrivateKeys());
+ $this->keysetAnalyzerManager->add(new MixedKeyTypes());
}
return $this->keysetAnalyzerManager;
diff --git a/tests/Component/KeyManagement/JWKSetTest.php b/tests/Component/KeyManagement/JWKSetTest.php
index c8728e5e..4b508d44 100644
--- a/tests/Component/KeyManagement/JWKSetTest.php
+++ b/tests/Component/KeyManagement/JWKSetTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\KeyManagement;
use function count;
@@ -20,12 +11,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group JWKSet
- *
* @internal
*/
-class JWKSetTest extends TestCase
+final class JWKSetTest extends TestCase
{
/**
* @test
@@ -47,7 +35,7 @@ public function keySelectionWithAlgorithm(): void
$jwk = $jwkset->selectKey('sig', new FooAlgorithm());
static::assertInstanceOf(JWK::class, $jwk);
- static::assertEquals(
+ static::assertSame(
[
'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
'kty' => 'FOO',
@@ -65,9 +53,11 @@ public function keySelectionWithAlgorithmAndKeyId(): void
{
$jwkset = $this->getPublicKeySet();
- $jwk = $jwkset->selectKey('sig', new FooAlgorithm(), ['kid' => '02491f945c951adf156f370788e8ccdabf8877a8']);
+ $jwk = $jwkset->selectKey('sig', new FooAlgorithm(), [
+ 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
+ ]);
static::assertInstanceOf(JWK::class, $jwk);
- static::assertEquals(
+ static::assertSame(
[
'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
'kty' => 'FOO',
@@ -85,9 +75,11 @@ public function keySelectionWithKeyId(): void
{
$jwkset = $this->getPublicKeySet();
- $jwk = $jwkset->selectKey('sig', null, ['kid' => '02491f945c951adf156f370788e8ccdabf8877a8']);
+ $jwk = $jwkset->selectKey('sig', null, [
+ 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
+ ]);
static::assertInstanceOf(JWK::class, $jwk);
- static::assertEquals(
+ static::assertSame(
[
'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
'kty' => 'FOO',
@@ -105,7 +97,9 @@ public function keySelectionReturnsNothing(): void
{
$jwkset = $this->getPublicKeySet();
- $jwk = $jwkset->selectKey('enc', null, ['kid' => '02491f945c951adf156f370788e8ccdabf8877a8']);
+ $jwk = $jwkset->selectKey('enc', null, [
+ 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
+ ]);
static::assertNull($jwk);
}
@@ -114,62 +108,66 @@ public function keySelectionReturnsNothing(): void
*/
public function createKeySetFromValues(): void
{
- $values = ['keys' => [[
- 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
- 'kty' => 'FOO',
- 'alg' => 'foo',
- 'use' => 'sig',
- ]]];
+ $values = [
+ 'keys' => [[
+ 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
+ 'kty' => 'FOO',
+ 'alg' => 'foo',
+ 'use' => 'sig',
+ ]],
+ ];
$jwkset = JWKFactory::createFromValues($values);
static::assertInstanceOf(JWKSet::class, $jwkset);
- static::assertEquals(1, count($jwkset));
+ static::assertSame(1, count($jwkset));
static::assertTrue($jwkset->has('71ee230371d19630bc17fb90ccf20ae632ad8cf8'));
static::assertFalse($jwkset->has(0));
}
private function getPublicKeySet(): JWKSet
{
- $keys = ['keys' => [
- [
- 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
- 'kty' => 'FOO',
- 'alg' => 'foo',
- 'use' => 'sig',
- ],
- [
- 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
- 'kty' => 'FOO',
- 'alg' => 'foo',
- 'use' => 'sig',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
- 'e' => 'AQAB',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
- 'e' => 'AQAB',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
- 'e' => 'AQAB',
- ],
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
- 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
- ],
- [
- 'kty' => 'EC',
- 'crv' => 'P-521',
- 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
- 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
+ $keys = [
+ 'keys' => [
+ [
+ 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
+ 'kty' => 'FOO',
+ 'alg' => 'foo',
+ 'use' => 'sig',
+ ],
+ [
+ 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
+ 'kty' => 'FOO',
+ 'alg' => 'foo',
+ 'use' => 'sig',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
+ 'e' => 'AQAB',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
+ 'e' => 'AQAB',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
+ 'e' => 'AQAB',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
+ 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-521',
+ 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
+ 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
+ ],
],
- ]];
+ ];
return JWKSet::createFromKeyData($keys);
}
diff --git a/tests/Component/KeyManagement/JWKTest.php b/tests/Component/KeyManagement/JWKTest.php
index 6872bedc..d37b2e0b 100644
--- a/tests/Component/KeyManagement/JWKTest.php
+++ b/tests/Component/KeyManagement/JWKTest.php
@@ -2,32 +2,21 @@
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\Tests\Component\KeyManagement;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use function count;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Component\Core\JWKSet;
use Jose\Component\KeyManagement\JWKFactory;
+use ParagonIE\ConstantTime\Base64UrlSafe;
+use const PHP_EOL;
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group JWK
- *
* @internal
*/
-class JWKTest extends TestCase
+final class JWKTest extends TestCase
{
/**
* @test
@@ -45,19 +34,22 @@ public function key(): void
'bar' => 'plic',
]);
- static::assertEquals('EC', $jwk->get('kty'));
- static::assertEquals('ES256', $jwk->get('alg'));
- static::assertEquals('sign', $jwk->get('use'));
+ static::assertSame('EC', $jwk->get('kty'));
+ static::assertSame('ES256', $jwk->get('alg'));
+ static::assertSame('sign', $jwk->get('use'));
static::assertFalse($jwk->has('kid'));
- static::assertEquals(['sign'], $jwk->get('key_ops'));
- static::assertEquals('P-256', $jwk->get('crv'));
+ static::assertSame(['sign'], $jwk->get('key_ops'));
+ static::assertSame('P-256', $jwk->get('crv'));
static::assertFalse($jwk->has('x5u'));
static::assertFalse($jwk->has('x5c'));
static::assertFalse($jwk->has('x5t'));
static::assertFalse($jwk->has('x5t#256'));
- static::assertEquals('f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU', $jwk->get('x'));
- static::assertEquals('x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0', $jwk->get('y'));
- static::assertEquals('{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","use":"sign","key_ops":["sign"],"alg":"ES256","bar":"plic"}', json_encode($jwk));
+ static::assertSame('f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU', $jwk->get('x'));
+ static::assertSame('x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0', $jwk->get('y'));
+ static::assertSame(
+ '{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","use":"sign","key_ops":["sign"],"alg":"ES256","bar":"plic"}',
+ json_encode($jwk)
+ );
}
/**
@@ -124,27 +116,30 @@ public function keySet(): void
$jwkset = new JWKSet([$jwk1]);
$jwkset = $jwkset->with($jwk2);
- static::assertEquals('{"keys":[{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","use":"sign","key_ops":["sign"],"alg":"ES256","kid":"0123456789"},{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","d":"jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI","use":"sign","key_ops":["verify"],"alg":"ES256","kid":"9876543210"}]}', json_encode($jwkset));
- static::assertEquals(2, count($jwkset));
- static::assertEquals(2, $jwkset->count());
+ static::assertSame(
+ '{"keys":[{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","use":"sign","key_ops":["sign"],"alg":"ES256","kid":"0123456789"},{"kty":"EC","crv":"P-256","x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU","y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0","d":"jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI","use":"sign","key_ops":["verify"],"alg":"ES256","kid":"9876543210"}]}',
+ json_encode($jwkset)
+ );
+ static::assertSame(2, count($jwkset));
+ static::assertSame(2, $jwkset->count());
static::assertTrue($jwkset->has('0123456789'));
static::assertTrue($jwkset->has('9876543210'));
static::assertFalse($jwkset->has(0));
foreach ($jwkset as $key) {
- static::assertEquals('EC', $key->get('kty'));
+ static::assertSame('EC', $key->get('kty'));
}
- static::assertEquals('9876543210', $jwkset->get('9876543210')->get('kid'));
+ static::assertSame('9876543210', $jwkset->get('9876543210')->get('kid'));
$jwkset = $jwkset->without('9876543210');
$jwkset = $jwkset->without('9876543210');
- static::assertEquals(1, count($jwkset));
- static::assertEquals(1, $jwkset->count());
+ static::assertSame(1, count($jwkset));
+ static::assertSame(1, $jwkset->count());
$jwkset = $jwkset->without('0123456789');
- static::assertEquals(0, count($jwkset));
- static::assertEquals(0, $jwkset->count());
+ static::assertSame(0, count($jwkset));
+ static::assertSame(0, $jwkset->count());
}
/**
@@ -202,7 +197,7 @@ public function privateToPublic(): void
$public = $private->toPublic();
- static::assertEquals(json_encode([
+ static::assertSame(json_encode([
'kty' => 'EC',
'crv' => 'P-256',
'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
@@ -220,17 +215,17 @@ public function privateToPublic(): void
public function loadCertificateChain(): void
{
$key = JWKFactory::createFromCertificateFile(
- __DIR__.'/Chain/google.crt',
+ __DIR__ . '/Chain/google.crt',
[
'kid' => 'From www.google.com',
]
);
- static::assertEquals(
+ static::assertSame(
'178f7e93a74ed73d88c29042220b9ae6e4b371cd',
mb_strtolower(bin2hex(Base64UrlSafe::decode($key->get('x5t'))))
);
- static::assertEquals(
+ static::assertEqualsCanonicalizing(
[
'kty' => 'RSA',
'n' => 'nCoEd1zYUJE6BqOC4NhQSLyJP_EZcBqIRn7gj8Xxic4h7lr-YQ23MkSJoHQLU09VpM6CYpXu61lfxuEFgBLEXpQ_vFtIOPRT9yTm-5HpFcTP9FMN9Er8n1Tefb6ga2-HwNBQHygwA0DaCHNRbH__OjynNwaOvUsRBOt9JN7m-fwxcfuU1WDzLkqvQtLL6sRqGrLMU90VS4sfyBlhH82dqD5jK4Q1aWWEyBnFRiL4U5W-44BKEMYq7LqXIBHHOZkQBKDwYXqVJYxOUnXitu0IyhT8ziJqs07PRgOXlwN-wLHee69FM8-6PnG33vQlJcINNYmdnfsOEXmJHjfFr45yaQ',
@@ -238,7 +233,9 @@ public function loadCertificateChain(): void
'x5t' => 'F49-k6dO1z2IwpBCIgua5uSzcc0',
'x5t#256' => 'pBJP2vnKx7ruHKsy4yJddGUAwJ888-uyU-8_uwiK_TQ',
'kid' => 'From www.google.com',
- 'x5c' => ['MIID8DCCAtigAwIBAgIDAjqDMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT'.PHP_EOL.'MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i'.PHP_EOL.'YWwgQ0EwHhcNMTMwNDA1MTUxNTU2WhcNMTYxMjMxMjM1OTU5WjBJMQswCQYDVQQG'.PHP_EOL.'EwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzElMCMGA1UEAxMcR29vZ2xlIEludGVy'.PHP_EOL.'bmV0IEF1dGhvcml0eSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB'.PHP_EOL.'AJwqBHdc2FCROgajguDYUEi8iT/xGXAaiEZ+4I/F8YnOIe5a/mENtzJEiaB0C1NP'.PHP_EOL.'VaTOgmKV7utZX8bhBYASxF6UP7xbSDj0U/ck5vuR6RXEz/RTDfRK/J9U3n2+oGtv'.PHP_EOL.'h8DQUB8oMANA2ghzUWx//zo8pzcGjr1LEQTrfSTe5vn8MXH7lNVg8y5Kr0LSy+rE'.PHP_EOL.'ahqyzFPdFUuLH8gZYR/Nnag+YyuENWllhMgZxUYi+FOVvuOAShDGKuy6lyARxzmZ'.PHP_EOL.'EASg8GF6lSWMTlJ14rbtCMoU/M4iarNOz0YDl5cDfsCx3nuvRTPPuj5xt970JSXC'.PHP_EOL.'DTWJnZ37DhF5iR43xa+OcmkCAwEAAaOB5zCB5DAfBgNVHSMEGDAWgBTAephojYn7'.PHP_EOL.'qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUSt0GFhu89mi1dvWBtrtiGrpagS8wDgYD'.PHP_EOL.'VR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDov'.PHP_EOL.'L2cuc3ltY2QuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwNQYDVR0fBC4wLDAqoCig'.PHP_EOL.'JoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMBcGA1UdIAQQ'.PHP_EOL.'MA4wDAYKKwYBBAHWeQIFATANBgkqhkiG9w0BAQsFAAOCAQEAqvqpIM1qZ4PtXtR+'.PHP_EOL.'3h3Ef+AlBgDFJPupyC1tft6dgmUsgWM0Zj7pUsIItMsv91+ZOmqcUHqFBYx90SpI'.PHP_EOL.'hNMJbHzCzTWf84LuUt5oX+QAihcglvcpjZpNy6jehsgNb1aHA30DP9z6eX0hGfnI'.PHP_EOL.'Oi9RdozHQZJxjyXON/hKTAAj78Q1EK7gI4BzfE00LshukNYQHpmEcxpw8u1VDu4X'.PHP_EOL.'Bupn7jLrLN1nBz/2i8Jw3lsA5rsb0zYaImxssDVCbJAJPZPpZAkiDoUGn8JzIdPm'.PHP_EOL.'X4DkjYUiOnMDsWCOrmji9D6X52ASCWg23jrW4kOVWzeBkoEfu43XrVJkFleW2V40'.PHP_EOL.'fsg12A=='],
+ 'x5c' => [
+ 'MIID8DCCAtigAwIBAgIDAjqDMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT' . PHP_EOL . 'MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i' . PHP_EOL . 'YWwgQ0EwHhcNMTMwNDA1MTUxNTU2WhcNMTYxMjMxMjM1OTU5WjBJMQswCQYDVQQG' . PHP_EOL . 'EwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzElMCMGA1UEAxMcR29vZ2xlIEludGVy' . PHP_EOL . 'bmV0IEF1dGhvcml0eSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB' . PHP_EOL . 'AJwqBHdc2FCROgajguDYUEi8iT/xGXAaiEZ+4I/F8YnOIe5a/mENtzJEiaB0C1NP' . PHP_EOL . 'VaTOgmKV7utZX8bhBYASxF6UP7xbSDj0U/ck5vuR6RXEz/RTDfRK/J9U3n2+oGtv' . PHP_EOL . 'h8DQUB8oMANA2ghzUWx//zo8pzcGjr1LEQTrfSTe5vn8MXH7lNVg8y5Kr0LSy+rE' . PHP_EOL . 'ahqyzFPdFUuLH8gZYR/Nnag+YyuENWllhMgZxUYi+FOVvuOAShDGKuy6lyARxzmZ' . PHP_EOL . 'EASg8GF6lSWMTlJ14rbtCMoU/M4iarNOz0YDl5cDfsCx3nuvRTPPuj5xt970JSXC' . PHP_EOL . 'DTWJnZ37DhF5iR43xa+OcmkCAwEAAaOB5zCB5DAfBgNVHSMEGDAWgBTAephojYn7' . PHP_EOL . 'qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUSt0GFhu89mi1dvWBtrtiGrpagS8wDgYD' . PHP_EOL . 'VR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDov' . PHP_EOL . 'L2cuc3ltY2QuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwNQYDVR0fBC4wLDAqoCig' . PHP_EOL . 'JoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMBcGA1UdIAQQ' . PHP_EOL . 'MA4wDAYKKwYBBAHWeQIFATANBgkqhkiG9w0BAQsFAAOCAQEAqvqpIM1qZ4PtXtR+' . PHP_EOL . '3h3Ef+AlBgDFJPupyC1tft6dgmUsgWM0Zj7pUsIItMsv91+ZOmqcUHqFBYx90SpI' . PHP_EOL . 'hNMJbHzCzTWf84LuUt5oX+QAihcglvcpjZpNy6jehsgNb1aHA30DP9z6eX0hGfnI' . PHP_EOL . 'Oi9RdozHQZJxjyXON/hKTAAj78Q1EK7gI4BzfE00LshukNYQHpmEcxpw8u1VDu4X' . PHP_EOL . 'Bupn7jLrLN1nBz/2i8Jw3lsA5rsb0zYaImxssDVCbJAJPZPpZAkiDoUGn8JzIdPm' . PHP_EOL . 'X4DkjYUiOnMDsWCOrmji9D6X52ASCWg23jrW4kOVWzeBkoEfu43XrVJkFleW2V40' . PHP_EOL . 'fsg12A==',
+ ],
],
$key->all()
);
diff --git a/tests/Component/KeyManagement/Keys/ECKeysTest.php b/tests/Component/KeyManagement/Keys/ECKeysTest.php
index 4935a1e1..ce6641a8 100644
--- a/tests/Component/KeyManagement/Keys/ECKeysTest.php
+++ b/tests/Component/KeyManagement/Keys/ECKeysTest.php
@@ -2,17 +2,9 @@
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\Tests\Component\KeyManagement\Keys;
+use const DIRECTORY_SEPARATOR;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Component\KeyManagement\JWKFactory;
@@ -20,12 +12,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group ECKeys
- * @group unit
- *
* @internal
*/
-class ECKeysTest extends TestCase
+final class ECKeysTest extends TestCase
{
/**
* @test
@@ -35,7 +24,7 @@ public function keyTypeNotSupported(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Unsupported key type');
- $file = 'file://'.__DIR__.DIRECTORY_SEPARATOR.'DSA'.DIRECTORY_SEPARATOR.'DSA.key';
+ $file = 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'DSA' . DIRECTORY_SEPARATOR . 'DSA.key';
KeyConverter::loadFromKeyFile($file);
}
@@ -47,9 +36,11 @@ public function keyTypeNotSupported(): void
*/
public function loadPrivateEC256KeyGenerateByAPN(): void
{
- $pem = file_get_contents('file://'.__DIR__.DIRECTORY_SEPARATOR.'EC'.DIRECTORY_SEPARATOR.'private.es256.from.APN.key');
+ $pem = file_get_contents(
+ 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'EC' . DIRECTORY_SEPARATOR . 'private.es256.from.APN.key'
+ );
$details = KeyConverter::loadFromKey($pem);
- static::assertEquals($details, [
+ static::assertSame($details, [
'kty' => 'EC',
'crv' => 'P-256',
'd' => '13n3isfsEktzl-CtH5ECpRrKk-40prVuCbldkP77gak',
@@ -63,9 +54,11 @@ public function loadPrivateEC256KeyGenerateByAPN(): void
*/
public function loadPublicEC256Key(): void
{
- $pem = file_get_contents('file://'.__DIR__.DIRECTORY_SEPARATOR.'EC'.DIRECTORY_SEPARATOR.'public.es256.key');
+ $pem = file_get_contents(
+ 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'EC' . DIRECTORY_SEPARATOR . 'public.es256.key'
+ );
$details = KeyConverter::loadFromKey($pem);
- static::assertEquals($details, [
+ static::assertSame($details, [
'kty' => 'EC',
'crv' => 'P-256',
'x' => 'vuYsP-QnrqAbM7Iyhzjt08hFSuzapyojCB_gFsBt65U',
@@ -78,9 +71,11 @@ public function loadPublicEC256Key(): void
*/
public function loadPrivateEC256Key(): void
{
- $private_pem = file_get_contents('file://'.__DIR__.DIRECTORY_SEPARATOR.'EC'.DIRECTORY_SEPARATOR.'private.es256.key');
+ $private_pem = file_get_contents(
+ 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'EC' . DIRECTORY_SEPARATOR . 'private.es256.key'
+ );
$details = KeyConverter::loadFromKey($private_pem);
- static::assertEquals($details, [
+ static::assertSame($details, [
'kty' => 'EC',
'crv' => 'P-256',
'd' => 'q_VkzNnxTG39jHB0qkwA_SeVXud7yCHT7kb7kZv-0xQ',
@@ -94,9 +89,11 @@ public function loadPrivateEC256Key(): void
*/
public function loadEncryptedPrivateEC256Key(): void
{
- $private_pem = file_get_contents('file://'.__DIR__.DIRECTORY_SEPARATOR.'EC'.DIRECTORY_SEPARATOR.'private.es256.encrypted.key');
+ $private_pem = file_get_contents(
+ 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'EC' . DIRECTORY_SEPARATOR . 'private.es256.encrypted.key'
+ );
$details = KeyConverter::loadFromKey($private_pem, 'test');
- static::assertEquals($details, [
+ static::assertSame($details, [
'kty' => 'EC',
'crv' => 'P-256',
'd' => 'q_VkzNnxTG39jHB0qkwA_SeVXud7yCHT7kb7kZv-0xQ',
@@ -113,7 +110,9 @@ public function loadEncryptedPrivateEC256KeyWithoutPassword(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Password required for encrypted keys.');
- KeyConverter::loadFromKeyFile('file://'.__DIR__.DIRECTORY_SEPARATOR.'EC'.DIRECTORY_SEPARATOR.'private.es256.encrypted.key');
+ KeyConverter::loadFromKeyFile(
+ 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'EC' . DIRECTORY_SEPARATOR . 'private.es256.encrypted.key'
+ );
}
/**
@@ -121,9 +120,11 @@ public function loadEncryptedPrivateEC256KeyWithoutPassword(): void
*/
public function loadPublicEC384Key(): void
{
- $pem = file_get_contents('file://'.__DIR__.DIRECTORY_SEPARATOR.'EC'.DIRECTORY_SEPARATOR.'public.es384.key');
+ $pem = file_get_contents(
+ 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'EC' . DIRECTORY_SEPARATOR . 'public.es384.key'
+ );
$details = KeyConverter::loadFromKey($pem);
- static::assertEquals($details, [
+ static::assertSame($details, [
'kty' => 'EC',
'crv' => 'P-384',
'x' => '6f-XZsg2Tvn0EoEapQ-ylMYNtsm8CPf0cb8HI2EkfY9Bqpt3QMzwlM7mVsFRmaMZ',
@@ -136,9 +137,11 @@ public function loadPublicEC384Key(): void
*/
public function loadPrivateEC384Key(): void
{
- $private_pem = file_get_contents('file://'.__DIR__.DIRECTORY_SEPARATOR.'EC'.DIRECTORY_SEPARATOR.'private.es384.key');
+ $private_pem = file_get_contents(
+ 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'EC' . DIRECTORY_SEPARATOR . 'private.es384.key'
+ );
$details = KeyConverter::loadFromKey($private_pem);
- static::assertEquals($details, [
+ static::assertSame($details, [
'kty' => 'EC',
'crv' => 'P-384',
'd' => 'pcSSXrbeZEOaBIs7IwqcU9M_OOM81XhZuOHoGgmS_2PdECwcdQcXzv7W8-lYL0cr',
@@ -152,9 +155,11 @@ public function loadPrivateEC384Key(): void
*/
public function loadEncryptedPrivateEC384Key(): void
{
- $private_pem = file_get_contents('file://'.__DIR__.DIRECTORY_SEPARATOR.'EC'.DIRECTORY_SEPARATOR.'private.es384.encrypted.key');
+ $private_pem = file_get_contents(
+ 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'EC' . DIRECTORY_SEPARATOR . 'private.es384.encrypted.key'
+ );
$details = KeyConverter::loadFromKey($private_pem, 'test');
- static::assertEquals($details, [
+ static::assertSame($details, [
'kty' => 'EC',
'crv' => 'P-384',
'd' => 'pcSSXrbeZEOaBIs7IwqcU9M_OOM81XhZuOHoGgmS_2PdECwcdQcXzv7W8-lYL0cr',
@@ -168,9 +173,11 @@ public function loadEncryptedPrivateEC384Key(): void
*/
public function loadPublicEC512Key(): void
{
- $pem = file_get_contents('file://'.__DIR__.DIRECTORY_SEPARATOR.'EC'.DIRECTORY_SEPARATOR.'public.es512.key');
+ $pem = file_get_contents(
+ 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'EC' . DIRECTORY_SEPARATOR . 'public.es512.key'
+ );
$details = KeyConverter::loadFromKey($pem);
- static::assertEquals($details, [
+ static::assertSame($details, [
'kty' => 'EC',
'crv' => 'P-521',
'x' => 'AVpvo7TGpQk5P7ZLo0qkBpaT-fFDv6HQrWElBKMxcrJd_mRNapweATsVv83YON4lTIIRXzgGkmWeqbDr6RQO-1cS',
@@ -183,9 +190,11 @@ public function loadPublicEC512Key(): void
*/
public function loadPrivateEC512Key(): void
{
- $private_pem = file_get_contents('file://'.__DIR__.DIRECTORY_SEPARATOR.'EC'.DIRECTORY_SEPARATOR.'private.es512.key');
+ $private_pem = file_get_contents(
+ 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'EC' . DIRECTORY_SEPARATOR . 'private.es512.key'
+ );
$details = KeyConverter::loadFromKey($private_pem);
- static::assertEquals($details, [
+ static::assertSame($details, [
'kty' => 'EC',
'crv' => 'P-521',
'd' => 'Fp6KFKRiHIdR_7PP2VKxz6OkS_phyoQqwzv2I89-8zP7QScrx5r8GFLcN5mCCNJt3rN3SIgI4XoIQbNePlAj6vE',
@@ -199,9 +208,11 @@ public function loadPrivateEC512Key(): void
*/
public function loadEncryptedPrivateEC512Key(): void
{
- $private_pem = file_get_contents('file://'.__DIR__.DIRECTORY_SEPARATOR.'EC'.DIRECTORY_SEPARATOR.'private.es512.encrypted.key');
+ $private_pem = file_get_contents(
+ 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'EC' . DIRECTORY_SEPARATOR . 'private.es512.encrypted.key'
+ );
$details = KeyConverter::loadFromKey($private_pem, 'test');
- static::assertEquals($details, [
+ static::assertSame($details, [
'kty' => 'EC',
'crv' => 'P-521',
'd' => 'Fp6KFKRiHIdR_7PP2VKxz6OkS_phyoQqwzv2I89-8zP7QScrx5r8GFLcN5mCCNJt3rN3SIgI4XoIQbNePlAj6vE',
@@ -226,7 +237,7 @@ public function convertPrivateKeyToPublic(): void
'foo' => 'bar',
]);
- static::assertEquals([
+ static::assertSame([
'kty' => 'EC',
'kid' => 'Foo',
'crv' => 'P-256',
@@ -234,7 +245,8 @@ public function convertPrivateKeyToPublic(): void
'x' => 'vuYsP-QnrqAbM7Iyhzjt08hFSuzapyojCB_gFsBt65U',
'y' => 'oq-E2K-X0kPeqGuKnhlXkxc5fnxomRSC6KLby7Ij8AE',
'foo' => 'bar',
- ], $jwk->toPublic()->all());
+ ], $jwk->toPublic()
+ ->all());
}
/**
@@ -244,7 +256,7 @@ public function createECKeyOnP256(): void
{
$jwk = JWKFactory::createECKey('P-256');
- static::assertEquals('EC', $jwk->get('kty'));
+ static::assertSame('EC', $jwk->get('kty'));
static::assertTrue($jwk->has('d'));
static::assertTrue($jwk->has('x'));
static::assertTrue($jwk->has('y'));
@@ -257,7 +269,7 @@ public function createECKeyOnP384(): void
{
$jwk = JWKFactory::createECKey('P-384');
- static::assertEquals('EC', $jwk->get('kty'));
+ static::assertSame('EC', $jwk->get('kty'));
static::assertTrue($jwk->has('d'));
static::assertTrue($jwk->has('x'));
static::assertTrue($jwk->has('y'));
@@ -270,7 +282,7 @@ public function createECKeyOnP521(): void
{
$jwk = JWKFactory::createECKey('P-521');
- static::assertEquals('EC', $jwk->get('kty'));
+ static::assertSame('EC', $jwk->get('kty'));
static::assertTrue($jwk->has('d'));
static::assertTrue($jwk->has('x'));
static::assertTrue($jwk->has('y'));
diff --git a/tests/Component/KeyManagement/Keys/NoneKeysTest.php b/tests/Component/KeyManagement/Keys/NoneKeysTest.php
index 7d38ea40..3d9dba85 100644
--- a/tests/Component/KeyManagement/Keys/NoneKeysTest.php
+++ b/tests/Component/KeyManagement/Keys/NoneKeysTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\KeyManagement\Keys;
use Jose\Component\Core\JWK;
@@ -18,12 +9,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group NoneKeys
- * @group unit
- *
* @internal
*/
-class NoneKeysTest extends TestCase
+final class NoneKeysTest extends TestCase
{
/**
* @see https://tools.ietf.org/html/rfc7638#section-3.1
@@ -39,10 +27,10 @@ public function keyThumbprint(): void
'kid' => '2011-04-29',
]);
- static::assertEquals('{"kty":"none","alg":"none","use":"sig","kid":"2011-04-29"}', json_encode($key));
- static::assertEquals('BC69Ls25CLRh1KQrXvQAAB22oyuW3eQabDSMdv9xMNk', $key->thumbprint('sha256'));
- static::assertEquals('hCnBo6v87V-Gz5Bp7eoFTrdvkGA', $key->thumbprint('sha1'));
- static::assertEquals('JI3gujreJtPt2gzxlbGnLQ', $key->thumbprint('md5'));
+ static::assertSame('{"kty":"none","alg":"none","use":"sig","kid":"2011-04-29"}', json_encode($key));
+ static::assertSame('BC69Ls25CLRh1KQrXvQAAB22oyuW3eQabDSMdv9xMNk', $key->thumbprint('sha256'));
+ static::assertSame('hCnBo6v87V-Gz5Bp7eoFTrdvkGA', $key->thumbprint('sha1'));
+ static::assertSame('JI3gujreJtPt2gzxlbGnLQ', $key->thumbprint('md5'));
}
/**
@@ -50,15 +38,17 @@ public function keyThumbprint(): void
*/
public function createNoneKey(): void
{
- $key = JWKFactory::createNoneKey(['kid' => 'NONE_KEY']);
+ $key = JWKFactory::createNoneKey([
+ 'kid' => 'NONE_KEY',
+ ]);
- static::assertEquals('none', $key->get('kty'));
- static::assertEquals('none', $key->get('alg'));
- static::assertEquals('sig', $key->get('use'));
- static::assertEquals('NONE_KEY', $key->get('kid'));
+ static::assertSame('none', $key->get('kty'));
+ static::assertSame('none', $key->get('alg'));
+ static::assertSame('sig', $key->get('use'));
+ static::assertSame('NONE_KEY', $key->get('kid'));
- static::assertEquals('BC69Ls25CLRh1KQrXvQAAB22oyuW3eQabDSMdv9xMNk', $key->thumbprint('sha256'));
- static::assertEquals('hCnBo6v87V-Gz5Bp7eoFTrdvkGA', $key->thumbprint('sha1'));
- static::assertEquals('JI3gujreJtPt2gzxlbGnLQ', $key->thumbprint('md5'));
+ static::assertSame('BC69Ls25CLRh1KQrXvQAAB22oyuW3eQabDSMdv9xMNk', $key->thumbprint('sha256'));
+ static::assertSame('hCnBo6v87V-Gz5Bp7eoFTrdvkGA', $key->thumbprint('sha1'));
+ static::assertSame('JI3gujreJtPt2gzxlbGnLQ', $key->thumbprint('md5'));
}
}
diff --git a/tests/Component/KeyManagement/Keys/OKPKeysTest.php b/tests/Component/KeyManagement/Keys/OKPKeysTest.php
index 380e58b3..1293fe16 100644
--- a/tests/Component/KeyManagement/Keys/OKPKeysTest.php
+++ b/tests/Component/KeyManagement/Keys/OKPKeysTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\KeyManagement\Keys;
use InvalidArgumentException;
@@ -18,12 +9,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group OKPKeys
- * @group unit
- *
* @internal
*/
-class OKPKeysTest extends TestCase
+final class OKPKeysTest extends TestCase
{
/**
* @test
@@ -41,21 +29,18 @@ public function createOKPKeyWithInvalidKeySize(): void
*/
public function createOKPKeyWithCurveX25519(): void
{
- $jwk = JWKFactory::createOKPKey(
- 'X25519',
- [
- 'kid' => 'KEY',
- 'alg' => 'ECDH-ES',
- 'use' => 'enc',
- ]
- );
+ $jwk = JWKFactory::createOKPKey('X25519', [
+ 'kid' => 'KEY',
+ 'alg' => 'ECDH-ES',
+ 'use' => 'enc',
+ ]);
- static::assertEquals('OKP', $jwk->get('kty'));
+ static::assertSame('OKP', $jwk->get('kty'));
static::assertTrue($jwk->has('x'));
static::assertTrue($jwk->has('d'));
- static::assertEquals('KEY', $jwk->get('kid'));
- static::assertEquals('ECDH-ES', $jwk->get('alg'));
- static::assertEquals('enc', $jwk->get('use'));
+ static::assertSame('KEY', $jwk->get('kid'));
+ static::assertSame('ECDH-ES', $jwk->get('alg'));
+ static::assertSame('enc', $jwk->get('use'));
}
/**
@@ -63,20 +48,17 @@ public function createOKPKeyWithCurveX25519(): void
*/
public function createOKPKeyWithCurveEd25519(): void
{
- $jwk = JWKFactory::createOKPKey(
- 'Ed25519',
- [
- 'kid' => 'KEY',
- 'alg' => 'EdDSA',
- 'use' => 'sig',
- ]
- );
+ $jwk = JWKFactory::createOKPKey('Ed25519', [
+ 'kid' => 'KEY',
+ 'alg' => 'EdDSA',
+ 'use' => 'sig',
+ ]);
- static::assertEquals('OKP', $jwk->get('kty'));
+ static::assertSame('OKP', $jwk->get('kty'));
static::assertTrue($jwk->has('x'));
static::assertTrue($jwk->has('d'));
- static::assertEquals('KEY', $jwk->get('kid'));
- static::assertEquals('EdDSA', $jwk->get('alg'));
- static::assertEquals('sig', $jwk->get('use'));
+ static::assertSame('KEY', $jwk->get('kid'));
+ static::assertSame('EdDSA', $jwk->get('alg'));
+ static::assertSame('sig', $jwk->get('use'));
}
}
diff --git a/tests/Component/KeyManagement/Keys/OctKeysTest.php b/tests/Component/KeyManagement/Keys/OctKeysTest.php
index 98873777..3f9a9a1d 100644
--- a/tests/Component/KeyManagement/Keys/OctKeysTest.php
+++ b/tests/Component/KeyManagement/Keys/OctKeysTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\KeyManagement\Keys;
use InvalidArgumentException;
@@ -18,12 +9,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group OctKeys
- * @group unit
- *
* @internal
*/
-class OctKeysTest extends TestCase
+final class OctKeysTest extends TestCase
{
/**
* @test
@@ -43,7 +31,7 @@ public function createOctKey(): void
{
$jwk = JWKFactory::createOctKey(64);
- static::assertEquals('oct', $jwk->get('kty'));
+ static::assertSame('oct', $jwk->get('kty'));
static::assertTrue($jwk->has('k'));
}
}
diff --git a/tests/Component/KeyManagement/Keys/RSAKeysTest.php b/tests/Component/KeyManagement/Keys/RSAKeysTest.php
index 73fd9528..2d958510 100644
--- a/tests/Component/KeyManagement/Keys/RSAKeysTest.php
+++ b/tests/Component/KeyManagement/Keys/RSAKeysTest.php
@@ -2,17 +2,9 @@
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\Tests\Component\KeyManagement\Keys;
+use const DIRECTORY_SEPARATOR;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Component\KeyManagement\JWKFactory;
@@ -20,12 +12,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group RSAKeys
- * @group unit
- *
* @internal
*/
-class RSAKeysTest extends TestCase
+final class RSAKeysTest extends TestCase
{
/**
* @see https://tools.ietf.org/html/rfc7638#section-3.1
@@ -42,7 +31,7 @@ public function keyThumbprint(): void
'kid' => '2011-04-29',
]);
- static::assertEquals('NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs', $key->thumbprint('sha256'));
+ static::assertSame('NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs', $key->thumbprint('sha256'));
}
/**
@@ -86,10 +75,10 @@ public function unsupportedKeyType(): void
*/
public function loadPublicRSAKeyFromPEM(): void
{
- $file = 'file://'.__DIR__.DIRECTORY_SEPARATOR.'RSA'.DIRECTORY_SEPARATOR.'public.key';
+ $file = 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'RSA' . DIRECTORY_SEPARATOR . 'public.key';
$rsa_key = RSAKey::createFromPEM($file);
- static::assertEquals([
+ static::assertSame([
'kty' => 'RSA',
'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
'e' => 'AQAB',
@@ -111,7 +100,7 @@ public function loadPublicRSAKeyFromJWK(): void
]);
$rsa_key = RSAKey::createFromJWK($jwk);
- static::assertEquals([
+ static::assertSame([
'kty' => 'RSA',
'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
'e' => 'AQAB',
@@ -132,7 +121,7 @@ public function loadPublicRSAKeyFromValues(): void
'e' => 'AQAB',
]));
- static::assertEquals([
+ static::assertSame([
'kty' => 'RSA',
'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
'e' => 'AQAB',
@@ -145,10 +134,10 @@ public function loadPublicRSAKeyFromValues(): void
*/
public function loadPrivateRSAKey(): void
{
- $file = 'file://'.__DIR__.DIRECTORY_SEPARATOR.'RSA'.DIRECTORY_SEPARATOR.'private.key';
+ $file = 'file://' . __DIR__ . DIRECTORY_SEPARATOR . 'RSA' . DIRECTORY_SEPARATOR . 'private.key';
$rsa_key = RSAKey::createFromPEM($file);
- static::assertEquals([
+ static::assertEqualsCanonicalizing([
'kty' => 'RSA',
'n' => '33WRDEG5rN7daMgI2N5H8cPwTeQPOnz34uG2fe0yKyHjJDGE2XoESRpu5LelSPdYM_r4AWMFWoDWPd-7xaq7uFEkM8c6zaQIgj4uEiq-pBMvH-e805SFbYOKYqfQe4eeXAk4OrQwcUkSrlGskf6YUaw_3IwbPgzEDTgTZFVtQlE',
'e' => 'AQAB',
@@ -162,7 +151,7 @@ public function loadPrivateRSAKey(): void
static::assertFalse($rsa_key->isPublic());
$public_key = RSAKey::toPublic($rsa_key);
- static::assertEquals([
+ static::assertSame([
'kty' => 'RSA',
'n' => '33WRDEG5rN7daMgI2N5H8cPwTeQPOnz34uG2fe0yKyHjJDGE2XoESRpu5LelSPdYM_r4AWMFWoDWPd-7xaq7uFEkM8c6zaQIgj4uEiq-pBMvH-e805SFbYOKYqfQe4eeXAk4OrQwcUkSrlGskf6YUaw_3IwbPgzEDTgTZFVtQlE',
'e' => 'AQAB',
@@ -188,7 +177,7 @@ public function loadPrivateRSAKeyFromJWK(): void
]);
$rsa_key = RSAKey::createFromJWK($jwk);
- static::assertEquals([
+ static::assertSame([
'kty' => 'RSA',
'n' => '33WRDEG5rN7daMgI2N5H8cPwTeQPOnz34uG2fe0yKyHjJDGE2XoESRpu5LelSPdYM_r4AWMFWoDWPd-7xaq7uFEkM8c6zaQIgj4uEiq-pBMvH-e805SFbYOKYqfQe4eeXAk4OrQwcUkSrlGskf6YUaw_3IwbPgzEDTgTZFVtQlE',
'e' => 'AQAB',
@@ -202,7 +191,7 @@ public function loadPrivateRSAKeyFromJWK(): void
static::assertFalse($rsa_key->isPublic());
$public_key = RSAKey::toPublic($rsa_key);
- static::assertEquals([
+ static::assertSame([
'kty' => 'RSA',
'n' => '33WRDEG5rN7daMgI2N5H8cPwTeQPOnz34uG2fe0yKyHjJDGE2XoESRpu5LelSPdYM_r4AWMFWoDWPd-7xaq7uFEkM8c6zaQIgj4uEiq-pBMvH-e805SFbYOKYqfQe4eeXAk4OrQwcUkSrlGskf6YUaw_3IwbPgzEDTgTZFVtQlE',
'e' => 'AQAB',
@@ -227,7 +216,7 @@ public function loadPrivateRSAKeyFromValues(): void
'qi' => 'VZykPj-ugKQxuWTSE-hA-nJqkl7FzjfzHte4QYUSHLHFq6oLlHhgUoJ_4oFLaBmCvgZLAFRDDD6pnd5Fgzt9ow',
]));
- static::assertEquals([
+ static::assertSame([
'kty' => 'RSA',
'n' => '33WRDEG5rN7daMgI2N5H8cPwTeQPOnz34uG2fe0yKyHjJDGE2XoESRpu5LelSPdYM_r4AWMFWoDWPd-7xaq7uFEkM8c6zaQIgj4uEiq-pBMvH-e805SFbYOKYqfQe4eeXAk4OrQwcUkSrlGskf6YUaw_3IwbPgzEDTgTZFVtQlE',
'e' => 'AQAB',
@@ -242,7 +231,7 @@ public function loadPrivateRSAKeyFromValues(): void
static::assertFalse($rsa_key->isPublic());
$public_key = RSAKey::toPublic($rsa_key);
- static::assertEquals([
+ static::assertSame([
'kty' => 'RSA',
'n' => '33WRDEG5rN7daMgI2N5H8cPwTeQPOnz34uG2fe0yKyHjJDGE2XoESRpu5LelSPdYM_r4AWMFWoDWPd-7xaq7uFEkM8c6zaQIgj4uEiq-pBMvH-e805SFbYOKYqfQe4eeXAk4OrQwcUkSrlGskf6YUaw_3IwbPgzEDTgTZFVtQlE',
'e' => 'AQAB',
@@ -271,7 +260,7 @@ public function convertPrivateKeyToPublic(): void
$public_ec_key = RSAKey::toPublic($private_ec_key);
- static::assertEquals([
+ static::assertSame([
'kty' => 'RSA',
'kid' => 'Foo',
'n' => '33WRDEG5rN7daMgI2N5H8cPwTeQPOnz34uG2fe0yKyHjJDGE2XoESRpu5LelSPdYM_r4AWMFWoDWPd-7xaq7uFEkM8c6zaQIgj4uEiq-pBMvH-e805SFbYOKYqfQe4eeXAk4OrQwcUkSrlGskf6YUaw_3IwbPgzEDTgTZFVtQlE',
@@ -287,7 +276,7 @@ public function createRSAKey512Bits(): void
{
$jwk = JWKFactory::createRSAKey(512);
- static::assertEquals('RSA', $jwk->get('kty'));
+ static::assertSame('RSA', $jwk->get('kty'));
static::assertTrue($jwk->has('p'));
static::assertTrue($jwk->has('n'));
static::assertTrue($jwk->has('q'));
@@ -309,7 +298,7 @@ public function loadPrivateRSAKeyFromMinimalValues(): void
'd' => 'JSqz6ijkk3dfdSEA_0iMT_1HeIJ1ft4msZ6qw7_1JSCGQAALeZ1yM0QHO3uX-Jr7HC7v1rGVcwsonAhei2qu3rk-w_iCnRL6QkkMNBnDQycwaWpwGsMBFF-UqstOJNggE4AHX-aDnbd4wbKVvdX7ieehPngbPkHcJFdg_iSZCQNoajz6XfEruyIi7_IFXYEGmH_UyEbQkgNtriZysutgYdolUjo9flUlh20HbuV3NwsPjGyDG4dUMpNpdBpSuRHYKLX6h3FjeLhItBmhBfuL7d-G3EXwKlwfNXXYivqY5NQAkFNrRbvFlc_ARIws3zAfykPDIWGWFiPiN3H-hXMgAQ',
]));
- static::assertEquals([
+ static::assertSame([
'kty' => 'RSA',
'n' => 'gVf-iyhwLn2J2Up4EKjwdLYmk5n24gjGk4oQkCHVcE7j8wkS1iSzcu0ApVcMPLklEp_PWycZE12vL90gPeVjF2IPL_MKFL0b6Wy7A1f4kCDkKv7TDDjt1IIwbS-Jdp-2pG7bPb3tWjJUu6QZBLoXfRtW3cMDkQjXaVGixENORLAZs6qdu2MMKV94jetCiFd0JYCjxGVC0HW2OKnM21B_2R1NubOvMlWA7gypdpvmBYDGpkw4mjV3walWlCZObG7IH84Ovl7wOP8XLzqi2un4e6fNzy3rdp4OUSPYItF4ZX5qThWYY2R47Z5sbrZxHjNeDECKUeio0KPQNrgr6FSKSw',
'e' => 'AQAB',
@@ -318,7 +307,7 @@ public function loadPrivateRSAKeyFromMinimalValues(): void
$rsa_key->optimize();
- static::assertEquals([
+ static::assertEqualsCanonicalizing([
'kty' => 'RSA',
'n' => 'gVf-iyhwLn2J2Up4EKjwdLYmk5n24gjGk4oQkCHVcE7j8wkS1iSzcu0ApVcMPLklEp_PWycZE12vL90gPeVjF2IPL_MKFL0b6Wy7A1f4kCDkKv7TDDjt1IIwbS-Jdp-2pG7bPb3tWjJUu6QZBLoXfRtW3cMDkQjXaVGixENORLAZs6qdu2MMKV94jetCiFd0JYCjxGVC0HW2OKnM21B_2R1NubOvMlWA7gypdpvmBYDGpkw4mjV3walWlCZObG7IH84Ovl7wOP8XLzqi2un4e6fNzy3rdp4OUSPYItF4ZX5qThWYY2R47Z5sbrZxHjNeDECKUeio0KPQNrgr6FSKSw',
'e' => 'AQAB',
@@ -333,7 +322,7 @@ public function loadPrivateRSAKeyFromMinimalValues(): void
static::assertFalse($rsa_key->isPublic());
$public_key = RSAKey::toPublic($rsa_key);
- static::assertEquals([
+ static::assertSame([
'kty' => 'RSA',
'n' => 'gVf-iyhwLn2J2Up4EKjwdLYmk5n24gjGk4oQkCHVcE7j8wkS1iSzcu0ApVcMPLklEp_PWycZE12vL90gPeVjF2IPL_MKFL0b6Wy7A1f4kCDkKv7TDDjt1IIwbS-Jdp-2pG7bPb3tWjJUu6QZBLoXfRtW3cMDkQjXaVGixENORLAZs6qdu2MMKV94jetCiFd0JYCjxGVC0HW2OKnM21B_2R1NubOvMlWA7gypdpvmBYDGpkw4mjV3walWlCZObG7IH84Ovl7wOP8XLzqi2un4e6fNzy3rdp4OUSPYItF4ZX5qThWYY2R47Z5sbrZxHjNeDECKUeio0KPQNrgr6FSKSw',
'e' => 'AQAB',
diff --git a/tests/Component/KeyManagement/MessageBagTest.php b/tests/Component/KeyManagement/MessageBagTest.php
index b545d45d..29bd3700 100644
--- a/tests/Component/KeyManagement/MessageBagTest.php
+++ b/tests/Component/KeyManagement/MessageBagTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\KeyManagement;
use function count;
@@ -19,12 +10,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group JWKAnalyzer
- *
* @internal
*/
-class MessageBagTest extends TestCase
+final class MessageBagTest extends TestCase
{
/**
* @test
@@ -33,8 +21,8 @@ public function iCanGetAMessageWithLowSeverity(): void
{
$message = Message::low('Not important');
- static::assertEquals(Message::SEVERITY_LOW, $message->getSeverity());
- static::assertEquals('Not important', $message->getMessage());
+ static::assertSame(Message::SEVERITY_LOW, $message->getSeverity());
+ static::assertSame('Not important', $message->getMessage());
}
/**
@@ -44,8 +32,8 @@ public function iCanGetAMessageWithMediumSeverity(): void
{
$message = Message::medium('Quite important');
- static::assertEquals(Message::SEVERITY_MEDIUM, $message->getSeverity());
- static::assertEquals('Quite important', $message->getMessage());
+ static::assertSame(Message::SEVERITY_MEDIUM, $message->getSeverity());
+ static::assertSame('Quite important', $message->getMessage());
}
/**
@@ -55,8 +43,8 @@ public function iCanGetAMessageWithHighSeverity(): void
{
$message = Message::high('Very important');
- static::assertEquals(Message::SEVERITY_HIGH, $message->getSeverity());
- static::assertEquals('Very important', $message->getMessage());
+ static::assertSame(Message::SEVERITY_HIGH, $message->getSeverity());
+ static::assertSame('Very important', $message->getMessage());
}
/**
@@ -66,7 +54,7 @@ public function iCanSerializeAMessageIntoJson(): void
{
$message = Message::high('Very important');
- static::assertEquals('{"message":"Very important","severity":"high"}', json_encode($message));
+ static::assertSame('{"message":"Very important","severity":"high"}', json_encode($message));
}
/**
@@ -77,9 +65,9 @@ public function aMessageBagCanHaveSeveralMessages(): void
$bag = new MessageBag();
$bag->add(Message::high('Very important'));
- static::assertEquals(1, $bag->count());
- static::assertEquals(1, count($bag));
- static::assertEquals(1, count($bag->all()));
+ static::assertSame(1, $bag->count());
+ static::assertSame(1, count($bag));
+ static::assertSame(1, count($bag->all()));
foreach ($bag as $message) {
static::assertInstanceOf(Message::class, $message);
}
@@ -93,6 +81,6 @@ public function iCanSerializeAMessageBagIntoJson(): void
$bag = new MessageBag();
$bag->add(Message::high('Very important'));
- static::assertEquals('[{"message":"Very important","severity":"high"}]', json_encode($bag));
+ static::assertSame('[{"message":"Very important","severity":"high"}]', json_encode($bag));
}
}
diff --git a/tests/Component/KeyManagement/UrlKeySetFactoryTest.php b/tests/Component/KeyManagement/UrlKeySetFactoryTest.php
index 888a77cf..8f22b007 100644
--- a/tests/Component/KeyManagement/UrlKeySetFactoryTest.php
+++ b/tests/Component/KeyManagement/UrlKeySetFactoryTest.php
@@ -2,51 +2,28 @@
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\Tests\Component\KeyManagement;
use Http\Mock\Client;
use Jose\Component\KeyManagement\JKUFactory;
use Jose\Component\KeyManagement\X5UFactory;
+use JsonException;
use Nyholm\Psr7\Factory\Psr17Factory;
use PHPUnit\Framework\TestCase;
use RuntimeException;
/**
- * @group unit
- * @group UrlKeySetFactory
- *
* @internal
*/
-class UrlKeySetFactoryTest extends TestCase
+final class UrlKeySetFactoryTest extends TestCase
{
- /**
- * @var Psr17Factory
- */
- private $messageFactory;
+ private Psr17Factory $messageFactory;
- /**
- * @var null|JKUFactory
- */
- private $jkuFactory;
+ private ?JKUFactory $jkuFactory = null;
- /**
- * @var null|X5UFactory
- */
- private $x5uFactory;
+ private ?X5UFactory $x5uFactory = null;
- /**
- * @var null|Client
- */
- private $httpClient;
+ private ?Client $httpClient = null;
protected function setUp(): void
{
@@ -59,12 +36,22 @@ protected function setUp(): void
public function iCanGetAKeySetFromAJWKUrl(): void
{
$response = $this->messageFactory->createResponse(200);
- $response->getBody()->write('{"keys": [{"kty": "RSA","alg": "RS256","use": "sig","kid": "acde8d7c1997d82dcf5d5ed2858ac8d060cd3ca9","n": "kfQP58EQpxAqZUCiGolkyCio8S3hG9HTMfQpB7VVDB69mK3AN68ZmWeGTIvDnbcslQ1TEhjZ8bKJwWHFlyoJOxeGaEsn0G3xAmPeUW8WjS2tLTKx8DUYOAgto9VOWip5dngZVMrCL85fPk-jiKEL3ODsyddZiOOhBEjapco_RTDPVurVreDnG6mbScCslHda5T6KudyFOQLD77BulIENlpE5Lxh3KFGrGgu_RiVOf-XtHDDExiWOsaUhOSZFkecqF56upROBQRIuNqHv98icbVKRzYcDteRckJGfk12faaQhX24QCDsIrT8NHbbB9eKX7rcnDMp8GxSArct7KyOxyw","e": "AQAB"},{"kty": "RSA","alg": "RS256","use": "sig","kid": "ce760dff481ee9bca45ccab64eada328029bc0aa","n": "47QQ2Ru1h3WWxcTUbwQvhD_ncEw7avXtXDmcY_8zxC9FcPwv6GcAvjoWuF0afBNK4UoNqW9gG_eq96FnMUF0iIVkPio-h3cpOHzAhKN-LHB9UMx3WDCVYxeRjGOgKU8oLz7ioqGhyZc-oxWk0v691Ybp83OPhWa0bVAmTgSaAuPpyw-ZLg-Nb4eF---vjb1N0ptYltSOQNEZ3BK9jEbWKNHASTcTpFkigcWyLp_sFv79W_DLZEKIb4TxaoGGWA-AMiErFsAnzcU7Ia4ETyp5ucI6o4SifKzI1SKRkUTinlVnvedwXhu21HBviEe_a-fg3uYc7JTMgFNG3kQlfks8AQ","e": "AQAB"},{"kty": "RSA","alg": "RS256","use": "sig","kid": "3ce4a97d502af058eb66ac8d730a592ab7cea7f1","n": "5JjYSEt7lxpIBtnZSAta6uPZpiAFSwzRhhWdBbRr1QuEMPhBvfWsy0PArA8xx5U8AIWftTmhsTdXvkLRLrG_vT4fxjU22K2YBoeTY2v2QIvJOUyhLWOr5wVtG9iWtg86FsGv0ukEgEpx2mqIlpz0KWkEZwIhtYRTtFQh_G4QFjvyAg70iFi7BvSizfZlEDrg5-5ksia0Gy_gmjGvgTLHGBLciKo5d5Aw-DBPJqunnJacVu6rTkBF_QgsOWpO5Y8XuKbjEKNzUHSv6TxumaK7ueU1ckucdtkAHqURzEInbb3BxWYme_3JCzTDMRy4-pEoWR-NyLZwEZxxOtGFQRXhZw","e": "AQAB"}]}');
- $response->getBody()->rewind();
- $this->getHttpClient()->addResponse($response);
- $keyset = $this->getJKUFactory()->loadFromUrl('https://foo.bar/keys');
-
- static::assertEquals(3, $keyset->count());
+ $response->getBody()
+ ->write(
+ '{"keys": [{"kty": "RSA","alg": "RS256","use": "sig","kid": "acde8d7c1997d82dcf5d5ed2858ac8d060cd3ca9","n": "kfQP58EQpxAqZUCiGolkyCio8S3hG9HTMfQpB7VVDB69mK3AN68ZmWeGTIvDnbcslQ1TEhjZ8bKJwWHFlyoJOxeGaEsn0G3xAmPeUW8WjS2tLTKx8DUYOAgto9VOWip5dngZVMrCL85fPk-jiKEL3ODsyddZiOOhBEjapco_RTDPVurVreDnG6mbScCslHda5T6KudyFOQLD77BulIENlpE5Lxh3KFGrGgu_RiVOf-XtHDDExiWOsaUhOSZFkecqF56upROBQRIuNqHv98icbVKRzYcDteRckJGfk12faaQhX24QCDsIrT8NHbbB9eKX7rcnDMp8GxSArct7KyOxyw","e": "AQAB"},{"kty": "RSA","alg": "RS256","use": "sig","kid": "ce760dff481ee9bca45ccab64eada328029bc0aa","n": "47QQ2Ru1h3WWxcTUbwQvhD_ncEw7avXtXDmcY_8zxC9FcPwv6GcAvjoWuF0afBNK4UoNqW9gG_eq96FnMUF0iIVkPio-h3cpOHzAhKN-LHB9UMx3WDCVYxeRjGOgKU8oLz7ioqGhyZc-oxWk0v691Ybp83OPhWa0bVAmTgSaAuPpyw-ZLg-Nb4eF---vjb1N0ptYltSOQNEZ3BK9jEbWKNHASTcTpFkigcWyLp_sFv79W_DLZEKIb4TxaoGGWA-AMiErFsAnzcU7Ia4ETyp5ucI6o4SifKzI1SKRkUTinlVnvedwXhu21HBviEe_a-fg3uYc7JTMgFNG3kQlfks8AQ","e": "AQAB"},{"kty": "RSA","alg": "RS256","use": "sig","kid": "3ce4a97d502af058eb66ac8d730a592ab7cea7f1","n": "5JjYSEt7lxpIBtnZSAta6uPZpiAFSwzRhhWdBbRr1QuEMPhBvfWsy0PArA8xx5U8AIWftTmhsTdXvkLRLrG_vT4fxjU22K2YBoeTY2v2QIvJOUyhLWOr5wVtG9iWtg86FsGv0ukEgEpx2mqIlpz0KWkEZwIhtYRTtFQh_G4QFjvyAg70iFi7BvSizfZlEDrg5-5ksia0Gy_gmjGvgTLHGBLciKo5d5Aw-DBPJqunnJacVu6rTkBF_QgsOWpO5Y8XuKbjEKNzUHSv6TxumaK7ueU1ckucdtkAHqURzEInbb3BxWYme_3JCzTDMRy4-pEoWR-NyLZwEZxxOtGFQRXhZw","e": "AQAB"}]}'
+ )
+ ;
+ $response->getBody()
+ ->rewind()
+ ;
+ $this->getHttpClient()
+ ->addResponse($response)
+ ;
+ $keyset = $this->getJKUFactory()
+ ->loadFromUrl('https://foo.bar/keys')
+ ;
+
+ static::assertSame(3, $keyset->count());
}
/**
@@ -72,14 +59,22 @@ public function iCanGetAKeySetFromAJWKUrl(): void
*/
public function theJWKUrlIsValidButDoesNotContainAKeySet(): void
{
- $this->expectException(RuntimeException::class);
- $this->expectExceptionMessage('Invalid content.');
+ $this->expectException(JsonException::class);
+ $this->expectExceptionMessage('Syntax error');
$response = $this->messageFactory->createResponse(200);
- $response->getBody()->write('Hello World!');
- $response->getBody()->rewind();
- $this->getHttpClient()->addResponse($response);
- $this->getJKUFactory()->loadFromUrl('https://foo.bar/bad/url');
+ $response->getBody()
+ ->write('Hello World!')
+ ;
+ $response->getBody()
+ ->rewind()
+ ;
+ $this->getHttpClient()
+ ->addResponse($response)
+ ;
+ $this->getJKUFactory()
+ ->loadFromUrl('https://foo.bar/bad/url')
+ ;
}
/**
@@ -91,10 +86,18 @@ public function theUrlIsNotValidAndJWKSetCannotBeLoaded(): void
$this->expectExceptionMessage('Unable to get the key set.');
$response = $this->messageFactory->createResponse(404);
- $response->getBody()->write('Not found');
- $response->getBody()->rewind();
- $this->getHttpClient()->addResponse($response);
- $this->getJKUFactory()->loadFromUrl('https://foo.bar/bad/url');
+ $response->getBody()
+ ->write('Not found')
+ ;
+ $response->getBody()
+ ->rewind()
+ ;
+ $this->getHttpClient()
+ ->addResponse($response)
+ ;
+ $this->getJKUFactory()
+ ->loadFromUrl('https://foo.bar/bad/url')
+ ;
}
/**
@@ -103,12 +106,22 @@ public function theUrlIsNotValidAndJWKSetCannotBeLoaded(): void
public function iCanGetAKeySetFromAX509Url(): void
{
$response = $this->messageFactory->createResponse(200);
- $response->getBody()->write('["MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVM\nxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR2\n8gRGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExM\nTYwMTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UE\nCBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWR\nkeS5jb20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYW\nRkeS5jb20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlc\nnRpZmljYXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJ\nKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTt\nwY6vj3D3HKrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqV\nTr9vcyOdQmVZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aL\nGbqGmu75RpRSgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo\n7RJlbmr2EkRTcDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgW\nJCJjPOq8lh8BJ6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAw\nEAAaOCATIwggEuMB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVH\nSMEGDAWgBTSxLDSkdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEA\nMDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWR\nkeS5jb20wRgYDVR0fBD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2\nRhZGR5LmNvbS9yZXBvc2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVH\nSAAMDgwNgYIKwYBBQUHAgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j\nb20vcmVwb3NpdG9yeTAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggE\nBANKGwOy9+aG2Z+5mC6IGOgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPI\nUyIXvJxwqoJKSQ3kbTJSMUA2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL\n5CkKSkB2XIsKd83ASe8T+5o0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9\np0iRFEUOOjZv2kWzRaJBydTXRE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsx\nuxN89txJx9OjxUUAiKEngHUuHqDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZ\nEjYx8WnM25sgVjOuH0aBsXBTWVU+4=","MIIE+zCCBGSgAwIBAgICAQ0wDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1Z\nhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIE\nluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb\n24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8x\nIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTA0MDYyOTE3MDY\nyMFoXDTI0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRoZS\nBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3MgM\niBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN\nADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XC\nAPVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux\n6wwdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLO\ntXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWo\nriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZ\nEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjggHhMIIB3TAdBgNVHQ\n4EFgQU0sSw0pHUTBFxs2HLPaH+3ahq1OMwgdIGA1UdIwSByjCBx6GBwaSBvjCBu\nzEkMCIGA1UEBxMbVmFsaUNlcnQgVmFsaWRhdGlvbiBOZXR3b3JrMRcwFQYDVQQK\nEw5WYWxpQ2VydCwgSW5jLjE1MDMGA1UECxMsVmFsaUNlcnQgQ2xhc3MgMiBQb2x\npY3kgVmFsaWRhdGlvbiBBdXRob3JpdHkxITAfBgNVBAMTGGh0dHA6Ly93d3cudm\nFsaWNlcnQuY29tLzEgMB4GCSqGSIb3DQEJARYRaW5mb0B2YWxpY2VydC5jb22CA\nQEwDwYDVR0TAQH/BAUwAwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGG\nF2h0dHA6Ly9vY3NwLmdvZGFkZHkuY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA\n6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS9yb290LmNybD\nBLBgNVHSAERDBCMEAGBFUdIAAwODA2BggrBgEFBQcCARYqaHR0cDovL2NlcnRpZ\nmljYXRlcy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5MA4GA1UdDwEB/wQEAwIBBjAN\nBgkqhkiG9w0BAQUFAAOBgQC1QPmnHfbq/qQaQlpE9xXUhUaJwL6e4+PrxeNYiY+\nSn1eocSxI0YGyeR+sBjUZsE4OWBsUs5iB0QQeyAfJg594RAoYC5jcdnplDQ1tgM\nQLARzLrUc+cb53S8wGd9D0VmsfSxOaFIqII6hR8INMqzW/Rn453HWkrugp++85j\n09VZw==","MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ\n0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNT\nAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0a\nG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkq\nhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE\n5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTm\nV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZ\nXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQD\nExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9\nAdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5a\nvIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zf\nN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwb\nP7RfZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQU\nAA4GBADt/UG9vUJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQ\nC1u+mNr0HZDzTuIYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMM\nj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd"]');
- $response->getBody()->rewind();
- $this->getHttpClient()->addResponse($response);
- $keyset = $this->getX5UFactory()->loadFromUrl('https://foo.bar/keys');
-
- static::assertEquals(3, $keyset->count());
+ $response->getBody()
+ ->write(
+ '["MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVM\nxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR2\n8gRGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExM\nTYwMTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UE\nCBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWR\nkeS5jb20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYW\nRkeS5jb20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlc\nnRpZmljYXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJ\nKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTt\nwY6vj3D3HKrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqV\nTr9vcyOdQmVZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aL\nGbqGmu75RpRSgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo\n7RJlbmr2EkRTcDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgW\nJCJjPOq8lh8BJ6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAw\nEAAaOCATIwggEuMB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVH\nSMEGDAWgBTSxLDSkdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEA\nMDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWR\nkeS5jb20wRgYDVR0fBD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2\nRhZGR5LmNvbS9yZXBvc2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVH\nSAAMDgwNgYIKwYBBQUHAgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j\nb20vcmVwb3NpdG9yeTAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggE\nBANKGwOy9+aG2Z+5mC6IGOgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPI\nUyIXvJxwqoJKSQ3kbTJSMUA2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL\n5CkKSkB2XIsKd83ASe8T+5o0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9\np0iRFEUOOjZv2kWzRaJBydTXRE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsx\nuxN89txJx9OjxUUAiKEngHUuHqDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZ\nEjYx8WnM25sgVjOuH0aBsXBTWVU+4=","MIIE+zCCBGSgAwIBAgICAQ0wDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1Z\nhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIE\nluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb\n24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8x\nIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTA0MDYyOTE3MDY\nyMFoXDTI0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRoZS\nBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3MgM\niBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN\nADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XC\nAPVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux\n6wwdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLO\ntXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWo\nriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZ\nEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjggHhMIIB3TAdBgNVHQ\n4EFgQU0sSw0pHUTBFxs2HLPaH+3ahq1OMwgdIGA1UdIwSByjCBx6GBwaSBvjCBu\nzEkMCIGA1UEBxMbVmFsaUNlcnQgVmFsaWRhdGlvbiBOZXR3b3JrMRcwFQYDVQQK\nEw5WYWxpQ2VydCwgSW5jLjE1MDMGA1UECxMsVmFsaUNlcnQgQ2xhc3MgMiBQb2x\npY3kgVmFsaWRhdGlvbiBBdXRob3JpdHkxITAfBgNVBAMTGGh0dHA6Ly93d3cudm\nFsaWNlcnQuY29tLzEgMB4GCSqGSIb3DQEJARYRaW5mb0B2YWxpY2VydC5jb22CA\nQEwDwYDVR0TAQH/BAUwAwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGG\nF2h0dHA6Ly9vY3NwLmdvZGFkZHkuY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA\n6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS9yb290LmNybD\nBLBgNVHSAERDBCMEAGBFUdIAAwODA2BggrBgEFBQcCARYqaHR0cDovL2NlcnRpZ\nmljYXRlcy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5MA4GA1UdDwEB/wQEAwIBBjAN\nBgkqhkiG9w0BAQUFAAOBgQC1QPmnHfbq/qQaQlpE9xXUhUaJwL6e4+PrxeNYiY+\nSn1eocSxI0YGyeR+sBjUZsE4OWBsUs5iB0QQeyAfJg594RAoYC5jcdnplDQ1tgM\nQLARzLrUc+cb53S8wGd9D0VmsfSxOaFIqII6hR8INMqzW/Rn453HWkrugp++85j\n09VZw==","MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ\n0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNT\nAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0a\nG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkq\nhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE\n5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTm\nV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZ\nXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQD\nExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9\nAdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5a\nvIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zf\nN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwb\nP7RfZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQU\nAA4GBADt/UG9vUJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQ\nC1u+mNr0HZDzTuIYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMM\nj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd"]'
+ )
+ ;
+ $response->getBody()
+ ->rewind()
+ ;
+ $this->getHttpClient()
+ ->addResponse($response)
+ ;
+ $keyset = $this->getX5UFactory()
+ ->loadFromUrl('https://foo.bar/keys')
+ ;
+
+ static::assertSame(3, $keyset->count());
}
/**
@@ -116,14 +129,22 @@ public function iCanGetAKeySetFromAX509Url(): void
*/
public function theX509UrlIsValidButDoesNotContainAKeySet(): void
{
- $this->expectException(RuntimeException::class);
- $this->expectExceptionMessage('Invalid content.');
+ $this->expectException(JsonException::class);
+ $this->expectExceptionMessage('Syntax error');
$response = $this->messageFactory->createResponse(200);
- $response->getBody()->write('Hello World!');
- $response->getBody()->rewind();
- $this->getHttpClient()->addResponse($response);
- $this->getX5UFactory()->loadFromUrl('https://foo.bar/bad/url');
+ $response->getBody()
+ ->write('Hello World!')
+ ;
+ $response->getBody()
+ ->rewind()
+ ;
+ $this->getHttpClient()
+ ->addResponse($response)
+ ;
+ $this->getX5UFactory()
+ ->loadFromUrl('https://foo.bar/bad/url')
+ ;
}
/**
@@ -135,19 +156,24 @@ public function theUrlIsNotValidAndX509CertificatesCannotBeLoaded(): void
$this->expectExceptionMessage('Unable to get the key set.');
$response = $this->messageFactory->createResponse(404);
- $response->getBody()->write('Not found');
- $response->getBody()->rewind();
- $this->getHttpClient()->addResponse($response);
- $this->getX5UFactory()->loadFromUrl('https://foo.bar/bad/url');
+ $response->getBody()
+ ->write('Not found')
+ ;
+ $response->getBody()
+ ->rewind()
+ ;
+ $this->getHttpClient()
+ ->addResponse($response)
+ ;
+ $this->getX5UFactory()
+ ->loadFromUrl('https://foo.bar/bad/url')
+ ;
}
private function getJKUFactory(): JKUFactory
{
- if (null === $this->jkuFactory) {
- $this->jkuFactory = new JKUFactory(
- $this->getHttpClient(),
- new Psr17Factory()
- );
+ if ($this->jkuFactory === null) {
+ $this->jkuFactory = new JKUFactory($this->getHttpClient(), new Psr17Factory());
}
return $this->jkuFactory;
@@ -155,11 +181,8 @@ private function getJKUFactory(): JKUFactory
private function getX5UFactory(): X5UFactory
{
- if (null === $this->x5uFactory) {
- $this->x5uFactory = new X5UFactory(
- $this->getHttpClient(),
- new Psr17Factory()
- );
+ if ($this->x5uFactory === null) {
+ $this->x5uFactory = new X5UFactory($this->getHttpClient(), new Psr17Factory());
}
return $this->x5uFactory;
@@ -167,7 +190,7 @@ private function getX5UFactory(): X5UFactory
private function getHttpClient(): Client
{
- if (null === $this->httpClient) {
+ if ($this->httpClient === null) {
$this->httpClient = new Client();
}
diff --git a/tests/Component/NestedToken/NestedTokenTest.php b/tests/Component/NestedToken/NestedTokenTest.php
index 0fb0f6f5..13d4ab81 100644
--- a/tests/Component/NestedToken/NestedTokenTest.php
+++ b/tests/Component/NestedToken/NestedTokenTest.php
@@ -2,92 +2,87 @@
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\Tests\Component\NestedToken;
use Jose\Component\Core\AlgorithmManagerFactory;
-use Jose\Component\Encryption\Algorithm\ContentEncryption;
-use Jose\Component\Encryption\Algorithm\KeyEncryption;
-use Jose\Component\Encryption\Compression;
+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\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;
+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 NestedTokenTest extends TestCase
{
- /**
- * @var AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
-
- /**
- * @var CompressionMethodManagerFactory
- */
- private $compressionMethodManagerFactory;
-
- /**
- * @var JWEBuilderFactory
- */
- private $jweBuilderFactory;
-
- /**
- * @var JWEDecrypterFactory
- */
- private $jweDecrypterFactory;
-
- /**
- * @var JWELoaderFactory
- */
- private $jweLoaderFactory;
-
- /**
- * @var null|Serializer\JWESerializerManagerFactory
- */
- private $jwsSerializerManagerFactory;
-
- /**
- * @var null|Serializer\JWESerializerManager
- */
- private $jwsSerializerManager;
+ 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 (null === $this->algorithmManagerFactory) {
+ if ($this->algorithmManagerFactory === null) {
$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());
+ $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('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;
@@ -95,9 +90,9 @@ protected function getAlgorithmManagerFactory(): AlgorithmManagerFactory
protected function getCompressionMethodManagerFactory(): CompressionMethodManagerFactory
{
- if (null === $this->compressionMethodManagerFactory) {
+ if ($this->compressionMethodManagerFactory === null) {
$this->compressionMethodManagerFactory = new CompressionMethodManagerFactory();
- $this->compressionMethodManagerFactory->add('DEF', new Compression\Deflate());
+ $this->compressionMethodManagerFactory->add('DEF', new Deflate());
}
return $this->compressionMethodManagerFactory;
@@ -105,7 +100,7 @@ protected function getCompressionMethodManagerFactory(): CompressionMethodManage
protected function getJWEBuilderFactory(): JWEBuilderFactory
{
- if (null === $this->jweBuilderFactory) {
+ if ($this->jweBuilderFactory === null) {
$this->jweBuilderFactory = new JWEBuilderFactory(
$this->getAlgorithmManagerFactory(),
$this->getCompressionMethodManagerFactory()
@@ -117,7 +112,7 @@ protected function getJWEBuilderFactory(): JWEBuilderFactory
protected function getJWEDecrypterFactory(): JWEDecrypterFactory
{
- if (null === $this->jweDecrypterFactory) {
+ if ($this->jweDecrypterFactory === null) {
$this->jweDecrypterFactory = new JWEDecrypterFactory(
$this->getAlgorithmManagerFactory(),
$this->getCompressionMethodManagerFactory()
@@ -129,7 +124,7 @@ protected function getJWEDecrypterFactory(): JWEDecrypterFactory
protected function getJWELoaderFactory(): JWELoaderFactory
{
- if (null === $this->jweLoaderFactory) {
+ if ($this->jweLoaderFactory === null) {
$this->jweLoaderFactory = new JWELoaderFactory(
$this->getJWESerializerManagerFactory(),
$this->getJWEDecrypterFactory(),
@@ -140,25 +135,25 @@ protected function getJWELoaderFactory(): JWELoaderFactory
return $this->jweLoaderFactory;
}
- protected function getJWESerializerManagerFactory(): Serializer\JWESerializerManagerFactory
+ protected function getJWESerializerManagerFactory(): 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());
+ 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(): Serializer\JWESerializerManager
+ protected function getJWESerializerManager(): JWESerializerManager
{
- if (null === $this->jwsSerializerManager) {
- $this->jwsSerializerManager = new Serializer\JWESerializerManager([
- new Serializer\CompactSerializer(),
- new Serializer\JSONFlattenedSerializer(),
- new Serializer\JSONGeneralSerializer(),
+ if ($this->jwsSerializerManager === null) {
+ $this->jwsSerializerManager = new JWESerializerManager([
+ new CompactSerializer(),
+ new JSONFlattenedSerializer(),
+ new JSONGeneralSerializer(),
]);
}
diff --git a/tests/Component/NestedToken/NestingTest.php b/tests/Component/NestedToken/NestingTest.php
index 5a2b4a1e..f4874b19 100644
--- a/tests/Component/NestedToken/NestingTest.php
+++ b/tests/Component/NestedToken/NestingTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\NestedToken;
use Jose\Component\Core\JWK;
@@ -18,11 +9,9 @@
/**
* @see https://tools.ietf.org/html/rfc7520#section-6
*
- * @group RFC7520
- *
* @internal
*/
-class NestingTest extends NestedTokenTest
+final class NestingTest extends NestedTokenTest
{
/**
* @test
@@ -52,27 +41,35 @@ public function decryption(): void
'enc' => 'A128GCM',
];
- $jweDecrypter = $this->getJWEDecrypterFactory()->create(['RSA-OAEP'], ['A128GCM'], ['DEF']);
+ $jweDecrypter = $this->getJWEDecrypterFactory()
+ ->create(['RSA-OAEP'], ['A128GCM'], ['DEF'])
+ ;
$json_compact = 'eyJhbGciOiJSU0EtT0FFUCIsImN0eSI6IkpXVCIsImVuYyI6IkExMjhHQ00ifQ.a0JHRoITfpX4qRewImjlStn8m3CPxBV1ueYlVhjurCyrBg3I7YhCRYjphDOOS4E7rXbr2Fn6NyQq-A-gqT0FXqNjVOGrG-bi13mwy7RoYhjTkBEC6P7sMYMXXx4gzMedpiJHQVeyI-zkZV7A9matpgevAJWrXzOUysYGTtwoSN6gtUVtlLaivjvb21O0ul4YxSHV-ByK1kyeetRp_fuYJxHoKLQL9P424sKx2WGYb4zsBIPF4ssl_e5IR7nany-25_UmC2urosNkoFz9cQ82MypZP8gqbQJyPN-Fpp4Z-5o6yV64x6yzDUF_5JCIdl-Qv6H5dMVIY7q1eKpXcV1lWO_2FefEBqXxXvIjLeZivjNkzogCq3-IapSjVFnMjBxjpYLT8muaawo1yy1XXMuinIpNcOY3n4KKrXLrCcteX85m4IIHMZa38s1Hpr56fPPseMA-Jltmt-a9iEDtOzhtxz8AXy9tsCAZV2XBWNG8c3kJusAamBKOYwfk7JhLRDgOnJjlJLhn7TI4UxDp9dCmUXEN6z0v23W15qJIEXNJtqnblpymooeWAHCT4e_Owbim1g0AEpTHUdA2iiLNs9WTX_H_TXuPC8yDDhi1smxS_X_xpkIHkiIHWDOLx03BpqDTivpKkBYwqP2UZkcxqX2Fo_GnVrNwlK7Lgxw6FSQvDO0.GbX1i9kXz0sxXPmA.SZI4IvKHmwpazl_pJQXX3mHv1ANnOU4Wf9-utWYUcKrBNgCe2OFMf66cSJ8k2QkxaQD3_R60MGE9ofomwtky3GFxMeGRjtpMt9OAvVLsAXB0_UTCBGyBg3C2bWLXqZlfJAAoJRUPRk-BimYZY81zVBuIhc7HsQePCpu33SzMsFHjn4lP_idrJz_glZTNgKDt8zdnUPauKTKDNOH1DD4fuzvDYfDIAfqGPyL5sVRwbiXpXdGokEszM-9ChMPqW1QNhzuX_Zul3bvrJwr7nuGZs4cUScY3n8yE3AHCLurgls-A9mz1X38xEaulV18l4Fg9tLejdkAuQZjPbqeHQBJe4IwGD5Ee0dQ-Mtz4NnhkIWx-YKBb_Xo2zI3Q_1sYjKUuis7yWW-HTr_vqvFt0bj7WJf2vzB0TZ3dvsoGaTvPH2dyWwumUrlx4gmPUzBdwTO6ubfYSDUEEz5py0d_OtWeUSYcCYBKD-aM7tXg26qJo21gYjLfhn9zy-W19sOCZGuzgFjPhawXHpvnj_t-0_ES96kogjJLxS1IMU9Y5XmnwZMyNc9EIwnogsCg-hVuvzyP0sIruktmI94_SL1xgMl7o03phcTMxtlMizR88NKU1WkBsiXMCjy1Noue7MD-ShDp5dmM.KnIKEhN8U-3C9s4gtSpjSw';
$json_flattened = '{"encrypted_key": "a0JHRoITfpX4qRewImjlStn8m3CPxBV1ueYlVhjurCyrBg3I7YhCRYjphDOOS4E7rXbr2Fn6NyQq-A-gqT0FXqNjVOGrG-bi13mwy7RoYhjTkBEC6P7sMYMXXx4gzMedpiJHQVeyI-zkZV7A9matpgevAJWrXzOUysYGTtwoSN6gtUVtlLaivjvb21O0ul4YxSHV-ByK1kyeetRp_fuYJxHoKLQL9P424sKx2WGYb4zsBIPF4ssl_e5IR7nany-25_UmC2urosNkoFz9cQ82MypZP8gqbQJyPN-Fpp4Z-5o6yV64x6yzDUF_5JCIdl-Qv6H5dMVIY7q1eKpXcV1lWO_2FefEBqXxXvIjLeZivjNkzogCq3-IapSjVFnMjBxjpYLT8muaawo1yy1XXMuinIpNcOY3n4KKrXLrCcteX85m4IIHMZa38s1Hpr56fPPseMA-Jltmt-a9iEDtOzhtxz8AXy9tsCAZV2XBWNG8c3kJusAamBKOYwfk7JhLRDgOnJjlJLhn7TI4UxDp9dCmUXEN6z0v23W15qJIEXNJtqnblpymooeWAHCT4e_Owbim1g0AEpTHUdA2iiLNs9WTX_H_TXuPC8yDDhi1smxS_X_xpkIHkiIHWDOLx03BpqDTivpKkBYwqP2UZkcxqX2Fo_GnVrNwlK7Lgxw6FSQvDO0","protected": "eyJhbGciOiJSU0EtT0FFUCIsImN0eSI6IkpXVCIsImVuYyI6IkExMjhHQ00ifQ","iv": "GbX1i9kXz0sxXPmA","ciphertext": "SZI4IvKHmwpazl_pJQXX3mHv1ANnOU4Wf9-utWYUcKrBNgCe2OFMf66cSJ8k2QkxaQD3_R60MGE9ofomwtky3GFxMeGRjtpMt9OAvVLsAXB0_UTCBGyBg3C2bWLXqZlfJAAoJRUPRk-BimYZY81zVBuIhc7HsQePCpu33SzMsFHjn4lP_idrJz_glZTNgKDt8zdnUPauKTKDNOH1DD4fuzvDYfDIAfqGPyL5sVRwbiXpXdGokEszM-9ChMPqW1QNhzuX_Zul3bvrJwr7nuGZs4cUScY3n8yE3AHCLurgls-A9mz1X38xEaulV18l4Fg9tLejdkAuQZjPbqeHQBJe4IwGD5Ee0dQ-Mtz4NnhkIWx-YKBb_Xo2zI3Q_1sYjKUuis7yWW-HTr_vqvFt0bj7WJf2vzB0TZ3dvsoGaTvPH2dyWwumUrlx4gmPUzBdwTO6ubfYSDUEEz5py0d_OtWeUSYcCYBKD-aM7tXg26qJo21gYjLfhn9zy-W19sOCZGuzgFjPhawXHpvnj_t-0_ES96kogjJLxS1IMU9Y5XmnwZMyNc9EIwnogsCg-hVuvzyP0sIruktmI94_SL1xgMl7o03phcTMxtlMizR88NKU1WkBsiXMCjy1Noue7MD-ShDp5dmM","tag": "KnIKEhN8U-3C9s4gtSpjSw"}';
$json = '{"recipients": [{"encrypted_key": "a0JHRoITfpX4qRewImjlStn8m3CPxBV1ueYlVhjurCyrBg3I7YhCRYjphDOOS4E7rXbr2Fn6NyQq-A-gqT0FXqNjVOGrG-bi13mwy7RoYhjTkBEC6P7sMYMXXx4gzMedpiJHQVeyI-zkZV7A9matpgevAJWrXzOUysYGTtwoSN6gtUVtlLaivjvb21O0ul4YxSHV-ByK1kyeetRp_fuYJxHoKLQL9P424sKx2WGYb4zsBIPF4ssl_e5IR7nany-25_UmC2urosNkoFz9cQ82MypZP8gqbQJyPN-Fpp4Z-5o6yV64x6yzDUF_5JCIdl-Qv6H5dMVIY7q1eKpXcV1lWO_2FefEBqXxXvIjLeZivjNkzogCq3-IapSjVFnMjBxjpYLT8muaawo1yy1XXMuinIpNcOY3n4KKrXLrCcteX85m4IIHMZa38s1Hpr56fPPseMA-Jltmt-a9iEDtOzhtxz8AXy9tsCAZV2XBWNG8c3kJusAamBKOYwfk7JhLRDgOnJjlJLhn7TI4UxDp9dCmUXEN6z0v23W15qJIEXNJtqnblpymooeWAHCT4e_Owbim1g0AEpTHUdA2iiLNs9WTX_H_TXuPC8yDDhi1smxS_X_xpkIHkiIHWDOLx03BpqDTivpKkBYwqP2UZkcxqX2Fo_GnVrNwlK7Lgxw6FSQvDO0"}],"protected": "eyJhbGciOiJSU0EtT0FFUCIsImN0eSI6IkpXVCIsImVuYyI6IkExMjhHQ00ifQ","iv": "GbX1i9kXz0sxXPmA","ciphertext": "SZI4IvKHmwpazl_pJQXX3mHv1ANnOU4Wf9-utWYUcKrBNgCe2OFMf66cSJ8k2QkxaQD3_R60MGE9ofomwtky3GFxMeGRjtpMt9OAvVLsAXB0_UTCBGyBg3C2bWLXqZlfJAAoJRUPRk-BimYZY81zVBuIhc7HsQePCpu33SzMsFHjn4lP_idrJz_glZTNgKDt8zdnUPauKTKDNOH1DD4fuzvDYfDIAfqGPyL5sVRwbiXpXdGokEszM-9ChMPqW1QNhzuX_Zul3bvrJwr7nuGZs4cUScY3n8yE3AHCLurgls-A9mz1X38xEaulV18l4Fg9tLejdkAuQZjPbqeHQBJe4IwGD5Ee0dQ-Mtz4NnhkIWx-YKBb_Xo2zI3Q_1sYjKUuis7yWW-HTr_vqvFt0bj7WJf2vzB0TZ3dvsoGaTvPH2dyWwumUrlx4gmPUzBdwTO6ubfYSDUEEz5py0d_OtWeUSYcCYBKD-aM7tXg26qJo21gYjLfhn9zy-W19sOCZGuzgFjPhawXHpvnj_t-0_ES96kogjJLxS1IMU9Y5XmnwZMyNc9EIwnogsCg-hVuvzyP0sIruktmI94_SL1xgMl7o03phcTMxtlMizR88NKU1WkBsiXMCjy1Noue7MD-ShDp5dmM","tag": "KnIKEhN8U-3C9s4gtSpjSw"}';
- $loaded_compact_json = $this->getJWESerializerManager()->unserialize($json_compact);
- $loaded_flattened_json = $this->getJWESerializerManager()->unserialize($json_flattened);
- $loaded_json = $this->getJWESerializerManager()->unserialize($json);
+ $loaded_compact_json = $this->getJWESerializerManager()
+ ->unserialize($json_compact)
+ ;
+ $loaded_flattened_json = $this->getJWESerializerManager()
+ ->unserialize($json_flattened)
+ ;
+ $loaded_json = $this->getJWESerializerManager()
+ ->unserialize($json)
+ ;
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_compact_json, $encryption_key, 0));
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_flattened_json, $encryption_key, 0));
static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $encryption_key, 0));
- static::assertEquals($encryption_header, $loaded_compact_json->getSharedProtectedHeader());
- static::assertEquals($payload, $loaded_compact_json->getPayload());
+ static::assertSame($encryption_header, $loaded_compact_json->getSharedProtectedHeader());
+ static::assertSame($payload, $loaded_compact_json->getPayload());
- static::assertEquals($encryption_header, $loaded_flattened_json->getSharedProtectedHeader());
- static::assertEquals($payload, $loaded_flattened_json->getPayload());
+ static::assertSame($encryption_header, $loaded_flattened_json->getSharedProtectedHeader());
+ static::assertSame($payload, $loaded_flattened_json->getPayload());
- static::assertEquals($encryption_header, $loaded_json->getSharedProtectedHeader());
- static::assertEquals($payload, $loaded_json->getPayload());
+ static::assertSame($encryption_header, $loaded_json->getSharedProtectedHeader());
+ static::assertSame($payload, $loaded_json->getPayload());
}
}
diff --git a/tests/Component/NestedToken/NestingTokenBuilderTest.php b/tests/Component/NestedToken/NestingTokenBuilderTest.php
index b962df6e..a5e82bd7 100644
--- a/tests/Component/NestedToken/NestingTokenBuilderTest.php
+++ b/tests/Component/NestedToken/NestingTokenBuilderTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\NestedToken;
use Jose\Component\Checker\HeaderCheckerManagerFactory;
@@ -18,10 +9,11 @@
use Jose\Component\Core\JWK;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A128GCM;
use Jose\Component\Encryption\Algorithm\KeyEncryption\RSAOAEP;
-use Jose\Component\Encryption\Compression;
use Jose\Component\Encryption\Compression\CompressionMethodManagerFactory;
+use Jose\Component\Encryption\Compression\Deflate;
use Jose\Component\Encryption\JWEBuilderFactory;
use Jose\Component\Encryption\Serializer as JweSerializer;
+use Jose\Component\Encryption\Serializer\JWESerializerManagerFactory;
use Jose\Component\NestedToken\NestedTokenBuilderFactory;
use Jose\Component\Signature\Algorithm\PS256;
use Jose\Component\Signature\JWSBuilder;
@@ -32,49 +24,28 @@
/**
* @see https://tools.ietf.org/html/rfc7520#section-6
*
- * @group RFC7520
- * @group NestedToken
- *
* @internal
*/
-class NestingTokenBuilderTest extends TestCase
+final class NestingTokenBuilderTest extends TestCase
{
- /**
- * @var JWSBuilderFactory
- */
- private $jwsBuilderFactory;
+ private ?JWSBuilderFactory $jwsBuilderFactory = null;
- /**
- * @var JWEBuilderFactory
- */
- private $jweBuilderFactory;
+ private ?JWEBuilderFactory $jweBuilderFactory = null;
- /**
- * @var NestedTokenBuilderFactory
- */
- private $nestedTokenBuilderFactory;
+ private ?NestedTokenBuilderFactory $nestedTokenBuilderFactory = null;
- /**
- * @var AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
+ private ?AlgorithmManagerFactory $algorithmManagerFactory = null;
- /**
- * @var CompressionMethodManagerFactory
- */
- private $compressionMethodManagerFactory;
+ private ?CompressionMethodManagerFactory $compressionMethodManagerFactory = null;
- /**
- * @var null|JweSerializer\JWESerializerManagerFactory
- */
- private $jwsSerializerManagerFactory;
+ private ?JWESerializerManagerFactory $jwsSerializerManagerFactory = null;
protected function setUp(): void
{
- if (!class_exists(HeaderCheckerManagerFactory::class)) {
+ if (! class_exists(HeaderCheckerManagerFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-checker" is not installed.');
}
- if (!class_exists(JWSBuilder::class)) {
+ if (! class_exists(JWSBuilder::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
}
@@ -115,25 +86,30 @@ public function decryption(): void
'qi' => 'S8tC7ZknW6hPITkjcwttQOPLVmRfwirRlFAViuDb8NW9CrV_7F2OqUZCqmzHTYAumwGFHI1WVRep7anleWaJjxC_1b3fq_al4qH3Pe-EKiHg6IMazuRtZLUROcThrExDbF5dYbsciDnfRUWLErZ4N1Be0bnxYuPqxwKd9QZwMo0',
]);
- $nestedTokenBuilder = $this->getNestedTokenBuilderFactory()->create(
- ['jwe_compact'],
- ['RSA-OAEP'],
- ['A128GCM'],
- ['DEF'],
- ['jws_compact'],
- ['PS256']
- );
+ $nestedTokenBuilder = $this->getNestedTokenBuilderFactory()
+ ->create(['jwe_compact'], ['RSA-OAEP'], ['A128GCM'], ['DEF'], ['jws_compact'], ['PS256'])
+ ;
$nestedTokenBuilder->create(
$payload,
[
- ['key' => $signature_key, 'protected_header' => ['alg' => 'PS256']],
+ [
+ 'key' => $signature_key,
+ 'protected_header' => [
+ 'alg' => 'PS256',
+ ],
+ ],
],
'jws_compact',
- ['alg' => 'RSA-OAEP', 'enc' => 'A128GCM'],
+ [
+ 'alg' => 'RSA-OAEP',
+ 'enc' => 'A128GCM',
+ ],
[],
[
- ['key' => $encryption_key],
+ [
+ 'key' => $encryption_key,
+ ],
],
'jwe_compact'
);
@@ -141,10 +117,8 @@ public function decryption(): void
protected function getJWSBuilderFactory(): JWSBuilderFactory
{
- if (null === $this->jwsBuilderFactory) {
- $this->jwsBuilderFactory = new JWSBuilderFactory(
- $this->getAlgorithmManagerFactory()
- );
+ if ($this->jwsBuilderFactory === null) {
+ $this->jwsBuilderFactory = new JWSBuilderFactory($this->getAlgorithmManagerFactory());
}
return $this->jwsBuilderFactory;
@@ -152,7 +126,7 @@ protected function getJWSBuilderFactory(): JWSBuilderFactory
protected function getJWEBuilderFactory(): JWEBuilderFactory
{
- if (null === $this->jweBuilderFactory) {
+ if ($this->jweBuilderFactory === null) {
$this->jweBuilderFactory = new JWEBuilderFactory(
$this->getAlgorithmManagerFactory(),
$this->getCompressionMethodManagerFactory()
@@ -164,7 +138,7 @@ protected function getJWEBuilderFactory(): JWEBuilderFactory
private function getNestedTokenBuilderFactory(): NestedTokenBuilderFactory
{
- if (null === $this->nestedTokenBuilderFactory) {
+ if ($this->nestedTokenBuilderFactory === null) {
$this->nestedTokenBuilderFactory = new NestedTokenBuilderFactory(
$this->getJWEBuilderFactory(),
$this->getJWESerializerManagerFactory(),
@@ -188,7 +162,7 @@ private function getJWSSerializerManagerFactory(): JwsSerializer\JWSSerializerMa
private function getAlgorithmManagerFactory(): AlgorithmManagerFactory
{
- if (null === $this->algorithmManagerFactory) {
+ if ($this->algorithmManagerFactory === null) {
$this->algorithmManagerFactory = new AlgorithmManagerFactory();
$this->algorithmManagerFactory->add('A128GCM', new A128GCM());
$this->algorithmManagerFactory->add('RSA-OAEP', new RSAOAEP());
@@ -200,9 +174,9 @@ private function getAlgorithmManagerFactory(): AlgorithmManagerFactory
private function getCompressionMethodManagerFactory(): CompressionMethodManagerFactory
{
- if (null === $this->compressionMethodManagerFactory) {
+ if ($this->compressionMethodManagerFactory === null) {
$this->compressionMethodManagerFactory = new CompressionMethodManagerFactory();
- $this->compressionMethodManagerFactory->add('DEF', new Compression\Deflate());
+ $this->compressionMethodManagerFactory->add('DEF', new Deflate());
}
return $this->compressionMethodManagerFactory;
@@ -210,7 +184,7 @@ private function getCompressionMethodManagerFactory(): CompressionMethodManagerF
private function getJWESerializerManagerFactory(): JweSerializer\JWESerializerManagerFactory
{
- if (null === $this->jwsSerializerManagerFactory) {
+ if ($this->jwsSerializerManagerFactory === null) {
$this->jwsSerializerManagerFactory = new JweSerializer\JWESerializerManagerFactory();
$this->jwsSerializerManagerFactory->add(new JweSerializer\CompactSerializer());
$this->jwsSerializerManagerFactory->add(new JweSerializer\JSONFlattenedSerializer());
diff --git a/tests/Component/NestedToken/NestingTokenUsingNestedTokenLoaderTest.php b/tests/Component/NestedToken/NestingTokenUsingNestedTokenLoaderTest.php
index 0d20d2fa..df462b88 100644
--- a/tests/Component/NestedToken/NestingTokenUsingNestedTokenLoaderTest.php
+++ b/tests/Component/NestedToken/NestingTokenUsingNestedTokenLoaderTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\NestedToken;
use Jose\Component\Checker\HeaderCheckerManagerFactory;
@@ -19,12 +10,13 @@
use Jose\Component\Core\JWKSet;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A128GCM;
use Jose\Component\Encryption\Algorithm\KeyEncryption\RSAOAEP;
-use Jose\Component\Encryption\Compression;
use Jose\Component\Encryption\Compression\CompressionMethodManagerFactory;
+use Jose\Component\Encryption\Compression\Deflate;
use Jose\Component\Encryption\JWEDecrypterFactory;
use Jose\Component\Encryption\JWELoaderFactory;
use Jose\Component\Encryption\JWETokenSupport;
use Jose\Component\Encryption\Serializer as JweSerializer;
+use Jose\Component\Encryption\Serializer\JWESerializerManagerFactory;
use Jose\Component\NestedToken\NestedTokenLoaderFactory;
use Jose\Component\Signature\Algorithm\PS256;
use Jose\Component\Signature\JWSLoader;
@@ -37,54 +29,30 @@
/**
* @see https://tools.ietf.org/html/rfc7520#section-6
*
- * @group RFC7520
- * @group NestedToken
- *
* @internal
*/
-class NestingTokenUsingNestedTokenLoaderTest extends TestCase
+final class NestingTokenUsingNestedTokenLoaderTest extends TestCase
{
- /**
- * @var JWSLoaderFactory
- */
- private $jwsLoaderFactory;
+ private ?JWSLoaderFactory $jwsLoaderFactory = null;
- /**
- * @var JWELoaderFactory
- */
- private $jweLoaderFactory;
+ private ?JWELoaderFactory $jweLoaderFactory = null;
- /**
- * @var NestedTokenLoaderFactory
- */
- private $nestedTokenLoaderFactory;
+ private ?NestedTokenLoaderFactory $nestedTokenLoaderFactory = null;
- /**
- * @var AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
+ private ?AlgorithmManagerFactory $algorithmManagerFactory = null;
- /**
- * @var CompressionMethodManagerFactory
- */
- private $compressionMethodManagerFactory;
+ private ?CompressionMethodManagerFactory $compressionMethodManagerFactory = null;
- /**
- * @var JWEDecrypterFactory
- */
- private $jweDecrypterFactory;
+ private ?JWEDecrypterFactory $jweDecrypterFactory = null;
- /**
- * @var null|JweSerializer\JWESerializerManagerFactory
- */
- private $jwsSerializerManagerFactory;
+ private ?JWESerializerManagerFactory $jwsSerializerManagerFactory = null;
protected function setUp(): void
{
- if (!class_exists(HeaderCheckerManagerFactory::class)) {
+ if (! class_exists(HeaderCheckerManagerFactory::class)) {
static::markTestSkipped('The component "web-token/jwt-checker" is not installed.');
}
- if (!class_exists(JWSLoader::class)) {
+ if (! class_exists(JWSLoader::class)) {
static::markTestSkipped('The component "web-token/jwt-signature" is not installed.');
}
}
@@ -112,16 +80,18 @@ public function decryption(): void
]);
$encryption_key_set = new JWKSet([$encryption_key]);
- $nestedTokenLoader = $this->getNestedTokenLoaderFactory()->create(
- ['jwe_compact', 'jwe_json_flattened', 'jwe_json_general'],
- ['RSA-OAEP'],
- ['A128GCM'],
- ['DEF'],
- [],
- ['jws_compact', 'jws_json_flattened', 'jws_json_general'],
- ['PS256'],
- []
- );
+ $nestedTokenLoader = $this->getNestedTokenLoaderFactory()
+ ->create(
+ ['jwe_compact', 'jwe_json_flattened', 'jwe_json_general'],
+ ['RSA-OAEP'],
+ ['A128GCM'],
+ ['DEF'],
+ [],
+ ['jws_compact', 'jws_json_flattened', 'jws_json_general'],
+ ['PS256'],
+ []
+ )
+ ;
$signature_key = new JWK([
'kty' => 'RSA',
@@ -136,30 +106,43 @@ public function decryption(): void
'dq' => 'R9FUvU88OVzEkTkXl3-5-WusE4DjHmndeZIlu3rifBdfLpq_P-iWPBbGaq9wzQ1c-J7SzCdJqkEJDv5yd2C7rnZ6kpzwBh_nmL8zscAk1qsunnt9CJGAYz7-sGWy1JGShFazfP52ThB4rlCJ0YuEaQMrIzpY77_oLAhpmDA0hLk',
'qi' => 'S8tC7ZknW6hPITkjcwttQOPLVmRfwirRlFAViuDb8NW9CrV_7F2OqUZCqmzHTYAumwGFHI1WVRep7anleWaJjxC_1b3fq_al4qH3Pe-EKiHg6IMazuRtZLUROcThrExDbF5dYbsciDnfRUWLErZ4N1Be0bnxYuPqxwKd9QZwMo0',
]);
- $signature_key_set = new JWKSet([
- $signature_key,
- ]);
+ $signature_key_set = new JWKSet([$signature_key]);
$json_compact = 'eyJhbGciOiJSU0EtT0FFUCIsImN0eSI6IkpXVCIsImVuYyI6IkExMjhHQ00ifQ.a0JHRoITfpX4qRewImjlStn8m3CPxBV1ueYlVhjurCyrBg3I7YhCRYjphDOOS4E7rXbr2Fn6NyQq-A-gqT0FXqNjVOGrG-bi13mwy7RoYhjTkBEC6P7sMYMXXx4gzMedpiJHQVeyI-zkZV7A9matpgevAJWrXzOUysYGTtwoSN6gtUVtlLaivjvb21O0ul4YxSHV-ByK1kyeetRp_fuYJxHoKLQL9P424sKx2WGYb4zsBIPF4ssl_e5IR7nany-25_UmC2urosNkoFz9cQ82MypZP8gqbQJyPN-Fpp4Z-5o6yV64x6yzDUF_5JCIdl-Qv6H5dMVIY7q1eKpXcV1lWO_2FefEBqXxXvIjLeZivjNkzogCq3-IapSjVFnMjBxjpYLT8muaawo1yy1XXMuinIpNcOY3n4KKrXLrCcteX85m4IIHMZa38s1Hpr56fPPseMA-Jltmt-a9iEDtOzhtxz8AXy9tsCAZV2XBWNG8c3kJusAamBKOYwfk7JhLRDgOnJjlJLhn7TI4UxDp9dCmUXEN6z0v23W15qJIEXNJtqnblpymooeWAHCT4e_Owbim1g0AEpTHUdA2iiLNs9WTX_H_TXuPC8yDDhi1smxS_X_xpkIHkiIHWDOLx03BpqDTivpKkBYwqP2UZkcxqX2Fo_GnVrNwlK7Lgxw6FSQvDO0.GbX1i9kXz0sxXPmA.SZI4IvKHmwpazl_pJQXX3mHv1ANnOU4Wf9-utWYUcKrBNgCe2OFMf66cSJ8k2QkxaQD3_R60MGE9ofomwtky3GFxMeGRjtpMt9OAvVLsAXB0_UTCBGyBg3C2bWLXqZlfJAAoJRUPRk-BimYZY81zVBuIhc7HsQePCpu33SzMsFHjn4lP_idrJz_glZTNgKDt8zdnUPauKTKDNOH1DD4fuzvDYfDIAfqGPyL5sVRwbiXpXdGokEszM-9ChMPqW1QNhzuX_Zul3bvrJwr7nuGZs4cUScY3n8yE3AHCLurgls-A9mz1X38xEaulV18l4Fg9tLejdkAuQZjPbqeHQBJe4IwGD5Ee0dQ-Mtz4NnhkIWx-YKBb_Xo2zI3Q_1sYjKUuis7yWW-HTr_vqvFt0bj7WJf2vzB0TZ3dvsoGaTvPH2dyWwumUrlx4gmPUzBdwTO6ubfYSDUEEz5py0d_OtWeUSYcCYBKD-aM7tXg26qJo21gYjLfhn9zy-W19sOCZGuzgFjPhawXHpvnj_t-0_ES96kogjJLxS1IMU9Y5XmnwZMyNc9EIwnogsCg-hVuvzyP0sIruktmI94_SL1xgMl7o03phcTMxtlMizR88NKU1WkBsiXMCjy1Noue7MD-ShDp5dmM.KnIKEhN8U-3C9s4gtSpjSw';
$json_flattened = '{"encrypted_key": "a0JHRoITfpX4qRewImjlStn8m3CPxBV1ueYlVhjurCyrBg3I7YhCRYjphDOOS4E7rXbr2Fn6NyQq-A-gqT0FXqNjVOGrG-bi13mwy7RoYhjTkBEC6P7sMYMXXx4gzMedpiJHQVeyI-zkZV7A9matpgevAJWrXzOUysYGTtwoSN6gtUVtlLaivjvb21O0ul4YxSHV-ByK1kyeetRp_fuYJxHoKLQL9P424sKx2WGYb4zsBIPF4ssl_e5IR7nany-25_UmC2urosNkoFz9cQ82MypZP8gqbQJyPN-Fpp4Z-5o6yV64x6yzDUF_5JCIdl-Qv6H5dMVIY7q1eKpXcV1lWO_2FefEBqXxXvIjLeZivjNkzogCq3-IapSjVFnMjBxjpYLT8muaawo1yy1XXMuinIpNcOY3n4KKrXLrCcteX85m4IIHMZa38s1Hpr56fPPseMA-Jltmt-a9iEDtOzhtxz8AXy9tsCAZV2XBWNG8c3kJusAamBKOYwfk7JhLRDgOnJjlJLhn7TI4UxDp9dCmUXEN6z0v23W15qJIEXNJtqnblpymooeWAHCT4e_Owbim1g0AEpTHUdA2iiLNs9WTX_H_TXuPC8yDDhi1smxS_X_xpkIHkiIHWDOLx03BpqDTivpKkBYwqP2UZkcxqX2Fo_GnVrNwlK7Lgxw6FSQvDO0","protected": "eyJhbGciOiJSU0EtT0FFUCIsImN0eSI6IkpXVCIsImVuYyI6IkExMjhHQ00ifQ","iv": "GbX1i9kXz0sxXPmA","ciphertext": "SZI4IvKHmwpazl_pJQXX3mHv1ANnOU4Wf9-utWYUcKrBNgCe2OFMf66cSJ8k2QkxaQD3_R60MGE9ofomwtky3GFxMeGRjtpMt9OAvVLsAXB0_UTCBGyBg3C2bWLXqZlfJAAoJRUPRk-BimYZY81zVBuIhc7HsQePCpu33SzMsFHjn4lP_idrJz_glZTNgKDt8zdnUPauKTKDNOH1DD4fuzvDYfDIAfqGPyL5sVRwbiXpXdGokEszM-9ChMPqW1QNhzuX_Zul3bvrJwr7nuGZs4cUScY3n8yE3AHCLurgls-A9mz1X38xEaulV18l4Fg9tLejdkAuQZjPbqeHQBJe4IwGD5Ee0dQ-Mtz4NnhkIWx-YKBb_Xo2zI3Q_1sYjKUuis7yWW-HTr_vqvFt0bj7WJf2vzB0TZ3dvsoGaTvPH2dyWwumUrlx4gmPUzBdwTO6ubfYSDUEEz5py0d_OtWeUSYcCYBKD-aM7tXg26qJo21gYjLfhn9zy-W19sOCZGuzgFjPhawXHpvnj_t-0_ES96kogjJLxS1IMU9Y5XmnwZMyNc9EIwnogsCg-hVuvzyP0sIruktmI94_SL1xgMl7o03phcTMxtlMizR88NKU1WkBsiXMCjy1Noue7MD-ShDp5dmM","tag": "KnIKEhN8U-3C9s4gtSpjSw"}';
$json_general = '{"recipients": [{"encrypted_key": "a0JHRoITfpX4qRewImjlStn8m3CPxBV1ueYlVhjurCyrBg3I7YhCRYjphDOOS4E7rXbr2Fn6NyQq-A-gqT0FXqNjVOGrG-bi13mwy7RoYhjTkBEC6P7sMYMXXx4gzMedpiJHQVeyI-zkZV7A9matpgevAJWrXzOUysYGTtwoSN6gtUVtlLaivjvb21O0ul4YxSHV-ByK1kyeetRp_fuYJxHoKLQL9P424sKx2WGYb4zsBIPF4ssl_e5IR7nany-25_UmC2urosNkoFz9cQ82MypZP8gqbQJyPN-Fpp4Z-5o6yV64x6yzDUF_5JCIdl-Qv6H5dMVIY7q1eKpXcV1lWO_2FefEBqXxXvIjLeZivjNkzogCq3-IapSjVFnMjBxjpYLT8muaawo1yy1XXMuinIpNcOY3n4KKrXLrCcteX85m4IIHMZa38s1Hpr56fPPseMA-Jltmt-a9iEDtOzhtxz8AXy9tsCAZV2XBWNG8c3kJusAamBKOYwfk7JhLRDgOnJjlJLhn7TI4UxDp9dCmUXEN6z0v23W15qJIEXNJtqnblpymooeWAHCT4e_Owbim1g0AEpTHUdA2iiLNs9WTX_H_TXuPC8yDDhi1smxS_X_xpkIHkiIHWDOLx03BpqDTivpKkBYwqP2UZkcxqX2Fo_GnVrNwlK7Lgxw6FSQvDO0"}],"protected": "eyJhbGciOiJSU0EtT0FFUCIsImN0eSI6IkpXVCIsImVuYyI6IkExMjhHQ00ifQ","iv": "GbX1i9kXz0sxXPmA","ciphertext": "SZI4IvKHmwpazl_pJQXX3mHv1ANnOU4Wf9-utWYUcKrBNgCe2OFMf66cSJ8k2QkxaQD3_R60MGE9ofomwtky3GFxMeGRjtpMt9OAvVLsAXB0_UTCBGyBg3C2bWLXqZlfJAAoJRUPRk-BimYZY81zVBuIhc7HsQePCpu33SzMsFHjn4lP_idrJz_glZTNgKDt8zdnUPauKTKDNOH1DD4fuzvDYfDIAfqGPyL5sVRwbiXpXdGokEszM-9ChMPqW1QNhzuX_Zul3bvrJwr7nuGZs4cUScY3n8yE3AHCLurgls-A9mz1X38xEaulV18l4Fg9tLejdkAuQZjPbqeHQBJe4IwGD5Ee0dQ-Mtz4NnhkIWx-YKBb_Xo2zI3Q_1sYjKUuis7yWW-HTr_vqvFt0bj7WJf2vzB0TZ3dvsoGaTvPH2dyWwumUrlx4gmPUzBdwTO6ubfYSDUEEz5py0d_OtWeUSYcCYBKD-aM7tXg26qJo21gYjLfhn9zy-W19sOCZGuzgFjPhawXHpvnj_t-0_ES96kogjJLxS1IMU9Y5XmnwZMyNc9EIwnogsCg-hVuvzyP0sIruktmI94_SL1xgMl7o03phcTMxtlMizR88NKU1WkBsiXMCjy1Noue7MD-ShDp5dmM","tag": "KnIKEhN8U-3C9s4gtSpjSw"}';
- $loaded_compact_json = $nestedTokenLoader->load($json_compact, $encryption_key_set, $signature_key_set, $json_compact_signature);
- static::assertEquals($payload, $loaded_compact_json->getPayload());
- static::assertEquals(0, $json_compact_signature);
-
- $loaded_flattened_json = $nestedTokenLoader->load($json_flattened, $encryption_key_set, $signature_key_set, $json_flattened_signature);
- static::assertEquals($payload, $loaded_flattened_json->getPayload());
- static::assertEquals(0, $json_flattened_signature);
-
- $loaded_json = $nestedTokenLoader->load($json_general, $encryption_key_set, $signature_key_set, $json_general_signature);
- static::assertEquals($payload, $loaded_json->getPayload());
- static::assertEquals(0, $json_general_signature);
+ $loaded_compact_json = $nestedTokenLoader->load(
+ $json_compact,
+ $encryption_key_set,
+ $signature_key_set,
+ $json_compact_signature
+ );
+ static::assertSame($payload, $loaded_compact_json->getPayload());
+ static::assertSame(0, $json_compact_signature);
+
+ $loaded_flattened_json = $nestedTokenLoader->load(
+ $json_flattened,
+ $encryption_key_set,
+ $signature_key_set,
+ $json_flattened_signature
+ );
+ static::assertSame($payload, $loaded_flattened_json->getPayload());
+ static::assertSame(0, $json_flattened_signature);
+
+ $loaded_json = $nestedTokenLoader->load(
+ $json_general,
+ $encryption_key_set,
+ $signature_key_set,
+ $json_general_signature
+ );
+ static::assertSame($payload, $loaded_json->getPayload());
+ static::assertSame(0, $json_general_signature);
}
protected function getJWSLoaderFactory(): JWSLoaderFactory
{
- if (null === $this->jwsLoaderFactory) {
+ if ($this->jwsLoaderFactory === null) {
$this->jwsLoaderFactory = new JWSLoaderFactory(
$this->getJWSSerializerManagerFactory(),
$this->getJWSVerifierFactory(),
@@ -172,7 +155,7 @@ protected function getJWSLoaderFactory(): JWSLoaderFactory
protected function getJWELoaderFactory(): JWELoaderFactory
{
- if (null === $this->jweLoaderFactory) {
+ if ($this->jweLoaderFactory === null) {
$this->jweLoaderFactory = new JWELoaderFactory(
$this->getJWESerializerManagerFactory(),
$this->getJWEDecrypterFactory(),
@@ -185,7 +168,7 @@ protected function getJWELoaderFactory(): JWELoaderFactory
private function getNestedTokenLoaderFactory(): NestedTokenLoaderFactory
{
- if (null === $this->nestedTokenLoaderFactory) {
+ if ($this->nestedTokenLoaderFactory === null) {
$this->nestedTokenLoaderFactory = new NestedTokenLoaderFactory(
$this->getJWELoaderFactory(),
$this->getJWSLoaderFactory()
@@ -216,14 +199,12 @@ private function getJWSSerializerManagerFactory(): JwsSerializer\JWSSerializerMa
private function getJWSVerifierFactory(): JWSVerifierFactory
{
- return new JWSVerifierFactory(
- $this->getAlgorithmManagerFactory()
- );
+ return new JWSVerifierFactory($this->getAlgorithmManagerFactory());
}
private function getAlgorithmManagerFactory(): AlgorithmManagerFactory
{
- if (null === $this->algorithmManagerFactory) {
+ if ($this->algorithmManagerFactory === null) {
$this->algorithmManagerFactory = new AlgorithmManagerFactory();
$this->algorithmManagerFactory->add('A128GCM', new A128GCM());
$this->algorithmManagerFactory->add('RSA-OAEP', new RSAOAEP());
@@ -235,9 +216,9 @@ private function getAlgorithmManagerFactory(): AlgorithmManagerFactory
private function getCompressionMethodManagerFactory(): CompressionMethodManagerFactory
{
- if (null === $this->compressionMethodManagerFactory) {
+ if ($this->compressionMethodManagerFactory === null) {
$this->compressionMethodManagerFactory = new CompressionMethodManagerFactory();
- $this->compressionMethodManagerFactory->add('DEF', new Compression\Deflate());
+ $this->compressionMethodManagerFactory->add('DEF', new Deflate());
}
return $this->compressionMethodManagerFactory;
@@ -245,7 +226,7 @@ private function getCompressionMethodManagerFactory(): CompressionMethodManagerF
private function getJWEDecrypterFactory(): JWEDecrypterFactory
{
- if (null === $this->jweDecrypterFactory) {
+ if ($this->jweDecrypterFactory === null) {
$this->jweDecrypterFactory = new JWEDecrypterFactory(
$this->getAlgorithmManagerFactory(),
$this->getCompressionMethodManagerFactory()
@@ -257,7 +238,7 @@ private function getJWEDecrypterFactory(): JWEDecrypterFactory
private function getJWESerializerManagerFactory(): JweSerializer\JWESerializerManagerFactory
{
- if (null === $this->jwsSerializerManagerFactory) {
+ if ($this->jwsSerializerManagerFactory === null) {
$this->jwsSerializerManagerFactory = new JweSerializer\JWESerializerManagerFactory();
$this->jwsSerializerManagerFactory->add(new JweSerializer\CompactSerializer());
$this->jwsSerializerManagerFactory->add(new JweSerializer\JSONFlattenedSerializer());
diff --git a/tests/Component/Signature/ForeignJWTTest.php b/tests/Component/Signature/ForeignJWTTest.php
index 5bd753df..dcc92389 100644
--- a/tests/Component/Signature/ForeignJWTTest.php
+++ b/tests/Component/Signature/ForeignJWTTest.php
@@ -2,26 +2,14 @@
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\Tests\Component\Signature;
use Jose\Component\Core\JWK;
/**
- * @group ForeignJWT
- * @group functional
- *
* @internal
*/
-class ForeignJWTTest extends SignatureTest
+final class ForeignJWTTest extends SignatureTest
{
/*
* The following test uses an assertion created with another library.
@@ -42,8 +30,12 @@ public function validJWTFromOtherLibrary(): void
$challenge = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJmNTIyMjI3OS1kNTQ0LTRjM2QtYWM3Yy1mYzU0NzE1ZDBjMjYiLCJleHAiOjE0Njk2NDkyMDksImp0aSI6IjZhZjExNDk3LTdkNmItNDQ5Ny04NDI1LTc0YmExM2E1ODMxYyIsInJlZGlyIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NDQ0NC9vYXV0aDIvYXV0aD9jbGllbnRfaWQ9ZjUyMjIyNzktZDU0NC00YzNkLWFjN2MtZmM1NDcxNWQwYzI2XHUwMDI2cmVzcG9uc2VfdHlwZT1jb2RlXHUwMDI2c2NvcGU9Y29yZStmb29cdTAwMjZzdGF0ZT1hYmNkZWZnaFx1MDAyNnJlZGlyZWN0X3VyaT1odHRwOi8vbG9jYWxob3N0L2NiIiwic2NwIjpbImNvcmUiLCJmb28iXX0.U3fu5eJVDD5tpOa9O3SejMh78skCj6a3rv5qWqzmME2WF0R9QnTR6TS5g6OOCh86o03AlHi2LhE4GSoUmC8WMPzXopDSdZdEkuifYUOSjRQV3Mp5tn6ozkkB75TtIhM8x5_QV3YKgTy3bcojg-Nx3ix43ENGdnbaCZ6Sxqj4xDknh7pHtsUiHfHZL7jd0I0xP5TYOw0_rxhuK9UZKtt_o05sFnNr0PW1k5d6aU5qJoBNVAendr_evrzXIV0yCC_odj5KySsNaQiXjUX_Tri2_5gSgcr8t3GMRm-HjDJRttwD3vgQG_K3vuToB-JAtHNMDcqmPjLzEFFkRDeh55kHgPJlYzSdwWD52b9sX5fj-VrRLdQzO2VVVkP7a9GoCGS06ypV9R_yGK8HzKJ8uB12dTNmplo03v4vdWxVdsnWxmBJ0m7G7yBCr-iGi87ezowpkMw22rNBkqnaEZIVbmX5E-G3UncE6io3IizEGH4YcGxWSk_D2fCII6X9uncf2rwslhEMiGC6rwlrL8dgl3kJTB4d0s2wIKgWJwEfLkiamJ2CJp6x0tqG7ozWv3k1tNQaZ9OwaulZ7nbmHgalyIOI2k-emMhFZsdnAtCxtcrxleevoiYF-Q54h1BhYInQT6Ejx7CdKOTEjljttB7lcqqpboSblw8Ji7lxUiKHWyGhcPI';
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['RS256']);
- $jwt = $this->getJWSSerializerManager()->unserialize($challenge);
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['RS256'])
+ ;
+ $jwt = $this->getJWSSerializerManager()
+ ->unserialize($challenge)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($jwt, $jwk, 0));
$expectedHeader = [
@@ -51,6 +43,6 @@ public function validJWTFromOtherLibrary(): void
'typ' => 'JWT',
];
- static::assertEquals($expectedHeader, $jwt->getSignature(0)->getProtectedHeader());
+ static::assertSame($expectedHeader, $jwt->getSignature(0)->getProtectedHeader());
}
}
diff --git a/tests/Component/Signature/JWSFlattenedTest.php b/tests/Component/Signature/JWSFlattenedTest.php
index 8054595b..719f28c0 100644
--- a/tests/Component/Signature/JWSFlattenedTest.php
+++ b/tests/Component/Signature/JWSFlattenedTest.php
@@ -2,23 +2,12 @@
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\Tests\Component\Signature;
/**
- * @group functional
- *
* @internal
*/
-class JWSFlattenedTest extends SignatureTest
+final class JWSFlattenedTest extends SignatureTest
{
/**
* @see https://tools.ietf.org/html/rfc7516#appendix-A.5
@@ -27,9 +16,17 @@ class JWSFlattenedTest extends SignatureTest
*/
public function loadFlattenedJWS(): void
{
- $loaded = $this->getJWSSerializerManager()->unserialize('{"payload":"eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ","protected":"eyJhbGciOiJFUzI1NiJ9","header":{"kid":"e9bc097a-ce51-4036-9562-d2ade882db0d"},"signature":"DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q"}');
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize(
+ '{"payload":"eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ","protected":"eyJhbGciOiJFUzI1NiJ9","header":{"kid":"e9bc097a-ce51-4036-9562-d2ade882db0d"},"signature":"DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q"}'
+ )
+ ;
- static::assertEquals('ES256', $loaded->getSignature(0)->getProtectedHeaderParameter('alg'));
- static::assertEquals(['iss' => 'joe', 'exp' => 1300819380, 'http://example.com/is_root' => true], json_decode($loaded->getPayload(), true));
+ static::assertSame('ES256', $loaded->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame([
+ 'iss' => 'joe',
+ 'exp' => 1300819380,
+ 'http://example.com/is_root' => true,
+ ], json_decode($loaded->getPayload(), true));
}
}
diff --git a/tests/Component/Signature/JWSLoaderTest.php b/tests/Component/Signature/JWSLoaderTest.php
index 4b2bc562..f130ca1c 100644
--- a/tests/Component/Signature/JWSLoaderTest.php
+++ b/tests/Component/Signature/JWSLoaderTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Signature;
use Exception;
@@ -18,17 +9,11 @@
use Jose\Component\Signature\JWSLoader;
/**
- * @group JWSLoader
- * @group unit
- *
* @internal
*/
-class JWSLoaderTest extends SignatureTest
+final class JWSLoaderTest extends SignatureTest
{
- /**
- * @var null|JWSLoader
- */
- private $jwsLoader;
+ private ?JWSLoader $jwsLoader = null;
/**
* @test
@@ -47,7 +32,9 @@ public function theFlattenedTokenCannotBeLoaded(): void
'e' => 'AQAB',
]);
- $this->getJWSLoader()->loadAndVerifyWithKey($token, $key, $signature);
+ $this->getJWSLoader()
+ ->loadAndVerifyWithKey($token, $key, $signature)
+ ;
}
/**
@@ -67,7 +54,9 @@ public function theTokenCannotBeVerifiedBecauseOfAnUnsupportedAlgorithm(): void
'e' => 'AQAB',
]);
- $this->getJWSLoader()->loadAndVerifyWithKey($token, $key, $signature);
+ $this->getJWSLoader()
+ ->loadAndVerifyWithKey($token, $key, $signature)
+ ;
}
/**
@@ -87,7 +76,9 @@ public function theTokenCannotBeVerifiedBecauseOfABadKey(): void
'e' => 'AQAB',
]);
- $this->getJWSLoader()->loadAndVerifyWithKey($token, $key, $signature);
+ $this->getJWSLoader()
+ ->loadAndVerifyWithKey($token, $key, $signature)
+ ;
}
/**
@@ -104,15 +95,22 @@ public function theTokenCanBeVerified(): void
'k' => 'hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg',
]);
- $jws = $this->getJWSLoader()->loadAndVerifyWithKey($token, $key, $signature);
- static::assertEquals("It\xe2\x80\x99s a dangerous business, Frodo, going out your door. You step onto the road, and if you don't keep your feet, there\xe2\x80\x99s no knowing where you might be swept off to.", $jws->getPayload());
- static::assertEquals(0, $signature);
+ $jws = $this->getJWSLoader()
+ ->loadAndVerifyWithKey($token, $key, $signature)
+ ;
+ static::assertSame(
+ "It\xe2\x80\x99s a dangerous business, Frodo, going out your door. You step onto the road, and if you don't keep your feet, there\xe2\x80\x99s no knowing where you might be swept off to.",
+ $jws->getPayload()
+ );
+ static::assertSame(0, $signature);
}
private function getJWSLoader(): JWSLoader
{
- if (null === $this->jwsLoader) {
- $this->jwsLoader = $this->getJWSLoaderFactory()->create(['jws_compact'], ['HS256']);
+ if ($this->jwsLoader === null) {
+ $this->jwsLoader = $this->getJWSLoaderFactory()
+ ->create(['jws_compact'], ['HS256'])
+ ;
}
return $this->jwsLoader;
diff --git a/tests/Component/Signature/JWSSplitTest.php b/tests/Component/Signature/JWSSplitTest.php
index 84e45948..a5be277c 100644
--- a/tests/Component/Signature/JWSSplitTest.php
+++ b/tests/Component/Signature/JWSSplitTest.php
@@ -2,27 +2,15 @@
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\Tests\Component\Signature;
use function count;
-use Jose\Component\Signature\JWS;
use Jose\Component\Signature\Serializer\JSONGeneralSerializer;
/**
- * @group JWS
- *
* @internal
*/
-class JWSSplitTest extends SignatureTest
+final class JWSSplitTest extends SignatureTest
{
/**
* @test
@@ -34,22 +22,22 @@ public function aJwsObjectWithMoreThanOneRecipientCanBeSplittedIntoSeveralJwsObj
$jws = $serializer->unserialize($input);
$split = $jws->split();
- static::assertEquals(3, $jws->countSignatures());
- static::assertEquals(3, count($jws->split()));
+ static::assertSame(3, $jws->countSignatures());
+ static::assertSame(3, count($jws->split()));
for ($i = 0; $i < $jws->countSignatures(); ++$i) {
$signature1 = $jws->getSignature($i);
$tempJws = $split[$i];
- static::assertEquals(1, $tempJws->countSignatures());
- static::assertEquals($jws->isPayloadDetached(), $tempJws->isPayloadDetached());
- static::assertEquals($jws->getEncodedPayload(), $tempJws->getEncodedPayload());
- static::assertEquals($jws->getPayload(), $tempJws->getPayload());
+ static::assertSame(1, $tempJws->countSignatures());
+ static::assertSame($jws->isPayloadDetached(), $tempJws->isPayloadDetached());
+ static::assertSame($jws->getEncodedPayload(), $tempJws->getEncodedPayload());
+ static::assertSame($jws->getPayload(), $tempJws->getPayload());
$signature2 = $tempJws->getSignature(0);
- static::assertEquals($signature1->getSignature(), $signature2->getSignature());
- static::assertEquals($signature1->getHeader(), $signature2->getHeader());
- static::assertEquals($signature1->getEncodedProtectedHeader(), $signature2->getEncodedProtectedHeader());
- static::assertEquals($signature1->getProtectedHeader(), $signature2->getProtectedHeader());
+ static::assertSame($signature1->getSignature(), $signature2->getSignature());
+ static::assertSame($signature1->getHeader(), $signature2->getHeader());
+ static::assertSame($signature1->getEncodedProtectedHeader(), $signature2->getEncodedProtectedHeader());
+ static::assertSame($signature1->getProtectedHeader(), $signature2->getProtectedHeader());
}
}
}
diff --git a/tests/Component/Signature/JWSTest.php b/tests/Component/Signature/JWSTest.php
index a9aea924..7f52a3ea 100644
--- a/tests/Component/Signature/JWSTest.php
+++ b/tests/Component/Signature/JWSTest.php
@@ -2,29 +2,17 @@
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\Tests\Component\Signature;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use Jose\Component\Signature\JWS;
use LogicException;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
- * @group JWS
- * @group unit
- *
* @internal
*/
-class JWSTest extends SignatureTest
+final class JWSTest extends SignatureTest
{
/**
* @test
@@ -39,16 +27,18 @@ public function jWS(): void
'aud' => 'You',
'sub' => 'My friend',
];
- $header = ['alg' => 'none'];
+ $header = [
+ 'alg' => 'none',
+ ];
$jws = new JWS(json_encode($claims), json_encode($claims));
$jws = $jws->addSignature('', $header, Base64UrlSafe::encodeUnpadded(json_encode($header)));
- static::assertEquals(json_encode($claims), $jws->getPayload());
- static::assertEquals(1, $jws->countSignatures());
+ static::assertSame(json_encode($claims), $jws->getPayload());
+ static::assertSame(1, $jws->countSignatures());
static::assertTrue($jws->getSignature(0)->hasProtectedHeaderParameter('alg'));
- static::assertEquals($header, $jws->getSignature(0)->getProtectedHeader());
- static::assertEquals('none', $jws->getSignature(0)->getProtectedHeaderParameter('alg'));
- static::assertEquals([], $jws->getSignature(0)->getHeader());
+ static::assertSame($header, $jws->getSignature(0)->getProtectedHeader());
+ static::assertSame('none', $jws->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame([], $jws->getSignature(0)->getHeader());
}
/**
@@ -68,7 +58,9 @@ public function toCompactJSONFailed(): void
'sub' => 'My friend',
];
$jws = new JWS(json_encode($claims), json_encode($claims));
- $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0);
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ ;
}
/**
@@ -88,7 +80,9 @@ public function toFlattenedJSONFailed(): void
'sub' => 'My friend',
];
$jws = new JWS(json_encode($claims), json_encode($claims));
- $this->getJWSSerializerManager()->serialize('jws_json_flattened', $jws, 0);
+ $this->getJWSSerializerManager()
+ ->serialize('jws_json_flattened', $jws, 0)
+ ;
}
/**
@@ -108,7 +102,9 @@ public function toJSONFailed(): void
'sub' => 'My friend',
];
$jws = new JWS(json_encode($claims), json_encode($claims));
- $this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0);
+ $this->getJWSSerializerManager()
+ ->serialize('jws_json_general', $jws, 0)
+ ;
}
/**
@@ -117,7 +113,9 @@ public function toJSONFailed(): void
public function signatureContainsUnprotectedHeader(): void
{
$this->expectException(LogicException::class);
- $this->expectExceptionMessage('The signature contains unprotected header parameters and cannot be converted into compact JSON');
+ $this->expectExceptionMessage(
+ 'The signature contains unprotected header parameters and cannot be converted into compact JSON'
+ );
$claims = [
'nbf' => time(),
@@ -127,11 +125,17 @@ public function signatureContainsUnprotectedHeader(): void
'aud' => 'You',
'sub' => 'My friend',
];
- $header = ['alg' => 'none'];
+ $header = [
+ 'alg' => 'none',
+ ];
$jws = new JWS(json_encode($claims), json_encode($claims));
- $jws = $jws->addSignature('', $header, Base64UrlSafe::encodeUnpadded(json_encode($header)), ['foo' => 'bar']);
+ $jws = $jws->addSignature('', $header, Base64UrlSafe::encodeUnpadded(json_encode($header)), [
+ 'foo' => 'bar',
+ ]);
- $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0);
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ ;
}
/**
@@ -150,10 +154,14 @@ public function signatureDoesNotContainHeader(): void
'aud' => 'You',
'sub' => 'My friend',
];
- $header = ['alg' => 'none'];
+ $header = [
+ 'alg' => 'none',
+ ];
$jws = new JWS(json_encode($claims), json_encode($claims));
$jws = $jws->addSignature('', $header, Base64UrlSafe::encodeUnpadded(json_encode($header)));
- $jws->getSignature(0)->getHeaderParameter('foo');
+ $jws->getSignature(0)
+ ->getHeaderParameter('foo')
+ ;
}
/**
@@ -172,9 +180,13 @@ public function signatureDoesNotContainProtectedHeader(): void
'aud' => 'You',
'sub' => 'My friend',
];
- $header = ['alg' => 'none'];
+ $header = [
+ 'alg' => 'none',
+ ];
$jws = new JWS(json_encode($claims), json_encode($claims));
$jws = $jws->addSignature('', $header, Base64UrlSafe::encodeUnpadded(json_encode($header)));
- $jws->getSignature(0)->getProtectedHeaderParameter('foo');
+ $jws->getSignature(0)
+ ->getProtectedHeaderParameter('foo')
+ ;
}
}
diff --git a/tests/Component/Signature/RFC7520/MultipleSignaturesTest.php b/tests/Component/Signature/RFC7520/MultipleSignaturesTest.php
index d80733cf..6a49d846 100644
--- a/tests/Component/Signature/RFC7520/MultipleSignaturesTest.php
+++ b/tests/Component/Signature/RFC7520/MultipleSignaturesTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Signature\RFC7520;
use Jose\Component\Core\JWK;
@@ -19,19 +10,18 @@
/**
* @see https://tools.ietf.org/html/rfc7520#section-4.8
*
- * @group RFC7520
- *
* @internal
*/
-class MultipleSignaturesTest extends SignatureTest
+final class MultipleSignaturesTest extends SignatureTest
{
/**
* @test
*/
public function multipleSignatures(): void
{
- /*
- * Payload,
+ /**
+ * Payload,.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.8.1
*/
$payload = "It\xe2\x80\x99s a dangerous business, Frodo, going out your door. You step onto the road, and if you don't keep your feet, there\xe2\x80\x99s no knowing where you might be swept off to.";
@@ -68,27 +58,44 @@ public function multipleSignatures(): void
'k' => 'hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg',
]);
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['RS256', 'ES512', 'HS256']);
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['RS256', 'ES512', 'HS256']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['RS256', 'ES512', 'HS256'])
+ ;
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['RS256', 'ES512', 'HS256'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload($payload)
- ->addSignature($ecdsa_private_key, [], ['alg' => 'ES512', 'kid' => 'bilbo.baggins@hobbiton.example']) //@see https://tools.ietf.org/html/rfc7520#section-4.8.2
- ->addSignature($rsa_private_key, ['alg' => 'RS256'], ['kid' => 'bilbo.baggins@hobbiton.example']) //@see https://tools.ietf.org/html/rfc7520#section-4.8.3
- ->addSignature($symmetric_key, ['alg' => 'HS256', 'kid' => '018c0ae5-4d9b-471b-bfd6-eef314bc7037']) //@see https://tools.ietf.org/html/rfc7520#section-4.8.4
+ ->create()
+ ->withPayload($payload)
+ ->addSignature($ecdsa_private_key, [], [
+ 'alg' => 'ES512',
+ 'kid' => 'bilbo.baggins@hobbiton.example',
+ ]) //@see https://tools.ietf.org/html/rfc7520#section-4.8.2
+ ->addSignature($rsa_private_key, [
+ 'alg' => 'RS256',
+ ], [
+ 'kid' => 'bilbo.baggins@hobbiton.example',
+ ]) //@see https://tools.ietf.org/html/rfc7520#section-4.8.3
+ ->addSignature($symmetric_key, [
+ 'alg' => 'HS256',
+ 'kid' => '018c0ae5-4d9b-471b-bfd6-eef314bc7037',
+ ]) //@see https://tools.ietf.org/html/rfc7520#section-4.8.4
->build()
;
- static::assertEquals(3, $jws->countSignatures());
+ static::assertSame(3, $jws->countSignatures());
static::assertTrue($jwsVerifier->verifyWithKey($jws, $ecdsa_private_key, 0));
static::assertTrue($jwsVerifier->verifyWithKey($jws, $rsa_private_key, 1));
static::assertTrue($jwsVerifier->verifyWithKey($jws, $symmetric_key, 2));
- // @see https://tools.ietf.org/html/rfc7520#section-4.8.5
+ /** @see https://tools.ietf.org/html/rfc7520#section-4.8.5 */
$expected_json = '{"payload":"SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4","signatures":[{"protected":"eyJhbGciOiJSUzI1NiJ9","header":{"kid":"bilbo.baggins@hobbiton.example"},"signature":"MIsjqtVlOpa71KE-Mss8_Nq2YH4FGhiocsqrgi5NvyG53uoimic1tcMdSg-qptrzZc7CG6Svw2Y13TDIqHzTUrL_lR2ZFcryNFiHkSw129EghGpwkpxaTn_THJTCglNbADko1MZBCdwzJxwqZc-1RlpO2HibUYyXSwO97BSe0_evZKdjvvKSgsIqjytKSeAMbhMBdMma622_BG5t4sdbuCHtFjp9iJmkio47AIwqkZV1aIZsv33uPUqBBCXbYoQJwt7mxPftHmNlGoOSMxR_3thmXTCm4US-xiNOyhbm8afKK64jU6_TPtQHiJeQJxz9G3Tx-083B745_AfYOnlC9w"},{"header":{"alg":"ES512","kid":"bilbo.baggins@hobbiton.example"},"signature":"ARcVLnaJJaUWG8fG-8t5BREVAuTY8n8YHjwDO1muhcdCoFZFFjfISu0Cdkn9Ybdlmi54ho0x924DUz8sK7ZXkhc7AFM8ObLfTvNCrqcI3Jkl2U5IX3utNhODH6v7xgy1Qahsn0fyb4zSAkje8bAWz4vIfj5pCMYxxm4fgV3q7ZYhm5eD"},{"protected":"eyJhbGciOiJIUzI1NiIsImtpZCI6IjAxOGMwYWU1LTRkOWItNDcxYi1iZmQ2LWVlZjMxNGJjNzAzNyJ9","signature":"s0h6KThzkfBBBkLspW1h84VsJZFTsPPqMDA7g1Md7p0"}]}';
- $loaded_json = $this->getJWSSerializerManager()->unserialize($expected_json);
- static::assertEquals(3, $loaded_json->countSignatures());
+ $loaded_json = $this->getJWSSerializerManager()
+ ->unserialize($expected_json)
+ ;
+ static::assertSame(3, $loaded_json->countSignatures());
static::assertTrue($jwsVerifier->verifyWithKey($loaded_json, $rsa_private_key, 0));
static::assertTrue($jwsVerifier->verifyWithKey($loaded_json, $ecdsa_private_key, 1));
diff --git a/tests/Component/Signature/RFC7520/NestingTest.php b/tests/Component/Signature/RFC7520/NestingTest.php
index 9460a46e..cea76f8c 100644
--- a/tests/Component/Signature/RFC7520/NestingTest.php
+++ b/tests/Component/Signature/RFC7520/NestingTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Signature\RFC7520;
use Jose\Component\Core\JWK;
@@ -19,11 +10,9 @@
/**
* @see https://tools.ietf.org/html/rfc7520#section-6
*
- * @group RFC7520
- *
* @internal
*/
-class NestingTest extends SignatureTest
+final class NestingTest extends SignatureTest
{
/**
* @test
@@ -57,11 +46,15 @@ public function signatureVerification(): void
$json_compact = 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJob2JiaXRvbi5leGFtcGxlIiwiZXhwIjoxMzAwODE5MzgwLCJodHRwOi8vZXhhbXBsZS5jb20vaXNfcm9vdCI6dHJ1ZX0.dPpMqwRZxFYi1UfcDAaf8M99o7kwUWtiXZ-ByvVuJih4MhJ_aZqciprz0OWaIAkIvn1qskChirjKvY9ESZNUCP4JjvfyPS-nqjJxYoA5ztWOyFk2cZNIPXjcJXSQwXPO9tEe-v4VSqgD0aKHqPxYog4N6Cz1lKph1U1sYDSI67_bLL7elg_vkjfMp5_W5l5LuUYGMeh6hxQIaIUXf9EwV2JmvTMuZ-vBOWy0Sniy1EFo72CRTvmtrIf5AROo5MNliY3KtUxeP-SOmD-LEYwW9SlkohYzMVAZDDOrVbv7KVRHpeYNaK75KEQqdCEEkS_rskZS-Qtt_nlegTWh1mEYaA';
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['PS256']);
- $loaded_compact_json = $this->getJWSSerializerManager()->unserialize($json_compact);
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['PS256'])
+ ;
+ $loaded_compact_json = $this->getJWSSerializerManager()
+ ->unserialize($json_compact)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded_compact_json, $signature_key, 0));
- static::assertEquals($signature_header, $loaded_compact_json->getSignature(0)->getProtectedHeader());
- static::assertEquals($payload, json_decode($loaded_compact_json->getPayload(), true));
+ static::assertSame($signature_header, $loaded_compact_json->getSignature(0)->getProtectedHeader());
+ static::assertSame($payload, json_decode($loaded_compact_json->getPayload(), true));
}
}
diff --git a/tests/Component/Signature/SignatureTest.php b/tests/Component/Signature/SignatureTest.php
index 268dfd68..c59bff8d 100644
--- a/tests/Component/Signature/SignatureTest.php
+++ b/tests/Component/Signature/SignatureTest.php
@@ -2,75 +2,65 @@
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\Tests\Component\Signature;
use Jose\Component\Core\AlgorithmManagerFactory;
-use Jose\Component\Signature\Algorithm;
+use Jose\Component\Signature\Algorithm\EdDSA;
+use Jose\Component\Signature\Algorithm\ES256;
+use Jose\Component\Signature\Algorithm\ES384;
+use Jose\Component\Signature\Algorithm\ES512;
+use Jose\Component\Signature\Algorithm\HS256;
+use Jose\Component\Signature\Algorithm\HS384;
+use Jose\Component\Signature\Algorithm\HS512;
+use Jose\Component\Signature\Algorithm\None;
+use Jose\Component\Signature\Algorithm\PS256;
+use Jose\Component\Signature\Algorithm\PS384;
+use Jose\Component\Signature\Algorithm\PS512;
+use Jose\Component\Signature\Algorithm\RS256;
+use Jose\Component\Signature\Algorithm\RS384;
+use Jose\Component\Signature\Algorithm\RS512;
use Jose\Component\Signature\JWSBuilderFactory;
use Jose\Component\Signature\JWSLoaderFactory;
use Jose\Component\Signature\JWSVerifierFactory;
-use Jose\Component\Signature\Serializer;
+use Jose\Component\Signature\Serializer\CompactSerializer;
+use Jose\Component\Signature\Serializer\JSONFlattenedSerializer;
+use Jose\Component\Signature\Serializer\JSONGeneralSerializer;
+use Jose\Component\Signature\Serializer\JWSSerializerManager;
+use Jose\Component\Signature\Serializer\JWSSerializerManagerFactory;
use PHPUnit\Framework\TestCase;
abstract class SignatureTest extends TestCase
{
- /**
- * @var AlgorithmManagerFactory
- */
- private $algorithmManagerFactory;
-
- /**
- * @var JWSBuilderFactory
- */
- private $jwsBuilderFactory;
-
- /**
- * @var JWSVerifierFactory
- */
- private $jwsVerifierFactory;
-
- /**
- * @var null|Serializer\JWSSerializerManagerFactory
- */
- private $jwsSerializerManagerFactory;
-
- /**
- * @var null|Serializer\JWSSerializerManager
- */
- private $jwsSerializerManager;
-
- /**
- * @var JWSLoaderFactory
- */
- private $jwsLoaderFactory;
+ private ?AlgorithmManagerFactory $algorithmManagerFactory = null;
+
+ private ?JWSBuilderFactory $jwsBuilderFactory = null;
+
+ private ?JWSVerifierFactory $jwsVerifierFactory = null;
+
+ private ?JWSSerializerManagerFactory $jwsSerializerManagerFactory = null;
+
+ private ?JWSSerializerManager $jwsSerializerManager = null;
+
+ private ?JWSLoaderFactory $jwsLoaderFactory = null;
protected function getAlgorithmManagerFactory(): AlgorithmManagerFactory
{
- if (null === $this->algorithmManagerFactory) {
+ if ($this->algorithmManagerFactory === null) {
$this->algorithmManagerFactory = new AlgorithmManagerFactory();
- $this->algorithmManagerFactory->add('HS256', new Algorithm\HS256());
- $this->algorithmManagerFactory->add('HS384', new Algorithm\HS384());
- $this->algorithmManagerFactory->add('HS512', new Algorithm\HS512());
- $this->algorithmManagerFactory->add('ES256', new Algorithm\ES256());
- $this->algorithmManagerFactory->add('ES384', new Algorithm\ES384());
- $this->algorithmManagerFactory->add('ES512', new Algorithm\ES512());
- $this->algorithmManagerFactory->add('RS256', new Algorithm\RS256());
- $this->algorithmManagerFactory->add('RS384', new Algorithm\RS384());
- $this->algorithmManagerFactory->add('RS512', new Algorithm\RS512());
- $this->algorithmManagerFactory->add('PS256', new Algorithm\PS256());
- $this->algorithmManagerFactory->add('PS384', new Algorithm\PS384());
- $this->algorithmManagerFactory->add('PS512', new Algorithm\PS512());
- $this->algorithmManagerFactory->add('none', new Algorithm\None());
- $this->algorithmManagerFactory->add('EdDSA', new Algorithm\EdDSA());
+ $this->algorithmManagerFactory->add('HS256', new HS256());
+ $this->algorithmManagerFactory->add('HS384', new HS384());
+ $this->algorithmManagerFactory->add('HS512', new HS512());
+ $this->algorithmManagerFactory->add('ES256', new ES256());
+ $this->algorithmManagerFactory->add('ES384', new ES384());
+ $this->algorithmManagerFactory->add('ES512', new ES512());
+ $this->algorithmManagerFactory->add('RS256', new RS256());
+ $this->algorithmManagerFactory->add('RS384', new RS384());
+ $this->algorithmManagerFactory->add('RS512', new RS512());
+ $this->algorithmManagerFactory->add('PS256', new PS256());
+ $this->algorithmManagerFactory->add('PS384', new PS384());
+ $this->algorithmManagerFactory->add('PS512', new PS512());
+ $this->algorithmManagerFactory->add('none', new None());
+ $this->algorithmManagerFactory->add('EdDSA', new EdDSA());
}
return $this->algorithmManagerFactory;
@@ -78,10 +68,8 @@ protected function getAlgorithmManagerFactory(): AlgorithmManagerFactory
protected function getJWSBuilderFactory(): JWSBuilderFactory
{
- if (null === $this->jwsBuilderFactory) {
- $this->jwsBuilderFactory = new JWSBuilderFactory(
- $this->getAlgorithmManagerFactory()
- );
+ if ($this->jwsBuilderFactory === null) {
+ $this->jwsBuilderFactory = new JWSBuilderFactory($this->getAlgorithmManagerFactory());
}
return $this->jwsBuilderFactory;
@@ -89,34 +77,32 @@ protected function getJWSBuilderFactory(): JWSBuilderFactory
protected function getJWSVerifierFactory(): JWSVerifierFactory
{
- if (null === $this->jwsVerifierFactory) {
- $this->jwsVerifierFactory = new JWSVerifierFactory(
- $this->getAlgorithmManagerFactory()
- );
+ if ($this->jwsVerifierFactory === null) {
+ $this->jwsVerifierFactory = new JWSVerifierFactory($this->getAlgorithmManagerFactory());
}
return $this->jwsVerifierFactory;
}
- protected function getJWSSerializerManagerFactory(): Serializer\JWSSerializerManagerFactory
+ protected function getJWSSerializerManagerFactory(): JWSSerializerManagerFactory
{
- if (null === $this->jwsSerializerManagerFactory) {
- $this->jwsSerializerManagerFactory = new Serializer\JWSSerializerManagerFactory();
- $this->jwsSerializerManagerFactory->add(new Serializer\CompactSerializer());
- $this->jwsSerializerManagerFactory->add(new Serializer\JSONFlattenedSerializer());
- $this->jwsSerializerManagerFactory->add(new Serializer\JSONGeneralSerializer());
+ if ($this->jwsSerializerManagerFactory === null) {
+ $this->jwsSerializerManagerFactory = new JWSSerializerManagerFactory();
+ $this->jwsSerializerManagerFactory->add(new CompactSerializer());
+ $this->jwsSerializerManagerFactory->add(new JSONFlattenedSerializer());
+ $this->jwsSerializerManagerFactory->add(new JSONGeneralSerializer());
}
return $this->jwsSerializerManagerFactory;
}
- protected function getJWSSerializerManager(): Serializer\JWSSerializerManager
+ protected function getJWSSerializerManager(): JWSSerializerManager
{
- if (null === $this->jwsSerializerManager) {
- $this->jwsSerializerManager = new Serializer\JWSSerializerManager([
- new Serializer\CompactSerializer(),
- new Serializer\JSONFlattenedSerializer(),
- new Serializer\JSONGeneralSerializer(),
+ if ($this->jwsSerializerManager === null) {
+ $this->jwsSerializerManager = new JWSSerializerManager([
+ new CompactSerializer(),
+ new JSONFlattenedSerializer(),
+ new JSONGeneralSerializer(),
]);
}
@@ -125,7 +111,7 @@ protected function getJWSSerializerManager(): Serializer\JWSSerializerManager
protected function getJWSLoaderFactory(): JWSLoaderFactory
{
- if (null === $this->jwsLoaderFactory) {
+ if ($this->jwsLoaderFactory === null) {
$this->jwsLoaderFactory = new JWSLoaderFactory(
$this->getJWSSerializerManagerFactory(),
$this->getJWSVerifierFactory(),
diff --git a/tests/Component/Signature/SignerTest.php b/tests/Component/Signature/SignerTest.php
index 62de2767..6a3fdccb 100644
--- a/tests/Component/Signature/SignerTest.php
+++ b/tests/Component/Signature/SignerTest.php
@@ -2,31 +2,20 @@
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\Tests\Component\Signature;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Component\Core\JWKSet;
use Jose\Component\Signature\Serializer\CompactSerializer;
+use const JSON_THROW_ON_ERROR;
use LogicException;
+use ParagonIE\ConstantTime\Base64UrlSafe;
/**
- * @group Signer
- * @group functional
- *
* @internal
*/
-class SignerTest extends SignatureTest
+final class SignerTest extends SignatureTest
{
/**
* @test
@@ -36,9 +25,12 @@ public function algParameterIsMissing(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('No "alg" parameter set in the header.');
- $jwsBuilder = $this->getJWSBuilderFactory()->create([]);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create([])
+ ;
$jwsBuilder
- ->create()->withPayload(json_encode($this->getKey3()))
+ ->create()
+ ->withPayload(json_encode($this->getKey3()))
->addSignature($this->getKey1(), [])
->build()
;
@@ -52,10 +44,15 @@ public function algParameterIsNotSupported(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('The algorithm "foo" is not supported.');
- $jwsBuilder = $this->getJWSBuilderFactory()->create([]);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create([])
+ ;
$jwsBuilder
- ->create()->withPayload(json_encode($this->getKey3()))
- ->addSignature($this->getKey1(), ['alg' => 'foo'])
+ ->create()
+ ->withPayload(json_encode($this->getKey3()))
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'foo',
+ ])
->build()
;
}
@@ -68,10 +65,18 @@ public function duplicatedHeader(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('The header contains duplicated entries: foo.');
- $jwsBuilder = $this->getJWSBuilderFactory()->create([]);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create([])
+ ;
$jwsBuilder
- ->create()->withPayload(json_encode($this->getKey3()))
- ->addSignature($this->getKey1(), ['alg' => 'ES256', 'foo' => 'bar'], ['foo' => 'bar'])
+ ->create()
+ ->withPayload(json_encode($this->getKey3()))
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'ES256',
+ 'foo' => 'bar',
+ ], [
+ 'foo' => 'bar',
+ ])
;
}
@@ -80,20 +85,29 @@ public function duplicatedHeader(): void
*/
public function signAndLoadCompact(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS512', 'RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS512', 'RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload(json_encode($this->getKey3()))
- ->addSignature($this->getKey1(), ['alg' => 'HS512'])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload(json_encode($this->getKey3()))
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- static::assertEquals(2, $jws->countSignatures());
+ static::assertSame(2, $jws->countSignatures());
- $loaded = $this->getJWSSerializerManager()->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0));
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0))
+ ;
- static::assertEquals('HS512', $loaded->getSignature(0)->getProtectedHeaderParameter('alg'));
- static::assertEquals('RS512', $loaded->getSignature(1)->getProtectedHeaderParameter('alg'));
+ static::assertSame('HS512', $loaded->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('RS512', $loaded->getSignature(1)->getProtectedHeaderParameter('alg'));
}
/**
@@ -101,57 +115,98 @@ public function signAndLoadCompact(): void
*/
public function signMultipleInstructionWithCompactRepresentation(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS512', 'RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS512', 'RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
- ->addSignature($this->getKey1(), ['alg' => 'HS512'])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload('Live long and Prosper.')
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- static::assertEquals(2, $jws->countSignatures());
- static::assertEquals('eyJhbGciOiJIUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ', $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0));
- static::assertEquals('eyJhbGciOiJSUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA', $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 1));
+ static::assertSame(2, $jws->countSignatures());
+ static::assertSame(
+ 'eyJhbGciOiJIUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ',
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ );
+ static::assertSame(
+ 'eyJhbGciOiJSUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA',
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 1)
+ );
}
/**
- * @group JWSBuilder
- *
* @test
*/
public function signMultipleInstructionWithCompactRepresentationUsingBuilder(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS512', 'RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS512', 'RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
- ->addSignature($this->getKey1(), ['alg' => 'HS512'])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload('Live long and Prosper.')
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- static::assertEquals(2, $jws->countSignatures());
- static::assertEquals('eyJhbGciOiJIUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ', $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0));
- static::assertEquals('eyJhbGciOiJSUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA', $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 1));
+ static::assertSame(2, $jws->countSignatures());
+ static::assertSame(
+ 'eyJhbGciOiJIUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ',
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ );
+ static::assertSame(
+ 'eyJhbGciOiJSUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA',
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 1)
+ );
}
/**
- * @group JWSBuilder
- *
* @test
*/
public function signMultipleInstructionWithCompactRepresentationUsingBuilderAndDetachedPayload(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS512', 'RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS512', 'RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.', true)
- ->addSignature($this->getKey1(), ['alg' => 'HS512'])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload('Live long and Prosper.', true)
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- static::assertEquals(2, $jws->countSignatures());
- static::assertEquals('eyJhbGciOiJIUzUxMiJ9..TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ', $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0));
- static::assertEquals('eyJhbGciOiJSUzUxMiJ9..cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA', $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 1));
+ static::assertSame(2, $jws->countSignatures());
+ static::assertSame(
+ 'eyJhbGciOiJIUzUxMiJ9..TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ',
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ );
+ static::assertSame(
+ 'eyJhbGciOiJSUzUxMiJ9..cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA',
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 1)
+ );
}
/**
@@ -159,42 +214,84 @@ public function signMultipleInstructionWithCompactRepresentationUsingBuilderAndD
*/
public function createCompactJWSUsingFactory(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS512', 'RS512']);
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['HS512', 'RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS512', 'RS512'])
+ ;
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['HS512', 'RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
- ->addSignature($this->getKey1(), ['alg' => 'HS512'])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload('Live long and Prosper.')
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- $jws0 = $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0);
- $jws1 = $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 1);
+ $jws0 = $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ ;
+ $jws1 = $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 1)
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.', true)
- ->addSignature($this->getKey1(), ['alg' => 'HS512'])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload('Live long and Prosper.', true)
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- $jws2 = $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0);
- $jws3 = $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 1);
-
- static::assertEquals('eyJhbGciOiJIUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ', $jws0);
- static::assertEquals('eyJhbGciOiJSUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA', $jws1);
- static::assertEquals('eyJhbGciOiJIUzUxMiJ9..TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ', $jws2);
- static::assertEquals('eyJhbGciOiJSUzUxMiJ9..cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA', $jws3);
+ $jws2 = $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ ;
+ $jws3 = $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 1)
+ ;
- $loaded_0 = $this->getJWSSerializerManager()->unserialize($jws0);
+ static::assertSame(
+ 'eyJhbGciOiJIUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ',
+ $jws0
+ );
+ static::assertSame(
+ 'eyJhbGciOiJSUzUxMiJ9.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA',
+ $jws1
+ );
+ static::assertSame(
+ 'eyJhbGciOiJIUzUxMiJ9..TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ',
+ $jws2
+ );
+ static::assertSame(
+ 'eyJhbGciOiJSUzUxMiJ9..cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA',
+ $jws3
+ );
+
+ $loaded_0 = $this->getJWSSerializerManager()
+ ->unserialize($jws0)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded_0, $this->getKey1(), 0));
- $loaded_1 = $this->getJWSSerializerManager()->unserialize($jws1);
+ $loaded_1 = $this->getJWSSerializerManager()
+ ->unserialize($jws1)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded_1, $this->getKey2(), 0));
- $loaded_2 = $this->getJWSSerializerManager()->unserialize($jws2);
+ $loaded_2 = $this->getJWSSerializerManager()
+ ->unserialize($jws2)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded_2, $this->getKey1(), 0, 'Live long and Prosper.'));
- $loaded_3 = $this->getJWSSerializerManager()->unserialize($jws3);
+ $loaded_3 = $this->getJWSSerializerManager()
+ ->unserialize($jws3)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded_3, $this->getKey2(), 0, 'Live long and Prosper.'));
}
@@ -203,17 +300,32 @@ public function createCompactJWSUsingFactory(): void
*/
public function signMultipleInstructionWithFlattenedRepresentation(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS512', 'RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS512', 'RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
- ->addSignature($this->getKey1(), ['alg' => 'HS512'])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload('Live long and Prosper.')
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- static::assertEquals(2, $jws->countSignatures());
- static::assertEquals('{"payload":"TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg","protected":"eyJhbGciOiJIUzUxMiJ9","signature":"TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ"}', $this->getJWSSerializerManager()->serialize('jws_json_flattened', $jws, 0));
- static::assertEquals('{"payload":"TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg","protected":"eyJhbGciOiJSUzUxMiJ9","signature":"cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA"}', $this->getJWSSerializerManager()->serialize('jws_json_flattened', $jws, 1));
+ static::assertSame(2, $jws->countSignatures());
+ static::assertSame(
+ '{"payload":"TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg","protected":"eyJhbGciOiJIUzUxMiJ9","signature":"TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ"}',
+ $this->getJWSSerializerManager()
+ ->serialize('jws_json_flattened', $jws, 0)
+ );
+ static::assertSame(
+ '{"payload":"TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg","protected":"eyJhbGciOiJSUzUxMiJ9","signature":"cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA"}',
+ $this->getJWSSerializerManager()
+ ->serialize('jws_json_flattened', $jws, 1)
+ );
}
/**
@@ -221,41 +333,91 @@ public function signMultipleInstructionWithFlattenedRepresentation(): void
*/
public function createFlattenedJWSUsingFactory(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS512', 'RS512']);
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['HS512', 'RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS512', 'RS512'])
+ ;
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['HS512', 'RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
- ->addSignature($this->getKey1(), ['alg' => 'HS512'], ['foo' => 'bar'])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'], ['plic' => 'ploc'])
+ ->create()
+ ->withPayload('Live long and Prosper.')
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ], [
+ 'foo' => 'bar',
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ], [
+ 'plic' => 'ploc',
+ ])
->build()
;
- $jws0 = $this->getJWSSerializerManager()->serialize('jws_json_flattened', $jws, 0);
- $jws1 = $this->getJWSSerializerManager()->serialize('jws_json_flattened', $jws, 1);
+ $jws0 = $this->getJWSSerializerManager()
+ ->serialize('jws_json_flattened', $jws, 0)
+ ;
+ $jws1 = $this->getJWSSerializerManager()
+ ->serialize('jws_json_flattened', $jws, 1)
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.', true)
- ->addSignature($this->getKey1(), ['alg' => 'HS512'], ['foo' => 'bar'])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'], ['plic' => 'ploc'])
+ ->create()
+ ->withPayload('Live long and Prosper.', true)
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ], [
+ 'foo' => 'bar',
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ], [
+ 'plic' => 'ploc',
+ ])
->build()
;
- $jws2 = $this->getJWSSerializerManager()->serialize('jws_json_flattened', $jws, 0);
- $jws3 = $this->getJWSSerializerManager()->serialize('jws_json_flattened', $jws, 1);
-
- static::assertEquals('{"payload":"TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg","protected":"eyJhbGciOiJIUzUxMiJ9","header":{"foo":"bar"},"signature":"TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ"}', $jws0);
- static::assertEquals('{"payload":"TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg","protected":"eyJhbGciOiJSUzUxMiJ9","header":{"plic":"ploc"},"signature":"cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA"}', $jws1);
- static::assertEquals('{"protected":"eyJhbGciOiJIUzUxMiJ9","header":{"foo":"bar"},"signature":"TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ"}', $jws2);
- static::assertEquals('{"protected":"eyJhbGciOiJSUzUxMiJ9","header":{"plic":"ploc"},"signature":"cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA"}', $jws3);
+ $jws2 = $this->getJWSSerializerManager()
+ ->serialize('jws_json_flattened', $jws, 0)
+ ;
+ $jws3 = $this->getJWSSerializerManager()
+ ->serialize('jws_json_flattened', $jws, 1)
+ ;
- $loaded_0 = $this->getJWSSerializerManager()->unserialize($jws0);
+ static::assertSame(
+ '{"payload":"TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg","protected":"eyJhbGciOiJIUzUxMiJ9","header":{"foo":"bar"},"signature":"TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ"}',
+ $jws0
+ );
+ static::assertSame(
+ '{"payload":"TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg","protected":"eyJhbGciOiJSUzUxMiJ9","header":{"plic":"ploc"},"signature":"cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA"}',
+ $jws1
+ );
+ static::assertSame(
+ '{"protected":"eyJhbGciOiJIUzUxMiJ9","header":{"foo":"bar"},"signature":"TjxvVLKLc1kU5XW1NjZlI6_kQHjeU2orTWBZ7p0KuRzq_9lyPWR04PAUpbYkaLJLsmIJ8Fxi8Gsrc0khPtFxfQ"}',
+ $jws2
+ );
+ static::assertSame(
+ '{"protected":"eyJhbGciOiJSUzUxMiJ9","header":{"plic":"ploc"},"signature":"cR-npy2oEi275rpeTAKooLRzOhIOFMewpzE38CLx4_CtdkN4Y7EUlca9ryV6yGMH8SswUqosMnmUU8XYg7xkuNAc6mCODJVF2exfb_Mulmr9YolQrLFrFRsMk1rztXMinCMQeCe5ue3Ck4E4aJlIkjf-d0DJktoIhH6d2gZ-iJeLQ32wcBhPcEbj2gr7K_wYKlEXhKFwG59OE-hIi9IHXEKvK-2V5vzZLVC80G4aWYd3D-2eX3LF1K69NP04jGcu1D4l9UV8zTz1gOWe697iZG0JyKhSccUaHZ0TfEa8cT0tm6xTz6tpUGSDdvPQU8JCU8GTOsi9ifxTsI-GlWE3YA"}',
+ $jws3
+ );
+
+ $loaded_0 = $this->getJWSSerializerManager()
+ ->unserialize($jws0)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded_0, $this->getKey1(), 0));
- $loaded_1 = $this->getJWSSerializerManager()->unserialize($jws1);
+ $loaded_1 = $this->getJWSSerializerManager()
+ ->unserialize($jws1)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded_1, $this->getKey2(), 0));
- $loaded_2 = $this->getJWSSerializerManager()->unserialize($jws2);
+ $loaded_2 = $this->getJWSSerializerManager()
+ ->unserialize($jws2)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded_2, $this->getKey1(), 0, 'Live long and Prosper.'));
- $loaded_3 = $this->getJWSSerializerManager()->unserialize($jws3);
+ $loaded_3 = $this->getJWSSerializerManager()
+ ->unserialize($jws3)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded_3, $this->getKey2(), 0, 'Live long and Prosper.'));
}
@@ -267,10 +429,15 @@ public function algorithmNotAllowedForTheKey(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('The algorithm "RS512" is not allowed with this key.');
- $jwsBuilder = $this->getJWSBuilderFactory()->create([]);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create([])
+ ;
$jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
- ->addSignature($this->getKey5(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload('Live long and Prosper.')
+ ->addSignature($this->getKey5(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
}
@@ -283,10 +450,15 @@ public function operationNotAllowedForTheKey(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Key cannot be used to sign');
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['PS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['PS512'])
+ ;
$jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
- ->addSignature($this->getKey4(), ['alg' => 'PS512'])
+ ->create()
+ ->withPayload('Live long and Prosper.')
+ ->addSignature($this->getKey4(), [
+ 'alg' => 'PS512',
+ ])
->build()
;
}
@@ -296,17 +468,26 @@ public function operationNotAllowedForTheKey(): void
*/
public function signAndLoadFlattened(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload(json_encode(['baz', 'ban']))
- ->addSignature($this->getKey1(), ['alg' => 'HS512'], ['foo' => 'bar'])
+ ->create()
+ ->withPayload(json_encode(['baz', 'ban']))
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ], [
+ 'foo' => 'bar',
+ ])
->build()
;
- $loaded = $this->getJWSSerializerManager()->unserialize($this->getJWSSerializerManager()->serialize('jws_json_flattened', $jws, 0));
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($this->getJWSSerializerManager()->serialize('jws_json_flattened', $jws, 0))
+ ;
- static::assertEquals(1, $loaded->countSignatures());
- static::assertEquals('HS512', $loaded->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame(1, $loaded->countSignatures());
+ static::assertSame('HS512', $loaded->getSignature(0)->getProtectedHeaderParameter('alg'));
}
/**
@@ -314,24 +495,37 @@ public function signAndLoadFlattened(): void
*/
public function signAndLoad(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS512', 'RS512']);
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['HS512', 'RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS512', 'RS512'])
+ ;
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['HS512', 'RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
- ->addSignature($this->getKey1(), ['alg' => 'HS512'], ['foo' => 'bar'])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload('Live long and Prosper.')
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ], [
+ 'foo' => 'bar',
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- $loaded = $this->getJWSSerializerManager()->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0));
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0))
+ ;
- static::assertEquals(2, $loaded->countSignatures());
- static::assertEquals('Live long and Prosper.', $loaded->getPayload());
+ static::assertSame(2, $loaded->countSignatures());
+ static::assertSame('Live long and Prosper.', $loaded->getPayload());
static::assertTrue($jwsVerifier->verifyWithKeySet($loaded, $this->getSymmetricKeySet(), 0));
static::assertTrue($jwsVerifier->verifyWithKeySet($loaded, $this->getPublicKeySet(), 1));
- static::assertEquals('HS512', $loaded->getSignature(0)->getProtectedHeaderParameter('alg'));
- static::assertEquals('RS512', $loaded->getSignature(1)->getProtectedHeaderParameter('alg'));
+ static::assertSame('HS512', $loaded->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('RS512', $loaded->getSignature(1)->getProtectedHeaderParameter('alg'));
}
/**
@@ -339,18 +533,27 @@ public function signAndLoad(): void
*/
public function signAndLoadWithWrongKeys(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['RS512']);
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['RS512'])
+ ;
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload('Live long and Prosper.')
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- $loaded = $this->getJWSSerializerManager()->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0));
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0))
+ ;
- static::assertEquals(1, $loaded->countSignatures());
- static::assertEquals('Live long and Prosper.', $loaded->getPayload());
+ static::assertSame(1, $loaded->countSignatures());
+ static::assertSame('Live long and Prosper.', $loaded->getPayload());
static::assertFalse($jwsVerifier->verifyWithKeySet($loaded, $this->getSymmetricKeySet(), 0));
}
@@ -360,18 +563,27 @@ public function signAndLoadWithWrongKeys(): void
*/
public function signAndLoadWithUnsupportedAlgorithm(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['RS512']);
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['RS512'])
+ ;
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload('Live long and Prosper.')
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- $loaded = $this->getJWSSerializerManager()->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0));
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0))
+ ;
- static::assertEquals(1, $loaded->countSignatures());
- static::assertEquals('Live long and Prosper.', $loaded->getPayload());
+ static::assertSame(1, $loaded->countSignatures());
+ static::assertSame('Live long and Prosper.', $loaded->getPayload());
static::assertFalse($jwsVerifier->verifyWithKeySet($loaded, $this->getSymmetricKeySet(), 0));
}
@@ -387,11 +599,15 @@ public function signAndLoadWithJWSWithoutSignatures(): void
$payload = "It\xe2\x80\x99s a dangerous business, Frodo, going out your door. You step onto the road, and if you don't keep your feet, there\xe2\x80\x99s no knowing where you might be swept off to.";
$jws = '{"payload":"SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4","signatures":[]}';
- $jwsVerifier = $this->getJWSVerifierFactory()->create([]);
- $loaded = $this->getJWSSerializerManager()->unserialize($jws);
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create([])
+ ;
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($jws)
+ ;
- static::assertEquals(0, $loaded->countSignatures());
- static::assertEquals($payload, $loaded->getPayload());
+ static::assertSame(0, $loaded->countSignatures());
+ static::assertSame($payload, $loaded->getPayload());
static::assertTrue($jwsVerifier->verifyWithKeySet($loaded, $this->getSymmetricKeySet(), 0));
}
@@ -418,14 +634,19 @@ public function compactJSONWithUnencodedPayloadFailsBecauseOfForbiddenCharacters
'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
]);
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS256']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS256'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->addSignature($key, $protectedHeader)
->build()
;
- $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0);
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ ;
}
/**
@@ -447,21 +668,31 @@ public function compactJSONWithUnencodedPayloadSucceeded(): void
'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
]);
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS256']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS256'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper~')
+ ->create()
+ ->withPayload('Live long and Prosper~')
->addSignature($key, $protectedHeader)
->build()
;
- $compact = $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0);
- static::assertEquals('eyJhbGciOiJIUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19.Live long and Prosper~.nUNenbjNAEH2nNIXyQYmutiHRPnT17HcaMr5Lsho4BE', $compact);
+ $compact = $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ ;
+ static::assertSame(
+ 'eyJhbGciOiJIUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19.Live long and Prosper~.nUNenbjNAEH2nNIXyQYmutiHRPnT17HcaMr5Lsho4BE',
+ $compact
+ );
- $loaded = $this->getJWSSerializerManager()->unserialize($compact, $serializer);
- static::assertEquals(CompactSerializer::NAME, $serializer);
- static::assertEquals('Live long and Prosper~', $loaded->getPayload());
- static::assertEquals('Live long and Prosper~', $loaded->getEncodedPayload());
- static::assertEquals($protectedHeader, $loaded->getSignature(0)->getProtectedHeader());
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($compact, $serializer)
+ ;
+ static::assertSame(CompactSerializer::NAME, $serializer);
+ static::assertSame('Live long and Prosper~', $loaded->getPayload());
+ static::assertSame('Live long and Prosper~', $loaded->getEncodedPayload());
+ static::assertSame($protectedHeader, $loaded->getSignature(0)->getProtectedHeader());
}
/**
@@ -484,20 +715,32 @@ public function compactJSONWithUnencodedDetachedPayload(): void
'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
]);
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS256']);
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['HS256']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS256'])
+ ;
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['HS256'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload($payload, true)
+ ->create()
+ ->withPayload($payload, true)
->addSignature($key, $protectedHeader)
->build()
;
- $jws = $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0);
- static::assertEquals('eyJhbGciOiJIUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..A5dxf2s96_n5FLueVuW1Z_vh161FwXZC4YLPff6dmDY', $jws);
+ $jws = $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ ;
+ static::assertSame(
+ 'eyJhbGciOiJIUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..A5dxf2s96_n5FLueVuW1Z_vh161FwXZC4YLPff6dmDY',
+ $jws
+ );
- $loaded = $this->getJWSSerializerManager()->unserialize($jws);
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($jws)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded, $key, 0, $payload));
- static::assertEquals($protectedHeader, $loaded->getSignature(0)->getProtectedHeader());
+ static::assertSame($protectedHeader, $loaded->getSignature(0)->getProtectedHeader());
}
/**
@@ -524,10 +767,15 @@ public function compactJSONWithUnencodedDetachedPayloadAndMultipleSignatures():
'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
]);
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS256', 'HS512']);
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['HS256', 'HS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS256', 'HS512'])
+ ;
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['HS256', 'HS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload($payload, true)
+ ->create()
+ ->withPayload($payload, true)
->addSignature($key, $protectedHeader1)
->addSignature($key, $protectedHeader2)
->build()
@@ -535,15 +783,22 @@ public function compactJSONWithUnencodedDetachedPayloadAndMultipleSignatures():
$expected_result = '{"signatures":[{"signature":"A5dxf2s96_n5FLueVuW1Z_vh161FwXZC4YLPff6dmDY","protected":"eyJhbGciOiJIUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19"},{"signature":"Mp-m-Vyst0zYCNkpg2RiIN8W9GO4nLU3FKsFtHzEcP4tgR4QcMys1_2m9HrDwszi0Cp2gv_Lioe6UPCcTNn6tQ","protected":"eyJhbGciOiJIUzUxMiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19"}]}';
- static::assertEquals($expected_result, $this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0));
+ static::assertSame(
+ $expected_result,
+ $this->getJWSSerializerManager()
+ ->serialize('jws_json_general', $jws, 0)
+ );
- $loaded = $this->getJWSSerializerManager()->unserialize($expected_result);
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($expected_result)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded, $key, 0, $payload));
- static::assertEquals($protectedHeader1, $loaded->getSignature(0)->getProtectedHeader());
+ static::assertSame($protectedHeader1, $loaded->getSignature(0)->getProtectedHeader());
}
/**
- * The library is able to support multiple payload encoding and conversion in JSON is not available if payload is not detached.
+ * The library is able to support multiple payload encoding and conversion in JSON is not available if payload is
+ * not detached.
*
* @test
*/
@@ -567,15 +822,20 @@ public function compactJSONWithUnencodedPayloadAndMultipleSignatures(): void
'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
]);
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS256']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS256'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload($payload)
+ ->create()
+ ->withPayload($payload)
->addSignature($key, $protectedHeader1)
->addSignature($key, $protectedHeader2)
->build()
;
- $this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0);
+ $this->getJWSSerializerManager()
+ ->serialize('jws_json_general', $jws, 0)
+ ;
}
/**
@@ -584,7 +844,9 @@ public function compactJSONWithUnencodedPayloadAndMultipleSignatures(): void
public function jWSWithUnencodedPayloadButNoCritHeader(): void
{
$this->expectException(LogicException::class);
- $this->expectExceptionMessage('The protected header parameter "crit" is mandatory when protected header parameter "b64" is set.');
+ $this->expectExceptionMessage(
+ 'The protected header parameter "crit" is mandatory when protected header parameter "b64" is set.'
+ );
$payload = '$.02';
$protectedHeader = [
@@ -597,13 +859,18 @@ public function jWSWithUnencodedPayloadButNoCritHeader(): void
'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
]);
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS256']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS256'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload($payload, true)
+ ->create()
+ ->withPayload($payload, true)
->addSignature($key, $protectedHeader)
->build()
;
- $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0);
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ ;
}
/**
@@ -626,13 +893,18 @@ public function jWSWithUnencodedPayloadButCritHeaderIsNotAnArray(): void
'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
]);
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS256']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS256'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload($payload, true)
+ ->create()
+ ->withPayload($payload, true)
->addSignature($key, $protectedHeader)
->build()
;
- $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0);
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ ;
}
/**
@@ -641,7 +913,9 @@ public function jWSWithUnencodedPayloadButCritHeaderIsNotAnArray(): void
public function jWSWithUnencodedPayloadButCritHeaderDoesNotContainB64(): void
{
$this->expectException(LogicException::class);
- $this->expectExceptionMessage('The protected header parameter "crit" must contain "b64" when protected header parameter "b64" is set.');
+ $this->expectExceptionMessage(
+ 'The protected header parameter "crit" must contain "b64" when protected header parameter "b64" is set.'
+ );
$payload = '$.02';
$protectedHeader = [
@@ -655,13 +929,18 @@ public function jWSWithUnencodedPayloadButCritHeaderDoesNotContainB64(): void
'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
]);
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS256']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS256'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload($payload, true)
+ ->create()
+ ->withPayload($payload, true)
->addSignature($key, $protectedHeader)
->build()
;
- $this->getJWSSerializerManager()->serialize('jws_compact', $jws, 0);
+ $this->getJWSSerializerManager()
+ ->serialize('jws_compact', $jws, 0)
+ ;
}
/**
@@ -690,22 +969,31 @@ public function flattenedJSONWithUnencodedPayload(): void
'signature' => 'A5dxf2s96_n5FLueVuW1Z_vh161FwXZC4YLPff6dmDY',
];
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS256']);
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['HS256']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS256'])
+ ;
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['HS256'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload($payload)
+ ->create()
+ ->withPayload($payload)
->addSignature($key, $protectedHeader)
->build()
;
- $jws = $this->getJWSSerializerManager()->serialize('jws_json_flattened', $jws, 0);
+ $jws = $this->getJWSSerializerManager()
+ ->serialize('jws_json_flattened', $jws, 0)
+ ;
- static::assertEquals($expected_result, json_decode($jws, true));
+ static::assertEqualsCanonicalizing($expected_result, json_decode($jws, true, 512, JSON_THROW_ON_ERROR));
- $loaded = $this->getJWSSerializerManager()->unserialize($jws);
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($jws)
+ ;
static::assertTrue($jwsVerifier->verifyWithKey($loaded, $key, 0));
- static::assertEquals($payload, $loaded->getPayload());
- static::assertEquals($protectedHeader, $loaded->getSignature(0)->getProtectedHeader());
+ static::assertSame($payload, $loaded->getPayload());
+ static::assertSame($protectedHeader, $loaded->getSignature(0)->getProtectedHeader());
}
/**
@@ -733,15 +1021,20 @@ public function flattenedJSONWithUnencodedDetachedPayload(): void
'signature' => 'A5dxf2s96_n5FLueVuW1Z_vh161FwXZC4YLPff6dmDY',
];
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS256']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS256'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload($payload, true)
+ ->create()
+ ->withPayload($payload, true)
->addSignature($key, $protectedHeader)
->build()
;
- $jws = $this->getJWSSerializerManager()->serialize('jws_json_flattened', $jws, 0);
+ $jws = $this->getJWSSerializerManager()
+ ->serialize('jws_json_flattened', $jws, 0)
+ ;
- static::assertEquals($expected_result, json_decode($jws, true));
+ static::assertSame($expected_result, json_decode($jws, true));
}
/**
@@ -755,11 +1048,15 @@ public function signAndLoadWithoutAlgParameterInTheHeader(): void
$payload = "It\xe2\x80\x99s a dangerous business, Frodo, going out your door. You step onto the road, and if you don't keep your feet, there\xe2\x80\x99s no knowing where you might be swept off to.";
$jws = 'eyJraWQiOiJiaWxiby5iYWdnaW5zQGhvYmJpdG9uLmV4YW1wbGUifQ.SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4.MRjdkly7_-oTPTS3AXP41iQIGKa80A0ZmTuV5MEaHoxnW2e5CZ5NlKtainoFmKZopdHM1O2U4mwzJdQx996ivp83xuglII7PNDi84wnB-BDkoBwA78185hX-Es4JIwmDLJK3lfWRa-XtL0RnltuYv746iYTh_qHRD68BNt1uSNCrUCTJDt5aAE6x8wW1Kt9eRo4QPocSadnHXFxnt8Is9UzpERV0ePPQdLuW3IS_de3xyIrDaLGdjluPxUAhb6L2aXic1U12podGU0KLUQSE_oI-ZnmKJ3F4uOZDnd6QZWJushZ41Axf_fcIe8u9ipH84ogoree7vjbU5y18kDquDg';
- $jwsVerifier = $this->getJWSVerifierFactory()->create([]);
- $loaded = $this->getJWSSerializerManager()->unserialize($jws);
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create([])
+ ;
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($jws)
+ ;
- static::assertEquals(1, $loaded->countSignatures());
- static::assertEquals($payload, $loaded->getPayload());
+ static::assertSame(1, $loaded->countSignatures());
+ static::assertSame($payload, $loaded->getPayload());
static::assertTrue($jwsVerifier->verifyWithKeySet($loaded, $this->getSymmetricKeySet(), 0));
}
@@ -769,23 +1066,39 @@ public function signAndLoadWithoutAlgParameterInTheHeader(): void
*/
public function signAndLoadJWKSet(): void
{
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS512', 'RS512']);
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['HS512', 'RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS512', 'RS512'])
+ ;
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['HS512', 'RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload(json_encode($this->getKeyset()))
- ->addSignature($this->getKey1(), ['alg' => 'HS512'], ['foo' => 'bar'])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload(json_encode($this->getKeyset()))
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ ], [
+ 'foo' => 'bar',
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- $loaded = $this->getJWSSerializerManager()->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0));
- static::assertEquals(2, $loaded->countSignatures());
- static::assertEquals($this->getKeyset(), JWKSet::createFromKeyData(json_decode($loaded->getPayload(), true)));
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0))
+ ;
+ static::assertSame(2, $loaded->countSignatures());
+ static::assertEqualsCanonicalizing(
+ $this->getKeyset(),
+ JWKSet::createFromKeyData(json_decode($loaded->getPayload(), true, 512, JSON_THROW_ON_ERROR))
+ );
static::assertTrue($jwsVerifier->verifyWithKeySet($loaded, $this->getSymmetricKeySet(), 0));
static::assertTrue($jwsVerifier->verifyWithKeySet($loaded, $this->getPublicKeySet(), 1));
- static::assertEquals('HS512', $loaded->getSignature(0)->getProtectedHeaderParameter('alg'));
- static::assertEquals('RS512', $loaded->getSignature(1)->getProtectedHeaderParameter('alg'));
+ static::assertSame('HS512', $loaded->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('RS512', $loaded->getSignature(1)->getProtectedHeaderParameter('alg'));
}
/**
@@ -796,20 +1109,39 @@ public function keySetIsEmpty(): void
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('There is no key in the key set.');
- $jwsBuilder = $this->getJWSBuilderFactory()->create(['HS512', 'RS512']);
- $jwsVerifier = $this->getJWSVerifierFactory()->create(['HS512', 'RS512']);
+ $jwsBuilder = $this->getJWSBuilderFactory()
+ ->create(['HS512', 'RS512'])
+ ;
+ $jwsVerifier = $this->getJWSVerifierFactory()
+ ->create(['HS512', 'RS512'])
+ ;
$jws = $jwsBuilder
- ->create()->withPayload(json_encode($this->getKeyset()))
- ->addSignature($this->getKey1(), ['alg' => 'HS512', ['foo' => 'bar']])
- ->addSignature($this->getKey2(), ['alg' => 'RS512'])
+ ->create()
+ ->withPayload(json_encode($this->getKeyset()))
+ ->addSignature($this->getKey1(), [
+ 'alg' => 'HS512',
+ [
+ 'foo' => 'bar',
+ ],
+ ])
+ ->addSignature($this->getKey2(), [
+ 'alg' => 'RS512',
+ ])
->build()
;
- $loaded = $this->getJWSSerializerManager()->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0));
- static::assertEquals(2, $loaded->countSignatures());
- static::assertEquals($this->getKeyset(), JWKSet::createFromKeyData(json_decode($loaded->getPayload(), true)));
+ $loaded = $this->getJWSSerializerManager()
+ ->unserialize($this->getJWSSerializerManager()->serialize('jws_json_general', $jws, 0))
+ ;
+ static::assertSame(2, $loaded->countSignatures());
+ static::assertEqualsCanonicalizing(
+ $this->getKeyset(),
+ JWKSet::createFromKeyData(json_decode($loaded->getPayload(), true, 512, JSON_THROW_ON_ERROR))
+ );
static::assertTrue($jwsVerifier->verifyWithKeySet($loaded, new JWKSet([]), 0));
- static::assertTrue($jwsVerifier->verifyWithKey($loaded, new JWK(['kty' => 'EC']), 1));
+ static::assertTrue($jwsVerifier->verifyWithKey($loaded, new JWK([
+ 'kty' => 'EC',
+ ]), 1));
}
private function getKey1(): JWK
@@ -891,76 +1223,82 @@ private function getKeyset(): JWKSet
private function getPublicKeySet(): JWKSet
{
- $keys = ['keys' => [
- [
- 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
- 'kty' => 'RSA',
- 'alg' => 'RS256',
- 'use' => 'sig',
- 'n' => 'vnMTRCMvsS04M1yaKR112aB8RxOkWHFixZO68wCRlVLxK4ugckXVD_Ebcq-kms1T2XpoWntVfBuX40r2GvcD9UsTFt_MZlgd1xyGwGV6U_tfQUll5mKxCPjr60h83LXKJ_zmLXIqkV8tAoIg78a5VRWoms_0Bn09DKT3-RBWFjk=',
- 'e' => 'AQAB',
- ],
- [
- 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
- 'kty' => 'RSA',
- 'alg' => 'RS256',
- 'use' => 'sig',
- 'n' => 'rI67uHIDWDgCy_Ut-FhhjTCkEcqzoO80IRgdpk_fJHlDmXhMTJKPizxbIEMs0wRHRZpwH-4D20thpnQB5Mgx6-XM9kOvcYpHSdcYME77BwX6uQG-hw2w77NOhYiCSZCLzx-5ld5Wjy0dympL-ExqQw-wrWipMX7NQhIbJqVbZ18=',
- 'e' => 'AQAB',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
- 'e' => 'AQAB',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
- 'e' => 'AQAB',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
- 'e' => 'AQAB',
- ],
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
- 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ $keys = [
+ 'keys' => [
+ [
+ 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8',
+ 'kty' => 'RSA',
+ 'alg' => 'RS256',
+ 'use' => 'sig',
+ 'n' => 'vnMTRCMvsS04M1yaKR112aB8RxOkWHFixZO68wCRlVLxK4ugckXVD_Ebcq-kms1T2XpoWntVfBuX40r2GvcD9UsTFt_MZlgd1xyGwGV6U_tfQUll5mKxCPjr60h83LXKJ_zmLXIqkV8tAoIg78a5VRWoms_0Bn09DKT3-RBWFjk=',
+ 'e' => 'AQAB',
+ ],
+ [
+ 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8',
+ 'kty' => 'RSA',
+ 'alg' => 'RS256',
+ 'use' => 'sig',
+ 'n' => 'rI67uHIDWDgCy_Ut-FhhjTCkEcqzoO80IRgdpk_fJHlDmXhMTJKPizxbIEMs0wRHRZpwH-4D20thpnQB5Mgx6-XM9kOvcYpHSdcYME77BwX6uQG-hw2w77NOhYiCSZCLzx-5ld5Wjy0dympL-ExqQw-wrWipMX7NQhIbJqVbZ18=',
+ 'e' => 'AQAB',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
+ 'e' => 'AQAB',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
+ 'e' => 'AQAB',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
+ 'e' => 'AQAB',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
+ 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-521',
+ 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
+ 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
+ ],
],
- [
- 'kty' => 'EC',
- 'crv' => 'P-521',
- 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
- 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
- ],
- ]];
+ ];
return JWKSet::createFromKeyData($keys);
}
private function getSymmetricKeySet(): JWKSet
{
- $keys = ['keys' => [
- [
- 'kid' => 'DIR_1',
- 'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded(hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F')),
- ],
- [
- 'kty' => 'oct',
- 'k' => 'f5aN5V6iihwQVqP-tPNNtkIJNCwUb9-JukCIKkF0rNfxqxA771RJynYAT2xtzAP0MYaR7U5fMP_wvbRQq5l38Q',
+ $keys = [
+ 'keys' => [
+ [
+ 'kid' => 'DIR_1',
+ 'kty' => 'oct',
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F')
+ ),
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'f5aN5V6iihwQVqP-tPNNtkIJNCwUb9-JukCIKkF0rNfxqxA771RJynYAT2xtzAP0MYaR7U5fMP_wvbRQq5l38Q',
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'GawgguFyGrWKav7AX4VKUg',
+ ],
+ [
+ 'kty' => 'oct',
+ 'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
+ ],
],
- [
- 'kty' => 'oct',
- 'k' => 'GawgguFyGrWKav7AX4VKUg',
- ],
- [
- 'kty' => 'oct',
- 'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow',
- ],
- ]];
+ ];
return JWKSet::createFromKeyData($keys);
}
diff --git a/tests/ComposerJsonTest.php b/tests/ComposerJsonTest.php
index f9797e0a..a18649ba 100644
--- a/tests/ComposerJsonTest.php
+++ b/tests/ComposerJsonTest.php
@@ -2,30 +2,23 @@
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;
use DirectoryIterator;
+use function in_array;
+use const JSON_THROW_ON_ERROR;
use PHPUnit\Framework\TestCase;
use Traversable;
/**
* @internal
* @note Courtesy of @scheb
- * @author Christian Scheb (https://github.com/scheb)
+ *
* @see https://github.com/scheb/2fa/commit/94ff439212f465d8c9d146bf87d82ca32c4c4cbc#commitcomment-41153585
*/
-class ComposerJsonTest extends TestCase
+final class ComposerJsonTest extends TestCase
{
- private const SRC_DIR = __DIR__.'/../src';
+ private const SRC_DIR = __DIR__ . '/../src';
/**
* @test
@@ -33,28 +26,40 @@ class ComposerJsonTest extends TestCase
public function packageDependenciesEqualRootDependencies(): void
{
$usedDependencies = ['symfony/symfony']; // Some builds add this to composer.json
- $rootDependencies = $this->getComposerDependencies(__DIR__.'/../composer.json');
+ $rootDependencies = $this->getComposerDependencies(__DIR__ . '/../composer.json');
foreach ($this->listSubPackages() as $package) {
- $packageDependencies = $this->getComposerDependencies($package.'/composer.json');
+ $packageDependencies = $this->getComposerDependencies($package . '/composer.json');
foreach ($packageDependencies as $dependency => $version) {
// Skip web-auth/* dependencies
- if (0 === mb_strpos($dependency, 'web-token/')) {
+ if (str_starts_with($dependency, 'web-token/')) {
continue;
}
- $message = sprintf('Dependency "%s" from package "%s" is not defined in root composer.json', $dependency, $package);
+ $message = sprintf(
+ 'Dependency "%s" from package "%s" is not defined in root composer.json',
+ $dependency,
+ $package
+ );
static::assertArrayHasKey($dependency, $rootDependencies, $message);
- $message = sprintf('Dependency "%s:%s" from package "%s" requires a different version in the root composer.json', $dependency, $version, $package);
- static::assertEquals($version, $rootDependencies[$dependency], $message);
+ $message = sprintf(
+ 'Dependency "%s:%s" from package "%s" requires a different version in the root composer.json',
+ $dependency,
+ $version,
+ $package
+ );
+ static::assertSame($version, $rootDependencies[$dependency], $message);
$usedDependencies[] = $dependency;
}
}
$unusedDependencies = array_diff(array_keys($rootDependencies), array_unique($usedDependencies));
- $message = sprintf('Dependencies declared in root composer.json, which are not declared in any sub-package: %s', implode($unusedDependencies));
+ $message = sprintf(
+ 'Dependencies declared in root composer.json, which are not declared in any sub-package: %s',
+ implode('', $unusedDependencies)
+ );
static::assertCount(0, $unusedDependencies, $message);
}
@@ -63,9 +68,9 @@ public function packageDependenciesEqualRootDependencies(): void
*/
public function rootReplacesSubPackages(): void
{
- $rootReplaces = $this->getComposerReplaces(__DIR__.'/../composer.json');
+ $rootReplaces = $this->getComposerReplaces(__DIR__ . '/../composer.json');
foreach ($this->listSubPackages() as $path) {
- $packageName = $this->getComposerPackageName($path.'/composer.json');
+ $packageName = $this->getComposerPackageName($path . '/composer.json');
$message = sprintf('Root composer.json must replace the sub-packages "%s"', $packageName);
static::assertArrayHasKey($packageName, $rootReplaces, $message);
}
@@ -79,15 +84,14 @@ private function listSubPackages(?string $path = self::SRC_DIR): Traversable
'EncryptionAlgorithm',
'ContentEncryption',
'KeyEncryption',
- 'SignatureAlgorithm'
+ 'SignatureAlgorithm',
];
foreach (new DirectoryIterator($path) as $dirInfo) {
if (in_array($dirInfo->getFilename(), $packageFolders, true)) {
yield from $this->listSubPackages($dirInfo->getRealPath());
- } else if ($dirInfo->isDir() && !$dirInfo->isDot() && $dirInfo->getFilename() !== '.github') {
+ } elseif ($dirInfo->isDir() && ! $dirInfo->isDot() && $dirInfo->getFilename() !== '.github') {
yield $dirInfo->getRealPath();
}
-
}
}
@@ -108,6 +112,6 @@ private function getComposerReplaces(string $composerFilePath): array
private function parseComposerFile(string $composerFilePath): array
{
- return json_decode(file_get_contents($composerFilePath), true);
+ return json_decode(file_get_contents($composerFilePath), true, 512, JSON_THROW_ON_ERROR);
}
}
diff --git a/tests/Easy/AlgorithmProviderTest.php b/tests/Easy/AlgorithmProviderTest.php
deleted file mode 100644
index f901c8ca..00000000
--- a/tests/Easy/AlgorithmProviderTest.php
+++ /dev/null
@@ -1,168 +0,0 @@
-getAlgorithmClasses());
- }
-
- /**
- * @test
- *
- * @throws Exception
- * @throws ExpectationFailedException
- */
- public function itReturnsTheAvailableAlgorithms(): void
- {
- $algorithmProvider = new AlgorithmProvider(self::ALL_ALGORITHMS);
- foreach ($algorithmProvider->getAvailableAlgorithms() as $algorithm) {
- static::assertContains(get_class($algorithm), self::ALL_ALGORITHMS);
- }
- }
-
- /**
- * @test
- *
- * @throws ExpectationFailedException
- * @throws \Exception
- */
- public function itAllowsNonExistingClasses(): void
- {
- $nonExistingClassName = 'NonExistingClass'.bin2hex(random_bytes(31));
- $algorithmProvider = new AlgorithmProvider([$nonExistingClassName]);
-
- static::assertSame([$nonExistingClassName], $algorithmProvider->getAlgorithmClasses());
- static::assertSame([], $algorithmProvider->getAvailableAlgorithms());
- }
-
- /**
- * @test
- *
- * @throws ExpectationFailedException
- */
- public function itCanHandleClassesWithExceptions(): void
- {
- $test = [$this->createAlgorithmClassWithExceptionMock()];
- $algorithmProvider = new AlgorithmProvider($test);
-
- static::assertSame($test, $algorithmProvider->getAlgorithmClasses());
- static::assertSame([], $algorithmProvider->getAvailableAlgorithms());
- }
-
- private function createAlgorithmClassWithExceptionMock(): string
- {
- $mockClass = new class() implements Algorithm\SignatureAlgorithm {
- /** @var bool */
- private static $throw;
-
- public function __construct()
- {
- if (null === self::$throw) {
- self::$throw = true;
-
- return;
- }
-
- throw new BadFunctionCallException('should not be called');
- }
-
- public function name(): string
- {
- throw new BadFunctionCallException('should not be called');
- }
-
- public function allowedKeyTypes(): array
- {
- throw new BadFunctionCallException('should not be called');
- }
-
- public function sign(JWK $key, string $input): string
- {
- throw new BadFunctionCallException('should not be called');
- }
-
- public function verify(JWK $key, string $input, string $signature): bool
- {
- throw new BadFunctionCallException('should not be called');
- }
- };
-
- return get_class($mockClass);
- }
-}
diff --git a/tests/Easy/EncryptionTest.php b/tests/Easy/EncryptionTest.php
deleted file mode 100644
index b969e834..00000000
--- a/tests/Easy/EncryptionTest.php
+++ /dev/null
@@ -1,141 +0,0 @@
-exp($time + 3600)
- ->iat($time)
- ->nbf($time)
- ->jti('0123456789', true)
- ->iss('issuer')
- ->aud('audience1')
- ->aud('audience2')
- ->sub('subject')
- ->alg('RSA-OAEP-256')
- ->enc('A256GCM')
- ->zip('DEF')
- ->claim('is_root', true)
- ->claim('roles', ['ROLE1' => true, 'ROLE2' => 0.007])
- ->crit(['alg', 'enc'])
- ->encrypt($this->rsaKey())
- ;
-
- $jwt = Load::jwe($jwe)
- ->algs(['RSA-OAEP', 'RSA-OAEP-256'])
- ->encs(['A128GCM', 'A256GCM'])
- ->exp()
- ->iat()
- ->nbf()
- ->aud('audience1')
- ->iss('issuer')
- ->sub('subject')
- ->jti('0123456789')
- ->key($this->rsaKey())
- ->run()
- ;
-
- static::assertEquals($time, $jwt->claims->iat());
- static::assertEquals($time, $jwt->claims->nbf());
- static::assertEquals($time + 3600, $jwt->claims->exp());
- static::assertEquals('0123456789', $jwt->claims->jti());
- static::assertEquals('issuer', $jwt->claims->iss());
- static::assertEquals('subject', $jwt->claims->sub());
- static::assertEquals(['audience1', 'audience2'], $jwt->claims->aud());
- static::assertEquals(true, $jwt->claims->is_root());
- static::assertEquals(['ROLE1' => true, 'ROLE2' => 0.007], $jwt->claims->roles());
-
- static::assertEquals(['jti' => '0123456789', 'alg' => 'RSA-OAEP-256', 'enc' => 'A256GCM', 'crit' => ['alg', 'enc'], 'zip' => 'DEF'], $jwt->header->all());
- static::assertEquals('RSA-OAEP-256', $jwt->header->alg());
- static::assertEquals('A256GCM', $jwt->header->enc());
- static::assertEquals('0123456789', $jwt->header->jti());
- }
-
- /**
- * @test
- */
- public function jweCanBeCreatedWithCustomAlgorithm(): void
- {
- $time = time();
- $jwe = Build::jwe()
- ->exp($time + 3600)
- ->iat($time)
- ->nbf($time)
- ->jti('0123456789')
- ->alg(new RSAOAEP512())
- ->enc(new A256CCM_16_128())
- ->encrypt($this->rsaKey())
- ;
-
- $jwt = Load::jwe($jwe)
- ->algs(['RSA-OAEP', new RSAOAEP512()])
- ->encs(['A128GCM', new A256CCM_16_128()])
- ->exp()
- ->iat()
- ->nbf()
- ->aud('audience1')
- ->iss('issuer')
- ->sub('subject')
- ->jti('0123456789')
- ->key($this->rsaKey())
- ->run()
- ;
- static::assertEquals($time, $jwt->claims->iat());
- static::assertEquals($time, $jwt->claims->nbf());
- static::assertEquals($time + 3600, $jwt->claims->exp());
- static::assertEquals('0123456789', $jwt->claims->jti());
-
- static::assertEquals('RSA-OAEP-512', $jwt->header->alg());
- static::assertEquals('A256CCM-16-128', $jwt->header->enc());
- }
-
- private function rsaKey(): JWK
- {
- return new JWK([
- 'kty' => 'RSA',
- 'kid' => 'bilbo.baggins@hobbiton.example',
- 'use' => 'enc',
- 'n' => 'n4EPtAOCc9AlkeQHPzHStgAbgs7bTZLwUBZdR8_KuKPEHLd4rHVTeT-O-XV2jRojdNhxJWTDvNd7nqQ0VEiZQHz_AJmSCpMaJMRBSFKrKb2wqVwGU_NsYOYL-QtiWN2lbzcEe6XC0dApr5ydQLrHqkHHig3RBordaZ6Aj-oBHqFEHYpPe7Tpe-OfVfHd1E6cS6M1FZcD1NNLYD5lFHpPI9bTwJlsde3uhGqC0ZCuEHg8lhzwOHrtIQbS0FVbb9k3-tVTU4fg_3L_vniUFAKwuCLqKnS2BYwdq_mzSnbLY7h_qixoR7jig3__kRhuaxwUkRz5iaiQkqgc5gHdrNP5zw',
- 'e' => 'AQAB',
- 'd' => 'bWUC9B-EFRIo8kpGfh0ZuyGPvMNKvYWNtB_ikiH9k20eT-O1q_I78eiZkpXxXQ0UTEs2LsNRS-8uJbvQ-A1irkwMSMkK1J3XTGgdrhCku9gRldY7sNA_AKZGh-Q661_42rINLRCe8W-nZ34ui_qOfkLnK9QWDDqpaIsA-bMwWWSDFu2MUBYwkHTMEzLYGqOe04noqeq1hExBTHBOBdkMXiuFhUq1BU6l-DqEiWxqg82sXt2h-LMnT3046AOYJoRioz75tSUQfGCshWTBnP5uDjd18kKhyv07lhfSJdrPdM5Plyl21hsFf4L_mHCuoFau7gdsPfHPxxjVOcOpBrQzwQ',
- 'p' => '3Slxg_DwTXJcb6095RoXygQCAZ5RnAvZlno1yhHtnUex_fp7AZ_9nRaO7HX_-SFfGQeutao2TDjDAWU4Vupk8rw9JR0AzZ0N2fvuIAmr_WCsmGpeNqQnev1T7IyEsnh8UMt-n5CafhkikzhEsrmndH6LxOrvRJlsPp6Zv8bUq0k',
- 'q' => 'uKE2dh-cTf6ERF4k4e_jy78GfPYUIaUyoSSJuBzp3Cubk3OCqs6grT8bR_cu0Dm1MZwWmtdqDyI95HrUeq3MP15vMMON8lHTeZu2lmKvwqW7anV5UzhM1iZ7z4yMkuUwFWoBvyY898EXvRD-hdqRxHlSqAZ192zB3pVFJ0s7pFc',
- 'dp' => 'B8PVvXkvJrj2L-GYQ7v3y9r6Kw5g9SahXBwsWUzp19TVlgI-YV85q1NIb1rxQtD-IsXXR3-TanevuRPRt5OBOdiMGQp8pbt26gljYfKU_E9xn-RULHz0-ed9E9gXLKD4VGngpz-PfQ_q29pk5xWHoJp009Qf1HvChixRX59ehik',
- 'dq' => 'CLDmDGduhylc9o7r84rEUVn7pzQ6PF83Y-iBZx5NT-TpnOZKF1pErAMVeKzFEl41DlHHqqBLSM0W1sOFbwTxYWZDm6sI6og5iTbwQGIC3gnJKbi_7k_vJgGHwHxgPaX2PnvP-zyEkDERuf-ry4c_Z11Cq9AqC2yeL6kdKT1cYF8',
- 'qi' => '3PiqvXQN0zwMeE-sBvZgi289XP9XCQF3VWqPzMKnIgQp7_Tugo6-NZBKCQsMf3HaEGBjTVJs_jcK8-TRXvaKe-7ZMaQj8VfBdYkssbu0NKDDhjJ-GtiseaDVWt7dcH0cfwxgFUHpQh7FoCrjFJ6h6ZEpMF6xmujs4qMpPz8aaI4',
- ]);
- }
-}
diff --git a/tests/Easy/ParameterBagTest.php b/tests/Easy/ParameterBagTest.php
deleted file mode 100644
index f9f7425a..00000000
--- a/tests/Easy/ParameterBagTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-iss('iss');
- $bag->alg('alg');
- $bag->aud(['aud']);
-
- static::assertEquals(['aud'], $bag->aud());
- static::assertEquals('iss', $bag->get('iss'));
- static::assertEquals('alg', $bag->get('alg'));
- }
-}
diff --git a/tests/Easy/SignatureTest.php b/tests/Easy/SignatureTest.php
deleted file mode 100644
index 35b15352..00000000
--- a/tests/Easy/SignatureTest.php
+++ /dev/null
@@ -1,268 +0,0 @@
-exp($time + 3600)
- ->iat($time)
- ->nbf($time)
- ->jti('0123456789', true)
- ->alg('RS512')
- ->iss('issuer')
- ->aud('audience1')
- ->aud('audience2')
- ->sub('subject')
- ->claim('is_root', true)
- ->claim('roles', ['ROLE1' => true, 'ROLE2' => 0.007])
- ->crit(['alg'])
- ->sign($this->rsaKey())
- ;
-
- $jwt = Load::jws($jws)
- ->algs(['RS256', 'RS512'])
- ->exp()
- ->iat()
- ->nbf()
- ->aud('audience1')
- ->iss('issuer')
- ->sub('subject')
- ->jti('0123456789')
- ->key($this->rsaKey())
- ->run()
- ;
-
- static::assertEquals($time, $jwt->claims->iat());
- static::assertEquals($time, $jwt->claims->nbf());
- static::assertEquals($time + 3600, $jwt->claims->exp());
- static::assertEquals('0123456789', $jwt->claims->jti());
- static::assertEquals('issuer', $jwt->claims->iss());
- static::assertEquals('subject', $jwt->claims->sub());
- static::assertEquals(['audience1', 'audience2'], $jwt->claims->aud());
- static::assertEquals(true, $jwt->claims->is_root());
- static::assertEquals(['ROLE1' => true, 'ROLE2' => 0.007], $jwt->claims->roles());
-
- static::assertEquals(['jti' => '0123456789', 'alg' => 'RS512', 'crit' => ['alg']], $jwt->header->all());
- static::assertEquals('RS512', $jwt->header->alg());
- static::assertEquals('0123456789', $jwt->header->jti());
- }
-
- /**
- * @test
- */
- public function invalidSignatureRejectsTheToken(): void
- {
- $this->expectException(Exception::class);
- $this->expectExceptionMessage('Invalid signature');
- $time = time();
- $jws = Build::jws()
- ->exp($time + 3600)
- ->iat($time)
- ->nbf($time)
- ->jti('0123456789', true)
- ->alg('HS256')
- ->iss('issuer')
- ->aud('audience1')
- ->aud('audience2')
- ->sub('subject')
- ->claim('is_root', true)
- ->claim('roles', ['ROLE1' => true, 'ROLE2' => 0.007])
- ->crit(['alg'])
- ->sign(new JWK(['kty' => 'oct', 'k' => 'foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo']))
- ;
-
- Load::jws($jws)
- ->algs(['HS256'])
- ->exp()
- ->iat()
- ->nbf()
- ->aud('audience1')
- ->iss('issuer')
- ->sub('subject')
- ->jti('0123456789')
- ->key(new JWK(['kty' => 'oct', 'k' => 'BARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBAR']))
- ->run()
- ;
- }
-
- /**
- * @test
- */
- public function algorithmIsNotAllowed(): void
- {
- $this->expectException(InvalidArgumentException::class);
- $this->expectExceptionMessage('The algorithm "none" is not supported.');
- $time = time();
- $jws = Build::jws()
- ->exp($time + 3600)
- ->iat($time)
- ->nbf($time)
- ->jti('0123456789', true)
- ->alg('none')
- ->iss('issuer')
- ->aud('audience1')
- ->aud('audience2')
- ->sub('subject')
- ->claim('is_root', true)
- ->claim('roles', ['ROLE1' => true, 'ROLE2' => 0.007])
- ->crit(['alg'])
- ->sign($this->noneKey())
- ;
-
- Load::jws($jws)
- ->algs(['HS256'])
- ->exp()
- ->iat()
- ->nbf()
- ->aud('audience1')
- ->iss('issuer')
- ->sub('subject')
- ->jti('0123456789')
- ->key(new JWK(['kty' => 'oct', 'k' => 'BARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBARBAR']))
- ->run()
- ;
- }
-
- /**
- * @test
- */
- public function tokenExpired(): void
- {
- $this->expectException(InvalidClaimException::class);
- $this->expectExceptionMessage('The token expired.');
- $time = time();
- $jws = Build::jws()
- ->exp($time - 1)
- ->iat($time)
- ->nbf($time)
- ->jti('0123456789', true)
- ->alg('RS256')
- ->iss('issuer')
- ->aud('audience1')
- ->aud('audience2')
- ->sub('subject')
- ->claim('is_root', true)
- ->claim('roles', ['ROLE1' => true, 'ROLE2' => 0.007])
- ->crit(['alg'])
- ->sign($this->rsaKey())
- ;
-
- Load::jws($jws)
- ->algs(['RS256'])
- ->exp()
- ->iat()
- ->nbf()
- ->aud('audience1')
- ->iss('issuer')
- ->sub('subject')
- ->jti('0123456789')
- ->key($this->rsaKey())
- ->run()
- ;
- }
-
- /**
- * @test
- */
- public function jwsCanBeCreatedWithCustomAlgorithm(): void
- {
- $time = time();
- $jws = Build::jws()
- ->exp($time + 3600)
- ->iat($time)
- ->nbf($time)
- ->jti('0123456789')
- ->alg(new HS1())
- ->sign($this->octKey())
- ;
-
- $jwt = Load::jws($jws)
- ->algs(['RS256', new HS1()])
- ->exp()
- ->iat()
- ->nbf()
- ->aud('audience1')
- ->iss('issuer')
- ->sub('subject')
- ->jti('0123456789')
- ->key($this->octKey())
- ->run()
- ;
-
- static::assertEquals($time, $jwt->claims->iat());
- static::assertEquals($time, $jwt->claims->nbf());
- static::assertEquals($time + 3600, $jwt->claims->exp());
- static::assertEquals('0123456789', $jwt->claims->jti());
-
- static::assertEquals('HS1', $jwt->header->alg());
- }
-
- private function rsaKey(): JWK
- {
- return new JWK([
- 'kty' => 'RSA',
- 'kid' => 'bilbo.baggins@hobbiton.example',
- 'use' => 'sig',
- 'n' => 'n4EPtAOCc9AlkeQHPzHStgAbgs7bTZLwUBZdR8_KuKPEHLd4rHVTeT-O-XV2jRojdNhxJWTDvNd7nqQ0VEiZQHz_AJmSCpMaJMRBSFKrKb2wqVwGU_NsYOYL-QtiWN2lbzcEe6XC0dApr5ydQLrHqkHHig3RBordaZ6Aj-oBHqFEHYpPe7Tpe-OfVfHd1E6cS6M1FZcD1NNLYD5lFHpPI9bTwJlsde3uhGqC0ZCuEHg8lhzwOHrtIQbS0FVbb9k3-tVTU4fg_3L_vniUFAKwuCLqKnS2BYwdq_mzSnbLY7h_qixoR7jig3__kRhuaxwUkRz5iaiQkqgc5gHdrNP5zw',
- 'e' => 'AQAB',
- 'd' => 'bWUC9B-EFRIo8kpGfh0ZuyGPvMNKvYWNtB_ikiH9k20eT-O1q_I78eiZkpXxXQ0UTEs2LsNRS-8uJbvQ-A1irkwMSMkK1J3XTGgdrhCku9gRldY7sNA_AKZGh-Q661_42rINLRCe8W-nZ34ui_qOfkLnK9QWDDqpaIsA-bMwWWSDFu2MUBYwkHTMEzLYGqOe04noqeq1hExBTHBOBdkMXiuFhUq1BU6l-DqEiWxqg82sXt2h-LMnT3046AOYJoRioz75tSUQfGCshWTBnP5uDjd18kKhyv07lhfSJdrPdM5Plyl21hsFf4L_mHCuoFau7gdsPfHPxxjVOcOpBrQzwQ',
- 'p' => '3Slxg_DwTXJcb6095RoXygQCAZ5RnAvZlno1yhHtnUex_fp7AZ_9nRaO7HX_-SFfGQeutao2TDjDAWU4Vupk8rw9JR0AzZ0N2fvuIAmr_WCsmGpeNqQnev1T7IyEsnh8UMt-n5CafhkikzhEsrmndH6LxOrvRJlsPp6Zv8bUq0k',
- 'q' => 'uKE2dh-cTf6ERF4k4e_jy78GfPYUIaUyoSSJuBzp3Cubk3OCqs6grT8bR_cu0Dm1MZwWmtdqDyI95HrUeq3MP15vMMON8lHTeZu2lmKvwqW7anV5UzhM1iZ7z4yMkuUwFWoBvyY898EXvRD-hdqRxHlSqAZ192zB3pVFJ0s7pFc',
- 'dp' => 'B8PVvXkvJrj2L-GYQ7v3y9r6Kw5g9SahXBwsWUzp19TVlgI-YV85q1NIb1rxQtD-IsXXR3-TanevuRPRt5OBOdiMGQp8pbt26gljYfKU_E9xn-RULHz0-ed9E9gXLKD4VGngpz-PfQ_q29pk5xWHoJp009Qf1HvChixRX59ehik',
- 'dq' => 'CLDmDGduhylc9o7r84rEUVn7pzQ6PF83Y-iBZx5NT-TpnOZKF1pErAMVeKzFEl41DlHHqqBLSM0W1sOFbwTxYWZDm6sI6og5iTbwQGIC3gnJKbi_7k_vJgGHwHxgPaX2PnvP-zyEkDERuf-ry4c_Z11Cq9AqC2yeL6kdKT1cYF8',
- 'qi' => '3PiqvXQN0zwMeE-sBvZgi289XP9XCQF3VWqPzMKnIgQp7_Tugo6-NZBKCQsMf3HaEGBjTVJs_jcK8-TRXvaKe-7ZMaQj8VfBdYkssbu0NKDDhjJ-GtiseaDVWt7dcH0cfwxgFUHpQh7FoCrjFJ6h6ZEpMF6xmujs4qMpPz8aaI4',
- ]);
- }
-
- private function octKey(): JWK
- {
- return new JWK([
- 'kty' => 'oct',
- 'k' => 'foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo',
- ]);
- }
-
- private function noneKey(): JWK
- {
- return new JWK([
- 'kty' => 'none',
- ]);
- }
-}
diff --git a/tests/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBC_HSContentEncryptionTest.php b/tests/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBC_HSContentEncryptionTest.php
index 917d1093..2794c497 100644
--- a/tests/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBC_HSContentEncryptionTest.php
+++ b/tests/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBC_HSContentEncryptionTest.php
@@ -2,74 +2,211 @@
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\Tests\Component\Encryption\Algorithm\ContentEncryption;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A128CBCHS256;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A192CBCHS384;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A256CBCHS512;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
use ReflectionClass;
use ReflectionMethod;
use RuntimeException;
+use const STR_PAD_LEFT;
/**
- * @group AESCBC
- * @group unit
- *
* @internal
*/
-class AESCBC_HSContentEncryptionTest extends TestCase
+final class AESCBC_HSContentEncryptionTest extends TestCase
{
/**
* @see https://tools.ietf.org/html/rfc7516#appendix-B
- * @covers \Jose\Component\Encryption\Algorithm\ContentEncryption\A128CBCHS256
*
* @test
*/
public function a128CBCHS256EncryptAndDecrypt(): void
{
- $header = Base64UrlSafe::encodeUnpadded(json_encode(['alg' => 'A128KW', 'enc' => 'A128CBC-HS256']));
+ $header = Base64UrlSafe::encodeUnpadded(json_encode([
+ 'alg' => 'A128KW',
+ 'enc' => 'A128CBC-HS256',
+ ]));
$T = null;
$algorithm = new A128CBCHS256();
- $K = $this->convertArrayToBinString([4, 211, 31, 197, 84, 157, 252, 254, 11, 100, 157, 250, 63, 170, 106, 206, 107, 124, 212, 45, 111, 107, 9, 219, 200, 177, 0, 240, 143, 156, 44, 207]);
+ $K = $this->convertArrayToBinString(
+ [
+ 4,
+ 211,
+ 31,
+ 197,
+ 84,
+ 157,
+ 252,
+ 254,
+ 11,
+ 100,
+ 157,
+ 250,
+ 63,
+ 170,
+ 106,
+ 206,
+ 107,
+ 124,
+ 212,
+ 45,
+ 111,
+ 107,
+ 9,
+ 219,
+ 200,
+ 177,
+ 0,
+ 240,
+ 143,
+ 156,
+ 44,
+ 207,
+ ]
+ );
$iv = $this->convertArrayToBinString([3, 22, 60, 12, 43, 67, 104, 105, 108, 108, 105, 99, 111, 116, 104, 101]);
- $plaintext = $this->convertArrayToBinString([76, 105, 118, 101, 32, 108, 111, 110, 103, 32, 97, 110, 100, 32, 112, 114, 111, 115, 112, 101, 114, 46]);
- $expected_cyphertext = $this->convertArrayToBinString([40, 57, 83, 181, 119, 33, 133, 148, 198, 185, 243, 24, 152, 230, 6, 75, 129, 223, 127, 19, 210, 82, 183, 230, 168, 33, 215, 104, 143, 112, 56, 102]);
- $expected_T = $this->convertArrayToBinString([83, 73, 191, 98, 104, 205, 211, 128, 201, 189, 199, 133, 32, 38, 194, 85]);
+ $plaintext = $this->convertArrayToBinString(
+ [76, 105, 118, 101, 32, 108, 111, 110, 103, 32, 97, 110, 100, 32, 112, 114, 111, 115, 112, 101, 114, 46]
+ );
+ $expected_cyphertext = $this->convertArrayToBinString(
+ [
+ 40,
+ 57,
+ 83,
+ 181,
+ 119,
+ 33,
+ 133,
+ 148,
+ 198,
+ 185,
+ 243,
+ 24,
+ 152,
+ 230,
+ 6,
+ 75,
+ 129,
+ 223,
+ 127,
+ 19,
+ 210,
+ 82,
+ 183,
+ 230,
+ 168,
+ 33,
+ 215,
+ 104,
+ 143,
+ 112,
+ 56,
+ 102,
+ ]
+ );
+ $expected_T = $this->convertArrayToBinString(
+ [83, 73, 191, 98, 104, 205, 211, 128, 201, 189, 199, 133, 32, 38, 194, 85]
+ );
$cyphertext = $algorithm->encryptContent($plaintext, $K, $iv, null, $header, $T);
- static::assertEquals($expected_cyphertext, $cyphertext);
- static::assertEquals($plaintext, $algorithm->decryptContent($cyphertext, $K, $iv, null, $header, $T));
- static::assertEquals($expected_T, $T);
+ static::assertSame($expected_cyphertext, $cyphertext);
+ static::assertSame($plaintext, $algorithm->decryptContent($cyphertext, $K, $iv, null, $header, $T));
+ static::assertSame($expected_T, $T);
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\ContentEncryption\A128CBCHS256
*/
public function badTag(): void
{
$this->expectException(RuntimeException::class);
$this->expectExceptionMessage('Unable to decrypt or to verify the tag.');
- $header = Base64UrlSafe::encodeUnpadded(json_encode(['alg' => 'A128KW', 'enc' => 'A128CBC-HS256']));
+ $header = Base64UrlSafe::encodeUnpadded(json_encode([
+ 'alg' => 'A128KW',
+ 'enc' => 'A128CBC-HS256',
+ ]));
$algorithm = new A128CBCHS256();
- $K = $this->convertArrayToBinString([4, 211, 31, 197, 84, 157, 252, 254, 11, 100, 157, 250, 63, 170, 106, 206, 107, 124, 212, 45, 111, 107, 9, 219, 200, 177, 0, 240, 143, 156, 44, 207]);
+ $K = $this->convertArrayToBinString(
+ [
+ 4,
+ 211,
+ 31,
+ 197,
+ 84,
+ 157,
+ 252,
+ 254,
+ 11,
+ 100,
+ 157,
+ 250,
+ 63,
+ 170,
+ 106,
+ 206,
+ 107,
+ 124,
+ 212,
+ 45,
+ 111,
+ 107,
+ 9,
+ 219,
+ 200,
+ 177,
+ 0,
+ 240,
+ 143,
+ 156,
+ 44,
+ 207,
+ ]
+ );
$iv = $this->convertArrayToBinString([3, 22, 60, 12, 43, 67, 104, 105, 108, 108, 105, 99, 111, 116, 104, 101]);
- $cyphertext = $this->convertArrayToBinString([40, 57, 83, 181, 119, 33, 133, 148, 198, 185, 243, 24, 152, 230, 6, 75, 129, 223, 127, 19, 210, 82, 183, 230, 168, 33, 215, 104, 143, 112, 56, 102]);
+ $cyphertext = $this->convertArrayToBinString(
+ [
+ 40,
+ 57,
+ 83,
+ 181,
+ 119,
+ 33,
+ 133,
+ 148,
+ 198,
+ 185,
+ 243,
+ 24,
+ 152,
+ 230,
+ 6,
+ 75,
+ 129,
+ 223,
+ 127,
+ 19,
+ 210,
+ 82,
+ 183,
+ 230,
+ 168,
+ 33,
+ 215,
+ 104,
+ 143,
+ 112,
+ 56,
+ 102,
+ ]
+ );
$T = $this->convertArrayToBinString([83, 73, 191, 98, 104, 205, 211, 128, 201, 189, 199, 133, 32, 38, 194]);
$algorithm->decryptContent($cyphertext, $K, $iv, null, $header, $T);
@@ -77,39 +214,44 @@ public function badTag(): void
/**
* @see https://tools.ietf.org/html/rfc7518#appendix-B.1
- * @covers \Jose\Component\Encryption\Algorithm\ContentEncryption\A128CBCHS256
*
* @test
*/
public function a128CBCHS256EncryptAndDecryptBis(): void
{
- $header = Base64UrlSafe::encodeUnpadded(json_encode(['alg' => 'A128KW', 'enc' => 'A128CBC-HS256']));
+ $header = Base64UrlSafe::encodeUnpadded(json_encode([
+ 'alg' => 'A128KW',
+ 'enc' => 'A128CBC-HS256',
+ ]));
$T = null;
$algorithm = new A128CBCHS256();
$K = hex2bin('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f');
$iv = hex2bin('1af38c2dc2b96ffdd86694092341bc04');
- $plaintext = hex2bin('41206369706865722073797374656d206d757374206e6f7420626520726571756972656420746f206265207365637265742c20616e64206974206d7573742062652061626c6520746f2066616c6c20696e746f207468652068616e6473206f662074686520656e656d7920776974686f757420696e636f6e76656e69656e6365');
- $expected_cyphertext = hex2bin('c80edfa32ddf39d5ef00c0b468834279a2e46a1b8049f792f76bfe54b903a9c9a94ac9b47ad2655c5f10f9aef71427e2fc6f9b3f399a221489f16362c703233609d45ac69864e3321cf82935ac4096c86e133314c54019e8ca7980dfa4b9cf1b384c486f3a54c51078158ee5d79de59fbd34d848b3d69550a67646344427ade54b8851ffb598f7f80074b9473c82e2db');
+ $plaintext = hex2bin(
+ '41206369706865722073797374656d206d757374206e6f7420626520726571756972656420746f206265207365637265742c20616e64206974206d7573742062652061626c6520746f2066616c6c20696e746f207468652068616e6473206f662074686520656e656d7920776974686f757420696e636f6e76656e69656e6365'
+ );
+ $expected_cyphertext = hex2bin(
+ 'c80edfa32ddf39d5ef00c0b468834279a2e46a1b8049f792f76bfe54b903a9c9a94ac9b47ad2655c5f10f9aef71427e2fc6f9b3f399a221489f16362c703233609d45ac69864e3321cf82935ac4096c86e133314c54019e8ca7980dfa4b9cf1b384c486f3a54c51078158ee5d79de59fbd34d848b3d69550a67646344427ade54b8851ffb598f7f80074b9473c82e2db'
+ );
$expected_T = hex2bin('652c3fa36b0a7c5b3219fab3a30bc1c4');
$aad = hex2bin('546865207365636f6e64207072696e6369706c65206f662041756775737465204b6572636b686f666673');
$cyphertext = $algorithm->encryptContent($plaintext, $K, $iv, $aad, $header, $T);
- static::assertEquals($expected_cyphertext, $cyphertext);
+ static::assertSame($expected_cyphertext, $cyphertext);
//We invoke protected methods to test vectors directly. This is due to the encryption signature: this test case uses a string as AAD, but the algorithm uses the protected header.
$calc_method = self::getMethod(A128CBCHS256::class, 'calculateAuthenticationTag');
$check_method = self::getMethod(A128CBCHS256::class, 'isTagValid');
$T = $calc_method->invokeArgs($algorithm, [$cyphertext, $K, $iv, null, $aad]);
- static::assertEquals($expected_T, $T);
+ static::assertSame($expected_T, $T);
static::assertTrue($check_method->invokeArgs($algorithm, [$cyphertext, $K, $iv, null, $aad, $T]));
}
/**
* @see https://tools.ietf.org/html/rfc7518#appendix-B.2
- * @covers \Jose\Component\Encryption\Algorithm\ContentEncryption\A192CBCHS384
*
* @test
*/
@@ -118,29 +260,34 @@ public function a192CBCHS384EncryptAndDecrypt(): void
$header = Base64UrlSafe::encodeUnpadded(json_encode([]));
$algorithm = new A192CBCHS384();
- $K = hex2bin('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f');
+ $K = hex2bin(
+ '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f'
+ );
$iv = hex2bin('1af38c2dc2b96ffdd86694092341bc04');
- $plaintext = hex2bin('41206369706865722073797374656d206d757374206e6f7420626520726571756972656420746f206265207365637265742c20616e64206974206d7573742062652061626c6520746f2066616c6c20696e746f207468652068616e6473206f662074686520656e656d7920776974686f757420696e636f6e76656e69656e6365');
- $expected_cyphertext = hex2bin('ea65da6b59e61edb419be62d19712ae5d303eeb50052d0dfd6697f77224c8edb000d279bdc14c1072654bd30944230c657bed4ca0c9f4a8466f22b226d1746214bf8cfc2400add9f5126e479663fc90b3bed787a2f0ffcbf3904be2a641d5c2105bfe591bae23b1d7449e532eef60a9ac8bb6c6b01d35d49787bcd57ef484927f280adc91ac0c4e79c7b11efc60054e3');
+ $plaintext = hex2bin(
+ '41206369706865722073797374656d206d757374206e6f7420626520726571756972656420746f206265207365637265742c20616e64206974206d7573742062652061626c6520746f2066616c6c20696e746f207468652068616e6473206f662074686520656e656d7920776974686f757420696e636f6e76656e69656e6365'
+ );
+ $expected_cyphertext = hex2bin(
+ 'ea65da6b59e61edb419be62d19712ae5d303eeb50052d0dfd6697f77224c8edb000d279bdc14c1072654bd30944230c657bed4ca0c9f4a8466f22b226d1746214bf8cfc2400add9f5126e479663fc90b3bed787a2f0ffcbf3904be2a641d5c2105bfe591bae23b1d7449e532eef60a9ac8bb6c6b01d35d49787bcd57ef484927f280adc91ac0c4e79c7b11efc60054e3'
+ );
$expected_T = hex2bin('8490ac0e58949bfe51875d733f93ac2075168039ccc733d7');
$aad = hex2bin('546865207365636f6e64207072696e6369706c65206f662041756775737465204b6572636b686f666673');
$cyphertext = $algorithm->encryptContent($plaintext, $K, $iv, $aad, $header, $T);
- static::assertEquals($expected_cyphertext, $cyphertext);
+ static::assertSame($expected_cyphertext, $cyphertext);
//We invoke protected methods to test vectors directly. This is due to the encryption signature: this test case uses a string as AAD, but the algorithm uses the protected header.
$calc_method = self::getMethod(A128CBCHS256::class, 'calculateAuthenticationTag');
$check_method = self::getMethod(A128CBCHS256::class, 'isTagValid');
$T = $calc_method->invokeArgs($algorithm, [$cyphertext, $K, $iv, null, $aad]);
- static::assertEquals($expected_T, $T);
+ static::assertSame($expected_T, $T);
static::assertTrue($check_method->invokeArgs($algorithm, [$cyphertext, $K, $iv, null, $aad, $T]));
}
/**
* @see https://tools.ietf.org/html/rfc7518#appendix-B.3
- * @covers \Jose\Component\Encryption\Algorithm\ContentEncryption\A256CBCHS512
*
* @test
*/
@@ -149,23 +296,29 @@ public function a256CBCHS512EncryptAndDecrypt(): void
$header = Base64UrlSafe::encodeUnpadded(json_encode([]));
$algorithm = new A256CBCHS512();
- $K = hex2bin('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f');
+ $K = hex2bin(
+ '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f'
+ );
$iv = hex2bin('1af38c2dc2b96ffdd86694092341bc04');
- $plaintext = hex2bin('41206369706865722073797374656d206d757374206e6f7420626520726571756972656420746f206265207365637265742c20616e64206974206d7573742062652061626c6520746f2066616c6c20696e746f207468652068616e6473206f662074686520656e656d7920776974686f757420696e636f6e76656e69656e6365');
- $expected_cyphertext = hex2bin('4affaaadb78c31c5da4b1b590d10ffbd3dd8d5d302423526912da037ecbcc7bd822c301dd67c373bccb584ad3e9279c2e6d12a1374b77f077553df829410446b36ebd97066296ae6427ea75c2e0846a11a09ccf5370dc80bfecbad28c73f09b3a3b75e662a2594410ae496b2e2e6609e31e6e02cc837f053d21f37ff4f51950bbe2638d09dd7a4930930806d0703b1f6');
+ $plaintext = hex2bin(
+ '41206369706865722073797374656d206d757374206e6f7420626520726571756972656420746f206265207365637265742c20616e64206974206d7573742062652061626c6520746f2066616c6c20696e746f207468652068616e6473206f662074686520656e656d7920776974686f757420696e636f6e76656e69656e6365'
+ );
+ $expected_cyphertext = hex2bin(
+ '4affaaadb78c31c5da4b1b590d10ffbd3dd8d5d302423526912da037ecbcc7bd822c301dd67c373bccb584ad3e9279c2e6d12a1374b77f077553df829410446b36ebd97066296ae6427ea75c2e0846a11a09ccf5370dc80bfecbad28c73f09b3a3b75e662a2594410ae496b2e2e6609e31e6e02cc837f053d21f37ff4f51950bbe2638d09dd7a4930930806d0703b1f6'
+ );
$expected_T = hex2bin('4dd3b4c088a7f45c216839645b2012bf2e6269a8c56a816dbc1b267761955bc5');
$aad = hex2bin('546865207365636f6e64207072696e6369706c65206f662041756775737465204b6572636b686f666673');
$cyphertext = $algorithm->encryptContent($plaintext, $K, $iv, $aad, $header, $T);
- static::assertEquals($expected_cyphertext, $cyphertext);
+ static::assertSame($expected_cyphertext, $cyphertext);
//We invoke protected methods to test vectors directly. This is due to the encryption signature: this test case uses a string as AAD, but the algorithm uses the protected header.
$calc_method = self::getMethod(A128CBCHS256::class, 'calculateAuthenticationTag');
$check_method = self::getMethod(A128CBCHS256::class, 'isTagValid');
$T = $calc_method->invokeArgs($algorithm, [$cyphertext, $K, $iv, null, $aad]);
- static::assertEquals($expected_T, $T);
+ static::assertSame($expected_T, $T);
static::assertTrue($check_method->invokeArgs($algorithm, [$cyphertext, $K, $iv, null, $aad, $T]));
}
diff --git a/tests/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCMContentEncryptionTest.php b/tests/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCMContentEncryptionTest.php
index d92bacb1..f671c2bb 100644
--- a/tests/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCMContentEncryptionTest.php
+++ b/tests/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCMContentEncryptionTest.php
@@ -2,37 +2,29 @@
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\Tests\Component\Encryption\Algorithm\ContentEncryption;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A128GCM;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A192GCM;
use Jose\Component\Encryption\Algorithm\ContentEncryption\A256GCM;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
+use const STR_PAD_LEFT;
/**
- * @group unit
- *
* @internal
*/
-class AESGCMContentEncryptionTest extends TestCase
+final class AESGCMContentEncryptionTest extends TestCase
{
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\ContentEncryption\A128GCM
*/
public function a128GCMEncryptAndDecrypt(): void
{
- $header = Base64UrlSafe::encodeUnpadded(json_encode(['alg' => 'ECDH-ES', 'enc' => 'A128GCM']));
+ $header = Base64UrlSafe::encodeUnpadded(json_encode([
+ 'alg' => 'ECDH-ES',
+ 'enc' => 'A128GCM',
+ ]));
$tag = null;
$algorithm = new A128GCM();
@@ -44,16 +36,18 @@ public function a128GCMEncryptAndDecrypt(): void
$cyphertext = $algorithm->encryptContent($plaintext, $cek, $iv, null, $header, $tag);
static::assertNotNull($tag);
- static::assertEquals($plaintext, $algorithm->decryptContent($cyphertext, $cek, $iv, null, $header, $tag));
+ static::assertSame($plaintext, $algorithm->decryptContent($cyphertext, $cek, $iv, null, $header, $tag));
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\ContentEncryption\A192GCM
*/
public function a192GCMEncryptAndDecrypt(): void
{
- $header = Base64UrlSafe::encodeUnpadded(json_encode(['alg' => 'ECDH-ES', 'enc' => 'A192GCM']));
+ $header = Base64UrlSafe::encodeUnpadded(json_encode([
+ 'alg' => 'ECDH-ES',
+ 'enc' => 'A192GCM',
+ ]));
$tag = null;
$algorithm = new A192GCM();
@@ -65,16 +59,18 @@ public function a192GCMEncryptAndDecrypt(): void
$cyphertext = $algorithm->encryptContent($plaintext, $cek, $iv, null, $header, $tag);
static::assertNotNull($tag);
- static::assertEquals($plaintext, $algorithm->decryptContent($cyphertext, $cek, $iv, null, $header, $tag));
+ static::assertSame($plaintext, $algorithm->decryptContent($cyphertext, $cek, $iv, null, $header, $tag));
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\ContentEncryption\A256GCM
*/
public function a256GCMEncryptAndDecrypt(): void
{
- $header = Base64UrlSafe::encodeUnpadded(json_encode(['alg' => 'ECDH-ES', 'enc' => 'A256GCM']));
+ $header = Base64UrlSafe::encodeUnpadded(json_encode([
+ 'alg' => 'ECDH-ES',
+ 'enc' => 'A256GCM',
+ ]));
$tag = null;
$algorithm = new A256GCM();
@@ -86,12 +82,11 @@ public function a256GCMEncryptAndDecrypt(): void
$cyphertext = $algorithm->encryptContent($plaintext, $cek, $iv, null, $header, $tag);
static::assertNotNull($tag);
- static::assertEquals($plaintext, $algorithm->decryptContent($cyphertext, $cek, $iv, null, $header, $tag));
+ static::assertSame($plaintext, $algorithm->decryptContent($cyphertext, $cek, $iv, null, $header, $tag));
}
/**
* @see https://tools.ietf.org/html/rfc7516#appendix-A.1
- * @covers \Jose\Component\Encryption\Algorithm\ContentEncryption\A256GCM
*
* @test
*/
@@ -99,15 +94,124 @@ public function a256GCMDecryptTestVector(): void
{
$algorithm = new A256GCM();
- $header = Base64UrlSafe::encodeUnpadded(json_encode(['alg' => 'RSA-OAEP', 'enc' => 'A256GCM']));
- $cek = $this->convertArrayToBinString([177, 161, 244, 128, 84, 143, 225, 115, 63, 180, 3, 255, 107, 154, 212, 246, 138, 7, 110, 91, 112, 46, 34, 105, 47, 130, 203, 46, 122, 234, 64, 252]);
+ $header = Base64UrlSafe::encodeUnpadded(json_encode([
+ 'alg' => 'RSA-OAEP',
+ 'enc' => 'A256GCM',
+ ]));
+ $cek = $this->convertArrayToBinString(
+ [
+ 177,
+ 161,
+ 244,
+ 128,
+ 84,
+ 143,
+ 225,
+ 115,
+ 63,
+ 180,
+ 3,
+ 255,
+ 107,
+ 154,
+ 212,
+ 246,
+ 138,
+ 7,
+ 110,
+ 91,
+ 112,
+ 46,
+ 34,
+ 105,
+ 47,
+ 130,
+ 203,
+ 46,
+ 122,
+ 234,
+ 64,
+ 252,
+ ]
+ );
$iv = $this->convertArrayToBinString([227, 197, 117, 252, 2, 219, 233, 68, 180, 225, 77, 219]);
- $tag = $this->convertArrayToBinString([92, 80, 104, 49, 133, 25, 161, 215, 173, 101, 219, 211, 136, 91, 210, 145]);
- $cyphertext = $this->convertArrayToBinString([229, 236, 166, 241, 53, 191, 115, 196, 174, 43, 73, 109, 39, 122, 233, 96, 140, 206, 120, 52, 51, 237, 48, 11, 190, 219, 186, 80, 111, 104, 50, 142, 47, 167, 59, 61, 181, 127, 196, 21, 40, 82, 242, 32, 123, 143, 168, 226, 73, 216, 176, 144, 138, 247, 106, 60, 16, 205, 160, 109, 64, 63, 192]);
+ $tag = $this->convertArrayToBinString(
+ [92, 80, 104, 49, 133, 25, 161, 215, 173, 101, 219, 211, 136, 91, 210, 145]
+ );
+ $cyphertext = $this->convertArrayToBinString(
+ [
+ 229,
+ 236,
+ 166,
+ 241,
+ 53,
+ 191,
+ 115,
+ 196,
+ 174,
+ 43,
+ 73,
+ 109,
+ 39,
+ 122,
+ 233,
+ 96,
+ 140,
+ 206,
+ 120,
+ 52,
+ 51,
+ 237,
+ 48,
+ 11,
+ 190,
+ 219,
+ 186,
+ 80,
+ 111,
+ 104,
+ 50,
+ 142,
+ 47,
+ 167,
+ 59,
+ 61,
+ 181,
+ 127,
+ 196,
+ 21,
+ 40,
+ 82,
+ 242,
+ 32,
+ 123,
+ 143,
+ 168,
+ 226,
+ 73,
+ 216,
+ 176,
+ 144,
+ 138,
+ 247,
+ 106,
+ 60,
+ 16,
+ 205,
+ 160,
+ 109,
+ 64,
+ 63,
+ 192,
+ ]
+ );
$expected_plaintext = 'The true sign of intelligence is not knowledge but imagination.';
- static::assertEquals('eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ', $header);
- static::assertEquals($expected_plaintext, $algorithm->decryptContent($cyphertext, $cek, $iv, null, $header, $tag));
+ static::assertSame('eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ', $header);
+ static::assertSame(
+ $expected_plaintext,
+ $algorithm->decryptContent($cyphertext, $cek, $iv, null, $header, $tag)
+ );
}
private function convertArrayToBinString(array $data): string
diff --git a/tests/EncryptionAlgorithm/Experimental/AESCTRContentEncryptionTest.php b/tests/EncryptionAlgorithm/Experimental/AESCTRContentEncryptionTest.php
index 5df28f7a..5d74eb70 100644
--- a/tests/EncryptionAlgorithm/Experimental/AESCTRContentEncryptionTest.php
+++ b/tests/EncryptionAlgorithm/Experimental/AESCTRContentEncryptionTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Encryption\Algorithm;
use Jose\Component\Core\JWK;
@@ -20,16 +11,12 @@
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group NewAlgorithm
- *
* @internal
*/
-class AESCTRContentEncryptionTest extends TestCase
+final class AESCTRContentEncryptionTest extends TestCase
{
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A128CTR
*/
public function a128CTRKeyEncryptionAndDecryption(): void
{
@@ -42,12 +29,11 @@ public function a128CTRKeyEncryptionAndDecryption(): void
$encrypted = $algorithm->encryptKey($jwk, $cek, $header, $additionalHeader);
$decrypted = $algorithm->decryptKey($jwk, $encrypted, $additionalHeader);
- static::assertEquals($cek, $decrypted);
+ static::assertSame($cek, $decrypted);
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A128CTR
*/
public function a192CTRKeyEncryptionAndDecryption(): void
{
@@ -60,12 +46,11 @@ public function a192CTRKeyEncryptionAndDecryption(): void
$encrypted = $algorithm->encryptKey($jwk, $cek, $header, $additionalHeader);
$decrypted = $algorithm->decryptKey($jwk, $encrypted, $additionalHeader);
- static::assertEquals($cek, $decrypted);
+ static::assertSame($cek, $decrypted);
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A256CTR
*/
public function a256CTRKeyEncryptionAndDecryption(): void
{
@@ -78,7 +63,7 @@ public function a256CTRKeyEncryptionAndDecryption(): void
$encrypted = $algorithm->encryptKey($jwk, $cek, $header, $additionalHeader);
$decrypted = $algorithm->decryptKey($jwk, $encrypted, $additionalHeader);
- static::assertEquals($cek, $decrypted);
+ static::assertSame($cek, $decrypted);
}
private function getKey(): JWK
diff --git a/tests/EncryptionAlgorithm/Experimental/Chacha20Poly1305ContentEncryptionTest.php b/tests/EncryptionAlgorithm/Experimental/Chacha20Poly1305ContentEncryptionTest.php
index 8ed1b0f8..3776a250 100644
--- a/tests/EncryptionAlgorithm/Experimental/Chacha20Poly1305ContentEncryptionTest.php
+++ b/tests/EncryptionAlgorithm/Experimental/Chacha20Poly1305ContentEncryptionTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Encryption\Algorithm;
use function in_array;
@@ -19,22 +10,18 @@
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group NewAlgorithm
- *
* @internal
*/
-class Chacha20Poly1305ContentEncryptionTest extends TestCase
+final class Chacha20Poly1305ContentEncryptionTest extends TestCase
{
protected function setUp(): void
{
- if (!in_array('chacha20-poly1305', openssl_get_cipher_methods(), true)) {
+ if (! in_array('chacha20-poly1305', openssl_get_cipher_methods(), true)) {
static::markTestSkipped('The algorithm "chacha20-poly1305" is not supported in this platform.');
}
}
/**
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\Chacha20Poly1305
* @test
*/
public function contentEncryptionAndDecryption(): void
@@ -48,7 +35,7 @@ public function contentEncryptionAndDecryption(): void
$encrypted = $algorithm->encryptKey($jwk, $cek, $header, $additionalHeader);
$decrypted = $algorithm->decryptKey($jwk, $encrypted, $additionalHeader);
- static::assertEquals($cek, $decrypted);
+ static::assertSame($cek, $decrypted);
}
private function getKey(): JWK
diff --git a/tests/EncryptionAlgorithm/Experimental/RSAOAEPKeyEncryptionTest.php b/tests/EncryptionAlgorithm/Experimental/RSAOAEPKeyEncryptionTest.php
index 8a81f998..71dbc032 100644
--- a/tests/EncryptionAlgorithm/Experimental/RSAOAEPKeyEncryptionTest.php
+++ b/tests/EncryptionAlgorithm/Experimental/RSAOAEPKeyEncryptionTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Encryption\Algorithm;
use Jose\Component\Core\JWK;
@@ -21,12 +12,9 @@
/**
* Class RSAKeyEncryptionTest.
*
- * @group unit
- * @group NewAlgorithm
- *
* @internal
*/
-class RSAOAEPKeyEncryptionTest extends TestCase
+final class RSAOAEPKeyEncryptionTest extends TestCase
{
/**
* @test
@@ -42,7 +30,7 @@ public function rSAOAEP384EncryptionAndDecryption(): void
$encrypted = $algorithm->encryptKey($jwk, $cek, $header, $additionalHeader);
$decrypted = $algorithm->decryptKey($jwk, $encrypted, $header);
- static::assertEquals($cek, $decrypted);
+ static::assertSame($cek, $decrypted);
}
/**
@@ -59,7 +47,7 @@ public function rSAOAEP512EncryptionAndDecryption(): void
$encrypted = $algorithm->encryptKey($jwk, $cek, $header, $additionalHeader);
$decrypted = $algorithm->decryptKey($jwk, $encrypted, $header);
- static::assertEquals($cek, $decrypted);
+ static::assertSame($cek, $decrypted);
}
private function getKey(): JWK
diff --git a/tests/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKWKeyEncryptionTest.php b/tests/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKWKeyEncryptionTest.php
index 12cd57ff..4209652d 100644
--- a/tests/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKWKeyEncryptionTest.php
+++ b/tests/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKWKeyEncryptionTest.php
@@ -2,37 +2,24 @@
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\Tests\Component\Encryption\Algorithm\KeyEncryption;
use function array_key_exists;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A128GCMKW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A192GCMKW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A256GCMKW;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
/**
- * @group AESGCMKW
- * @group unit
- *
* @internal
*/
-class AESGCMKWKeyEncryptionTest extends TestCase
+final class AESGCMKWKeyEncryptionTest extends TestCase
{
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A128GCMKW
*/
public function a128GCMKW(): void
{
@@ -52,12 +39,11 @@ public function a128GCMKW(): void
static::assertTrue(array_key_exists('tag', $header));
static::assertNotNull($header['iv']);
static::assertNotNull($header['tag']);
- static::assertEquals($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
+ static::assertSame($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A128GCMKW
*/
public function badKey(): void
{
@@ -78,7 +64,6 @@ public function badKey(): void
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A128GCMKW
*/
public function missingParameters(): void
{
@@ -100,7 +85,6 @@ public function missingParameters(): void
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A192GCMKW
*/
public function a192GCMKW(): void
{
@@ -120,19 +104,20 @@ public function a192GCMKW(): void
static::assertTrue(array_key_exists('tag', $header));
static::assertNotNull($header['iv']);
static::assertNotNull($header['tag']);
- static::assertEquals($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
+ static::assertSame($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A256GCMKW
*/
public function a256GCMKW(): void
{
$header = [];
$key = new JWK([
'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded(hex2bin('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F')),
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ hex2bin('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F')
+ ),
]);
$cek = hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F');
@@ -145,6 +130,6 @@ public function a256GCMKW(): void
static::assertTrue(array_key_exists('tag', $header));
static::assertNotNull($header['iv']);
static::assertNotNull($header['tag']);
- static::assertEquals($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
+ static::assertSame($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
}
}
diff --git a/tests/EncryptionAlgorithm/KeyEncryption/AESKW/AESKWKeyEncryptionTest.php b/tests/EncryptionAlgorithm/KeyEncryption/AESKW/AESKWKeyEncryptionTest.php
index b0462268..a543e69e 100644
--- a/tests/EncryptionAlgorithm/KeyEncryption/AESKW/AESKWKeyEncryptionTest.php
+++ b/tests/EncryptionAlgorithm/KeyEncryption/AESKW/AESKWKeyEncryptionTest.php
@@ -2,36 +2,23 @@
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\Tests\Component\Encryption\Algorithm\KeyEncryption;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A128KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A192KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\A256KW;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
/**
- * @group AESKW
- * @group unit
- *
* @internal
*/
-class AESKWKeyEncryptionTest extends TestCase
+final class AESKWKeyEncryptionTest extends TestCase
{
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A128KW
*/
public function a128KW(): void
{
@@ -47,13 +34,15 @@ public function a128KW(): void
$wrapped_cek = $aeskw->wrapKey($key, $cek, $header, $header);
- static::assertEquals($wrapped_cek, hex2bin('11826840774D993FF9C2FA02CCA3CEA0E93B1E1CF96361F93EA6DC2F345194E7B30F964C79F9E61D'));
- static::assertEquals($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
+ static::assertSame(
+ $wrapped_cek,
+ hex2bin('11826840774D993FF9C2FA02CCA3CEA0E93B1E1CF96361F93EA6DC2F345194E7B30F964C79F9E61D')
+ );
+ static::assertSame($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A128KW
*/
public function badKey(): void
{
@@ -74,7 +63,6 @@ public function badKey(): void
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A192KW
*/
public function a192KW(): void
{
@@ -90,20 +78,24 @@ public function a192KW(): void
$wrapped_cek = $aeskw->wrapKey($key, $cek, $header, $header);
- static::assertEquals($wrapped_cek, hex2bin('08861E000AABFA4479C7191F9DC51CCA37C50F16CC14441C6EA4980CFCE0F41D9285758C6F74AC6D'));
- static::assertEquals($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
+ static::assertSame(
+ $wrapped_cek,
+ hex2bin('08861E000AABFA4479C7191F9DC51CCA37C50F16CC14441C6EA4980CFCE0F41D9285758C6F74AC6D')
+ );
+ static::assertSame($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\A256KW
*/
public function a256KW(): void
{
$header = [];
$key = new JWK([
'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded(hex2bin('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F')),
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ hex2bin('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F')
+ ),
]);
$cek = hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F');
@@ -112,7 +104,10 @@ public function a256KW(): void
$wrapped_cek = $aeskw->wrapKey($key, $cek, $header, $header);
- static::assertEquals($wrapped_cek, hex2bin('28C9F404C4B810F4CBCCB35CFB87F8263F5786E2D80ED326CBC7F0E71A99F43BFB988B9B7A02DD21'));
- static::assertEquals($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
+ static::assertSame(
+ $wrapped_cek,
+ hex2bin('28C9F404C4B810F4CBCCB35CFB87F8263F5786E2D80ED326CBC7F0E71A99F43BFB988B9B7A02DD21')
+ );
+ static::assertSame($cek, $aeskw->unwrapKey($key, $wrapped_cek, $header));
}
}
diff --git a/tests/EncryptionAlgorithm/KeyEncryption/Direct/DirAlgorithmTest.php b/tests/EncryptionAlgorithm/KeyEncryption/Direct/DirAlgorithmTest.php
index be14642d..0210e015 100644
--- a/tests/EncryptionAlgorithm/KeyEncryption/Direct/DirAlgorithmTest.php
+++ b/tests/EncryptionAlgorithm/KeyEncryption/Direct/DirAlgorithmTest.php
@@ -2,34 +2,22 @@
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\Tests\Component\Encryption\Algorithm\KeyEncryption;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Component\Encryption\Algorithm\KeyEncryption\Dir;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
/**
* Class DirAlgorithmTest.
*
- * @group unit
- *
* @internal
*/
-class DirAlgorithmTest extends TestCase
+final class DirAlgorithmTest extends TestCase
{
/**
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\Dir
* @test
*/
public function invalidKey(): void
@@ -47,7 +35,6 @@ public function invalidKey(): void
}
/**
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\Dir
* @test
*/
public function validCEK(): void
@@ -59,6 +46,6 @@ public function validCEK(): void
$dir = new Dir();
- static::assertEquals('ABCD', $dir->getCEK($key));
+ static::assertSame('ABCD', $dir->getCEK($key));
}
}
diff --git a/tests/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESKeyAgreementTest.php b/tests/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESKeyAgreementTest.php
index 8e673c39..5b48ecc5 100644
--- a/tests/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESKeyAgreementTest.php
+++ b/tests/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESKeyAgreementTest.php
@@ -2,40 +2,28 @@
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\Tests\Component\Encryption\Algorithm\KeyEncryption;
use function array_key_exists;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
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 ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
+use const STR_PAD_LEFT;
/**
* Class ECDHESKeyAgreementTest.
*
- * @group ECDHES
- * @group unit
- *
* @internal
*/
-class ECDHESKeyAgreementTest extends TestCase
+final class ECDHESKeyAgreementTest extends TestCase
{
/**
* @see https://tools.ietf.org/html/rfc7518#appendix-C
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHES
*
* @test
*/
@@ -66,11 +54,12 @@ public function getAgreementKey(): void
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHESA128KW
*/
public function getAgreementKeyWithA128KeyWrap(): void
{
- $header = ['enc' => 'A128GCM'];
+ $header = [
+ 'enc' => 'A128GCM',
+ ];
$private = new JWK([
'kty' => 'EC',
@@ -81,7 +70,40 @@ public function getAgreementKeyWithA128KeyWrap(): void
]);
$public = $private->toPublic();
- $cek = [4, 211, 31, 197, 84, 157, 252, 254, 11, 100, 157, 250, 63, 170, 106, 206, 107, 124, 212, 45, 111, 107, 9, 219, 200, 177, 0, 240, 143, 156, 44, 207];
+ $cek = [
+ 4,
+ 211,
+ 31,
+ 197,
+ 84,
+ 157,
+ 252,
+ 254,
+ 11,
+ 100,
+ 157,
+ 250,
+ 63,
+ 170,
+ 106,
+ 206,
+ 107,
+ 124,
+ 212,
+ 45,
+ 111,
+ 107,
+ 9,
+ 219,
+ 200,
+ 177,
+ 0,
+ 240,
+ 143,
+ 156,
+ 44,
+ 207,
+ ];
foreach ($cek as $key => $value) {
$cek[$key] = str_pad(dechex($value), 2, '0', STR_PAD_LEFT);
}
@@ -94,18 +116,19 @@ public function getAgreementKeyWithA128KeyWrap(): void
static::assertTrue(array_key_exists('kty', $header['epk']));
static::assertTrue(array_key_exists('x', $header['epk']));
static::assertTrue(array_key_exists('y', $header['epk']));
- static::assertEquals('P-256', $header['epk']['crv']);
- static::assertEquals('EC', $header['epk']['kty']);
- static::assertEquals($cek, $ecdh_es->unwrapAgreementKey($private, null, $encrypted_cek, 128, $header));
+ static::assertSame('P-256', $header['epk']['crv']);
+ static::assertSame('EC', $header['epk']['kty']);
+ static::assertSame($cek, $ecdh_es->unwrapAgreementKey($private, null, $encrypted_cek, 128, $header));
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHESA192KW
*/
public function getAgreementKeyWithA192KeyWrap(): void
{
- $header = ['enc' => 'A192GCM'];
+ $header = [
+ 'enc' => 'A192GCM',
+ ];
$private = new JWK([
'kty' => 'EC',
@@ -116,7 +139,40 @@ public function getAgreementKeyWithA192KeyWrap(): void
]);
$public = $private->toPublic();
- $cek = [4, 211, 31, 197, 84, 157, 252, 254, 11, 100, 157, 250, 63, 170, 106, 206, 107, 124, 212, 45, 111, 107, 9, 219, 200, 177, 0, 240, 143, 156, 44, 207];
+ $cek = [
+ 4,
+ 211,
+ 31,
+ 197,
+ 84,
+ 157,
+ 252,
+ 254,
+ 11,
+ 100,
+ 157,
+ 250,
+ 63,
+ 170,
+ 106,
+ 206,
+ 107,
+ 124,
+ 212,
+ 45,
+ 111,
+ 107,
+ 9,
+ 219,
+ 200,
+ 177,
+ 0,
+ 240,
+ 143,
+ 156,
+ 44,
+ 207,
+ ];
foreach ($cek as $key => $value) {
$cek[$key] = str_pad(dechex($value), 2, '0', STR_PAD_LEFT);
}
@@ -129,18 +185,19 @@ public function getAgreementKeyWithA192KeyWrap(): void
static::assertTrue(array_key_exists('kty', $header['epk']));
static::assertTrue(array_key_exists('x', $header['epk']));
static::assertTrue(array_key_exists('y', $header['epk']));
- static::assertEquals('P-256', $header['epk']['crv']);
- static::assertEquals('EC', $header['epk']['kty']);
- static::assertEquals($cek, $ecdh_es->unwrapAgreementKey($private, null, $encrypted_cek, 192, $header));
+ static::assertSame('P-256', $header['epk']['crv']);
+ static::assertSame('EC', $header['epk']['kty']);
+ static::assertSame($cek, $ecdh_es->unwrapAgreementKey($private, null, $encrypted_cek, 192, $header));
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHESA256KW
*/
public function getAgreementKeyWithA256KeyWrap(): void
{
- $header = ['enc' => 'A256GCM'];
+ $header = [
+ 'enc' => 'A256GCM',
+ ];
$public = new JWK([
'kty' => 'EC',
@@ -157,7 +214,40 @@ public function getAgreementKeyWithA256KeyWrap(): void
'd' => 'VEmDZpDXXK8p8N0Cndsxs924q6nS1RXFASRl6BfUqdw',
]);
- $cek = [4, 211, 31, 197, 84, 157, 252, 254, 11, 100, 157, 250, 63, 170, 106, 206, 107, 124, 212, 45, 111, 107, 9, 219, 200, 177, 0, 240, 143, 156, 44, 207];
+ $cek = [
+ 4,
+ 211,
+ 31,
+ 197,
+ 84,
+ 157,
+ 252,
+ 254,
+ 11,
+ 100,
+ 157,
+ 250,
+ 63,
+ 170,
+ 106,
+ 206,
+ 107,
+ 124,
+ 212,
+ 45,
+ 111,
+ 107,
+ 9,
+ 219,
+ 200,
+ 177,
+ 0,
+ 240,
+ 143,
+ 156,
+ 44,
+ 207,
+ ];
foreach ($cek as $key => $value) {
$cek[$key] = str_pad(dechex($value), 2, '0', STR_PAD_LEFT);
}
@@ -170,14 +260,13 @@ public function getAgreementKeyWithA256KeyWrap(): void
static::assertTrue(array_key_exists('kty', $header['epk']));
static::assertTrue(array_key_exists('x', $header['epk']));
static::assertTrue(array_key_exists('y', $header['epk']));
- static::assertEquals('P-256', $header['epk']['crv']);
- static::assertEquals('EC', $header['epk']['kty']);
- static::assertEquals($cek, $ecdh_es->unwrapAgreementKey($private, null, $encrypted_cek, 256, $header));
+ static::assertSame('P-256', $header['epk']['crv']);
+ static::assertSame('EC', $header['epk']['kty']);
+ static::assertSame($cek, $ecdh_es->unwrapAgreementKey($private, null, $encrypted_cek, 256, $header));
}
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHES
*/
public function ePKParameterAreMissing(): void
{
@@ -198,14 +287,15 @@ public function ePKParameterAreMissing(): void
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHES
*/
public function badEPKParameter(): void
{
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('The header parameter "epk" is not an array of parameters');
- $header = ['epk' => 'foo'];
+ $header = [
+ 'epk' => 'foo',
+ ];
$sender = new JWK([
'kty' => 'EC',
'crv' => 'P-256',
@@ -220,7 +310,6 @@ public function badEPKParameter(): void
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHES
*/
public function eCKeyHasMissingParameters(): void
{
@@ -238,7 +327,6 @@ public function eCKeyHasMissingParameters(): void
/**
* @test
- * @covers \Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHES
*/
public function unsupportedCurve(): void
{
diff --git a/tests/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2_HS_AESKWKeyEncryptionTest.php b/tests/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2_HS_AESKWKeyEncryptionTest.php
index bc0ad4fd..cd0686ef 100644
--- a/tests/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2_HS_AESKWKeyEncryptionTest.php
+++ b/tests/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2_HS_AESKWKeyEncryptionTest.php
@@ -2,34 +2,23 @@
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\Tests\Component\Encryption\Algorithm\KeyEncryption;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Component\Encryption\Algorithm\KeyEncryption\PBES2HS256A128KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\PBES2HS384A192KW;
use Jose\Component\Encryption\Algorithm\KeyEncryption\PBES2HS512A256KW;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
+use const STR_PAD_LEFT;
/**
* Class PBES2_HS_AESKWKeyEncryptionTest.
*
- * @group PBES2HSAESKW
- * @group unit
- *
* @internal
*/
-class PBES2_HS_AESKWKeyEncryptionTest extends TestCase
+final class PBES2_HS_AESKWKeyEncryptionTest extends TestCase
{
/**
* @see https://tools.ietf.org/html/rfc7517#appendix-C
@@ -47,16 +36,100 @@ public function pBES2HS256A128KW(): void
];
$key = new JWK([
'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded($this->convertArrayToBinString([84, 104, 117, 115, 32, 102, 114, 111, 109, 32, 109, 121, 32, 108, 105, 112, 115, 44, 32, 98, 121, 32, 121, 111, 117, 114, 115, 44, 32, 109, 121, 32, 115, 105, 110, 32, 105, 115, 32, 112, 117, 114, 103, 101, 100, 46])),
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ $this->convertArrayToBinString([
+ 84,
+ 104,
+ 117,
+ 115,
+ 32,
+ 102,
+ 114,
+ 111,
+ 109,
+ 32,
+ 109,
+ 121,
+ 32,
+ 108,
+ 105,
+ 112,
+ 115,
+ 44,
+ 32,
+ 98,
+ 121,
+ 32,
+ 121,
+ 111,
+ 117,
+ 114,
+ 115,
+ 44,
+ 32,
+ 109,
+ 121,
+ 32,
+ 115,
+ 105,
+ 110,
+ 32,
+ 105,
+ 115,
+ 32,
+ 112,
+ 117,
+ 114,
+ 103,
+ 101,
+ 100,
+ 46,
+ ])
+ ),
]);
- $expected_cek = $this->convertArrayToBinString([111, 27, 25, 52, 66, 29, 20, 78, 92, 176, 56, 240, 65, 208, 82, 112, 161, 131, 36, 55, 202, 236, 185, 172, 129, 23, 153, 194, 195, 48, 253, 182]);
+ $expected_cek = $this->convertArrayToBinString(
+ [
+ 111,
+ 27,
+ 25,
+ 52,
+ 66,
+ 29,
+ 20,
+ 78,
+ 92,
+ 176,
+ 56,
+ 240,
+ 65,
+ 208,
+ 82,
+ 112,
+ 161,
+ 131,
+ 36,
+ 55,
+ 202,
+ 236,
+ 185,
+ 172,
+ 129,
+ 23,
+ 153,
+ 194,
+ 195,
+ 48,
+ 253,
+ 182,
+ ]
+ );
$pbes2 = new PBES2HS256A128KW();
$wrapped_cek = Base64UrlSafe::decode('TrqXOwuNUfDV9VPTNbyGvEJ9JMjefAVn-TR1uIxR9p6hsRQh9Tk7BA');
- static::assertEquals($expected_cek, $pbes2->unwrapKey($key, $wrapped_cek, $header));
+ static::assertSame($expected_cek, $pbes2->unwrapKey($key, $wrapped_cek, $header));
}
/**
@@ -71,16 +144,100 @@ public function pBES2HS256A128KWBis(): void
];
$key = new JWK([
'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded($this->convertArrayToBinString([84, 104, 117, 115, 32, 102, 114, 111, 109, 32, 109, 121, 32, 108, 105, 112, 115, 44, 32, 98, 121, 32, 121, 111, 117, 114, 115, 44, 32, 109, 121, 32, 115, 105, 110, 32, 105, 115, 32, 112, 117, 114, 103, 101, 100, 46])),
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ $this->convertArrayToBinString([
+ 84,
+ 104,
+ 117,
+ 115,
+ 32,
+ 102,
+ 114,
+ 111,
+ 109,
+ 32,
+ 109,
+ 121,
+ 32,
+ 108,
+ 105,
+ 112,
+ 115,
+ 44,
+ 32,
+ 98,
+ 121,
+ 32,
+ 121,
+ 111,
+ 117,
+ 114,
+ 115,
+ 44,
+ 32,
+ 109,
+ 121,
+ 32,
+ 115,
+ 105,
+ 110,
+ 32,
+ 105,
+ 115,
+ 32,
+ 112,
+ 117,
+ 114,
+ 103,
+ 101,
+ 100,
+ 46,
+ ])
+ ),
]);
- $cek = $this->convertArrayToBinString([111, 27, 25, 52, 66, 29, 20, 78, 92, 176, 56, 240, 65, 208, 82, 112, 161, 131, 36, 55, 202, 236, 185, 172, 129, 23, 153, 194, 195, 48, 253, 182]);
+ $cek = $this->convertArrayToBinString(
+ [
+ 111,
+ 27,
+ 25,
+ 52,
+ 66,
+ 29,
+ 20,
+ 78,
+ 92,
+ 176,
+ 56,
+ 240,
+ 65,
+ 208,
+ 82,
+ 112,
+ 161,
+ 131,
+ 36,
+ 55,
+ 202,
+ 236,
+ 185,
+ 172,
+ 129,
+ 23,
+ 153,
+ 194,
+ 195,
+ 48,
+ 253,
+ 182,
+ ]
+ );
$pbes2 = new PBES2HS256A128KW();
$encrypted_cek = $pbes2->wrapKey($key, $cek, $header, $header);
static::assertTrue(isset($header['p2s']));
- static::assertEquals(4096, $header['p2c']);
- static::assertEquals($cek, $pbes2->unwrapKey($key, $encrypted_cek, $header));
+ static::assertSame(4096, $header['p2c']);
+ static::assertSame($cek, $pbes2->unwrapKey($key, $encrypted_cek, $header));
}
/**
@@ -95,16 +252,100 @@ public function pBES2HS384A192KW(): void
];
$key = new JWK([
'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded($this->convertArrayToBinString([84, 104, 117, 115, 32, 102, 114, 111, 109, 32, 109, 121, 32, 108, 105, 112, 115, 44, 32, 98, 121, 32, 121, 111, 117, 114, 115, 44, 32, 109, 121, 32, 115, 105, 110, 32, 105, 115, 32, 112, 117, 114, 103, 101, 100, 46])),
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ $this->convertArrayToBinString([
+ 84,
+ 104,
+ 117,
+ 115,
+ 32,
+ 102,
+ 114,
+ 111,
+ 109,
+ 32,
+ 109,
+ 121,
+ 32,
+ 108,
+ 105,
+ 112,
+ 115,
+ 44,
+ 32,
+ 98,
+ 121,
+ 32,
+ 121,
+ 111,
+ 117,
+ 114,
+ 115,
+ 44,
+ 32,
+ 109,
+ 121,
+ 32,
+ 115,
+ 105,
+ 110,
+ 32,
+ 105,
+ 115,
+ 32,
+ 112,
+ 117,
+ 114,
+ 103,
+ 101,
+ 100,
+ 46,
+ ])
+ ),
]);
- $cek = $this->convertArrayToBinString([111, 27, 25, 52, 66, 29, 20, 78, 92, 176, 56, 240, 65, 208, 82, 112, 161, 131, 36, 55, 202, 236, 185, 172, 129, 23, 153, 194, 195, 48, 253, 182]);
+ $cek = $this->convertArrayToBinString(
+ [
+ 111,
+ 27,
+ 25,
+ 52,
+ 66,
+ 29,
+ 20,
+ 78,
+ 92,
+ 176,
+ 56,
+ 240,
+ 65,
+ 208,
+ 82,
+ 112,
+ 161,
+ 131,
+ 36,
+ 55,
+ 202,
+ 236,
+ 185,
+ 172,
+ 129,
+ 23,
+ 153,
+ 194,
+ 195,
+ 48,
+ 253,
+ 182,
+ ]
+ );
$pbes2 = new PBES2HS384A192KW();
$encrypted_cek = $pbes2->wrapKey($key, $cek, $header, $header);
static::assertTrue(isset($header['p2s']));
- static::assertEquals(4096, $header['p2c']);
- static::assertEquals($cek, $pbes2->unwrapKey($key, $encrypted_cek, $header));
+ static::assertSame(4096, $header['p2c']);
+ static::assertSame($cek, $pbes2->unwrapKey($key, $encrypted_cek, $header));
}
/**
@@ -119,16 +360,100 @@ public function pBES2HS512A256KW(): void
];
$key = new JWK([
'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded($this->convertArrayToBinString([84, 104, 117, 115, 32, 102, 114, 111, 109, 32, 109, 121, 32, 108, 105, 112, 115, 44, 32, 98, 121, 32, 121, 111, 117, 114, 115, 44, 32, 109, 121, 32, 115, 105, 110, 32, 105, 115, 32, 112, 117, 114, 103, 101, 100, 46])),
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ $this->convertArrayToBinString([
+ 84,
+ 104,
+ 117,
+ 115,
+ 32,
+ 102,
+ 114,
+ 111,
+ 109,
+ 32,
+ 109,
+ 121,
+ 32,
+ 108,
+ 105,
+ 112,
+ 115,
+ 44,
+ 32,
+ 98,
+ 121,
+ 32,
+ 121,
+ 111,
+ 117,
+ 114,
+ 115,
+ 44,
+ 32,
+ 109,
+ 121,
+ 32,
+ 115,
+ 105,
+ 110,
+ 32,
+ 105,
+ 115,
+ 32,
+ 112,
+ 117,
+ 114,
+ 103,
+ 101,
+ 100,
+ 46,
+ ])
+ ),
]);
- $cek = $this->convertArrayToBinString([111, 27, 25, 52, 66, 29, 20, 78, 92, 176, 56, 240, 65, 208, 82, 112, 161, 131, 36, 55, 202, 236, 185, 172, 129, 23, 153, 194, 195, 48, 253, 182]);
+ $cek = $this->convertArrayToBinString(
+ [
+ 111,
+ 27,
+ 25,
+ 52,
+ 66,
+ 29,
+ 20,
+ 78,
+ 92,
+ 176,
+ 56,
+ 240,
+ 65,
+ 208,
+ 82,
+ 112,
+ 161,
+ 131,
+ 36,
+ 55,
+ 202,
+ 236,
+ 185,
+ 172,
+ 129,
+ 23,
+ 153,
+ 194,
+ 195,
+ 48,
+ 253,
+ 182,
+ ]
+ );
$pbes2 = new PBES2HS512A256KW();
$encrypted_cek = $pbes2->wrapKey($key, $cek, $header, $header);
static::assertTrue(isset($header['p2s']));
- static::assertEquals(4096, $header['p2c']);
- static::assertEquals($cek, $pbes2->unwrapKey($key, $encrypted_cek, $header));
+ static::assertSame(4096, $header['p2c']);
+ static::assertSame($cek, $pbes2->unwrapKey($key, $encrypted_cek, $header));
}
/**
@@ -145,10 +470,94 @@ public function badKeyType(): void
];
$key = new JWK([
'kty' => 'dir',
- 'dir' => Base64UrlSafe::encodeUnpadded($this->convertArrayToBinString([84, 104, 117, 115, 32, 102, 114, 111, 109, 32, 109, 121, 32, 108, 105, 112, 115, 44, 32, 98, 121, 32, 121, 111, 117, 114, 115, 44, 32, 109, 121, 32, 115, 105, 110, 32, 105, 115, 32, 112, 117, 114, 103, 101, 100, 46])),
+ 'dir' => Base64UrlSafe::encodeUnpadded(
+ $this->convertArrayToBinString([
+ 84,
+ 104,
+ 117,
+ 115,
+ 32,
+ 102,
+ 114,
+ 111,
+ 109,
+ 32,
+ 109,
+ 121,
+ 32,
+ 108,
+ 105,
+ 112,
+ 115,
+ 44,
+ 32,
+ 98,
+ 121,
+ 32,
+ 121,
+ 111,
+ 117,
+ 114,
+ 115,
+ 44,
+ 32,
+ 109,
+ 121,
+ 32,
+ 115,
+ 105,
+ 110,
+ 32,
+ 105,
+ 115,
+ 32,
+ 112,
+ 117,
+ 114,
+ 103,
+ 101,
+ 100,
+ 46,
+ ])
+ ),
]);
- $cek = $this->convertArrayToBinString([111, 27, 25, 52, 66, 29, 20, 78, 92, 176, 56, 240, 65, 208, 82, 112, 161, 131, 36, 55, 202, 236, 185, 172, 129, 23, 153, 194, 195, 48, 253, 182]);
+ $cek = $this->convertArrayToBinString(
+ [
+ 111,
+ 27,
+ 25,
+ 52,
+ 66,
+ 29,
+ 20,
+ 78,
+ 92,
+ 176,
+ 56,
+ 240,
+ 65,
+ 208,
+ 82,
+ 112,
+ 161,
+ 131,
+ 36,
+ 55,
+ 202,
+ 236,
+ 185,
+ 172,
+ 129,
+ 23,
+ 153,
+ 194,
+ 195,
+ 48,
+ 253,
+ 182,
+ ]
+ );
$pbes2 = new PBES2HS512A256KW();
$pbes2->wrapKey($key, $cek, $header, $header);
@@ -168,10 +577,94 @@ public function invalidKeyType(): void
];
$key = new JWK([
'kty' => 'oct',
- 'dir' => Base64UrlSafe::encodeUnpadded($this->convertArrayToBinString([84, 104, 117, 115, 32, 102, 114, 111, 109, 32, 109, 121, 32, 108, 105, 112, 115, 44, 32, 98, 121, 32, 121, 111, 117, 114, 115, 44, 32, 109, 121, 32, 115, 105, 110, 32, 105, 115, 32, 112, 117, 114, 103, 101, 100, 46])),
+ 'dir' => Base64UrlSafe::encodeUnpadded(
+ $this->convertArrayToBinString([
+ 84,
+ 104,
+ 117,
+ 115,
+ 32,
+ 102,
+ 114,
+ 111,
+ 109,
+ 32,
+ 109,
+ 121,
+ 32,
+ 108,
+ 105,
+ 112,
+ 115,
+ 44,
+ 32,
+ 98,
+ 121,
+ 32,
+ 121,
+ 111,
+ 117,
+ 114,
+ 115,
+ 44,
+ 32,
+ 109,
+ 121,
+ 32,
+ 115,
+ 105,
+ 110,
+ 32,
+ 105,
+ 115,
+ 32,
+ 112,
+ 117,
+ 114,
+ 103,
+ 101,
+ 100,
+ 46,
+ ])
+ ),
]);
- $cek = $this->convertArrayToBinString([111, 27, 25, 52, 66, 29, 20, 78, 92, 176, 56, 240, 65, 208, 82, 112, 161, 131, 36, 55, 202, 236, 185, 172, 129, 23, 153, 194, 195, 48, 253, 182]);
+ $cek = $this->convertArrayToBinString(
+ [
+ 111,
+ 27,
+ 25,
+ 52,
+ 66,
+ 29,
+ 20,
+ 78,
+ 92,
+ 176,
+ 56,
+ 240,
+ 65,
+ 208,
+ 82,
+ 112,
+ 161,
+ 131,
+ 36,
+ 55,
+ 202,
+ 236,
+ 185,
+ 172,
+ 129,
+ 23,
+ 153,
+ 194,
+ 195,
+ 48,
+ 253,
+ 182,
+ ]
+ );
$pbes2 = new PBES2HS512A256KW();
$pbes2->wrapKey($key, $cek, $header, $header);
@@ -190,10 +683,94 @@ public function algorithmParameterIsMissing(): void
];
$key = new JWK([
'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded($this->convertArrayToBinString([84, 104, 117, 115, 32, 102, 114, 111, 109, 32, 109, 121, 32, 108, 105, 112, 115, 44, 32, 98, 121, 32, 121, 111, 117, 114, 115, 44, 32, 109, 121, 32, 115, 105, 110, 32, 105, 115, 32, 112, 117, 114, 103, 101, 100, 46])),
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ $this->convertArrayToBinString([
+ 84,
+ 104,
+ 117,
+ 115,
+ 32,
+ 102,
+ 114,
+ 111,
+ 109,
+ 32,
+ 109,
+ 121,
+ 32,
+ 108,
+ 105,
+ 112,
+ 115,
+ 44,
+ 32,
+ 98,
+ 121,
+ 32,
+ 121,
+ 111,
+ 117,
+ 114,
+ 115,
+ 44,
+ 32,
+ 109,
+ 121,
+ 32,
+ 115,
+ 105,
+ 110,
+ 32,
+ 105,
+ 115,
+ 32,
+ 112,
+ 117,
+ 114,
+ 103,
+ 101,
+ 100,
+ 46,
+ ])
+ ),
]);
- $cek = $this->convertArrayToBinString([111, 27, 25, 52, 66, 29, 20, 78, 92, 176, 56, 240, 65, 208, 82, 112, 161, 131, 36, 55, 202, 236, 185, 172, 129, 23, 153, 194, 195, 48, 253, 182]);
+ $cek = $this->convertArrayToBinString(
+ [
+ 111,
+ 27,
+ 25,
+ 52,
+ 66,
+ 29,
+ 20,
+ 78,
+ 92,
+ 176,
+ 56,
+ 240,
+ 65,
+ 208,
+ 82,
+ 112,
+ 161,
+ 131,
+ 36,
+ 55,
+ 202,
+ 236,
+ 185,
+ 172,
+ 129,
+ 23,
+ 153,
+ 194,
+ 195,
+ 48,
+ 253,
+ 182,
+ ]
+ );
$pbes2 = new PBES2HS512A256KW();
$pbes2->wrapKey($key, $cek, $header, $header);
@@ -214,7 +791,56 @@ public function p2CParameterIsMissing(): void
];
$key = new JWK([
'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded($this->convertArrayToBinString([84, 104, 117, 115, 32, 102, 114, 111, 109, 32, 109, 121, 32, 108, 105, 112, 115, 44, 32, 98, 121, 32, 121, 111, 117, 114, 115, 44, 32, 109, 121, 32, 115, 105, 110, 32, 105, 115, 32, 112, 117, 114, 103, 101, 100, 46])),
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ $this->convertArrayToBinString([
+ 84,
+ 104,
+ 117,
+ 115,
+ 32,
+ 102,
+ 114,
+ 111,
+ 109,
+ 32,
+ 109,
+ 121,
+ 32,
+ 108,
+ 105,
+ 112,
+ 115,
+ 44,
+ 32,
+ 98,
+ 121,
+ 32,
+ 121,
+ 111,
+ 117,
+ 114,
+ 115,
+ 44,
+ 32,
+ 109,
+ 121,
+ 32,
+ 115,
+ 105,
+ 110,
+ 32,
+ 105,
+ 115,
+ 32,
+ 112,
+ 117,
+ 114,
+ 103,
+ 101,
+ 100,
+ 46,
+ ])
+ ),
]);
$pbes2 = new PBES2HS256A128KW();
@@ -239,7 +865,56 @@ public function p2SParameterIsMissing(): void
];
$key = new JWK([
'kty' => 'oct',
- 'k' => Base64UrlSafe::encodeUnpadded($this->convertArrayToBinString([84, 104, 117, 115, 32, 102, 114, 111, 109, 32, 109, 121, 32, 108, 105, 112, 115, 44, 32, 98, 121, 32, 121, 111, 117, 114, 115, 44, 32, 109, 121, 32, 115, 105, 110, 32, 105, 115, 32, 112, 117, 114, 103, 101, 100, 46])),
+ 'k' => Base64UrlSafe::encodeUnpadded(
+ $this->convertArrayToBinString([
+ 84,
+ 104,
+ 117,
+ 115,
+ 32,
+ 102,
+ 114,
+ 111,
+ 109,
+ 32,
+ 109,
+ 121,
+ 32,
+ 108,
+ 105,
+ 112,
+ 115,
+ 44,
+ 32,
+ 98,
+ 121,
+ 32,
+ 121,
+ 111,
+ 117,
+ 114,
+ 115,
+ 44,
+ 32,
+ 109,
+ 121,
+ 32,
+ 115,
+ 105,
+ 110,
+ 32,
+ 105,
+ 115,
+ 32,
+ 112,
+ 117,
+ 114,
+ 103,
+ 101,
+ 100,
+ 46,
+ ])
+ ),
]);
$pbes2 = new PBES2HS256A128KW();
diff --git a/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC6979Test.php b/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC6979Test.php
index 39760198..58367ba2 100644
--- a/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC6979Test.php
+++ b/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC6979Test.php
@@ -2,23 +2,14 @@
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\Tests\Component\Signature\Algorithm;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Component\Signature\Algorithm\ES256;
use Jose\Component\Signature\Algorithm\ES384;
use Jose\Component\Signature\Algorithm\ES512;
use Jose\Component\Signature\Algorithm\SignatureAlgorithm;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
/**
@@ -33,11 +24,9 @@
*
* Other curves or hash method combinaisons are not used by the Jot specification
*
- * @group RFC6979
- *
* @internal
*/
-class ECDSAFromRFC6979Test extends TestCase
+final class ECDSAFromRFC6979Test extends TestCase
{
/**
* @param string $message
@@ -63,9 +52,15 @@ public function dataWithVectors(): array
new JWK([
'kty' => 'EC',
'crv' => 'P-256',
- 'd' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721')),
- 'x' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6')),
- 'y' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299')),
+ 'd' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin('C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721')
+ ),
+ 'x' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin('60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6')
+ ),
+ 'y' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin('7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299')
+ ),
]),
sprintf(
'%s%s',
@@ -79,9 +74,15 @@ public function dataWithVectors(): array
new JWK([
'kty' => 'EC',
'crv' => 'P-256',
- 'd' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721')),
- 'x' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6')),
- 'y' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299')),
+ 'd' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin('C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721')
+ ),
+ 'x' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin('60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6')
+ ),
+ 'y' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin('7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299')
+ ),
]),
sprintf(
'%s%s',
@@ -95,14 +96,30 @@ public function dataWithVectors(): array
new JWK([
'kty' => 'EC',
'crv' => 'P-384',
- 'd' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5')),
- 'x' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('EC3A4E415B4E19A4568618029F427FA5DA9A8BC4AE92E02E06AAE5286B300C64DEF8F0EA9055866064A254515480BC13')),
- 'y' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('8015D9B72D7D57244EA8EF9AC0C621896708A59367F9DFB9F54CA84B3F1C9DB1288B231C3AE0D4FE7344FD2533264720')),
+ 'd' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ '6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5'
+ )
+ ),
+ 'x' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ 'EC3A4E415B4E19A4568618029F427FA5DA9A8BC4AE92E02E06AAE5286B300C64DEF8F0EA9055866064A254515480BC13'
+ )
+ ),
+ 'y' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ '8015D9B72D7D57244EA8EF9AC0C621896708A59367F9DFB9F54CA84B3F1C9DB1288B231C3AE0D4FE7344FD2533264720'
+ )
+ ),
]),
sprintf(
'%s%s',
- $this->convertHexToBin('94EDBB92A5ECB8AAD4736E56C691916B3F88140666CE9FA73D64C4EA95AD133C81A648152E44ACF96E36DD1E80FABE46'),
- $this->convertHexToBin('99EF4AEB15F178CEA1FE40DB2603138F130E740A19624526203B6351D0A3A94FA329C145786E679E7B82C71A38628AC8')
+ $this->convertHexToBin(
+ '94EDBB92A5ECB8AAD4736E56C691916B3F88140666CE9FA73D64C4EA95AD133C81A648152E44ACF96E36DD1E80FABE46'
+ ),
+ $this->convertHexToBin(
+ '99EF4AEB15F178CEA1FE40DB2603138F130E740A19624526203B6351D0A3A94FA329C145786E679E7B82C71A38628AC8'
+ )
),
],
[
@@ -111,14 +128,30 @@ public function dataWithVectors(): array
new JWK([
'kty' => 'EC',
'crv' => 'P-384',
- 'd' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5')),
- 'x' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('EC3A4E415B4E19A4568618029F427FA5DA9A8BC4AE92E02E06AAE5286B300C64DEF8F0EA9055866064A254515480BC13')),
- 'y' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('8015D9B72D7D57244EA8EF9AC0C621896708A59367F9DFB9F54CA84B3F1C9DB1288B231C3AE0D4FE7344FD2533264720')),
+ 'd' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ '6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5'
+ )
+ ),
+ 'x' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ 'EC3A4E415B4E19A4568618029F427FA5DA9A8BC4AE92E02E06AAE5286B300C64DEF8F0EA9055866064A254515480BC13'
+ )
+ ),
+ 'y' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ '8015D9B72D7D57244EA8EF9AC0C621896708A59367F9DFB9F54CA84B3F1C9DB1288B231C3AE0D4FE7344FD2533264720'
+ )
+ ),
]),
sprintf(
'%s%s',
- $this->convertHexToBin('8203B63D3C853E8D77227FB377BCF7B7B772E97892A80F36AB775D509D7A5FEB0542A7F0812998DA8F1DD3CA3CF023DB'),
- $this->convertHexToBin('DDD0760448D42D8A43AF45AF836FCE4DE8BE06B485E9B61B827C2F13173923E06A739F040649A667BF3B828246BAA5A5')
+ $this->convertHexToBin(
+ '8203B63D3C853E8D77227FB377BCF7B7B772E97892A80F36AB775D509D7A5FEB0542A7F0812998DA8F1DD3CA3CF023DB'
+ ),
+ $this->convertHexToBin(
+ 'DDD0760448D42D8A43AF45AF836FCE4DE8BE06B485E9B61B827C2F13173923E06A739F040649A667BF3B828246BAA5A5'
+ )
),
],
// A zero has been added at the beginning of each value from the RFC (cannot convert to binary of not an even length).
@@ -128,14 +161,30 @@ public function dataWithVectors(): array
new JWK([
'kty' => 'EC',
'crv' => 'P-521',
- 'd' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('00FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538')),
- 'x' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('01894550D0785932E00EAA23B694F213F8C3121F86DC97A04E5A7167DB4E5BCD371123D46E45DB6B5D5370A7F20FB633155D38FFA16D2BD761DCAC474B9A2F5023A4')),
- 'y' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('00493101C962CD4D2FDDF782285E64584139C2F91B47F87FF82354D6630F746A28A0DB25741B5B34A828008B22ACC23F924FAAFBD4D33F81EA66956DFEAA2BFDFCF5')),
+ 'd' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ '00FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538'
+ )
+ ),
+ 'x' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ '01894550D0785932E00EAA23B694F213F8C3121F86DC97A04E5A7167DB4E5BCD371123D46E45DB6B5D5370A7F20FB633155D38FFA16D2BD761DCAC474B9A2F5023A4'
+ )
+ ),
+ 'y' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ '00493101C962CD4D2FDDF782285E64584139C2F91B47F87FF82354D6630F746A28A0DB25741B5B34A828008B22ACC23F924FAAFBD4D33F81EA66956DFEAA2BFDFCF5'
+ )
+ ),
]),
sprintf(
'%s%s',
- $this->convertHexToBin('00C328FAFCBD79DD77850370C46325D987CB525569FB63C5D3BC53950E6D4C5F174E25A1EE9017B5D450606ADD152B534931D7D4E8455CC91F9B15BF05EC36E377FA'),
- $this->convertHexToBin('00617CCE7CF5064806C467F678D3B4080D6F1CC50AF26CA209417308281B68AF282623EAA63E5B5C0723D8B8C37FF0777B1A20F8CCB1DCCC43997F1EE0E44DA4A67A')
+ $this->convertHexToBin(
+ '00C328FAFCBD79DD77850370C46325D987CB525569FB63C5D3BC53950E6D4C5F174E25A1EE9017B5D450606ADD152B534931D7D4E8455CC91F9B15BF05EC36E377FA'
+ ),
+ $this->convertHexToBin(
+ '00617CCE7CF5064806C467F678D3B4080D6F1CC50AF26CA209417308281B68AF282623EAA63E5B5C0723D8B8C37FF0777B1A20F8CCB1DCCC43997F1EE0E44DA4A67A'
+ )
),
],
[
@@ -144,14 +193,30 @@ public function dataWithVectors(): array
new JWK([
'kty' => 'EC',
'crv' => 'P-521',
- 'd' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('00FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538')),
- 'x' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('01894550D0785932E00EAA23B694F213F8C3121F86DC97A04E5A7167DB4E5BCD371123D46E45DB6B5D5370A7F20FB633155D38FFA16D2BD761DCAC474B9A2F5023A4')),
- 'y' => Base64UrlSafe::encodeUnpadded($this->convertHexToBin('00493101C962CD4D2FDDF782285E64584139C2F91B47F87FF82354D6630F746A28A0DB25741B5B34A828008B22ACC23F924FAAFBD4D33F81EA66956DFEAA2BFDFCF5')),
+ 'd' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ '00FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538'
+ )
+ ),
+ 'x' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ '01894550D0785932E00EAA23B694F213F8C3121F86DC97A04E5A7167DB4E5BCD371123D46E45DB6B5D5370A7F20FB633155D38FFA16D2BD761DCAC474B9A2F5023A4'
+ )
+ ),
+ 'y' => Base64UrlSafe::encodeUnpadded(
+ $this->convertHexToBin(
+ '00493101C962CD4D2FDDF782285E64584139C2F91B47F87FF82354D6630F746A28A0DB25741B5B34A828008B22ACC23F924FAAFBD4D33F81EA66956DFEAA2BFDFCF5'
+ )
+ ),
]),
sprintf(
'%s%s',
- $this->convertHexToBin('013E99020ABF5CEE7525D16B69B229652AB6BDF2AFFCAEF38773B4B7D08725F10CDB93482FDCC54EDCEE91ECA4166B2A7C6265EF0CE2BD7051B7CEF945BABD47EE6D'),
- $this->convertHexToBin('01FBD0013C674AA79CB39849527916CE301C66EA7CE8B80682786AD60F98F7E78A19CA69EFF5C57400E3B3A0AD66CE0978214D13BAF4E9AC60752F7B155E2DE4DCE3')
+ $this->convertHexToBin(
+ '013E99020ABF5CEE7525D16B69B229652AB6BDF2AFFCAEF38773B4B7D08725F10CDB93482FDCC54EDCEE91ECA4166B2A7C6265EF0CE2BD7051B7CEF945BABD47EE6D'
+ ),
+ $this->convertHexToBin(
+ '01FBD0013C674AA79CB39849527916CE301C66EA7CE8B80682786AD60F98F7E78A19CA69EFF5C57400E3B3A0AD66CE0978214D13BAF4E9AC60752F7B155E2DE4DCE3'
+ )
),
],
];
diff --git a/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC7520Test.php b/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC7520Test.php
index f6dcd2ec..2cde5db2 100644
--- a/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC7520Test.php
+++ b/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC7520Test.php
@@ -2,15 +2,6 @@
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\Tests\Component\Signature\Algorithm;
use Jose\Component\Core\AlgorithmManager;
@@ -18,32 +9,31 @@
use Jose\Component\Signature\Algorithm\ES512;
use Jose\Component\Signature\JWSBuilder;
use Jose\Component\Signature\JWSVerifier;
-use Jose\Component\Signature\Serializer;
+use Jose\Component\Signature\Serializer\CompactSerializer;
+use Jose\Component\Signature\Serializer\JSONFlattenedSerializer;
+use Jose\Component\Signature\Serializer\JSONGeneralSerializer;
use PHPUnit\Framework\TestCase;
/**
* @see https://tools.ietf.org/html/rfc7520#section-4.3
*
- * @group RFC7520
- * @group unit
- *
* @internal
*/
-class ECDSAFromRFC7520Test extends TestCase
+final class ECDSAFromRFC7520Test extends TestCase
{
/**
- * Please note that we cannot create the signature and get the same result as the example (ECDSA signatures are always different).
- * This test case create a signature and verifies it.
- * Then the output given in the RFC is used and verified.
- * This way, we can say that the library is able to create/verify ECDSA signatures and verify signature from test vectors.
+ * Please note that we cannot create the signature and get the same result as the example (ECDSA signatures are
+ * always different). This test case create a signature and verifies it. Then the output given in the RFC is used
+ * and verified. This way, we can say that the library is able to create/verify ECDSA signatures and verify
+ * signature from test vectors.
*
* @test
*/
public function eS512(): void
{
- /*
- * Payload
- * EC public key
+ /**
+ * Payload EC public key.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-3.2
* @see https://tools.ietf.org/html/rfc7520#section-4.3.1
*/
@@ -58,8 +48,9 @@ public function eS512(): void
'd' => 'AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt',
]);
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.3.2
*/
$header = [
@@ -67,28 +58,23 @@ public function eS512(): void
'kid' => 'bilbo.baggins@hobbiton.example',
];
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new ES512()])
- );
- $jwsVerifier = new JWSVerifier(
- new AlgorithmManager([new ES512()])
- );
- $compactSerializer = new Serializer\CompactSerializer(
- );
- $jsonFlattenedSerializer = new Serializer\JSONFlattenedSerializer(
- );
- $jsonGeneralSerializer = new Serializer\JSONGeneralSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new ES512()]));
+ $jwsVerifier = new JWSVerifier(new AlgorithmManager([new ES512()]));
+ $compactSerializer = new CompactSerializer();
+ $jsonFlattenedSerializer = new JSONFlattenedSerializer();
+ $jsonGeneralSerializer = new JSONGeneralSerializer();
$jws = $jwsBuilder
- ->create()->withPayload($payload)
+ ->create()
+ ->withPayload($payload)
->addSignature($private_key, $header)
->build()
;
static::assertTrue($jwsVerifier->verifyWithKey($jws, $private_key, 0));
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.3.3
*/
$expected_compact_json = 'eyJhbGciOiJFUzUxMiIsImtpZCI6ImJpbGJvLmJhZ2dpbnNAaG9iYml0b24uZXhhbXBsZSJ9.SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4.AE_R_YZCChjn4791jSQCrdPZCNYqHXCTZH0-JZGYNlaAjP2kqaluUIIUnC9qvbu9Plon7KRTzoNEuT4Va2cmL1eJAQy3mtPBu_u_sDDyYjnAMDxXPn7XrT0lw-kvAD890jl8e2puQens_IEKBpHABlsbEPX6sFY8OcGDqoRuBomu9xQ2';
diff --git a/tests/SignatureAlgorithm/ECDSA/ECDSASignatureTest.php b/tests/SignatureAlgorithm/ECDSA/ECDSASignatureTest.php
index b487cd6d..1888a19a 100644
--- a/tests/SignatureAlgorithm/ECDSA/ECDSASignatureTest.php
+++ b/tests/SignatureAlgorithm/ECDSA/ECDSASignatureTest.php
@@ -2,36 +2,23 @@
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\Tests\Component\Signature\Algorithm;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use Jose\Component\Core\JWK;
use Jose\Component\Signature\Algorithm\ES256;
use Jose\Component\Signature\Algorithm\ES384;
use Jose\Component\Signature\Algorithm\ES512;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
/**
- * @group ECDSA
- * @group unit
- *
* @internal
*/
-class ECDSASignatureTest extends TestCase
+final class ECDSASignatureTest extends TestCase
{
/**
* @test
- * @covers \Jose\Component\Signature\Algorithm\ES256
*/
public function invalidKey(): void
{
@@ -49,7 +36,6 @@ public function invalidKey(): void
/**
* @test
- * @covers \Jose\Component\Signature\Algorithm\ES256
*/
public function eS256Verify(): void
{
@@ -73,7 +59,6 @@ public function eS256Verify(): void
/**
* @test
- * @covers \Jose\Component\Signature\Algorithm\ES256
*/
public function eS256SignVerify(): void
{
@@ -95,7 +80,6 @@ public function eS256SignVerify(): void
/**
* @test
- * @covers \Jose\Component\Signature\Algorithm\ES256
*/
public function keyNotPrivate(): void
{
@@ -116,7 +100,6 @@ public function keyNotPrivate(): void
/**
* @test
- * @covers \Jose\Component\Signature\Algorithm\ES384
*/
public function eS384SignVerify(): void
{
@@ -138,7 +121,6 @@ public function eS384SignVerify(): void
/**
* @test
- * @covers \Jose\Component\Signature\Algorithm\ES512
*/
public function eS512Verify(): void
{
@@ -162,7 +144,6 @@ public function eS512Verify(): void
/**
* @test
- * @covers \Jose\Component\Signature\Algorithm\ES512
*/
public function eS512SignVerify(): void
{
@@ -184,7 +165,6 @@ public function eS512SignVerify(): void
/**
* @test
- * @covers \Jose\Component\Signature\Algorithm\ES256
*/
public function badSignature(): void
{
diff --git a/tests/SignatureAlgorithm/EdDSA/EdDSASignatureTest.php b/tests/SignatureAlgorithm/EdDSA/EdDSASignatureTest.php
index 07350e8a..1d5727ac 100644
--- a/tests/SignatureAlgorithm/EdDSA/EdDSASignatureTest.php
+++ b/tests/SignatureAlgorithm/EdDSA/EdDSASignatureTest.php
@@ -2,32 +2,20 @@
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\Tests\Component\Signature\Algorithm;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\AlgorithmManager;
use Jose\Component\Core\JWK;
use Jose\Component\Signature\Algorithm\EdDSA;
use Jose\Component\Signature\JWSBuilder;
use Jose\Component\Signature\JWSVerifier;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
/**
- * @group EdDSA
- * @group unit
- *
* @internal
*/
-class EdDSASignatureTest extends TestCase
+final class EdDSASignatureTest extends TestCase
{
/**
* @see https://tools.ietf.org/html/rfc8037#appendix-A.5
@@ -45,7 +33,9 @@ public function edDSAVerifyAlgorithm(): void
$eddsa = new EdDSA();
$input = 'eyJhbGciOiJFZERTQSJ9.RXhhbXBsZSBvZiBFZDI1NTE5IHNpZ25pbmc';
- $signature = Base64UrlSafe::decode('hgyY0il_MGCjP0JzlnLWG1PPOt7-09PGcvMg3AIbQR6dWbhijcNR4ki4iylGjg5BhVsPt9g7sVvpAr_MuM0KAg');
+ $signature = Base64UrlSafe::decode(
+ 'hgyY0il_MGCjP0JzlnLWG1PPOt7-09PGcvMg3AIbQR6dWbhijcNR4ki4iylGjg5BhVsPt9g7sVvpAr_MuM0KAg'
+ );
static::assertTrue($eddsa->verify($key, $input, $signature));
}
@@ -64,17 +54,16 @@ public function edDSASignAndVerifyAlgorithm(): void
'x' => '11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo',
]);
- $header = ['alg' => 'EdDSA'];
+ $header = [
+ 'alg' => 'EdDSA',
+ ];
$input = 'Example of Ed25519 signing'; // Corresponds to "RXhhbXBsZSBvZiBFZDI1NTE5IHNpZ25pbmc"
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new EdDSA()])
- );
- $jwsVerifier = new JWSVerifier(
- new AlgorithmManager([new EdDSA()])
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new EdDSA()]));
+ $jwsVerifier = new JWSVerifier(new AlgorithmManager([new EdDSA()]));
$jws = $jwsBuilder
- ->create()->withPayload($input)
+ ->create()
+ ->withPayload($input)
->addSignature($key, $header)
->build()
;
diff --git a/tests/SignatureAlgorithm/Experimental/ExperimentalHMACSignatureTest.php b/tests/SignatureAlgorithm/Experimental/ExperimentalHMACSignatureTest.php
index 8791dfb9..eb51cfc1 100644
--- a/tests/SignatureAlgorithm/Experimental/ExperimentalHMACSignatureTest.php
+++ b/tests/SignatureAlgorithm/Experimental/ExperimentalHMACSignatureTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Signature\Algorithm;
use Jose\Component\Core\JWK;
@@ -19,12 +10,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group NewAlgorithm
- *
* @internal
*/
-class ExperimentalHMACSignatureTest extends TestCase
+final class ExperimentalHMACSignatureTest extends TestCase
{
/**
* @test
@@ -35,7 +23,7 @@ public function hS1SignAndVerify(): void
$hmac = new HS1();
$data = 'Live long and Prosper.';
- static::assertEquals('HS1', $hmac->name());
+ static::assertSame('HS1', $hmac->name());
$signature = $hmac->hash($key, $data);
@@ -51,11 +39,11 @@ public function hS256SignAndVerify(): void
$hmac = new HS256_64();
$data = 'Live long and Prosper.';
- static::assertEquals('HS256/64', $hmac->name());
+ static::assertSame('HS256/64', $hmac->name());
$signature = $hmac->hash($key, $data);
- static::assertEquals(hex2bin('89f750759cb8ad93'), $signature);
+ static::assertSame(hex2bin('89f750759cb8ad93'), $signature);
static::assertTrue($hmac->verify($key, $data, $signature));
}
diff --git a/tests/SignatureAlgorithm/Experimental/P256KSignatureTest.php b/tests/SignatureAlgorithm/Experimental/P256KSignatureTest.php
index e5709ba8..77437481 100644
--- a/tests/SignatureAlgorithm/Experimental/P256KSignatureTest.php
+++ b/tests/SignatureAlgorithm/Experimental/P256KSignatureTest.php
@@ -2,31 +2,17 @@
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\Tests\Component\Signature\Algorithm;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use Jose\Component\Core\JWK;
use Jose\Component\Signature\Algorithm\ES256K;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
/**
- * @group unit
- * @group NewAlgorithm
- *
- * @covers \Jose\Component\Signature\Algorithm\ES256K
- *
* @internal
*/
-class P256KSignatureTest extends TestCase
+final class P256KSignatureTest extends TestCase
{
/**
* @test
@@ -37,7 +23,11 @@ public function es256KVerify(): void
$algorithm = new ES256K();
$data = 'Hello';
- static::assertTrue($algorithm->verify($key, $data, hex2bin('9c75b9d171d9690a37f2474d4bfab5c234911cb150950ea5cbfc9aedda5ec360725cc47978de95b4efb2a3ed617c7b36b1cd0a26b536662a79d0f3ae873a7924')));
+ static::assertTrue(
+ $algorithm->verify($key, $data, hex2bin(
+ '9c75b9d171d9690a37f2474d4bfab5c234911cb150950ea5cbfc9aedda5ec360725cc47978de95b4efb2a3ed617c7b36b1cd0a26b536662a79d0f3ae873a7924'
+ ))
+ );
}
/**
@@ -49,7 +39,7 @@ public function es256KSignAndVerify(): void
$algorithm = new ES256K();
$data = 'Hello';
- static::assertEquals('ES256K', $algorithm->name());
+ static::assertSame('ES256K', $algorithm->name());
$signature = $algorithm->sign($key, $data);
@@ -61,9 +51,15 @@ private function getKey(): JWK
return new JWK([
'kty' => 'EC',
'crv' => 'secp256k1',
- 'd' => Base64UrlSafe::encodeUnpadded(hex2bin('D1592A94BBB9B5D94CDC425FC7DA80B6A47863AE973A9D581FD9D8F29690B659')),
- 'x' => Base64UrlSafe::encodeUnpadded(hex2bin('4B4DF318DE05BB8F3A115BF337F9BCBC55CA14B917B46BCB557D3C9A158D4BE0')),
- 'y' => Base64UrlSafe::encodeUnpadded(hex2bin('627EB75731A8BBEBC7D9A3C57EC4D7DA2CBA6D2A28E7F45134921861FE1CF5D9')),
+ 'd' => Base64UrlSafe::encodeUnpadded(
+ hex2bin('D1592A94BBB9B5D94CDC425FC7DA80B6A47863AE973A9D581FD9D8F29690B659')
+ ),
+ 'x' => Base64UrlSafe::encodeUnpadded(
+ hex2bin('4B4DF318DE05BB8F3A115BF337F9BCBC55CA14B917B46BCB557D3C9A158D4BE0')
+ ),
+ 'y' => Base64UrlSafe::encodeUnpadded(
+ hex2bin('627EB75731A8BBEBC7D9A3C57EC4D7DA2CBA6D2A28E7F45134921861FE1CF5D9')
+ ),
]);
}
}
diff --git a/tests/SignatureAlgorithm/HMAC/HMACFromRFC7520Test.php b/tests/SignatureAlgorithm/HMAC/HMACFromRFC7520Test.php
index d0e767ba..173139ec 100644
--- a/tests/SignatureAlgorithm/HMAC/HMACFromRFC7520Test.php
+++ b/tests/SignatureAlgorithm/HMAC/HMACFromRFC7520Test.php
@@ -2,15 +2,6 @@
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\Tests\Component\Signature\Algorithm;
use Jose\Component\Core\AlgorithmManager;
@@ -18,7 +9,10 @@
use Jose\Component\Signature\Algorithm\HS256;
use Jose\Component\Signature\JWSBuilder;
use Jose\Component\Signature\JWSVerifier;
-use Jose\Component\Signature\Serializer;
+use Jose\Component\Signature\Serializer\CompactSerializer;
+use Jose\Component\Signature\Serializer\JSONFlattenedSerializer;
+use Jose\Component\Signature\Serializer\JSONGeneralSerializer;
+use const JSON_THROW_ON_ERROR;
use PHPUnit\Framework\TestCase;
/**
@@ -27,12 +21,9 @@
* @see https://tools.ietf.org/html/rfc7520#section-4.6
* @see https://tools.ietf.org/html/rfc7520#section-4.7
*
- * @group HMAC
- * @group RFC7520
- *
* @internal
*/
-class HMACFromRFC7520Test extends TestCase
+final class HMACFromRFC7520Test extends TestCase
{
/**
* @see https://tools.ietf.org/html/rfc7520#section-4.4
@@ -41,9 +32,9 @@ class HMACFromRFC7520Test extends TestCase
*/
public function hS256(): void
{
- /*
- * Payload
- * Symmetric Key
+ /**
+ * Payload Symmetric Key.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-3.5
* @see https://tools.ietf.org/html/rfc7520#section-4.4.1
*/
@@ -56,8 +47,9 @@ public function hS256(): void
'k' => 'hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg',
]);
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.4.2
*/
$header = [
@@ -65,37 +57,38 @@ public function hS256(): void
'kid' => '018c0ae5-4d9b-471b-bfd6-eef314bc7037',
];
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new HS256()])
- );
- $jwsVerifier = new JWSVerifier(
- new AlgorithmManager([new HS256()])
- );
- $compactSerializer = new Serializer\CompactSerializer(
- );
- $jsonFlattenedSerializer = new Serializer\JSONFlattenedSerializer(
- );
- $jsonGeneralSerializer = new Serializer\JSONGeneralSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new HS256()]));
+ $jwsVerifier = new JWSVerifier(new AlgorithmManager([new HS256()]));
+ $compactSerializer = new CompactSerializer();
+ $jsonFlattenedSerializer = new JSONFlattenedSerializer();
+ $jsonGeneralSerializer = new JSONGeneralSerializer();
$jws = $jwsBuilder
- ->create()->withPayload($payload)
+ ->create()
+ ->withPayload($payload)
->addSignature($key, $header)
->build()
;
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.4.3
*/
$expected_compact_json = 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjAxOGMwYWU1LTRkOWItNDcxYi1iZmQ2LWVlZjMxNGJjNzAzNyJ9.SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4.s0h6KThzkfBBBkLspW1h84VsJZFTsPPqMDA7g1Md7p0';
$expected_flattened_json = '{"payload":"SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4","protected":"eyJhbGciOiJIUzI1NiIsImtpZCI6IjAxOGMwYWU1LTRkOWItNDcxYi1iZmQ2LWVlZjMxNGJjNzAzNyJ9","signature":"s0h6KThzkfBBBkLspW1h84VsJZFTsPPqMDA7g1Md7p0"}';
$expected_json = '{"payload":"SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4","signatures":[{"protected":"eyJhbGciOiJIUzI1NiIsImtpZCI6IjAxOGMwYWU1LTRkOWItNDcxYi1iZmQ2LWVlZjMxNGJjNzAzNyJ9","signature":"s0h6KThzkfBBBkLspW1h84VsJZFTsPPqMDA7g1Md7p0"}]}';
- static::assertEquals($expected_compact_json, $compactSerializer->serialize($jws, 0));
+ static::assertSame($expected_compact_json, $compactSerializer->serialize($jws, 0));
// We decode the json to compare the 2 arrays otherwise the test may fail as the order may be different
- static::assertEquals(json_decode($expected_flattened_json, true), json_decode($jsonFlattenedSerializer->serialize($jws, 0), true));
- static::assertEquals(json_decode($expected_json, true), json_decode($jsonGeneralSerializer->serialize($jws, 0), true));
+ static::assertEqualsCanonicalizing(
+ json_decode($expected_flattened_json, true, 512, JSON_THROW_ON_ERROR),
+ json_decode($jsonFlattenedSerializer->serialize($jws, 0), true, 512, JSON_THROW_ON_ERROR)
+ );
+ static::assertEqualsCanonicalizing(
+ json_decode($expected_json, true, 512, JSON_THROW_ON_ERROR),
+ json_decode($jsonGeneralSerializer->serialize($jws, 0), true, 512, JSON_THROW_ON_ERROR)
+ );
$loaded_compact_json = $compactSerializer->unserialize($expected_compact_json);
static::assertTrue($jwsVerifier->verifyWithKey($loaded_compact_json, $key, 0));
@@ -114,9 +107,9 @@ public function hS256(): void
*/
public function hS256WithDetachedPayload(): void
{
- /*
- * Payload
- * Symmetric Key
+ /**
+ * Payload Symmetric Key.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-3.5
* @see https://tools.ietf.org/html/rfc7520#section-4.5.1
*/
@@ -129,8 +122,9 @@ public function hS256WithDetachedPayload(): void
'k' => 'hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg',
]);
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.5.2
*/
$header = [
@@ -138,38 +132,39 @@ public function hS256WithDetachedPayload(): void
'kid' => '018c0ae5-4d9b-471b-bfd6-eef314bc7037',
];
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new HS256()])
- );
- $jwsVerifier = new JWSVerifier(
- new AlgorithmManager([new HS256()])
- );
- $compactSerializer = new Serializer\CompactSerializer(
- );
- $jsonFlattenedSerializer = new Serializer\JSONFlattenedSerializer(
- );
- $jsonGeneralSerializer = new Serializer\JSONGeneralSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new HS256()]));
+ $jwsVerifier = new JWSVerifier(new AlgorithmManager([new HS256()]));
+ $compactSerializer = new CompactSerializer();
+ $jsonFlattenedSerializer = new JSONFlattenedSerializer();
+ $jsonGeneralSerializer = new JSONGeneralSerializer();
$jws = $jwsBuilder
- ->create()->withPayload($payload, true)
+ ->create()
+ ->withPayload($payload, true)
->addSignature($key, $header)
->build()
;
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.5.3
*/
$expected_compact_json = 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjAxOGMwYWU1LTRkOWItNDcxYi1iZmQ2LWVlZjMxNGJjNzAzNyJ9..s0h6KThzkfBBBkLspW1h84VsJZFTsPPqMDA7g1Md7p0';
$expected_flattened_json = '{"protected":"eyJhbGciOiJIUzI1NiIsImtpZCI6IjAxOGMwYWU1LTRkOWItNDcxYi1iZmQ2LWVlZjMxNGJjNzAzNyJ9","signature":"s0h6KThzkfBBBkLspW1h84VsJZFTsPPqMDA7g1Md7p0"}';
$expected_json = '{"signatures":[{"protected":"eyJhbGciOiJIUzI1NiIsImtpZCI6IjAxOGMwYWU1LTRkOWItNDcxYi1iZmQ2LWVlZjMxNGJjNzAzNyJ9","signature":"s0h6KThzkfBBBkLspW1h84VsJZFTsPPqMDA7g1Md7p0"}]}';
- static::assertEquals($expected_compact_json, $compactSerializer->serialize($jws, 0));
+ static::assertSame($expected_compact_json, $compactSerializer->serialize($jws, 0));
// We decode the json to compare the 2 arrays otherwise the test may fail as the order may be different
- static::assertEquals(json_decode($expected_flattened_json, true), json_decode($jsonFlattenedSerializer->serialize($jws, 0), true));
+ static::assertEqualsCanonicalizing(
+ json_decode($expected_flattened_json, true, 512, JSON_THROW_ON_ERROR),
+ json_decode($jsonFlattenedSerializer->serialize($jws, 0), true, 512, JSON_THROW_ON_ERROR)
+ );
- static::assertEquals(json_decode($expected_json, true), json_decode($jsonGeneralSerializer->serialize($jws, 0), true));
+ static::assertEqualsCanonicalizing(
+ json_decode($expected_json, true, 512, JSON_THROW_ON_ERROR),
+ json_decode($jsonGeneralSerializer->serialize($jws, 0), true, 512, JSON_THROW_ON_ERROR)
+ );
$loaded_compact_json = $compactSerializer->unserialize($expected_compact_json);
static::assertTrue($jwsVerifier->verifyWithKey($loaded_compact_json, $key, 0, $payload));
@@ -188,9 +183,9 @@ public function hS256WithDetachedPayload(): void
*/
public function hS256WithUnprotectedHeader(): void
{
- /*
- * Payload
- * Symmetric Key
+ /**
+ * Payload Symmetric Key.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-3.5
* @see https://tools.ietf.org/html/rfc7520#section-4.6.1
*/
@@ -203,8 +198,9 @@ public function hS256WithUnprotectedHeader(): void
'k' => 'hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg',
]);
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.6.2
*/
$protectedHeader = [
@@ -214,34 +210,35 @@ public function hS256WithUnprotectedHeader(): void
'kid' => '018c0ae5-4d9b-471b-bfd6-eef314bc7037',
];
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new HS256()])
- );
- $jwsVerifier = new JWSVerifier(
- new AlgorithmManager([new HS256()])
- );
- $compactSerializer = new Serializer\CompactSerializer(
- );
- $jsonFlattenedSerializer = new Serializer\JSONFlattenedSerializer(
- );
- $jsonGeneralSerializer = new Serializer\JSONGeneralSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new HS256()]));
+ $jwsVerifier = new JWSVerifier(new AlgorithmManager([new HS256()]));
+ new CompactSerializer();
+ $jsonFlattenedSerializer = new JSONFlattenedSerializer();
+ $jsonGeneralSerializer = new JSONGeneralSerializer();
$jws = $jwsBuilder
- ->create()->withPayload($payload)
+ ->create()
+ ->withPayload($payload)
->addSignature($key, $protectedHeader, $unprotectedHeader)
->build()
;
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.6.3
*/
$expected_flattened_json = '{"payload": "SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4","protected": "eyJhbGciOiJIUzI1NiJ9","header": {"kid": "018c0ae5-4d9b-471b-bfd6-eef314bc7037"},"signature": "bWUSVaxorn7bEF1djytBd0kHv70Ly5pvbomzMWSOr20"}';
$expected_json = '{"payload":"SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4","signatures":[{"protected":"eyJhbGciOiJIUzI1NiJ9","header":{"kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037"},"signature":"bWUSVaxorn7bEF1djytBd0kHv70Ly5pvbomzMWSOr20"}]}';
// We decode the json to compare the 2 arrays otherwise the test may fail as the order may be different
- static::assertEquals(json_decode($expected_flattened_json, true), json_decode($jsonFlattenedSerializer->serialize($jws, 0), true));
- static::assertEquals(json_decode($expected_json, true), json_decode($jsonGeneralSerializer->serialize($jws, 0), true));
+ static::assertEqualsCanonicalizing(
+ json_decode($expected_flattened_json, true, 512, JSON_THROW_ON_ERROR),
+ json_decode($jsonFlattenedSerializer->serialize($jws, 0), true, 512, JSON_THROW_ON_ERROR)
+ );
+ static::assertEqualsCanonicalizing(
+ json_decode($expected_json, true, 512, JSON_THROW_ON_ERROR),
+ json_decode($jsonGeneralSerializer->serialize($jws, 0), true, 512, JSON_THROW_ON_ERROR)
+ );
$loaded_flattened_json = $jsonFlattenedSerializer->unserialize($expected_flattened_json);
static::assertTrue($jwsVerifier->verifyWithKey($loaded_flattened_json, $key, 0));
@@ -257,9 +254,9 @@ public function hS256WithUnprotectedHeader(): void
*/
public function hS256WithoutProtectedHeader(): void
{
- /*
- * Payload
- * Symmetric Key
+ /**
+ * Payload Symmetric Key.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-3.5
* @see https://tools.ietf.org/html/rfc7520#section-4.7.1
*/
@@ -272,8 +269,9 @@ public function hS256WithoutProtectedHeader(): void
'k' => 'hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg',
]);
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.7.2
*/
$unprotectedHeader = [
@@ -281,32 +279,34 @@ public function hS256WithoutProtectedHeader(): void
'kid' => '018c0ae5-4d9b-471b-bfd6-eef314bc7037',
];
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new HS256()])
- );
- $jwsVerifier = new JWSVerifier(
- new AlgorithmManager([new HS256()])
- );
- $jsonFlattenedSerializer = new Serializer\JSONFlattenedSerializer(
- );
- $jsonGeneralSerializer = new Serializer\JSONGeneralSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new HS256()]));
+ $jwsVerifier = new JWSVerifier(new AlgorithmManager([new HS256()]));
+ $jsonFlattenedSerializer = new JSONFlattenedSerializer();
+ $jsonGeneralSerializer = new JSONGeneralSerializer();
$jws = $jwsBuilder
- ->create()->withPayload($payload)
+ ->create()
+ ->withPayload($payload)
->addSignature($key, [], $unprotectedHeader)
->build()
;
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.7.3
*/
$expected_flattened_json = '{"payload":"SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4","header":{"alg":"HS256","kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037"},"signature":"xuLifqLGiblpv9zBpuZczWhNj1gARaLV3UxvxhJxZuk"}';
$expected_json = '{"payload":"SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4","signatures":[{"header":{"alg":"HS256","kid":"018c0ae5-4d9b-471b-bfd6-eef314bc7037"},"signature":"xuLifqLGiblpv9zBpuZczWhNj1gARaLV3UxvxhJxZuk"}]}';
// We decode the json to compare the 2 arrays otherwise the test may fail as the order may be different
- static::assertEquals(json_decode($expected_flattened_json, true), json_decode($jsonFlattenedSerializer->serialize($jws, 0), true));
- static::assertEquals(json_decode($expected_json, true), json_decode($jsonGeneralSerializer->serialize($jws, 0), true));
+ static::assertEqualsCanonicalizing(
+ json_decode($expected_flattened_json, true),
+ json_decode($jsonFlattenedSerializer->serialize($jws, 0), true)
+ );
+ static::assertEqualsCanonicalizing(
+ json_decode($expected_json, true),
+ json_decode($jsonGeneralSerializer->serialize($jws, 0), true)
+ );
$loaded_flattened_json = $jsonFlattenedSerializer->unserialize($expected_flattened_json);
static::assertTrue($jwsVerifier->verifyWithKey($loaded_flattened_json, $key, 0));
diff --git a/tests/SignatureAlgorithm/HMAC/HMACSignatureTest.php b/tests/SignatureAlgorithm/HMAC/HMACSignatureTest.php
index 25b690f4..ee35b6d8 100644
--- a/tests/SignatureAlgorithm/HMAC/HMACSignatureTest.php
+++ b/tests/SignatureAlgorithm/HMAC/HMACSignatureTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Signature\Algorithm;
use InvalidArgumentException;
@@ -21,12 +12,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group HMAC
- * @group unit
- *
* @internal
*/
-class HMACSignatureTest extends TestCase
+final class HMACSignatureTest extends TestCase
{
/**
* @test
@@ -74,7 +62,7 @@ public function hS256SignAndVerify(): void
$signature = $hmac->hash($key, $data);
- static::assertEquals(hex2bin('7ed268ef179f530a4a1c56225c352a6782cf5379085c484b4f355b6744d6f19d'), $signature);
+ static::assertSame(hex2bin('7ed268ef179f530a4a1c56225c352a6782cf5379085c484b4f355b6744d6f19d'), $signature);
static::assertTrue($hmac->verify($key, $data, $signature));
}
@@ -92,7 +80,10 @@ public function hS384SignAndVerify(): void
$signature = $hmac->hash($key, $data);
- static::assertEquals(hex2bin('903ce2ef2878090d6117f88210d5a822d260fae66760186cb3326770748b9fa47c2d4531a4d5d868f99bcf7ea45c1ab4'), $signature);
+ static::assertSame(
+ hex2bin('903ce2ef2878090d6117f88210d5a822d260fae66760186cb3326770748b9fa47c2d4531a4d5d868f99bcf7ea45c1ab4'),
+ $signature
+ );
static::assertTrue($hmac->verify($key, $data, $signature));
}
@@ -110,7 +101,12 @@ public function hS512SignAndVerify(): void
$signature = $hmac->hash($key, $data);
- static::assertEquals(hex2bin('e8b36712b6c6dc422eec77f31ce372ccac769450413238158bd702069630456a148d0c10dd3a661a774217fb90b0d5f94fa6c3c985438bade92ff975b9e4dc04'), $signature);
+ static::assertSame(
+ hex2bin(
+ 'e8b36712b6c6dc422eec77f31ce372ccac769450413238158bd702069630456a148d0c10dd3a661a774217fb90b0d5f94fa6c3c985438bade92ff975b9e4dc04'
+ ),
+ $signature
+ );
static::assertTrue($hmac->verify($key, $data, $signature));
}
}
diff --git a/tests/SignatureAlgorithm/None/NoneSignatureTest.php b/tests/SignatureAlgorithm/None/NoneSignatureTest.php
index e1da6a86..5afb4c29 100644
--- a/tests/SignatureAlgorithm/None/NoneSignatureTest.php
+++ b/tests/SignatureAlgorithm/None/NoneSignatureTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Signature\Algorithm;
use InvalidArgumentException;
@@ -23,12 +14,9 @@
use PHPUnit\Framework\TestCase;
/**
- * @group None
- * @group unit
- *
* @internal
*/
-class NoneSignatureTest extends TestCase
+final class NoneSignatureTest extends TestCase
{
/**
* @test
@@ -44,7 +32,7 @@ public function noneSignAndVerifyAlgorithm(): void
$signature = $none->sign($key, $data);
- static::assertEquals($signature, '');
+ static::assertSame($signature, '');
static::assertTrue($none->verify($key, $data, $signature));
}
@@ -74,27 +62,27 @@ public function noneSignAndVerifyComplete(): void
'kty' => 'none',
]);
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new None()])
- );
- $serializer = new CompactSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new None()]));
+ $serializer = new CompactSerializer();
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
- ->addSignature($jwk, ['alg' => 'none'])
+ ->create()
+ ->withPayload('Live long and Prosper.')
+ ->addSignature($jwk, [
+ 'alg' => 'none',
+ ])
->build()
;
- static::assertEquals(1, $jws->countSignatures());
+ static::assertSame(1, $jws->countSignatures());
$compact = $serializer->serialize($jws, 0);
static::assertTrue(is_string($compact));
$result = $serializer->unserialize($compact);
- static::assertEquals('Live long and Prosper.', $result->getPayload());
- static::assertEquals(1, $result->countSignatures());
+ static::assertSame('Live long and Prosper.', $result->getPayload());
+ static::assertSame(1, $result->countSignatures());
static::assertTrue($result->getSignature(0)->hasProtectedHeaderParameter('alg'));
- static::assertEquals('none', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('none', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
}
diff --git a/tests/SignatureAlgorithm/RSA/RSA15SignatureTest.php b/tests/SignatureAlgorithm/RSA/RSA15SignatureTest.php
index d00851fb..759c9064 100644
--- a/tests/SignatureAlgorithm/RSA/RSA15SignatureTest.php
+++ b/tests/SignatureAlgorithm/RSA/RSA15SignatureTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Signature\Algorithm;
use Jose\Component\Core\AlgorithmManager;
@@ -18,26 +9,26 @@
use Jose\Component\Signature\Algorithm\RS256;
use Jose\Component\Signature\JWSBuilder;
use Jose\Component\Signature\JWSVerifier;
-use Jose\Component\Signature\Serializer;
+use Jose\Component\Signature\Serializer\CompactSerializer;
+use Jose\Component\Signature\Serializer\JSONFlattenedSerializer;
+use Jose\Component\Signature\Serializer\JSONGeneralSerializer;
use PHPUnit\Framework\TestCase;
/**
* @see https://tools.ietf.org/html/rfc7520#section-4.1
*
- * @group RFC7520
- *
* @internal
*/
-class RSA15SignatureTest extends TestCase
+final class RSA15SignatureTest extends TestCase
{
/**
* @test
*/
public function rS256(): void
{
- /*
- * Payload,
- * RSA private key
+ /**
+ * Payload, RSA private key.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-3.4
* @see https://tools.ietf.org/html/rfc7520#section-4.1.1
*/
@@ -56,8 +47,9 @@ public function rS256(): void
'qi' => '3PiqvXQN0zwMeE-sBvZgi289XP9XCQF3VWqPzMKnIgQp7_Tugo6-NZBKCQsMf3HaEGBjTVJs_jcK8-TRXvaKe-7ZMaQj8VfBdYkssbu0NKDDhjJ-GtiseaDVWt7dcH0cfwxgFUHpQh7FoCrjFJ6h6ZEpMF6xmujs4qMpPz8aaI4',
]);
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.1.2
*/
$header = [
@@ -65,37 +57,38 @@ public function rS256(): void
'kid' => 'bilbo.baggins@hobbiton.example',
];
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new RS256()])
- );
- $jwsVerifier = new JWSVerifier(
- new AlgorithmManager([new RS256()])
- );
- $compactSerializer = new Serializer\CompactSerializer(
- );
- $jsonFlattenedSerializer = new Serializer\JSONFlattenedSerializer(
- );
- $jsonGeneralSerializer = new Serializer\JSONGeneralSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new RS256()]));
+ $jwsVerifier = new JWSVerifier(new AlgorithmManager([new RS256()]));
+ $compactSerializer = new CompactSerializer();
+ $jsonFlattenedSerializer = new JSONFlattenedSerializer();
+ $jsonGeneralSerializer = new JSONGeneralSerializer();
$jws = $jwsBuilder
- ->create()->withPayload($payload)
+ ->create()
+ ->withPayload($payload)
->addSignature($privateKey, $header)
->build()
;
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.1.3
*/
$expected_compact_json = 'eyJhbGciOiJSUzI1NiIsImtpZCI6ImJpbGJvLmJhZ2dpbnNAaG9iYml0b24uZXhhbXBsZSJ9.SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4.MRjdkly7_-oTPTS3AXP41iQIGKa80A0ZmTuV5MEaHoxnW2e5CZ5NlKtainoFmKZopdHM1O2U4mwzJdQx996ivp83xuglII7PNDi84wnB-BDkoBwA78185hX-Es4JIwmDLJK3lfWRa-XtL0RnltuYv746iYTh_qHRD68BNt1uSNCrUCTJDt5aAE6x8wW1Kt9eRo4QPocSadnHXFxnt8Is9UzpERV0ePPQdLuW3IS_de3xyIrDaLGdjluPxUAhb6L2aXic1U12podGU0KLUQSE_oI-ZnmKJ3F4uOZDnd6QZWJushZ41Axf_fcIe8u9ipH84ogoree7vjbU5y18kDquDg';
$expected_flattened_json = '{"payload":"SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4","protected":"eyJhbGciOiJSUzI1NiIsImtpZCI6ImJpbGJvLmJhZ2dpbnNAaG9iYml0b24uZXhhbXBsZSJ9","signature":"MRjdkly7_-oTPTS3AXP41iQIGKa80A0ZmTuV5MEaHoxnW2e5CZ5NlKtainoFmKZopdHM1O2U4mwzJdQx996ivp83xuglII7PNDi84wnB-BDkoBwA78185hX-Es4JIwmDLJK3lfWRa-XtL0RnltuYv746iYTh_qHRD68BNt1uSNCrUCTJDt5aAE6x8wW1Kt9eRo4QPocSadnHXFxnt8Is9UzpERV0ePPQdLuW3IS_de3xyIrDaLGdjluPxUAhb6L2aXic1U12podGU0KLUQSE_oI-ZnmKJ3F4uOZDnd6QZWJushZ41Axf_fcIe8u9ipH84ogoree7vjbU5y18kDquDg"}';
$expected_json = '{"payload":"SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4","signatures":[{"protected":"eyJhbGciOiJSUzI1NiIsImtpZCI6ImJpbGJvLmJhZ2dpbnNAaG9iYml0b24uZXhhbXBsZSJ9","signature":"MRjdkly7_-oTPTS3AXP41iQIGKa80A0ZmTuV5MEaHoxnW2e5CZ5NlKtainoFmKZopdHM1O2U4mwzJdQx996ivp83xuglII7PNDi84wnB-BDkoBwA78185hX-Es4JIwmDLJK3lfWRa-XtL0RnltuYv746iYTh_qHRD68BNt1uSNCrUCTJDt5aAE6x8wW1Kt9eRo4QPocSadnHXFxnt8Is9UzpERV0ePPQdLuW3IS_de3xyIrDaLGdjluPxUAhb6L2aXic1U12podGU0KLUQSE_oI-ZnmKJ3F4uOZDnd6QZWJushZ41Axf_fcIe8u9ipH84ogoree7vjbU5y18kDquDg"}]}';
- static::assertEquals($expected_compact_json, $compactSerializer->serialize($jws, 0));
+ static::assertSame($expected_compact_json, $compactSerializer->serialize($jws, 0));
// We decode the json to compare the 2 arrays otherwise the test may fail as the order may be different
- static::assertEquals(json_decode($expected_flattened_json, true), json_decode($jsonFlattenedSerializer->serialize($jws, 0), true));
- static::assertEquals(json_decode($expected_json, true), json_decode($jsonGeneralSerializer->serialize($jws, 0), true));
+ static::assertEqualsCanonicalizing(
+ json_decode($expected_flattened_json, true),
+ json_decode($jsonFlattenedSerializer->serialize($jws, 0), true)
+ );
+ static::assertEqualsCanonicalizing(
+ json_decode($expected_json, true),
+ json_decode($jsonGeneralSerializer->serialize($jws, 0), true)
+ );
$loaded_compact_json = $compactSerializer->unserialize($expected_compact_json);
$jwsVerifier->verifyWithKey($loaded_compact_json, $privateKey, 0);
diff --git a/tests/SignatureAlgorithm/RSA/RSAKeyWithoutAllPrimesTest.php b/tests/SignatureAlgorithm/RSA/RSAKeyWithoutAllPrimesTest.php
index 4862bca2..f3355d91 100644
--- a/tests/SignatureAlgorithm/RSA/RSAKeyWithoutAllPrimesTest.php
+++ b/tests/SignatureAlgorithm/RSA/RSAKeyWithoutAllPrimesTest.php
@@ -2,32 +2,25 @@
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\Tests\Component\Signature\Algorithm;
use Jose\Component\Core\AlgorithmManager;
use Jose\Component\Core\JWK;
-use Jose\Component\Signature\Algorithm;
+use Jose\Component\Signature\Algorithm\PS256;
+use Jose\Component\Signature\Algorithm\PS384;
+use Jose\Component\Signature\Algorithm\PS512;
+use Jose\Component\Signature\Algorithm\RS256;
+use Jose\Component\Signature\Algorithm\RS384;
+use Jose\Component\Signature\Algorithm\RS512;
use Jose\Component\Signature\JWSBuilder;
use Jose\Component\Signature\JWSVerifier;
use Jose\Component\Signature\Serializer\CompactSerializer;
use PHPUnit\Framework\TestCase;
/**
- * @group RSA2
- * @group unit
- *
* @internal
*/
-class RSAKeyWithoutAllPrimesTest extends TestCase
+final class RSAKeyWithoutAllPrimesTest extends TestCase
{
/**
* @dataProvider dataSignatureAlgorithms
@@ -39,19 +32,19 @@ public function signatureAlgorithms(string $signature_algorithm): void
$algorithm = new $signature_algorithm();
$key = $this->getPrivateKey();
- $claims = json_encode(['foo' => 'bar']);
+ $claims = json_encode([
+ 'foo' => 'bar',
+ ]);
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([$algorithm])
- );
- $jwsVerifier = new JWSVerifier(
- new AlgorithmManager([$algorithm])
- );
- $serializer = new CompactSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([$algorithm]));
+ $jwsVerifier = new JWSVerifier(new AlgorithmManager([$algorithm]));
+ $serializer = new CompactSerializer();
$jws = $jwsBuilder
- ->create()->withPayload($claims)
- ->addSignature($key, ['alg' => $algorithm->name()])
+ ->create()
+ ->withPayload($claims)
+ ->addSignature($key, [
+ 'alg' => $algorithm->name(),
+ ])
->build()
;
$jws = $serializer->serialize($jws, 0);
@@ -63,23 +56,12 @@ public function signatureAlgorithms(string $signature_algorithm): void
public function dataSignatureAlgorithms(): array
{
- return [
- [Algorithm\RS256::class],
- [Algorithm\RS384::class],
- [Algorithm\RS512::class],
- [Algorithm\PS256::class],
- [Algorithm\PS384::class],
- [Algorithm\PS512::class],
- ];
+ return [[RS256::class], [RS384::class], [RS512::class], [PS256::class], [PS384::class], [PS512::class]];
}
public function dataSignatureAlgorithmsWithSimpleKey(): array
{
- return [
- [Algorithm\PS256::class],
- [Algorithm\PS384::class],
- [Algorithm\PS512::class],
- ];
+ return [[PS256::class], [PS384::class], [PS512::class]];
}
private function getPrivateKey(): JWK
diff --git a/tests/SignatureAlgorithm/RSA/RSAPSSSignatureTest.php b/tests/SignatureAlgorithm/RSA/RSAPSSSignatureTest.php
index 78e3ace1..85622390 100644
--- a/tests/SignatureAlgorithm/RSA/RSAPSSSignatureTest.php
+++ b/tests/SignatureAlgorithm/RSA/RSAPSSSignatureTest.php
@@ -2,15 +2,6 @@
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\Tests\Component\Signature\Algorithm;
use Jose\Component\Core\AlgorithmManager;
@@ -18,31 +9,31 @@
use Jose\Component\Signature\Algorithm\PS384;
use Jose\Component\Signature\JWSBuilder;
use Jose\Component\Signature\JWSVerifier;
-use Jose\Component\Signature\Serializer;
+use Jose\Component\Signature\Serializer\CompactSerializer;
+use Jose\Component\Signature\Serializer\JSONFlattenedSerializer;
+use Jose\Component\Signature\Serializer\JSONGeneralSerializer;
use PHPUnit\Framework\TestCase;
/**
* @see https://tools.ietf.org/html/rfc7520#section-4.2
*
- * @group RFC7520
- *
* @internal
*/
-class RSAPSSSignatureTest extends TestCase
+final class RSAPSSSignatureTest extends TestCase
{
/**
- * Please note that we cannot create the signature and get the same result as the example (RSA-PSS signatures are always different).
- * This test case create a signature and verifies it.
- * Then the output given in the RFC is used and verified.
- * This way, we can say that the library is able to create/verify RSA-PSS signatures and verify signature from test vectors.
+ * Please note that we cannot create the signature and get the same result as the example (RSA-PSS signatures are
+ * always different). This test case create a signature and verifies it. Then the output given in the RFC is used
+ * and verified. This way, we can say that the library is able to create/verify RSA-PSS signatures and verify
+ * signature from test vectors.
*
* @test
*/
public function pS384(): void
{
- /*
- * Payload,
- * RSA private key
+ /**
+ * Payload, RSA private key.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-3.4
* @see https://tools.ietf.org/html/rfc7520#section-4.2.1
*/
@@ -61,8 +52,9 @@ public function pS384(): void
'qi' => '3PiqvXQN0zwMeE-sBvZgi289XP9XCQF3VWqPzMKnIgQp7_Tugo6-NZBKCQsMf3HaEGBjTVJs_jcK8-TRXvaKe-7ZMaQj8VfBdYkssbu0NKDDhjJ-GtiseaDVWt7dcH0cfwxgFUHpQh7FoCrjFJ6h6ZEpMF6xmujs4qMpPz8aaI4',
]);
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.2.2
*/
$header = [
@@ -70,28 +62,23 @@ public function pS384(): void
'kid' => 'bilbo.baggins@hobbiton.example',
];
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new PS384()])
- );
- $jwsVerifier = new JWSVerifier(
- new AlgorithmManager([new PS384()])
- );
- $compactSerializer = new Serializer\CompactSerializer(
- );
- $jsonFlattenedSerializer = new Serializer\JSONFlattenedSerializer(
- );
- $jsonGeneralSerializer = new Serializer\JSONGeneralSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new PS384()]));
+ $jwsVerifier = new JWSVerifier(new AlgorithmManager([new PS384()]));
+ $compactSerializer = new CompactSerializer();
+ $jsonFlattenedSerializer = new JSONFlattenedSerializer();
+ $jsonGeneralSerializer = new JSONGeneralSerializer();
$jws = $jwsBuilder
- ->create()->withPayload($payload)
+ ->create()
+ ->withPayload($payload)
->addSignature($privateKey, $header)
->build()
;
$jwsVerifier->verifyWithKey($jws, $privateKey, 0);
- /*
- * Header
+ /**
+ * Header.
+ *
* @see https://tools.ietf.org/html/rfc7520#section-4.2.3
*/
$expected_compact_json = 'eyJhbGciOiJQUzM4NCIsImtpZCI6ImJpbGJvLmJhZ2dpbnNAaG9iYml0b24uZXhhbXBsZSJ9.SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4.cu22eBqkYDKgIlTpzDXGvaFfz6WGoz7fUDcfT0kkOy42miAh2qyBzk1xEsnk2IpN6-tPid6VrklHkqsGqDqHCdP6O8TTB5dDDItllVo6_1OLPpcbUrhiUSMxbbXUvdvWXzg-UD8biiReQFlfz28zGWVsdiNAUf8ZnyPEgVFn442ZdNqiVJRmBqrYRXe8P_ijQ7p8Vdz0TTrxUeT3lm8d9shnr2lfJT8ImUjvAA2Xez2Mlp8cBE5awDzT0qI0n6uiP1aCN_2_jLAeQTlqRHtfa64QQSUmFAAjVKPbByi7xho0uTOcbH510a6GYmJUAfmWjwZ6oD4ifKo8DYM-X72Eaw';
diff --git a/tests/SignatureAlgorithm/RSA/RSASignatureTest.php b/tests/SignatureAlgorithm/RSA/RSASignatureTest.php
index 07e6a2e3..8d20d3be 100644
--- a/tests/SignatureAlgorithm/RSA/RSASignatureTest.php
+++ b/tests/SignatureAlgorithm/RSA/RSASignatureTest.php
@@ -2,36 +2,29 @@
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\Tests\Component\Signature\Algorithm;
-use ParagonIE\ConstantTime\Base64UrlSafe;
use InvalidArgumentException;
use Jose\Component\Core\AlgorithmManager;
use Jose\Component\Core\JWK;
use Jose\Component\Core\JWKSet;
-use Jose\Component\Signature\Algorithm;
+use Jose\Component\Signature\Algorithm\PS256;
+use Jose\Component\Signature\Algorithm\PS384;
+use Jose\Component\Signature\Algorithm\PS512;
+use Jose\Component\Signature\Algorithm\RS256;
+use Jose\Component\Signature\Algorithm\RS384;
+use Jose\Component\Signature\Algorithm\RS512;
use Jose\Component\Signature\JWSBuilder;
use Jose\Component\Signature\JWSVerifier;
use Jose\Component\Signature\Serializer\CompactSerializer;
use Jose\Component\Signature\Serializer\JSONGeneralSerializer;
+use ParagonIE\ConstantTime\Base64UrlSafe;
use PHPUnit\Framework\TestCase;
/**
- * @group RSA
- * @group unit
- *
* @internal
*/
-class RSASignatureTest extends TestCase
+final class RSASignatureTest extends TestCase
{
/**
* @test
@@ -50,13 +43,11 @@ public function completeRS256Sign(): void
'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
]);
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new Algorithm\RS256()])
- );
- $serializer = new CompactSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new RS256()]));
+ $serializer = new CompactSerializer();
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->addSignature(
$key,
[
@@ -71,13 +62,16 @@ public function completeRS256Sign(): void
->build()
;
- static::assertEquals('eyJhbGciOiJSUzI1NiIsImp3ayI6eyJrdHkiOiJSU0EiLCJuIjoidHBTMVptZlZLVlA1S29mSWhNQlAwdFNXYzRxbGg2Zm0ybHJaU2t1S3hVakVhV2p6WlN6czcyZ0VJR3hyYVd1c01kb1J1VjU0eHNXUnlmNUtlWlQwUy1JNVBybGUzSWRpM2dJQ2lPNE53dk1rNkp3U0JjSld3bVNMRkVLeVVTbkIyQ3RmaUdjMF81clFDcGNFdF9EbjVpTS1CTm43ZnFwb0xJYmtzOHJYS1VJajgtcU1WcWtUWHNFS2VLaW5FMjN0MXlrTWxkc05hYU9ILWh2R3RpNUp0MkRNbkgxSmpvWGREWGZ4dlNQXzBnalVZYjBla3R1ZFlGWG9BNndla21ReUplSW12Z3g0TXl6MUk0aUh0a1lfQ3A3SjRNbjFlalo2SE5teXZvVEVfNE91WTF1Q2VZdjRVeVhGYzFzMXVVeVl0ajR6NTdxc0hHc1M0ZFEzQTJNSnN3IiwiZSI6IkFRQUIifX0.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.QyRlOCcNBMvCEkJRCQA71y2bVX690g0A6wsC2YXf9_VxOYK-g9-xy-1KjghVXkDPe1gDvYSYnL9oWs1PaFKV0_-ijvvJQE6_5pheKTfIVN3Qbkzjxsm4qXTeChBI5MKeBR8z8iWLFT4xPO8NkelwbS2tSUCHrejio6lDDlWhsqSUP8NjHJhqCSZuCDGu3fMMA24cZrYev3tQRc7HHjyi3q_17NZri7feBd7w3NEDkJp7wT_ZclJrYoucHIo1ypaDPJtM-W1-W-lAVREka6Xq4Bg60zdSZ83ODRQTP_IwQrv7hrIcbrRwn1Za_ORZPRPQDP0CMgkb7TkWDZnbPsAzlQ', $serializer->serialize($jws, 0));
+ static::assertSame(
+ 'eyJhbGciOiJSUzI1NiIsImp3ayI6eyJrdHkiOiJSU0EiLCJuIjoidHBTMVptZlZLVlA1S29mSWhNQlAwdFNXYzRxbGg2Zm0ybHJaU2t1S3hVakVhV2p6WlN6czcyZ0VJR3hyYVd1c01kb1J1VjU0eHNXUnlmNUtlWlQwUy1JNVBybGUzSWRpM2dJQ2lPNE53dk1rNkp3U0JjSld3bVNMRkVLeVVTbkIyQ3RmaUdjMF81clFDcGNFdF9EbjVpTS1CTm43ZnFwb0xJYmtzOHJYS1VJajgtcU1WcWtUWHNFS2VLaW5FMjN0MXlrTWxkc05hYU9ILWh2R3RpNUp0MkRNbkgxSmpvWGREWGZ4dlNQXzBnalVZYjBla3R1ZFlGWG9BNndla21ReUplSW12Z3g0TXl6MUk0aUh0a1lfQ3A3SjRNbjFlalo2SE5teXZvVEVfNE91WTF1Q2VZdjRVeVhGYzFzMXVVeVl0ajR6NTdxc0hHc1M0ZFEzQTJNSnN3IiwiZSI6IkFRQUIifX0.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.QyRlOCcNBMvCEkJRCQA71y2bVX690g0A6wsC2YXf9_VxOYK-g9-xy-1KjghVXkDPe1gDvYSYnL9oWs1PaFKV0_-ijvvJQE6_5pheKTfIVN3Qbkzjxsm4qXTeChBI5MKeBR8z8iWLFT4xPO8NkelwbS2tSUCHrejio6lDDlWhsqSUP8NjHJhqCSZuCDGu3fMMA24cZrYev3tQRc7HHjyi3q_17NZri7feBd7w3NEDkJp7wT_ZclJrYoucHIo1ypaDPJtM-W1-W-lAVREka6Xq4Bg60zdSZ83ODRQTP_IwQrv7hrIcbrRwn1Za_ORZPRPQDP0CMgkb7TkWDZnbPsAzlQ',
+ $serializer->serialize($jws, 0)
+ );
$jws = $serializer->serialize($jws, 0);
$result = $serializer->unserialize($jws);
- static::assertEquals('Live long and Prosper.', $result->getPayload());
- static::assertEquals(1, $result->countSignatures());
- static::assertEquals('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('Live long and Prosper.', $result->getPayload());
+ static::assertSame(1, $result->countSignatures());
+ static::assertSame('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
/**
@@ -97,13 +91,11 @@ public function completeRS256SignWithDetachedPayload(): void
'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
]);
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new Algorithm\RS256()])
- );
- $serializer = new CompactSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new RS256()]));
+ $serializer = new CompactSerializer();
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.', true)
+ ->create()
+ ->withPayload('Live long and Prosper.', true)
->addSignature(
$key,
[
@@ -118,13 +110,16 @@ public function completeRS256SignWithDetachedPayload(): void
->build()
;
- static::assertEquals('eyJhbGciOiJSUzI1NiIsImp3ayI6eyJrdHkiOiJSU0EiLCJuIjoidHBTMVptZlZLVlA1S29mSWhNQlAwdFNXYzRxbGg2Zm0ybHJaU2t1S3hVakVhV2p6WlN6czcyZ0VJR3hyYVd1c01kb1J1VjU0eHNXUnlmNUtlWlQwUy1JNVBybGUzSWRpM2dJQ2lPNE53dk1rNkp3U0JjSld3bVNMRkVLeVVTbkIyQ3RmaUdjMF81clFDcGNFdF9EbjVpTS1CTm43ZnFwb0xJYmtzOHJYS1VJajgtcU1WcWtUWHNFS2VLaW5FMjN0MXlrTWxkc05hYU9ILWh2R3RpNUp0MkRNbkgxSmpvWGREWGZ4dlNQXzBnalVZYjBla3R1ZFlGWG9BNndla21ReUplSW12Z3g0TXl6MUk0aUh0a1lfQ3A3SjRNbjFlalo2SE5teXZvVEVfNE91WTF1Q2VZdjRVeVhGYzFzMXVVeVl0ajR6NTdxc0hHc1M0ZFEzQTJNSnN3IiwiZSI6IkFRQUIifX0..QyRlOCcNBMvCEkJRCQA71y2bVX690g0A6wsC2YXf9_VxOYK-g9-xy-1KjghVXkDPe1gDvYSYnL9oWs1PaFKV0_-ijvvJQE6_5pheKTfIVN3Qbkzjxsm4qXTeChBI5MKeBR8z8iWLFT4xPO8NkelwbS2tSUCHrejio6lDDlWhsqSUP8NjHJhqCSZuCDGu3fMMA24cZrYev3tQRc7HHjyi3q_17NZri7feBd7w3NEDkJp7wT_ZclJrYoucHIo1ypaDPJtM-W1-W-lAVREka6Xq4Bg60zdSZ83ODRQTP_IwQrv7hrIcbrRwn1Za_ORZPRPQDP0CMgkb7TkWDZnbPsAzlQ', $serializer->serialize($jws, 0));
+ static::assertSame(
+ 'eyJhbGciOiJSUzI1NiIsImp3ayI6eyJrdHkiOiJSU0EiLCJuIjoidHBTMVptZlZLVlA1S29mSWhNQlAwdFNXYzRxbGg2Zm0ybHJaU2t1S3hVakVhV2p6WlN6czcyZ0VJR3hyYVd1c01kb1J1VjU0eHNXUnlmNUtlWlQwUy1JNVBybGUzSWRpM2dJQ2lPNE53dk1rNkp3U0JjSld3bVNMRkVLeVVTbkIyQ3RmaUdjMF81clFDcGNFdF9EbjVpTS1CTm43ZnFwb0xJYmtzOHJYS1VJajgtcU1WcWtUWHNFS2VLaW5FMjN0MXlrTWxkc05hYU9ILWh2R3RpNUp0MkRNbkgxSmpvWGREWGZ4dlNQXzBnalVZYjBla3R1ZFlGWG9BNndla21ReUplSW12Z3g0TXl6MUk0aUh0a1lfQ3A3SjRNbjFlalo2SE5teXZvVEVfNE91WTF1Q2VZdjRVeVhGYzFzMXVVeVl0ajR6NTdxc0hHc1M0ZFEzQTJNSnN3IiwiZSI6IkFRQUIifX0..QyRlOCcNBMvCEkJRCQA71y2bVX690g0A6wsC2YXf9_VxOYK-g9-xy-1KjghVXkDPe1gDvYSYnL9oWs1PaFKV0_-ijvvJQE6_5pheKTfIVN3Qbkzjxsm4qXTeChBI5MKeBR8z8iWLFT4xPO8NkelwbS2tSUCHrejio6lDDlWhsqSUP8NjHJhqCSZuCDGu3fMMA24cZrYev3tQRc7HHjyi3q_17NZri7feBd7w3NEDkJp7wT_ZclJrYoucHIo1ypaDPJtM-W1-W-lAVREka6Xq4Bg60zdSZ83ODRQTP_IwQrv7hrIcbrRwn1Za_ORZPRPQDP0CMgkb7TkWDZnbPsAzlQ',
+ $serializer->serialize($jws, 0)
+ );
$jws = $serializer->serialize($jws, 0);
$result = $serializer->unserialize($jws);
static::assertNull($result->getPayload());
- static::assertEquals(1, $result->countSignatures());
- static::assertEquals('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame(1, $result->countSignatures());
+ static::assertSame('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
/**
@@ -144,13 +139,11 @@ public function completeRS384Sign(): void
'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
]);
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new Algorithm\RS384()])
- );
- $serializer = new CompactSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new RS384()]));
+ $serializer = new CompactSerializer();
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->addSignature(
$key,
[
@@ -165,13 +158,16 @@ public function completeRS384Sign(): void
->build()
;
- static::assertEquals('eyJhbGciOiJSUzM4NCIsImp3ayI6eyJrdHkiOiJSU0EiLCJuIjoidHBTMVptZlZLVlA1S29mSWhNQlAwdFNXYzRxbGg2Zm0ybHJaU2t1S3hVakVhV2p6WlN6czcyZ0VJR3hyYVd1c01kb1J1VjU0eHNXUnlmNUtlWlQwUy1JNVBybGUzSWRpM2dJQ2lPNE53dk1rNkp3U0JjSld3bVNMRkVLeVVTbkIyQ3RmaUdjMF81clFDcGNFdF9EbjVpTS1CTm43ZnFwb0xJYmtzOHJYS1VJajgtcU1WcWtUWHNFS2VLaW5FMjN0MXlrTWxkc05hYU9ILWh2R3RpNUp0MkRNbkgxSmpvWGREWGZ4dlNQXzBnalVZYjBla3R1ZFlGWG9BNndla21ReUplSW12Z3g0TXl6MUk0aUh0a1lfQ3A3SjRNbjFlalo2SE5teXZvVEVfNE91WTF1Q2VZdjRVeVhGYzFzMXVVeVl0ajR6NTdxc0hHc1M0ZFEzQTJNSnN3IiwiZSI6IkFRQUIifX0.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.gsBhyBOEDPpHBR8OM2Xb5tybKGeijREZN-smEkvI2188pytujFevbDQJ10afbcdjh5LNKO7U_VD3hGPrC7MIkdtJw4c2d0JnVyhiZT5sFnncnCFjll-Y9GkK7a7jWJJTgF_5LmVEeJSFEEgwT1Stxb-TtZCGqc5ExYizLiuQ2IGB6Sq-hTkpWAXJfmHchE_TxV9A4iLWCMTVM6LsLV6NzDtf2a0iu9XvN1MEdzqM7FNdqNCGN43FveTA0hX8OoFfB2ZjYAjbixUCT4VVI2PuuRyu_Lr8cA73eisolBQLQemPyrCo1s560v2tKD7ICS8Teo1PCJ4HnCuO8bvufI2dKA', $serializer->serialize($jws, 0));
+ static::assertSame(
+ 'eyJhbGciOiJSUzM4NCIsImp3ayI6eyJrdHkiOiJSU0EiLCJuIjoidHBTMVptZlZLVlA1S29mSWhNQlAwdFNXYzRxbGg2Zm0ybHJaU2t1S3hVakVhV2p6WlN6czcyZ0VJR3hyYVd1c01kb1J1VjU0eHNXUnlmNUtlWlQwUy1JNVBybGUzSWRpM2dJQ2lPNE53dk1rNkp3U0JjSld3bVNMRkVLeVVTbkIyQ3RmaUdjMF81clFDcGNFdF9EbjVpTS1CTm43ZnFwb0xJYmtzOHJYS1VJajgtcU1WcWtUWHNFS2VLaW5FMjN0MXlrTWxkc05hYU9ILWh2R3RpNUp0MkRNbkgxSmpvWGREWGZ4dlNQXzBnalVZYjBla3R1ZFlGWG9BNndla21ReUplSW12Z3g0TXl6MUk0aUh0a1lfQ3A3SjRNbjFlalo2SE5teXZvVEVfNE91WTF1Q2VZdjRVeVhGYzFzMXVVeVl0ajR6NTdxc0hHc1M0ZFEzQTJNSnN3IiwiZSI6IkFRQUIifX0.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.gsBhyBOEDPpHBR8OM2Xb5tybKGeijREZN-smEkvI2188pytujFevbDQJ10afbcdjh5LNKO7U_VD3hGPrC7MIkdtJw4c2d0JnVyhiZT5sFnncnCFjll-Y9GkK7a7jWJJTgF_5LmVEeJSFEEgwT1Stxb-TtZCGqc5ExYizLiuQ2IGB6Sq-hTkpWAXJfmHchE_TxV9A4iLWCMTVM6LsLV6NzDtf2a0iu9XvN1MEdzqM7FNdqNCGN43FveTA0hX8OoFfB2ZjYAjbixUCT4VVI2PuuRyu_Lr8cA73eisolBQLQemPyrCo1s560v2tKD7ICS8Teo1PCJ4HnCuO8bvufI2dKA',
+ $serializer->serialize($jws, 0)
+ );
$jws = $serializer->serialize($jws, 0);
$result = $serializer->unserialize($jws);
- static::assertEquals('Live long and Prosper.', $result->getPayload());
- static::assertEquals(1, $result->countSignatures());
- static::assertEquals('RS384', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('Live long and Prosper.', $result->getPayload());
+ static::assertSame(1, $result->countSignatures());
+ static::assertSame('RS384', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
/**
@@ -191,13 +187,11 @@ public function completeRS512Sign(): void
'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
]);
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new Algorithm\RS512()])
- );
- $serializer = new CompactSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new RS512()]));
+ $serializer = new CompactSerializer();
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->addSignature(
$key,
[
@@ -212,14 +206,17 @@ public function completeRS512Sign(): void
->build()
;
- static::assertEquals('eyJhbGciOiJSUzUxMiIsImp3ayI6eyJrdHkiOiJSU0EiLCJuIjoidHBTMVptZlZLVlA1S29mSWhNQlAwdFNXYzRxbGg2Zm0ybHJaU2t1S3hVakVhV2p6WlN6czcyZ0VJR3hyYVd1c01kb1J1VjU0eHNXUnlmNUtlWlQwUy1JNVBybGUzSWRpM2dJQ2lPNE53dk1rNkp3U0JjSld3bVNMRkVLeVVTbkIyQ3RmaUdjMF81clFDcGNFdF9EbjVpTS1CTm43ZnFwb0xJYmtzOHJYS1VJajgtcU1WcWtUWHNFS2VLaW5FMjN0MXlrTWxkc05hYU9ILWh2R3RpNUp0MkRNbkgxSmpvWGREWGZ4dlNQXzBnalVZYjBla3R1ZFlGWG9BNndla21ReUplSW12Z3g0TXl6MUk0aUh0a1lfQ3A3SjRNbjFlalo2SE5teXZvVEVfNE91WTF1Q2VZdjRVeVhGYzFzMXVVeVl0ajR6NTdxc0hHc1M0ZFEzQTJNSnN3IiwiZSI6IkFRQUIifX0.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.OMttEbx9fWoJl4gJwp8m249P87nNENhy5RzH84S1iR8b-upQNy8dqHoIVsQ6qINDjDL5YTl4UWvChIr5AO433LjNUimIeEp2cfiqrszTTwhv-EF3Lp3Ft9NmTb-3ZWvDo1WwwUrD0qro7bynaz5O06DxQfTROcrC6hNX05y6nW_-21exs2_w2OoOWA0Ebx9ev1ayZJh1AQ6q18Ajb0Gk1RST1PFjz0Sk_YiUIYRSVJzgv2Lf7R_Lyi5A5OkIfLOyJmKBi6m0FOLoynq_fT96wCbf5Nkhx-RiuFEcefGhgDav7Wfim3zA3ZAHeNWe58BZOf-8v1kXsV-yd6zQlVa8iw', $serializer->serialize($jws, 0));
+ static::assertSame(
+ 'eyJhbGciOiJSUzUxMiIsImp3ayI6eyJrdHkiOiJSU0EiLCJuIjoidHBTMVptZlZLVlA1S29mSWhNQlAwdFNXYzRxbGg2Zm0ybHJaU2t1S3hVakVhV2p6WlN6czcyZ0VJR3hyYVd1c01kb1J1VjU0eHNXUnlmNUtlWlQwUy1JNVBybGUzSWRpM2dJQ2lPNE53dk1rNkp3U0JjSld3bVNMRkVLeVVTbkIyQ3RmaUdjMF81clFDcGNFdF9EbjVpTS1CTm43ZnFwb0xJYmtzOHJYS1VJajgtcU1WcWtUWHNFS2VLaW5FMjN0MXlrTWxkc05hYU9ILWh2R3RpNUp0MkRNbkgxSmpvWGREWGZ4dlNQXzBnalVZYjBla3R1ZFlGWG9BNndla21ReUplSW12Z3g0TXl6MUk0aUh0a1lfQ3A3SjRNbjFlalo2SE5teXZvVEVfNE91WTF1Q2VZdjRVeVhGYzFzMXVVeVl0ajR6NTdxc0hHc1M0ZFEzQTJNSnN3IiwiZSI6IkFRQUIifX0.TGl2ZSBsb25nIGFuZCBQcm9zcGVyLg.OMttEbx9fWoJl4gJwp8m249P87nNENhy5RzH84S1iR8b-upQNy8dqHoIVsQ6qINDjDL5YTl4UWvChIr5AO433LjNUimIeEp2cfiqrszTTwhv-EF3Lp3Ft9NmTb-3ZWvDo1WwwUrD0qro7bynaz5O06DxQfTROcrC6hNX05y6nW_-21exs2_w2OoOWA0Ebx9ev1ayZJh1AQ6q18Ajb0Gk1RST1PFjz0Sk_YiUIYRSVJzgv2Lf7R_Lyi5A5OkIfLOyJmKBi6m0FOLoynq_fT96wCbf5Nkhx-RiuFEcefGhgDav7Wfim3zA3ZAHeNWe58BZOf-8v1kXsV-yd6zQlVa8iw',
+ $serializer->serialize($jws, 0)
+ );
$jws = $serializer->serialize($jws, 0);
$result = $serializer->unserialize($jws);
- static::assertEquals('Live long and Prosper.', $result->getPayload());
- static::assertEquals(1, $result->countSignatures());
- static::assertEquals('RS512', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('Live long and Prosper.', $result->getPayload());
+ static::assertSame(1, $result->countSignatures());
+ static::assertSame('RS512', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
/**
@@ -240,13 +237,11 @@ public function completePS256Sign(): void
'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
]);
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new Algorithm\PS256()])
- );
- $serializer = new CompactSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new PS256()]));
+ $serializer = new CompactSerializer();
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->addSignature(
$key,
[
@@ -265,9 +260,9 @@ public function completePS256Sign(): void
$jws = $serializer->serialize($jws, 0);
$result = $serializer->unserialize($jws);
- static::assertEquals('Live long and Prosper.', $result->getPayload());
- static::assertEquals(1, $result->countSignatures());
- static::assertEquals('PS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('Live long and Prosper.', $result->getPayload());
+ static::assertSame(1, $result->countSignatures());
+ static::assertSame('PS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
/**
@@ -287,13 +282,11 @@ public function completePS384Sign(): void
'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
]);
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new Algorithm\PS384()])
- );
- $serializer = new CompactSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new PS384()]));
+ $serializer = new CompactSerializer();
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->addSignature(
$key,
[
@@ -311,9 +304,9 @@ public function completePS384Sign(): void
$jws = $serializer->serialize($jws, 0);
$result = $serializer->unserialize($jws);
- static::assertEquals('Live long and Prosper.', $result->getPayload());
- static::assertEquals(1, $result->countSignatures());
- static::assertEquals('PS384', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('Live long and Prosper.', $result->getPayload());
+ static::assertSame(1, $result->countSignatures());
+ static::assertSame('PS384', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
/**
@@ -333,13 +326,11 @@ public function completePS512Sign(): void
'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
]);
- $jwsBuilder = new JWSBuilder(
- new AlgorithmManager([new Algorithm\PS512()])
- );
- $serializer = new CompactSerializer(
- );
+ $jwsBuilder = new JWSBuilder(new AlgorithmManager([new PS512()]));
+ $serializer = new CompactSerializer();
$jws = $jwsBuilder
- ->create()->withPayload('Live long and Prosper.')
+ ->create()
+ ->withPayload('Live long and Prosper.')
->addSignature(
$key,
[
@@ -357,9 +348,9 @@ public function completePS512Sign(): void
$jws = $serializer->serialize($jws, 0);
$result = $serializer->unserialize($jws);
- static::assertEquals('Live long and Prosper.', $result->getPayload());
- static::assertEquals(1, $result->countSignatures());
- static::assertEquals('PS512', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('Live long and Prosper.', $result->getPayload());
+ static::assertSame(1, $result->countSignatures());
+ static::assertSame('PS512', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
/**
@@ -369,15 +360,20 @@ public function completePS512Sign(): void
*/
public function loadJWSJSONSerialization(): void
{
- $serializer = new JSONGeneralSerializer(
+ $serializer = new JSONGeneralSerializer();
+ $result = $serializer->unserialize(
+ '{"payload":"eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ","signatures":[{"protected":"eyJhbGciOiJSUzI1NiJ9","header":{"kid":"2010-12-29"},"signature":"cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw"},{"protected":"eyJhbGciOiJFUzI1NiJ9","header":{"kid":"e9bc097a-ce51-4036-9562-d2ade882db0d"},"signature":"DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q"}]}'
);
- $result = $serializer->unserialize('{"payload":"eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ","signatures":[{"protected":"eyJhbGciOiJSUzI1NiJ9","header":{"kid":"2010-12-29"},"signature":"cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw"},{"protected":"eyJhbGciOiJFUzI1NiJ9","header":{"kid":"e9bc097a-ce51-4036-9562-d2ade882db0d"},"signature":"DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q"}]}');
$claims = json_decode($result->getPayload(), true);
- static::assertEquals(['iss' => 'joe', 'exp' => 1300819380, 'http://example.com/is_root' => true], $claims);
- static::assertEquals(2, $result->countSignatures());
- static::assertEquals('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
- static::assertEquals('ES256', $result->getSignature(1)->getProtectedHeaderParameter('alg'));
+ static::assertSame([
+ 'iss' => 'joe',
+ 'exp' => 1300819380,
+ 'http://example.com/is_root' => true,
+ ], $claims);
+ static::assertSame(2, $result->countSignatures());
+ static::assertSame('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('ES256', $result->getSignature(1)->getProtectedHeaderParameter('alg'));
}
/**
@@ -387,17 +383,23 @@ public function loadJWSJSONSerialization(): void
*/
public function loadJWSJSONSerializationWithDetachedPayload(): void
{
- $jwsVerifier = new JWSVerifier(
- new AlgorithmManager([new Algorithm\RS256()])
+ $jwsVerifier = new JWSVerifier(new AlgorithmManager([new RS256()]));
+ $serializer = new JSONGeneralSerializer();
+ $result = $serializer->unserialize(
+ '{"signatures":[{"protected":"eyJhbGciOiJSUzI1NiJ9","header":{"kid":"2010-12-29"},"signature":"cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw"},{"protected":"eyJhbGciOiJFUzI1NiJ9","header":{"kid":"e9bc097a-ce51-4036-9562-d2ade882db0d"},"signature":"DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q"}]}'
);
- $serializer = new JSONGeneralSerializer(
- );
- $result = $serializer->unserialize('{"signatures":[{"protected":"eyJhbGciOiJSUzI1NiJ9","header":{"kid":"2010-12-29"},"signature":"cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw"},{"protected":"eyJhbGciOiJFUzI1NiJ9","header":{"kid":"e9bc097a-ce51-4036-9562-d2ade882db0d"},"signature":"DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q"}]}');
- static::assertEquals(2, $result->countSignatures());
- static::assertEquals('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
- static::assertEquals('ES256', $result->getSignature(1)->getProtectedHeaderParameter('alg'));
- $jwsVerifier->verifyWithKeySet($result, $this->getPrivateKeySet(), 0, Base64UrlSafe::decode('eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ'));
+ static::assertSame(2, $result->countSignatures());
+ static::assertSame('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('ES256', $result->getSignature(1)->getProtectedHeaderParameter('alg'));
+ $jwsVerifier->verifyWithKeySet(
+ $result,
+ $this->getPrivateKeySet(),
+ 0,
+ Base64UrlSafe::decode(
+ 'eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ'
+ )
+ );
}
/**
@@ -407,17 +409,21 @@ public function loadJWSJSONSerializationWithDetachedPayloadAndPayloadInJWS(): vo
{
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('A detached payload is set, but the JWS already has a payload');
- $jwsVerifier = new JWSVerifier(
- new AlgorithmManager([new Algorithm\RS256()])
+ $jwsVerifier = new JWSVerifier(new AlgorithmManager([new RS256()]));
+ $serializer = new JSONGeneralSerializer();
+ $result = $serializer->unserialize(
+ '{"payload":"eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ","signatures":[{"protected":"eyJhbGciOiJSUzI1NiJ9","header":{"kid":"2010-12-29"},"signature":"cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw"},{"protected":"eyJhbGciOiJFUzI1NiJ9","header":{"kid":"e9bc097a-ce51-4036-9562-d2ade882db0d"},"signature":"DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q"}]}'
);
- $serializer = new JSONGeneralSerializer(
- );
- $result = $serializer->unserialize('{"payload":"eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ","signatures":[{"protected":"eyJhbGciOiJSUzI1NiJ9","header":{"kid":"2010-12-29"},"signature":"cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw"},{"protected":"eyJhbGciOiJFUzI1NiJ9","header":{"kid":"e9bc097a-ce51-4036-9562-d2ade882db0d"},"signature":"DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q"}]}');
- static::assertEquals(2, $result->countSignatures());
- static::assertEquals('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame(2, $result->countSignatures());
+ static::assertSame('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
- $jwsVerifier->verifyWithKeySet($result, $this->getPrivateKeySet(), 0, 'eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ');
+ $jwsVerifier->verifyWithKeySet(
+ $result,
+ $this->getPrivateKeySet(),
+ 0,
+ 'eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ'
+ );
}
/**
@@ -427,9 +433,10 @@ public function loadInvalidInput(): void
{
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Unsupported input');
- $serializer = new CompactSerializer(
+ $serializer = new CompactSerializer();
+ $serializer->unserialize(
+ 'DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q'
);
- $serializer->unserialize('DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q');
}
/**
@@ -439,9 +446,10 @@ public function loadInvalidInput2(): void
{
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Unsupported input');
- $serializer = new CompactSerializer(
+ $serializer = new CompactSerializer();
+ $serializer->unserialize(
+ 'DtEhU3ljb.Eg8L.38VWAf.UAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q'
);
- $serializer->unserialize('DtEhU3ljb.Eg8L.38VWAf.UAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q');
}
/**
@@ -451,13 +459,18 @@ public function loadInvalidInput2(): void
*/
public function loadIETFExample1(): void
{
- $serializer = new CompactSerializer(
+ $serializer = new CompactSerializer();
+ $result = $serializer->unserialize(
+ 'eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk'
);
- $result = $serializer->unserialize('eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk');
- static::assertEquals(['iss' => 'joe', 'exp' => 1300819380, 'http://example.com/is_root' => true], json_decode($result->getPayload(), true));
- static::assertEquals(1, $result->countSignatures());
- static::assertEquals('HS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame([
+ 'iss' => 'joe',
+ 'exp' => 1300819380,
+ 'http://example.com/is_root' => true,
+ ], json_decode($result->getPayload(), true));
+ static::assertSame(1, $result->countSignatures());
+ static::assertSame('HS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
/**
@@ -467,13 +480,18 @@ public function loadIETFExample1(): void
*/
public function loadIETFExample2(): void
{
- $serializer = new CompactSerializer(
+ $serializer = new CompactSerializer();
+ $result = $serializer->unserialize(
+ 'eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw'
);
- $result = $serializer->unserialize('eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw');
- static::assertEquals(['iss' => 'joe', 'exp' => 1300819380, 'http://example.com/is_root' => true], json_decode($result->getPayload(), true));
- static::assertEquals(1, $result->countSignatures());
- static::assertEquals('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame([
+ 'iss' => 'joe',
+ 'exp' => 1300819380,
+ 'http://example.com/is_root' => true,
+ ], json_decode($result->getPayload(), true));
+ static::assertSame(1, $result->countSignatures());
+ static::assertSame('RS256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
/**
@@ -483,13 +501,18 @@ public function loadIETFExample2(): void
*/
public function loadIETFExample3(): void
{
- $serializer = new CompactSerializer(
+ $serializer = new CompactSerializer();
+ $result = $serializer->unserialize(
+ 'eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q'
);
- $result = $serializer->unserialize('eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q');
- static::assertEquals(['iss' => 'joe', 'exp' => 1300819380, 'http://example.com/is_root' => true], json_decode($result->getPayload(), true));
- static::assertEquals(1, $result->countSignatures());
- static::assertEquals('ES256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame([
+ 'iss' => 'joe',
+ 'exp' => 1300819380,
+ 'http://example.com/is_root' => true,
+ ], json_decode($result->getPayload(), true));
+ static::assertSame(1, $result->countSignatures());
+ static::assertSame('ES256', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
/**
@@ -499,100 +522,103 @@ public function loadIETFExample3(): void
*/
public function loadIETFExample4(): void
{
- $serializer = new CompactSerializer(
+ $serializer = new CompactSerializer();
+ $result = $serializer->unserialize(
+ 'eyJhbGciOiJFUzUxMiJ9.UGF5bG9hZA.AdwMgeerwtHoh-l192l60hp9wAHZFVJbLfD_UxMi70cwnZOYaRI1bKPWROc-mZZqwqT2SI-KGDKB34XO0aw_7XdtAG8GaSwFKdCAPZgoXD2YBJZCPEX3xKpRwcdOO8KpEHwJjyqOgzDO7iKvU8vcnwNrmxYbSW9ERBXukOXolLzeO_Jn'
);
- $result = $serializer->unserialize('eyJhbGciOiJFUzUxMiJ9.UGF5bG9hZA.AdwMgeerwtHoh-l192l60hp9wAHZFVJbLfD_UxMi70cwnZOYaRI1bKPWROc-mZZqwqT2SI-KGDKB34XO0aw_7XdtAG8GaSwFKdCAPZgoXD2YBJZCPEX3xKpRwcdOO8KpEHwJjyqOgzDO7iKvU8vcnwNrmxYbSW9ERBXukOXolLzeO_Jn');
- static::assertEquals('Payload', $result->getPayload());
- static::assertEquals(1, $result->countSignatures());
- static::assertEquals('ES512', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
+ static::assertSame('Payload', $result->getPayload());
+ static::assertSame(1, $result->countSignatures());
+ static::assertSame('ES512', $result->getSignature(0)->getProtectedHeaderParameter('alg'));
}
private function getPrivateKeySet(): JWKSet
{
- $keys = ['keys' => [
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'weNJy2HscCSM6AEDTDg04biOvhFhyyWvOHQfeF_PxMQ',
- 'y' => 'e8lnCO-AlStT-NJVX-crhB7QRYhiix03illJOVAOyck',
- 'd' => 'VEmDZpDXXK8p8N0Cndsxs924q6nS1RXFASRl6BfUqdw',
- ],
- [
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'gI0GAILBdu7T53akrFmMyGcsF3n5dO7MmwNBHKW5SV0',
- 'y' => 'SLW_xSffzlPWrHEVI30DHM_4egVwt3NQqeUD7nMFpps',
- 'd' => '0_NxaRPUMQoAJt50Gz8YiTr8gRTwyEaCumd-MToTmIo',
- ],
- [
- 'kid' => '2010-12-29',
- 'kty' => 'RSA',
- 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
- 'e' => 'AQAB',
- 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
- ],
- [
- 'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
- 'kty' => 'EC',
- 'crv' => 'P-256',
- 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
- 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
- 'd' => 'jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI',
- ],
- [
- 'kid' => '123456789',
- 'kty' => 'RSA',
- 'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
- 'e' => 'AQAB',
- 'p' => '5BGU1c7af_5sFyfsa-onIJgo5BZu8uHvz3Uyb8OA0a-G9UPO1ShLYjX0wUfhZcFB7fwPtgmmYAN6wKGVce9eMAbX4PliPk3r-BcpZuPKkuLk_wFvgWAQ5Hqw2iEuwXLV0_e8c2gaUt_hyMC5-nFc4v0Bmv6NT6Pfry-UrK3BKWc',
- 'd' => 'Kp0KuZwCZGL1BLgsVM-N0edMNitl9wN5Hf2WOYDoIqOZNAEKzdJuenIMhITJjRFUX05GVL138uyp2js_pqDdY9ipA7rAKThwGuDdNphZHech9ih3DGEPXs-YpmHqvIbCd3GoGm38MKwxYkddEpFnjo8rKna1_BpJthrFxjDRhw9DxJBycOdH2yWTyp62ZENPvneK40H2a57W4QScTgfecZqD59m2fGUaWaX5uUmIxaEmtGoJnd9RE4oywKhgN7_TK7wXRlqA4UoRPiH2ACrdU-_cLQL9Jc0u0GqZJK31LDbOeN95QgtSCc72k3Vtzy3CrVpp5TAA67s1Gj9Skn-CAQ',
- 'q' => 'zPD-B-nrngwF-O99BHvb47XGKR7ON8JCI6JxavzIkusMXCB8rMyYW8zLs68L8JLAzWZ34oMq0FPUnysBxc5nTF8Nb4BZxTZ5-9cHfoKrYTI3YWsmVW2FpCJFEjMs4NXZ28PBkS9b4zjfS2KhNdkmCeOYU0tJpNfwmOTI90qeUdU',
- 'dp' => 'aJrzw_kjWK9uDlTeaES2e4muv6bWbopYfrPHVWG7NPGoGdhnBnd70-jhgMEiTZSNU8VXw2u7prAR3kZ-kAp1DdwlqedYOzFsOJcPA0UZhbORyrBy30kbll_7u6CanFm6X4VyJxCpejd7jKNw6cCTFP1sfhWg5NVJ5EUTkPwE66M',
- 'dq' => 'Swz1-m_vmTFN_pu1bK7vF7S5nNVrL4A0OFiEsGliCmuJWzOKdL14DiYxctvnw3H6qT2dKZZfV2tbse5N9-JecdldUjfuqAoLIe7dD7dKi42YOlTC9QXmqvTh1ohnJu8pmRFXEZQGUm_BVhoIb2_WPkjav6YSkguCUHt4HRd2YwE',
- 'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
- 'e' => 'AQAB',
- 'd' => 'kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-WY5NWV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD93Dt62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghkqDp0Vqj3kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vlt3UVe4WO3JkJOzlpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-VFs3VSndVTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ',
- 'p' => '1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-SWxkbkmoEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lffNn03IXqWF5MDFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0',
- 'q' => 'wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBmUDdaDYVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aXIWxKwd4gvxFImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc',
- 'dp' => 'ZK-YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KLhMXvo-uz-KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827rnpZzAJKpdhWAgqrXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE',
- 'dq' => 'Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCjywcMlYYg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDBUfCAiJVeESOjJDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis',
- 'qi' => 'VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
- 'e' => 'AQAB',
- 'd' => 'VFCWOqXr8nvZNyaaJLXdnNPXZKRaWCjkU5Q2egQQpTBMwhprMzWzpR8Sxq1OPThh_J6MUD8Z35wky9b8eEO0pwNS8xlh1lOFRRBoNqDIKVOku0aZb-rynq8cxjDTLZQ6Fz7jSjR1Klop-YKaUHc9GsEofQqYruPhzSA-QgajZGPbE_0ZaVDJHfyd7UUBUKunFMScbflYAAOYJqVIVwaYR5zWEEceUjNnTNo_CVSj-VvXLO5VZfCUAVLgW4dpf1SrtZjSt34YLsRarSb127reG_DUwg9Ch-KyvjT1SkHgUWRVGcyly7uvVGRSDwsXypdrNinPA4jlhoNdizK2zF2CWQ',
- 'p' => '9gY2w6I6S6L0juEKsbeDAwpd9WMfgqFoeA9vEyEUuk4kLwBKcoe1x4HG68ik918hdDSE9vDQSccA3xXHOAFOPJ8R9EeIAbTi1VwBYnbTp87X-xcPWlEPkrdoUKW60tgs1aNd_Nnc9LEVVPMS390zbFxt8TN_biaBgelNgbC95sM',
- 'q' => 'uKlCKvKv_ZJMVcdIs5vVSU_6cPtYI1ljWytExV_skstvRSNi9r66jdd9-yBhVfuG4shsp2j7rGnIio901RBeHo6TPKWVVykPu1iYhQXw1jIABfw-MVsN-3bQ76WLdt2SDxsHs7q7zPyUyHXmps7ycZ5c72wGkUwNOjYelmkiNS0',
- 'dp' => 'w0kZbV63cVRvVX6yk3C8cMxo2qCM4Y8nsq1lmMSYhG4EcL6FWbX5h9yuvngs4iLEFk6eALoUS4vIWEwcL4txw9LsWH_zKI-hwoReoP77cOdSL4AVcraHawlkpyd2TWjE5evgbhWtOxnZee3cXJBkAi64Ik6jZxbvk-RR3pEhnCs',
- 'dq' => 'o_8V14SezckO6CNLKs_btPdFiO9_kC1DsuUTd2LAfIIVeMZ7jn1Gus_Ff7B7IVx3p5KuBGOVF8L-qifLb6nQnLysgHDh132NDioZkhH7mI7hPG-PYE_odApKdnqECHWw0J-F0JWnUd6D2B_1TvF9mXA2Qx-iGYn8OVV1Bsmp6qU',
- 'qi' => 'eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlCtUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZB9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo',
- ],
- [
- 'kty' => 'RSA',
- 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
- 'e' => 'AQAB',
- 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
- 'p' => '4BzEEOtIpmVdVEZNCqS7baC4crd0pqnRH_5IB3jw3bcxGn6QLvnEtfdUdiYrqBdss1l58BQ3KhooKeQTa9AB0Hw_Py5PJdTJNPY8cQn7ouZ2KKDcmnPGBY5t7yLc1QlQ5xHdwW1VhvKn-nXqhJTBgIPgtldC-KDV5z-y2XDwGUc',
- 'q' => 'uQPEfgmVtjL0Uyyx88GZFF1fOunH3-7cepKmtH4pxhtCoHqpWmT8YAmZxaewHgHAjLYsp1ZSe7zFYHj7C6ul7TjeLQeZD_YwD66t62wDmpe_HlB-TnBA-njbglfIsRLtXlnDzQkv5dTltRJ11BKBBypeeF6689rjcJIDEz9RWdc',
- 'dp' => 'BwKfV3Akq5_MFZDFZCnW-wzl-CCo83WoZvnLQwCTeDv8uzluRSnm71I3QCLdhrqE2e9YkxvuxdBfpT_PI7Yz-FOKnu1R6HsJeDCjn12Sk3vmAktV2zb34MCdy7cpdTh_YVr7tss2u6vneTwrA86rZtu5Mbr1C1XsmvkxHQAdYo0',
- 'dq' => 'h_96-mK1R_7glhsum81dZxjTnYynPbZpHziZjeeHcXYsXaaMwkOlODsWa7I9xXDoRwbKgB719rrmI2oKr6N3Do9U0ajaHF-NKJnwgjMd2w9cjz3_-kyNlxAr2v4IKhGNpmM5iIgOS1VZnOZ68m6_pbLBSp3nssTdlqvd0tIiTHU',
- 'qi' => 'IYd7DHOhrWvxkwPQsRM2tOgrjbcrfvtQJipd-DlcxyVuuM9sQLdgjVk2oy26F0EmpScGLq2MowX7fhd_QJQ3ydy5cY7YIBi87w93IKLEdfnbJtoOPLUW0ITrJReOgo1cq9SbsxYawBgfp_gh6A5603k2-ZQwVK0JKSHuLFkuQ3U',
- ],
- [
- 'kty' => 'EC',
- 'crv' => 'P-521',
- 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
- 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
- 'd' => 'AY5pb7A0UFiB3RELSD64fTLOSV_jazdF7fLYyuTw8lOfRhWg6Y6rUrPAxerEzgdRhajnu0ferB0d53vM9mE15j2C',
+ $keys = [
+ 'keys' => [
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'weNJy2HscCSM6AEDTDg04biOvhFhyyWvOHQfeF_PxMQ',
+ 'y' => 'e8lnCO-AlStT-NJVX-crhB7QRYhiix03illJOVAOyck',
+ 'd' => 'VEmDZpDXXK8p8N0Cndsxs924q6nS1RXFASRl6BfUqdw',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'gI0GAILBdu7T53akrFmMyGcsF3n5dO7MmwNBHKW5SV0',
+ 'y' => 'SLW_xSffzlPWrHEVI30DHM_4egVwt3NQqeUD7nMFpps',
+ 'd' => '0_NxaRPUMQoAJt50Gz8YiTr8gRTwyEaCumd-MToTmIo',
+ ],
+ [
+ 'kid' => '2010-12-29',
+ 'kty' => 'RSA',
+ 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
+ 'e' => 'AQAB',
+ 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
+ ],
+ [
+ 'kid' => 'e9bc097a-ce51-4036-9562-d2ade882db0d',
+ 'kty' => 'EC',
+ 'crv' => 'P-256',
+ 'x' => 'f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU',
+ 'y' => 'x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0',
+ 'd' => 'jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI',
+ ],
+ [
+ 'kid' => '123456789',
+ 'kty' => 'RSA',
+ 'n' => 'tpS1ZmfVKVP5KofIhMBP0tSWc4qlh6fm2lrZSkuKxUjEaWjzZSzs72gEIGxraWusMdoRuV54xsWRyf5KeZT0S-I5Prle3Idi3gICiO4NwvMk6JwSBcJWwmSLFEKyUSnB2CtfiGc0_5rQCpcEt_Dn5iM-BNn7fqpoLIbks8rXKUIj8-qMVqkTXsEKeKinE23t1ykMldsNaaOH-hvGti5Jt2DMnH1JjoXdDXfxvSP_0gjUYb0ektudYFXoA6wekmQyJeImvgx4Myz1I4iHtkY_Cp7J4Mn1ejZ6HNmyvoTE_4OuY1uCeYv4UyXFc1s1uUyYtj4z57qsHGsS4dQ3A2MJsw',
+ 'e' => 'AQAB',
+ 'p' => '5BGU1c7af_5sFyfsa-onIJgo5BZu8uHvz3Uyb8OA0a-G9UPO1ShLYjX0wUfhZcFB7fwPtgmmYAN6wKGVce9eMAbX4PliPk3r-BcpZuPKkuLk_wFvgWAQ5Hqw2iEuwXLV0_e8c2gaUt_hyMC5-nFc4v0Bmv6NT6Pfry-UrK3BKWc',
+ 'd' => 'Kp0KuZwCZGL1BLgsVM-N0edMNitl9wN5Hf2WOYDoIqOZNAEKzdJuenIMhITJjRFUX05GVL138uyp2js_pqDdY9ipA7rAKThwGuDdNphZHech9ih3DGEPXs-YpmHqvIbCd3GoGm38MKwxYkddEpFnjo8rKna1_BpJthrFxjDRhw9DxJBycOdH2yWTyp62ZENPvneK40H2a57W4QScTgfecZqD59m2fGUaWaX5uUmIxaEmtGoJnd9RE4oywKhgN7_TK7wXRlqA4UoRPiH2ACrdU-_cLQL9Jc0u0GqZJK31LDbOeN95QgtSCc72k3Vtzy3CrVpp5TAA67s1Gj9Skn-CAQ',
+ 'q' => 'zPD-B-nrngwF-O99BHvb47XGKR7ON8JCI6JxavzIkusMXCB8rMyYW8zLs68L8JLAzWZ34oMq0FPUnysBxc5nTF8Nb4BZxTZ5-9cHfoKrYTI3YWsmVW2FpCJFEjMs4NXZ28PBkS9b4zjfS2KhNdkmCeOYU0tJpNfwmOTI90qeUdU',
+ 'dp' => 'aJrzw_kjWK9uDlTeaES2e4muv6bWbopYfrPHVWG7NPGoGdhnBnd70-jhgMEiTZSNU8VXw2u7prAR3kZ-kAp1DdwlqedYOzFsOJcPA0UZhbORyrBy30kbll_7u6CanFm6X4VyJxCpejd7jKNw6cCTFP1sfhWg5NVJ5EUTkPwE66M',
+ 'dq' => 'Swz1-m_vmTFN_pu1bK7vF7S5nNVrL4A0OFiEsGliCmuJWzOKdL14DiYxctvnw3H6qT2dKZZfV2tbse5N9-JecdldUjfuqAoLIe7dD7dKi42YOlTC9QXmqvTh1ohnJu8pmRFXEZQGUm_BVhoIb2_WPkjav6YSkguCUHt4HRd2YwE',
+ 'qi' => 'BocuCOEOq-oyLDALwzMXU8gOf3IL1Q1_BWwsdoANoh6i179psxgE4JXToWcpXZQQqub8ngwE6uR9fpd3m6N_PL4T55vbDDyjPKmrL2ttC2gOtx9KrpPh-Z7LQRo4BE48nHJJrystKHfFlaH2G7JxHNgMBYVADyttN09qEoav8Os',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw',
+ 'e' => 'AQAB',
+ 'd' => 'kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-WY5NWV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD93Dt62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghkqDp0Vqj3kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vlt3UVe4WO3JkJOzlpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-VFs3VSndVTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ',
+ 'p' => '1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-SWxkbkmoEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lffNn03IXqWF5MDFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0',
+ 'q' => 'wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBmUDdaDYVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aXIWxKwd4gvxFImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc',
+ 'dp' => 'ZK-YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KLhMXvo-uz-KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827rnpZzAJKpdhWAgqrXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE',
+ 'dq' => 'Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCjywcMlYYg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDBUfCAiJVeESOjJDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis',
+ 'qi' => 'VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1WlUzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDprecbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBIY2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw',
+ 'e' => 'AQAB',
+ 'd' => 'VFCWOqXr8nvZNyaaJLXdnNPXZKRaWCjkU5Q2egQQpTBMwhprMzWzpR8Sxq1OPThh_J6MUD8Z35wky9b8eEO0pwNS8xlh1lOFRRBoNqDIKVOku0aZb-rynq8cxjDTLZQ6Fz7jSjR1Klop-YKaUHc9GsEofQqYruPhzSA-QgajZGPbE_0ZaVDJHfyd7UUBUKunFMScbflYAAOYJqVIVwaYR5zWEEceUjNnTNo_CVSj-VvXLO5VZfCUAVLgW4dpf1SrtZjSt34YLsRarSb127reG_DUwg9Ch-KyvjT1SkHgUWRVGcyly7uvVGRSDwsXypdrNinPA4jlhoNdizK2zF2CWQ',
+ 'p' => '9gY2w6I6S6L0juEKsbeDAwpd9WMfgqFoeA9vEyEUuk4kLwBKcoe1x4HG68ik918hdDSE9vDQSccA3xXHOAFOPJ8R9EeIAbTi1VwBYnbTp87X-xcPWlEPkrdoUKW60tgs1aNd_Nnc9LEVVPMS390zbFxt8TN_biaBgelNgbC95sM',
+ 'q' => 'uKlCKvKv_ZJMVcdIs5vVSU_6cPtYI1ljWytExV_skstvRSNi9r66jdd9-yBhVfuG4shsp2j7rGnIio901RBeHo6TPKWVVykPu1iYhQXw1jIABfw-MVsN-3bQ76WLdt2SDxsHs7q7zPyUyHXmps7ycZ5c72wGkUwNOjYelmkiNS0',
+ 'dp' => 'w0kZbV63cVRvVX6yk3C8cMxo2qCM4Y8nsq1lmMSYhG4EcL6FWbX5h9yuvngs4iLEFk6eALoUS4vIWEwcL4txw9LsWH_zKI-hwoReoP77cOdSL4AVcraHawlkpyd2TWjE5evgbhWtOxnZee3cXJBkAi64Ik6jZxbvk-RR3pEhnCs',
+ 'dq' => 'o_8V14SezckO6CNLKs_btPdFiO9_kC1DsuUTd2LAfIIVeMZ7jn1Gus_Ff7B7IVx3p5KuBGOVF8L-qifLb6nQnLysgHDh132NDioZkhH7mI7hPG-PYE_odApKdnqECHWw0J-F0JWnUd6D2B_1TvF9mXA2Qx-iGYn8OVV1Bsmp6qU',
+ 'qi' => 'eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlCtUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZB9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo',
+ ],
+ [
+ 'kty' => 'RSA',
+ 'n' => 'ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ',
+ 'e' => 'AQAB',
+ 'd' => 'Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97IjlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYTCBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLhBOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ',
+ 'p' => '4BzEEOtIpmVdVEZNCqS7baC4crd0pqnRH_5IB3jw3bcxGn6QLvnEtfdUdiYrqBdss1l58BQ3KhooKeQTa9AB0Hw_Py5PJdTJNPY8cQn7ouZ2KKDcmnPGBY5t7yLc1QlQ5xHdwW1VhvKn-nXqhJTBgIPgtldC-KDV5z-y2XDwGUc',
+ 'q' => 'uQPEfgmVtjL0Uyyx88GZFF1fOunH3-7cepKmtH4pxhtCoHqpWmT8YAmZxaewHgHAjLYsp1ZSe7zFYHj7C6ul7TjeLQeZD_YwD66t62wDmpe_HlB-TnBA-njbglfIsRLtXlnDzQkv5dTltRJ11BKBBypeeF6689rjcJIDEz9RWdc',
+ 'dp' => 'BwKfV3Akq5_MFZDFZCnW-wzl-CCo83WoZvnLQwCTeDv8uzluRSnm71I3QCLdhrqE2e9YkxvuxdBfpT_PI7Yz-FOKnu1R6HsJeDCjn12Sk3vmAktV2zb34MCdy7cpdTh_YVr7tss2u6vneTwrA86rZtu5Mbr1C1XsmvkxHQAdYo0',
+ 'dq' => 'h_96-mK1R_7glhsum81dZxjTnYynPbZpHziZjeeHcXYsXaaMwkOlODsWa7I9xXDoRwbKgB719rrmI2oKr6N3Do9U0ajaHF-NKJnwgjMd2w9cjz3_-kyNlxAr2v4IKhGNpmM5iIgOS1VZnOZ68m6_pbLBSp3nssTdlqvd0tIiTHU',
+ 'qi' => 'IYd7DHOhrWvxkwPQsRM2tOgrjbcrfvtQJipd-DlcxyVuuM9sQLdgjVk2oy26F0EmpScGLq2MowX7fhd_QJQ3ydy5cY7YIBi87w93IKLEdfnbJtoOPLUW0ITrJReOgo1cq9SbsxYawBgfp_gh6A5603k2-ZQwVK0JKSHuLFkuQ3U',
+ ],
+ [
+ 'kty' => 'EC',
+ 'crv' => 'P-521',
+ 'x' => 'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk',
+ 'y' => 'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2',
+ 'd' => 'AY5pb7A0UFiB3RELSD64fTLOSV_jazdF7fLYyuTw8lOfRhWg6Y6rUrPAxerEzgdRhajnu0ferB0d53vM9mE15j2C',
+ ],
],
- ]];
+ ];
return JWKSet::createFromKeyData($keys);
}