diff --git a/.editorconfig b/.editorconfig index c0130606a..183c4953c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -17,6 +17,9 @@ block_comment_end = */ [{*.yml,*.yaml}] indent_size = 2 +[*.neon] +indent_style = tab + [*.md] trim_trailing_whitespace = false diff --git a/.github/workflows/integrate.yml b/.github/workflows/integrate.yml index 3e4db0e75..bbcc4a8a9 100644 --- a/.github/workflows/integrate.yml +++ b/.github/workflows/integrate.yml @@ -14,7 +14,7 @@ jobs: runs-on: "ubuntu-latest" steps: - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Check file permissions" run: | @@ -34,7 +34,7 @@ jobs: php-version: "8.1" - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Install dependencies" uses: "ramsey/composer-install@v2" @@ -68,7 +68,7 @@ jobs: coverage: "xdebug" - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Install dependencies" uses: "ramsey/composer-install@v2" @@ -101,7 +101,7 @@ jobs: extensions: "json, mbstring, openssl, sqlite3, curl, uuid" - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Validate Composer configuration" run: "composer validate --strict" @@ -129,7 +129,7 @@ jobs: extensions: "json, mbstring, openssl, sqlite3, curl, uuid" - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Check adherence to EditorConfig" uses: "greut/eclint-action@v0" @@ -157,7 +157,7 @@ jobs: extensions: "json, mbstring, openssl, sqlite3, curl, uuid" - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Fetch Git base reference" run: "git fetch --depth=1 origin ${GITHUB_BASE_REF}" @@ -186,7 +186,7 @@ jobs: coverage: "xdebug" - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Fetch Git base reference" run: "git fetch --depth=1 origin ${GITHUB_BASE_REF}" @@ -208,7 +208,7 @@ jobs: runs-on: "ubuntu-20.04" steps: - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Check exported files" run: | diff --git a/composer.json b/composer.json index b72bc91b2..3fd329bdb 100644 --- a/composer.json +++ b/composer.json @@ -99,19 +99,19 @@ "ext-mbstring": "*", "ext-openssl": "*", "ext-sodium": "*", - "brick/math": "^0.9|^0.10|^0.11", - "paragonie/constant_time_encoding": "^2.4", + "brick/math": "^0.9|^0.10|^0.11|^0.12", + "paragonie/constant_time_encoding": "^2.6", "psr/clock": "^1.0", "psr/event-dispatcher": "^1.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0", "spomky-labs/aes-key-wrap": "^7.0", "spomky-labs/pki-framework": "^1.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/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/polyfill-mbstring": "^1.12" }, "require-dev": { @@ -121,7 +121,7 @@ "blackfire/php-sdk": "^2.0", "ekino/phpstan-banned-code": "^1.0", "infection/infection": "^0.27", - "matthiasnoback/symfony-config-test": "^5.0.0", + "matthiasnoback/symfony-config-test": "^5.0", "nyholm/psr7": "^1.5", "php-http/mock-client": "^1.5", "php-parallel-lint/php-parallel-lint": "^1.3", @@ -133,18 +133,17 @@ "phpstan/phpstan-strict-rules": "^1.4", "phpunit/phpunit": "^10.1", "qossmic/deptrac-shim": "^1.0", - "rector/rector": "^0.17", + "rector/rector": "^0.18", "roave/security-advisories": "dev-latest", - "symfony/browser-kit": "^6.1.3", - "symfony/finder": "^5.4|^6.0", - "symfony/framework-bundle": "^6.1.3", - "symfony/http-client": "^5.4|^6.0", - "symfony/phpunit-bridge": "^6.1.3", - "symfony/serializer": "^6.1.3", - "symfony/var-dumper": "^6.1.3", - "symfony/yaml": "^6.1.3", - "symplify/easy-coding-standard": "^11.0", - "symplify/monorepo-builder": "11.2.3.72" + "symfony/browser-kit": "^6.1|^7.0", + "symfony/finder": "^6.1|^7.0", + "symfony/framework-bundle": "^6.1|^7.0", + "symfony/http-client": "^6.1|^7.0", + "symfony/phpunit-bridge": "^6.1|^7.0", + "symfony/serializer": "^6.1|^7.0", + "symfony/var-dumper": "^6.1|^7.0", + "symfony/yaml": "^6.1|^7.0", + "symplify/easy-coding-standard": "^12.0" }, "replace": { "web-token/encryption-pack": "self.version", diff --git a/ecs.php b/ecs.php index 092f5ab94..0e1998774 100644 --- a/ecs.php +++ b/ecs.php @@ -87,8 +87,7 @@ 'import_functions' => true, ]); - $config->services() - ->remove(PhpUnitTestClassRequiresCoversFixer::class); + $config->skip([PhpUnitTestClassRequiresCoversFixer::class]); $config->parallel(); $config->paths([ __DIR__ . '/performance', @@ -96,6 +95,5 @@ __DIR__ . '/tests', __DIR__ . '/ecs.php', __DIR__ . '/rector.php', - __DIR__ . '/monorepo-builder.php', ]); }; diff --git a/monorepo-builder.php b/monorepo-builder.php deleted file mode 100644 index 90047b9d5..000000000 --- a/monorepo-builder.php +++ /dev/null @@ -1,28 +0,0 @@ -packageDirectories([__DIR__ . '/src', __DIR__ . '/packs']); - - $mbConfig->workers([ - UpdateReplaceReleaseWorker::class, - SetCurrentMutualDependenciesReleaseWorker::class, - AddTagToChangelogReleaseWorker::class, - TagVersionReleaseWorker::class, - PushTagReleaseWorker::class, - SetNextMutualDependenciesReleaseWorker::class, - UpdateBranchAliasReleaseWorker::class, - PushNextDevReleaseWorker::class, - ]); -}; diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index ebd594d8c..ddad872d6 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,1946 +1,2196 @@ parameters: - ignoreErrors: - - - message: "#^Parameter \\#1 \\$jwk of method Jose\\\\Component\\\\KeyManagement\\\\Analyzer\\\\KeyAnalyzerManager\\:\\:analyze\\(\\) expects Jose\\\\Component\\\\Core\\\\JWK, mixed given\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DataCollector/KeyCollector.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\JoseFrameworkExtension\\:\\:getConfiguration\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\JoseFrameworkExtension\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/AbstractSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\AbstractSource\\:\\:create\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/AbstractSource.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 2 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\CheckerSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\CheckerSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\CheckerSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\ClaimChecker\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\ClaimChecker\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\ClaimChecker\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\HeaderChecker\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\HeaderChecker\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\HeaderChecker\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Console\\\\ConsoleSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Console/ConsoleSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Console\\\\ConsoleSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Console/ConsoleSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Console\\\\ConsoleSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Console/ConsoleSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Core\\\\CoreSource\\:\\:load\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Core/CoreSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Core\\\\CoreSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Core/CoreSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Core\\\\CoreSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Core/CoreSource.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/AbstractEncryptionSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\AbstractEncryptionSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/AbstractEncryptionSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\AbstractEncryptionSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/AbstractEncryptionSource.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\EncryptionSource\\:\\:getAlgorithmsFiles\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\EncryptionSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\EncryptionSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\EncryptionSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWEBuilder\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWEDecrypter\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEDecrypter.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWELoader\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWELoader\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWELoader\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWESerializer\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWESerializer\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWESerializer\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JKUSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JKUSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JKUSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSetSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSetSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSetSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JKU.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JWKSet.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/X5U.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/CertificateFile.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWK.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php - - - - message: "#^Parameter \\#1 \\$id of class Symfony\\\\Component\\\\DependencyInjection\\\\Reference constructor expects string, mixed given\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/KeyFile.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/P12.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Secret.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Values.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/X5C.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKUriSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKUriSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKUriSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\KeyManagementSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\KeyManagementSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\KeyManagementSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedToken\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedToken\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedToken\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenBuilder\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenBuilder\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenBuilder\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenLoader\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenLoader\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenLoader\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/AbstractSignatureSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\AbstractSignatureSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/AbstractSignatureSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\AbstractSignatureSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/AbstractSignatureSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSBuilder\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSBuilder.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSLoader\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSLoader\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSLoader\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSSerializer\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSSerializer\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSSerializer\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSVerifier\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSVerifier.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\SignatureSource\\:\\:getAlgorithmsFiles\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\SignatureSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\SignatureSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\SignatureSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Source\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Source.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Source\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Source.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Source\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/DependencyInjection/Source/Source.php - - - - message: "#^Parameter \\#1 \\$json of static method Jose\\\\Component\\\\Core\\\\JWK\\:\\:createFromJson\\(\\) expects string, mixed given\\.$#" - count: 1 - path: src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php - - - - message: "#^Parameter \\#1 \\$json of static method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:createFromJson\\(\\) expects string, mixed given\\.$#" - count: 1 - path: src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedFailureEvent\\:\\:__construct\\(\\) has parameter \\$claims with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedFailureEvent\\:\\:__construct\\(\\) has parameter \\$mandatoryClaims with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedFailureEvent\\:\\:getClaims\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedFailureEvent\\:\\:getMandatoryClaims\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:__construct\\(\\) has parameter \\$checkedClaims with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:__construct\\(\\) has parameter \\$claims with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:__construct\\(\\) has parameter \\$mandatoryClaims with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:getCheckedClaims\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:getClaims\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:getMandatoryClaims\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\HeaderCheckedFailureEvent\\:\\:__construct\\(\\) has parameter \\$mandatoryHeaderParameters with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/HeaderCheckedFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\HeaderCheckedFailureEvent\\:\\:getMandatoryHeaderParameters\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/HeaderCheckedFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\HeaderCheckedSuccessEvent\\:\\:__construct\\(\\) has parameter \\$mandatoryHeaderParameters with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/HeaderCheckedSuccessEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\HeaderCheckedSuccessEvent\\:\\:getMandatoryHeaderParameters\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/HeaderCheckedSuccessEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:__construct\\(\\) has parameter \\$recipients with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:__construct\\(\\) has parameter \\$sharedHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:__construct\\(\\) has parameter \\$sharedProtectedHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:getRecipients\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:getSharedHeader\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:getSharedProtectedHeader\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWSBuiltFailureEvent\\:\\:__construct\\(\\) has parameter \\$signatures with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/JWSBuiltFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWSBuiltFailureEvent\\:\\:getSignatures\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Event/JWSBuiltFailureEvent.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addClaimChecker\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addHeaderChecker\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEBuilder\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEBuilder\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEBuilder\\(\\) has parameter \\$keyEncryptionAlgorithm with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEBuilder\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEDecrypter\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEDecrypter\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEDecrypter\\(\\) has parameter \\$keyEncryptionAlgorithm with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEDecrypter\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWELoader\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWESerializer\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWSBuilder\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWSLoader\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWSSerializer\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWSVerifier\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKey\\(\\) has parameter \\$parameters with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKey\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKeyUri\\(\\) has parameter \\$parameters with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKeyUri\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKeyset\\(\\) has parameter \\$parameters with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKeyset\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addNestedTokenBuilder\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addNestedTokenLoader\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:updateJoseConfiguration\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Parameter \\#1 \\.\\.\\.\\$arrays of function array_merge expects array, mixed given\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php - - - - message: "#^Class Jose\\\\Bundle\\\\JoseFramework\\\\Routing\\\\JWKSetLoader has an uninitialized property \\$resolver\\. Give it default value or assign it in the constructor\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Routing/JWKSetLoader.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWEEncoder\\:\\:decode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWEEncoder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWEEncoder\\:\\:encode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWEEncoder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWEEncoder\\:\\:getRecipientIndex\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWEEncoder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWEEncoder\\:\\:supportsDecoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWEEncoder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWEEncoder\\:\\:supportsEncoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWEEncoder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWESerializer\\:\\:denormalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWESerializer.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWESerializer\\:\\:supportsDenormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWESerializer.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSEncoder\\:\\:decode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWSEncoder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSEncoder\\:\\:encode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWSEncoder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSEncoder\\:\\:getSignatureIndex\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWSEncoder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSEncoder\\:\\:supportsDecoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWSEncoder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSEncoder\\:\\:supportsEncoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWSEncoder.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSSerializer\\:\\:denormalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWSSerializer.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSSerializer\\:\\:supportsDenormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Serializer/JWSSerializer.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\ClaimCheckerManager\\:\\:check\\(\\) has parameter \\$claims with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/ClaimCheckerManager.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\ClaimCheckerManager\\:\\:check\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/ClaimCheckerManager.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWEDecrypterFactory\\:\\:create\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWEDecrypterFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWEDecrypterFactory\\:\\:create\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWEDecrypterFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWEDecrypterFactory\\:\\:create\\(\\) has parameter \\$keyEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWEDecrypterFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWELoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWELoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$headerCheckers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWELoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$keyEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWELoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$serializers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWELoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWSLoaderFactory\\:\\:create\\(\\) has parameter \\$algorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWSLoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWSLoaderFactory\\:\\:create\\(\\) has parameter \\$headerCheckers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWSLoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWSLoaderFactory\\:\\:create\\(\\) has parameter \\$serializers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWSLoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWSVerifierFactory\\:\\:create\\(\\) has parameter \\$algorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/JWSVerifierFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$jwe_serializers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$jws_serializers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$keyEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$signatureAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$jweHeaderCheckers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$jweSerializers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$jwsHeaderCheckers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$jwsSerializers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$keyEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php - - - - message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$signatureAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php - - - - message: "#^Invalid type object to throw\\.$#" - count: 3 - path: src/Component/Checker/AudienceChecker.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\ClaimCheckerManager\\:\\:check\\(\\) has parameter \\$claims with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/ClaimCheckerManager.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\ClaimCheckerManager\\:\\:check\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/ClaimCheckerManager.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\ClaimCheckerManager\\:\\:checkMandatoryClaims\\(\\) has parameter \\$claims with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/ClaimCheckerManager.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkCriticalHeader\\(\\) has parameter \\$checkedHeaderParameters with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/HeaderCheckerManager.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkCriticalHeader\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/HeaderCheckerManager.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkCriticalHeader\\(\\) has parameter \\$protected with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/HeaderCheckerManager.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkDuplicatedHeaderParameters\\(\\) has parameter \\$header1 with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/HeaderCheckerManager.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkDuplicatedHeaderParameters\\(\\) has parameter \\$header2 with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/HeaderCheckerManager.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkHeaders\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/HeaderCheckerManager.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkHeaders\\(\\) has parameter \\$protected with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/HeaderCheckerManager.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkMandatoryHeaderParameters\\(\\) has parameter \\$protected with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/HeaderCheckerManager.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkMandatoryHeaderParameters\\(\\) has parameter \\$unprotected with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/HeaderCheckerManager.php - - - - message: "#^Invalid type object to throw\\.$#" - count: 2 - path: src/Component/Checker/IssuerChecker.php - - - - message: "#^Method Jose\\\\Component\\\\Checker\\\\IssuerChecker\\:\\:__construct\\(\\) has parameter \\$issuers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Checker/IssuerChecker.php - - - - message: "#^Cannot cast mixed to int\\.$#" - count: 1 - path: src/Component/Console/EcKeysetGeneratorCommand.php - - - - message: "#^Method Jose\\\\Component\\\\Console\\\\GeneratorCommand\\:\\:getOptions\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Console/GeneratorCommand.php - - - - message: "#^Parameter \\#1 \\$jwk of method Jose\\\\Component\\\\KeyManagement\\\\Analyzer\\\\KeyAnalyzerManager\\:\\:analyze\\(\\) expects Jose\\\\Component\\\\Core\\\\JWK, mixed given\\.$#" - count: 1 - path: src/Component/Console/KeysetAnalyzerCommand.php - - - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" - count: 1 - path: src/Component/Console/KeysetAnalyzerCommand.php - - - - message: "#^Cannot cast mixed to int\\.$#" - count: 1 - path: src/Component/Console/OctKeyGeneratorCommand.php - - - - message: "#^Cannot cast mixed to int\\.$#" - count: 2 - path: src/Component/Console/OctKeysetGeneratorCommand.php - - - - message: "#^Cannot cast mixed to int\\.$#" - count: 1 - path: src/Component/Console/OkpKeysetGeneratorCommand.php - - - - message: "#^Cannot cast mixed to int\\.$#" - count: 1 - path: src/Component/Console/RsaKeyGeneratorCommand.php - - - - message: "#^Cannot cast mixed to int\\.$#" - count: 2 - path: src/Component/Console/RsaKeysetGeneratorCommand.php - - - - message: "#^Property Jose\\\\Component\\\\Core\\\\AlgorithmManager\\:\\:\\$algorithms type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/AlgorithmManager.php - - - - message: "#^Call to function is_string\\(\\) with string will always evaluate to true\\.$#" - count: 1 - path: src/Component/Core/AlgorithmManagerFactory.php - - - - message: "#^Property Jose\\\\Component\\\\Core\\\\AlgorithmManagerFactory\\:\\:\\$algorithms type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/AlgorithmManagerFactory.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\JWK\\:\\:__construct\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/JWK.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\JWK\\:\\:all\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/JWK.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\JWK\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/JWK.php - - - - message: "#^Property Jose\\\\Component\\\\Core\\\\JWK\\:\\:\\$values type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/JWK.php - - - - message: "#^Class Jose\\\\Component\\\\Core\\\\JWKSet implements generic interface IteratorAggregate but does not specify its types\\: TKey, TValue$#" - count: 1 - path: src/Component/Core/JWKSet.php - - - - message: "#^Instanceof between Jose\\\\Component\\\\Core\\\\JWK and Jose\\\\Component\\\\Core\\\\JWK will always evaluate to true\\.$#" - count: 1 - path: src/Component/Core/JWKSet.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:convertKeyOpsToKeyUse\\(\\) has parameter \\$key_ops with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/JWKSet.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:createFromKeyData\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/JWKSet.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:doesKeySatisfyRestrictions\\(\\) has parameter \\$restrictions with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/JWKSet.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/JWKSet.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:sortKeys\\(\\) has parameter \\$a with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/JWKSet.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:sortKeys\\(\\) has parameter \\$b with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/JWKSet.php - - - - message: "#^Only numeric types are allowed in \\+, int\\|true given on the right side\\.$#" - count: 2 - path: src/Component/Core/JWKSet.php - - - - message: "#^Parameter \\#1 \\$values of class Jose\\\\Component\\\\Core\\\\JWK constructor expects array, mixed given\\.$#" - count: 1 - path: src/Component/Core/JWKSet.php - - - - message: "#^Property Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:\\$keys type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/JWKSet.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\Util\\\\ECKey\\:\\:createECKey\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/Util/ECKey.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\Util\\\\ECKey\\:\\:createECKeyUsingOpenSSL\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/Util/ECKey.php - - - - message: "#^Strict comparison using \\=\\=\\= between '30' and '81' will always evaluate to false\\.$#" - count: 1 - path: src/Component/Core/Util/ECSignature.php - - - - message: "#^Access to an uninitialized property Jose\\\\Component\\\\Core\\\\Util\\\\RSAKey\\:\\:\\$modulus\\.$#" - count: 1 - path: src/Component/Core/Util/RSAKey.php - - - - message: "#^Method Jose\\\\Component\\\\Core\\\\Util\\\\RSAKey\\:\\:toArray\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/Util/RSAKey.php - - - - message: "#^Parameter \\#1 \\$number of static method Brick\\\\Math\\\\BigInteger\\:\\:fromBase\\(\\) expects string, mixed given\\.$#" - count: 1 - path: src/Component/Core/Util/RSAKey.php - - - - message: "#^Property Jose\\\\Component\\\\Core\\\\Util\\\\RSAKey\\:\\:\\$values type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Core/Util/RSAKey.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\Compression\\\\CompressionMethodManager\\:\\:__construct\\(\\) has parameter \\$methods with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/Compression/CompressionMethodManager.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWE\\:\\:__construct\\(\\) has parameter \\$recipients with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWE.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWE\\:\\:__construct\\(\\) has parameter \\$sharedHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWE.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWE\\:\\:__construct\\(\\) has parameter \\$sharedProtectedHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWE.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWE\\:\\:getSharedHeader\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWE.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWE\\:\\:getSharedProtectedHeader\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWE.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:addRecipient\\(\\) has parameter \\$recipientHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:checkAndSetContentEncryptionAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:checkDuplicatedHeaderParameters\\(\\) has parameter \\$header1 with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:checkDuplicatedHeaderParameters\\(\\) has parameter \\$header2 with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:determineCEK\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:encryptJWE\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getCompressionMethod\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getContentEncryptionAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKey\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKey\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyAgreementAndKeyWrappingAlgorithm\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyAgreementAndKeyWrappingAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyEncryptionAlgorithm\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyEncryptionAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyWrappingAlgorithm\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyWrappingAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getKeyEncryptionAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:processRecipient\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:processRecipient\\(\\) has parameter \\$recipient with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:withSharedHeader\\(\\) has parameter \\$sharedHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:withSharedProtectedHeader\\(\\) has parameter \\$sharedProtectedHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Parameter \\#1 \\$length of function random_bytes expects int\\<1, max\\>, \\(float\\|int\\) given\\.$#" - count: 2 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Property Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:\\$recipients type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Property Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:\\$sharedHeader type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Property Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:\\$sharedProtectedHeader type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEBuilder.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:checkCompleteHeader\\(\\) has parameter \\$completeHeaders with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEDecrypter.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:decompressIfNeeded\\(\\) has parameter \\$completeHeaders with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEDecrypter.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:decryptCEK\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEDecrypter.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:decryptPayload\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEDecrypter.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:getContentEncryptionAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEDecrypter.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:getKeyEncryptionAlgorithm\\(\\) has parameter \\$completeHeaders with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWEDecrypter.php - - - - message: "#^Parameter \\#1 \\$key of static method Jose\\\\Component\\\\Core\\\\Util\\\\KeyChecker\\:\\:checkKeyAlgorithm\\(\\) expects Jose\\\\Component\\\\Core\\\\JWK, mixed given\\.$#" - count: 2 - path: src/Component/Encryption/JWEDecrypter.php - - - - message: "#^Parameter \\#1 \\$key of static method Jose\\\\Component\\\\Core\\\\Util\\\\KeyChecker\\:\\:checkKeyUsage\\(\\) expects Jose\\\\Component\\\\Core\\\\JWK, mixed given\\.$#" - count: 1 - path: src/Component/Encryption/JWEDecrypter.php - - - - message: "#^Parameter \\#3 \\$recipientKey of method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:decryptCEK\\(\\) expects Jose\\\\Component\\\\Core\\\\JWK, mixed given\\.$#" - count: 1 - path: src/Component/Encryption/JWEDecrypter.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWELoaderFactory.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWELoaderFactory.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$headerCheckers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWELoaderFactory.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$keyEncryptionAlgorithms with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWELoaderFactory.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$serializers with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/JWELoaderFactory.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\Recipient\\:\\:__construct\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/Recipient.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\Recipient\\:\\:getHeader\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/Recipient.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONFlattenedSerializer\\:\\:checkData\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/Serializer/JSONFlattenedSerializer.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONFlattenedSerializer\\:\\:processHeaders\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/Serializer/JSONFlattenedSerializer.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONFlattenedSerializer\\:\\:processHeaders\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/Serializer/JSONFlattenedSerializer.php - - - - message: "#^Parameter \\#1 \\$encodedString of static method ParagonIE\\\\ConstantTime\\\\Base64\\:\\:decode\\(\\) expects string, mixed given\\.$#" - count: 3 - path: src/Component/Encryption/Serializer/JSONFlattenedSerializer.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONGeneralSerializer\\:\\:checkData\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processHeaders\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processHeaders\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processRecipient\\(\\) has parameter \\$recipient with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php - - - - message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processRecipient\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php - - - - message: "#^Parameter \\#1 \\$encodedString of static method ParagonIE\\\\ConstantTime\\\\Base64\\:\\:decode\\(\\) expects string, mixed given\\.$#" - count: 3 - path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\Analyzer\\\\Message\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/Analyzer/Message.php - - - - message: "#^Class Jose\\\\Component\\\\KeyManagement\\\\Analyzer\\\\MessageBag implements generic interface IteratorAggregate but does not specify its types\\: TKey, TValue$#" - count: 1 - path: src/Component/KeyManagement/Analyzer/MessageBag.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\Analyzer\\\\MessageBag\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/Analyzer/MessageBag.php - - - - message: "#^Cannot call method get\\(\\) on mixed\\.$#" - count: 1 - path: src/Component/KeyManagement/Analyzer/MixedKeyTypes.php - - - - message: "#^Cannot call method get\\(\\) on mixed\\.$#" - count: 1 - path: src/Component/KeyManagement/Analyzer/MixedPublicAndPrivateKeys.php - - - - message: "#^Cannot call method has\\(\\) on mixed\\.$#" - count: 1 - path: src/Component/KeyManagement/Analyzer/MixedPublicAndPrivateKeys.php - - - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" - count: 2 - path: src/Component/KeyManagement/Analyzer/UsageAnalyzer.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JKUFactory\\:\\:loadFromUrl\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/JKUFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromCertificate\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromCertificateFile\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromKey\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromKeyFile\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromPKCS12CertificateFile\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromSecret\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromValues\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromX509Resource\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromX5C\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromX5C\\(\\) has parameter \\$x5c with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Parameter \\#1 \\$key of static method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromKey\\(\\) expects string, mixed given\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Parameter \\#1 \\$length of function random_bytes expects int\\<1, max\\>, \\(float\\|int\\) given\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Parameter \\#3 \\$length of function mb_substr expects int\\|null, float\\|int\\ given\\.$#" - count: 1 - path: src/Component/KeyManagement/JWKFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:__construct\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/ECKey.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:getSupportedCurves\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/ECKey.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:loadJWK\\(\\) has parameter \\$jwk with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/ECKey.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:loadPEM\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/ECKey.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:toArray\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/ECKey.php - - - - message: "#^Property Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:\\$values type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/ECKey.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadFromKey\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadFromKeyFile\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadFromX5C\\(\\) has parameter \\$x5c with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadFromX5C\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromCertificate\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromCertificateFile\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromDER\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromPEM\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromX509Resource\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:tryToLoadECKey\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:tryToLoadOtherKeyTypes\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Parameter \\#3 \\$subject of function preg_replace expects array\\|string, string\\|null given\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/KeyConverter.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:__construct\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/RSAKey.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:createFromKeyDetails\\(\\) has parameter \\$details with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/RSAKey.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:loadJWK\\(\\) has parameter \\$jwk with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/RSAKey.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:toArray\\(\\) return type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/RSAKey.php - - - - message: "#^Parameter \\#1 \\$details of static method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:createFromKeyDetails\\(\\) expects array, mixed given\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/RSAKey.php - - - - message: "#^Property Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:\\$values type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/KeyConverter/RSAKey.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\UrlKeySetFactory\\:\\:getContent\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/UrlKeySetFactory.php - - - - message: "#^Cannot cast mixed to string\\.$#" - count: 1 - path: src/Component/KeyManagement/X5UFactory.php - - - - message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\X5UFactory\\:\\:loadFromUrl\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" - count: 1 - path: src/Component/KeyManagement/X5UFactory.php - - - - message: "#^Parameter \\#1 \\$certificate of static method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromCertificate\\(\\) expects string, mixed given\\.$#" - count: 1 - path: src/Component/KeyManagement/X5UFactory.php - - - - message: "#^Call to function array_key_exists\\(\\) with 'key' and array\\{key\\: Jose\\\\Component\\\\Core\\\\JWK, header\\?\\: array\\\\} will always evaluate to true\\.$#" - count: 1 - path: src/Component/NestedToken/NestedTokenBuilder.php - - - - message: "#^Call to function array_key_exists\\(\\) with 'key' and array\\{key\\: Jose\\\\Component\\\\Core\\\\JWK, protected_header\\?\\: array\\, header\\?\\: array\\\\} will always evaluate to true\\.$#" - count: 1 - path: src/Component/NestedToken/NestedTokenBuilder.php - - - - message: "#^Call to function is_array\\(\\) with array\\{key\\: Jose\\\\Component\\\\Core\\\\JWK, header\\?\\: array\\\\} will always evaluate to true\\.$#" - count: 1 - path: src/Component/NestedToken/NestedTokenBuilder.php - - - - message: "#^Call to function is_array\\(\\) with array\\{key\\: Jose\\\\Component\\\\Core\\\\JWK, protected_header\\?\\: array\\, header\\?\\: array\\\\} will always evaluate to true\\.$#" - count: 1 - path: src/Component/NestedToken/NestedTokenBuilder.php - - - - message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\JWSBuilder\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array\\ given\\.$#" - count: 1 - path: src/Component/NestedToken/NestedTokenBuilder.php - - - - message: "#^Parameter \\#3 \\$header of method Jose\\\\Component\\\\Signature\\\\JWSBuilder\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array\\ given\\.$#" - count: 1 - path: src/Component/NestedToken/NestedTokenBuilder.php - - - - message: "#^Result of \\|\\| is always false\\.$#" - count: 2 - path: src/Component/NestedToken/NestedTokenBuilder.php - - - - message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array\\ given\\.$#" - count: 1 - path: src/Component/Signature/JWS.php - - - - message: "#^Parameter \\#4 \\$header of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array\\ given\\.$#" - count: 1 - path: src/Component/Signature/JWS.php - - - - message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array\\ given\\.$#" - count: 1 - path: src/Component/Signature/JWSBuilder.php - - - - message: "#^Parameter \\#4 \\$header of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array\\ given\\.$#" - count: 1 - path: src/Component/Signature/JWSBuilder.php - - - - message: "#^Parameter \\#1 \\$algorithm of method Jose\\\\Component\\\\Core\\\\AlgorithmManager\\:\\:get\\(\\) expects string, mixed given\\.$#" - count: 1 - path: src/Component/Signature/JWSVerifier.php - - - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" - count: 1 - path: src/Component/Signature/JWSVerifier.php - - - - message: "#^Parameter \\#1 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\Serializer\\\\Serializer\\:\\:isPayloadEncoded\\(\\) expects array\\, array given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/CompactSerializer.php - - - - message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/CompactSerializer.php - - - - message: "#^Parameter \\#1 \\$encodedString of static method ParagonIE\\\\ConstantTime\\\\Base64\\:\\:decode\\(\\) expects string, mixed given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/JSONFlattenedSerializer.php - - - - message: "#^Parameter \\#1 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\Serializer\\\\Serializer\\:\\:isPayloadEncoded\\(\\) expects array\\, array given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/JSONFlattenedSerializer.php - - - - message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/JSONFlattenedSerializer.php - - - - message: "#^Parameter \\#4 \\$header of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/JSONFlattenedSerializer.php - - - - message: "#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\\.$#" - count: 1 - path: src/Component/Signature/Serializer/JSONGeneralSerializer.php - - - - message: "#^Cannot access offset 'signature' on mixed\\.$#" - count: 2 - path: src/Component/Signature/Serializer/JSONGeneralSerializer.php - - - - message: "#^Parameter \\#1 \\$encodedString of static method ParagonIE\\\\ConstantTime\\\\Base64\\:\\:decode\\(\\) expects string, mixed given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/JSONGeneralSerializer.php - - - - message: "#^Parameter \\#1 \\$signature of method Jose\\\\Component\\\\Signature\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processHeaders\\(\\) expects array\\{protected\\?\\: string, header\\?\\: array\\\\}, mixed given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/JSONGeneralSerializer.php - - - - message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, mixed given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/JSONGeneralSerializer.php - - - - message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processIsPayloadEncoded\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/JSONGeneralSerializer.php - - - - message: "#^Parameter \\#3 \\$encodedProtectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects string\\|null, mixed given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/JSONGeneralSerializer.php - - - - message: "#^Parameter \\#4 \\$header of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, mixed given\\.$#" - count: 1 - path: src/Component/Signature/Serializer/JSONGeneralSerializer.php - - - - message: "#^Binary operation \"\\^\" between string and 1 results in an error\\.$#" - count: 2 - path: src/Ecc/Curve.php - - - - message: "#^Parameter \\#3 \\$length of function mb_substr expects int\\|null, float\\|int\\<1, max\\> given\\.$#" - count: 1 - path: src/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBCHS.php - - - - message: "#^Parameter \\#3 \\$length of function mb_substr expects int\\|null, float\\|int\\ given\\.$#" - count: 1 - path: src/EncryptionAlgorithm/KeyEncryption/ECDHES/AbstractECDH.php - - - - message: "#^Parameter \\#1 \\$length of function random_bytes expects int\\<1, max\\>, int given\\.$#" - count: 1 - path: src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2AESKW.php - - - - message: "#^Parameter \\#1 \\$length of function random_bytes expects int\\<1, max\\>, int given\\.$#" - count: 2 - path: src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php - - - - message: "#^Variable static method call on Jose\\\\Component\\\\Core\\\\Util\\\\Hash\\.$#" - count: 2 - path: src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php - - - - message: "#^Strict comparison using \\=\\=\\= between non\\-empty\\-string and '' will always evaluate to false\\.$#" - count: 1 - path: src/SignatureAlgorithm/None/None.php - - - - message: "#^Parameter \\#1 \\$length of function random_bytes expects int\\<1, max\\>, int given\\.$#" - count: 1 - path: src/SignatureAlgorithm/RSA/Util/RSA.php - - - - message: "#^Variable static method call on Jose\\\\Component\\\\Core\\\\Util\\\\Hash\\.$#" - count: 2 - path: src/SignatureAlgorithm/RSA/Util/RSA.php + ignoreErrors: + - + message: "#^Parameter \\#1 \\$jwk of method Jose\\\\Component\\\\KeyManagement\\\\Analyzer\\\\KeyAnalyzerManager\\:\\:analyze\\(\\) expects Jose\\\\Component\\\\Core\\\\JWK, mixed given\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DataCollector/KeyCollector.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\JoseFrameworkExtension\\:\\:getConfiguration\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\JoseFrameworkExtension\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/AbstractSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\AbstractSource\\:\\:create\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/AbstractSource.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 2 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\CheckerSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\CheckerSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\CheckerSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\ClaimChecker\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\ClaimChecker\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\ClaimChecker\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/ClaimChecker.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\HeaderChecker\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\HeaderChecker\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Checker\\\\HeaderChecker\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Checker/HeaderChecker.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Console\\\\ConsoleSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Console/ConsoleSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Console\\\\ConsoleSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Console/ConsoleSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Console\\\\ConsoleSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Console/ConsoleSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Core\\\\CoreSource\\:\\:load\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Core/CoreSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Core\\\\CoreSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Core/CoreSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Core\\\\CoreSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Core/CoreSource.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/AbstractEncryptionSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\AbstractEncryptionSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/AbstractEncryptionSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\AbstractEncryptionSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/AbstractEncryptionSource.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\EncryptionSource\\:\\:getAlgorithmsFiles\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\EncryptionSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\EncryptionSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\EncryptionSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWEBuilder\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWEDecrypter\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWEDecrypter.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWELoader\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWELoader\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWELoader\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWELoader.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWESerializer\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWESerializer\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Encryption\\\\JWESerializer\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/JWESerializer.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JKUSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JKUSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JKUSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JKUSource.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSetSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSetSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSetSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JKU.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/JWKSet.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource/X5U.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/CertificateFile.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWK.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php + + - + message: "#^Parameter \\#1 \\$id of class Symfony\\\\Component\\\\DependencyInjection\\\\Reference constructor expects string, mixed given\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/KeyFile.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/P12.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Secret.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/Values.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/X5C.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKUriSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKUriSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\JWKUriSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKUriSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\KeyManagementSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\KeyManagementSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\KeyManagement\\\\KeyManagementSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedToken\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedToken\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedToken\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenBuilder\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenBuilder\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenBuilder\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenLoader\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenLoader\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\NestedToken\\\\NestedTokenLoader\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedTokenLoader.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/AbstractSignatureSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\AbstractSignatureSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/AbstractSignatureSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\AbstractSignatureSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/AbstractSignatureSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSBuilder\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSBuilder.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSLoader\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSLoader\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSLoader\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSLoader.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSSerializer\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSSerializer\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSSerializer\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSSerializer.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\JWSVerifier\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/JWSVerifier.php + + - + message: "#^Call to an undefined method Symfony\\\\Component\\\\Config\\\\Definition\\\\Builder\\\\NodeDefinition\\:\\:children\\(\\)\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\SignatureSource\\:\\:getAlgorithmsFiles\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\SignatureSource\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\SignatureSource\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Signature\\\\SignatureSource\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Source\\:\\:load\\(\\) has parameter \\$configs with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Source.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Source\\:\\:prepend\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Source.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\DependencyInjection\\\\Source\\\\Source\\:\\:prepend\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/DependencyInjection/Source/Source.php + + - + message: "#^Parameter \\#1 \\$json of static method Jose\\\\Component\\\\Core\\\\JWK\\:\\:createFromJson\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php + + - + message: "#^Parameter \\#1 \\$json of static method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:createFromJson\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedFailureEvent\\:\\:__construct\\(\\) has parameter \\$claims with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedFailureEvent\\:\\:__construct\\(\\) has parameter \\$mandatoryClaims with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedFailureEvent\\:\\:getClaims\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedFailureEvent\\:\\:getMandatoryClaims\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/ClaimCheckedFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:__construct\\(\\) has parameter \\$checkedClaims with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:__construct\\(\\) has parameter \\$claims with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:__construct\\(\\) has parameter \\$mandatoryClaims with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:getCheckedClaims\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:getClaims\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\ClaimCheckedSuccessEvent\\:\\:getMandatoryClaims\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/ClaimCheckedSuccessEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\HeaderCheckedFailureEvent\\:\\:__construct\\(\\) has parameter \\$mandatoryHeaderParameters with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/HeaderCheckedFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\HeaderCheckedFailureEvent\\:\\:getMandatoryHeaderParameters\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/HeaderCheckedFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\HeaderCheckedSuccessEvent\\:\\:__construct\\(\\) has parameter \\$mandatoryHeaderParameters with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/HeaderCheckedSuccessEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\HeaderCheckedSuccessEvent\\:\\:getMandatoryHeaderParameters\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/HeaderCheckedSuccessEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:__construct\\(\\) has parameter \\$recipients with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:__construct\\(\\) has parameter \\$sharedHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:__construct\\(\\) has parameter \\$sharedProtectedHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:getRecipients\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:getSharedHeader\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWEBuiltFailureEvent\\:\\:getSharedProtectedHeader\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/JWEBuiltFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWSBuiltFailureEvent\\:\\:__construct\\(\\) has parameter \\$signatures with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/JWSBuiltFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Event\\\\JWSBuiltFailureEvent\\:\\:getSignatures\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Event/JWSBuiltFailureEvent.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addClaimChecker\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addHeaderChecker\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEBuilder\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEBuilder\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEBuilder\\(\\) has parameter \\$keyEncryptionAlgorithm with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEBuilder\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEDecrypter\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEDecrypter\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEDecrypter\\(\\) has parameter \\$keyEncryptionAlgorithm with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWEDecrypter\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWELoader\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWESerializer\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWSBuilder\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWSLoader\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWSSerializer\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addJWSVerifier\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKey\\(\\) has parameter \\$parameters with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKey\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKeyUri\\(\\) has parameter \\$parameters with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKeyUri\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKeyset\\(\\) has parameter \\$parameters with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addKeyset\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addNestedTokenBuilder\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:addNestedTokenLoader\\(\\) has parameter \\$tags with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Helper\\\\ConfigurationHelper\\:\\:updateJoseConfiguration\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Parameter \\#1 \\.\\.\\.\\$arrays of function array_merge expects array, mixed given\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Helper/ConfigurationHelper.php + + - + message: "#^Class Jose\\\\Bundle\\\\JoseFramework\\\\Routing\\\\JWKSetLoader has an uninitialized property \\$resolver\\. Give it default value or assign it in the constructor\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Routing/JWKSetLoader.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWEEncoder\\:\\:decode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWEEncoder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWEEncoder\\:\\:encode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWEEncoder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWEEncoder\\:\\:getRecipientIndex\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWEEncoder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWEEncoder\\:\\:supportsDecoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWEEncoder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWEEncoder\\:\\:supportsEncoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWEEncoder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWESerializer\\:\\:denormalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWESerializer.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWESerializer\\:\\:supportsDenormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWESerializer.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSEncoder\\:\\:decode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWSEncoder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSEncoder\\:\\:encode\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWSEncoder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSEncoder\\:\\:getSignatureIndex\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWSEncoder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSEncoder\\:\\:supportsDecoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWSEncoder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSEncoder\\:\\:supportsEncoding\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWSEncoder.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSSerializer\\:\\:denormalize\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWSSerializer.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Serializer\\\\JWSSerializer\\:\\:supportsDenormalization\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Serializer/JWSSerializer.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\ClaimCheckerManager\\:\\:check\\(\\) has parameter \\$claims with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/ClaimCheckerManager.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\ClaimCheckerManager\\:\\:check\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/ClaimCheckerManager.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWEDecrypterFactory\\:\\:create\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWEDecrypterFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWEDecrypterFactory\\:\\:create\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWEDecrypterFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWEDecrypterFactory\\:\\:create\\(\\) has parameter \\$keyEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWEDecrypterFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWELoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWELoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$headerCheckers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWELoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$keyEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWELoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$serializers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWELoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWSLoaderFactory\\:\\:create\\(\\) has parameter \\$algorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWSLoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWSLoaderFactory\\:\\:create\\(\\) has parameter \\$headerCheckers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWSLoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWSLoaderFactory\\:\\:create\\(\\) has parameter \\$serializers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWSLoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\JWSVerifierFactory\\:\\:create\\(\\) has parameter \\$algorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/JWSVerifierFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$jwe_serializers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$jws_serializers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$keyEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenBuilderFactory\\:\\:create\\(\\) has parameter \\$signatureAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenBuilderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$jweHeaderCheckers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$jweSerializers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$jwsHeaderCheckers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$jwsSerializers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$keyEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php + + - + message: "#^Method Jose\\\\Bundle\\\\JoseFramework\\\\Services\\\\NestedTokenLoaderFactory\\:\\:create\\(\\) has parameter \\$signatureAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Bundle/JoseFramework/Services/NestedTokenLoaderFactory.php + + - + message: "#^Invalid type object to throw\\.$#" + count: 3 + path: src/Component/Checker/AudienceChecker.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\ClaimCheckerManager\\:\\:check\\(\\) has parameter \\$claims with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/ClaimCheckerManager.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\ClaimCheckerManager\\:\\:check\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/ClaimCheckerManager.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\ClaimCheckerManager\\:\\:checkMandatoryClaims\\(\\) has parameter \\$claims with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/ClaimCheckerManager.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkCriticalHeader\\(\\) has parameter \\$checkedHeaderParameters with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/HeaderCheckerManager.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkCriticalHeader\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/HeaderCheckerManager.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkCriticalHeader\\(\\) has parameter \\$protected with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/HeaderCheckerManager.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkDuplicatedHeaderParameters\\(\\) has parameter \\$header1 with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/HeaderCheckerManager.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkDuplicatedHeaderParameters\\(\\) has parameter \\$header2 with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/HeaderCheckerManager.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkHeaders\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/HeaderCheckerManager.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkHeaders\\(\\) has parameter \\$protected with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/HeaderCheckerManager.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkMandatoryHeaderParameters\\(\\) has parameter \\$protected with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/HeaderCheckerManager.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\HeaderCheckerManager\\:\\:checkMandatoryHeaderParameters\\(\\) has parameter \\$unprotected with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/HeaderCheckerManager.php + + - + message: "#^Invalid type object to throw\\.$#" + count: 2 + path: src/Component/Checker/IssuerChecker.php + + - + message: "#^Method Jose\\\\Component\\\\Checker\\\\IssuerChecker\\:\\:__construct\\(\\) has parameter \\$issuers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Checker/IssuerChecker.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\AddKeyIntoKeysetCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/AddKeyIntoKeysetCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\AddKeyIntoKeysetCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/AddKeyIntoKeysetCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\EcKeyGeneratorCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/EcKeyGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\EcKeyGeneratorCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/EcKeyGeneratorCommand.php + + - + message: "#^Cannot cast mixed to int\\.$#" + count: 1 + path: src/Component/Console/EcKeysetGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\EcKeysetGeneratorCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/EcKeysetGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\EcKeysetGeneratorCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/EcKeysetGeneratorCommand.php + + - + message: "#^Method Jose\\\\Component\\\\Console\\\\GeneratorCommand\\:\\:getOptions\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Console/GeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\GetThumbprintCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/GetThumbprintCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\GetThumbprintCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/GetThumbprintCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\JKULoaderCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/JKULoaderCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\JKULoaderCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/JKULoaderCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\KeyAnalyzerCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/KeyAnalyzerCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\KeyAnalyzerCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/KeyAnalyzerCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\KeyFileLoaderCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/KeyFileLoaderCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\KeyFileLoaderCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/KeyFileLoaderCommand.php + + - + message: "#^Parameter \\#1 \\$jwk of method Jose\\\\Component\\\\KeyManagement\\\\Analyzer\\\\KeyAnalyzerManager\\:\\:analyze\\(\\) expects Jose\\\\Component\\\\Core\\\\JWK, mixed given\\.$#" + count: 1 + path: src/Component/Console/KeysetAnalyzerCommand.php + + - + message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + count: 1 + path: src/Component/Console/KeysetAnalyzerCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\KeysetAnalyzerCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/KeysetAnalyzerCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\KeysetAnalyzerCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/KeysetAnalyzerCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\MergeKeysetCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/MergeKeysetCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\MergeKeysetCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/MergeKeysetCommand.php + + - + message: "#^Attribute class Jose\\\\Component\\\\Console\\\\AsCommand does not exist\\.$#" + count: 1 + path: src/Component/Console/NoneKeyGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\NoneKeyGeneratorCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/NoneKeyGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\NoneKeyGeneratorCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/NoneKeyGeneratorCommand.php + + - + message: "#^Cannot cast mixed to int\\.$#" + count: 1 + path: src/Component/Console/OctKeyGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\OctKeyGeneratorCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/OctKeyGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\OctKeyGeneratorCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/OctKeyGeneratorCommand.php + + - + message: "#^Cannot cast mixed to int\\.$#" + count: 2 + path: src/Component/Console/OctKeysetGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\OctKeysetGeneratorCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/OctKeysetGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\OctKeysetGeneratorCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/OctKeysetGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\OkpKeyGeneratorCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/OkpKeyGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\OkpKeyGeneratorCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/OkpKeyGeneratorCommand.php + + - + message: "#^Cannot cast mixed to int\\.$#" + count: 1 + path: src/Component/Console/OkpKeysetGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\OkpKeysetGeneratorCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/OkpKeysetGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\OkpKeysetGeneratorCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/OkpKeysetGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\OptimizeRsaKeyCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/OptimizeRsaKeyCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\OptimizeRsaKeyCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/OptimizeRsaKeyCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\P12CertificateLoaderCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/P12CertificateLoaderCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\P12CertificateLoaderCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/P12CertificateLoaderCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\PemConverterCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/PemConverterCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\PemConverterCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/PemConverterCommand.php + + - + message: "#^Attribute class Jose\\\\Component\\\\Console\\\\AsCommand does not exist\\.$#" + count: 1 + path: src/Component/Console/PublicKeyCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\PublicKeyCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/PublicKeyCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\PublicKeyCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/PublicKeyCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\PublicKeysetCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/PublicKeysetCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\PublicKeysetCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/PublicKeysetCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\RotateKeysetCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/RotateKeysetCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\RotateKeysetCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/RotateKeysetCommand.php + + - + message: "#^Cannot cast mixed to int\\.$#" + count: 1 + path: src/Component/Console/RsaKeyGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\RsaKeyGeneratorCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/RsaKeyGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\RsaKeyGeneratorCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/RsaKeyGeneratorCommand.php + + - + message: "#^Cannot cast mixed to int\\.$#" + count: 2 + path: src/Component/Console/RsaKeysetGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\RsaKeysetGeneratorCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/RsaKeysetGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\RsaKeysetGeneratorCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/RsaKeysetGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\SecretKeyGeneratorCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/SecretKeyGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\SecretKeyGeneratorCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/SecretKeyGeneratorCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\X509CertificateLoaderCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/X509CertificateLoaderCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\X509CertificateLoaderCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/X509CertificateLoaderCommand.php + + - + message: "#^Attribute class Jose\\\\Component\\\\Console\\\\AsCommand does not exist\\.$#" + count: 1 + path: src/Component/Console/X5ULoaderCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\X5ULoaderCommand\\:\\:\\$defaultDescription has no type specified\\.$#" + count: 1 + path: src/Component/Console/X5ULoaderCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Console\\\\X5ULoaderCommand\\:\\:\\$defaultName has no type specified\\.$#" + count: 1 + path: src/Component/Console/X5ULoaderCommand.php + + - + message: "#^Property Jose\\\\Component\\\\Core\\\\AlgorithmManager\\:\\:\\$algorithms type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/AlgorithmManager.php + + - + message: "#^Call to function is_string\\(\\) with string will always evaluate to true\\.$#" + count: 1 + path: src/Component/Core/AlgorithmManagerFactory.php + + - + message: "#^Property Jose\\\\Component\\\\Core\\\\AlgorithmManagerFactory\\:\\:\\$algorithms type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/AlgorithmManagerFactory.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\JWK\\:\\:__construct\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/JWK.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\JWK\\:\\:all\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/JWK.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\JWK\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/JWK.php + + - + message: "#^Property Jose\\\\Component\\\\Core\\\\JWK\\:\\:\\$values type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/JWK.php + + - + message: "#^Class Jose\\\\Component\\\\Core\\\\JWKSet implements generic interface IteratorAggregate but does not specify its types\\: TKey, TValue$#" + count: 1 + path: src/Component/Core/JWKSet.php + + - + message: "#^Instanceof between Jose\\\\Component\\\\Core\\\\JWK and Jose\\\\Component\\\\Core\\\\JWK will always evaluate to true\\.$#" + count: 1 + path: src/Component/Core/JWKSet.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:convertKeyOpsToKeyUse\\(\\) has parameter \\$key_ops with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/JWKSet.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:createFromKeyData\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/JWKSet.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:doesKeySatisfyRestrictions\\(\\) has parameter \\$restrictions with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/JWKSet.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/JWKSet.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:sortKeys\\(\\) has parameter \\$a with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/JWKSet.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:sortKeys\\(\\) has parameter \\$b with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/JWKSet.php + + - + message: "#^Only numeric types are allowed in \\+, int\\|true given on the right side\\.$#" + count: 2 + path: src/Component/Core/JWKSet.php + + - + message: "#^Parameter \\#1 \\$values of class Jose\\\\Component\\\\Core\\\\JWK constructor expects array, mixed given\\.$#" + count: 1 + path: src/Component/Core/JWKSet.php + + - + message: "#^Property Jose\\\\Component\\\\Core\\\\JWKSet\\:\\:\\$keys type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/JWKSet.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\Util\\\\ECKey\\:\\:createECKey\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/Util/ECKey.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\Util\\\\ECKey\\:\\:createECKeyUsingOpenSSL\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/Util/ECKey.php + + - + message: "#^Strict comparison using \\=\\=\\= between '30' and '81' will always evaluate to false\\.$#" + count: 1 + path: src/Component/Core/Util/ECSignature.php + + - + message: "#^Method Jose\\\\Component\\\\Core\\\\Util\\\\RSAKey\\:\\:toArray\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/Util/RSAKey.php + + - + message: "#^Parameter \\#1 \\$number of static method Brick\\\\Math\\\\BigInteger\\:\\:fromBase\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/Component/Core/Util/RSAKey.php + + - + message: "#^Property Jose\\\\Component\\\\Core\\\\Util\\\\RSAKey\\:\\:\\$values type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Core/Util/RSAKey.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\Compression\\\\CompressionMethodManager\\:\\:__construct\\(\\) has parameter \\$methods with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/Compression/CompressionMethodManager.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWE\\:\\:__construct\\(\\) has parameter \\$recipients with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWE.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWE\\:\\:__construct\\(\\) has parameter \\$sharedHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWE.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWE\\:\\:__construct\\(\\) has parameter \\$sharedProtectedHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWE.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWE\\:\\:getSharedHeader\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWE.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWE\\:\\:getSharedProtectedHeader\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWE.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:addRecipient\\(\\) has parameter \\$recipientHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:checkAndSetContentEncryptionAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:checkDuplicatedHeaderParameters\\(\\) has parameter \\$header1 with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:checkDuplicatedHeaderParameters\\(\\) has parameter \\$header2 with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:determineCEK\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:encryptJWE\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getCompressionMethod\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getContentEncryptionAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKey\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKey\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyAgreementAndKeyWrappingAlgorithm\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyAgreementAndKeyWrappingAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyEncryptionAlgorithm\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyEncryptionAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyWrappingAlgorithm\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getEncryptedKeyFromKeyWrappingAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:getKeyEncryptionAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:processRecipient\\(\\) has parameter \\$additionalHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:processRecipient\\(\\) has parameter \\$recipient with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:withSharedHeader\\(\\) has parameter \\$sharedHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:withSharedProtectedHeader\\(\\) has parameter \\$sharedProtectedHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Parameter \\#1 \\$length of function random_bytes expects int\\<1, max\\>, \\(float\\|int\\) given\\.$#" + count: 2 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Property Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:\\$recipients type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Property Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:\\$sharedHeader type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Property Jose\\\\Component\\\\Encryption\\\\JWEBuilder\\:\\:\\$sharedProtectedHeader type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEBuilder.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:checkCompleteHeader\\(\\) has parameter \\$completeHeaders with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEDecrypter.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:decompressIfNeeded\\(\\) has parameter \\$completeHeaders with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEDecrypter.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:decryptCEK\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEDecrypter.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:decryptPayload\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEDecrypter.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:getContentEncryptionAlgorithm\\(\\) has parameter \\$completeHeader with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEDecrypter.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:getKeyEncryptionAlgorithm\\(\\) has parameter \\$completeHeaders with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWEDecrypter.php + + - + message: "#^Parameter \\#1 \\$key of static method Jose\\\\Component\\\\Core\\\\Util\\\\KeyChecker\\:\\:checkKeyAlgorithm\\(\\) expects Jose\\\\Component\\\\Core\\\\JWK, mixed given\\.$#" + count: 2 + path: src/Component/Encryption/JWEDecrypter.php + + - + message: "#^Parameter \\#1 \\$key of static method Jose\\\\Component\\\\Core\\\\Util\\\\KeyChecker\\:\\:checkKeyUsage\\(\\) expects Jose\\\\Component\\\\Core\\\\JWK, mixed given\\.$#" + count: 1 + path: src/Component/Encryption/JWEDecrypter.php + + - + message: "#^Parameter \\#3 \\$recipientKey of method Jose\\\\Component\\\\Encryption\\\\JWEDecrypter\\:\\:decryptCEK\\(\\) expects Jose\\\\Component\\\\Core\\\\JWK, mixed given\\.$#" + count: 1 + path: src/Component/Encryption/JWEDecrypter.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$compressionMethods with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWELoaderFactory.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$contentEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWELoaderFactory.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$headerCheckers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWELoaderFactory.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$keyEncryptionAlgorithms with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWELoaderFactory.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\JWELoaderFactory\\:\\:create\\(\\) has parameter \\$serializers with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/JWELoaderFactory.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\Recipient\\:\\:__construct\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/Recipient.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\Recipient\\:\\:getHeader\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/Recipient.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONFlattenedSerializer\\:\\:checkData\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/Serializer/JSONFlattenedSerializer.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONFlattenedSerializer\\:\\:processHeaders\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/Serializer/JSONFlattenedSerializer.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONFlattenedSerializer\\:\\:processHeaders\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/Serializer/JSONFlattenedSerializer.php + + - + message: "#^Parameter \\#1 \\$encodedString of static method ParagonIE\\\\ConstantTime\\\\Base64\\:\\:decodeNoPadding\\(\\) expects string, mixed given\\.$#" + count: 3 + path: src/Component/Encryption/Serializer/JSONFlattenedSerializer.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONGeneralSerializer\\:\\:checkData\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processHeaders\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processHeaders\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processRecipient\\(\\) has parameter \\$recipient with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php + + - + message: "#^Method Jose\\\\Component\\\\Encryption\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processRecipient\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php + + - + message: "#^Parameter \\#1 \\$encodedString of static method ParagonIE\\\\ConstantTime\\\\Base64\\:\\:decodeNoPadding\\(\\) expects string, mixed given\\.$#" + count: 3 + path: src/Component/Encryption/Serializer/JSONGeneralSerializer.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\Analyzer\\\\Message\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/Analyzer/Message.php + + - + message: "#^Class Jose\\\\Component\\\\KeyManagement\\\\Analyzer\\\\MessageBag implements generic interface IteratorAggregate but does not specify its types\\: TKey, TValue$#" + count: 1 + path: src/Component/KeyManagement/Analyzer/MessageBag.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\Analyzer\\\\MessageBag\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/Analyzer/MessageBag.php + + - + message: "#^Cannot call method get\\(\\) on mixed\\.$#" + count: 1 + path: src/Component/KeyManagement/Analyzer/MixedKeyTypes.php + + - + message: "#^Cannot call method get\\(\\) on mixed\\.$#" + count: 1 + path: src/Component/KeyManagement/Analyzer/MixedPublicAndPrivateKeys.php + + - + message: "#^Cannot call method has\\(\\) on mixed\\.$#" + count: 1 + path: src/Component/KeyManagement/Analyzer/MixedPublicAndPrivateKeys.php + + - + message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + count: 2 + path: src/Component/KeyManagement/Analyzer/UsageAnalyzer.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JKUFactory\\:\\:loadFromUrl\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/JKUFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromCertificate\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromCertificateFile\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromKey\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromKeyFile\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromPKCS12CertificateFile\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromSecret\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromValues\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromX509Resource\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromX5C\\(\\) has parameter \\$additional_values with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromX5C\\(\\) has parameter \\$x5c with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Parameter \\#1 \\$key of static method Jose\\\\Component\\\\KeyManagement\\\\JWKFactory\\:\\:createFromKey\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Parameter \\#1 \\$length of function random_bytes expects int\\<1, max\\>, \\(float\\|int\\) given\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Parameter \\#3 \\$length of function mb_substr expects int\\|null, float\\|int\\ given\\.$#" + count: 1 + path: src/Component/KeyManagement/JWKFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:__construct\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/ECKey.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:getSupportedCurves\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/ECKey.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:loadJWK\\(\\) has parameter \\$jwk with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/ECKey.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:loadPEM\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/ECKey.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:toArray\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/ECKey.php + + - + message: "#^Property Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\ECKey\\:\\:\\$values type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/ECKey.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadFromKey\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadFromKeyFile\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadFromX5C\\(\\) has parameter \\$x5c with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadFromX5C\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromCertificate\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromCertificateFile\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromDER\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromPEM\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromX509Resource\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:tryToLoadECKey\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:tryToLoadOtherKeyTypes\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Parameter \\#3 \\$subject of function preg_replace expects array\\|string, string\\|null given\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/KeyConverter.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:__construct\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/RSAKey.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:createFromKeyDetails\\(\\) has parameter \\$details with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/RSAKey.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:loadJWK\\(\\) has parameter \\$jwk with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/RSAKey.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:toArray\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/RSAKey.php + + - + message: "#^Parameter \\#1 \\$details of static method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:createFromKeyDetails\\(\\) expects array, mixed given\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/RSAKey.php + + - + message: "#^Property Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\RSAKey\\:\\:\\$values type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/KeyConverter/RSAKey.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\UrlKeySetFactory\\:\\:getContent\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/UrlKeySetFactory.php + + - + message: "#^Cannot cast mixed to string\\.$#" + count: 1 + path: src/Component/KeyManagement/X5UFactory.php + + - + message: "#^Method Jose\\\\Component\\\\KeyManagement\\\\X5UFactory\\:\\:loadFromUrl\\(\\) has parameter \\$header with no value type specified in iterable type array\\.$#" + count: 1 + path: src/Component/KeyManagement/X5UFactory.php + + - + message: "#^Parameter \\#1 \\$certificate of static method Jose\\\\Component\\\\KeyManagement\\\\KeyConverter\\\\KeyConverter\\:\\:loadKeyFromCertificate\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/Component/KeyManagement/X5UFactory.php + + - + message: "#^Call to function array_key_exists\\(\\) with 'key' and array\\{key\\: Jose\\\\Component\\\\Core\\\\JWK, header\\?\\: array\\\\} will always evaluate to true\\.$#" + count: 1 + path: src/Component/NestedToken/NestedTokenBuilder.php + + - + message: "#^Call to function array_key_exists\\(\\) with 'key' and array\\{key\\: Jose\\\\Component\\\\Core\\\\JWK, protected_header\\?\\: array\\, header\\?\\: array\\\\} will always evaluate to true\\.$#" + count: 1 + path: src/Component/NestedToken/NestedTokenBuilder.php + + - + message: "#^Call to function is_array\\(\\) with array\\{key\\: Jose\\\\Component\\\\Core\\\\JWK, header\\?\\: array\\\\} will always evaluate to true\\.$#" + count: 1 + path: src/Component/NestedToken/NestedTokenBuilder.php + + - + message: "#^Call to function is_array\\(\\) with array\\{key\\: Jose\\\\Component\\\\Core\\\\JWK, protected_header\\?\\: array\\, header\\?\\: array\\\\} will always evaluate to true\\.$#" + count: 1 + path: src/Component/NestedToken/NestedTokenBuilder.php + + - + message: "#^Result of \\|\\| is always false\\.$#" + count: 2 + path: src/Component/NestedToken/NestedTokenBuilder.php + + - + message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array\\ given\\.$#" + count: 1 + path: src/Component/Signature/JWS.php + + - + message: "#^Parameter \\#4 \\$header of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array\\ given\\.$#" + count: 1 + path: src/Component/Signature/JWS.php + + - + message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array\\ given\\.$#" + count: 1 + path: src/Component/Signature/JWSBuilder.php + + - + message: "#^Parameter \\#4 \\$header of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array\\ given\\.$#" + count: 1 + path: src/Component/Signature/JWSBuilder.php + + - + message: "#^Parameter \\#1 \\$algorithm of method Jose\\\\Component\\\\Core\\\\AlgorithmManager\\:\\:get\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/Component/Signature/JWSVerifier.php + + - + message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + count: 1 + path: src/Component/Signature/JWSVerifier.php + + - + message: "#^Parameter \\#1 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\Serializer\\\\Serializer\\:\\:isPayloadEncoded\\(\\) expects array\\, array given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/CompactSerializer.php + + - + message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/CompactSerializer.php + + - + message: "#^Parameter \\#1 \\$encodedString of static method ParagonIE\\\\ConstantTime\\\\Base64\\:\\:decodeNoPadding\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONFlattenedSerializer.php + + - + message: "#^Parameter \\#1 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\Serializer\\\\Serializer\\:\\:isPayloadEncoded\\(\\) expects array\\, array given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONFlattenedSerializer.php + + - + message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONFlattenedSerializer.php + + - + message: "#^Parameter \\#4 \\$header of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, array given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONFlattenedSerializer.php + + - + message: "#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONGeneralSerializer.php + + - + message: "#^Cannot access offset 'signature' on mixed\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONGeneralSerializer.php + + - + message: "#^Parameter \\#1 \\$encodedString of static method ParagonIE\\\\ConstantTime\\\\Base64\\:\\:decodeNoPadding\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONGeneralSerializer.php + + - + message: "#^Parameter \\#1 \\$signature of method Jose\\\\Component\\\\Signature\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processHeaders\\(\\) expects array\\{protected\\?\\: string, header\\?\\: array\\\\}, mixed given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONGeneralSerializer.php + + - + message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, mixed given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONGeneralSerializer.php + + - + message: "#^Parameter \\#2 \\$protectedHeader of method Jose\\\\Component\\\\Signature\\\\Serializer\\\\JSONGeneralSerializer\\:\\:processIsPayloadEncoded\\(\\) expects array\\, mixed given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONGeneralSerializer.php + + - + message: "#^Parameter \\#3 \\$encodedProtectedHeader of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects string\\|null, mixed given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONGeneralSerializer.php + + - + message: "#^Parameter \\#4 \\$header of method Jose\\\\Component\\\\Signature\\\\JWS\\:\\:addSignature\\(\\) expects array\\{alg\\?\\: string, string\\?\\: mixed\\}, mixed given\\.$#" + count: 1 + path: src/Component/Signature/Serializer/JSONGeneralSerializer.php + + - + message: "#^Binary operation \"\\^\" between string and 1 results in an error\\.$#" + count: 2 + path: src/Ecc/Curve.php + + - + message: "#^Parameter \\#3 \\$length of function mb_substr expects int\\|null, float\\|int\\<1, max\\> given\\.$#" + count: 1 + path: src/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBCHS.php + + - + message: "#^Parameter \\#3 \\$length of function mb_substr expects int\\|null, float\\|int\\ given\\.$#" + count: 1 + path: src/EncryptionAlgorithm/KeyEncryption/ECDHES/AbstractECDH.php + + - + message: "#^Parameter \\#1 \\$length of function random_bytes expects int\\<1, max\\>, int given\\.$#" + count: 1 + path: src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2AESKW.php + + - + message: "#^Parameter \\#1 \\$length of function random_bytes expects int\\<1, max\\>, int given\\.$#" + count: 2 + path: src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php + + - + message: "#^Variable static method call on Jose\\\\Component\\\\Core\\\\Util\\\\Hash\\.$#" + count: 2 + path: src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php + + - + message: "#^Strict comparison using \\=\\=\\= between non\\-empty\\-string and '' will always evaluate to false\\.$#" + count: 1 + path: src/SignatureAlgorithm/None/None.php + + - + message: "#^Parameter \\#1 \\$length of function random_bytes expects int\\<1, max\\>, int given\\.$#" + count: 1 + path: src/SignatureAlgorithm/RSA/Util/RSA.php + + - + message: "#^Variable static method call on Jose\\\\Component\\\\Core\\\\Util\\\\Hash\\.$#" + count: 2 + path: src/SignatureAlgorithm/RSA/Util/RSA.php diff --git a/phpstan.neon b/phpstan.neon index 510aa59fb..f197b0c66 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,12 +1,12 @@ parameters: - level: max - paths: - - src - checkMissingIterableValueType: true - checkGenericClassInNonGenericObjectType: true - treatPhpDocTypesAsCertain: true - checkUninitializedProperties: true - checkDynamicProperties: true + level: max + paths: + - src + checkMissingIterableValueType: true + checkGenericClassInNonGenericObjectType: true + treatPhpDocTypesAsCertain: true + checkUninitializedProperties: true + checkDynamicProperties: true includes: - - vendor/phpstan/phpstan/conf/bleedingEdge.neon - - phpstan-baseline.neon + - vendor/phpstan/phpstan/conf/bleedingEdge.neon + - phpstan-baseline.neon diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 044e855ba..5e5d862e9 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,9 +1,15 @@ @@ -12,12 +18,13 @@ - - + + + diff --git a/rector.php b/rector.php index 5fc47a7d9..f30661046 100644 --- a/rector.php +++ b/rector.php @@ -3,10 +3,9 @@ declare(strict_types=1); use Rector\Config\RectorConfig; - use Rector\Core\ValueObject\PhpVersion; use Rector\Doctrine\Set\DoctrineSetList; -use Rector\PHPUnit\Rector\Class_\PreferPHPUnitThisCallRector; +use Rector\PHPUnit\CodeQuality\Rector\Class_\PreferPHPUnitThisCallRector; use Rector\PHPUnit\Set\PHPUnitLevelSetList; use Rector\PHPUnit\Set\PHPUnitSetList; use Rector\Set\ValueObject\LevelSetList; @@ -25,28 +24,22 @@ $config->import(SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES); $config->import(DoctrineSetList::DOCTRINE_CODE_QUALITY); $config->import(DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES); - $config->import(PHPUnitSetList::PHPUNIT_SPECIFIC_METHOD); - $config->import(PHPUnitLevelSetList::UP_TO_PHPUNIT_100); $config->import(PHPUnitSetList::PHPUNIT_CODE_QUALITY); - $config->import(PHPUnitSetList::PHPUNIT_EXCEPTION); - $config->import(PHPUnitSetList::REMOVE_MOCKS); - $config->import(PHPUnitSetList::PHPUNIT_SPECIFIC_METHOD); $config->import(PHPUnitSetList::ANNOTATIONS_TO_ATTRIBUTES); + $config->import(PHPUnitLevelSetList::UP_TO_PHPUNIT_100); $config->paths([ __DIR__ . '/ecs.php', __DIR__ . '/rector.php', - __DIR__ . '/monorepo-builder.php', __DIR__ . '/performance', __DIR__ . '/src', __DIR__ . '/tests', ]); $config->skip([ + PreferPHPUnitThisCallRector::class => __DIR__ . '/tests', __DIR__ . '/src/Component/Core/JWKSet.php', __DIR__ . '/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php', __DIR__ . '/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php', ]); - $config->services() - ->remove(PreferPHPUnitThisCallRector::class); $config->phpVersion(PhpVersion::PHP_81); $config->parallel(); $config->importNames(); diff --git a/src/Bundle/JoseFramework/DataCollector/AlgorithmCollector.php b/src/Bundle/JoseFramework/DataCollector/AlgorithmCollector.php index 54aeafe13..ebb47e3b7 100644 --- a/src/Bundle/JoseFramework/DataCollector/AlgorithmCollector.php +++ b/src/Bundle/JoseFramework/DataCollector/AlgorithmCollector.php @@ -4,7 +4,6 @@ namespace Jose\Bundle\JoseFramework\DataCollector; -use function array_key_exists; use Jose\Component\Core\Algorithm; use Jose\Component\Core\AlgorithmManagerFactory; use Jose\Component\Encryption\Algorithm\ContentEncryptionAlgorithm; @@ -14,6 +13,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Throwable; +use function array_key_exists; final class AlgorithmCollector implements Collector { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/AlgorithmCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/AlgorithmCompilerPass.php index 21f75fa49..23079b712 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/AlgorithmCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/AlgorithmCompilerPass.php @@ -12,9 +12,6 @@ final class AlgorithmCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(AlgorithmManagerFactory::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/CheckerCollectorCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/CheckerCollectorCompilerPass.php index d80f56969..f5b252d63 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/CheckerCollectorCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/CheckerCollectorCompilerPass.php @@ -12,9 +12,6 @@ final class CheckerCollectorCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(CheckerCollector::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/ClaimCheckerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/ClaimCheckerCompilerPass.php index 9717e07ef..176c28af6 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/ClaimCheckerCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/ClaimCheckerCompilerPass.php @@ -12,9 +12,6 @@ final class ClaimCheckerCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(ClaimCheckerManagerFactory::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/CompressionMethodCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/CompressionMethodCompilerPass.php index a37987a9f..dfcbf369f 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/CompressionMethodCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/CompressionMethodCompilerPass.php @@ -12,9 +12,6 @@ final class CompressionMethodCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(CompressionMethodManagerFactory::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/DataCollectorCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/DataCollectorCompilerPass.php index aa34e3a67..a2660d70b 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/DataCollectorCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/DataCollectorCompilerPass.php @@ -11,9 +11,6 @@ final class DataCollectorCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(JoseCollector::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/EncryptionSerializerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/EncryptionSerializerCompilerPass.php index 821f3b059..bed7d5f86 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/EncryptionSerializerCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/EncryptionSerializerCompilerPass.php @@ -11,9 +11,6 @@ final class EncryptionSerializerCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(JWESerializerManagerFactory::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/EventDispatcherAliasCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/EventDispatcherAliasCompilerPass.php index eb9d61a93..647c5ea33 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/EventDispatcherAliasCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/EventDispatcherAliasCompilerPass.php @@ -10,9 +10,6 @@ final class EventDispatcherAliasCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition('event_dispatcher') || $container->hasAlias(EventDispatcherInterface::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/HeaderCheckerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/HeaderCheckerCompilerPass.php index d96884eee..8e67c341f 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/HeaderCheckerCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/HeaderCheckerCompilerPass.php @@ -13,9 +13,6 @@ final class HeaderCheckerCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(HeaderCheckerManagerFactory::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWECollectorCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWECollectorCompilerPass.php index 85d59e4df..6296489ba 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWECollectorCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWECollectorCompilerPass.php @@ -12,9 +12,6 @@ final class JWECollectorCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(JWECollector::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWSCollectorCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWSCollectorCompilerPass.php index b096cc1e4..8689c7094 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWSCollectorCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/JWSCollectorCompilerPass.php @@ -12,9 +12,6 @@ final class JWSCollectorCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(JWSCollector::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyAnalyzerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyAnalyzerCompilerPass.php index ffd445748..a0228635e 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyAnalyzerCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyAnalyzerCompilerPass.php @@ -11,9 +11,6 @@ final class KeyAnalyzerCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(KeyAnalyzerManager::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyCollectorCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyCollectorCompilerPass.php index 393bc5472..95a4b33f8 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyCollectorCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeyCollectorCompilerPass.php @@ -12,9 +12,6 @@ final class KeyCollectorCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(KeyCollector::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeySetControllerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeySetControllerCompilerPass.php index c924a0354..3beaf4d99 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeySetControllerCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeySetControllerCompilerPass.php @@ -11,9 +11,6 @@ final class KeySetControllerCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(JWKSetLoader::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeysetAnalyzerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeysetAnalyzerCompilerPass.php index 2ca43d6fa..41a096522 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeysetAnalyzerCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/KeysetAnalyzerCompilerPass.php @@ -11,9 +11,6 @@ final class KeysetAnalyzerCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(KeysetAnalyzerManager::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Compiler/SignatureSerializerCompilerPass.php b/src/Bundle/JoseFramework/DependencyInjection/Compiler/SignatureSerializerCompilerPass.php index 4f72ecdf7..255686f08 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Compiler/SignatureSerializerCompilerPass.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Compiler/SignatureSerializerCompilerPass.php @@ -11,9 +11,6 @@ final class SignatureSerializerCompilerPass implements CompilerPassInterface { - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (! $container->hasDefinition(JWSSerializerManagerFactory::class)) { diff --git a/src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php b/src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php index 76ae713d9..d27456666 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php +++ b/src/Bundle/JoseFramework/DependencyInjection/JoseFrameworkExtension.php @@ -4,12 +4,12 @@ namespace Jose\Bundle\JoseFramework\DependencyInjection; -use function count; use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source; use Symfony\Component\Config\Definition\Processor; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; use Symfony\Component\HttpKernel\DependencyInjection\Extension; +use function count; final class JoseFrameworkExtension extends Extension implements PrependExtensionInterface { @@ -28,7 +28,6 @@ public function getAlias(): string } /** - * {@inheritdoc} * @param array $configs */ public function load(array $configs, ContainerBuilder $container): void @@ -41,17 +40,11 @@ public function load(array $configs, ContainerBuilder $container): void } } - /** - * {@inheritdoc} - */ public function getConfiguration(array $configs, ContainerBuilder $container): Configuration { return new Configuration($this->getAlias(), $this->sources); } - /** - * {@inheritdoc} - */ public function prepend(ContainerBuilder $container): void { $configs = $container->getExtensionConfig($this->getAlias()); diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php index a2736007c..fe0eb0fe6 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Checker/CheckerSource.php @@ -4,8 +4,6 @@ namespace Jose\Bundle\JoseFramework\DependencyInjection\Source\Checker; -use function array_key_exists; -use function count; use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\ClaimCheckerCompilerPass; use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\HeaderCheckerCompilerPass; use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source; @@ -18,6 +16,8 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; +use function array_key_exists; +use function count; class CheckerSource implements SourceWithCompilerPasses { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php index 0cf06b113..e5d541702 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Encryption/EncryptionSource.php @@ -4,9 +4,6 @@ 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\CompressionMethodCompilerPass; use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\EncryptionSerializerCompilerPass; use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source; @@ -29,6 +26,9 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; +use function array_key_exists; +use function count; +use function in_array; class EncryptionSource implements SourceWithCompilerPasses { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php index 142acbb4c..1d74b5d4b 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSetSource.php @@ -4,8 +4,6 @@ namespace Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement; -use function array_key_exists; -use function count; use InvalidArgumentException; use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSetSource\JWKSetSource as JWKSetSourceInterface; use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source; @@ -14,6 +12,8 @@ use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; +use function array_key_exists; +use function count; class JWKSetSource implements Source { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php index 94fb3191e..ba30b9ef4 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource.php @@ -4,8 +4,6 @@ namespace Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement; -use function array_key_exists; -use function count; use InvalidArgumentException; use Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource\JWKSource as JWKSourceInterface; use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source; @@ -14,6 +12,8 @@ use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; +use function array_key_exists; +use function count; class JWKSource implements Source { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php index 97142000c..4d2a8843b 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/JWKSource/JWKSet.php @@ -4,8 +4,6 @@ namespace Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement\JWKSource; -use function is_int; -use function is_string; use Jose\Bundle\JoseFramework\DependencyInjection\Source\AbstractSource; use Jose\Component\Core\JWK; use Jose\Component\KeyManagement\JWKFactory; @@ -13,6 +11,8 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Reference; +use function is_int; +use function is_string; class JWKSet extends AbstractSource implements JWKSource { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php index 85f2403c9..27c1b04a6 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Source/KeyManagement/KeyManagementSource.php @@ -4,7 +4,6 @@ namespace Jose\Bundle\JoseFramework\DependencyInjection\Source\KeyManagement; -use function count; use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\KeyAnalyzerCompilerPass; use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\KeysetAnalyzerCompilerPass; use Jose\Bundle\JoseFramework\DependencyInjection\Compiler\KeySetControllerCompilerPass; @@ -18,6 +17,7 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; +use function count; class KeyManagementSource implements SourceWithCompilerPasses { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php b/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php index 832aeb80b..aca0f7bf5 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Source/NestedToken/NestedToken.php @@ -4,8 +4,6 @@ namespace Jose\Bundle\JoseFramework\DependencyInjection\Source\NestedToken; -use function array_key_exists; -use function count; use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source; use Jose\Component\NestedToken\NestedTokenBuilder as JoseNestedTokenBuilder; use Jose\Component\NestedToken\NestedTokenLoader as JoseNestedTokenLoader; @@ -13,6 +11,8 @@ use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; +use function array_key_exists; +use function count; class NestedToken implements Source { diff --git a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php index 2822b4ca5..c8162ba64 100644 --- a/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php +++ b/src/Bundle/JoseFramework/DependencyInjection/Source/Signature/SignatureSource.php @@ -4,9 +4,6 @@ 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\SignatureSerializerCompilerPass; use Jose\Bundle\JoseFramework\DependencyInjection\Source\Source; use Jose\Bundle\JoseFramework\DependencyInjection\Source\SourceWithCompilerPasses; @@ -23,6 +20,9 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; +use function array_key_exists; +use function count; +use function extension_loaded; class SignatureSource implements SourceWithCompilerPasses { diff --git a/src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php b/src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php index 475a805da..6cb50ff24 100644 --- a/src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php +++ b/src/Bundle/JoseFramework/EnvVarProcessor/KeyEnvVarProcessor.php @@ -12,9 +12,6 @@ final class KeyEnvVarProcessor implements EnvVarProcessorInterface { - /** - * {@inheritdoc} - */ public function getEnv(string $prefix, string $name, Closure $getEnv): mixed { $env = $getEnv($name); diff --git a/src/Bundle/JoseFramework/Helper/ConfigurationHelper.php b/src/Bundle/JoseFramework/Helper/ConfigurationHelper.php index 9f2708615..61873e264 100644 --- a/src/Bundle/JoseFramework/Helper/ConfigurationHelper.php +++ b/src/Bundle/JoseFramework/Helper/ConfigurationHelper.php @@ -4,8 +4,8 @@ namespace Jose\Bundle\JoseFramework\Helper; -use function is_array; use Symfony\Component\DependencyInjection\ContainerBuilder; +use function is_array; class ConfigurationHelper { diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aescbc.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aescbc.php index de416e0e8..12b461b47 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aescbc.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aescbc.php @@ -5,7 +5,6 @@ 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) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcm.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcm.php index ef15433d5..9a6862929 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcm.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcm.php @@ -5,7 +5,6 @@ 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) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcmkw.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcmkw.php index c9d76d078..76f2601c9 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcmkw.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aesgcmkw.php @@ -5,7 +5,6 @@ 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) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aeskw.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aeskw.php index 4283e8cf9..71b171f78 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aeskw.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_aeskw.php @@ -5,7 +5,6 @@ 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) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_dir.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_dir.php index ce325b364..9acf05345 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_dir.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_dir.php @@ -3,7 +3,6 @@ declare(strict_types=1); use Jose\Component\Encryption\Algorithm\KeyEncryption\Dir; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_ecdhes.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_ecdhes.php index 340f5e0ea..4d7b587c3 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_ecdhes.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_ecdhes.php @@ -10,7 +10,6 @@ use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHSSA128KW; use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHSSA192KW; use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHSSA256KW; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental.php index b4b97ae7f..f872ce64d 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_experimental.php @@ -15,7 +15,6 @@ 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) * 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 1d5d52ea0..baeafde4a 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 @@ -3,7 +3,6 @@ declare(strict_types=1); use Jose\Component\Encryption\Algorithm\KeyEncryption\Chacha20Poly1305; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_pbes2.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_pbes2.php index 6b77daa4e..124bef643 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_pbes2.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_pbes2.php @@ -5,7 +5,6 @@ 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) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_rsa.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_rsa.php index d6609ddb9..7b40407d9 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_rsa.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/encryption_rsa.php @@ -5,7 +5,6 @@ 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) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_ecdsa.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_ecdsa.php index eff24e574..d3ccb9c6d 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_ecdsa.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_ecdsa.php @@ -5,7 +5,6 @@ use Jose\Component\Signature\Algorithm\ES256; use Jose\Component\Signature\Algorithm\ES384; use Jose\Component\Signature\Algorithm\ES512; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_eddsa.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_eddsa.php index 1cb31f09c..5dcb0deec 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_eddsa.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_eddsa.php @@ -3,7 +3,6 @@ declare(strict_types=1); use Jose\Component\Signature\Algorithm\EdDSA; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_experimental.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_experimental.php index 94cde233f..79395a83a 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_experimental.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_experimental.php @@ -7,7 +7,6 @@ use Jose\Component\Signature\Algorithm\HS1; use Jose\Component\Signature\Algorithm\HS256_64; use Jose\Component\Signature\Algorithm\RS1; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_hmac.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_hmac.php index 7f7973e94..e5189a4b7 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_hmac.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_hmac.php @@ -5,7 +5,6 @@ use Jose\Component\Signature\Algorithm\HS256; use Jose\Component\Signature\Algorithm\HS384; use Jose\Component\Signature\Algorithm\HS512; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_none.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_none.php index accf7d370..956c3a22e 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_none.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_none.php @@ -3,7 +3,6 @@ declare(strict_types=1); use Jose\Component\Signature\Algorithm\None; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_rsa.php b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_rsa.php index 577dbd87a..1a4ba5935 100644 --- a/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_rsa.php +++ b/src/Bundle/JoseFramework/Resources/config/Algorithms/signature_rsa.php @@ -8,7 +8,6 @@ use Jose\Component\Signature\Algorithm\RS256; use Jose\Component\Signature\Algorithm\RS384; use Jose\Component\Signature\Algorithm\RS512; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/analyzers.php b/src/Bundle/JoseFramework/Resources/config/analyzers.php index b7be33c8e..fc2448445 100644 --- a/src/Bundle/JoseFramework/Resources/config/analyzers.php +++ b/src/Bundle/JoseFramework/Resources/config/analyzers.php @@ -18,7 +18,6 @@ use Jose\Component\KeyManagement\Analyzer\NoneAnalyzer; use Jose\Component\KeyManagement\Analyzer\OctAnalyzer; use Jose\Component\KeyManagement\Analyzer\UsageAnalyzer; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/checkers.php b/src/Bundle/JoseFramework/Resources/config/checkers.php index f40def59c..b961bc87f 100644 --- a/src/Bundle/JoseFramework/Resources/config/checkers.php +++ b/src/Bundle/JoseFramework/Resources/config/checkers.php @@ -20,7 +20,6 @@ * of the MIT license. See the LICENSE file for details. */ - return function (ContainerConfigurator $container): void { $container = $container->services() ->defaults() diff --git a/src/Bundle/JoseFramework/Resources/config/commands.php b/src/Bundle/JoseFramework/Resources/config/commands.php index 8a996cbb7..5e20ed39f 100644 --- a/src/Bundle/JoseFramework/Resources/config/commands.php +++ b/src/Bundle/JoseFramework/Resources/config/commands.php @@ -25,7 +25,6 @@ use Jose\Component\Console\RsaKeysetGeneratorCommand; use Jose\Component\Console\SecretKeyGeneratorCommand; use Jose\Component\Console\X509CertificateLoaderCommand; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/compression_methods.php b/src/Bundle/JoseFramework/Resources/config/compression_methods.php index a979617d1..b97120bb9 100644 --- a/src/Bundle/JoseFramework/Resources/config/compression_methods.php +++ b/src/Bundle/JoseFramework/Resources/config/compression_methods.php @@ -4,7 +4,6 @@ use Jose\Component\Encryption\Compression\CompressionMethodManagerFactory; use Jose\Component\Encryption\Compression\Deflate; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/dev_services.php b/src/Bundle/JoseFramework/Resources/config/dev_services.php index 0a24064d6..5999961db 100644 --- a/src/Bundle/JoseFramework/Resources/config/dev_services.php +++ b/src/Bundle/JoseFramework/Resources/config/dev_services.php @@ -8,7 +8,6 @@ use Jose\Bundle\JoseFramework\DataCollector\JWECollector; use Jose\Bundle\JoseFramework\DataCollector\JWSCollector; use Jose\Bundle\JoseFramework\DataCollector\KeyCollector; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/env_var.php b/src/Bundle/JoseFramework/Resources/config/env_var.php index 98d35edd5..7d006cd9e 100644 --- a/src/Bundle/JoseFramework/Resources/config/env_var.php +++ b/src/Bundle/JoseFramework/Resources/config/env_var.php @@ -3,7 +3,6 @@ declare(strict_types=1); use Jose\Bundle\JoseFramework\EnvVarProcessor\KeyEnvVarProcessor; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/jku_commands.php b/src/Bundle/JoseFramework/Resources/config/jku_commands.php index d5ab7711d..d0dc942ce 100644 --- a/src/Bundle/JoseFramework/Resources/config/jku_commands.php +++ b/src/Bundle/JoseFramework/Resources/config/jku_commands.php @@ -4,7 +4,6 @@ use Jose\Component\Console\JKULoaderCommand; use Jose\Component\Console\X5ULoaderCommand; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/jku_source.php b/src/Bundle/JoseFramework/Resources/config/jku_source.php index 9e6e58bad..c7f5b10ab 100644 --- a/src/Bundle/JoseFramework/Resources/config/jku_source.php +++ b/src/Bundle/JoseFramework/Resources/config/jku_source.php @@ -4,7 +4,6 @@ use Jose\Component\KeyManagement\JKUFactory; use Jose\Component\KeyManagement\X5UFactory; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/jwe_serializers.php b/src/Bundle/JoseFramework/Resources/config/jwe_serializers.php index d5fb7bb71..56ffadfdc 100644 --- a/src/Bundle/JoseFramework/Resources/config/jwe_serializers.php +++ b/src/Bundle/JoseFramework/Resources/config/jwe_serializers.php @@ -6,7 +6,6 @@ use Jose\Component\Encryption\Serializer\JSONFlattenedSerializer; use Jose\Component\Encryption\Serializer\JSONGeneralSerializer; use Jose\Component\Encryption\Serializer\JWESerializerManagerFactory; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/jwe_services.php b/src/Bundle/JoseFramework/Resources/config/jwe_services.php index be402280b..639479b4f 100644 --- a/src/Bundle/JoseFramework/Resources/config/jwe_services.php +++ b/src/Bundle/JoseFramework/Resources/config/jwe_services.php @@ -6,7 +6,6 @@ use Jose\Bundle\JoseFramework\Services\JWEDecrypterFactory; use Jose\Bundle\JoseFramework\Services\JWELoaderFactory; use Jose\Component\Encryption\JWETokenSupport; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/jwk_sources.php b/src/Bundle/JoseFramework/Resources/config/jwk_sources.php index 0a74c9830..ec96979a7 100644 --- a/src/Bundle/JoseFramework/Resources/config/jwk_sources.php +++ b/src/Bundle/JoseFramework/Resources/config/jwk_sources.php @@ -10,7 +10,6 @@ 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) * diff --git a/src/Bundle/JoseFramework/Resources/config/jwkset_sources.php b/src/Bundle/JoseFramework/Resources/config/jwkset_sources.php index 88238022f..ee441c8d7 100644 --- a/src/Bundle/JoseFramework/Resources/config/jwkset_sources.php +++ b/src/Bundle/JoseFramework/Resources/config/jwkset_sources.php @@ -5,7 +5,6 @@ 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) * diff --git a/src/Bundle/JoseFramework/Resources/config/jws_serializers.php b/src/Bundle/JoseFramework/Resources/config/jws_serializers.php index 281dfd92a..bf323c5f8 100644 --- a/src/Bundle/JoseFramework/Resources/config/jws_serializers.php +++ b/src/Bundle/JoseFramework/Resources/config/jws_serializers.php @@ -6,7 +6,6 @@ use Jose\Component\Signature\Serializer\JSONFlattenedSerializer; use Jose\Component\Signature\Serializer\JSONGeneralSerializer; use Jose\Component\Signature\Serializer\JWSSerializerManagerFactory; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/jws_services.php b/src/Bundle/JoseFramework/Resources/config/jws_services.php index 67bf0b938..18f2fb1aa 100644 --- a/src/Bundle/JoseFramework/Resources/config/jws_services.php +++ b/src/Bundle/JoseFramework/Resources/config/jws_services.php @@ -6,7 +6,6 @@ use Jose\Bundle\JoseFramework\Services\JWSLoaderFactory; use Jose\Bundle\JoseFramework\Services\JWSVerifierFactory; use Jose\Component\Signature\JWSTokenSupport; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Resources/config/nested_token.php b/src/Bundle/JoseFramework/Resources/config/nested_token.php index 6a039bb52..7428e894a 100644 --- a/src/Bundle/JoseFramework/Resources/config/nested_token.php +++ b/src/Bundle/JoseFramework/Resources/config/nested_token.php @@ -4,7 +4,6 @@ use Jose\Bundle\JoseFramework\Services\NestedTokenBuilderFactory; use Jose\Bundle\JoseFramework\Services\NestedTokenLoaderFactory; - /* * The MIT License (MIT) * diff --git a/src/Bundle/JoseFramework/Routing/JWKSetLoader.php b/src/Bundle/JoseFramework/Routing/JWKSetLoader.php index ad2c9fffd..68ee2ea19 100644 --- a/src/Bundle/JoseFramework/Routing/JWKSetLoader.php +++ b/src/Bundle/JoseFramework/Routing/JWKSetLoader.php @@ -29,17 +29,11 @@ public function add(string $pattern, string $name): void $this->routes->add(sprintf('jwkset_%s', $name), $route); } - /** - * {@inheritdoc} - */ public function load(mixed $resource, string $type = null): RouteCollection { return $this->routes; } - /** - * {@inheritdoc} - */ public function supports(mixed $resource, string $type = null): bool { return $type === 'jwkset'; diff --git a/src/Bundle/JoseFramework/Serializer/JWEEncoder.php b/src/Bundle/JoseFramework/Serializer/JWEEncoder.php index e13f02fc2..642a757fa 100644 --- a/src/Bundle/JoseFramework/Serializer/JWEEncoder.php +++ b/src/Bundle/JoseFramework/Serializer/JWEEncoder.php @@ -5,18 +5,18 @@ namespace Jose\Bundle\JoseFramework\Serializer; use Exception; -use function in_array; -use function is_int; use Jose\Component\Encryption\JWE; use Jose\Component\Encryption\Serializer\JWESerializerManager; use Jose\Component\Encryption\Serializer\JWESerializerManagerFactory; use LogicException; -use function mb_strtolower; use Symfony\Component\Serializer\Encoder\DecoderInterface; use Symfony\Component\Serializer\Encoder\EncoderInterface; use Symfony\Component\Serializer\Encoder\NormalizationAwareInterface; use Symfony\Component\Serializer\Exception\NotEncodableValueException; use Throwable; +use function in_array; +use function is_int; +use function mb_strtolower; final class JWEEncoder implements EncoderInterface, DecoderInterface, NormalizationAwareInterface { diff --git a/src/Bundle/JoseFramework/Serializer/JWESerializer.php b/src/Bundle/JoseFramework/Serializer/JWESerializer.php index ad98a923b..d5c9d7503 100644 --- a/src/Bundle/JoseFramework/Serializer/JWESerializer.php +++ b/src/Bundle/JoseFramework/Serializer/JWESerializer.php @@ -4,13 +4,13 @@ namespace Jose\Bundle\JoseFramework\Serializer; -use function in_array; use Jose\Component\Encryption\JWE; use Jose\Component\Encryption\Serializer\JWESerializerManager; use Jose\Component\Encryption\Serializer\JWESerializerManagerFactory; use LogicException; -use function mb_strtolower; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; +use function in_array; +use function mb_strtolower; final class JWESerializer implements DenormalizerInterface { diff --git a/src/Bundle/JoseFramework/Serializer/JWSEncoder.php b/src/Bundle/JoseFramework/Serializer/JWSEncoder.php index 1e10cd51b..5c3dfbbf1 100644 --- a/src/Bundle/JoseFramework/Serializer/JWSEncoder.php +++ b/src/Bundle/JoseFramework/Serializer/JWSEncoder.php @@ -5,17 +5,17 @@ namespace Jose\Bundle\JoseFramework\Serializer; use Exception; -use function in_array; -use function is_int; use Jose\Component\Signature\JWS; use Jose\Component\Signature\Serializer\JWSSerializerManager; use Jose\Component\Signature\Serializer\JWSSerializerManagerFactory; use LogicException; -use function mb_strtolower; use Symfony\Component\Serializer\Encoder\DecoderInterface; use Symfony\Component\Serializer\Encoder\EncoderInterface; use Symfony\Component\Serializer\Encoder\NormalizationAwareInterface; use Symfony\Component\Serializer\Exception\NotEncodableValueException; +use function in_array; +use function is_int; +use function mb_strtolower; final class JWSEncoder implements EncoderInterface, DecoderInterface, NormalizationAwareInterface { diff --git a/src/Bundle/JoseFramework/Serializer/JWSSerializer.php b/src/Bundle/JoseFramework/Serializer/JWSSerializer.php index ecaee239e..d6a224240 100644 --- a/src/Bundle/JoseFramework/Serializer/JWSSerializer.php +++ b/src/Bundle/JoseFramework/Serializer/JWSSerializer.php @@ -4,13 +4,13 @@ namespace Jose\Bundle\JoseFramework\Serializer; -use function in_array; use Jose\Component\Signature\JWS; use Jose\Component\Signature\Serializer\JWSSerializerManager; use Jose\Component\Signature\Serializer\JWSSerializerManagerFactory; use LogicException; -use function mb_strtolower; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; +use function in_array; +use function mb_strtolower; final class JWSSerializer implements DenormalizerInterface { diff --git a/src/Bundle/JoseFramework/composer.json b/src/Bundle/JoseFramework/composer.json index d430cb9b7..54077f1b5 100644 --- a/src/Bundle/JoseFramework/composer.json +++ b/src/Bundle/JoseFramework/composer.json @@ -40,10 +40,10 @@ "require": { "php": ">=8.1", "psr/event-dispatcher": "^1.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", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", "web-token/jwt-core": "^3.2" }, "suggest": { diff --git a/src/Component/Checker/AlgorithmChecker.php b/src/Component/Checker/AlgorithmChecker.php index bed911947..c2d7d0319 100644 --- a/src/Component/Checker/AlgorithmChecker.php +++ b/src/Component/Checker/AlgorithmChecker.php @@ -24,9 +24,6 @@ public function __construct( ) { } - /** - * {@inheritdoc} - */ public function checkHeader(mixed $value): void { if (! is_string($value)) { diff --git a/src/Component/Checker/AudienceChecker.php b/src/Component/Checker/AudienceChecker.php index 2994869f5..995a94c9d 100644 --- a/src/Component/Checker/AudienceChecker.php +++ b/src/Component/Checker/AudienceChecker.php @@ -22,17 +22,11 @@ public function __construct( ) { } - /** - * {@inheritdoc} - */ public function checkClaim(mixed $value): void { $this->checkValue($value, InvalidClaimException::class); } - /** - * {@inheritdoc} - */ public function checkHeader(mixed $value): void { $this->checkValue($value, InvalidHeaderException::class); diff --git a/src/Component/Checker/CallableChecker.php b/src/Component/Checker/CallableChecker.php index 3bb63735b..9f51b8c14 100644 --- a/src/Component/Checker/CallableChecker.php +++ b/src/Component/Checker/CallableChecker.php @@ -4,8 +4,8 @@ namespace Jose\Component\Checker; -use function call_user_func; use InvalidArgumentException; +use function call_user_func; use function is_callable; /** diff --git a/src/Component/Checker/ExpirationTimeChecker.php b/src/Component/Checker/ExpirationTimeChecker.php index 7d43bbed6..d4bdad3c7 100644 --- a/src/Component/Checker/ExpirationTimeChecker.php +++ b/src/Component/Checker/ExpirationTimeChecker.php @@ -4,9 +4,9 @@ namespace Jose\Component\Checker; +use Psr\Clock\ClockInterface; use function is_float; use function is_int; -use Psr\Clock\ClockInterface; /** * This class is a claim checker. When the "exp" is present, it will compare the value with the current timestamp. @@ -33,9 +33,6 @@ public function __construct( $this->clock = $clock; } - /** - * {@inheritdoc} - */ public function checkClaim(mixed $value): void { if (! is_float($value) && ! is_int($value)) { diff --git a/src/Component/Checker/HeaderCheckerManager.php b/src/Component/Checker/HeaderCheckerManager.php index 4f1c9bdb1..124bfe920 100644 --- a/src/Component/Checker/HeaderCheckerManager.php +++ b/src/Component/Checker/HeaderCheckerManager.php @@ -4,11 +4,11 @@ namespace Jose\Component\Checker; +use InvalidArgumentException; +use Jose\Component\Core\JWT; use function array_key_exists; use function count; -use InvalidArgumentException; use function is_array; -use Jose\Component\Core\JWT; class HeaderCheckerManager { diff --git a/src/Component/Checker/IssuedAtChecker.php b/src/Component/Checker/IssuedAtChecker.php index b71c7d0b4..2952a440b 100644 --- a/src/Component/Checker/IssuedAtChecker.php +++ b/src/Component/Checker/IssuedAtChecker.php @@ -4,9 +4,9 @@ namespace Jose\Component\Checker; +use Psr\Clock\ClockInterface; use function is_float; use function is_int; -use Psr\Clock\ClockInterface; /** * This class is a claim checker. When the "iat" is present, it will compare the value with the current timestamp. @@ -33,9 +33,6 @@ public function __construct( $this->clock = $clock; } - /** - * {@inheritdoc} - */ public function checkClaim(mixed $value): void { if (! is_float($value) && ! is_int($value)) { diff --git a/src/Component/Checker/NotBeforeChecker.php b/src/Component/Checker/NotBeforeChecker.php index 95599f4ac..9f14d0e13 100644 --- a/src/Component/Checker/NotBeforeChecker.php +++ b/src/Component/Checker/NotBeforeChecker.php @@ -4,9 +4,9 @@ namespace Jose\Component\Checker; +use Psr\Clock\ClockInterface; use function is_float; use function is_int; -use Psr\Clock\ClockInterface; /** * This class is a claim checker. When the "nbf" is present, it will compare the value with the current timestamp. @@ -33,9 +33,6 @@ public function __construct( $this->clock = $clock; } - /** - * {@inheritdoc} - */ public function checkClaim(mixed $value): void { if (! is_float($value) && ! is_int($value)) { diff --git a/src/Component/Checker/UnencodedPayloadChecker.php b/src/Component/Checker/UnencodedPayloadChecker.php index 0a94c37c3..91f79a224 100644 --- a/src/Component/Checker/UnencodedPayloadChecker.php +++ b/src/Component/Checker/UnencodedPayloadChecker.php @@ -15,9 +15,6 @@ final class UnencodedPayloadChecker implements HeaderChecker { private const HEADER_NAME = 'b64'; - /** - * {@inheritdoc} - */ public function checkHeader(mixed $value): void { if (! is_bool($value)) { diff --git a/src/Component/Console/AddKeyIntoKeysetCommand.php b/src/Component/Console/AddKeyIntoKeysetCommand.php index 2604b4bca..0748bc685 100644 --- a/src/Component/Console/AddKeyIntoKeysetCommand.php +++ b/src/Component/Console/AddKeyIntoKeysetCommand.php @@ -5,15 +5,17 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWK; use Jose\Component\Core\JWKSet; use Jose\Component\Core\Util\JsonConverter; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_array; +use function is_string; +#[AsCommand(name: 'keyset:add:key', description: 'Add a key into a key set.',)] final class AddKeyIntoKeysetCommand extends ObjectOutputCommand { protected static $defaultName = 'keyset:add:key'; diff --git a/src/Component/Console/EcKeyGeneratorCommand.php b/src/Component/Console/EcKeyGeneratorCommand.php index 71eab8306..42ff88a74 100644 --- a/src/Component/Console/EcKeyGeneratorCommand.php +++ b/src/Component/Console/EcKeyGeneratorCommand.php @@ -5,12 +5,14 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_string; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_string; +#[AsCommand(name: 'key:generate:ec', description: 'Generate an EC key (JWK format)',)] final class EcKeyGeneratorCommand extends GeneratorCommand { protected static $defaultName = 'key:generate:ec'; diff --git a/src/Component/Console/EcKeysetGeneratorCommand.php b/src/Component/Console/EcKeysetGeneratorCommand.php index 0bb058f70..5dfab7c32 100644 --- a/src/Component/Console/EcKeysetGeneratorCommand.php +++ b/src/Component/Console/EcKeysetGeneratorCommand.php @@ -5,13 +5,15 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_string; use Jose\Component\Core\JWKSet; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_string; +#[AsCommand(name: 'keyset:generate:ec', description: 'Generate an EC key set (JWKSet format)',)] final class EcKeysetGeneratorCommand extends GeneratorCommand { protected static $defaultName = 'keyset:generate:ec'; diff --git a/src/Component/Console/GeneratorCommand.php b/src/Component/Console/GeneratorCommand.php index 83fd3a02b..8f4f58cb4 100644 --- a/src/Component/Console/GeneratorCommand.php +++ b/src/Component/Console/GeneratorCommand.php @@ -5,11 +5,11 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_bool; use Jose\Component\KeyManagement\JWKFactory; use ParagonIE\ConstantTime\Base64UrlSafe; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; +use function is_bool; abstract class GeneratorCommand extends ObjectOutputCommand { diff --git a/src/Component/Console/GetThumbprintCommand.php b/src/Component/Console/GetThumbprintCommand.php index a8d8eb648..31e0cdf53 100644 --- a/src/Component/Console/GetThumbprintCommand.php +++ b/src/Component/Console/GetThumbprintCommand.php @@ -5,15 +5,17 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\JsonConverter; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use function is_array; +use function is_string; +#[AsCommand(name: 'key:thumbprint', description: 'Get the thumbprint of a JWK key.',)] final class GetThumbprintCommand extends ObjectOutputCommand { protected static $defaultName = 'key:thumbprint'; diff --git a/src/Component/Console/JKULoaderCommand.php b/src/Component/Console/JKULoaderCommand.php index a2303db2e..94d2f2ef9 100644 --- a/src/Component/Console/JKULoaderCommand.php +++ b/src/Component/Console/JKULoaderCommand.php @@ -5,12 +5,14 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_string; use Jose\Component\KeyManagement\JKUFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_string; +#[AsCommand(name: 'keyset:load:jku', description: 'Loads a key set from an url.',)] final class JKULoaderCommand extends ObjectOutputCommand { protected static $defaultName = 'keyset:load:jku'; diff --git a/src/Component/Console/KeyAnalyzerCommand.php b/src/Component/Console/KeyAnalyzerCommand.php index 9c4bed0a9..368fdfa65 100644 --- a/src/Component/Console/KeyAnalyzerCommand.php +++ b/src/Component/Console/KeyAnalyzerCommand.php @@ -5,17 +5,19 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\JsonConverter; use Jose\Component\KeyManagement\Analyzer\KeyAnalyzerManager; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_array; +use function is_string; +#[AsCommand(name: 'key:analyze', description: 'JWK quality analyzer.',)] final class KeyAnalyzerCommand extends Command { protected static $defaultName = 'key:analyze'; diff --git a/src/Component/Console/KeyFileLoaderCommand.php b/src/Component/Console/KeyFileLoaderCommand.php index 8c1a23bab..6ed746762 100644 --- a/src/Component/Console/KeyFileLoaderCommand.php +++ b/src/Component/Console/KeyFileLoaderCommand.php @@ -5,13 +5,15 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_string; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use function is_string; +#[AsCommand(name: 'key:load:key', description: 'Loads a key from a key file (JWK format)',)] final class KeyFileLoaderCommand extends GeneratorCommand { protected static $defaultName = 'key:load:key'; diff --git a/src/Component/Console/KeysetAnalyzerCommand.php b/src/Component/Console/KeysetAnalyzerCommand.php index d33e8ce46..826afa0c3 100644 --- a/src/Component/Console/KeysetAnalyzerCommand.php +++ b/src/Component/Console/KeysetAnalyzerCommand.php @@ -5,19 +5,21 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWKSet; use Jose\Component\Core\Util\JsonConverter; use Jose\Component\KeyManagement\Analyzer\KeyAnalyzerManager; use Jose\Component\KeyManagement\Analyzer\KeysetAnalyzerManager; use Jose\Component\KeyManagement\Analyzer\MessageBag; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_array; +use function is_string; +#[AsCommand(name: 'keyset:analyze', description: 'JWKSet quality analyzer.',)] final class KeysetAnalyzerCommand extends Command { protected static $defaultName = 'keyset:analyze'; diff --git a/src/Component/Console/MergeKeysetCommand.php b/src/Component/Console/MergeKeysetCommand.php index 4e692703d..a558ba694 100644 --- a/src/Component/Console/MergeKeysetCommand.php +++ b/src/Component/Console/MergeKeysetCommand.php @@ -5,13 +5,15 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_array; use Jose\Component\Core\JWKSet; use Jose\Component\Core\Util\JsonConverter; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_array; +#[AsCommand(name: 'keyset:merge', description: 'Merge several key sets into one.',)] final class MergeKeysetCommand extends ObjectOutputCommand { protected static $defaultName = 'keyset:merge'; diff --git a/src/Component/Console/NoneKeyGeneratorCommand.php b/src/Component/Console/NoneKeyGeneratorCommand.php index 0b00c776f..86dd6cf91 100644 --- a/src/Component/Console/NoneKeyGeneratorCommand.php +++ b/src/Component/Console/NoneKeyGeneratorCommand.php @@ -8,6 +8,10 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +#[AsCommand( + name: 'key:generate:none', + description: 'Generate a none key (JWK format). This key type is only supposed to be used with the "none" algorithm.', +)] final class NoneKeyGeneratorCommand extends GeneratorCommand { protected static $defaultName = 'key:generate:none'; diff --git a/src/Component/Console/OctKeyGeneratorCommand.php b/src/Component/Console/OctKeyGeneratorCommand.php index 499bb561b..2601ebf9b 100644 --- a/src/Component/Console/OctKeyGeneratorCommand.php +++ b/src/Component/Console/OctKeyGeneratorCommand.php @@ -6,10 +6,12 @@ use InvalidArgumentException; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +#[AsCommand(name: 'key:generate:oct', description: 'Generate an octet key (JWK format)',)] final class OctKeyGeneratorCommand extends GeneratorCommand { protected static $defaultName = 'key:generate:oct'; diff --git a/src/Component/Console/OctKeysetGeneratorCommand.php b/src/Component/Console/OctKeysetGeneratorCommand.php index 61156528c..e7dd92fae 100644 --- a/src/Component/Console/OctKeysetGeneratorCommand.php +++ b/src/Component/Console/OctKeysetGeneratorCommand.php @@ -7,10 +7,12 @@ use InvalidArgumentException; use Jose\Component\Core\JWKSet; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +#[AsCommand(name: 'keyset:generate:oct', description: 'Generate a key set with octet keys (JWK format)',)] final class OctKeysetGeneratorCommand extends GeneratorCommand { protected static $defaultName = 'keyset:generate:oct'; diff --git a/src/Component/Console/OkpKeyGeneratorCommand.php b/src/Component/Console/OkpKeyGeneratorCommand.php index 2dc947ba1..195efb7df 100644 --- a/src/Component/Console/OkpKeyGeneratorCommand.php +++ b/src/Component/Console/OkpKeyGeneratorCommand.php @@ -5,12 +5,14 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_string; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_string; +#[AsCommand(name: 'key:generate:okp', description: 'Generate an Octet Key Pair key (JWK format)',)] final class OkpKeyGeneratorCommand extends GeneratorCommand { protected static $defaultName = 'key:generate:okp'; diff --git a/src/Component/Console/OkpKeysetGeneratorCommand.php b/src/Component/Console/OkpKeysetGeneratorCommand.php index 4d78fe246..a98dfd382 100644 --- a/src/Component/Console/OkpKeysetGeneratorCommand.php +++ b/src/Component/Console/OkpKeysetGeneratorCommand.php @@ -5,13 +5,18 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_string; use Jose\Component\Core\JWKSet; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_string; +#[AsCommand( + name: 'keyset:generate:okp', + description: 'Generate a key set with Octet Key Pairs keys (JWKSet format)', +)] final class OkpKeysetGeneratorCommand extends GeneratorCommand { protected static $defaultName = 'keyset:generate:okp'; diff --git a/src/Component/Console/OptimizeRsaKeyCommand.php b/src/Component/Console/OptimizeRsaKeyCommand.php index bd2a9da62..693bc41d2 100644 --- a/src/Component/Console/OptimizeRsaKeyCommand.php +++ b/src/Component/Console/OptimizeRsaKeyCommand.php @@ -5,15 +5,17 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\JsonConverter; use Jose\Component\KeyManagement\KeyConverter\RSAKey; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_array; +use function is_string; +#[AsCommand(name: 'key:optimize', description: 'Optimize a RSA key by calculating additional primes (CRT).',)] final class OptimizeRsaKeyCommand extends ObjectOutputCommand { protected static $defaultName = 'key:optimize'; diff --git a/src/Component/Console/P12CertificateLoaderCommand.php b/src/Component/Console/P12CertificateLoaderCommand.php index 065c3a4a5..92cfccddb 100644 --- a/src/Component/Console/P12CertificateLoaderCommand.php +++ b/src/Component/Console/P12CertificateLoaderCommand.php @@ -5,13 +5,15 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_string; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use function is_string; +#[AsCommand(name: 'key:load:p12', description: 'Load a key from a P12 certificate file.',)] final class P12CertificateLoaderCommand extends GeneratorCommand { protected static $defaultName = 'key:load:p12'; diff --git a/src/Component/Console/PemConverterCommand.php b/src/Component/Console/PemConverterCommand.php index f73b5071e..1fcb957bd 100644 --- a/src/Component/Console/PemConverterCommand.php +++ b/src/Component/Console/PemConverterCommand.php @@ -5,16 +5,18 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\ECKey; use Jose\Component\Core\Util\JsonConverter; use Jose\Component\Core\Util\RSAKey; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_array; +use function is_string; +#[AsCommand(name: 'key:convert:pkcs1', description: 'Converts a RSA or EC key into PKCS#1 key.',)] final class PemConverterCommand extends ObjectOutputCommand { protected static $defaultName = 'key:convert:pkcs1'; diff --git a/src/Component/Console/PublicKeyCommand.php b/src/Component/Console/PublicKeyCommand.php index 8d593ddc8..81bd93fb9 100644 --- a/src/Component/Console/PublicKeyCommand.php +++ b/src/Component/Console/PublicKeyCommand.php @@ -5,14 +5,18 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\JsonConverter; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_array; +use function is_string; +#[AsCommand( + name: 'key:convert:public', + description: 'Convert a private key into public key. Symmetric keys (shared keys) are not changed.', +)] final class PublicKeyCommand extends ObjectOutputCommand { protected static $defaultName = 'key:convert:public'; diff --git a/src/Component/Console/PublicKeysetCommand.php b/src/Component/Console/PublicKeysetCommand.php index 1b2a537ab..474ebb0ac 100644 --- a/src/Component/Console/PublicKeysetCommand.php +++ b/src/Component/Console/PublicKeysetCommand.php @@ -5,14 +5,19 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWKSet; use Jose\Component\Core\Util\JsonConverter; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_array; +use function is_string; +#[AsCommand( + name: 'keyset:convert:public', + description: 'Convert private keys in a key set into public keys. Symmetric keys (shared keys) are not changed.', +)] final class PublicKeysetCommand extends ObjectOutputCommand { protected static $defaultName = 'keyset:convert:public'; diff --git a/src/Component/Console/RotateKeysetCommand.php b/src/Component/Console/RotateKeysetCommand.php index d5e9c4f44..d2451f6a8 100644 --- a/src/Component/Console/RotateKeysetCommand.php +++ b/src/Component/Console/RotateKeysetCommand.php @@ -4,17 +4,19 @@ namespace Jose\Component\Console; -use function count; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWK; use Jose\Component\Core\JWKSet; use Jose\Component\Core\Util\JsonConverter; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function count; +use function is_array; +use function is_string; +#[AsCommand(name: 'keyset:rotate', description: 'Rotate a key set.',)] final class RotateKeysetCommand extends ObjectOutputCommand { protected static $defaultName = 'keyset:rotate'; diff --git a/src/Component/Console/RsaKeyGeneratorCommand.php b/src/Component/Console/RsaKeyGeneratorCommand.php index 2dcebdced..409158c47 100644 --- a/src/Component/Console/RsaKeyGeneratorCommand.php +++ b/src/Component/Console/RsaKeyGeneratorCommand.php @@ -6,10 +6,12 @@ use InvalidArgumentException; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +#[AsCommand(name: 'key:generate:rsa', description: 'Generate a RSA key (JWK format)',)] final class RsaKeyGeneratorCommand extends GeneratorCommand { protected static $defaultName = 'key:generate:rsa'; diff --git a/src/Component/Console/RsaKeysetGeneratorCommand.php b/src/Component/Console/RsaKeysetGeneratorCommand.php index 612bfcb54..adf309e0e 100644 --- a/src/Component/Console/RsaKeysetGeneratorCommand.php +++ b/src/Component/Console/RsaKeysetGeneratorCommand.php @@ -7,10 +7,12 @@ use InvalidArgumentException; use Jose\Component\Core\JWKSet; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +#[AsCommand(name: 'keyset:generate:rsa', description: 'Generate a key set with RSA keys (JWK format)',)] final class RsaKeysetGeneratorCommand extends GeneratorCommand { protected static $defaultName = 'keyset:generate:rsa'; diff --git a/src/Component/Console/SecretKeyGeneratorCommand.php b/src/Component/Console/SecretKeyGeneratorCommand.php index 3f50630eb..9db7a74a4 100644 --- a/src/Component/Console/SecretKeyGeneratorCommand.php +++ b/src/Component/Console/SecretKeyGeneratorCommand.php @@ -5,14 +5,19 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_bool; -use function is_string; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use function is_bool; +use function is_string; +#[AsCommand( + name: 'key:generate:from_secret', + description: 'Generate an octet key (JWK format) using an existing secret', +)] final class SecretKeyGeneratorCommand extends GeneratorCommand { protected static $defaultName = 'key:generate:from_secret'; diff --git a/src/Component/Console/X509CertificateLoaderCommand.php b/src/Component/Console/X509CertificateLoaderCommand.php index afeaad56e..d26e2d2ff 100644 --- a/src/Component/Console/X509CertificateLoaderCommand.php +++ b/src/Component/Console/X509CertificateLoaderCommand.php @@ -5,12 +5,14 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_string; use Jose\Component\KeyManagement\JWKFactory; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_string; +#[AsCommand(name: 'key:load:x509', description: 'Load a key from a X.509 certificate file.',)] final class X509CertificateLoaderCommand extends GeneratorCommand { protected static $defaultName = 'key:load:x509'; diff --git a/src/Component/Console/X5ULoaderCommand.php b/src/Component/Console/X5ULoaderCommand.php index 2c6897606..2592c5ba2 100644 --- a/src/Component/Console/X5ULoaderCommand.php +++ b/src/Component/Console/X5ULoaderCommand.php @@ -5,12 +5,13 @@ namespace Jose\Component\Console; use InvalidArgumentException; -use function is_string; use Jose\Component\KeyManagement\X5UFactory; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use function is_string; +#[AsCommand(name: 'keyset:load:x5u', description: 'Loads a key set from an url.',)] final class X5ULoaderCommand extends ObjectOutputCommand { protected static $defaultName = 'keyset:load:x5u'; diff --git a/src/Component/Console/composer.json b/src/Component/Console/composer.json index 07811090d..b85aba0d7 100644 --- a/src/Component/Console/composer.json +++ b/src/Component/Console/composer.json @@ -39,7 +39,7 @@ }, "require": { "php": ">=8.1", - "symfony/console": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", "web-token/jwt-key-mgmt": "^3.2" } } diff --git a/src/Component/Core/AlgorithmManager.php b/src/Component/Core/AlgorithmManager.php index 1b353e256..97bb9a7db 100644 --- a/src/Component/Core/AlgorithmManager.php +++ b/src/Component/Core/AlgorithmManager.php @@ -4,8 +4,8 @@ namespace Jose\Component\Core; -use function array_key_exists; use InvalidArgumentException; +use function array_key_exists; class AlgorithmManager { diff --git a/src/Component/Core/JWK.php b/src/Component/Core/JWK.php index 61b01ab0a..9685becf5 100644 --- a/src/Component/Core/JWK.php +++ b/src/Component/Core/JWK.php @@ -4,15 +4,15 @@ namespace Jose\Component\Core; +use InvalidArgumentException; +use JsonSerializable; +use ParagonIE\ConstantTime\Base64UrlSafe; use function array_key_exists; use function in_array; -use InvalidArgumentException; use function is_array; use const JSON_THROW_ON_ERROR; use const JSON_UNESCAPED_SLASHES; use const JSON_UNESCAPED_UNICODE; -use JsonSerializable; -use ParagonIE\ConstantTime\Base64UrlSafe; /** * @see \Jose\Tests\Component\Core\JWKTest diff --git a/src/Component/Core/JWKSet.php b/src/Component/Core/JWKSet.php index b9d3472c7..87e8ca022 100644 --- a/src/Component/Core/JWKSet.php +++ b/src/Component/Core/JWKSet.php @@ -4,18 +4,18 @@ 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; -use function is_array; use IteratorAggregate; -use const JSON_THROW_ON_ERROR; use JsonSerializable; use Traversable; +use function array_key_exists; +use function count; +use function in_array; +use function is_array; +use const COUNT_NORMAL; +use const JSON_THROW_ON_ERROR; class JWKSet implements Countable, IteratorAggregate, JsonSerializable { diff --git a/src/Component/Core/Util/BigInteger.php b/src/Component/Core/Util/BigInteger.php index 43ce62ed4..5bbea7c2a 100644 --- a/src/Component/Core/Util/BigInteger.php +++ b/src/Component/Core/Util/BigInteger.php @@ -5,8 +5,8 @@ namespace Jose\Component\Core\Util; use Brick\Math\BigInteger as BrickBigInteger; -use function chr; use InvalidArgumentException; +use function chr; /** * @internal diff --git a/src/Component/Core/Util/ECKey.php b/src/Component/Core/Util/ECKey.php index 31a0bb748..6cef96876 100644 --- a/src/Component/Core/Util/ECKey.php +++ b/src/Component/Core/Util/ECKey.php @@ -4,15 +4,15 @@ namespace Jose\Component\Core\Util; -use function extension_loaded; use InvalidArgumentException; +use Jose\Component\Core\JWK; +use ParagonIE\ConstantTime\Base64UrlSafe; +use RuntimeException; +use function extension_loaded; use function is_array; use function is_string; -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; /** @@ -203,7 +203,7 @@ private static function p256PrivateKey(JWK $jwk): string if (! is_string($d)) { throw new InvalidArgumentException('Unable to get the private key'); } - $d = unpack('H*', str_pad(Base64UrlSafe::decode($d), 32, "\0", STR_PAD_LEFT)); + $d = unpack('H*', str_pad(Base64UrlSafe::decodeNoPadding($d), 32, "\0", STR_PAD_LEFT)); if (! is_array($d) || ! isset($d[1])) { throw new InvalidArgumentException('Unable to get the private key'); } @@ -229,7 +229,7 @@ private static function p256KPrivateKey(JWK $jwk): string if (! is_string($d)) { throw new InvalidArgumentException('Unable to get the private key'); } - $d = unpack('H*', str_pad(Base64UrlSafe::decode($d), 32, "\0", STR_PAD_LEFT)); + $d = unpack('H*', str_pad(Base64UrlSafe::decodeNoPadding($d), 32, "\0", STR_PAD_LEFT)); if (! is_array($d) || ! isset($d[1])) { throw new InvalidArgumentException('Unable to get the private key'); } @@ -255,7 +255,7 @@ private static function p384PrivateKey(JWK $jwk): string if (! is_string($d)) { throw new InvalidArgumentException('Unable to get the private key'); } - $d = unpack('H*', str_pad(Base64UrlSafe::decode($d), 48, "\0", STR_PAD_LEFT)); + $d = unpack('H*', str_pad(Base64UrlSafe::decodeNoPadding($d), 48, "\0", STR_PAD_LEFT)); if (! is_array($d) || ! isset($d[1])) { throw new InvalidArgumentException('Unable to get the private key'); } @@ -281,7 +281,7 @@ private static function p521PrivateKey(JWK $jwk): string if (! is_string($d)) { throw new InvalidArgumentException('Unable to get the private key'); } - $d = unpack('H*', str_pad(Base64UrlSafe::decode($d), 66, "\0", STR_PAD_LEFT)); + $d = unpack('H*', str_pad(Base64UrlSafe::decodeNoPadding($d), 66, "\0", STR_PAD_LEFT)); if (! is_array($d) || ! isset($d[1])) { throw new InvalidArgumentException('Unable to get the private key'); } @@ -317,9 +317,12 @@ private static function getKey(JWK $jwk): string if (! is_string($y)) { throw new InvalidArgumentException('Unable to get the public key'); } + $binX = ltrim(Base64UrlSafe::decodeNoPadding($x), "\0"); + $binY = ltrim(Base64UrlSafe::decodeNoPadding($y), "\0"); return "\04" - . str_pad(Base64UrlSafe::decode($x), $length, "\0", STR_PAD_LEFT) - . str_pad(Base64UrlSafe::decode($y), $length, "\0", STR_PAD_LEFT); + . str_pad($binX, $length, "\0", STR_PAD_LEFT) + . str_pad($binY, $length, "\0", STR_PAD_LEFT) + ; } } diff --git a/src/Component/Core/Util/JsonConverter.php b/src/Component/Core/Util/JsonConverter.php index a401ebac3..aeecede66 100644 --- a/src/Component/Core/Util/JsonConverter.php +++ b/src/Component/Core/Util/JsonConverter.php @@ -4,11 +4,11 @@ namespace Jose\Component\Core\Util; +use RuntimeException; +use Throwable; use const JSON_THROW_ON_ERROR; use const JSON_UNESCAPED_SLASHES; use const JSON_UNESCAPED_UNICODE; -use RuntimeException; -use Throwable; final class JsonConverter { diff --git a/src/Component/Core/Util/KeyChecker.php b/src/Component/Core/Util/KeyChecker.php index 5bacd6a2c..8e902e650 100644 --- a/src/Component/Core/Util/KeyChecker.php +++ b/src/Component/Core/Util/KeyChecker.php @@ -4,11 +4,11 @@ namespace Jose\Component\Core\Util; -use function in_array; use InvalidArgumentException; +use Jose\Component\Core\JWK; +use function in_array; use function is_array; use function is_string; -use Jose\Component\Core\JWK; /** * @internal diff --git a/src/Component/Core/Util/RSAKey.php b/src/Component/Core/Util/RSAKey.php index 395c64811..7b47d5cc5 100644 --- a/src/Component/Core/Util/RSAKey.php +++ b/src/Component/Core/Util/RSAKey.php @@ -4,10 +4,7 @@ namespace Jose\Component\Core\Util; -use function array_key_exists; -use function count; use InvalidArgumentException; -use function is_array; use Jose\Component\Core\JWK; use ParagonIE\ConstantTime\Base64UrlSafe; use RuntimeException; @@ -19,6 +16,9 @@ use SpomkyLabs\Pki\CryptoTypes\AlgorithmIdentifier\Asymmetric\RSAEncryptionAlgorithmIdentifier; use SpomkyLabs\Pki\CryptoTypes\Asymmetric\RSA\RSAPrivateKey; use SpomkyLabs\Pki\CryptoTypes\Asymmetric\RSA\RSAPublicKey; +use function array_key_exists; +use function count; +use function is_array; /** * @internal @@ -229,12 +229,12 @@ private function populateBigIntegers(): void private function convertBase64StringToBigInteger(string $value): BigInteger { - return BigInteger::createFromBinaryString(Base64UrlSafe::decode($value)); + return BigInteger::createFromBinaryString(Base64UrlSafe::decodeNoPadding($value)); } private function fromBase64ToInteger(string $value): string { - $unpacked = unpack('H*', Base64UrlSafe::decode($value)); + $unpacked = unpack('H*', Base64UrlSafe::decodeNoPadding($value)); 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 7e5cfa509..be8dea790 100644 --- a/src/Component/Core/composer.json +++ b/src/Component/Core/composer.json @@ -41,8 +41,8 @@ "php": ">=8.1", "ext-json": "*", "ext-mbstring": "*", - "brick/math": "^0.9|^0.10|^0.11", - "paragonie/constant_time_encoding": "^2.4", + "brick/math": "^0.9|^0.10|^0.11|^0.12", + "paragonie/constant_time_encoding": "^2.6", "spomky-labs/pki-framework": "^1.0" }, "conflict": { diff --git a/src/Component/Encryption/Compression/CompressionMethodManager.php b/src/Component/Encryption/Compression/CompressionMethodManager.php index a73b7589b..8a51e6a6b 100644 --- a/src/Component/Encryption/Compression/CompressionMethodManager.php +++ b/src/Component/Encryption/Compression/CompressionMethodManager.php @@ -4,8 +4,8 @@ namespace Jose\Component\Encryption\Compression; -use function array_key_exists; use InvalidArgumentException; +use function array_key_exists; class CompressionMethodManager { diff --git a/src/Component/Encryption/Compression/Deflate.php b/src/Component/Encryption/Compression/Deflate.php index 963c9b0fb..3f8796851 100644 --- a/src/Component/Encryption/Compression/Deflate.php +++ b/src/Component/Encryption/Compression/Deflate.php @@ -5,8 +5,8 @@ namespace Jose\Component\Encryption\Compression; use InvalidArgumentException; -use function is_string; use Throwable; +use function is_string; final class Deflate implements CompressionMethod { diff --git a/src/Component/Encryption/JWE.php b/src/Component/Encryption/JWE.php index ef1ced795..52a8665fd 100644 --- a/src/Component/Encryption/JWE.php +++ b/src/Component/Encryption/JWE.php @@ -4,10 +4,10 @@ namespace Jose\Component\Encryption; -use function array_key_exists; -use function count; use InvalidArgumentException; use Jose\Component\Core\JWT; +use function array_key_exists; +use function count; class JWE implements JWT { diff --git a/src/Component/Encryption/JWEBuilder.php b/src/Component/Encryption/JWEBuilder.php index 609cf94b2..2e3e675c9 100644 --- a/src/Component/Encryption/JWEBuilder.php +++ b/src/Component/Encryption/JWEBuilder.php @@ -4,10 +4,7 @@ namespace Jose\Component\Encryption; -use function array_key_exists; -use function count; use InvalidArgumentException; -use function is_string; use Jose\Component\Core\AlgorithmManager; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\JsonConverter; @@ -24,6 +21,9 @@ use LogicException; use ParagonIE\ConstantTime\Base64UrlSafe; use RuntimeException; +use function array_key_exists; +use function count; +use function is_string; class JWEBuilder { @@ -315,9 +315,6 @@ private function encryptJWE(string $cek, string $encodedSharedProtectedHeader): return [$ciphertext, $iv, $tag]; } - /** - * @return string - */ private function preparePayload(): ?string { $prepared = $this->payload; @@ -437,11 +434,11 @@ private function determineCEK(array &$additionalHeader): string } switch ($this->keyManagementMode) { - case KeyEncryption::MODE_ENCRYPT: - case KeyEncryption::MODE_WRAP: + case KeyEncryption::MODE_ENCRYPT : + case KeyEncryption::MODE_WRAP : return $this->createCEK($this->contentEncryptionAlgorithm->getCEKSize()); - case KeyEncryption::MODE_AGREEMENT: + case KeyEncryption::MODE_AGREEMENT : if (count($this->recipients) !== 1) { throw new LogicException( 'Unable to encrypt for multiple recipients using key agreement algorithms.' @@ -468,7 +465,7 @@ private function determineCEK(array &$additionalHeader): string $additionalHeader ); - case KeyEncryption::MODE_DIRECT: + case KeyEncryption::MODE_DIRECT : if (count($this->recipients) !== 1) { throw new LogicException( 'Unable to encrypt for multiple recipients using key agreement algorithms.' @@ -484,9 +481,9 @@ private function determineCEK(array &$additionalHeader): string throw new RuntimeException('Invalid key.'); } - return Base64UrlSafe::decode($k); + return Base64UrlSafe::decodeNoPadding($k); - default: + default : throw new InvalidArgumentException(sprintf( 'Unsupported key management mode "%s".', $this->keyManagementMode diff --git a/src/Component/Encryption/JWEDecrypter.php b/src/Component/Encryption/JWEDecrypter.php index 8ba11c23d..5dd5e4b7f 100644 --- a/src/Component/Encryption/JWEDecrypter.php +++ b/src/Component/Encryption/JWEDecrypter.php @@ -4,9 +4,7 @@ namespace Jose\Component\Encryption; -use function array_key_exists; use InvalidArgumentException; -use function is_string; use Jose\Component\Core\Algorithm; use Jose\Component\Core\AlgorithmManager; use Jose\Component\Core\JWK; @@ -21,6 +19,8 @@ use Jose\Component\Encryption\Algorithm\KeyEncryptionAlgorithm; use Jose\Component\Encryption\Compression\CompressionMethodManager; use Throwable; +use function array_key_exists; +use function is_string; class JWEDecrypter { diff --git a/src/Component/Encryption/JWELoader.php b/src/Component/Encryption/JWELoader.php index 9a6647fb7..c3b261581 100644 --- a/src/Component/Encryption/JWELoader.php +++ b/src/Component/Encryption/JWELoader.php @@ -11,6 +11,9 @@ use RuntimeException; use Throwable; +/** + * @see \Jose\Tests\Component\Encryption\JWELoaderTest + */ class JWELoader { public function __construct( diff --git a/src/Component/Encryption/Recipient.php b/src/Component/Encryption/Recipient.php index 6e06b7279..37502e130 100644 --- a/src/Component/Encryption/Recipient.php +++ b/src/Component/Encryption/Recipient.php @@ -4,8 +4,8 @@ namespace Jose\Component\Encryption; -use function array_key_exists; use InvalidArgumentException; +use function array_key_exists; /** * @internal diff --git a/src/Component/Encryption/Serializer/CompactSerializer.php b/src/Component/Encryption/Serializer/CompactSerializer.php index 9e1bf9833..ba015e8a1 100644 --- a/src/Component/Encryption/Serializer/CompactSerializer.php +++ b/src/Component/Encryption/Serializer/CompactSerializer.php @@ -4,15 +4,15 @@ namespace Jose\Component\Encryption\Serializer; -use function count; use InvalidArgumentException; -use function is_array; use Jose\Component\Core\Util\JsonConverter; use Jose\Component\Encryption\JWE; use Jose\Component\Encryption\Recipient; use LogicException; use ParagonIE\ConstantTime\Base64UrlSafe; use Throwable; +use function count; +use function is_array; final class CompactSerializer implements JWESerializer { @@ -58,14 +58,16 @@ public function unserialize(string $input): JWE try { $encodedSharedProtectedHeader = $parts[0]; - $sharedProtectedHeader = JsonConverter::decode(Base64UrlSafe::decode($encodedSharedProtectedHeader)); + $sharedProtectedHeader = JsonConverter::decode( + Base64UrlSafe::decodeNoPadding($encodedSharedProtectedHeader) + ); if (! is_array($sharedProtectedHeader)) { throw new InvalidArgumentException('Unsupported input.'); } - $encryptedKey = $parts[1] === '' ? null : Base64UrlSafe::decode($parts[1]); - $iv = Base64UrlSafe::decode($parts[2]); - $ciphertext = Base64UrlSafe::decode($parts[3]); - $tag = Base64UrlSafe::decode($parts[4]); + $encryptedKey = $parts[1] === '' ? null : Base64UrlSafe::decodeNoPadding($parts[1]); + $iv = Base64UrlSafe::decodeNoPadding($parts[2]); + $ciphertext = Base64UrlSafe::decodeNoPadding($parts[3]); + $tag = Base64UrlSafe::decodeNoPadding($parts[4]); return new JWE( $ciphertext, diff --git a/src/Component/Encryption/Serializer/JSONFlattenedSerializer.php b/src/Component/Encryption/Serializer/JSONFlattenedSerializer.php index 353692acb..6ecf28e3e 100644 --- a/src/Component/Encryption/Serializer/JSONFlattenedSerializer.php +++ b/src/Component/Encryption/Serializer/JSONFlattenedSerializer.php @@ -4,14 +4,14 @@ namespace Jose\Component\Encryption\Serializer; -use function array_key_exists; -use function count; use InvalidArgumentException; -use function is_array; use Jose\Component\Core\Util\JsonConverter; use Jose\Component\Encryption\JWE; use Jose\Component\Encryption\Recipient; use ParagonIE\ConstantTime\Base64UrlSafe; +use function array_key_exists; +use function count; +use function is_array; final class JSONFlattenedSerializer implements JWESerializer { @@ -65,12 +65,14 @@ public function unserialize(string $input): JWE } $this->checkData($data); - $ciphertext = Base64UrlSafe::decode($data['ciphertext']); - $iv = Base64UrlSafe::decode($data['iv']); - $tag = Base64UrlSafe::decode($data['tag']); - $aad = array_key_exists('aad', $data) ? Base64UrlSafe::decode($data['aad']) : null; + $ciphertext = Base64UrlSafe::decodeNoPadding($data['ciphertext']); + $iv = Base64UrlSafe::decodeNoPadding($data['iv']); + $tag = Base64UrlSafe::decodeNoPadding($data['tag']); + $aad = array_key_exists('aad', $data) ? Base64UrlSafe::decodeNoPadding($data['aad']) : null; [$encodedSharedProtectedHeader, $sharedProtectedHeader, $sharedHeader] = $this->processHeaders($data); - $encryptedKey = array_key_exists('encrypted_key', $data) ? Base64UrlSafe::decode($data['encrypted_key']) : null; + $encryptedKey = array_key_exists('encrypted_key', $data) ? Base64UrlSafe::decodeNoPadding( + $data['encrypted_key'] + ) : null; $header = array_key_exists('header', $data) ? $data['header'] : []; return new JWE( @@ -96,7 +98,7 @@ private function processHeaders(array $data): array { $encodedSharedProtectedHeader = array_key_exists('protected', $data) ? $data['protected'] : null; $sharedProtectedHeader = $encodedSharedProtectedHeader ? JsonConverter::decode( - Base64UrlSafe::decode($encodedSharedProtectedHeader) + Base64UrlSafe::decodeNoPadding($encodedSharedProtectedHeader) ) : []; $sharedHeader = $data['unprotected'] ?? []; diff --git a/src/Component/Encryption/Serializer/JSONGeneralSerializer.php b/src/Component/Encryption/Serializer/JSONGeneralSerializer.php index 0449a72c2..96f23dc0a 100644 --- a/src/Component/Encryption/Serializer/JSONGeneralSerializer.php +++ b/src/Component/Encryption/Serializer/JSONGeneralSerializer.php @@ -4,15 +4,15 @@ namespace Jose\Component\Encryption\Serializer; -use function array_key_exists; -use function count; use InvalidArgumentException; -use function is_array; use Jose\Component\Core\Util\JsonConverter; use Jose\Component\Encryption\JWE; use Jose\Component\Encryption\Recipient; use LogicException; use ParagonIE\ConstantTime\Base64UrlSafe; +use function array_key_exists; +use function count; +use function is_array; final class JSONGeneralSerializer implements JWESerializer { @@ -71,10 +71,10 @@ public function unserialize(string $input): JWE } $this->checkData($data); - $ciphertext = Base64UrlSafe::decode($data['ciphertext']); - $iv = Base64UrlSafe::decode($data['iv']); - $tag = Base64UrlSafe::decode($data['tag']); - $aad = array_key_exists('aad', $data) ? Base64UrlSafe::decode($data['aad']) : null; + $ciphertext = Base64UrlSafe::decodeNoPadding($data['ciphertext']); + $iv = Base64UrlSafe::decodeNoPadding($data['iv']); + $tag = Base64UrlSafe::decodeNoPadding($data['tag']); + $aad = array_key_exists('aad', $data) ? Base64UrlSafe::decodeNoPadding($data['aad']) : null; [$encodedSharedProtectedHeader, $sharedProtectedHeader, $sharedHeader] = $this->processHeaders($data); $recipients = []; foreach ($data['recipients'] as $recipient) { @@ -103,7 +103,7 @@ private function checkData(?array $data): void private function processRecipient(array $recipient): array { - $encryptedKey = array_key_exists('encrypted_key', $recipient) ? Base64UrlSafe::decode( + $encryptedKey = array_key_exists('encrypted_key', $recipient) ? Base64UrlSafe::decodeNoPadding( $recipient['encrypted_key'] ) : null; $header = array_key_exists('header', $recipient) ? $recipient['header'] : []; @@ -115,7 +115,7 @@ private function processHeaders(array $data): array { $encodedSharedProtectedHeader = array_key_exists('protected', $data) ? $data['protected'] : null; $sharedProtectedHeader = $encodedSharedProtectedHeader ? JsonConverter::decode( - Base64UrlSafe::decode($encodedSharedProtectedHeader) + Base64UrlSafe::decodeNoPadding($encodedSharedProtectedHeader) ) : []; $sharedHeader = array_key_exists('unprotected', $data) ? $data['unprotected'] : []; diff --git a/src/Component/KeyManagement/Analyzer/ESKeyAnalyzer.php b/src/Component/KeyManagement/Analyzer/ESKeyAnalyzer.php index 4044a093d..13d1275b9 100644 --- a/src/Component/KeyManagement/Analyzer/ESKeyAnalyzer.php +++ b/src/Component/KeyManagement/Analyzer/ESKeyAnalyzer.php @@ -5,12 +5,12 @@ namespace Jose\Component\KeyManagement\Analyzer; use Brick\Math\BigInteger; -use function is_string; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\Ecc\Curve; use Jose\Component\Core\Util\Ecc\NistCurve; use ParagonIE\ConstantTime\Base64UrlSafe; use RuntimeException; +use function is_string; abstract class ESKeyAnalyzer implements KeyAnalyzer { @@ -40,7 +40,7 @@ public function analyze(JWK $jwk, MessageBag $bag): void return; } - $x = Base64UrlSafe::decode($x); + $x = Base64UrlSafe::decodeNoPadding($x); $xLength = 8 * mb_strlen($x, '8bit'); $y = $jwk->get('y'); if (! is_string($y)) { @@ -48,7 +48,7 @@ public function analyze(JWK $jwk, MessageBag $bag): void return; } - $y = Base64UrlSafe::decode($y); + $y = Base64UrlSafe::decodeNoPadding($y); $yLength = 8 * mb_strlen($y, '8bit'); if ($yLength !== $xLength || $yLength !== $this->getKeySize()) { $bag->add( diff --git a/src/Component/KeyManagement/Analyzer/HSKeyAnalyzer.php b/src/Component/KeyManagement/Analyzer/HSKeyAnalyzer.php index 1116fc15f..0e283a5a0 100644 --- a/src/Component/KeyManagement/Analyzer/HSKeyAnalyzer.php +++ b/src/Component/KeyManagement/Analyzer/HSKeyAnalyzer.php @@ -4,9 +4,9 @@ namespace Jose\Component\KeyManagement\Analyzer; -use function is_string; use Jose\Component\Core\JWK; use ParagonIE\ConstantTime\Base64UrlSafe; +use function is_string; abstract class HSKeyAnalyzer implements KeyAnalyzer { @@ -24,7 +24,7 @@ public function analyze(JWK $jwk, MessageBag $bag): void return; } - $k = Base64UrlSafe::decode($k); + $k = Base64UrlSafe::decodeNoPadding($k); $kLength = 8 * mb_strlen($k, '8bit'); if ($kLength < $this->getMinimumKeySize()) { $bag->add( diff --git a/src/Component/KeyManagement/Analyzer/MessageBag.php b/src/Component/KeyManagement/Analyzer/MessageBag.php index 3a5b8c86f..453fcd285 100644 --- a/src/Component/KeyManagement/Analyzer/MessageBag.php +++ b/src/Component/KeyManagement/Analyzer/MessageBag.php @@ -5,11 +5,11 @@ namespace Jose\Component\KeyManagement\Analyzer; use ArrayIterator; -use function count; use Countable; use IteratorAggregate; use JsonSerializable; use Traversable; +use function count; class MessageBag implements JsonSerializable, IteratorAggregate, Countable { @@ -36,25 +36,16 @@ public function all(): array return $this->messages; } - /** - * {@inheritdoc} - */ public function jsonSerialize(): array { return array_values($this->messages); } - /** - * {@inheritdoc} - */ public function count(): int { return count($this->messages); } - /** - * {@inheritdoc} - */ public function getIterator(): Traversable { return new ArrayIterator($this->messages); diff --git a/src/Component/KeyManagement/Analyzer/OctAnalyzer.php b/src/Component/KeyManagement/Analyzer/OctAnalyzer.php index 9f866341e..240517933 100644 --- a/src/Component/KeyManagement/Analyzer/OctAnalyzer.php +++ b/src/Component/KeyManagement/Analyzer/OctAnalyzer.php @@ -4,9 +4,9 @@ namespace Jose\Component\KeyManagement\Analyzer; -use function is_string; use Jose\Component\Core\JWK; use ParagonIE\ConstantTime\Base64UrlSafe; +use function is_string; final class OctAnalyzer implements KeyAnalyzer { @@ -21,7 +21,7 @@ public function analyze(JWK $jwk, MessageBag $bag): void return; } - $k = Base64UrlSafe::decode($k); + $k = Base64UrlSafe::decodeNoPadding($k); $kLength = 8 * mb_strlen($k, '8bit'); if ($kLength < 128) { $bag->add(Message::high('The key length is less than 128 bits.')); diff --git a/src/Component/KeyManagement/Analyzer/RsaAnalyzer.php b/src/Component/KeyManagement/Analyzer/RsaAnalyzer.php index 34c3a3969..43f0b1f58 100644 --- a/src/Component/KeyManagement/Analyzer/RsaAnalyzer.php +++ b/src/Component/KeyManagement/Analyzer/RsaAnalyzer.php @@ -5,10 +5,10 @@ namespace Jose\Component\KeyManagement\Analyzer; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWK; use ParagonIE\ConstantTime\Base64UrlSafe; +use function is_array; +use function is_string; final class RsaAnalyzer implements KeyAnalyzer { @@ -30,7 +30,7 @@ private function checkExponent(JWK $jwk, MessageBag $bag): void return; } - $exponent = unpack('l', str_pad(Base64UrlSafe::decode($e), 4, "\0")); + $exponent = unpack('l', str_pad(Base64UrlSafe::decodeNoPadding($e), 4, "\0")); if (! is_array($exponent) || ! isset($exponent[1])) { throw new InvalidArgumentException('Unable to get the private key'); } @@ -47,7 +47,7 @@ private function checkModulus(JWK $jwk, MessageBag $bag): void return; } - $n = 8 * mb_strlen(Base64UrlSafe::decode($n), '8bit'); + $n = 8 * mb_strlen(Base64UrlSafe::decodeNoPadding($n), '8bit'); if ($n < 2048) { $bag->add(Message::high('The key length is less than 2048 bits.')); } diff --git a/src/Component/KeyManagement/Analyzer/UsageAnalyzer.php b/src/Component/KeyManagement/Analyzer/UsageAnalyzer.php index 323d93b0c..84678873d 100644 --- a/src/Component/KeyManagement/Analyzer/UsageAnalyzer.php +++ b/src/Component/KeyManagement/Analyzer/UsageAnalyzer.php @@ -4,8 +4,8 @@ namespace Jose\Component\KeyManagement\Analyzer; -use function in_array; use Jose\Component\Core\JWK; +use function in_array; final class UsageAnalyzer implements KeyAnalyzer { diff --git a/src/Component/KeyManagement/Analyzer/ZxcvbnKeyAnalyzer.php b/src/Component/KeyManagement/Analyzer/ZxcvbnKeyAnalyzer.php index fbdfa9b13..2f5ccb9ab 100644 --- a/src/Component/KeyManagement/Analyzer/ZxcvbnKeyAnalyzer.php +++ b/src/Component/KeyManagement/Analyzer/ZxcvbnKeyAnalyzer.php @@ -4,11 +4,11 @@ namespace Jose\Component\KeyManagement\Analyzer; -use function is_string; use Jose\Component\Core\JWK; use ParagonIE\ConstantTime\Base64UrlSafe; use Throwable; use ZxcvbnPhp\Zxcvbn; +use function is_string; final class ZxcvbnKeyAnalyzer implements KeyAnalyzer { @@ -23,7 +23,7 @@ public function analyze(JWK $jwk, MessageBag $bag): void return; } - $k = Base64UrlSafe::decode($k); + $k = Base64UrlSafe::decodeNoPadding($k); if (! class_exists(Zxcvbn::class)) { return; } diff --git a/src/Component/KeyManagement/JKUFactory.php b/src/Component/KeyManagement/JKUFactory.php index 28f7564e9..745232045 100644 --- a/src/Component/KeyManagement/JKUFactory.php +++ b/src/Component/KeyManagement/JKUFactory.php @@ -4,10 +4,10 @@ namespace Jose\Component\KeyManagement; -use function is_array; use Jose\Component\Core\JWKSet; use Jose\Component\Core\Util\JsonConverter; use RuntimeException; +use function is_array; class JKUFactory extends UrlKeySetFactory { diff --git a/src/Component/KeyManagement/JWKFactory.php b/src/Component/KeyManagement/JWKFactory.php index fe3108103..284ecdd76 100644 --- a/src/Component/KeyManagement/JWKFactory.php +++ b/src/Component/KeyManagement/JWKFactory.php @@ -4,22 +4,22 @@ namespace Jose\Component\KeyManagement; -use function array_key_exists; -use function extension_loaded; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWK; use Jose\Component\Core\JWKSet; use Jose\Component\Core\Util\ECKey; use Jose\Component\KeyManagement\KeyConverter\KeyConverter; use Jose\Component\KeyManagement\KeyConverter\RSAKey; -use const JSON_THROW_ON_ERROR; -use const OPENSSL_KEYTYPE_RSA; use OpenSSLCertificate; use ParagonIE\ConstantTime\Base64UrlSafe; use RuntimeException; use Throwable; +use function array_key_exists; +use function extension_loaded; +use function is_array; +use function is_string; +use const JSON_THROW_ON_ERROR; +use const OPENSSL_KEYTYPE_RSA; /** * @see \Jose\Tests\Component\KeyManagement\JWKFactoryTest diff --git a/src/Component/KeyManagement/KeyConverter/ECKey.php b/src/Component/KeyManagement/KeyConverter/ECKey.php index cac0832c9..8ee1bfad4 100644 --- a/src/Component/KeyManagement/KeyConverter/ECKey.php +++ b/src/Component/KeyManagement/KeyConverter/ECKey.php @@ -4,14 +4,14 @@ namespace Jose\Component\KeyManagement\KeyConverter; -use function array_key_exists; use InvalidArgumentException; -use function is_string; use ParagonIE\ConstantTime\Base64UrlSafe; use SpomkyLabs\Pki\CryptoEncoding\PEM; use SpomkyLabs\Pki\CryptoTypes\Asymmetric\EC\ECPrivateKey; use SpomkyLabs\Pki\CryptoTypes\Asymmetric\EC\ECPublicKey; use Throwable; +use function array_key_exists; +use function is_string; /** * @internal diff --git a/src/Component/KeyManagement/KeyConverter/KeyConverter.php b/src/Component/KeyManagement/KeyConverter/KeyConverter.php index 2de389c3d..9acd843c1 100644 --- a/src/Component/KeyManagement/KeyConverter/KeyConverter.php +++ b/src/Component/KeyManagement/KeyConverter/KeyConverter.php @@ -4,25 +4,25 @@ namespace Jose\Component\KeyManagement\KeyConverter; +use InvalidArgumentException; +use OpenSSLCertificate; +use ParagonIE\ConstantTime\Base64UrlSafe; +use RuntimeException; +use SpomkyLabs\Pki\CryptoEncoding\PEM; +use SpomkyLabs\Pki\CryptoTypes\Asymmetric\PrivateKey; +use SpomkyLabs\Pki\CryptoTypes\Asymmetric\PublicKey; +use Throwable; use function array_key_exists; use function count; use function extension_loaded; use function in_array; -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 SpomkyLabs\Pki\CryptoEncoding\PEM; -use SpomkyLabs\Pki\CryptoTypes\Asymmetric\PrivateKey; -use SpomkyLabs\Pki\CryptoTypes\Asymmetric\PublicKey; -use Throwable; /** * @internal diff --git a/src/Component/KeyManagement/KeyConverter/RSAKey.php b/src/Component/KeyManagement/KeyConverter/RSAKey.php index 3f4fa462a..ff98ea376 100644 --- a/src/Component/KeyManagement/KeyConverter/RSAKey.php +++ b/src/Component/KeyManagement/KeyConverter/RSAKey.php @@ -4,15 +4,15 @@ namespace Jose\Component\KeyManagement\KeyConverter; -use function array_key_exists; -use function extension_loaded; -use function in_array; use InvalidArgumentException; -use function is_array; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\BigInteger; use ParagonIE\ConstantTime\Base64UrlSafe; use RuntimeException; +use function array_key_exists; +use function extension_loaded; +use function in_array; +use function is_array; /** * @internal @@ -135,9 +135,9 @@ private function loadJWK(array $jwk): void private function populateCRT(): void { 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'])); + $d = BigInteger::createFromBinaryString(Base64UrlSafe::decodeNoPadding($this->values['d'])); + $e = BigInteger::createFromBinaryString(Base64UrlSafe::decodeNoPadding($this->values['e'])); + $n = BigInteger::createFromBinaryString(Base64UrlSafe::decodeNoPadding($this->values['n'])); [$p, $q] = $this->findPrimeFactors($d, $e, $n); $this->values['p'] = Base64UrlSafe::encodeUnpadded($p->toBytes()); @@ -152,9 +152,9 @@ private function populateCRT(): void } $one = BigInteger::createFromDecimal(1); - $d = BigInteger::createFromBinaryString(Base64UrlSafe::decode($this->values['d'])); - $p = BigInteger::createFromBinaryString(Base64UrlSafe::decode($this->values['p'])); - $q = BigInteger::createFromBinaryString(Base64UrlSafe::decode($this->values['q'])); + $d = BigInteger::createFromBinaryString(Base64UrlSafe::decodeNoPadding($this->values['d'])); + $p = BigInteger::createFromBinaryString(Base64UrlSafe::decodeNoPadding($this->values['p'])); + $q = BigInteger::createFromBinaryString(Base64UrlSafe::decodeNoPadding($this->values['q'])); $this->values['dp'] = Base64UrlSafe::encodeUnpadded($d->mod($p->subtract($one))->toBytes()); $this->values['dq'] = Base64UrlSafe::encodeUnpadded($d->mod($q->subtract($one))->toBytes()); diff --git a/src/Component/KeyManagement/X5UFactory.php b/src/Component/KeyManagement/X5UFactory.php index 95437aa39..1eaf9bf52 100644 --- a/src/Component/KeyManagement/X5UFactory.php +++ b/src/Component/KeyManagement/X5UFactory.php @@ -4,14 +4,14 @@ namespace Jose\Component\KeyManagement; -use function is_array; -use function is_string; use Jose\Component\Core\JWK; use Jose\Component\Core\JWKSet; use Jose\Component\Core\Util\JsonConverter; use Jose\Component\KeyManagement\KeyConverter\KeyConverter; -use const PHP_EOL; use RuntimeException; +use function is_array; +use function is_string; +use const PHP_EOL; class X5UFactory extends UrlKeySetFactory { diff --git a/src/Component/NestedToken/NestedTokenBuilder.php b/src/Component/NestedToken/NestedTokenBuilder.php index c245497e6..a187d0407 100644 --- a/src/Component/NestedToken/NestedTokenBuilder.php +++ b/src/Component/NestedToken/NestedTokenBuilder.php @@ -4,14 +4,14 @@ namespace Jose\Component\NestedToken; -use function array_key_exists; use InvalidArgumentException; -use function is_array; use Jose\Component\Core\JWK; use Jose\Component\Encryption\JWEBuilder; use Jose\Component\Encryption\Serializer\JWESerializerManager; use Jose\Component\Signature\JWSBuilder; use Jose\Component\Signature\Serializer\JWSSerializerManager; +use function array_key_exists; +use function is_array; class NestedTokenBuilder { diff --git a/src/Component/NestedToken/NestedTokenLoader.php b/src/Component/NestedToken/NestedTokenLoader.php index b6764be83..fbb2c3d45 100644 --- a/src/Component/NestedToken/NestedTokenLoader.php +++ b/src/Component/NestedToken/NestedTokenLoader.php @@ -5,12 +5,12 @@ namespace Jose\Component\NestedToken; use InvalidArgumentException; -use function is_string; use Jose\Component\Core\JWKSet; use Jose\Component\Encryption\JWE; use Jose\Component\Encryption\JWELoader; use Jose\Component\Signature\JWS; use Jose\Component\Signature\JWSLoader; +use function is_string; class NestedTokenLoader { diff --git a/src/Component/Signature/JWS.php b/src/Component/Signature/JWS.php index 7a6f131ff..715ddcc11 100644 --- a/src/Component/Signature/JWS.php +++ b/src/Component/Signature/JWS.php @@ -4,10 +4,13 @@ namespace Jose\Component\Signature; -use function count; use InvalidArgumentException; use Jose\Component\Core\JWT; +use function count; +/** + * @see \Jose\Tests\Component\Signature\JWSTest + */ class JWS implements JWT { /** diff --git a/src/Component/Signature/JWSBuilder.php b/src/Component/Signature/JWSBuilder.php index 5c1c1d789..84201cc6c 100644 --- a/src/Component/Signature/JWSBuilder.php +++ b/src/Component/Signature/JWSBuilder.php @@ -4,11 +4,7 @@ namespace Jose\Component\Signature; -use function array_key_exists; -use function count; -use function in_array; use InvalidArgumentException; -use function is_array; use Jose\Component\Core\Algorithm; use Jose\Component\Core\AlgorithmManager; use Jose\Component\Core\JWK; @@ -19,6 +15,11 @@ use LogicException; use ParagonIE\ConstantTime\Base64UrlSafe; use RuntimeException; +use function array_key_exists; +use function count; +use function in_array; +use function is_array; +use function is_string; class JWSBuilder { @@ -69,9 +70,6 @@ public function create(): self */ public function withPayload(string $payload, bool $isPayloadDetached = false): self { - if (mb_detect_encoding($payload, 'UTF-8', true) === false) { - throw new InvalidArgumentException('The payload must be encoded in UTF-8'); - } $clone = clone $this; $clone->payload = $payload; $clone->isPayloadDetached = $isPayloadDetached; @@ -82,8 +80,8 @@ 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. * - * @param array{alg?: string, string?: mixed} $protectedHeader - * @param array{alg?: string, string?: mixed} $header + * @param array $protectedHeader + * @param array $header */ public function addSignature(JWK $signatureKey, array $protectedHeader, array $header = []): self { @@ -124,6 +122,13 @@ public function build(): JWS $encodedPayload = $this->isPayloadEncoded === false ? $this->payload : Base64UrlSafe::encodeUnpadded( $this->payload ); + + if ($this->isPayloadEncoded === false && $this->isPayloadDetached === false) { + mb_detect_encoding($this->payload, 'UTF-8', true) !== false || throw new InvalidArgumentException( + 'The payload must be encoded in UTF-8' + ); + } + $jws = new JWS($this->payload, $encodedPayload, $this->isPayloadDetached); foreach ($this->signatures as $signature) { /** @var MacAlgorithm|SignatureAlgorithm $algorithm */ @@ -181,26 +186,25 @@ private function checkB64AndCriticalHeader(array $protectedHeader): void } /** - * @param array{alg?: string, string?: mixed} $protectedHeader - * @param array{alg?: string, string?: mixed} $header + * @param array $protectedHeader + * @param array $header * @return MacAlgorithm|SignatureAlgorithm */ private function findSignatureAlgorithm(JWK $key, array $protectedHeader, array $header): Algorithm { $completeHeader = [...$header, ...$protectedHeader]; - if (! array_key_exists('alg', $completeHeader)) { + $alg = $completeHeader['alg'] ?? null; + if (! is_string($alg)) { 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'] - )); + $keyAlg = $key->has('alg') ? $key->get('alg') : null; + if (is_string($keyAlg) && $keyAlg !== $alg) { + throw new InvalidArgumentException(sprintf('The algorithm "%s" is not allowed with this key.', $alg)); } - $algorithm = $this->signatureAlgorithmManager->get($completeHeader['alg']); + $algorithm = $this->signatureAlgorithmManager->get($alg); if (! $algorithm instanceof SignatureAlgorithm && ! $algorithm instanceof MacAlgorithm) { - throw new InvalidArgumentException(sprintf('The algorithm "%s" is not supported.', $completeHeader['alg'])); + throw new InvalidArgumentException(sprintf('The algorithm "%s" is not supported.', $alg)); } return $algorithm; diff --git a/src/Component/Signature/JWSLoader.php b/src/Component/Signature/JWSLoader.php index 35fb2027a..8889d2dad 100644 --- a/src/Component/Signature/JWSLoader.php +++ b/src/Component/Signature/JWSLoader.php @@ -11,6 +11,9 @@ use Jose\Component\Signature\Serializer\JWSSerializerManager; use Throwable; +/** + * @see \Jose\Tests\Component\Signature\JWSLoaderTest + */ class JWSLoader { public function __construct( diff --git a/src/Component/Signature/Serializer/CompactSerializer.php b/src/Component/Signature/Serializer/CompactSerializer.php index f91c3fa36..3a657a147 100644 --- a/src/Component/Signature/Serializer/CompactSerializer.php +++ b/src/Component/Signature/Serializer/CompactSerializer.php @@ -4,14 +4,14 @@ namespace Jose\Component\Signature\Serializer; -use function count; use InvalidArgumentException; -use function is_array; use Jose\Component\Core\Util\JsonConverter; use Jose\Component\Signature\JWS; use LogicException; use ParagonIE\ConstantTime\Base64UrlSafe; use Throwable; +use function count; +use function is_array; final class CompactSerializer extends Serializer { @@ -62,7 +62,7 @@ public function unserialize(string $input): JWS try { $encodedProtectedHeader = $parts[0]; - $protectedHeader = JsonConverter::decode(Base64UrlSafe::decode($parts[0])); + $protectedHeader = JsonConverter::decode(Base64UrlSafe::decodeNoPadding($parts[0])); if (! is_array($protectedHeader)) { throw new InvalidArgumentException('Bad protected header.'); } @@ -72,11 +72,11 @@ public function unserialize(string $input): JWS $encodedPayload = null; } else { $encodedPayload = $parts[1]; - $payload = $this->isPayloadEncoded($protectedHeader) ? Base64UrlSafe::decode( + $payload = $this->isPayloadEncoded($protectedHeader) ? Base64UrlSafe::decodeNoPadding( $encodedPayload ) : $encodedPayload; } - $signature = Base64UrlSafe::decode($parts[2]); + $signature = Base64UrlSafe::decodeNoPadding($parts[2]); $jws = new JWS($payload, $encodedPayload, ! $hasPayload); diff --git a/src/Component/Signature/Serializer/JSONFlattenedSerializer.php b/src/Component/Signature/Serializer/JSONFlattenedSerializer.php index dcdb96391..1a8b4cb00 100644 --- a/src/Component/Signature/Serializer/JSONFlattenedSerializer.php +++ b/src/Component/Signature/Serializer/JSONFlattenedSerializer.php @@ -4,12 +4,12 @@ namespace Jose\Component\Signature\Serializer; -use function count; use InvalidArgumentException; -use function is_array; use Jose\Component\Core\Util\JsonConverter; use Jose\Component\Signature\JWS; use ParagonIE\ConstantTime\Base64UrlSafe; +use function count; +use function is_array; final class JSONFlattenedSerializer extends Serializer { @@ -59,11 +59,11 @@ public function unserialize(string $input): JWS if (! isset($data['signature'])) { throw new InvalidArgumentException('Unsupported input.'); } - $signature = Base64UrlSafe::decode($data['signature']); + $signature = Base64UrlSafe::decodeNoPadding($data['signature']); if (isset($data['protected'])) { $encodedProtectedHeader = $data['protected']; - $protectedHeader = JsonConverter::decode(Base64UrlSafe::decode($data['protected'])); + $protectedHeader = JsonConverter::decode(Base64UrlSafe::decodeNoPadding($data['protected'])); if (! is_array($protectedHeader)) { throw new InvalidArgumentException('Bad protected header.'); } @@ -82,7 +82,7 @@ public function unserialize(string $input): JWS if (isset($data['payload'])) { $encodedPayload = $data['payload']; - $payload = $this->isPayloadEncoded($protectedHeader) ? Base64UrlSafe::decode( + $payload = $this->isPayloadEncoded($protectedHeader) ? Base64UrlSafe::decodeNoPadding( $encodedPayload ) : $encodedPayload; } else { diff --git a/src/Component/Signature/Serializer/JSONGeneralSerializer.php b/src/Component/Signature/Serializer/JSONGeneralSerializer.php index db4d25cd8..1905e645e 100644 --- a/src/Component/Signature/Serializer/JSONGeneralSerializer.php +++ b/src/Component/Signature/Serializer/JSONGeneralSerializer.php @@ -4,15 +4,15 @@ namespace Jose\Component\Signature\Serializer; -use function array_key_exists; -use function count; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\Util\JsonConverter; use Jose\Component\Signature\JWS; use LogicException; use ParagonIE\ConstantTime\Base64UrlSafe; +use function array_key_exists; +use function count; +use function is_array; +use function is_string; final class JSONGeneralSerializer extends Serializer { @@ -81,7 +81,7 @@ public function unserialize(string $input): JWS } [$encodedProtectedHeader, $protectedHeader, $header] = $this->processHeaders($signature); $signatures[] = [ - 'signature' => Base64UrlSafe::decode($signature['signature']), + 'signature' => Base64UrlSafe::decodeNoPadding($signature['signature']), 'protected' => $protectedHeader, 'encoded_protected' => $encodedProtectedHeader, 'header' => $header, @@ -126,7 +126,7 @@ private function processHeaders(array $signature): array { $encodedProtectedHeader = $signature['protected'] ?? null; $protectedHeader = $encodedProtectedHeader === null ? [] : JsonConverter::decode( - Base64UrlSafe::decode($encodedProtectedHeader) + Base64UrlSafe::decodeNoPadding($encodedProtectedHeader) ); $header = array_key_exists('header', $signature) ? $signature['header'] : []; @@ -139,7 +139,7 @@ private function processPayload(?string $rawPayload, ?bool $isPayloadEncoded): ? return null; } - return $isPayloadEncoded === false ? $rawPayload : Base64UrlSafe::decode($rawPayload); + return $isPayloadEncoded === false ? $rawPayload : Base64UrlSafe::decodeNoPadding($rawPayload); } private function checkPayloadEncoding(JWS $jws): void diff --git a/src/Component/Signature/Signature.php b/src/Component/Signature/Signature.php index bbe8548c4..a9975e33b 100644 --- a/src/Component/Signature/Signature.php +++ b/src/Component/Signature/Signature.php @@ -4,8 +4,8 @@ namespace Jose\Component\Signature; -use function array_key_exists; use InvalidArgumentException; +use function array_key_exists; class Signature { diff --git a/src/Ecc/Curve.php b/src/Ecc/Curve.php index 3e6b75cb3..59be935bf 100644 --- a/src/Ecc/Curve.php +++ b/src/Ecc/Curve.php @@ -6,8 +6,8 @@ use Brick\Math\BigInteger; use RuntimeException; -use const STR_PAD_LEFT; use Stringable; +use const STR_PAD_LEFT; /** * @internal diff --git a/src/Ecc/composer.json b/src/Ecc/composer.json index eca633810..d6e36e603 100644 --- a/src/Ecc/composer.json +++ b/src/Ecc/composer.json @@ -39,7 +39,7 @@ }, "require": { "php": ">=8.1", - "brick/math": "^0.9|^0.10|^0.11" + "brick/math": "^0.9|^0.10|^0.11|^0.12" }, "suggest": { "ext-gmp": "GMP or BCMath is highly recommended to improve the library performance", diff --git a/src/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBCHS.php b/src/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBCHS.php index 1e57d97f1..04847c6b4 100644 --- a/src/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBCHS.php +++ b/src/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBCHS.php @@ -5,9 +5,9 @@ namespace Jose\Component\Encryption\Algorithm\ContentEncryption; use Jose\Component\Encryption\Algorithm\ContentEncryptionAlgorithm; -use const OPENSSL_RAW_DATA; use ParagonIE\ConstantTime\Base64UrlSafe; use RuntimeException; +use const OPENSSL_RAW_DATA; abstract class AESCBCHS implements ContentEncryptionAlgorithm { diff --git a/src/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCM.php b/src/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCM.php index 9437f9760..c6becc5a3 100644 --- a/src/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCM.php +++ b/src/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCM.php @@ -5,9 +5,9 @@ namespace Jose\Component\Encryption\Algorithm\ContentEncryption; use Jose\Component\Encryption\Algorithm\ContentEncryptionAlgorithm; -use const OPENSSL_RAW_DATA; use ParagonIE\ConstantTime\Base64UrlSafe; use RuntimeException; +use const OPENSSL_RAW_DATA; abstract class AESGCM implements ContentEncryptionAlgorithm { diff --git a/src/EncryptionAlgorithm/Experimental/ContentEncryption/AESCCM.php b/src/EncryptionAlgorithm/Experimental/ContentEncryption/AESCCM.php index 78e7cdab6..4c96ea07a 100644 --- a/src/EncryptionAlgorithm/Experimental/ContentEncryption/AESCCM.php +++ b/src/EncryptionAlgorithm/Experimental/ContentEncryption/AESCCM.php @@ -5,8 +5,8 @@ namespace Jose\Component\Encryption\Algorithm\ContentEncryption; use Jose\Component\Encryption\Algorithm\ContentEncryptionAlgorithm; -use const OPENSSL_RAW_DATA; use RuntimeException; +use const OPENSSL_RAW_DATA; abstract class AESCCM implements ContentEncryptionAlgorithm { diff --git a/src/EncryptionAlgorithm/Experimental/KeyEncryption/AESCTR.php b/src/EncryptionAlgorithm/Experimental/KeyEncryption/AESCTR.php index 35d062cb3..d3f7d3dc4 100644 --- a/src/EncryptionAlgorithm/Experimental/KeyEncryption/AESCTR.php +++ b/src/EncryptionAlgorithm/Experimental/KeyEncryption/AESCTR.php @@ -4,13 +4,13 @@ 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; +use function in_array; +use function is_string; +use const OPENSSL_RAW_DATA; abstract class AESCTR implements KeyEncryption { @@ -47,7 +47,7 @@ public function decryptKey(JWK $key, string $encrypted_cek, array $header): stri $k = $this->getKey($key); isset($header['iv']) || throw new InvalidArgumentException('The header parameter "iv" is missing.'); is_string($header['iv']) || throw new InvalidArgumentException('The header parameter "iv" is not valid.'); - $iv = Base64UrlSafe::decode($header['iv']); + $iv = Base64UrlSafe::decodeNoPadding($header['iv']); $result = openssl_decrypt($encrypted_cek, $this->getMode(), $k, OPENSSL_RAW_DATA, $iv); if ($result === false) { @@ -77,6 +77,6 @@ private function getKey(JWK $key): string throw new InvalidArgumentException('The key parameter "k" is invalid.'); } - return Base64UrlSafe::decode($k); + return Base64UrlSafe::decodeNoPadding($k); } } diff --git a/src/EncryptionAlgorithm/Experimental/KeyEncryption/Chacha20Poly1305.php b/src/EncryptionAlgorithm/Experimental/KeyEncryption/Chacha20Poly1305.php index f7d5e3db7..38db0fc0f 100644 --- a/src/EncryptionAlgorithm/Experimental/KeyEncryption/Chacha20Poly1305.php +++ b/src/EncryptionAlgorithm/Experimental/KeyEncryption/Chacha20Poly1305.php @@ -4,14 +4,14 @@ namespace Jose\Component\Encryption\Algorithm\KeyEncryption; -use function in_array; use InvalidArgumentException; -use function is_string; use Jose\Component\Core\JWK; use LogicException; -use const OPENSSL_RAW_DATA; use ParagonIE\ConstantTime\Base64UrlSafe; use RuntimeException; +use function in_array; +use function is_string; +use const OPENSSL_RAW_DATA; final class Chacha20Poly1305 implements KeyEncryption { @@ -61,7 +61,7 @@ public function decryptKey(JWK $key, string $encrypted_cek, array $header): stri $k = $this->getKey($key); isset($header['nonce']) || throw new InvalidArgumentException('The header parameter "nonce" is missing.'); is_string($header['nonce']) || throw new InvalidArgumentException('The header parameter "nonce" is not valid.'); - $nonce = Base64UrlSafe::decode($header['nonce']); + $nonce = Base64UrlSafe::decodeNoPadding($header['nonce']); if (mb_strlen($nonce, '8bit') !== 12) { throw new InvalidArgumentException('The header parameter "nonce" is not valid.'); } @@ -92,6 +92,6 @@ private function getKey(JWK $key): string throw new InvalidArgumentException('The key parameter "k" is invalid.'); } - return Base64UrlSafe::decode($k); + return Base64UrlSafe::decodeNoPadding($k); } } diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKW.php b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKW.php index cf17be409..d186b43ed 100644 --- a/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKW.php +++ b/src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKW.php @@ -4,13 +4,13 @@ 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; +use function in_array; +use function is_string; +use const OPENSSL_RAW_DATA; abstract class AESGCMKW implements KeyWrapping { @@ -53,8 +53,8 @@ public function unwrapKey(JWK $key, string $encrypted_cek, array $completeHeader 'Parameter "tag" is missing.' ); - $tag = Base64UrlSafe::decode($completeHeader['tag']); - $iv = Base64UrlSafe::decode($completeHeader['iv']); + $tag = Base64UrlSafe::decodeNoPadding($completeHeader['tag']); + $iv = Base64UrlSafe::decodeNoPadding($completeHeader['iv']); $mode = sprintf('aes-%d-gcm', $this->getKeySize()); $cek = openssl_decrypt($encrypted_cek, $mode, $kek, OPENSSL_RAW_DATA, $iv, $tag, ''); @@ -83,7 +83,7 @@ protected function getKey(JWK $key): string throw new InvalidArgumentException('The key parameter "k" is invalid.'); } - return Base64UrlSafe::decode($k); + return Base64UrlSafe::decodeNoPadding($k); } abstract protected function getKeySize(): int; diff --git a/src/EncryptionAlgorithm/KeyEncryption/AESKW/AESKW.php b/src/EncryptionAlgorithm/KeyEncryption/AESKW/AESKW.php index f72b67627..d19a2c6fc 100644 --- a/src/EncryptionAlgorithm/KeyEncryption/AESKW/AESKW.php +++ b/src/EncryptionAlgorithm/KeyEncryption/AESKW/AESKW.php @@ -5,11 +5,11 @@ namespace Jose\Component\Encryption\Algorithm\KeyEncryption; use AESKW\Wrapper as WrapperInterface; -use function in_array; use InvalidArgumentException; -use function is_string; use Jose\Component\Core\JWK; use ParagonIE\ConstantTime\Base64UrlSafe; +use function in_array; +use function is_string; abstract class AESKW implements KeyWrapping { @@ -61,6 +61,6 @@ private function getKey(JWK $key): string throw new InvalidArgumentException('The key parameter "k" is invalid.'); } - return Base64UrlSafe::decode($k); + return Base64UrlSafe::decodeNoPadding($k); } } diff --git a/src/EncryptionAlgorithm/KeyEncryption/Direct/Dir.php b/src/EncryptionAlgorithm/KeyEncryption/Direct/Dir.php index 6409bb003..d01ec4921 100644 --- a/src/EncryptionAlgorithm/KeyEncryption/Direct/Dir.php +++ b/src/EncryptionAlgorithm/KeyEncryption/Direct/Dir.php @@ -4,11 +4,11 @@ namespace Jose\Component\Encryption\Algorithm\KeyEncryption; -use function in_array; use InvalidArgumentException; -use function is_string; use Jose\Component\Core\JWK; use ParagonIE\ConstantTime\Base64UrlSafe; +use function in_array; +use function is_string; final class Dir implements DirectEncryption { @@ -25,7 +25,7 @@ public function getCEK(JWK $key): string throw new InvalidArgumentException('The key parameter "k" is invalid.'); } - return Base64UrlSafe::decode($k); + return Base64UrlSafe::decodeNoPadding($k); } public function name(): string diff --git a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/AbstractECDH.php b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/AbstractECDH.php index 124644c4a..d88588a30 100644 --- a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/AbstractECDH.php +++ b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/AbstractECDH.php @@ -4,14 +4,8 @@ namespace Jose\Component\Encryption\Algorithm\KeyEncryption; -use function array_key_exists; use Brick\Math\BigInteger; -use function extension_loaded; -use function function_exists; -use function in_array; use InvalidArgumentException; -use function is_array; -use function is_string; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\Ecc\Curve; use Jose\Component\Core\Util\Ecc\EcDH; @@ -22,6 +16,12 @@ use ParagonIE\ConstantTime\Base64UrlSafe; use RuntimeException; use Throwable; +use function array_key_exists; +use function extension_loaded; +use function function_exists; +use function in_array; +use function is_array; +use function is_string; abstract class AbstractECDH implements KeyAgreement { @@ -79,9 +79,9 @@ protected function calculateAgreementKey(JWK $private_key, JWK $public_key): str throw new InvalidArgumentException('Invalid key parameter "crv"'); } switch ($crv) { - case 'P-256': - case 'P-384': - case 'P-521': + case 'P-256' : + case 'P-384' : + case 'P-521' : $curve = $this->getCurve($crv); if (function_exists('openssl_pkey_derive')) { try { @@ -120,7 +120,7 @@ protected function calculateAgreementKey(JWK $private_key, JWK $public_key): str return $this->convertDecToBin(EcDH::computeSharedKey($curve, $pub_key, $priv_key)); - case 'X25519': + case 'X25519' : $x = $public_key->get('x'); if (! is_string($x)) { throw new InvalidArgumentException('Invalid key parameter "x"'); @@ -129,12 +129,12 @@ protected function calculateAgreementKey(JWK $private_key, JWK $public_key): str if (! is_string($d)) { throw new InvalidArgumentException('Invalid key parameter "d"'); } - $sKey = Base64UrlSafe::decode($d); - $recipientPublickey = Base64UrlSafe::decode($x); + $sKey = Base64UrlSafe::decodeNoPadding($d); + $recipientPublickey = Base64UrlSafe::decodeNoPadding($x); return sodium_crypto_scalarmult($sKey, $recipientPublickey); - default: + default : throw new InvalidArgumentException(sprintf('The curve "%s" is not supported', $crv)); } } @@ -156,20 +156,20 @@ protected function getKeysFromPublicKey( throw new InvalidArgumentException('Invalid key parameter "crv"'); } switch ($crv) { - case 'P-256': - case 'P-384': - case 'P-521': + case 'P-256' : + case 'P-384' : + case 'P-521' : $private_key = $senderKey ?? ECKey::createECKey($crv); break; - case 'X25519': + case 'X25519' : $this->checkSodiumExtensionIsAvailable(); $private_key = $senderKey ?? $this->createOKPKey('X25519'); break; - default: + default : throw new InvalidArgumentException(sprintf('The curve "%s" is not supported', $crv)); } $epk = $private_key->toPublic() @@ -228,19 +228,19 @@ private function checkKey(JWK $key, bool $is_private): void throw new InvalidArgumentException('Invalid key parameter "crv"'); } switch ($crv) { - case 'P-256': - case 'P-384': - case 'P-521': + case 'P-256' : + case 'P-384' : + case 'P-521' : if (! $key->has('y')) { throw new InvalidArgumentException('The key parameter "y" is missing.'); } break; - case 'X25519': + case 'X25519' : break; - default: + default : throw new InvalidArgumentException(sprintf('The curve "%s" is not supported', $crv)); } if ($is_private === true && ! $key->has('d')) { @@ -260,7 +260,7 @@ private function getCurve(string $crv): Curve private function convertBase64ToBigInteger(string $value): BigInteger { - $data = unpack('H*', Base64UrlSafe::decode($value)); + $data = unpack('H*', Base64UrlSafe::decodeNoPadding($value)); if (! is_array($data) || ! isset($data[1]) || ! is_string($data[1])) { throw new InvalidArgumentException('Unable to convert base64 to integer'); } @@ -295,14 +295,14 @@ private function createOKPKey(string $curve): JWK $this->checkSodiumExtensionIsAvailable(); switch ($curve) { - case 'X25519': + case 'X25519' : $keyPair = sodium_crypto_box_keypair(); $d = sodium_crypto_box_secretkey($keyPair); $x = sodium_crypto_box_publickey($keyPair); break; - case 'Ed25519': + case 'Ed25519' : $keyPair = sodium_crypto_sign_keypair(); $secret = sodium_crypto_sign_secretkey($keyPair); $secretLength = mb_strlen($secret, '8bit'); @@ -311,7 +311,7 @@ private function createOKPKey(string $curve): JWK break; - default: + default : throw new InvalidArgumentException(sprintf('Unsupported "%s" curve', $curve)); } diff --git a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/Util/ConcatKDF.php b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/Util/ConcatKDF.php index b7e8eba35..f753b6cc3 100644 --- a/src/EncryptionAlgorithm/KeyEncryption/ECDHES/Util/ConcatKDF.php +++ b/src/EncryptionAlgorithm/KeyEncryption/ECDHES/Util/ConcatKDF.php @@ -31,8 +31,8 @@ public static function generate( string $apu = '', string $apv = '' ): string { - $apu = ! self::isEmpty($apu) ? Base64UrlSafe::decode($apu) : ''; - $apv = ! self::isEmpty($apv) ? Base64UrlSafe::decode($apv) : ''; + $apu = ! self::isEmpty($apu) ? Base64UrlSafe::decodeNoPadding($apu) : ''; + $apv = ! self::isEmpty($apv) ? Base64UrlSafe::decodeNoPadding($apv) : ''; $encryption_segments = [ self::toInt32Bits(1), // Round number 1 $Z, // Z (shared secret) diff --git a/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2AESKW.php b/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2AESKW.php index 1891bbb01..92190ec6c 100644 --- a/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2AESKW.php +++ b/src/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2AESKW.php @@ -7,12 +7,12 @@ use AESKW\A128KW; use AESKW\A192KW; use AESKW\A256KW; -use function in_array; use InvalidArgumentException; -use function is_int; -use function is_string; use Jose\Component\Core\JWK; use ParagonIE\ConstantTime\Base64UrlSafe; +use function in_array; +use function is_int; +use function is_string; abstract class PBES2AESKW implements KeyWrapping { @@ -69,7 +69,7 @@ public function unwrapKey(JWK $key, string $encrypted_cek, array $completeHeader $key_size = $this->getKeySize(); $p2s = $completeHeader['p2s']; is_string($p2s) || throw new InvalidArgumentException('Invalid salt.'); - $salt = $completeHeader['alg'] . "\x00" . Base64UrlSafe::decode($p2s); + $salt = $completeHeader['alg'] . "\x00" . Base64UrlSafe::decodeNoPadding($p2s); $count = $completeHeader['p2c']; is_int($count) || throw new InvalidArgumentException('Invalid counter.'); @@ -96,7 +96,7 @@ protected function getKey(JWK $key): string throw new InvalidArgumentException('The key parameter "k" is invalid.'); } - return Base64UrlSafe::decode($k); + return Base64UrlSafe::decodeNoPadding($k); } /** diff --git a/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA.php b/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA.php index 57c48f436..1d5de916a 100644 --- a/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA.php +++ b/src/EncryptionAlgorithm/KeyEncryption/RSA/RSA.php @@ -4,11 +4,11 @@ namespace Jose\Component\Encryption\Algorithm\KeyEncryption; -use function in_array; use InvalidArgumentException; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\RSAKey; use Jose\Component\Encryption\Algorithm\KeyEncryption\Util\RSACrypt; +use function in_array; abstract class RSA implements KeyEncryption { diff --git a/src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php b/src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php index c4a6bac09..e53f85aa1 100644 --- a/src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php +++ b/src/EncryptionAlgorithm/KeyEncryption/RSA/Util/RSACrypt.php @@ -4,15 +4,15 @@ namespace Jose\Component\Encryption\Algorithm\KeyEncryption\Util; -use function chr; -use function count; use InvalidArgumentException; use Jose\Component\Core\Util\BigInteger; use Jose\Component\Core\Util\Hash; use Jose\Component\Core\Util\RSAKey; use LogicException; -use function ord; use RuntimeException; +use function chr; +use function count; +use function ord; use const STR_PAD_LEFT; /** diff --git a/src/EncryptionAlgorithm/KeyEncryption/RSA/composer.json b/src/EncryptionAlgorithm/KeyEncryption/RSA/composer.json index 3c5b78bf0..15efb1fe4 100644 --- a/src/EncryptionAlgorithm/KeyEncryption/RSA/composer.json +++ b/src/EncryptionAlgorithm/KeyEncryption/RSA/composer.json @@ -39,7 +39,7 @@ }, "require": { "php": ">=8.1", - "brick/math": "^0.9|^0.10|^0.11", + "brick/math": "^0.9|^0.10|^0.11|^0.12", "ext-openssl": "*", "symfony/polyfill-mbstring": "^1.12", "web-token/jwt-encryption": "^3.2" diff --git a/src/SignatureAlgorithm/ECDSA/ECDSA.php b/src/SignatureAlgorithm/ECDSA/ECDSA.php index e40c0a072..9f9c118a1 100644 --- a/src/SignatureAlgorithm/ECDSA/ECDSA.php +++ b/src/SignatureAlgorithm/ECDSA/ECDSA.php @@ -4,14 +4,14 @@ namespace Jose\Component\Signature\Algorithm; -use function defined; -use function in_array; use InvalidArgumentException; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\ECKey; use Jose\Component\Core\Util\ECSignature; use LogicException; use Throwable; +use function defined; +use function in_array; abstract class ECDSA implements SignatureAlgorithm { diff --git a/src/SignatureAlgorithm/EdDSA/EdDSA.php b/src/SignatureAlgorithm/EdDSA/EdDSA.php index dcc57c57e..1c12b6e9c 100644 --- a/src/SignatureAlgorithm/EdDSA/EdDSA.php +++ b/src/SignatureAlgorithm/EdDSA/EdDSA.php @@ -4,13 +4,13 @@ namespace Jose\Component\Signature\Algorithm; -use function extension_loaded; -use function in_array; use InvalidArgumentException; -use function is_string; use Jose\Component\Core\JWK; use ParagonIE\ConstantTime\Base64UrlSafe; use RuntimeException; +use function extension_loaded; +use function in_array; +use function is_string; final class EdDSA implements SignatureAlgorithm { @@ -48,9 +48,9 @@ public function sign(JWK $key, string $input): string throw new InvalidArgumentException('Invalid "x" parameter.'); } /** @var non-empty-string $x */ - $x = Base64UrlSafe::decode($x); + $x = Base64UrlSafe::decodeNoPadding($x); /** @var non-empty-string $d */ - $d = Base64UrlSafe::decode($d); + $d = Base64UrlSafe::decodeNoPadding($d); $secret = $d . $x; return match ($key->get('crv')) { @@ -71,7 +71,7 @@ public function verify(JWK $key, string $input, string $signature): bool } /** @var non-empty-string $public */ - $public = Base64UrlSafe::decode($x); + $public = Base64UrlSafe::decodeNoPadding($x); return match ($key->get('crv')) { 'Ed25519' => sodium_crypto_sign_verify_detached($signature, $input, $public), diff --git a/src/SignatureAlgorithm/Experimental/Blake2b.php b/src/SignatureAlgorithm/Experimental/Blake2b.php index 92e6ddb8c..af2b26e52 100644 --- a/src/SignatureAlgorithm/Experimental/Blake2b.php +++ b/src/SignatureAlgorithm/Experimental/Blake2b.php @@ -4,11 +4,11 @@ namespace Jose\Component\Signature\Algorithm; -use function in_array; use InvalidArgumentException; -use function is_string; use Jose\Component\Core\JWK; use ParagonIE\ConstantTime\Base64UrlSafe; +use function in_array; +use function is_string; /** * @see \Jose\Tests\Component\Signature\Algorithm\Blake2bTest @@ -51,7 +51,7 @@ private function getKey(JWK $key): string if (! is_string($k)) { throw new InvalidArgumentException('The key parameter "k" is invalid.'); } - $key = Base64UrlSafe::decode($k); + $key = Base64UrlSafe::decodeNoPadding($k); if (mb_strlen($key, '8bit') < self::MINIMUM_KEY_LENGTH) { throw new InvalidArgumentException('Key provided is shorter than 256 bits.'); } diff --git a/src/SignatureAlgorithm/HMAC/HMAC.php b/src/SignatureAlgorithm/HMAC/HMAC.php index bd1923787..badda9871 100644 --- a/src/SignatureAlgorithm/HMAC/HMAC.php +++ b/src/SignatureAlgorithm/HMAC/HMAC.php @@ -4,11 +4,11 @@ namespace Jose\Component\Signature\Algorithm; -use function in_array; use InvalidArgumentException; -use function is_string; use Jose\Component\Core\JWK; use ParagonIE\ConstantTime\Base64UrlSafe; +use function in_array; +use function is_string; abstract class HMAC implements MacAlgorithm { @@ -42,7 +42,7 @@ protected function getKey(JWK $key): string throw new InvalidArgumentException('The key parameter "k" is invalid.'); } - return Base64UrlSafe::decode($k); + return Base64UrlSafe::decodeNoPadding($k); } abstract protected function getHashAlgorithm(): string; diff --git a/src/SignatureAlgorithm/None/None.php b/src/SignatureAlgorithm/None/None.php index 41c100b5e..be9e48731 100644 --- a/src/SignatureAlgorithm/None/None.php +++ b/src/SignatureAlgorithm/None/None.php @@ -4,9 +4,9 @@ namespace Jose\Component\Signature\Algorithm; -use function in_array; use InvalidArgumentException; use Jose\Component\Core\JWK; +use function in_array; final class None implements SignatureAlgorithm { diff --git a/src/SignatureAlgorithm/RSA/RSAPKCS1.php b/src/SignatureAlgorithm/RSA/RSAPKCS1.php index 573b1ee1f..4da00b2ac 100644 --- a/src/SignatureAlgorithm/RSA/RSAPKCS1.php +++ b/src/SignatureAlgorithm/RSA/RSAPKCS1.php @@ -4,11 +4,11 @@ namespace Jose\Component\Signature\Algorithm; -use function in_array; use InvalidArgumentException; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\RSAKey; use RuntimeException; +use function in_array; abstract class RSAPKCS1 implements SignatureAlgorithm { diff --git a/src/SignatureAlgorithm/RSA/RSAPSS.php b/src/SignatureAlgorithm/RSA/RSAPSS.php index 19f36abd6..46dafec01 100644 --- a/src/SignatureAlgorithm/RSA/RSAPSS.php +++ b/src/SignatureAlgorithm/RSA/RSAPSS.php @@ -4,11 +4,11 @@ namespace Jose\Component\Signature\Algorithm; -use function in_array; use InvalidArgumentException; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\RSAKey; use Jose\Component\Signature\Algorithm\Util\RSA as JoseRSA; +use function in_array; abstract class RSAPSS implements SignatureAlgorithm { diff --git a/src/SignatureAlgorithm/RSA/Util/RSA.php b/src/SignatureAlgorithm/RSA/Util/RSA.php index 901badcf4..d628ea7c3 100644 --- a/src/SignatureAlgorithm/RSA/Util/RSA.php +++ b/src/SignatureAlgorithm/RSA/Util/RSA.php @@ -4,13 +4,13 @@ namespace Jose\Component\Signature\Algorithm\Util; -use function chr; use InvalidArgumentException; use Jose\Component\Core\Util\BigInteger; use Jose\Component\Core\Util\Hash; use Jose\Component\Core\Util\RSAKey; -use function ord; use RuntimeException; +use function chr; +use function ord; use const STR_PAD_LEFT; /** diff --git a/src/SignatureAlgorithm/RSA/composer.json b/src/SignatureAlgorithm/RSA/composer.json index 2a8f3afc9..4f58c51c3 100644 --- a/src/SignatureAlgorithm/RSA/composer.json +++ b/src/SignatureAlgorithm/RSA/composer.json @@ -39,7 +39,7 @@ }, "require": { "php": ">=8.1", - "brick/math": "^0.9|^0.10|^0.11", + "brick/math": "^0.9|^0.10|^0.11|^0.12", "ext-openssl": "*", "web-token/jwt-signature": "^3.2" }, diff --git a/tests/Bundle/JoseFramework/Functional/Console/ConsoleTest.php b/tests/Bundle/JoseFramework/Functional/Console/ConsoleTest.php index ced3c174a..5f10a4850 100644 --- a/tests/Bundle/JoseFramework/Functional/Console/ConsoleTest.php +++ b/tests/Bundle/JoseFramework/Functional/Console/ConsoleTest.php @@ -49,6 +49,8 @@ public static function allCommandsAreAvailable(): void self::bootKernel(); $application = new Application(self::$kernel); - static::assertEmpty(array_diff($expectedCommands, array_keys($application->all()))); + foreach ($expectedCommands as $expectedCommand) { + static::assertArrayHasKey($expectedCommand, $application->all()); + } } } diff --git a/tests/Bundle/JoseFramework/Functional/Serializer/JWEEncoderTest.php b/tests/Bundle/JoseFramework/Functional/Serializer/JWEEncoderTest.php index 3cc0a16eb..1354f2c9d 100644 --- a/tests/Bundle/JoseFramework/Functional/Serializer/JWEEncoderTest.php +++ b/tests/Bundle/JoseFramework/Functional/Serializer/JWEEncoderTest.php @@ -35,8 +35,8 @@ protected function setUp(): void } } - #[Test] #[DataProvider('jweFormatDataProvider')] + #[Test] public function theJWEEncoderSupportsAllFormatsByDefault(string $format, string $serializerId): void { $container = static::getContainer(); @@ -47,8 +47,8 @@ public function theJWEEncoderSupportsAllFormatsByDefault(string $format, string static::assertTrue($serializer->supportsDecoding($format)); } - #[Test] #[DataProvider('jweFormatDataProvider')] + #[Test] public function aJWECanBeEncodedInAllFormats(string $format, string $serializerId): void { $container = static::getContainer(); @@ -62,8 +62,8 @@ public function aJWECanBeEncodedInAllFormats(string $format, string $serializerI static::assertSame(0, $this->loadJWE($jweString, $jwk)); } - #[Test] #[DataProvider('jweFormatDataProvider')] + #[Test] public function aJWECanBeEncodedWithSpecificRecipient(string $format, string $serializerId): void { $container = static::getContainer(); @@ -88,8 +88,8 @@ public function aJWECanBeEncodedWithSpecificRecipient(string $format, string $se static::assertSame($format === 'jwe_json_general' ? 1 : 0, $this->loadJWE($jweString, $jwk2)); } - #[Test] #[DataProvider('encoderServiceDataProvider')] + #[Test] public function theJWEEncoderThrowsOnNonExistingRecipient(string $serializerId): void { $container = static::getContainer(); @@ -144,8 +144,8 @@ public function theJWEEncoderShouldThrowOnUnsupportedFormatWhenEncoding(): void $serializer->encode($jwe, 'jwe_json_flattened'); } - #[Test] #[DataProvider('jweFormatDataProvider')] + #[Test] public function aJWECanBeDecodedInAllFormats(string $format, string $serializerId): void { $container = static::getContainer(); diff --git a/tests/Bundle/JoseFramework/Functional/Serializer/JWESerializerTest.php b/tests/Bundle/JoseFramework/Functional/Serializer/JWESerializerTest.php index 5a3e5b84f..833a5c973 100644 --- a/tests/Bundle/JoseFramework/Functional/Serializer/JWESerializerTest.php +++ b/tests/Bundle/JoseFramework/Functional/Serializer/JWESerializerTest.php @@ -33,8 +33,8 @@ protected function setUp(): void } } - #[Test] #[DataProvider('jweFormatDataProvider')] + #[Test] public function theJWESerializerSupportsAllFormatsByDefault(string $format, string $serializerId): void { $container = static::getContainer(); @@ -55,8 +55,8 @@ public static function aJWECannotBeNormalized(): void static::assertFalse(method_exists($serializer, 'supportsNormalization')); } - #[Test] #[DataProvider('jweFormatDataProvider')] + #[Test] public function theJWEDenormalizerPassesThrough(string $format, string $serializerId): void { $container = static::getContainer(); @@ -69,12 +69,10 @@ public function theJWEDenormalizerPassesThrough(string $format, string $serializ static::assertSame($jwe, $serializer->denormalize($jwe, JWE::class, $format)); } - public function serializerServiceDataProvider(): array + public function serializerServiceDataProvider(): iterable { - return [ - 'indirect serializer' => ['serializer'], - 'direct serializer' => [JWESerializer::class], - ]; + yield 'indirect serializer' => ['serializer']; + yield 'direct serializer' => [JWESerializer::class]; } public static function jweFormatDataProvider(): iterable diff --git a/tests/Bundle/JoseFramework/Functional/Serializer/JWSEncoderTest.php b/tests/Bundle/JoseFramework/Functional/Serializer/JWSEncoderTest.php index a91282925..f939224ce 100644 --- a/tests/Bundle/JoseFramework/Functional/Serializer/JWSEncoderTest.php +++ b/tests/Bundle/JoseFramework/Functional/Serializer/JWSEncoderTest.php @@ -34,8 +34,8 @@ protected function setUp(): void } } - #[Test] #[DataProvider('jwsFormatDataProvider')] + #[Test] public function theJWSSerializerSupportsAllFormatsByDefault(string $format, string $serializerId): void { $container = static::getContainer(); @@ -46,8 +46,8 @@ public function theJWSSerializerSupportsAllFormatsByDefault(string $format, stri static::assertTrue($serializer->supportsDecoding($format)); } - #[Test] #[DataProvider('jwsFormatDataProvider')] + #[Test] public function aJWSCanBeEncodedInAllFormats(string $format, string $serializerId): void { $container = static::getContainer(); @@ -65,8 +65,8 @@ public function aJWSCanBeEncodedInAllFormats(string $format, string $serializerI static::assertSame($expected[$format], $jwsString); } - #[Test] #[DataProvider('jwsFormatDataProvider')] + #[Test] public function aJWSCanBeEncodedWithSpecificSignature(string $format, string $serializerId): void { $container = static::getContainer(); @@ -139,8 +139,8 @@ public function theJWSSerializerShouldThrowOnUnsupportedFormatWhenEncoding(): vo $serializer->encode($jws, 'jws_json_flattened'); } - #[Test] #[DataProvider('jwsFormatDataProvider')] + #[Test] public function aJWSCanBeDecodedInAllFormats(string $format, string $serializerId): void { $container = static::getContainer(); @@ -170,12 +170,10 @@ public function theJWSSerializerShouldThrowOnUnsupportedFormatWhenDecoding(): vo $serializer->decode($jwsString, 'jws_json_flattened'); } - public function serializerServiceDataProvider(): array + public function serializerServiceDataProvider(): iterable { - return [ - 'indirect serializer' => ['serializer'], - 'direct serializer' => [JWSEncoder::class], - ]; + yield 'indirect serializer' => ['serializer']; + yield 'direct serializer' => [JWSEncoder::class]; } public static function jwsFormatDataProvider(): iterable diff --git a/tests/Bundle/JoseFramework/Functional/Serializer/JWSSerializerTest.php b/tests/Bundle/JoseFramework/Functional/Serializer/JWSSerializerTest.php index febe0bd56..4ef00a410 100644 --- a/tests/Bundle/JoseFramework/Functional/Serializer/JWSSerializerTest.php +++ b/tests/Bundle/JoseFramework/Functional/Serializer/JWSSerializerTest.php @@ -33,8 +33,8 @@ protected function setUp(): void } } - #[Test] #[DataProvider('jwsFormatDataProvider')] + #[Test] public function theJWSSerializerSupportsAllFormatsByDefault(string $format, string $serializerId): void { $container = static::getContainer(); @@ -55,8 +55,8 @@ public static function aJWSCannotBeNormalized(): void static::assertFalse(method_exists($serializer, 'supportsNormalization')); } - #[Test] #[DataProvider('jwsFormatDataProvider')] + #[Test] public function theJWSDenormalizerPassesThrough(string $format, string $serializerId): void { $container = static::getContainer(); @@ -69,12 +69,10 @@ public function theJWSDenormalizerPassesThrough(string $format, string $serializ static::assertSame($jws, $serializer->denormalize($jws, JWS::class, $format)); } - public function serializerServiceDataProvider(): array + public function serializerServiceDataProvider(): iterable { - return [ - 'indirect serializer' => ['serializer'], - 'direct serializer' => [JWSSerializer::class], - ]; + yield 'indirect serializer' => ['serializer']; + yield 'direct serializer' => [JWSSerializer::class]; } public static function jwsFormatDataProvider(): iterable diff --git a/tests/Bundle/JoseFramework/TestBundle/Checker/CustomChecker.php b/tests/Bundle/JoseFramework/TestBundle/Checker/CustomChecker.php index 7c7fb79dc..c38483788 100644 --- a/tests/Bundle/JoseFramework/TestBundle/Checker/CustomChecker.php +++ b/tests/Bundle/JoseFramework/TestBundle/Checker/CustomChecker.php @@ -10,9 +10,6 @@ class CustomChecker implements ClaimChecker, HeaderChecker { - /** - * {@inheritdoc} - */ public function checkClaim($value): void { if ($value === true) { @@ -25,9 +22,6 @@ public function supportedClaim(): string return 'custom'; } - /** - * {@inheritdoc} - */ public function checkHeader($value): void { if ($value === true) { diff --git a/tests/Component/Checker/HeaderCheckerManagerFactoryTest.php b/tests/Component/Checker/HeaderCheckerManagerFactoryTest.php index c246cf034..0fee14a29 100644 --- a/tests/Component/Checker/HeaderCheckerManagerFactoryTest.php +++ b/tests/Component/Checker/HeaderCheckerManagerFactoryTest.php @@ -70,8 +70,8 @@ public function theTokenHasCriticalHeaderNotSatisfied(): void $headerCheckerManager->check($token, 0); } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function theHeaderIsSuccessfullyChecked(): void { $headerCheckerManager = $this->getHeaderCheckerManagerFactory() @@ -125,8 +125,8 @@ public function theCriticalHeaderParameterMustBeAListOfHeaderParameters(): void $headerCheckerManager->check($token, 0); } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function theHeaderContainsUnknownParametersAndIsSuccessfullyChecked(): void { $headerCheckerManager = $this->getHeaderCheckerManagerFactory() diff --git a/tests/Component/Console/KeyConversionCommandTest.php b/tests/Component/Console/KeyConversionCommandTest.php index ad4fde843..01e8eeadd 100644 --- a/tests/Component/Console/KeyConversionCommandTest.php +++ b/tests/Component/Console/KeyConversionCommandTest.php @@ -26,8 +26,8 @@ */ final class KeyConversionCommandTest extends TestCase { - #[Test] #[DoesNotPerformAssertions] + #[Test] public function iCanLoadAKeyFile(): void { $input = new ArrayInput([ @@ -40,8 +40,8 @@ public function iCanLoadAKeyFile(): void JWK::createFromJson($content); } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function iCanLoadAnEncryptedKeyFile(): void { $input = new ArrayInput([ @@ -55,8 +55,8 @@ public function iCanLoadAnEncryptedKeyFile(): void JWK::createFromJson($content); } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function iCanLoadAPKCS12CertificateFile(): never { static::markTestIncomplete('Unable to run this test using the last OpenSSL versions'); @@ -71,8 +71,8 @@ public function iCanLoadAPKCS12CertificateFile(): never JWK::createFromJson($content); } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function iCanLoadAX509CertificateFile(): void { $input = new ArrayInput([ diff --git a/tests/Component/Console/KeyCreationCommandTest.php b/tests/Component/Console/KeyCreationCommandTest.php index 66910e40c..3dc3b4251 100644 --- a/tests/Component/Console/KeyCreationCommandTest.php +++ b/tests/Component/Console/KeyCreationCommandTest.php @@ -61,8 +61,8 @@ public function iCannotCreateAnEllipticCurveKeyWithAnUnsupportedCurve(): void $command->run($input, $output); } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function iCanCreateAnEllipticCurveKeyWithCurveP256(): void { $input = new ArrayInput([ @@ -90,8 +90,8 @@ public function iCannotCreateAnOctetKeyWithoutKeySize(): void $command->run($input, $output); } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function iCanCreateAnOctetKey(): void { $input = new ArrayInput([ @@ -154,8 +154,8 @@ public function iCannotCreateAnOctetKeyPairWithoutKeyCurve(): void $command->run($input, $output); } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function iCanCreateAnOctetKeyPair(): void { $input = new ArrayInput([ @@ -170,8 +170,8 @@ public function iCanCreateAnOctetKeyPair(): void JWK::createFromJson($content); } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function iCanCreateANoneKey(): void { $input = new ArrayInput([ @@ -198,8 +198,8 @@ public function iCannotCreateAnRsaKeyWithoutKeySize(): void $command->run($input, $output); } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function iCanCreateAnRsaKey(): void { $input = new ArrayInput([ diff --git a/tests/Component/Core/JWKSetTest.php b/tests/Component/Core/JWKSetTest.php index 0a7a9cd65..ae280d3ca 100644 --- a/tests/Component/Core/JWKSetTest.php +++ b/tests/Component/Core/JWKSetTest.php @@ -7,9 +7,9 @@ use InvalidArgumentException; use Jose\Component\Core\JWK; use Jose\Component\Core\JWKSet; -use const JSON_THROW_ON_ERROR; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; +use const JSON_THROW_ON_ERROR; /** * @internal @@ -71,15 +71,12 @@ public function iCanSelectAKeyWithAlgorithm(): void $jwk = $jwkset->selectKey('enc', new FooAlgorithm()); static::assertInstanceOf(JWK::class, $jwk); - static::assertSame( - [ - 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8', - 'kty' => 'FOO', - 'alg' => 'foo', - 'use' => 'enc', - ], - $jwk->all() - ); + static::assertSame([ + 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8', + 'kty' => 'FOO', + 'alg' => 'foo', + 'use' => 'enc', + ], $jwk->all()); } #[Test] @@ -91,15 +88,12 @@ public function iCanSelectAKeyWithAlgorithmAndKeyId(): void 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', ]); static::assertInstanceOf(JWK::class, $jwk); - static::assertSame( - [ - 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', - 'kty' => 'FOO', - 'alg' => 'foo', - 'use' => 'sig', - ], - $jwk->all() - ); + static::assertSame([ + 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', + 'kty' => 'FOO', + 'alg' => 'foo', + 'use' => 'sig', + ], $jwk->all()); } #[Test] @@ -111,15 +105,12 @@ public function iCanSelectAKeyWithWithKeyId(): void 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', ]); static::assertInstanceOf(JWK::class, $jwk); - static::assertSame( - [ - 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', - 'kty' => 'FOO', - 'alg' => 'foo', - 'use' => 'sig', - ], - $jwk->all() - ); + static::assertSame([ + 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', + 'kty' => 'FOO', + 'alg' => 'foo', + 'use' => 'sig', + ], $jwk->all()); } #[Test] diff --git a/tests/Component/Core/JWKTest.php b/tests/Component/Core/JWKTest.php index 80d15c49d..49a1f05ef 100644 --- a/tests/Component/Core/JWKTest.php +++ b/tests/Component/Core/JWKTest.php @@ -6,9 +6,10 @@ use InvalidArgumentException; use Jose\Component\Core\JWK; -use const JSON_THROW_ON_ERROR; +use Jose\Component\Core\Util\ECKey; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; +use const JSON_THROW_ON_ERROR; /** * @internal @@ -127,4 +128,25 @@ public function iCanConvertAPrivateKeyIntoPublicKey(): void 'kid' => '9876543210', ]), json_encode($public, JSON_THROW_ON_ERROR)); } + + #[Test] + public static function convertToPEM(): void + { + // Given + $key = '{"kty":"EC","crv":"P-256","x":"GDDdmNtwNvlXN04SEUp20BZJ9im6SQqkP8u4d8G6RAk","y":"AIAxkBwTTqbCcNbqbpk8l_Eh-4KtpgyyHkNJ6K4jnvOv","use":"sig","alg":"ES256","kid":"ayRrlw","key_ops":["verify"]}'; + $jwk = JWK::createFromJson($key); + $expectedPEM = <<<'PEM' +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGDDdmNtwNvlXN04SEUp20BZJ9im6 +SQqkP8u4d8G6RAmAMZAcE06mwnDW6m6ZPJfxIfuCraYMsh5DSeiuI57zrw== +-----END PUBLIC KEY----- + +PEM; + + //When + $pem = ECKey::convertToPEM($jwk); + + //Then + static::assertSame($expectedPEM, $pem); + } } diff --git a/tests/Component/Encryption/CompressionTestCase.php b/tests/Component/Encryption/CompressionTest.php similarity index 96% rename from tests/Component/Encryption/CompressionTestCase.php rename to tests/Component/Encryption/CompressionTest.php index 7645fa184..c5fdcafe6 100644 --- a/tests/Component/Encryption/CompressionTestCase.php +++ b/tests/Component/Encryption/CompressionTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class CompressionTestCase extends EncryptionTestCase +final class CompressionTest extends EncryptionTestCase { #[Test] public function getValidCompressionAlgorithm(): void diff --git a/tests/Component/Encryption/ECDHESWithX25519EncryptionTestCase.php b/tests/Component/Encryption/ECDHESWithX25519EncryptionTest.php similarity index 96% rename from tests/Component/Encryption/ECDHESWithX25519EncryptionTestCase.php rename to tests/Component/Encryption/ECDHESWithX25519EncryptionTest.php index 938807974..a86a02040 100644 --- a/tests/Component/Encryption/ECDHESWithX25519EncryptionTestCase.php +++ b/tests/Component/Encryption/ECDHESWithX25519EncryptionTest.php @@ -12,7 +12,7 @@ * * @internal */ -final class ECDHESWithX25519EncryptionTestCase extends EncryptionTestCase +final class ECDHESWithX25519EncryptionTest extends EncryptionTestCase { /** * @see https://tools.ietf.org/html/rfc7516#appendix-B diff --git a/tests/Component/Encryption/EncrypterTestCase.php b/tests/Component/Encryption/EncrypterTest.php similarity index 99% rename from tests/Component/Encryption/EncrypterTestCase.php rename to tests/Component/Encryption/EncrypterTest.php index 4d02285d8..9173f8ece 100644 --- a/tests/Component/Encryption/EncrypterTestCase.php +++ b/tests/Component/Encryption/EncrypterTest.php @@ -7,14 +7,14 @@ use InvalidArgumentException; use Jose\Component\Core\JWK; use Jose\Component\Core\JWKSet; -use const JSON_THROW_ON_ERROR; use ParagonIE\ConstantTime\Base64UrlSafe; use PHPUnit\Framework\Attributes\Test; +use const JSON_THROW_ON_ERROR; /** * @internal */ -final class EncrypterTestCase extends EncryptionTestCase +final class EncrypterTest extends EncryptionTestCase { #[Test] public function encryptWithJWTInput(): void diff --git a/tests/Component/Encryption/InvalidCurveAttackTestCase.php b/tests/Component/Encryption/InvalidCurveAttackTest.php similarity index 97% rename from tests/Component/Encryption/InvalidCurveAttackTestCase.php rename to tests/Component/Encryption/InvalidCurveAttackTest.php index 7bb6cb3f4..640313487 100644 --- a/tests/Component/Encryption/InvalidCurveAttackTestCase.php +++ b/tests/Component/Encryption/InvalidCurveAttackTest.php @@ -10,7 +10,7 @@ /** * @internal */ -final class InvalidCurveAttackTestCase extends EncryptionTestCase +final class InvalidCurveAttackTest extends EncryptionTestCase { #[Test] public function curveCheckNegativeP256AttackPt1(): void diff --git a/tests/Component/Encryption/JWEFlattenedTestCase.php b/tests/Component/Encryption/JWEFlattenedTest.php similarity index 97% rename from tests/Component/Encryption/JWEFlattenedTestCase.php rename to tests/Component/Encryption/JWEFlattenedTest.php index 8b23d58d5..fd4e21a3e 100644 --- a/tests/Component/Encryption/JWEFlattenedTestCase.php +++ b/tests/Component/Encryption/JWEFlattenedTest.php @@ -11,7 +11,7 @@ /** * @internal */ -final class JWEFlattenedTestCase extends EncryptionTestCase +final class JWEFlattenedTest extends EncryptionTestCase { /** * @see https://tools.ietf.org/html/rfc7516#appendix-A.5 diff --git a/tests/Component/Encryption/JWELoaderTestCase.php b/tests/Component/Encryption/JWELoaderTest.php similarity index 99% rename from tests/Component/Encryption/JWELoaderTestCase.php rename to tests/Component/Encryption/JWELoaderTest.php index c4a98134c..754e25928 100644 --- a/tests/Component/Encryption/JWELoaderTestCase.php +++ b/tests/Component/Encryption/JWELoaderTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class JWELoaderTestCase extends EncryptionTestCase +final class JWELoaderTest extends EncryptionTestCase { private ?JWELoader $jweLoader = null; diff --git a/tests/Component/Encryption/JWESplitTestCase.php b/tests/Component/Encryption/JWESplitTest.php similarity index 98% rename from tests/Component/Encryption/JWESplitTestCase.php rename to tests/Component/Encryption/JWESplitTest.php index 9113aeee7..df9a154b3 100644 --- a/tests/Component/Encryption/JWESplitTestCase.php +++ b/tests/Component/Encryption/JWESplitTest.php @@ -10,7 +10,7 @@ /** * @internal */ -final class JWESplitTestCase extends EncryptionTestCase +final class JWESplitTest extends EncryptionTestCase { #[Test] public function aJweObjectWithMoreThanOneRecipientCanBeSplittedIntoSeveralJweObjects(): void diff --git a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTestCase.php b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTest.php similarity index 98% rename from tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTestCase.php rename to tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTest.php index 30b1b7df9..fae1ff622 100644 --- a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTestCase.php +++ b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionProtectedContentOnlyTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class A128KWAndA128GCMEncryptionProtectedContentOnlyTestCase extends EncryptionTestCase +final class A128KWAndA128GCMEncryptionProtectedContentOnlyTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are diff --git a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionTestCase.php b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionTest.php similarity index 97% rename from tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionTestCase.php rename to tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionTest.php index 2f70d6277..5a42d8e81 100644 --- a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionTestCase.php +++ b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class A128KWAndA128GCMEncryptionTestCase extends EncryptionTestCase +final class A128KWAndA128GCMEncryptionTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are @@ -62,10 +62,7 @@ public function a128KWAndA128GCMEncryption(): void ->unserialize($expected_json); static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0)); - static::assertSame( - $expected_ciphertext, - Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()) - ); + 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( diff --git a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTestCase.php b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest.php similarity index 99% rename from tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTestCase.php rename to tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest.php index 7e9243de4..e0dbc1766 100644 --- a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTestCase.php +++ b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTestCase extends EncryptionTestCase +final class A128KWAndA128GCMEncryptionWithAdditionalAuthenticatedDataTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are diff --git a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTestCase.php b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTest.php similarity index 97% rename from tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTestCase.php rename to tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTest.php index 499a27eb4..5311b9fe9 100644 --- a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTestCase.php +++ b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class A128KWAndA128GCMEncryptionWithCompressionTestCase extends EncryptionTestCase +final class A128KWAndA128GCMEncryptionWithCompressionTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are @@ -63,10 +63,7 @@ public function a128KWAndA128GCMEncryptionWithCompression(): void ->unserialize($expected_json); static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0)); - static::assertSame( - $expected_ciphertext, - Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()) - ); + 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( diff --git a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTestCase.php b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest.php similarity index 99% rename from tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTestCase.php rename to tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest.php index cbc6f2fc4..e62dd5494 100644 --- a/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTestCase.php +++ b/tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTestCase extends EncryptionTestCase +final class A128KWAndA128GCMEncryptionWithSpecificProtectedHeaderValuesTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are diff --git a/tests/Component/Encryption/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTestCase.php b/tests/Component/Encryption/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTest.php similarity index 97% rename from tests/Component/Encryption/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTestCase.php rename to tests/Component/Encryption/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTest.php index d888c31a4..8858445e1 100644 --- a/tests/Component/Encryption/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTestCase.php +++ b/tests/Component/Encryption/RFC7520/A256GCMKWAndA128CBC_HS256EncryptionTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class A256GCMKWAndA128CBC_HS256EncryptionTestCase extends EncryptionTestCase +final class A256GCMKWAndA128CBC_HS256EncryptionTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are @@ -70,10 +70,7 @@ public function a256GCMKWAndA128CBCHS256Encryption(): void ->unserialize($expected_json); static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0)); - static::assertSame( - $expected_ciphertext, - Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()) - ); + 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( diff --git a/tests/Component/Encryption/RFC7520/DirAndA128GCMEncryptionTestCase.php b/tests/Component/Encryption/RFC7520/DirAndA128GCMEncryptionTest.php similarity index 96% rename from tests/Component/Encryption/RFC7520/DirAndA128GCMEncryptionTestCase.php rename to tests/Component/Encryption/RFC7520/DirAndA128GCMEncryptionTest.php index b974b4eb7..9c98d0118 100644 --- a/tests/Component/Encryption/RFC7520/DirAndA128GCMEncryptionTestCase.php +++ b/tests/Component/Encryption/RFC7520/DirAndA128GCMEncryptionTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class DirAndA128GCMEncryptionTestCase extends EncryptionTestCase +final class DirAndA128GCMEncryptionTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are @@ -56,10 +56,7 @@ public function dirAndA128GCMEncryption(): void ->unserialize($expected_json); static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0)); - static::assertSame( - $expected_ciphertext, - Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()) - ); + 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())); diff --git a/tests/Component/Encryption/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTestCase.php b/tests/Component/Encryption/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTest.php similarity index 97% rename from tests/Component/Encryption/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTestCase.php rename to tests/Component/Encryption/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTest.php index 60dff0e23..0ac5faf70 100644 --- a/tests/Component/Encryption/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTestCase.php +++ b/tests/Component/Encryption/RFC7520/ECDH_ES_A128KWAndA128GCMEncryptionTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class ECDH_ES_A128KWAndA128GCMEncryptionTestCase extends EncryptionTestCase +final class ECDH_ES_A128KWAndA128GCMEncryptionTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are @@ -70,10 +70,7 @@ public function eCDHESA128KWAndA128GCMEncryption(): void ->unserialize($expected_json); static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0)); - static::assertSame( - $expected_ciphertext, - Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()) - ); + 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( diff --git a/tests/Component/Encryption/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTestCase.php b/tests/Component/Encryption/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTest.php similarity index 96% rename from tests/Component/Encryption/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTestCase.php rename to tests/Component/Encryption/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTest.php index 51cc7bc46..045db225e 100644 --- a/tests/Component/Encryption/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTestCase.php +++ b/tests/Component/Encryption/RFC7520/ECDH_ES_AndA128CBC_HS256EncryptionTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class ECDH_ES_AndA128CBC_HS256EncryptionTestCase extends EncryptionTestCase +final class ECDH_ES_AndA128CBC_HS256EncryptionTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are @@ -62,10 +62,7 @@ public function eCDHESAndA128CBCHS256Encryption(): void $loaded_json = $this->getJWESerializerManager() ->unserialize($expected_json); - static::assertSame( - $expected_ciphertext, - Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()) - ); + 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())); diff --git a/tests/Component/Encryption/RFC7520/MultipleRecipientEncryptionTestCase.php b/tests/Component/Encryption/RFC7520/MultipleRecipientEncryptionTest.php similarity index 99% rename from tests/Component/Encryption/RFC7520/MultipleRecipientEncryptionTestCase.php rename to tests/Component/Encryption/RFC7520/MultipleRecipientEncryptionTest.php index fad444262..eae257f36 100644 --- a/tests/Component/Encryption/RFC7520/MultipleRecipientEncryptionTestCase.php +++ b/tests/Component/Encryption/RFC7520/MultipleRecipientEncryptionTest.php @@ -15,7 +15,7 @@ * * @internal */ -final class MultipleRecipientEncryptionTestCase extends EncryptionTestCase +final class MultipleRecipientEncryptionTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are diff --git a/tests/Component/Encryption/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTestCase.php b/tests/Component/Encryption/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest.php similarity index 97% rename from tests/Component/Encryption/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTestCase.php rename to tests/Component/Encryption/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest.php index b1f77a394..fe8c16a2b 100644 --- a/tests/Component/Encryption/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTestCase.php +++ b/tests/Component/Encryption/RFC7520/PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest.php @@ -6,16 +6,16 @@ use Jose\Component\Core\JWK; use Jose\Tests\Component\Encryption\EncryptionTestCase; -use const JSON_THROW_ON_ERROR; use ParagonIE\ConstantTime\Base64UrlSafe; use PHPUnit\Framework\Attributes\Test; +use const JSON_THROW_ON_ERROR; /** * @see https://tools.ietf.org/html/rfc7520#section-5.3 * * @internal */ -final class PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTestCase extends EncryptionTestCase +final class PBES2_HS512_A256KWAndA128CBC_HS256EncryptionTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are @@ -85,10 +85,7 @@ public function pBES2HS512A256KWAndA128CBCHS256Encryption(): void ->unserialize($expected_json); static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0)); - static::assertSame( - $expected_ciphertext, - Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()) - ); + 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( diff --git a/tests/Component/Encryption/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTestCase.php b/tests/Component/Encryption/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTest.php similarity index 98% rename from tests/Component/Encryption/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTestCase.php rename to tests/Component/Encryption/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTest.php index 58271c094..8c8796809 100644 --- a/tests/Component/Encryption/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTestCase.php +++ b/tests/Component/Encryption/RFC7520/RSA1_5AndA128CBC_HS256EncryptionTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class RSA1_5AndA128CBC_HS256EncryptionTestCase extends EncryptionTestCase +final class RSA1_5AndA128CBC_HS256EncryptionTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are @@ -68,10 +68,7 @@ public function rSA15AndA128CBCHS256Encryption(): void ->unserialize($expected_json); static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0)); - static::assertSame( - $expected_ciphertext, - Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()) - ); + 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( diff --git a/tests/Component/Encryption/RFC7520/RSA_OAEPAndA256GCMEncryptionTestCase.php b/tests/Component/Encryption/RFC7520/RSA_OAEPAndA256GCMEncryptionTest.php similarity index 98% rename from tests/Component/Encryption/RFC7520/RSA_OAEPAndA256GCMEncryptionTestCase.php rename to tests/Component/Encryption/RFC7520/RSA_OAEPAndA256GCMEncryptionTest.php index 676fdd8fc..1a8491304 100644 --- a/tests/Component/Encryption/RFC7520/RSA_OAEPAndA256GCMEncryptionTestCase.php +++ b/tests/Component/Encryption/RFC7520/RSA_OAEPAndA256GCMEncryptionTest.php @@ -14,7 +14,7 @@ * * @internal */ -final class RSA_OAEPAndA256GCMEncryptionTestCase extends EncryptionTestCase +final class RSA_OAEPAndA256GCMEncryptionTest extends EncryptionTestCase { /** * Please note that we cannot the encryption and get the same result as the example (IV, TAG and other data are @@ -69,10 +69,7 @@ public function rSAOAEPAndA256GCMEncryption(): void ->unserialize($expected_json); static::assertTrue($jweDecrypter->decryptUsingKey($loaded_json, $private_key, 0)); - static::assertSame( - $expected_ciphertext, - Base64UrlSafe::encodeUnpadded($loaded_compact_json->getCiphertext()) - ); + 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( diff --git a/tests/Component/Encryption/RSAEncryptionTestCase.php b/tests/Component/Encryption/RSAEncryptionTest.php similarity index 99% rename from tests/Component/Encryption/RSAEncryptionTestCase.php rename to tests/Component/Encryption/RSAEncryptionTest.php index ae0781481..2448a3013 100644 --- a/tests/Component/Encryption/RSAEncryptionTestCase.php +++ b/tests/Component/Encryption/RSAEncryptionTest.php @@ -10,7 +10,7 @@ /** * @internal */ -final class RSAEncryptionTestCase extends EncryptionTestCase +final class RSAEncryptionTest extends EncryptionTestCase { /** * @see https://tools.ietf.org/html/rfc7516 diff --git a/tests/Component/Encryption/RSAKeyEncryptionTestCase.php b/tests/Component/Encryption/RSAKeyEncryptionTest.php similarity index 99% rename from tests/Component/Encryption/RSAKeyEncryptionTestCase.php rename to tests/Component/Encryption/RSAKeyEncryptionTest.php index ed10d4437..c2006b3ec 100644 --- a/tests/Component/Encryption/RSAKeyEncryptionTestCase.php +++ b/tests/Component/Encryption/RSAKeyEncryptionTest.php @@ -19,7 +19,7 @@ * * @internal */ -final class RSAKeyEncryptionTestCase extends EncryptionTestCase +final class RSAKeyEncryptionTest extends EncryptionTestCase { #[Test] public function invalidKey(): void diff --git a/tests/Component/Encryption/RSAKeyWithoutAllPrimesTestCase.php b/tests/Component/Encryption/RSAKeyWithoutAllPrimesTest.php similarity index 96% rename from tests/Component/Encryption/RSAKeyWithoutAllPrimesTestCase.php rename to tests/Component/Encryption/RSAKeyWithoutAllPrimesTest.php index df9abb849..a7b7fca2e 100644 --- a/tests/Component/Encryption/RSAKeyWithoutAllPrimesTestCase.php +++ b/tests/Component/Encryption/RSAKeyWithoutAllPrimesTest.php @@ -14,10 +14,10 @@ * * @internal */ -final class RSAKeyWithoutAllPrimesTestCase extends EncryptionTestCase +final class RSAKeyWithoutAllPrimesTest extends EncryptionTestCase { - #[Test] #[DataProvider('dataEncryptionAlgorithms')] + #[Test] public function encryptionAlgorithms(string $encryption_algorithm): void { $key = $this->getPrivateKey(); @@ -49,8 +49,8 @@ public function encryptionAlgorithms(string $encryption_algorithm): void static::assertTrue($jweDecrypter->decryptUsingKey($loaded, $key, 0)); } - #[Test] #[DataProvider('dataEncryptionAlgorithms')] + #[Test] public function encryptionAlgorithmsWithMinimalRsaKey(string $encryption_algorithm): void { $key = $this->getMinimalPrivateKey(); @@ -89,9 +89,10 @@ public static function dataEncryptionAlgorithms(): iterable yield ['RSA-OAEP-256']; } - public function dataEncryptionAlgorithmsWithSimpleKey(): array + public function dataEncryptionAlgorithmsWithSimpleKey(): iterable { - return [['RSA-OAEP'], ['RSA-OAEP-256']]; + yield ['RSA-OAEP']; + yield ['RSA-OAEP-256']; } private function getPrivateKey(): JWK diff --git a/tests/Component/KeyManagement/CertificateTest.php b/tests/Component/KeyManagement/CertificateTest.php index b5ec126be..c2eaef8e7 100644 --- a/tests/Component/KeyManagement/CertificateTest.php +++ b/tests/Component/KeyManagement/CertificateTest.php @@ -335,20 +335,17 @@ public function loadX5CParameter(): void 'kid' => '1b94c', ]); - static::assertEqualsCanonicalizing( - [ - 'kty' => 'RSA', - 'use' => 'sig', - 'kid' => '1b94c', - 'n' => 'vrjOfz9Ccdgx5nQudyhdoR17V-IubWMeOZCwX_jj0hgAsz2J_pqYW08PLbK_PdiVGKPrqzmDIsLI7sA25VEnHU1uCLNwBuUiCO11_-7dYbsr4iJmG0Qu2j8DsVyT1azpJC_NG84Ty5KKthuCaPod7iI7w0LK9orSMhBEwwZDCxTWq4aYWAchc8t-emd9qOvWtVMDC2BXksRngh6X5bUYLy6AyHKvj-nUy1wgzjYQDwHMTplCoLtU-o-8SNnZ1tmRoGE9uJkBLdh5gFENabWnU5m1ZqZPdwS-qo-meMvVfJb6jJVWRpl2SUtCnYG2C32qvbWbjZ_jBPD5eunqsIo1vQ', - 'e' => 'AQAB', - 'x5t' => '4pNenEBLv0JpLIdugWxQkOsZcK0', - 'x5t#256' => 'pJm2BBpkB8y7tCqrWM0X37WOmQTO8zQw-VpxVgBb21I', - 'x5c' => [ - 'MIIDQjCCAiqgAwIBAgIGATz/FuLiMA0GCSqGSIb3DQEBBQUAMGIxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDVQQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1wYmVsbDAeFw0xMzAyMjEyMzI5MTVaFw0xODA4MTQyMjI5MTVaMGIxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDVQQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1wYmVsbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL64zn8/QnHYMeZ0LncoXaEde1fiLm1jHjmQsF/449IYALM9if6amFtPDy2yvz3YlRij66s5gyLCyO7ANuVRJx1NbgizcAblIgjtdf/u3WG7K+IiZhtELto/A7Fck9Ws6SQvzRvOE8uSirYbgmj6He4iO8NCyvaK0jIQRMMGQwsU1quGmFgHIXPLfnpnfajr1rVTAwtgV5LEZ4Iel+W1GC8ugMhyr4/p1MtcIM42EA8BzE6ZQqC7VPqPvEjZ2dbZkaBhPbiZAS3YeYBRDWm1p1OZtWamT3cEvqqPpnjL1XyW+oyVVkaZdklLQp2Btgt9qr21m42f4wTw+Xrp6rCKNb0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAh8zGlfSlcI0o3rYDPBB07aXNswb4ECNIKG0CETTUxmXl9KUL+9gGlqCz5iWLOgWsnrcKcY0vXPG9J1r9AqBNTqNgHq2G03X09266X5CpOe1zFo+Owb1zxtp3PehFdfQJ610CDLEaS9V9Rqp17hCyybEpOGVwe8fnk+fbEL2Bo3UPGrpsHzUoaGpDftmWssZkhpBJKVMJyf/RuP2SmmaIzmnw9JiSlYhzo4tpzd5rFXhjRbg4zW9C+2qok+2+qDM1iJ684gPHMIY8aLWrdgQTxkumGmTqgawR+N5MDtdPTEQ0XfIBc2cJEUyMTY5MPvACWpkA6SdS4xSvdXK3IVfOWA==', - ], + static::assertEqualsCanonicalizing([ + 'kty' => 'RSA', + 'use' => 'sig', + 'kid' => '1b94c', + 'n' => 'vrjOfz9Ccdgx5nQudyhdoR17V-IubWMeOZCwX_jj0hgAsz2J_pqYW08PLbK_PdiVGKPrqzmDIsLI7sA25VEnHU1uCLNwBuUiCO11_-7dYbsr4iJmG0Qu2j8DsVyT1azpJC_NG84Ty5KKthuCaPod7iI7w0LK9orSMhBEwwZDCxTWq4aYWAchc8t-emd9qOvWtVMDC2BXksRngh6X5bUYLy6AyHKvj-nUy1wgzjYQDwHMTplCoLtU-o-8SNnZ1tmRoGE9uJkBLdh5gFENabWnU5m1ZqZPdwS-qo-meMvVfJb6jJVWRpl2SUtCnYG2C32qvbWbjZ_jBPD5eunqsIo1vQ', + 'e' => 'AQAB', + 'x5t' => '4pNenEBLv0JpLIdugWxQkOsZcK0', + 'x5t#256' => 'pJm2BBpkB8y7tCqrWM0X37WOmQTO8zQw-VpxVgBb21I', + 'x5c' => [ + 'MIIDQjCCAiqgAwIBAgIGATz/FuLiMA0GCSqGSIb3DQEBBQUAMGIxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDVQQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1wYmVsbDAeFw0xMzAyMjEyMzI5MTVaFw0xODA4MTQyMjI5MTVaMGIxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDVQQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1wYmVsbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL64zn8/QnHYMeZ0LncoXaEde1fiLm1jHjmQsF/449IYALM9if6amFtPDy2yvz3YlRij66s5gyLCyO7ANuVRJx1NbgizcAblIgjtdf/u3WG7K+IiZhtELto/A7Fck9Ws6SQvzRvOE8uSirYbgmj6He4iO8NCyvaK0jIQRMMGQwsU1quGmFgHIXPLfnpnfajr1rVTAwtgV5LEZ4Iel+W1GC8ugMhyr4/p1MtcIM42EA8BzE6ZQqC7VPqPvEjZ2dbZkaBhPbiZAS3YeYBRDWm1p1OZtWamT3cEvqqPpnjL1XyW+oyVVkaZdklLQp2Btgt9qr21m42f4wTw+Xrp6rCKNb0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAh8zGlfSlcI0o3rYDPBB07aXNswb4ECNIKG0CETTUxmXl9KUL+9gGlqCz5iWLOgWsnrcKcY0vXPG9J1r9AqBNTqNgHq2G03X09266X5CpOe1zFo+Owb1zxtp3PehFdfQJ610CDLEaS9V9Rqp17hCyybEpOGVwe8fnk+fbEL2Bo3UPGrpsHzUoaGpDftmWssZkhpBJKVMJyf/RuP2SmmaIzmnw9JiSlYhzo4tpzd5rFXhjRbg4zW9C+2qok+2+qDM1iJ684gPHMIY8aLWrdgQTxkumGmTqgawR+N5MDtdPTEQ0XfIBc2cJEUyMTY5MPvACWpkA6SdS4xSvdXK3IVfOWA==', ], - $certificate->all() - ); + ], $certificate->all()); } } diff --git a/tests/Component/KeyManagement/JWKAnalyzerTest.php b/tests/Component/KeyManagement/JWKAnalyzerTest.php index 7f9ccc6b6..121afac50 100644 --- a/tests/Component/KeyManagement/JWKAnalyzerTest.php +++ b/tests/Component/KeyManagement/JWKAnalyzerTest.php @@ -56,8 +56,8 @@ public function iCanAnalyzeAnRsaKeyAndGetMessages(): void static::assertNotEmpty($messages); } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function theRsaKeyHasALowExponent(): void { $key = JWK::createFromJson( diff --git a/tests/Component/KeyManagement/JWKFactoryTest.php b/tests/Component/KeyManagement/JWKFactoryTest.php index 1d0dafeb7..4f83ab07a 100644 --- a/tests/Component/KeyManagement/JWKFactoryTest.php +++ b/tests/Component/KeyManagement/JWKFactoryTest.php @@ -6,11 +6,11 @@ use Jose\Component\Core\Util\ECKey; use Jose\Component\KeyManagement\JWKFactory; -use const JSON_THROW_ON_ERROR; use ParagonIE\ConstantTime\Base64UrlSafe; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; +use const JSON_THROW_ON_ERROR; /** * @internal @@ -23,20 +23,17 @@ public function iCanLoadAP12CertificateThatContainsARSAKey(): never static::markTestIncomplete('Unable to run this test using the last OpenSSL versions'); $result = JWKFactory::createFromPKCS12CertificateFile(__DIR__ . '/P12/CertRSA.p12', 'cert'); - static::assertSame( - [ - 'kty' => 'RSA', - 'n' => 'acqZqFSLArU71p9yp8ZH1nDfi5g0TLgPCgAYESrfb-DB0_F89LUSSukRRkCjNCuJqp6j6jpe4VmJ2YzGiBV3eoMqORIdUmQ3XlKKX_ONM3oWhZZoFS_2s1RLFl1faXORe4JSJIN9gt_4EpXoKTjX1gftTcFOLrXPgODEwjAYll0', - 'e' => 'AQAB', - 'd' => 'F5wRgtGrXGVZ_2ICUpMbwS3blenX8i85m_-9X0d0KiG84DIKswoeFP3Czyzpv2DgDmXtKv7v4db7vsN-Iyy3RyKmX6y_1yfahMGbLqYl7pFQ2nYooZJI4XRJMDbtfX5l7QqiDDkQrHPcUNlC361WKf8rWlVlIDfwHrBkvp-UPoE', - 'p' => 'gbDt-jRqRZw1Dwg_Ckl_vBRWqCfWfem1YALgpud5FCnPtXoHHcMPayTUb8mjWioN4HIjMIJ29abtvXq3zvhYcQ', - 'q' => '0NLnRW0gajCpa0bA76AbF_MQhxGWH_ZQBfLtEq4NFGWdk_CslovUzJJ4DnW96TfthHgGQEqETtZweQd53kryrQ', - 'dp' => 'KhbWlM3v81lnqtI9S0RhLRPYr8gGB2USlO86I1CZ7d5H55iLuK_2UApq20CwP_HIASBppTOiEcU0ALtT7dqRMQ', - 'dq' => 'WOvmBV9BtVZBXmgDkkZoIxuixxFLDxMw4keeghzRfwUCQ9Pxei3TEMWyD949X0ksgAMoDkps6rFPtYnkcC8UBQ', - 'qi' => 'R-TcgNYrZs8iYmR3pI2UwFhrmJl98vzzSkI4rGTON0vPrnl_46KqzpiW04dBj3yQxhlKyPO8TO0tnA3AYnDc-Q', - ], - $result->all() - ); + static::assertSame([ + 'kty' => 'RSA', + 'n' => 'acqZqFSLArU71p9yp8ZH1nDfi5g0TLgPCgAYESrfb-DB0_F89LUSSukRRkCjNCuJqp6j6jpe4VmJ2YzGiBV3eoMqORIdUmQ3XlKKX_ONM3oWhZZoFS_2s1RLFl1faXORe4JSJIN9gt_4EpXoKTjX1gftTcFOLrXPgODEwjAYll0', + 'e' => 'AQAB', + 'd' => 'F5wRgtGrXGVZ_2ICUpMbwS3blenX8i85m_-9X0d0KiG84DIKswoeFP3Czyzpv2DgDmXtKv7v4db7vsN-Iyy3RyKmX6y_1yfahMGbLqYl7pFQ2nYooZJI4XRJMDbtfX5l7QqiDDkQrHPcUNlC361WKf8rWlVlIDfwHrBkvp-UPoE', + 'p' => 'gbDt-jRqRZw1Dwg_Ckl_vBRWqCfWfem1YALgpud5FCnPtXoHHcMPayTUb8mjWioN4HIjMIJ29abtvXq3zvhYcQ', + 'q' => '0NLnRW0gajCpa0bA76AbF_MQhxGWH_ZQBfLtEq4NFGWdk_CslovUzJJ4DnW96TfthHgGQEqETtZweQd53kryrQ', + 'dp' => 'KhbWlM3v81lnqtI9S0RhLRPYr8gGB2USlO86I1CZ7d5H55iLuK_2UApq20CwP_HIASBppTOiEcU0ALtT7dqRMQ', + 'dq' => 'WOvmBV9BtVZBXmgDkkZoIxuixxFLDxMw4keeghzRfwUCQ9Pxei3TEMWyD949X0ksgAMoDkps6rFPtYnkcC8UBQ', + 'qi' => 'R-TcgNYrZs8iYmR3pI2UwFhrmJl98vzzSkI4rGTON0vPrnl_46KqzpiW04dBj3yQxhlKyPO8TO0tnA3AYnDc-Q', + ], $result->all()); } #[Test] @@ -44,20 +41,17 @@ public function createFromECCertificateFileInDERFormat(): void { $result = JWKFactory::createFromCertificateFile(__DIR__ . '/EC/DER/prime256v1-cert.der'); - static::assertSame( - [ - 'kty' => 'EC', - 'crv' => 'P-256', - 'x' => 'xEsr_55aqgFXdrbRNz1_WSNI8UaSUxCka2kGEN1bXsI', - 'y' => 'SM45Hsr9dnUR6Ox-TpmNv2fbDX4CoVo-3patMUpXANA', - 'x5c' => [ - 'MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sNfgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXhMB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM=', - ], - 'x5t' => 'ZnnaQDssCKJQZLp6zyHssIZOa7o', - 'x5t#256' => 'v7VlokKTGL3anRk8Nl0VcqVC9u5j2Fb5tdlQntUgDT4', + static::assertSame([ + 'kty' => 'EC', + 'crv' => 'P-256', + 'x' => 'xEsr_55aqgFXdrbRNz1_WSNI8UaSUxCka2kGEN1bXsI', + 'y' => 'SM45Hsr9dnUR6Ox-TpmNv2fbDX4CoVo-3patMUpXANA', + 'x5c' => [ + 'MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sNfgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXhMB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM=', ], - $result->all() - ); + 'x5t' => 'ZnnaQDssCKJQZLp6zyHssIZOa7o', + 'x5t#256' => 'v7VlokKTGL3anRk8Nl0VcqVC9u5j2Fb5tdlQntUgDT4', + ], $result->all()); } #[Test] @@ -90,19 +84,16 @@ public function createFromResource(): void $res = openssl_x509_read(file_get_contents(__DIR__ . '/RSA/PEM/1024b-rsa-example-cert.pem')); $jwk = JWKFactory::createFromX509Resource($res); - static::assertSame( - [ - 'kty' => 'RSA', - 'n' => 'xgEGvHk-U_RY0j9l3MP7o-S2a6uf4XaRBhu1ztdCHz8tMG8Kj4_qJmgsSZQD17sRctHGBTUJWp4CLtBwCf0zAGVzySwUkcHSu1_2mZ_w7Nr0TQHKeWr_j8pvXH534DKEvugr21DAHbi4c654eLUL-JW_wJJYqJh7qHM3W3Fh7ys', - 'e' => 'AQAB', - 'x5c' => [ - 'MIICVjCCAb8CAg37MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwGA1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNEREMRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdlYiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIwODIyMDUyNzIzWhcNMTcwODIxMDUyNzIzWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UECAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYBBrx5PlP0WNI/ZdzD+6Pktmurn+F2kQYbtc7XQh8/LTBvCo+P6iZoLEmUA9e7EXLRxgU1CVqeAi7QcAn9MwBlc8ksFJHB0rtf9pmf8Oza9E0Bynlq/4/Kb1x+d+AyhL7oK9tQwB24uHOueHi1C/iVv8CSWKiYe6hzN1txYe8rAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAASPdjigJkXCqKWpnZ/Oc75EUcMi6HztaW8abUMlYXPIgkV2F7YanHOB7K4f7OOLjiz8DTPFfjC9UeuErhaA/zzWi8ewMTFZW/WshOrm3fNvcMrMLKtH534JKvcdMg6qIdjTFINIrevnAhf0cwULaebn+lMs8Pdl7y37+sfluVok=', - ], - 'x5t' => '4bK45ewZ00Wk-a_shpTw2cCqJc8', - 'x5t#256' => '5F5GTPOxBGAOsVyuYzqUBjri0R2YDTiDowiQbs6oGgU', + static::assertSame([ + 'kty' => 'RSA', + 'n' => 'xgEGvHk-U_RY0j9l3MP7o-S2a6uf4XaRBhu1ztdCHz8tMG8Kj4_qJmgsSZQD17sRctHGBTUJWp4CLtBwCf0zAGVzySwUkcHSu1_2mZ_w7Nr0TQHKeWr_j8pvXH534DKEvugr21DAHbi4c654eLUL-JW_wJJYqJh7qHM3W3Fh7ys', + 'e' => 'AQAB', + 'x5c' => [ + 'MIICVjCCAb8CAg37MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwGA1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNEREMRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdlYiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIwODIyMDUyNzIzWhcNMTcwODIxMDUyNzIzWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UECAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYBBrx5PlP0WNI/ZdzD+6Pktmurn+F2kQYbtc7XQh8/LTBvCo+P6iZoLEmUA9e7EXLRxgU1CVqeAi7QcAn9MwBlc8ksFJHB0rtf9pmf8Oza9E0Bynlq/4/Kb1x+d+AyhL7oK9tQwB24uHOueHi1C/iVv8CSWKiYe6hzN1txYe8rAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAASPdjigJkXCqKWpnZ/Oc75EUcMi6HztaW8abUMlYXPIgkV2F7YanHOB7K4f7OOLjiz8DTPFfjC9UeuErhaA/zzWi8ewMTFZW/WshOrm3fNvcMrMLKtH534JKvcdMg6qIdjTFINIrevnAhf0cwULaebn+lMs8Pdl7y37+sfluVok=', ], - $jwk->all() - ); + 'x5t' => '4bK45ewZ00Wk-a_shpTw2cCqJc8', + 'x5t#256' => '5F5GTPOxBGAOsVyuYzqUBjri0R2YDTiDowiQbs6oGgU', + ], $jwk->all()); } #[Test] @@ -110,20 +101,17 @@ public function createFromECCertificateFileInPEMFormat(): void { $result = JWKFactory::createFromCertificateFile(__DIR__ . '/EC/PEM/prime256v1-cert.pem'); - static::assertSame( - [ - 'kty' => 'EC', - 'crv' => 'P-256', - 'x' => 'xEsr_55aqgFXdrbRNz1_WSNI8UaSUxCka2kGEN1bXsI', - 'y' => 'SM45Hsr9dnUR6Ox-TpmNv2fbDX4CoVo-3patMUpXANA', - 'x5c' => [ - 'MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sNfgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXhMB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM=', - ], - 'x5t' => 'ZnnaQDssCKJQZLp6zyHssIZOa7o', - 'x5t#256' => 'v7VlokKTGL3anRk8Nl0VcqVC9u5j2Fb5tdlQntUgDT4', + static::assertSame([ + 'kty' => 'EC', + 'crv' => 'P-256', + 'x' => 'xEsr_55aqgFXdrbRNz1_WSNI8UaSUxCka2kGEN1bXsI', + 'y' => 'SM45Hsr9dnUR6Ox-TpmNv2fbDX4CoVo-3patMUpXANA', + 'x5c' => [ + 'MIIB0jCCAXegAwIBAgIJAK2o1kQ5JwpUMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTUxMTA4MTUxMTU2WhcNMTYxMTA3MTUxMTU2WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExEsr/55aqgFXdrbRNz1/WSNI8UaSUxCka2kGEN1bXsJIzjkeyv12dRHo7H5OmY2/Z9sNfgKhWj7elq0xSlcA0KNQME4wHQYDVR0OBBYEFKIGgCZoS388STT0qjoX/swKYBXhMB8GA1UdIwQYMBaAFKIGgCZoS388STT0qjoX/swKYBXhMAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAK5OqQoBGR/pj2NOb+PyRKK4k4d3Muj9z/6LsJK+kkgUAiEA+FY4SWKv4mfe0gsOBId0Aah/HtVZxDBe3bCXOQM8MMM=', ], - $result->all() - ); + 'x5t' => 'ZnnaQDssCKJQZLp6zyHssIZOa7o', + 'x5t#256' => 'v7VlokKTGL3anRk8Nl0VcqVC9u5j2Fb5tdlQntUgDT4', + ], $result->all()); } #[Test] @@ -131,19 +119,16 @@ public function createFrom32kRSACertificateFileInDERFormat(): void { $result = JWKFactory::createFromCertificateFile(__DIR__ . '/RSA/DER/32k-rsa-example-cert.der'); - 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' => [ - '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', - ], - 'x5t' => 'KGApLybHWJmBwZGgBk07AlRD9nU', - 'x5t#256' => 'YD12k6kc4xuh_5vEHMyyOFpGs6VqTyaKMlxg0Nt2crA', + 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' => [ + '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', ], - $result->all() - ); + 'x5t' => 'KGApLybHWJmBwZGgBk07AlRD9nU', + 'x5t#256' => 'YD12k6kc4xuh_5vEHMyyOFpGs6VqTyaKMlxg0Nt2crA', + ], $result->all()); } #[Test] @@ -151,19 +136,16 @@ public function createFrom32kRSACertificateFileInPEMFormat(): void { $result = JWKFactory::createFromCertificateFile(__DIR__ . '/RSA/PEM/32k-rsa-example-cert.pem'); - 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' => [ - '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', - ], - 'x5t' => 'KGApLybHWJmBwZGgBk07AlRD9nU', - 'x5t#256' => 'YD12k6kc4xuh_5vEHMyyOFpGs6VqTyaKMlxg0Nt2crA', + 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' => [ + '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', ], - $result->all() - ); + 'x5t' => 'KGApLybHWJmBwZGgBk07AlRD9nU', + 'x5t#256' => 'YD12k6kc4xuh_5vEHMyyOFpGs6VqTyaKMlxg0Nt2crA', + ], $result->all()); } #[Test] @@ -199,8 +181,8 @@ public function createFromPrivateEC512KeyFileEncrypted(): void ); } - #[Test] #[DataProvider('publicKeysAndPem')] + #[Test] public function createFromPublicEC512KeyFile(string $filename, string $expectedJWK): void { // Given @@ -247,8 +229,8 @@ public function createFromValues(): void ); } - #[Test] #[DataProvider('dataKeys')] + #[Test] public function loadKeyPEMEncoded(string $filename, array $expectedValues): void { $jwk = JWKFactory::createFromKeyFile($filename); diff --git a/tests/Component/KeyManagement/JWKSetTest.php b/tests/Component/KeyManagement/JWKSetTest.php index 08ebd042e..5fa9e987a 100644 --- a/tests/Component/KeyManagement/JWKSetTest.php +++ b/tests/Component/KeyManagement/JWKSetTest.php @@ -4,12 +4,12 @@ namespace Jose\Tests\Component\KeyManagement; -use function count; use Jose\Component\Core\JWK; use Jose\Component\Core\JWKSet; use Jose\Component\KeyManagement\JWKFactory; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; +use function count; /** * @internal @@ -32,15 +32,12 @@ public function keySelectionWithAlgorithm(): void $jwk = $jwkset->selectKey('sig', new FooAlgorithm()); static::assertInstanceOf(JWK::class, $jwk); - static::assertSame( - [ - 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8', - 'kty' => 'FOO', - 'alg' => 'foo', - 'use' => 'sig', - ], - $jwk->all() - ); + static::assertSame([ + 'kid' => '71ee230371d19630bc17fb90ccf20ae632ad8cf8', + 'kty' => 'FOO', + 'alg' => 'foo', + 'use' => 'sig', + ], $jwk->all()); } #[Test] @@ -52,15 +49,12 @@ public function keySelectionWithAlgorithmAndKeyId(): void 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', ]); static::assertInstanceOf(JWK::class, $jwk); - static::assertSame( - [ - 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', - 'kty' => 'FOO', - 'alg' => 'foo', - 'use' => 'sig', - ], - $jwk->all() - ); + static::assertSame([ + 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', + 'kty' => 'FOO', + 'alg' => 'foo', + 'use' => 'sig', + ], $jwk->all()); } #[Test] @@ -72,15 +66,12 @@ public function keySelectionWithKeyId(): void 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', ]); static::assertInstanceOf(JWK::class, $jwk); - static::assertSame( - [ - 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', - 'kty' => 'FOO', - 'alg' => 'foo', - 'use' => 'sig', - ], - $jwk->all() - ); + static::assertSame([ + 'kid' => '02491f945c951adf156f370788e8ccdabf8877a8', + 'kty' => 'FOO', + 'alg' => 'foo', + 'use' => 'sig', + ], $jwk->all()); } #[Test] diff --git a/tests/Component/KeyManagement/JWKTest.php b/tests/Component/KeyManagement/JWKTest.php index 09c56d23e..f76e9d917 100644 --- a/tests/Component/KeyManagement/JWKTest.php +++ b/tests/Component/KeyManagement/JWKTest.php @@ -9,10 +9,10 @@ use Jose\Component\Core\JWKSet; use Jose\Component\Core\Util\RSAKey; use Jose\Component\KeyManagement\JWKFactory; -use const JSON_THROW_ON_ERROR; use ParagonIE\ConstantTime\Base64UrlSafe; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; +use const JSON_THROW_ON_ERROR; /** * @internal @@ -212,20 +212,17 @@ public function loadCertificateChain(): void '178f7e93a74ed73d88c29042220b9ae6e4b371cd', mb_strtolower(bin2hex(Base64UrlSafe::decode($key->get('x5t')))) ); - static::assertEqualsCanonicalizing( - [ - 'kty' => 'RSA', - 'n' => 'nCoEd1zYUJE6BqOC4NhQSLyJP_EZcBqIRn7gj8Xxic4h7lr-YQ23MkSJoHQLU09VpM6CYpXu61lfxuEFgBLEXpQ_vFtIOPRT9yTm-5HpFcTP9FMN9Er8n1Tefb6ga2-HwNBQHygwA0DaCHNRbH__OjynNwaOvUsRBOt9JN7m-fwxcfuU1WDzLkqvQtLL6sRqGrLMU90VS4sfyBlhH82dqD5jK4Q1aWWEyBnFRiL4U5W-44BKEMYq7LqXIBHHOZkQBKDwYXqVJYxOUnXitu0IyhT8ziJqs07PRgOXlwN-wLHee69FM8-6PnG33vQlJcINNYmdnfsOEXmJHjfFr45yaQ', - 'e' => 'AQAB', - 'x5t' => 'F49-k6dO1z2IwpBCIgua5uSzcc0', - 'x5t#256' => 'pBJP2vnKx7ruHKsy4yJddGUAwJ888-uyU-8_uwiK_TQ', - 'kid' => 'From www.google.com', - 'x5c' => [ - 'MIID8DCCAtigAwIBAgIDAjqDMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMTMwNDA1MTUxNTU2WhcNMTYxMjMxMjM1OTU5WjBJMQswCQYDVQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzElMCMGA1UEAxMcR29vZ2xlIEludGVybmV0IEF1dGhvcml0eSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJwqBHdc2FCROgajguDYUEi8iT/xGXAaiEZ+4I/F8YnOIe5a/mENtzJEiaB0C1NPVaTOgmKV7utZX8bhBYASxF6UP7xbSDj0U/ck5vuR6RXEz/RTDfRK/J9U3n2+oGtvh8DQUB8oMANA2ghzUWx//zo8pzcGjr1LEQTrfSTe5vn8MXH7lNVg8y5Kr0LSy+rEahqyzFPdFUuLH8gZYR/Nnag+YyuENWllhMgZxUYi+FOVvuOAShDGKuy6lyARxzmZEASg8GF6lSWMTlJ14rbtCMoU/M4iarNOz0YDl5cDfsCx3nuvRTPPuj5xt970JSXCDTWJnZ37DhF5iR43xa+OcmkCAwEAAaOB5zCB5DAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUSt0GFhu89mi1dvWBtrtiGrpagS8wDgYDVR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL2cuc3ltY2QuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMBcGA1UdIAQQMA4wDAYKKwYBBAHWeQIFATANBgkqhkiG9w0BAQsFAAOCAQEAqvqpIM1qZ4PtXtR+3h3Ef+AlBgDFJPupyC1tft6dgmUsgWM0Zj7pUsIItMsv91+ZOmqcUHqFBYx90SpIhNMJbHzCzTWf84LuUt5oX+QAihcglvcpjZpNy6jehsgNb1aHA30DP9z6eX0hGfnIOi9RdozHQZJxjyXON/hKTAAj78Q1EK7gI4BzfE00LshukNYQHpmEcxpw8u1VDu4XBupn7jLrLN1nBz/2i8Jw3lsA5rsb0zYaImxssDVCbJAJPZPpZAkiDoUGn8JzIdPmX4DkjYUiOnMDsWCOrmji9D6X52ASCWg23jrW4kOVWzeBkoEfu43XrVJkFleW2V40fsg12A==', - ], + static::assertEqualsCanonicalizing([ + 'kty' => 'RSA', + 'n' => 'nCoEd1zYUJE6BqOC4NhQSLyJP_EZcBqIRn7gj8Xxic4h7lr-YQ23MkSJoHQLU09VpM6CYpXu61lfxuEFgBLEXpQ_vFtIOPRT9yTm-5HpFcTP9FMN9Er8n1Tefb6ga2-HwNBQHygwA0DaCHNRbH__OjynNwaOvUsRBOt9JN7m-fwxcfuU1WDzLkqvQtLL6sRqGrLMU90VS4sfyBlhH82dqD5jK4Q1aWWEyBnFRiL4U5W-44BKEMYq7LqXIBHHOZkQBKDwYXqVJYxOUnXitu0IyhT8ziJqs07PRgOXlwN-wLHee69FM8-6PnG33vQlJcINNYmdnfsOEXmJHjfFr45yaQ', + 'e' => 'AQAB', + 'x5t' => 'F49-k6dO1z2IwpBCIgua5uSzcc0', + 'x5t#256' => 'pBJP2vnKx7ruHKsy4yJddGUAwJ888-uyU-8_uwiK_TQ', + 'kid' => 'From www.google.com', + 'x5c' => [ + 'MIID8DCCAtigAwIBAgIDAjqDMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMTMwNDA1MTUxNTU2WhcNMTYxMjMxMjM1OTU5WjBJMQswCQYDVQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzElMCMGA1UEAxMcR29vZ2xlIEludGVybmV0IEF1dGhvcml0eSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJwqBHdc2FCROgajguDYUEi8iT/xGXAaiEZ+4I/F8YnOIe5a/mENtzJEiaB0C1NPVaTOgmKV7utZX8bhBYASxF6UP7xbSDj0U/ck5vuR6RXEz/RTDfRK/J9U3n2+oGtvh8DQUB8oMANA2ghzUWx//zo8pzcGjr1LEQTrfSTe5vn8MXH7lNVg8y5Kr0LSy+rEahqyzFPdFUuLH8gZYR/Nnag+YyuENWllhMgZxUYi+FOVvuOAShDGKuy6lyARxzmZEASg8GF6lSWMTlJ14rbtCMoU/M4iarNOz0YDl5cDfsCx3nuvRTPPuj5xt970JSXCDTWJnZ37DhF5iR43xa+OcmkCAwEAAaOB5zCB5DAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUSt0GFhu89mi1dvWBtrtiGrpagS8wDgYDVR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL2cuc3ltY2QuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMBcGA1UdIAQQMA4wDAYKKwYBBAHWeQIFATANBgkqhkiG9w0BAQsFAAOCAQEAqvqpIM1qZ4PtXtR+3h3Ef+AlBgDFJPupyC1tft6dgmUsgWM0Zj7pUsIItMsv91+ZOmqcUHqFBYx90SpIhNMJbHzCzTWf84LuUt5oX+QAihcglvcpjZpNy6jehsgNb1aHA30DP9z6eX0hGfnIOi9RdozHQZJxjyXON/hKTAAj78Q1EK7gI4BzfE00LshukNYQHpmEcxpw8u1VDu4XBupn7jLrLN1nBz/2i8Jw3lsA5rsb0zYaImxssDVCbJAJPZPpZAkiDoUGn8JzIdPmX4DkjYUiOnMDsWCOrmji9D6X52ASCWg23jrW4kOVWzeBkoEfu43XrVJkFleW2V40fsg12A==', ], - $key->all() - ); + ], $key->all()); } #[Test] @@ -242,8 +239,7 @@ public function theRSAKeyIsCorrectlyConvertedIntoPEM(): void $pem = RSAKey::createFromJWK($key)->toPEM(); // Then - static::assertSame( - '-----BEGIN PUBLIC KEY----- + static::assertSame('-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAz62tHQzm4fDHipqlcrNh C1gUdn0N38pmlcQbVlLvtZf1aRm1OO43cB9YQyWr1MsTrYH4nyWZDMPIGY/BsIfY w1lp9fo2D1tpG2vtCaKRETVimu+N9DySQ9vYs6n8lG0vXy/spK7sGrOLFooijDSt @@ -256,8 +252,6 @@ public function theRSAKeyIsCorrectlyConvertedIntoPEM(): void XCARX1IObFJNoinxYJ5SNX9bCSRtgefuBKE7BSNukAkHyBPf+++kEi9GbYXzlJr+ yCMAIsA0UoiEx264hkAF9zF+N1yRhS/QmrhzU5hpj1IE8WRCqyIZV8f/IbSGXBue 7MmgknLVRWHuGqehkTSfiNECAwEAAQ== ------END PUBLIC KEY-----', - $pem - ); +-----END PUBLIC KEY-----', $pem); } } diff --git a/tests/Component/KeyManagement/Keys/ECKeysTest.php b/tests/Component/KeyManagement/Keys/ECKeysTest.php index c9c6993b0..7a29b8b8b 100644 --- a/tests/Component/KeyManagement/Keys/ECKeysTest.php +++ b/tests/Component/KeyManagement/Keys/ECKeysTest.php @@ -4,7 +4,6 @@ namespace Jose\Tests\Component\KeyManagement\Keys; -use const DIRECTORY_SEPARATOR; use InvalidArgumentException; use Jose\Component\Core\JWK; use Jose\Component\Core\Util\ECKey; @@ -12,6 +11,7 @@ use Jose\Component\KeyManagement\KeyConverter\KeyConverter; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; +use const DIRECTORY_SEPARATOR; /** * @internal diff --git a/tests/Component/KeyManagement/Keys/NoneKeysTest.php b/tests/Component/KeyManagement/Keys/NoneKeysTest.php index 8524d1df8..38ef022e2 100644 --- a/tests/Component/KeyManagement/Keys/NoneKeysTest.php +++ b/tests/Component/KeyManagement/Keys/NoneKeysTest.php @@ -6,9 +6,9 @@ use Jose\Component\Core\JWK; use Jose\Component\KeyManagement\JWKFactory; -use const JSON_THROW_ON_ERROR; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; +use const JSON_THROW_ON_ERROR; /** * @internal diff --git a/tests/Component/KeyManagement/Keys/RSAKeysTest.php b/tests/Component/KeyManagement/Keys/RSAKeysTest.php index d69426cd7..0cf1f0a78 100644 --- a/tests/Component/KeyManagement/Keys/RSAKeysTest.php +++ b/tests/Component/KeyManagement/Keys/RSAKeysTest.php @@ -4,13 +4,13 @@ namespace Jose\Tests\Component\KeyManagement\Keys; -use const DIRECTORY_SEPARATOR; use InvalidArgumentException; use Jose\Component\Core\JWK; use Jose\Component\KeyManagement\JWKFactory; use Jose\Component\KeyManagement\KeyConverter\RSAKey; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; +use const DIRECTORY_SEPARATOR; /** * @internal diff --git a/tests/Component/KeyManagement/MessageBagTest.php b/tests/Component/KeyManagement/MessageBagTest.php index b68557efb..14902e69b 100644 --- a/tests/Component/KeyManagement/MessageBagTest.php +++ b/tests/Component/KeyManagement/MessageBagTest.php @@ -6,9 +6,9 @@ use Jose\Component\KeyManagement\Analyzer\Message; use Jose\Component\KeyManagement\Analyzer\MessageBag; -use const JSON_THROW_ON_ERROR; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; +use const JSON_THROW_ON_ERROR; /** * @internal diff --git a/tests/Component/NestedToken/NestingTokenBuilderTest.php b/tests/Component/NestedToken/NestingTokenBuilderTest.php index 1589460c7..c8856f6a7 100644 --- a/tests/Component/NestedToken/NestingTokenBuilderTest.php +++ b/tests/Component/NestedToken/NestingTokenBuilderTest.php @@ -52,8 +52,8 @@ protected function setUp(): void } } - #[Test] #[DoesNotPerformAssertions] + #[Test] public function decryption(): void { $payload = '{"iss":"hobbiton.example","exp":1300819380,"http://example.com/is_root":true}'; diff --git a/tests/Component/Signature/ForeignJWTTestCase.php b/tests/Component/Signature/ForeignJWTTest.php similarity index 98% rename from tests/Component/Signature/ForeignJWTTestCase.php rename to tests/Component/Signature/ForeignJWTTest.php index cc7c814c6..f5270cd6c 100644 --- a/tests/Component/Signature/ForeignJWTTestCase.php +++ b/tests/Component/Signature/ForeignJWTTest.php @@ -10,7 +10,7 @@ /** * @internal */ -final class ForeignJWTTestCase extends SignatureTestCase +final class ForeignJWTTest extends SignatureTestCase { /* * The following test uses an assertion created with another library. diff --git a/tests/Component/Signature/JWSFlattenedTestCase.php b/tests/Component/Signature/JWSFlattenedTest.php similarity index 94% rename from tests/Component/Signature/JWSFlattenedTestCase.php rename to tests/Component/Signature/JWSFlattenedTest.php index d4a47de62..48d75699e 100644 --- a/tests/Component/Signature/JWSFlattenedTestCase.php +++ b/tests/Component/Signature/JWSFlattenedTest.php @@ -4,13 +4,13 @@ namespace Jose\Tests\Component\Signature; -use const JSON_THROW_ON_ERROR; use PHPUnit\Framework\Attributes\Test; +use const JSON_THROW_ON_ERROR; /** * @internal */ -final class JWSFlattenedTestCase extends SignatureTestCase +final class JWSFlattenedTest extends SignatureTestCase { /** * @see https://tools.ietf.org/html/rfc7516#appendix-A.5 diff --git a/tests/Component/Signature/JWSLoaderTestCase.php b/tests/Component/Signature/JWSLoaderTest.php similarity index 99% rename from tests/Component/Signature/JWSLoaderTestCase.php rename to tests/Component/Signature/JWSLoaderTest.php index d9fdfc422..4c8aef96f 100644 --- a/tests/Component/Signature/JWSLoaderTestCase.php +++ b/tests/Component/Signature/JWSLoaderTest.php @@ -12,7 +12,7 @@ /** * @internal */ -final class JWSLoaderTestCase extends SignatureTestCase +final class JWSLoaderTest extends SignatureTestCase { private ?JWSLoader $jwsLoader = null; diff --git a/tests/Component/Signature/JWSSplitTestCase.php b/tests/Component/Signature/JWSSplitTest.php similarity index 97% rename from tests/Component/Signature/JWSSplitTestCase.php rename to tests/Component/Signature/JWSSplitTest.php index 1a1e48185..27b27ef83 100644 --- a/tests/Component/Signature/JWSSplitTestCase.php +++ b/tests/Component/Signature/JWSSplitTest.php @@ -10,7 +10,7 @@ /** * @internal */ -final class JWSSplitTestCase extends SignatureTestCase +final class JWSSplitTest extends SignatureTestCase { #[Test] public function aJwsObjectWithMoreThanOneRecipientCanBeSplittedIntoSeveralJwsObjects(): void diff --git a/tests/Component/Signature/JWSTestCase.php b/tests/Component/Signature/JWSTest.php similarity index 99% rename from tests/Component/Signature/JWSTestCase.php rename to tests/Component/Signature/JWSTest.php index 592eec585..f2c0c409a 100644 --- a/tests/Component/Signature/JWSTestCase.php +++ b/tests/Component/Signature/JWSTest.php @@ -6,15 +6,15 @@ use InvalidArgumentException; use Jose\Component\Signature\JWS; -use const JSON_THROW_ON_ERROR; use LogicException; use ParagonIE\ConstantTime\Base64UrlSafe; use PHPUnit\Framework\Attributes\Test; +use const JSON_THROW_ON_ERROR; /** * @internal */ -final class JWSTestCase extends SignatureTestCase +final class JWSTest extends SignatureTestCase { #[Test] public function jWS(): void diff --git a/tests/Component/Signature/RFC7520/MultipleSignaturesTestCase.php b/tests/Component/Signature/RFC7520/MultipleSignaturesTest.php similarity index 98% rename from tests/Component/Signature/RFC7520/MultipleSignaturesTestCase.php rename to tests/Component/Signature/RFC7520/MultipleSignaturesTest.php index 894914b11..9f3e5f1d9 100644 --- a/tests/Component/Signature/RFC7520/MultipleSignaturesTestCase.php +++ b/tests/Component/Signature/RFC7520/MultipleSignaturesTest.php @@ -13,7 +13,7 @@ * * @internal */ -final class MultipleSignaturesTestCase extends SignatureTestCase +final class MultipleSignaturesTest extends SignatureTestCase { #[Test] public function multipleSignatures(): void diff --git a/tests/Component/Signature/RFC7520/NestingTestCase.php b/tests/Component/Signature/RFC7520/NestingTest.php similarity index 98% rename from tests/Component/Signature/RFC7520/NestingTestCase.php rename to tests/Component/Signature/RFC7520/NestingTest.php index f16688dda..ac5f15f07 100644 --- a/tests/Component/Signature/RFC7520/NestingTestCase.php +++ b/tests/Component/Signature/RFC7520/NestingTest.php @@ -6,15 +6,15 @@ use Jose\Component\Core\JWK; use Jose\Tests\Component\Signature\SignatureTestCase; -use const JSON_THROW_ON_ERROR; use PHPUnit\Framework\Attributes\Test; +use const JSON_THROW_ON_ERROR; /** * @see https://tools.ietf.org/html/rfc7520#section-6 * * @internal */ -final class NestingTestCase extends SignatureTestCase +final class NestingTest extends SignatureTestCase { #[Test] public function signatureVerification(): void diff --git a/tests/Component/Signature/SignerTestCase.php b/tests/Component/Signature/SignerTest.php similarity index 93% rename from tests/Component/Signature/SignerTestCase.php rename to tests/Component/Signature/SignerTest.php index 7f5b9d8b7..dbc63b0b8 100644 --- a/tests/Component/Signature/SignerTestCase.php +++ b/tests/Component/Signature/SignerTest.php @@ -8,15 +8,15 @@ 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; use PHPUnit\Framework\Attributes\Test; +use const JSON_THROW_ON_ERROR; /** * @internal */ -final class SignerTestCase extends SignatureTestCase +final class SignerTest extends SignatureTestCase { #[Test] public function algParameterIsMissing(): void @@ -598,7 +598,9 @@ public function compactJSONWithUnencodedPayloadSucceeded(): void #[Test] public function compactJSONWithUnencodedDetachedPayload(): void { - $payload = '$.02'; + $payload = hex2bin( + '43a40763650d45edcfc7e22bda5bf3ea3039464a53617c83bbffd815f48bb7fade3cacb6c8885ca7ef923ae04cc0567a450473b6e8777640e159e5aba4f6d653fa00c06ca1d48ca826eb68e32d10378716406577a5f92d759e887a3d3d4c496e60cfa1a8700c08aa59b9f1d34039f16119deb8c30ec6195ef352ba7526fbff6fab47360a1e743dd86ba11878c8f9f7bbc901bf04d7843fd0125c310337afef704e1d281b879f0f5dfecd21b69b29d413a597efa2092cbe7ba0e1de5a996b845004047446524f199a08da259d1c5564984e4d8d65058c37577aa344e10e7f188202f330b8f61f66b22e530659d023203efbf91852ddc6babef9dbbf012149dc86678016a2c0351a432f6e652da6913e215c506eb68e0b71f2a2842ae75b7c605d5c1495d53610beff10b11e4991929e2dece56c8472ea8b6a4ee5d846123545efa4d234534d669c8031cb719cc1c8dee3c7072bdf9534616ecf3b53be8be1983734c1e91f6a33cc0d5c34aaecb043b65113fb55a335f8f65a023ae2dba2e8b1488ae1a505bdd7aabc794fffbf1e0ea0ce437df92ac8ad3a4b12e2d5d4bfbaf2f3a1e69f15fc44c3beb310e3bd302407bf265a752a4d09f1f0f5715d409a4b82a5e16748f22934d34592dc5995c16dc73fde436867e576033fcc47a4ff51d6a24b41311d41f8a4f1af78c81ad966dd3baab94b4140' + ); $protectedHeader = [ 'alg' => 'HS256', 'b64' => false, @@ -622,7 +624,7 @@ public function compactJSONWithUnencodedDetachedPayload(): void $jws = $this->getJWSSerializerManager() ->serialize('jws_compact', $jws, 0); static::assertSame( - 'eyJhbGciOiJIUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..A5dxf2s96_n5FLueVuW1Z_vh161FwXZC4YLPff6dmDY', + 'eyJhbGciOiJIUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..fSKLLXhwLhGW6L4hftrjw9EkAiIikH4KDn9YZ3FDlz8', $jws ); @@ -633,6 +635,40 @@ public function compactJSONWithUnencodedDetachedPayload(): void static::assertSame($protectedHeader, $loaded->getSignature(0)->getProtectedHeader()); } + /** + * @see https://tools.ietf.org/html/rfc7797#section-4 + * @see https://tools.ietf.org/html/rfc7797#section-4.2 + */ + #[Test] + public function compactJSONWithUnencodedAttachedPayloadButNotUTF8(): void + { + static::expectException(InvalidArgumentException::class); + static::expectExceptionMessage('The payload must be encoded in UTF-8'); + $payload = hex2bin( + '43a40763650d45edcfc7e22bda5bf3ea3039464a53617c83bbffd815f48bb7fade3cacb6c8885ca7ef923ae04cc0567a450473b6e8777640e159e5aba4f6d653fa00c06ca1d48ca826eb68e32d10378716406577a5f92d759e887a3d3d4c496e60cfa1a8700c08aa59b9f1d34039f16119deb8c30ec6195ef352ba7526fbff6fab47360a1e743dd86ba11878c8f9f7bbc901bf04d7843fd0125c310337afef704e1d281b879f0f5dfecd21b69b29d413a597efa2092cbe7ba0e1de5a996b845004047446524f199a08da259d1c5564984e4d8d65058c37577aa344e10e7f188202f330b8f61f66b22e530659d023203efbf91852ddc6babef9dbbf012149dc86678016a2c0351a432f6e652da6913e215c506eb68e0b71f2a2842ae75b7c605d5c1495d53610beff10b11e4991929e2dece56c8472ea8b6a4ee5d846123545efa4d234534d669c8031cb719cc1c8dee3c7072bdf9534616ecf3b53be8be1983734c1e91f6a33cc0d5c34aaecb043b65113fb55a335f8f65a023ae2dba2e8b1488ae1a505bdd7aabc794fffbf1e0ea0ce437df92ac8ad3a4b12e2d5d4bfbaf2f3a1e69f15fc44c3beb310e3bd302407bf265a752a4d09f1f0f5715d409a4b82a5e16748f22934d34592dc5995c16dc73fde436867e576033fcc47a4ff51d6a24b41311d41f8a4f1af78c81ad966dd3baab94b4140' + ); + $protectedHeader = [ + 'alg' => 'HS256', + 'b64' => false, + 'crit' => ['b64'], + ]; + + $key = new JWK([ + 'kty' => 'oct', + 'k' => 'AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow', + ]); + + $jwsBuilder = $this->getJWSBuilderFactory() + ->create(['HS256']); + $this->getJWSVerifierFactory() + ->create(['HS256']); + $jwsBuilder + ->create() + ->withPayload($payload) + ->addSignature($key, $protectedHeader) + ->build(); + } + /** * The library is able to support multiple payload encoding and conversion in JSON if payload is detached. */ @@ -669,11 +705,8 @@ public function compactJSONWithUnencodedDetachedPayloadAndMultipleSignatures(): $expected_result = '{"signatures":[{"signature":"A5dxf2s96_n5FLueVuW1Z_vh161FwXZC4YLPff6dmDY","protected":"eyJhbGciOiJIUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19"},{"signature":"Mp-m-Vyst0zYCNkpg2RiIN8W9GO4nLU3FKsFtHzEcP4tgR4QcMys1_2m9HrDwszi0Cp2gv_Lioe6UPCcTNn6tQ","protected":"eyJhbGciOiJIUzUxMiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19"}]}'; - static::assertSame( - $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); diff --git a/tests/ComposerJsonTest.php b/tests/ComposerJsonTest.php index ece1d2726..87ba7dce3 100644 --- a/tests/ComposerJsonTest.php +++ b/tests/ComposerJsonTest.php @@ -5,11 +5,11 @@ namespace Jose; use DirectoryIterator; -use function in_array; -use const JSON_THROW_ON_ERROR; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Traversable; +use function in_array; +use const JSON_THROW_ON_ERROR; /** * @internal diff --git a/tests/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBC_HSContentEncryptionTest.php b/tests/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBC_HSContentEncryptionTest.php index e97906048..672642e3a 100644 --- a/tests/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBC_HSContentEncryptionTest.php +++ b/tests/EncryptionAlgorithm/ContentEncryption/AESCBC/AESCBC_HSContentEncryptionTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Encryption\Algorithm\ContentEncryption; +namespace Jose\Tests\EncryptionAlgorithm\ContentEncryption\AESCBC; use Jose\Component\Encryption\Algorithm\ContentEncryption\A128CBCHS256; use Jose\Component\Encryption\Algorithm\ContentEncryption\A192CBCHS384; diff --git a/tests/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCMContentEncryptionTest.php b/tests/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCMContentEncryptionTest.php index 74e044886..f659f745c 100644 --- a/tests/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCMContentEncryptionTest.php +++ b/tests/EncryptionAlgorithm/ContentEncryption/AESGCM/AESGCMContentEncryptionTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Encryption\Algorithm\ContentEncryption; +namespace Jose\Tests\EncryptionAlgorithm\ContentEncryption\AESGCM; use Jose\Component\Encryption\Algorithm\ContentEncryption\A128GCM; use Jose\Component\Encryption\Algorithm\ContentEncryption\A192GCM; diff --git a/tests/EncryptionAlgorithm/Experimental/AESCTRContentEncryptionTest.php b/tests/EncryptionAlgorithm/Experimental/AESCTRContentEncryptionTest.php index 717b9b729..9d0062941 100644 --- a/tests/EncryptionAlgorithm/Experimental/AESCTRContentEncryptionTest.php +++ b/tests/EncryptionAlgorithm/Experimental/AESCTRContentEncryptionTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Encryption\Algorithm; +namespace Jose\Tests\EncryptionAlgorithm\ContentEncryption\Experimental; use Jose\Component\Core\JWK; use Jose\Component\Encryption\Algorithm\KeyEncryption\A128CTR; diff --git a/tests/EncryptionAlgorithm/Experimental/Chacha20Poly1305ContentEncryptionTest.php b/tests/EncryptionAlgorithm/Experimental/Chacha20Poly1305ContentEncryptionTest.php index 7ae688602..d8a96962b 100644 --- a/tests/EncryptionAlgorithm/Experimental/Chacha20Poly1305ContentEncryptionTest.php +++ b/tests/EncryptionAlgorithm/Experimental/Chacha20Poly1305ContentEncryptionTest.php @@ -2,14 +2,14 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Encryption\Algorithm; +namespace Jose\Tests\EncryptionAlgorithm\ContentEncryption\Experimental; -use function in_array; use Jose\Component\Core\JWK; use Jose\Component\Encryption\Algorithm\KeyEncryption\Chacha20Poly1305; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Throwable; +use function in_array; /** * @internal diff --git a/tests/EncryptionAlgorithm/Experimental/RSAOAEPKeyEncryptionTest.php b/tests/EncryptionAlgorithm/Experimental/RSAOAEPKeyEncryptionTest.php index bf57ca32e..c644f6303 100644 --- a/tests/EncryptionAlgorithm/Experimental/RSAOAEPKeyEncryptionTest.php +++ b/tests/EncryptionAlgorithm/Experimental/RSAOAEPKeyEncryptionTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Encryption\Algorithm; +namespace Jose\Tests\EncryptionAlgorithm\ContentEncryption\Experimental; use Jose\Component\Core\JWK; use Jose\Component\Encryption\Algorithm\KeyEncryption\RSAOAEP384; diff --git a/tests/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKWKeyEncryptionTest.php b/tests/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKWKeyEncryptionTest.php index 63e608c0d..409033898 100644 --- a/tests/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKWKeyEncryptionTest.php +++ b/tests/EncryptionAlgorithm/KeyEncryption/AESGCMKW/AESGCMKWKeyEncryptionTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Encryption\Algorithm\KeyEncryption; +namespace Jose\Tests\EncryptionAlgorithm\KeyEncryption\AESGCMKW; use InvalidArgumentException; use Jose\Component\Core\JWK; diff --git a/tests/EncryptionAlgorithm/KeyEncryption/AESKW/AESKWKeyEncryptionTest.php b/tests/EncryptionAlgorithm/KeyEncryption/AESKW/AESKWKeyEncryptionTest.php index 4ca0f1cc0..3f7117e90 100644 --- a/tests/EncryptionAlgorithm/KeyEncryption/AESKW/AESKWKeyEncryptionTest.php +++ b/tests/EncryptionAlgorithm/KeyEncryption/AESKW/AESKWKeyEncryptionTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Encryption\Algorithm\KeyEncryption; +namespace Jose\Tests\EncryptionAlgorithm\KeyEncryption\AESKW; use InvalidArgumentException; use Jose\Component\Core\JWK; diff --git a/tests/EncryptionAlgorithm/KeyEncryption/Direct/DirAlgorithmTest.php b/tests/EncryptionAlgorithm/KeyEncryption/Direct/DirAlgorithmTest.php index 18bb46849..6f249c9c6 100644 --- a/tests/EncryptionAlgorithm/KeyEncryption/Direct/DirAlgorithmTest.php +++ b/tests/EncryptionAlgorithm/KeyEncryption/Direct/DirAlgorithmTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Encryption\Algorithm\KeyEncryption; +namespace Jose\Tests\EncryptionAlgorithm\KeyEncryption\Direct; use InvalidArgumentException; use Jose\Component\Core\JWK; diff --git a/tests/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESKeyAgreementTest.php b/tests/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESKeyAgreementTest.php index 2817dbbb8..513335437 100644 --- a/tests/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESKeyAgreementTest.php +++ b/tests/EncryptionAlgorithm/KeyEncryption/ECDHES/ECDHESKeyAgreementTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Encryption\Algorithm\KeyEncryption; +namespace Jose\Tests\EncryptionAlgorithm\KeyEncryption\ECDHES; use InvalidArgumentException; use Jose\Component\Core\JWK; diff --git a/tests/EncryptionAlgorithm/KeyEncryption/ECDHSS/ECDHSSKeyAgreementTest.php b/tests/EncryptionAlgorithm/KeyEncryption/ECDHSS/ECDHSSKeyAgreementTest.php index fda9eb770..aa7108e03 100644 --- a/tests/EncryptionAlgorithm/KeyEncryption/ECDHSS/ECDHSSKeyAgreementTest.php +++ b/tests/EncryptionAlgorithm/KeyEncryption/ECDHSS/ECDHSSKeyAgreementTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Encryption\Algorithm\KeyEncryption; +namespace Jose\Tests\EncryptionAlgorithm\KeyEncryption\ECDHSS; use Jose\Component\Core\JWK; use Jose\Component\Encryption\Algorithm\KeyEncryption\ECDHSS; diff --git a/tests/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2_HS_AESKWKeyEncryptionTest.php b/tests/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2_HS_AESKWKeyEncryptionTest.php index 9b9c85081..e09fbd422 100644 --- a/tests/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2_HS_AESKWKeyEncryptionTest.php +++ b/tests/EncryptionAlgorithm/KeyEncryption/PBES2/PBES2_HS_AESKWKeyEncryptionTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Encryption\Algorithm\KeyEncryption; +namespace Jose\Tests\EncryptionAlgorithm\KeyEncryption\PBES2; use InvalidArgumentException; use Jose\Component\Core\JWK; diff --git a/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC6979Test.php b/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC6979Test.php index 452646899..40d53ed7a 100644 --- a/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC6979Test.php +++ b/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC6979Test.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\ECDSA; use Jose\Component\Core\JWK; use Jose\Component\Signature\Algorithm\ES256; diff --git a/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC7520Test.php b/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC7520Test.php index f86e632e7..286cf98e0 100644 --- a/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC7520Test.php +++ b/tests/SignatureAlgorithm/ECDSA/ECDSAFromRFC7520Test.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\ECDSA; use Jose\Component\Core\AlgorithmManager; use Jose\Component\Core\JWK; diff --git a/tests/SignatureAlgorithm/ECDSA/ECDSASignatureTest.php b/tests/SignatureAlgorithm/ECDSA/ECDSASignatureTest.php index 4d7700d2a..a6f97b2d6 100644 --- a/tests/SignatureAlgorithm/ECDSA/ECDSASignatureTest.php +++ b/tests/SignatureAlgorithm/ECDSA/ECDSASignatureTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\ECDSA; use InvalidArgumentException; use Jose\Component\Core\JWK; diff --git a/tests/SignatureAlgorithm/EdDSA/EdDSASignatureTest.php b/tests/SignatureAlgorithm/EdDSA/EdDSASignatureTest.php index 96d284ce0..77ee9baad 100644 --- a/tests/SignatureAlgorithm/EdDSA/EdDSASignatureTest.php +++ b/tests/SignatureAlgorithm/EdDSA/EdDSASignatureTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\EdDSA; use Jose\Component\Core\AlgorithmManager; use Jose\Component\Core\JWK; diff --git a/tests/SignatureAlgorithm/Experimental/Blake2bTest.php b/tests/SignatureAlgorithm/Experimental/Blake2bTest.php index 2c7ada6eb..5483344bc 100644 --- a/tests/SignatureAlgorithm/Experimental/Blake2bTest.php +++ b/tests/SignatureAlgorithm/Experimental/Blake2bTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\Experimental; use InvalidArgumentException; use Jose\Component\Core\JWK; diff --git a/tests/SignatureAlgorithm/Experimental/ExperimentalHMACSignatureTest.php b/tests/SignatureAlgorithm/Experimental/ExperimentalHMACSignatureTest.php index 64ed27071..8b60972cd 100644 --- a/tests/SignatureAlgorithm/Experimental/ExperimentalHMACSignatureTest.php +++ b/tests/SignatureAlgorithm/Experimental/ExperimentalHMACSignatureTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\Experimental; use Jose\Component\Core\JWK; use Jose\Component\Signature\Algorithm\HS1; diff --git a/tests/SignatureAlgorithm/Experimental/P256KSignatureTest.php b/tests/SignatureAlgorithm/Experimental/P256KSignatureTest.php index bbd0e12b8..177b9c936 100644 --- a/tests/SignatureAlgorithm/Experimental/P256KSignatureTest.php +++ b/tests/SignatureAlgorithm/Experimental/P256KSignatureTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\Experimental; use Jose\Component\Core\JWK; use Jose\Component\Signature\Algorithm\ES256K; @@ -22,11 +22,9 @@ 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' + ))); } #[Test] diff --git a/tests/SignatureAlgorithm/HMAC/HMACFromRFC7520Test.php b/tests/SignatureAlgorithm/HMAC/HMACFromRFC7520Test.php index fa23a7d09..1c0101661 100644 --- a/tests/SignatureAlgorithm/HMAC/HMACFromRFC7520Test.php +++ b/tests/SignatureAlgorithm/HMAC/HMACFromRFC7520Test.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\HMAC; use Jose\Component\Core\AlgorithmManager; use Jose\Component\Core\JWK; @@ -12,9 +12,9 @@ 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\Attributes\Test; use PHPUnit\Framework\TestCase; +use const JSON_THROW_ON_ERROR; /** * @see https://tools.ietf.org/html/rfc7520#section-4.4 diff --git a/tests/SignatureAlgorithm/HMAC/HMACSignatureTest.php b/tests/SignatureAlgorithm/HMAC/HMACSignatureTest.php index 60fc4d80a..80856a43e 100644 --- a/tests/SignatureAlgorithm/HMAC/HMACSignatureTest.php +++ b/tests/SignatureAlgorithm/HMAC/HMACSignatureTest.php @@ -2,13 +2,14 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\HMAC; use InvalidArgumentException; use Jose\Component\Core\JWK; use Jose\Component\Signature\Algorithm\HS256; use Jose\Component\Signature\Algorithm\HS384; use Jose\Component\Signature\Algorithm\HS512; +use ParagonIE\ConstantTime\Base64UrlSafe; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; @@ -37,7 +38,9 @@ public function signatureHasBadBadLength(): void { $key = new JWK([ 'kty' => 'oct', - 'k' => 'foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo', + 'k' => Base64UrlSafe::encodeUnpadded( + 'foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo' + ), ]); $hmac = new HS256(); $data = 'Live long and Prosper.'; @@ -50,14 +53,15 @@ public function hS256SignAndVerify(): void { $key = new JWK([ 'kty' => 'oct', - 'k' => 'foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo', + 'k' => Base64UrlSafe::encodeUnpadded( + 'foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo' + ), ]); $hmac = new HS256(); $data = 'Live long and Prosper.'; $signature = $hmac->hash($key, $data); - static::assertSame(hex2bin('7ed268ef179f530a4a1c56225c352a6782cf5379085c484b4f355b6744d6f19d'), $signature); static::assertTrue($hmac->verify($key, $data, $signature)); } @@ -66,17 +70,15 @@ public function hS384SignAndVerify(): void { $key = new JWK([ 'kty' => 'oct', - 'k' => 'foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo', + 'k' => Base64UrlSafe::encodeUnpadded( + 'foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo' + ), ]); $hmac = new HS384(); $data = 'Live long and Prosper.'; $signature = $hmac->hash($key, $data); - static::assertSame( - hex2bin('903ce2ef2878090d6117f88210d5a822d260fae66760186cb3326770748b9fa47c2d4531a4d5d868f99bcf7ea45c1ab4'), - $signature - ); static::assertTrue($hmac->verify($key, $data, $signature)); } @@ -92,12 +94,9 @@ public function hS512SignAndVerify(): void $signature = $hmac->hash($key, $data); - static::assertSame( - 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 2c7a8bc05..efda2b144 100644 --- a/tests/SignatureAlgorithm/None/NoneSignatureTest.php +++ b/tests/SignatureAlgorithm/None/NoneSignatureTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\None; use InvalidArgumentException; use Jose\Component\Core\AlgorithmManager; diff --git a/tests/SignatureAlgorithm/RSA/RSA15SignatureTest.php b/tests/SignatureAlgorithm/RSA/RSA15SignatureTest.php index 50a26f38c..780e816b5 100644 --- a/tests/SignatureAlgorithm/RSA/RSA15SignatureTest.php +++ b/tests/SignatureAlgorithm/RSA/RSA15SignatureTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\RSA; use Jose\Component\Core\AlgorithmManager; use Jose\Component\Core\JWK; @@ -12,9 +12,9 @@ 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\Attributes\Test; use PHPUnit\Framework\TestCase; +use const JSON_THROW_ON_ERROR; /** * @see https://tools.ietf.org/html/rfc7520#section-4.1 diff --git a/tests/SignatureAlgorithm/RSA/RSAKeyWithoutAllPrimesTest.php b/tests/SignatureAlgorithm/RSA/RSAKeyWithoutAllPrimesTest.php index 874c20e0e..094373f0c 100644 --- a/tests/SignatureAlgorithm/RSA/RSAKeyWithoutAllPrimesTest.php +++ b/tests/SignatureAlgorithm/RSA/RSAKeyWithoutAllPrimesTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\RSA; use Jose\Component\Core\AlgorithmManager; use Jose\Component\Core\JWK; @@ -24,8 +24,8 @@ */ final class RSAKeyWithoutAllPrimesTest extends TestCase { - #[Test] #[DataProvider('dataSignatureAlgorithms')] + #[Test] public function signatureAlgorithms(string $signature_algorithm): void { $algorithm = new $signature_algorithm(); diff --git a/tests/SignatureAlgorithm/RSA/RSAPSSSignatureTest.php b/tests/SignatureAlgorithm/RSA/RSAPSSSignatureTest.php index 28a142f8f..4324cad0a 100644 --- a/tests/SignatureAlgorithm/RSA/RSAPSSSignatureTest.php +++ b/tests/SignatureAlgorithm/RSA/RSAPSSSignatureTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\RSA; use Jose\Component\Core\AlgorithmManager; use Jose\Component\Core\JWK; diff --git a/tests/SignatureAlgorithm/RSA/RSASignatureTest.php b/tests/SignatureAlgorithm/RSA/RSASignatureTest.php index fcdcf5774..6cabe3dcc 100644 --- a/tests/SignatureAlgorithm/RSA/RSASignatureTest.php +++ b/tests/SignatureAlgorithm/RSA/RSASignatureTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Jose\Tests\Component\Signature\Algorithm; +namespace Jose\Tests\SignatureAlgorithm\RSA; use InvalidArgumentException; use Jose\Component\Core\AlgorithmManager; @@ -18,10 +18,10 @@ use Jose\Component\Signature\JWSVerifier; use Jose\Component\Signature\Serializer\CompactSerializer; use Jose\Component\Signature\Serializer\JSONGeneralSerializer; -use const JSON_THROW_ON_ERROR; use ParagonIE\ConstantTime\Base64UrlSafe; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; +use const JSON_THROW_ON_ERROR; /** * @internal