From 79b4c733e13c6145b21d0f2c66950276552e55a3 Mon Sep 17 00:00:00 2001 From: Juliette <663378+jrfnl@users.noreply.github.com> Date: Thu, 10 Mar 2022 17:06:38 +0100 Subject: [PATCH 01/14] CS/QA: prefer pre-increment over post-increment (#694) --- src/IdnaEncoder.php | 12 ++++++------ src/Ipv6.php | 2 +- src/Requests.php | 2 +- src/Transport/Curl.php | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/IdnaEncoder.php b/src/IdnaEncoder.php index 9f235527b..15273a2b8 100644 --- a/src/IdnaEncoder.php +++ b/src/IdnaEncoder.php @@ -212,7 +212,7 @@ protected static function utf8_to_codepoints($input) { $character |= ($value & 0x3F) << ($remaining * 6); } - $position--; + --$position; } if (// Non-shortest form sequences are invalid @@ -270,7 +270,7 @@ public static function punycode_encode($input) { // Character is valid ASCII // TODO: this should also check if it's valid for a URL $output .= chr($char); - $h++; + ++$h; // Check if the character is non-ASCII, but below initial n // This never occurs for Punycode, so ignore in coverage @@ -307,7 +307,7 @@ public static function punycode_encode($input) { $c = $codepoints[$num]; // if c < n then increment delta, fail on overflow if ($c < $n) { - $delta++; + ++$delta; } elseif ($c === $n) { // if c == n then begin // let q = delta $q = $delta; @@ -341,12 +341,12 @@ public static function punycode_encode($input) { // let delta = 0 $delta = 0; // increment h - $h++; + ++$h; } // end } // end // increment delta and n - $delta++; - $n++; + ++$delta; + ++$n; } // end return $output; diff --git a/src/Ipv6.php b/src/Ipv6.php index bcdd63649..d9b0a144f 100644 --- a/src/Ipv6.php +++ b/src/Ipv6.php @@ -56,7 +56,7 @@ public static function uncompress($ip) { $c2 = ($ip2 === '') ? -1 : substr_count($ip2, ':'); if (strpos($ip2, '.') !== false) { - $c2++; + ++$c2; } if ($c1 === -1 && $c2 === -1) { diff --git a/src/Requests.php b/src/Requests.php index b9bfa31e0..d632bd943 100644 --- a/src/Requests.php +++ b/src/Requests.php @@ -790,7 +790,7 @@ protected static function parse_response($headers, $url, $req_headers, $req_data $options['type'] = self::GET; } - $options['redirected']++; + ++$options['redirected']; $location = $return->headers['location']; if (strpos($location, 'http://') !== 0 && strpos($location, 'https://') !== 0) { // relative redirect, for compatibility make it absolute diff --git a/src/Transport/Curl.php b/src/Transport/Curl.php index 49522f5f9..d5640dce2 100644 --- a/src/Transport/Curl.php +++ b/src/Transport/Curl.php @@ -316,7 +316,7 @@ public function request_multiple($requests, $options) { $options['hooks']->dispatch('multiple.request.complete', [&$responses[$key], $key]); } - $completed++; + ++$completed; } } while ($active || $completed < $subrequestcount); From 43c8d0693a745e742567d94fadab7217397a38a5 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Mon, 11 Sep 2023 11:14:42 +0200 Subject: [PATCH 02/14] Composer: update to WordPressCS 3.0.0 Composer: * No need for requiring the Composer PHPCS plugin anymore as it now comes automatically with WPCS and removing the requirement allows WPCS to manage the supported versions, preventing conflicts (and will update us to the 1.0.0 version). * As the minimum supported version of PHPCS for WPCS is now above 3.7.1, we don't need the explicit require for PHPCS anymore either. PHPCS ruleset: * Various tweaks to the sniff and property names as per the changes in WPCS 3.0.0. Refs: * https://github.com/WordPress/WordPress-Coding-Standards/releases/tag/3.0.0 * https://github.com/WordPress/WordPress-Coding-Standards/wiki/Upgrade-Guide-to-WordPressCS-3.0.0-for-ruleset-maintainers --- .phpcs.xml.dist | 18 +++++++++--------- composer.json | 4 +--- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.phpcs.xml.dist b/.phpcs.xml.dist index 79f702460..bae62cc1b 100644 --- a/.phpcs.xml.dist +++ b/.phpcs.xml.dist @@ -71,12 +71,6 @@ - - - - @@ -86,7 +80,7 @@ ========================================================================== --> - + - + @@ -133,6 +127,12 @@ + + + + + + @@ -173,7 +173,7 @@ - + diff --git a/composer.json b/composer.json index da9a903fc..488331401 100644 --- a/composer.json +++ b/composer.json @@ -48,10 +48,8 @@ }, "require-dev": { "requests/test-server": "dev-main", - "squizlabs/php_codesniffer": "^3.6", "phpcompatibility/php-compatibility": "^10.0.0@dev", - "wp-coding-standards/wpcs": "^2.0", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.0", + "wp-coding-standards/wpcs": "^3.0", "php-parallel-lint/php-parallel-lint": "^1.3.1", "php-parallel-lint/php-console-highlighter": "^0.5.0", "yoast/phpunit-polyfills": "^1.1.5" From 3ffa2abd9c0561af4c432a7d80f8b221d073990b Mon Sep 17 00:00:00 2001 From: jrfnl Date: Mon, 26 Jun 2023 09:39:54 +0200 Subject: [PATCH 03/14] WordPressCS 3.0.0: add ignore annotation ... for a parameter using a reserved keyword for its name, which is discouraged. This method is deprecated, so changing this is irrelevant. --- library/Requests.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/Requests.php b/library/Requests.php index 14dcba4c0..af9acbd11 100644 --- a/library/Requests.php +++ b/library/Requests.php @@ -53,6 +53,8 @@ class Requests extends WpOrg\Requests\Requests { * * @codeCoverageIgnore * + * @phpcs:disable Universal.NamingConventions.NoReservedKeywordParameterNames.classFound -- Deprecated, so not relevant to change. + * * @param string $class Class name to load */ public static function autoloader($class) { From af9d935591b367cad4b319779d0be78c8b376092 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Mon, 26 Jun 2023 09:37:36 +0200 Subject: [PATCH 04/14] Session: remove use of `compact()` ... and make the build up of the `$request` explicit. This removes a warning about a (not) "unused parameter". --- src/Session.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Session.php b/src/Session.php index 000d2526d..1e9c4fb7c 100644 --- a/src/Session.php +++ b/src/Session.php @@ -227,7 +227,13 @@ public function patch($url, $headers, $data = [], $options = []) { * @throws \WpOrg\Requests\Exception On invalid URLs (`nonhttp`) */ public function request($url, $headers = [], $data = [], $type = Requests::GET, $options = []) { - $request = $this->merge_request(compact('url', 'headers', 'data', 'options')); + $request = [ + 'url' => $url, + 'headers' => $headers, + 'data' => $data, + 'options' => $options, + ]; + $request = $this->merge_request($request); return Requests::request($request['url'], $request['headers'], $request['data'], $type, $request['options']); } From b5ef7b6c9d8eca38ea300a4d0a9029b7ecbdc210 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Mon, 26 Jun 2023 09:37:36 +0200 Subject: [PATCH 05/14] RegisterTest: remove unused parameter --- tests/HooksTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/HooksTest.php b/tests/HooksTest.php index f64b0f19e..44a11d7d5 100644 --- a/tests/HooksTest.php +++ b/tests/HooksTest.php @@ -107,7 +107,7 @@ public function testRegister() { public function testRegisterClosureCallback() { $this->hooks->register( 'hookname', - function($param) { + function() { return true; } ); From a26db1271bdd51b5e4105618c4b81a486ee313af Mon Sep 17 00:00:00 2001 From: jrfnl Date: Mon, 14 Aug 2023 12:16:34 +0200 Subject: [PATCH 06/14] Various minor CS fixes --- src/Exception/Transport/Curl.php | 1 - src/Response.php | 2 +- tests/AutoloadTest.php | 2 +- tests/HooksTest.php | 16 ++++++++-------- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/Exception/Transport/Curl.php b/src/Exception/Transport/Curl.php index 4c0294d74..1c723c824 100644 --- a/src/Exception/Transport/Curl.php +++ b/src/Exception/Transport/Curl.php @@ -76,5 +76,4 @@ public function __construct($message, $type, $data = null, $code = 0) { public function getReason() { return $this->reason; } - } diff --git a/src/Response.php b/src/Response.php index 86a0438ba..c1e7eff91 100644 --- a/src/Response.php +++ b/src/Response.php @@ -108,7 +108,7 @@ public function __construct() { */ public function is_redirect() { $code = $this->status_code; - return in_array($code, [300, 301, 302, 303, 307], true) || $code > 307 && $code < 400; + return in_array($code, [300, 301, 302, 303, 307], true) || ($code > 307 && $code < 400); } /** diff --git a/tests/AutoloadTest.php b/tests/AutoloadTest.php index 7d8f89003..be12b1f0f 100644 --- a/tests/AutoloadTest.php +++ b/tests/AutoloadTest.php @@ -42,7 +42,7 @@ public function testDeprecationNoticeThrownForOtherOldRequestsClass() { public function testAutoloadOfOldRequestsClassDoesNotThrowAFatalForFinalClass() { define('REQUESTS_SILENCE_PSR0_DEPRECATIONS', true); - $this->assertInstanceOf(FilteredIterator::class, new Requests_utility_filteredIterator([], function() {})); + $this->assertInstanceOf(FilteredIterator::class, new Requests_utility_filteredIterator([], function () {})); } /** diff --git a/tests/HooksTest.php b/tests/HooksTest.php index 44a11d7d5..6f00202e2 100644 --- a/tests/HooksTest.php +++ b/tests/HooksTest.php @@ -107,7 +107,7 @@ public function testRegister() { public function testRegisterClosureCallback() { $this->hooks->register( 'hookname', - function() { + function () { return true; } ); @@ -254,48 +254,48 @@ public function testDispatchRespectsHookPriority() { // Register multiple callbacks for the same hook with a variation of priorities. $this->hooks->register( 'hook_a', - function(&$text) { + function (&$text) { $text .= "no prio 0\n"; } ); $this->hooks->register( 'hook_a', - function(&$text) { + function (&$text) { $text .= "prio 10-1\n"; }, 10 ); $this->hooks->register( 'hook_a', - function(&$text) { + function (&$text) { $text .= "prio -3\n"; }, -3 ); $this->hooks->register( 'hook_a', - function(&$text) { + function (&$text) { $text .= "prio 5\n"; }, 5 ); $this->hooks->register( 'hook_a', - function(&$text) { + function (&$text) { $text .= "prio 2-1\n"; }, 2 ); $this->hooks->register( 'hook_a', - function(&$text) { + function (&$text) { $text .= "prio 2-2\n"; }, 2 ); $this->hooks->register( 'hook_a', - function(&$text) { + function (&$text) { $text .= "prio 10-2\n"; }, 10 From 8ec0cb90ccd4f19a83e1a412e70ad41a127ccee2 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Mon, 11 Sep 2023 11:18:10 +0200 Subject: [PATCH 07/14] GH Actions: run CS check against PHP "latest" ... as WordPressCS will not throw deprecations anymore. --- .github/workflows/cs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cs.yml b/.github/workflows/cs.yml index 644b9b117..287c2d594 100644 --- a/.github/workflows/cs.yml +++ b/.github/workflows/cs.yml @@ -51,7 +51,7 @@ jobs: - name: Install PHP uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2 with: - php-version: '7.4' + php-version: 'latest' coverage: none tools: cs2pr From be435d7c8651e223029a98b37c06c4123161f4e0 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 21 Jan 2025 09:46:04 +0100 Subject: [PATCH 08/14] Composer: bump minimum versions for some dependencies Each of these dependencies has a minimum PHP version which aligns with the minimum PHP version of this package, so these can safely be "bumped" to enforce using the latest versions of these dependencies (which is what would be used in CI anyway). --- composer.json | 4 ++-- tests/Utility/InputValidatorTest.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index 488331401..737cebd74 100644 --- a/composer.json +++ b/composer.json @@ -49,8 +49,8 @@ "require-dev": { "requests/test-server": "dev-main", "phpcompatibility/php-compatibility": "^10.0.0@dev", - "wp-coding-standards/wpcs": "^3.0", - "php-parallel-lint/php-parallel-lint": "^1.3.1", + "wp-coding-standards/wpcs": "^3.1", + "php-parallel-lint/php-parallel-lint": "^1.4.0", "php-parallel-lint/php-console-highlighter": "^0.5.0", "yoast/phpunit-polyfills": "^1.1.5" }, diff --git a/tests/Utility/InputValidatorTest.php b/tests/Utility/InputValidatorTest.php index d465acc5c..018964bdf 100644 --- a/tests/Utility/InputValidatorTest.php +++ b/tests/Utility/InputValidatorTest.php @@ -33,7 +33,7 @@ final class InputValidatorTest extends TestCase { */ public static function tear_down_after_test() { if (isset(self::$curl_handle) && is_resource(self::$curl_handle)) { - // phpcs:ignore PHPCompatibility.FunctionUse.RemovedFunctions.curl_closeDeprecated + // phpcs:ignore PHPCompatibility.FunctionUse.RemovedFunctions.curl_closeDeprecated,Generic.PHP.DeprecatedFunctions.Deprecated curl_close(self::$curl_handle); } From cc6cd3dc6ecec3e481cd27ad6749ccc8823af0bd Mon Sep 17 00:00:00 2001 From: jrfnl Date: Sun, 26 Jul 2026 23:42:15 +0200 Subject: [PATCH 09/14] GH Actions: fail "setup-php" if requested tooling could not be installed Setup-PHP will normally "gracefully" show a warning and not fail the build when an extension or tool failed to install. In most cases, this is not particularly useful as that means that either there will be a failure later on in the build due to the extension or tool missing, or the build will not be representative of what is supposed to be tested. This commit changes this behaviour to fail select builds at the `setup-php` step, which also makes debugging these type of build failures much more straight-forward. Ref: https://github.com/shivammathur/setup-php?tab=readme-ov-file#fail-fast-optional --- .github/workflows/lint.yml | 2 ++ .github/workflows/quicktest.yml | 2 ++ .github/workflows/test.yml | 2 ++ 3 files changed, 6 insertions(+) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 79495867c..6af486965 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -38,6 +38,8 @@ jobs: ini-values: error_reporting=-1, display_errors=On, display_startup_errors=On, log_errors_max_len=0 coverage: none tools: cs2pr + env: + fail-fast: true # Install dependencies and handle caching in one go. # @link https://github.com/marketplace/actions/install-composer-dependencies diff --git a/.github/workflows/quicktest.yml b/.github/workflows/quicktest.yml index 5b289e379..c53483361 100644 --- a/.github/workflows/quicktest.yml +++ b/.github/workflows/quicktest.yml @@ -37,6 +37,8 @@ jobs: php-version: ${{ matrix.php }} ini-values: zend.assertions=1, error_reporting=-1, display_errors=On, display_startup_errors=On, log_errors_max_len=0 coverage: none + env: + fail-fast: true # At least one test needs a non-en_US locale to be available, so make sure it is. - name: Install locales diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7ee2f5a68..d9f4d2ff4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -49,6 +49,8 @@ jobs: ini-values: zend.assertions=1, error_reporting=-1, display_errors=On, display_startup_errors=On, log_errors_max_len=0 coverage: ${{ matrix.coverage && 'xdebug' || 'none' }} tools: cs2pr + env: + fail-fast: true # At least one test needs a non-en_US locale to be available, so make sure it is. - name: Install locales From e50983824ad7779dd3e92a343a79ab140962d876 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 28 Jul 2026 16:30:41 +0200 Subject: [PATCH 10/14] Tighten up the GitHub Actions workflow permissions (#1048) * Tighten up the GitHub Actions workflow permissions. * Add inline docs to the permissions directives. --- .github/workflows/cs.yml | 8 ++++++++ .github/workflows/label-merge-conflicts.yml | 6 ++++++ .github/workflows/lint.yml | 6 ++++++ .github/workflows/quicktest.yml | 6 ++++++ .github/workflows/reusable-update-cacert.yml | 8 ++++++++ .github/workflows/test.yml | 6 ++++++ .github/workflows/update-cacert-cron.yml | 7 +++++++ .github/workflows/update-cacert.yml | 8 ++++++++ .github/workflows/update-website.yml | 13 ++++++++++--- 9 files changed, 65 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cs.yml b/.github/workflows/cs.yml index 287c2d594..0f5d9ef56 100644 --- a/.github/workflows/cs.yml +++ b/.github/workflows/cs.yml @@ -13,10 +13,16 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + jobs: actionlint: #---------------------------------------------------------------------- name: 'Check GHA workflows' runs-on: ubuntu-latest + permissions: + contents: read # Needed to clone the repo. steps: - name: Checkout code @@ -41,6 +47,8 @@ jobs: phpcs: #---------------------------------------------------------------------- name: 'PHPCS' runs-on: ubuntu-latest + permissions: + contents: read # Needed to clone the repo. steps: - name: Checkout code diff --git a/.github/workflows/label-merge-conflicts.yml b/.github/workflows/label-merge-conflicts.yml index 9c72ce909..318eb97d5 100644 --- a/.github/workflows/label-merge-conflicts.yml +++ b/.github/workflows/label-merge-conflicts.yml @@ -13,10 +13,16 @@ on: - synchronize - reopened +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + jobs: check-prs: runs-on: ubuntu-latest if: github.repository_owner == 'WordPress' + permissions: + pull-requests: write # Needed to add and remove labels on the PR. name: Check PRs for merge conflicts diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 6af486965..470469243 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -13,9 +13,15 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + jobs: lint: #---------------------------------------------------------------------- runs-on: ubuntu-latest + permissions: + contents: read # Needed to clone the repo. strategy: matrix: diff --git a/.github/workflows/quicktest.yml b/.github/workflows/quicktest.yml index c53483361..c6801091e 100644 --- a/.github/workflows/quicktest.yml +++ b/.github/workflows/quicktest.yml @@ -13,11 +13,17 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + jobs: #### QUICK TEST STAGE #### # Runs the tests against select PHP versions for pushes to arbitrary branches. quicktest: runs-on: ubuntu-latest + permissions: + contents: read # Needed to clone the repo. strategy: matrix: diff --git a/.github/workflows/reusable-update-cacert.yml b/.github/workflows/reusable-update-cacert.yml index bcd7b6f15..05c4b0c6e 100644 --- a/.github/workflows/reusable-update-cacert.yml +++ b/.github/workflows/reusable-update-cacert.yml @@ -3,11 +3,19 @@ name: Certificates on: workflow_call: +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + jobs: certificate-check: name: "Check for updated certificate bundle" runs-on: ubuntu-latest + permissions: + contents: write # Needed to push commits to a branch in the repo. + pull-requests: write # Needed to create a PR. + steps: - name: Determine branches to use id: branches diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d9f4d2ff4..2aaf39c5a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,10 +14,16 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + jobs: #### TEST STAGE #### test: runs-on: ubuntu-latest + permissions: + contents: read # Needed to clone the repo. strategy: # Keys: diff --git a/.github/workflows/update-cacert-cron.yml b/.github/workflows/update-cacert-cron.yml index b37d842e0..b263b73a2 100644 --- a/.github/workflows/update-cacert-cron.yml +++ b/.github/workflows/update-cacert-cron.yml @@ -11,9 +11,16 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + jobs: certificate-check: # Don't run the cron job on forks. if: ${{ github.event.repository.fork == false }} + permissions: + contents: write # Needed to push commits to a branch in the repo. + pull-requests: write # Needed to create a PR. uses: ./.github/workflows/reusable-update-cacert.yml diff --git a/.github/workflows/update-cacert.yml b/.github/workflows/update-cacert.yml index b3e600923..6439c4fab 100644 --- a/.github/workflows/update-cacert.yml +++ b/.github/workflows/update-cacert.yml @@ -24,6 +24,14 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + jobs: certificate-check: + permissions: + contents: write # Needed to push commits to a branch in the repo. + pull-requests: write # Needed to create a PR. + uses: ./.github/workflows/reusable-update-cacert.yml diff --git a/.github/workflows/update-website.yml b/.github/workflows/update-website.yml index 232912e68..bcb4327c1 100644 --- a/.github/workflows/update-website.yml +++ b/.github/workflows/update-website.yml @@ -21,9 +21,9 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true -permissions: - pull-requests: write - contents: write +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} jobs: prepare: @@ -32,6 +32,9 @@ jobs: if: github.repository == 'WordPress/Requests' runs-on: ubuntu-latest + permissions: + contents: read # Needed to clone the repo. + steps: # By default use the `stable` branch as the published docs should always # reflect the latest release. @@ -89,6 +92,10 @@ jobs: if: github.repository == 'WordPress/Requests' runs-on: ubuntu-latest + permissions: + contents: write # Needed to push commits to a branch in the repo. + pull-requests: write # Needed to create a PR. + steps: # PRs based on the "pull request" event trigger will contain changes from the # current `develop` branch, so should not be published as the website should From 877297b34c334bf73e0167c713a33295edef7dc9 Mon Sep 17 00:00:00 2001 From: Alain Schlesser Date: Mon, 31 Aug 2026 10:00:38 +0200 Subject: [PATCH 11/14] Skip the SNI test until it can verify SNI again The test requests an HTTPS host and expects a 200, which only demonstrates anything if that host serves a different certificate when no SNI is sent. It no longer does, so a transport which quietly stopped sending SNI would still pass. The host has meanwhile also started answering 403 to every client, including a plain `curl`, so the test fails for reasons entirely unrelated to the library. Pointing it at another host would get the suite green again, but it would also leave a test standing which looks like it covers something it does not. Skipping it says what is actually the case, and keeps the intent visible for whoever picks it up. Refs #1077, which has the measurements and the options for getting real coverage back. --- tests/Transport/BaseTestCase.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/Transport/BaseTestCase.php b/tests/Transport/BaseTestCase.php index 00fd584bd..805d79323 100644 --- a/tests/Transport/BaseTestCase.php +++ b/tests/Transport/BaseTestCase.php @@ -911,8 +911,18 @@ public function testAlternateNameSupport() { * * humanmade.com (owned by Human Made and used with permission) points to * CloudFront, and will fail if SNI isn't sent. + * {@internal Skipped for the time being. The above no longer holds: the host serves the + * same certificate whether SNI is sent or not, so a transport which stopped sending it + * would still pass, and the host has meanwhile started refusing requests outright. + * See https://github.com/WordPress/Requests/issues/1077.} + * */ public function testSNISupport() { + $this->markTestSkipped( + 'This test does not verify SNI support anymore.' + . ' See https://github.com/WordPress/Requests/issues/1077' + ); + if ($this->skip_https) { $this->markTestSkipped('SSL support is not available.'); return; From d0ed244a4e6f855d6f476e7878f0987e380f79f9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 08:06:55 +0000 Subject: [PATCH 12/14] :lock_with_ink_pen: Update certificate bundle --- certificates/cacert.pem | 148 +++++++++++++++++++++------------ certificates/cacert.pem.sha256 | 2 +- 2 files changed, 95 insertions(+), 55 deletions(-) diff --git a/certificates/cacert.pem b/certificates/cacert.pem index 26ec7f7ba..d228daeed 100644 --- a/certificates/cacert.pem +++ b/certificates/cacert.pem @@ -1,7 +1,7 @@ ## ## Bundle of CA Root Certificates ## -## Certificate data from Mozilla as of: Thu Jul 16 03:12:01 2026 GMT +## Certificate data from Mozilla as of: Thu Aug 13 03:12:01 2026 GMT ## ## Find updated versions here: https://curl.se/docs/caextract.html ## @@ -16,7 +16,7 @@ ## Configure this file as the SSLCACertificateFile. ## ## Conversion done with mk-ca-bundle.pl version 1.33. -## SHA256: e57912808daef7b2b0fa4df2ccf17e47aeaf26c839a38f85c76003ebafd866bd +## SHA256: 81b7f2576333a2e360e673f912d7b0b7a765d836c731003e348a46cac5d37198 ## @@ -37,37 +37,6 @@ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= -----END CERTIFICATE----- -ePKI Root Certification Authority -================================= ------BEGIN CERTIFICATE----- -MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG -EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg -Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx -MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq -MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B -AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs -IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi -lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv -qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX -12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O -WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ -ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao -lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ -vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi -Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi -MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH -ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 -1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq -KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV -xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP -NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r -GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE -xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx -gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy -sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD -BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= ------END CERTIFICATE----- - NetLock Arany (Class Gold) Főtanúsítvány ======================================== -----BEGIN CERTIFICATE----- @@ -585,27 +554,6 @@ vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR 9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== -----END CERTIFICATE----- -Atos TrustedRoot 2011 -===================== ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU -cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 -MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG -A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV -hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr -54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ -DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 -HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR -z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R -l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ -bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB -CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h -k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh -TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 -61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G -3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed ------END CERTIFICATE----- - QuoVadis Root CA 1 G3 ===================== -----BEGIN CERTIFICATE----- @@ -2908,3 +2856,95 @@ CgYIKoZIzj0EAwQDgYsAMIGHAkIBLdqu9S54tma4n7Zwf2Z0z+yOfP7AAXmazlIC58PRDHpty7Ve 7hekm9sEdu4pKeiv+62sUvTXK9Z3hBC9xdIoaDQCQTV2WnXzkoYI9bIeCvZlC9p2x1L/Cx6AcCIw wzPbGO2E14vs7dOoY4G1VnxHx1YwlGhza9IuqbnZLBwpvQy6uWWL -----END CERTIFICATE----- + +SECOM TLS RSA Root CA 2024 +========================== +-----BEGIN CERTIFICATE----- +MIIFmjCCA4KgAwIBAgIJAO6JNNDLgOCyMA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAkpQMSYw +JAYDVQQKEx1TRUNPTSBUcnVzdCBTeXN0ZW1zIENvLiwgTHRkLjEjMCEGA1UEAxMaU0VDT00gVExT +IFJTQSBSb290IENBIDIwMjQwHhcNMjQwMTMxMDUxMTU1WhcNNDkwMTE0MDUxMTU1WjBaMQswCQYD +VQQGEwJKUDEmMCQGA1UEChMdU0VDT00gVHJ1c3QgU3lzdGVtcyBDby4sIEx0ZC4xIzAhBgNVBAMT +GlNFQ09NIFRMUyBSU0EgUm9vdCBDQSAyMDI0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEA4TjizUwzxbInq8Tx11gaFYNk5fO+34y7TyM4neh0UgL5JIZbJNLTz2x//L/B71+5m6X6nGIr +7d4lFJBGtjO677hXOz93zkcWaUTm3VbOAjBlt4YWxlcccBHXuZ7o3Q+4R+ormrBdHeJ1CTUEG8tt +QbKIl3G7OZYbnH8/pP8cjPub/0kDVNuMzp7xsVRROOisQt53fMoJLlYgoebbuMphOqMCtjkJ7R6e +fEMfLp8UAVi9ZaLRn76ET/CJkk925nduuufC4BatS4mnXFmxN0vUXb0ij9B8O/D8gixQEsVSD4GK +8FWRPh3bVd/6bzdkHGJjy21XI0yejVomZUbRrOfNuz0boPGV1pt18fFC39IHQEth3OFqb5NDO3L+ +A9bNqTgAyUgRmIn4ucgDc/Ri/Km3V51ueZjy1/yk0qwJVadAVVrCt56iNeXOyEvzJADGgDQ8E1Pd +aqct8Cynz/47ReQM62vFYO08wcQkrjmX/tesiko1V1yyaf6EfPzUFzmaGy9xvkCwdbm15EdTolOj +E0H2Vb5/APDOyCFEokiYGmXTLdAUl0wKZ4IyjkHGzy0jhpaXEXE/GJcEvI6VzEchjaBL03EJ0h9p +G4OqeIOycKvAo3A+TbetyfsrgYyHzU0a7/qUjGat1AAq1nVljMpKqpinPTsf/d9H39FTUeJL7Tpz +zjUCAwEAAaNjMGEwHQYDVR0OBBYEFCzrchKOWHdkNRVWNQFXB6l9DTbmMB8GA1UdIwQYMBaAFCzr +chKOWHdkNRVWNQFXB6l9DTbmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBDAUAA4ICAQAVwsvluSafaez5tFPR/hRTBzRxEyMMQF3XJXCVi3yegZyKoec7hmE6jx2Z +M8KgM1kn2yJRwFXHX8zUW9nBLEDWc4wuE8LrlZqhGZM9pJQXGmGzResDJV6JgRBna+j4sA1M7yId +lvL0sAfFXFCTRaWTD4E1V99RLrFzWfTcC+e180hDuNMpqOEo46+lMeW/Wvh7ifOQs+kiK0O2gHxQ +DNxslSavnCs4V7l8HRDJ2La10o70Bo7VLzf1W8MBvv0VTnxB+NjT5qTAbhGFh9Gvp4BaJpmdUf0C +5CEP6dbQlfgxWfzYr69yVT6dPQB+GFEaY03IMY+AcBCs+om1fNxrQXt9zoofMBNFbLhvpNH/JsXW +dGUzfNbO12uswTa5wah8LB18FTQN2/zPHYmvBEoLuyUgZ09VNLJo5YA0kXItVYkLjMe2SixzK4sc +UHv81IK99I91DWx7FwMVKw2xgFp+ZLYB2dnpQQrqwlW64glHUcK2N9BDsnjLSxeZ+UPECh9RxH4W +AcKiZW+cqaKMmhP2WBfR4IcR7NOL32ml11ds87hhV1CZWWFCJAcCidYZz6CZa8exzHojP9SB5RH0 +/v1KdHAisqhSjtJl/UIAHIQ48elOn8wrTdFap4Yb5aHglmMeNx+fAIhDluWVfxTO7H4dTPU+SFVR +MLAh+wwKZfqb94nMeQ== +-----END CERTIFICATE----- + +SECOM TLS ECC Root CA 2024 +========================== +-----BEGIN CERTIFICATE----- +MIICTDCCAdGgAwIBAgIJAIF6LO+PI3pEMAoGCCqGSM49BAMDMFoxCzAJBgNVBAYTAkpQMSYwJAYD +VQQKEx1TRUNPTSBUcnVzdCBTeXN0ZW1zIENvLiwgTHRkLjEjMCEGA1UEAxMaU0VDT00gVExTIEVD +QyBSb290IENBIDIwMjQwHhcNMjQwMTMxMDU1MjM0WhcNNDkwMTE0MDU1MjM0WjBaMQswCQYDVQQG +EwJKUDEmMCQGA1UEChMdU0VDT00gVHJ1c3QgU3lzdGVtcyBDby4sIEx0ZC4xIzAhBgNVBAMTGlNF +Q09NIFRMUyBFQ0MgUm9vdCBDQSAyMDI0MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE7NzFMtu9dzQX +SNC12fabk0+GlC5finB3R7XaZonRUd20aFiWObtuNBCLUZSfk6QXAE55BjEXsXQ/NG8yUqicXjsu +9ksDK3JZBgCwLOVh6+nwJXTvso/dEj/GUYH5mBdoo2MwYTAdBgNVHQ4EFgQUO3YReyl04k4GTFaC +QNAhL3qzydUwHwYDVR0jBBgwFoAUO3YReyl04k4GTFaCQNAhL3qzydUwDgYDVR0PAQH/BAQDAgEG +MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwMDaQAwZgIxAN3ib8fi1pMYtAPjMilB5e5/H+t5 +CL0xPL+cZ5oTTZuSCjpAn1v7F/VAr8bFxQXAowIxAKsBVO1ACFp7skwzPvdv1EUY5a897WGLT4lb ++bjxFAWyl8wDcZJdwGZ/pAHxt1AJ1g== +-----END CERTIFICATE----- + +Telia EC TLS Root CA v3 +======================= +-----BEGIN CERTIFICATE----- +MIICMjCCAbegAwIBAgIPAYvSIlRjTQSLbOVHH9K1MAoGCCqGSM49BAMDMEoxCzAJBgNVBAYTAlNF +MRkwFwYDVQQKDBBUZWxpYSBDb21wYW55IEFCMSAwHgYDVQQDDBdUZWxpYSBFQyBUTFMgUm9vdCBD +QSB2MzAeFw0yMzExMTUwODU1MjZaFw00ODA1MjMxMTAwMDBaMEoxCzAJBgNVBAYTAlNFMRkwFwYD +VQQKDBBUZWxpYSBDb21wYW55IEFCMSAwHgYDVQQDDBdUZWxpYSBFQyBUTFMgUm9vdCBDQSB2MzB2 +MBAGByqGSM49AgEGBSuBBAAiA2IABMHIlhVDLbmFKUpW0iK4dpryT6emYOeS31JPwWnWPmkWRrAk +TbPX40sQfHI9mpR7Rbktu3ngg6W+BBSXSechtMCnBmWXj/EaVlmV5cY1jD2HoTfhBQ3AacpCNMLJ +K4NpZaNjMGEwHwYDVR0jBBgwFoAU1GToQ4g6cy/QGnGCNgtehd7H3kMwHQYDVR0OBBYEFNRk6EOI +OnMv0BpxgjYLXoXex95DMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49 +BAMDA2kAMGYCMQCXAUdS/9bbJ8A1JYaGf/bWt/s7Ta0ot5Ulno8OjSNYRWQIlS4tVWldvTAVA7he +OFgCMQCvKr8+Z2Rn+OBr5UHzlgBObpad1LuwNTRcdNgUJxIWadcki+UBLEi1/AURKV5md2M= +-----END CERTIFICATE----- + +Telia RSA TLS Root CA v3 +======================== +-----BEGIN CERTIFICATE----- +MIIFgjCCA2qgAwIBAgIPAYvSUKtCVSxHWr2h3BrFMA0GCSqGSIb3DQEBDAUAMEsxCzAJBgNVBAYT +AlNFMRkwFwYDVQQKDBBUZWxpYSBDb21wYW55IEFCMSEwHwYDVQQDDBhUZWxpYSBSU0EgVExTIFJv +b3QgQ0EgdjMwHhcNMjMxMTE1MDk0NzQyWhcNNDgwNTIzMTEwMDAwWjBLMQswCQYDVQQGEwJTRTEZ +MBcGA1UECgwQVGVsaWEgQ29tcGFueSBBQjEhMB8GA1UEAwwYVGVsaWEgUlNBIFRMUyBSb290IENB +IHYzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsV89KG19hCf4S1Fvk8D3TyDERhmc +vx8F7Kmb4WATx3ije1id3KHxRE0TKmcNCbAQ57bvHFEYa4hR2l20VjVadExqOW+2ld99MbEiO+jR +VOz+BbxLxJnmGwCqI+BfuTjjVReDxsxjQvjgBsClaO/sm5i70nlZcWGRtIkvWDK3NNkT5RtwXc/O +8NTFVpbUqT6cRjIj3olAblR+lRf4Ffy5o+Q9fabjYn9Z9S4itruElcEFf9Ljk7fwdTycT/rvJW9w +/B3G2a3r0f/zXNOVruIBcqE6pkSospACU2bG42fYKrbM/GWnp7u+p9Frz4jaNwpb4YHuEeS8Brat +NcP8X62jXIvvKHxlsMDJCnb4U8JzFOLsU6mohVY58BdZrvi0Gk9UOuqmgoG6dskHoksjZTlK61D/ +InzmEoA1yAYJFDVysjRxDUOu9cAwANbqmq77WIFL6BpnZgVqPtMfG6wN8BrTKdapvilVsYR59BFg +IsAVBMxrGh+W+QcvmJafUpASvlArKvVG2FI4i6PiLjSBT0+6F6EQLrYqefOQF/fBNEXb+njUQ0SU +VrAqtH4Y+OjCI/a4/JJQppxeemZcQ0SUShgiI5AM5xHO5iyaUrTjYH4zxUz9j+1FEbDH/xpstr1g +XBykspup+hRTaJcbA+UbpJqtWZndAPddJmt6YJQ+dU3pDu8CAwEAAaNjMGEwHwYDVR0jBBgwFoAU +sMep0t2yKFZzBJSMFFxIbzdSkqgwHQYDVR0OBBYEFLDHqdLdsihWcwSUjBRcSG83UpKoMA4GA1Ud +DwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQBdYzFsNGDRk7bR +/AgRKq+5637YuOW+w6uhpoS0VnKMUpyHCwku86hEvqivakPtfmlm4bFwt++sb/8OXsWBqtfbXMaB +NDTZl8XRMJuLWOW2JrbKkRzgG0eBUcvsadG1rrhbmZqYvFXaAZO7o4TdOZzxhBB5GOAWWXB3Iera +NP4J63zyo9n8Gqw3sJBG44em5hoYjBffP+npibyslnslRi4L6xHsCYj/Pab+OlqbMCB6v+sTCLeE +IukRVzoR9aQ45pEK7Z1QBnSsbAKQtss0JKD9d/mX143H1xePjPhTXlv5JCkhrcj+SShz0P9+EHoW +e6m9lyUEOIVn0rp+yVJWNbmyDv3VkwFxHC1ApSQsgSimjGQ4wtr6cSmordYxkV+Ro8lOIIhRksXP +yDk27gW6IjUXCkZKpxFjkL3jiBSc8SkxnwCWtXg8xwNwdFVNBGLCCuJnsneYXjJNqzRqUcoGwzsv +F3Qi/ZnHUNvISdevlgIAXL4Wvrxaqvoa01wB+GCfs57RTGE4TvAGhKNKus8K3hRT1BSpigzMIRzS +xtAOrqPN6j//QSmW9f8Jcncri4j2ihSpVrFU0NdNkMhZeAKidTFPsxCVFuW4Aniz7jqiw5sWtjbQ +rlW035izIEU4sYwQoC1Nx0Svy+mMTRai50LqFQ+A1/Hq6xHHDNx7CI83d23Erw== +-----END CERTIFICATE----- diff --git a/certificates/cacert.pem.sha256 b/certificates/cacert.pem.sha256 index 94fc94a2d..85371bab4 100644 --- a/certificates/cacert.pem.sha256 +++ b/certificates/cacert.pem.sha256 @@ -1 +1 @@ -3ff344e30b9b1ed2971044eabb438a08f2e2245ddb5f8ab1a3ad8b63ab4eaf91 cacert.pem +f66dff1bdf8f96060b8177976f8b7d9254bc89bc4db933d769f7384d28480bc9 cacert.pem From a5c508b733aef3f9fddd39045ce8b2ad6582a80e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 08:08:52 +0000 Subject: [PATCH 13/14] GH Actions: Bump ruby/setup-ruby Bumps the action-runners group with 1 update in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby). Updates `ruby/setup-ruby` from 1.319.0 to 1.321.0 - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/003a5c4d8d6321bd302e38f6f0ec593f77f06600...95ef2b042f9d7a56d8268cba8559e2842e2ad01b) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.321.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: action-runners ... Signed-off-by: dependabot[bot] --- .github/workflows/update-website.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-website.yml b/.github/workflows/update-website.yml index bcb4327c1..155255b8b 100644 --- a/.github/workflows/update-website.yml +++ b/.github/workflows/update-website.yml @@ -200,7 +200,7 @@ jobs: # Test that the site builds correctly. - name: Set up Ruby - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: # Use the version as per https://pages.github.com/versions/. ruby-version: 3.3.4 From 03f59b8f411b1acf8254c29fcc1dc3904f75574e Mon Sep 17 00:00:00 2001 From: jrfnl Date: Mon, 31 Aug 2026 09:58:25 +0200 Subject: [PATCH 14/14] Changelog for release 2.0.20 * Includes updating the version number constant. --- CHANGELOG.md | 9 +++++++++ src/Requests.php | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d46db21d7..7350c6778 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ Changelog ========= +2.0.20 +------ + +### Overview of changes +- Update bundled certificates as of 2026-08-13. [#1076] +- General housekeeping. + +[#1076]: https://github.com/WordPress/Requests/pull/1076 + 2.0.19 ------ diff --git a/src/Requests.php b/src/Requests.php index d632bd943..a9d3b3272 100644 --- a/src/Requests.php +++ b/src/Requests.php @@ -40,7 +40,7 @@ class Requests { * * @var string */ - const VERSION = '2.0.19'; + const VERSION = '2.0.20'; /** * POST method