diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index ebfaf32e193bcb1..47d38b7542913cb 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -273,7 +273,7 @@ jobs:
# Keep 1.1.1w in our list despite it being upstream EOL and otherwise
# unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
# supported by important vendors such as AWS-LC.
- openssl_ver: [1.1.1w, 3.0.17, 3.2.5, 3.3.4, 3.4.2, 3.5.2]
+ openssl_ver: [1.1.1w, 3.0.18, 3.2.6, 3.3.5, 3.4.3, 3.5.4]
# See Tools/ssl/make_ssl_data.py for notes on adding a new version
env:
OPENSSL_VER: ${{ matrix.openssl_ver }}
@@ -438,7 +438,7 @@ jobs:
needs: build-context
if: needs.build-context.outputs.run-tests == 'true'
env:
- OPENSSL_VER: 3.0.16
+ OPENSSL_VER: 3.0.18
PYTHONSTRICTEXTENSIONBUILD: 1
steps:
- uses: actions/checkout@v4
@@ -558,7 +558,7 @@ jobs:
matrix:
os: [ubuntu-24.04]
env:
- OPENSSL_VER: 3.0.16
+ OPENSSL_VER: 3.0.18
PYTHONSTRICTEXTENSIONBUILD: 1
ASAN_OPTIONS: detect_leaks=0:allocator_may_return_null=1:handle_segv=0
steps:
diff --git a/.github/workflows/reusable-ubuntu.yml b/.github/workflows/reusable-ubuntu.yml
index 76b19fd5d1a72e2..7f8b9fdf5d66399 100644
--- a/.github/workflows/reusable-ubuntu.yml
+++ b/.github/workflows/reusable-ubuntu.yml
@@ -30,7 +30,7 @@ jobs:
runs-on: ${{ inputs.os }}
timeout-minutes: 60
env:
- OPENSSL_VER: 3.0.15
+ OPENSSL_VER: 3.0.18
PYTHONSTRICTEXTENSIONBUILD: 1
TERM: linux
steps:
diff --git a/Android/android.py b/Android/android.py
index 15046b6fe1e1c00..b810a6bfb3cc424 100755
--- a/Android/android.py
+++ b/Android/android.py
@@ -184,10 +184,16 @@ def make_build_python(context):
run(["make", "-j", str(os.cpu_count())])
+# To create new builds of these dependencies, usually all that's necessary is to
+# push a tag to the cpython-android-source-deps repository, and GitHub Actions
+# will do the rest.
+#
+# If you're a member of the Python core team, and you'd like to be able to push
+# these tags yourself, please contact Malcolm Smith or Russell Keith-Magee.
def unpack_deps(host, prefix_dir):
os.chdir(prefix_dir)
deps_url = "https://github.com/beeware/cpython-android-source-deps/releases/download"
- for name_ver in ["bzip2-1.0.8-3", "libffi-3.4.4-3", "openssl-3.0.15-4",
+ for name_ver in ["bzip2-1.0.8-3", "libffi-3.4.4-3", "openssl-3.0.18-0",
"sqlite-3.50.4-0", "xz-5.4.6-1", "zstd-1.5.7-1"]:
filename = f"{name_ver}-{host}.tar.gz"
download(f"{deps_url}/{name_ver}/{filename}")
diff --git a/Apple/__main__.py b/Apple/__main__.py
index 88b54e91ac84d68..96c2d34fbe09593 100644
--- a/Apple/__main__.py
+++ b/Apple/__main__.py
@@ -312,11 +312,18 @@ def unpack_deps(
On iOS, as a safety mechanism, any dynamic libraries will be purged from
the unpacked dependencies.
"""
+ # To create new builds of these dependencies, usually all that's necessary
+ # is to push a tag to the cpython-apple-source-deps repository, and GitHub
+ # Actions will do the rest.
+ #
+ # If you're a member of the Python core team, and you'd like to be able to
+ # push these tags yourself, please contact Malcolm Smith or Russell
+ # Keith-Magee.
deps_url = "https://github.com/beeware/cpython-apple-source-deps/releases/download"
for name_ver in [
"BZip2-1.0.8-2",
"libFFI-3.4.7-2",
- "OpenSSL-3.0.17-1",
+ "OpenSSL-3.0.18-1",
"XZ-5.6.4-2",
"mpdecimal-4.0.0-2",
"zstd-1.5.7-1",
diff --git a/Doc/using/configure.rst b/Doc/using/configure.rst
index b3a9e081edc9f59..b05e0600114757d 100644
--- a/Doc/using/configure.rst
+++ b/Doc/using/configure.rst
@@ -22,7 +22,7 @@ Features and minimum versions required to build CPython:
* Support for threads.
-* OpenSSL 1.1.1 is the minimum version and OpenSSL 3.0.16 is the recommended
+* OpenSSL 1.1.1 is the minimum version and OpenSSL 3.0.18 is the recommended
minimum version for the :mod:`ssl` and :mod:`hashlib` extension modules.
* SQLite 3.15.2 for the :mod:`sqlite3` extension module.
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 37bde125166f817..244e25c348f5a4b 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -3132,7 +3132,7 @@ JIT_DEPS = \
jit_stencils.h @JIT_STENCILS_H@: $(JIT_DEPS)
@REGEN_JIT_COMMAND@
-Python/jit.o: $(srcdir)/Python/jit.c jit_stencils.h @JIT_STENCILS_H@
+Python/jit.o: $(srcdir)/Python/jit.c @JIT_STENCILS_H@
$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
.PHONY: regen-jit
diff --git a/Misc/NEWS.d/next/Windows/2025-10-04-12-18-45.gh-issue-139573.EO9kVB.rst b/Misc/NEWS.d/next/Windows/2025-10-04-12-18-45.gh-issue-139573.EO9kVB.rst
new file mode 100644
index 000000000000000..02a3bfb41ce5edc
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2025-10-04-12-18-45.gh-issue-139573.EO9kVB.rst
@@ -0,0 +1 @@
+Updated bundled version of OpenSSL to 3.0.18.
diff --git a/Misc/externals.spdx.json b/Misc/externals.spdx.json
index a87af7f91737801..59aceedb94d4c73 100644
--- a/Misc/externals.spdx.json
+++ b/Misc/externals.spdx.json
@@ -70,21 +70,21 @@
"checksums": [
{
"algorithm": "SHA256",
- "checksumValue": "6bb739ecddbd2cfb6d255eb5898437a9b5739277dee931338d3275bac5d96ba2"
+ "checksumValue": "9b07560b6c1afa666bd78b8d3aa5c83fdda02149afdf048596d5b0e0dac1ee55"
}
],
- "downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/openssl-3.0.16.tar.gz",
+ "downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/openssl-3.0.18.tar.gz",
"externalRefs": [
{
"referenceCategory": "SECURITY",
- "referenceLocator": "cpe:2.3:a:openssl:openssl:3.0.16:*:*:*:*:*:*:*",
+ "referenceLocator": "cpe:2.3:a:openssl:openssl:3.0.18:*:*:*:*:*:*:*",
"referenceType": "cpe23Type"
}
],
"licenseConcluded": "NOASSERTION",
"name": "openssl",
"primaryPackagePurpose": "SOURCE",
- "versionInfo": "3.0.16"
+ "versionInfo": "3.0.18"
},
{
"SPDXID": "SPDXRef-PACKAGE-sqlite",
diff --git a/Modules/_ssl_data_35.h b/Modules/_ssl_data_35.h
index 9e69eaa910f0033..e4919b550e3a890 100644
--- a/Modules/_ssl_data_35.h
+++ b/Modules/_ssl_data_35.h
@@ -1,6 +1,6 @@
/* File generated by Tools/ssl/make_ssl_data.py */
-/* Generated on 2025-08-13T16:42:33.155822+00:00 */
-/* Generated from Git commit openssl-3.5.2-0-g0893a6235 */
+/* Generated on 2025-10-04T17:49:19.148321+00:00 */
+/* Generated from Git commit openssl-3.5.4-0-gc1eeb9406 */
/* generated from args.lib2errnum */
static struct py_ssl_library_code library_codes[] = {
@@ -5338,6 +5338,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"FIPS_MODULE_ENTERING_ERROR_STATE", 57, 224},
#endif
+ #ifdef PROV_R_FIPS_MODULE_IMPORT_PCT_ERROR
+ {"FIPS_MODULE_IMPORT_PCT_ERROR", ERR_LIB_PROV, PROV_R_FIPS_MODULE_IMPORT_PCT_ERROR},
+ #else
+ {"FIPS_MODULE_IMPORT_PCT_ERROR", 57, 253},
+ #endif
#ifdef PROV_R_FIPS_MODULE_IN_ERROR_STATE
{"FIPS_MODULE_IN_ERROR_STATE", ERR_LIB_PROV, PROV_R_FIPS_MODULE_IN_ERROR_STATE},
#else
diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat
index eff8d1ccd7f1465..50a227b563a7c0d 100644
--- a/PCbuild/get_externals.bat
+++ b/PCbuild/get_externals.bat
@@ -54,7 +54,7 @@ echo.Fetching external libraries...
set libraries=
set libraries=%libraries% bzip2-1.0.8
if NOT "%IncludeLibffiSrc%"=="false" set libraries=%libraries% libffi-3.4.4
-if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-3.0.16
+if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-3.0.18
set libraries=%libraries% mpdecimal-4.0.0
set libraries=%libraries% sqlite-3.50.4.0
if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-core-8.6.15.0
@@ -79,7 +79,7 @@ echo.Fetching external binaries...
set binaries=
if NOT "%IncludeLibffi%"=="false" set binaries=%binaries% libffi-3.4.4
-if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-3.0.16.2
+if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-3.0.18
if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-8.6.15.0
if NOT "%IncludeSSLSrc%"=="false" set binaries=%binaries% nasm-2.11.06
if NOT "%IncludeLLVM%"=="false" set binaries=%binaries% llvm-19.1.7.0
diff --git a/PCbuild/python.props b/PCbuild/python.props
index 06af15a269ccd9d..cc1572526559ce4 100644
--- a/PCbuild/python.props
+++ b/PCbuild/python.props
@@ -82,8 +82,8 @@
$(libffiDir)$(ArchName)\
$(libffiOutDir)include
$(ExternalsDir)\mpdecimal-4.0.0\
- $(ExternalsDir)openssl-3.0.16\
- $(ExternalsDir)openssl-bin-3.0.16.2\$(ArchName)\
+ $(ExternalsDir)openssl-3.0.18\
+ $(ExternalsDir)openssl-bin-3.0.18\$(ArchName)\
$(opensslOutDir)include
$(ExternalsDir)\nasm-2.11.06\
$(ExternalsDir)\zlib-1.3.1\
diff --git a/Tools/ssl/multissltests.py b/Tools/ssl/multissltests.py
index c0559446982eab1..56976de49989ec3 100755
--- a/Tools/ssl/multissltests.py
+++ b/Tools/ssl/multissltests.py
@@ -48,11 +48,11 @@
]
OPENSSL_RECENT_VERSIONS = [
- "3.0.16",
- "3.2.5",
- "3.3.4",
- "3.4.2",
- "3.5.2",
+ "3.0.18",
+ "3.2.6",
+ "3.3.5",
+ "3.4.3",
+ "3.5.4",
# See make_ssl_data.py for notes on adding a new version.
]
diff --git a/configure b/configure
index 7624cbf0d2ae3d5..0d1f6a29e9b4327 100755
--- a/configure
+++ b/configure
@@ -644,6 +644,7 @@ ac_includes_default="\
ac_header_c_list=
ac_subst_vars='LTLIBOBJS
MODULE_BLOCK
+JIT_STENCILS_H
MODULE_XXLIMITED_35_FALSE
MODULE_XXLIMITED_35_TRUE
MODULE_XXLIMITED_FALSE
@@ -904,7 +905,6 @@ LDSHARED
SHLIB_SUFFIX
DSYMUTIL_PATH
DSYMUTIL
-JIT_STENCILS_H
REGEN_JIT_COMMAND
UNIVERSAL_ARCH_FLAGS
WASM_STDLIB
@@ -10876,7 +10876,6 @@ then :
else case e in #(
e) as_fn_append CFLAGS_NODIST " $jit_flags"
REGEN_JIT_COMMAND="\$(PYTHON_FOR_REGEN) \$(srcdir)/Tools/jit/build.py ${ARCH_TRIPLES:-$host} --output-dir . --pyconfig-dir . --cflags=\"$CFLAGS_JIT\""
- JIT_STENCILS_H="jit_stencils.h"
if test "x$Py_DEBUG" = xtrue
then :
as_fn_append REGEN_JIT_COMMAND " --debug"
@@ -10884,7 +10883,6 @@ fi ;;
esac
fi
-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tier2_flags $jit_flags" >&5
printf "%s\n" "$tier2_flags $jit_flags" >&6; }
@@ -34196,29 +34194,35 @@ printf "%s\n" "$py_cv_module_xxlimited_35" >&6; }
# Determine JIT stencils header files based on target platform
JIT_STENCILS_H=""
-case "$host" in
- aarch64-apple-darwin*)
- JIT_STENCILS_H="jit_stencils-aarch64-apple-darwin.h"
- ;;
- x86_64-apple-darwin*)
- JIT_STENCILS_H="jit_stencils-x86_64-apple-darwin.h"
- ;;
- aarch64-pc-windows-msvc)
- JIT_STENCILS_H="jit_stencils-aarch64-pc-windows-msvc.h"
- ;;
- i686-pc-windows-msvc)
- JIT_STENCILS_H="jit_stencils-i686-pc-windows-msvc.h"
- ;;
- x86_64-pc-windows-msvc)
- JIT_STENCILS_H="jit_stencils-x86_64-pc-windows-msvc.h"
- ;;
- aarch64-*-linux-gnu)
- JIT_STENCILS_H="jit_stencils-$host.h"
- ;;
- x86_64-*-linux-gnu)
- JIT_STENCILS_H="jit_stencils-$host.h"
- ;;
+if test "x$enable_experimental_jit" = xno
+then :
+
+else case e in #(
+ e) case "$host" in
+ aarch64-apple-darwin*)
+ JIT_STENCILS_H="jit_stencils-aarch64-apple-darwin.h"
+ ;;
+ x86_64-apple-darwin*)
+ JIT_STENCILS_H="jit_stencils-x86_64-apple-darwin.h"
+ ;;
+ aarch64-pc-windows-msvc)
+ JIT_STENCILS_H="jit_stencils-aarch64-pc-windows-msvc.h"
+ ;;
+ i686-pc-windows-msvc)
+ JIT_STENCILS_H="jit_stencils-i686-pc-windows-msvc.h"
+ ;;
+ x86_64-pc-windows-msvc)
+ JIT_STENCILS_H="jit_stencils-x86_64-pc-windows-msvc.h"
+ ;;
+ aarch64-*-linux-gnu)
+ JIT_STENCILS_H="jit_stencils-$host.h"
+ ;;
+ x86_64-*-linux-gnu)
+ JIT_STENCILS_H="jit_stencils-$host.h"
+ ;;
+ esac ;;
esac
+fi
diff --git a/configure.ac b/configure.ac
index 7a7e32d42945b9f..7b5da6e0d156823 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2787,13 +2787,11 @@ AS_VAR_IF([jit_flags],
[AS_VAR_APPEND([CFLAGS_NODIST], [" $jit_flags"])
AS_VAR_SET([REGEN_JIT_COMMAND],
["\$(PYTHON_FOR_REGEN) \$(srcdir)/Tools/jit/build.py ${ARCH_TRIPLES:-$host} --output-dir . --pyconfig-dir . --cflags=\"$CFLAGS_JIT\""])
- AS_VAR_SET([JIT_STENCILS_H], ["jit_stencils.h"])
AS_VAR_IF([Py_DEBUG],
[true],
[AS_VAR_APPEND([REGEN_JIT_COMMAND], [" --debug"])],
[])])
AC_SUBST([REGEN_JIT_COMMAND])
-AC_SUBST([JIT_STENCILS_H])
AC_MSG_RESULT([$tier2_flags $jit_flags])
if test "$disable_gil" = "yes" -a "$enable_experimental_jit" != "no"; then
@@ -8175,29 +8173,31 @@ PY_STDLIB_MOD([xxlimited_35], [test "$TEST_MODULES" = yes], [test "$ac_cv_func_d
# Determine JIT stencils header files based on target platform
JIT_STENCILS_H=""
-case "$host" in
- aarch64-apple-darwin*)
- JIT_STENCILS_H="jit_stencils-aarch64-apple-darwin.h"
- ;;
- x86_64-apple-darwin*)
- JIT_STENCILS_H="jit_stencils-x86_64-apple-darwin.h"
- ;;
- aarch64-pc-windows-msvc)
- JIT_STENCILS_H="jit_stencils-aarch64-pc-windows-msvc.h"
- ;;
- i686-pc-windows-msvc)
- JIT_STENCILS_H="jit_stencils-i686-pc-windows-msvc.h"
- ;;
- x86_64-pc-windows-msvc)
- JIT_STENCILS_H="jit_stencils-x86_64-pc-windows-msvc.h"
- ;;
- aarch64-*-linux-gnu)
- JIT_STENCILS_H="jit_stencils-$host.h"
- ;;
- x86_64-*-linux-gnu)
- JIT_STENCILS_H="jit_stencils-$host.h"
- ;;
-esac
+AS_VAR_IF([enable_experimental_jit], [no],
+ [],
+ [case "$host" in
+ aarch64-apple-darwin*)
+ JIT_STENCILS_H="jit_stencils-aarch64-apple-darwin.h"
+ ;;
+ x86_64-apple-darwin*)
+ JIT_STENCILS_H="jit_stencils-x86_64-apple-darwin.h"
+ ;;
+ aarch64-pc-windows-msvc)
+ JIT_STENCILS_H="jit_stencils-aarch64-pc-windows-msvc.h"
+ ;;
+ i686-pc-windows-msvc)
+ JIT_STENCILS_H="jit_stencils-i686-pc-windows-msvc.h"
+ ;;
+ x86_64-pc-windows-msvc)
+ JIT_STENCILS_H="jit_stencils-x86_64-pc-windows-msvc.h"
+ ;;
+ aarch64-*-linux-gnu)
+ JIT_STENCILS_H="jit_stencils-$host.h"
+ ;;
+ x86_64-*-linux-gnu)
+ JIT_STENCILS_H="jit_stencils-$host.h"
+ ;;
+ esac])
AC_SUBST([JIT_STENCILS_H])