public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
To: git-commits@fedoraproject.org
Subject: [rpms/linux-sgx] main: Fix compatibility with OpenSSL 4.0.0 and CMake 4
Date: Thu, 23 Jul 2026 11:18:48 GMT [thread overview]
Message-ID: <178480552879.1.12349014832050574955.rpms-linux-sgx-0f24fac4cedf@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/linux-sgx
Branch : main
Commit : 0f24fac4cedff54b268f026d55bb5162dac42e1b
Author : Daniel P. Berrangé <berrange@redhat.com>
Date : 2026-07-23T12:17:17+01:00
Stats : +2294/-98 in 53 file(s)
URL : https://src.fedoraproject.org/rpms/linux-sgx/c/0f24fac4cedff54b268f026d55bb5162dac42e1b?branch=main
Log:
Fix compatibility with OpenSSL 4.0.0 and CMake 4
OpenSSL made many APIs accept & return const data requiring
many changes. CMake 4 dropped compat with 3.5 unless explicitly
asked for. The patches to disable some OpenSSL algs were also
broken by a clang-format applied to OpenSSL stable branches
previously.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
diff --git a/0000-Add-support-for-building-against-host-openssl-crypto.patch b/0000-Add-support-for-building-against-host-openssl-crypto.patch
index 22a5130..2224d27 100644
--- a/0000-Add-support-for-building-against-host-openssl-crypto.patch
+++ b/0000-Add-support-for-building-against-host-openssl-crypto.patch
@@ -1,7 +1,7 @@
From f3d15471fc97351df73b6d7af95561c9ecfa3a6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 13 Feb 2025 14:12:38 +0000
-Subject: [PATCH 00/16] Add support for building against host openssl crypto
+Subject: [PATCH 00/17] Add support for building against host openssl crypto
lib
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -212,5 +212,5 @@ index 79f20a2b..8af19905 100644
.PHONY: all
--
-2.53.0
+2.55.0
diff --git a/0001-Add-support-for-building-against-host-tinyxml2-lib.patch b/0001-Add-support-for-building-against-host-tinyxml2-lib.patch
index 52c2181..861c0d7 100644
--- a/0001-Add-support-for-building-against-host-tinyxml2-lib.patch
+++ b/0001-Add-support-for-building-against-host-tinyxml2-lib.patch
@@ -1,7 +1,7 @@
From 79bc4b56fd25fbf49927be31513556ec9d86e6ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 13 Feb 2025 14:01:10 +0000
-Subject: [PATCH 01/16] Add support for building against host tinyxml2 lib
+Subject: [PATCH 01/17] Add support for building against host tinyxml2 lib
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -80,5 +80,5 @@ index ed177c86..1dcb6f51 100644
sgx_sign: $(OBJS) enclaveparser
--
-2.53.0
+2.55.0
diff --git a/0002-Add-support-for-building-against-host-CppMicroServic.patch b/0002-Add-support-for-building-against-host-CppMicroServic.patch
index 48ec042..3b23572 100644
--- a/0002-Add-support-for-building-against-host-CppMicroServic.patch
+++ b/0002-Add-support-for-building-against-host-CppMicroServic.patch
@@ -1,7 +1,7 @@
From b59cf0e4fb227486ba743f4d02b9cede4b2e08ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 13 Feb 2025 14:01:10 +0000
-Subject: [PATCH 02/16] Add support for building against host CppMicroServices
+Subject: [PATCH 02/17] Add support for building against host CppMicroServices
lib
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -138,5 +138,5 @@ index 735c5fa5..065b7527 100644
cmake_minimum_required(VERSION ${US_CMAKE_MINIMUM_REQUIRED_VERSION})
cmake_policy(VERSION ${US_CMAKE_MINIMUM_REQUIRED_VERSION})
--
-2.53.0
+2.55.0
diff --git a/0003-Improve-make-debuggability.patch b/0003-Improve-make-debuggability.patch
index a52f859..2ef0694 100644
--- a/0003-Improve-make-debuggability.patch
+++ b/0003-Improve-make-debuggability.patch
@@ -1,7 +1,7 @@
From 572c92dac5c5a27fa76d611703e25a341bb610aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 1 Mar 2024 12:53:26 +0000
-Subject: [PATCH 03/16] Improve make debuggability
+Subject: [PATCH 03/17] Improve make debuggability
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -70,5 +70,5 @@ index 1d382c5b..91156a75 100644
.PHONY: clean
clean:
--
-2.53.0
+2.55.0
diff --git a/0004-Support-disabling-use-of-git-for-ippcp-code.patch b/0004-Support-disabling-use-of-git-for-ippcp-code.patch
index 971cc77..d49e26d 100644
--- a/0004-Support-disabling-use-of-git-for-ippcp-code.patch
+++ b/0004-Support-disabling-use-of-git-for-ippcp-code.patch
@@ -1,7 +1,7 @@
From f11e29272736b152f7365febf8e157a410d4818b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 13 Feb 2025 14:37:24 +0000
-Subject: [PATCH 04/16] Support disabling use of git for ippcp code
+Subject: [PATCH 04/17] Support disabling use of git for ippcp code
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -45,5 +45,5 @@ index a57c22a9..d78ba90e 100644
.PHONY: clean
--
-2.53.0
+2.55.0
diff --git a/0005-disable-openmp-protobuf-sample_crypto-builds.patch b/0005-disable-openmp-protobuf-sample_crypto-builds.patch
index 6f0ca90..9b84f6b 100644
--- a/0005-disable-openmp-protobuf-sample_crypto-builds.patch
+++ b/0005-disable-openmp-protobuf-sample_crypto-builds.patch
@@ -1,7 +1,7 @@
From ea9950ebf08d3899c345176ab24d7b3b8b39067d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 18 Jun 2024 15:57:22 +0100
-Subject: [PATCH 05/16] disable openmp, protobuf & sample_crypto builds
+Subject: [PATCH 05/17] disable openmp, protobuf & sample_crypto builds
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -448,5 +448,5 @@ index 37fb7dc4..59c5f8ea 100644
$(MAKE) -C $(LINUX_EXTERNAL_DIR)/libcxxrt clean
$(MAKE) -C ttls clean
--
-2.53.0
+2.55.0
diff --git a/0006-psw-prefer-dev-sgx_provision-dev-sgx_enclave.patch b/0006-psw-prefer-dev-sgx_provision-dev-sgx_enclave.patch
index 8491d87..3eaa315 100644
--- a/0006-psw-prefer-dev-sgx_provision-dev-sgx_enclave.patch
+++ b/0006-psw-prefer-dev-sgx_provision-dev-sgx_enclave.patch
@@ -1,7 +1,7 @@
From b6781ffdf7993718ddc232b27a0eac4d2ef2dddf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 4 Oct 2024 16:33:20 +0100
-Subject: [PATCH 06/16] psw: prefer /dev/sgx_provision & /dev/sgx_enclave
+Subject: [PATCH 06/17] psw: prefer /dev/sgx_provision & /dev/sgx_enclave
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -74,5 +74,5 @@ index 9406ee64..5eea4ecd 100644
}
else if (driver_type == SGX_DRIVER_DCAP)
--
-2.53.0
+2.55.0
diff --git a/0007-psw-fix-soname-for-libuae_service.so-library.patch b/0007-psw-fix-soname-for-libuae_service.so-library.patch
index 8dd9be5..618fa52 100644
--- a/0007-psw-fix-soname-for-libuae_service.so-library.patch
+++ b/0007-psw-fix-soname-for-libuae_service.so-library.patch
@@ -1,7 +1,7 @@
From e39bf7eef92faee1f6096d4ca7da0e2571a94cba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 17 Jan 2025 15:38:56 +0000
-Subject: [PATCH 07/16] psw: fix soname for libuae_service.so library
+Subject: [PATCH 07/17] psw: fix soname for libuae_service.so library
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -25,5 +25,5 @@ index 0de5ab7c..3d9a1408 100644
$(IPC_SRC:.cpp=.o) : $(IPC_COMMON_PROTO_DIR)/messages.pb.cc
AEServicesImpl.o : $(IPC_COMMON_PROTO_DIR)/messages.pb.cc
--
-2.53.0
+2.55.0
diff --git a/0008-pcl-remove-redundant-use-of-bool-type.patch b/0008-pcl-remove-redundant-use-of-bool-type.patch
index 0b80e4e..099f8bf 100644
--- a/0008-pcl-remove-redundant-use-of-bool-type.patch
+++ b/0008-pcl-remove-redundant-use-of-bool-type.patch
@@ -1,7 +1,7 @@
From 30c235fb42a26be114a50bc07b82a4700747df25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 6 Feb 2025 09:54:33 +0000
-Subject: [PATCH 08/16] pcl: remove redundant use of 'bool' type
+Subject: [PATCH 08/17] pcl: remove redundant use of 'bool' type
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -45,5 +45,5 @@ index 5ad6efde..b78ca907 100644
#endif // #ifdef SE_SIM
--
-2.53.0
+2.55.0
diff --git a/0009-sdk-honour-CFLAGS-LDFLAGS-set-from-environment.patch b/0009-sdk-honour-CFLAGS-LDFLAGS-set-from-environment.patch
index b62599a..36fa76b 100644
--- a/0009-sdk-honour-CFLAGS-LDFLAGS-set-from-environment.patch
+++ b/0009-sdk-honour-CFLAGS-LDFLAGS-set-from-environment.patch
@@ -1,7 +1,7 @@
From f5703f8320b8fb6f4a5f227bb522ea8e1d7721e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 27 Mar 2025 14:17:01 +0000
-Subject: [PATCH 09/16] sdk: honour CFLAGS/LDFLAGS set from environment
+Subject: [PATCH 09/17] sdk: honour CFLAGS/LDFLAGS set from environment
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -122,5 +122,5 @@ index 8af19905..78f53484 100644
$(BUILD_DIR):
@$(MKDIR) $@
--
-2.53.0
+2.55.0
diff --git a/0010-psw-make-aesm_service-build-verbose.patch b/0010-psw-make-aesm_service-build-verbose.patch
index 5661eb7..7fdd26f 100644
--- a/0010-psw-make-aesm_service-build-verbose.patch
+++ b/0010-psw-make-aesm_service-build-verbose.patch
@@ -1,7 +1,7 @@
From 693ee7cf08bf06c9de402fd3df5fb8d44c40e903 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 27 Mar 2025 16:07:10 +0000
-Subject: [PATCH 10/16] psw: make aesm_service build verbose.
+Subject: [PATCH 10/17] psw: make aesm_service build verbose.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -25,5 +25,5 @@ index b469bffb..b150044e 100644
$(CP) $(CPPMICROSERVICES) source/build/bin/
endif
--
-2.53.0
+2.55.0
diff --git a/0011-Fix-modern-C-function-prototype-compliance.patch b/0011-Fix-modern-C-function-prototype-compliance.patch
index cc8ae97..2cd6fbd 100644
--- a/0011-Fix-modern-C-function-prototype-compliance.patch
+++ b/0011-Fix-modern-C-function-prototype-compliance.patch
@@ -1,7 +1,7 @@
From acd8d8671bc163a078c189b90244a521d1c4ac5a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Mon, 31 Mar 2025 10:55:25 +0100
-Subject: [PATCH 11/16] Fix modern C function prototype compliance
+Subject: [PATCH 11/17] Fix modern C function prototype compliance
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -39,5 +39,5 @@ index 8e4e7600..8c38bb68 100644
g_sys_ptrace = (ptrace_t)dlsym(RTLD_NEXT, "ptrace");
g_sys_waitpid = (waitpid_t)dlsym(RTLD_NEXT, "waitpid");
--
-2.53.0
+2.55.0
diff --git a/0012-Add-wrapper-for-nasm-to-fix-cmake-compat.patch b/0012-Add-wrapper-for-nasm-to-fix-cmake-compat.patch
index abaf61f..e3ef33c 100644
--- a/0012-Add-wrapper-for-nasm-to-fix-cmake-compat.patch
+++ b/0012-Add-wrapper-for-nasm-to-fix-cmake-compat.patch
@@ -1,7 +1,7 @@
From 258dfa3df79b8286549856003e8234975434fbb3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Wed, 2 Apr 2025 17:11:25 +0100
-Subject: [PATCH 12/16] Add wrapper for nasm to fix cmake compat
+Subject: [PATCH 12/17] Add wrapper for nasm to fix cmake compat
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -65,5 +65,5 @@ index d78ba90e..71a40247 100644
$(IPP_SOURCE)/build:
ifeq ($(IPP_USE_GIT), 1)
--
-2.53.0
+2.55.0
diff --git a/0013-linux-installer-drop-PCCS-package-from-BOM.patch b/0013-linux-installer-drop-PCCS-package-from-BOM.patch
index 138ebb5..d9dccdc 100644
--- a/0013-linux-installer-drop-PCCS-package-from-BOM.patch
+++ b/0013-linux-installer-drop-PCCS-package-from-BOM.patch
@@ -1,7 +1,7 @@
From 9291f1ccc657b814bcb4094633a911061726f8dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 27 Jun 2025 11:37:26 +0100
-Subject: [PATCH 13/16] linux/installer: drop PCCS package from BOM
+Subject: [PATCH 13/17] linux/installer: drop PCCS package from BOM
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -297,5 +297,5 @@ index 7129b71d..c55a8ada 100644
RA_NETWORK_PACKAGE=libsgx-ra-network
RA_NETWORK_DEV_PACKAGE=libsgx-ra-network-devel
--
-2.53.0
+2.55.0
diff --git a/0014-sdk-avoid-failure-due-to-attribute-regparam-with-GCC.patch b/0014-sdk-avoid-failure-due-to-attribute-regparam-with-GCC.patch
index 9551911..f20565a 100644
--- a/0014-sdk-avoid-failure-due-to-attribute-regparam-with-GCC.patch
+++ b/0014-sdk-avoid-failure-due-to-attribute-regparam-with-GCC.patch
@@ -1,7 +1,7 @@
From 4a12419da033bf88ded73ece3a80090c3d48c7ef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 6 Jan 2026 18:31:32 +0000
-Subject: [PATCH 14/16] sdk: avoid failure due to attribute(regparam) with GCC
+Subject: [PATCH 14/17] sdk: avoid failure due to attribute(regparam) with GCC
16
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -79,5 +79,5 @@ index 5750aece..4766ef51 100644
-fno-rtti
--
-2.53.0
+2.55.0
diff --git a/0015-fix-BOM-for-mpa_manage-mpa_registration-files.patch b/0015-fix-BOM-for-mpa_manage-mpa_registration-files.patch
index 87b249f..a9d5ea3 100644
--- a/0015-fix-BOM-for-mpa_manage-mpa_registration-files.patch
+++ b/0015-fix-BOM-for-mpa_manage-mpa_registration-files.patch
@@ -1,7 +1,7 @@
From 9fa76f92c2dd7430b5b873cf0b93810d9fb80a8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Mon, 2 Feb 2026 19:01:24 +0000
-Subject: [PATCH 15/16] fix BOM for mpa_manage/mpa_registration files
+Subject: [PATCH 15/17] fix BOM for mpa_manage/mpa_registration files
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -94,5 +94,5 @@ index 3521a03f..6fea3137 100644
+<deliverydir>/external/dcap_source/tools/SGXPlatformRegistration/src/mpa_registration/startup.sh <installdir>/startup.sh 0 main STP
+<deliverydir>/external/dcap_source/tools/SGXPlatformRegistration/src/mpa_registration/cleanup.sh <installdir>/cleanup.sh 0 main STP
--
-2.53.0
+2.55.0
diff --git a/0016-fix-missing-def-of-uncaught_exception.patch b/0016-fix-missing-def-of-uncaught_exception.patch
index 76acfa5..bbdd7a5 100644
--- a/0016-fix-missing-def-of-uncaught_exception.patch
+++ b/0016-fix-missing-def-of-uncaught_exception.patch
@@ -1,7 +1,7 @@
From ce1ad3fba7d14ff037b40ffeab2dccbfa7ccdbc5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Wed, 25 Mar 2026 12:15:12 +0000
-Subject: [PATCH 16/16] fix missing def of uncaught_exception
+Subject: [PATCH 16/17] fix missing def of uncaught_exception
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -33,5 +33,5 @@ index a3c81106..b81f2d0c 100644
# endif
--
-2.53.0
+2.55.0
diff --git a/0017-sdk-adapt-to-openssl4-API-changes.patch b/0017-sdk-adapt-to-openssl4-API-changes.patch
new file mode 100644
index 0000000..ada36fa
--- /dev/null
+++ b/0017-sdk-adapt-to-openssl4-API-changes.patch
@@ -0,0 +1,53 @@
+From b17c3e46de9b3c3004d394ae8b4c7b6cafa968a6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
+Date: Mon, 20 Jul 2026 10:51:55 +0100
+Subject: [PATCH 17/17] sdk: adapt to openssl4 API changes
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Returned ASN1 structures must now be const, and the string
+type is now opaque.
+
+Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
+---
+ sdk/ttls/cert_verifier.cpp | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/sdk/ttls/cert_verifier.cpp b/sdk/ttls/cert_verifier.cpp
+index 2889bfaf..a852d153 100644
+--- a/sdk/ttls/cert_verifier.cpp
++++ b/sdk/ttls/cert_verifier.cpp
+@@ -733,7 +733,7 @@ sgx_status_t sgx_cert_find_extension(
+ for (int i = 0; i < num_extensions; i++)
+ {
+ X509_EXTENSION* ext;
+- ASN1_OBJECT* obj;
++ const ASN1_OBJECT* obj;
+ sgx_oid_string_t ext_oid;
+
+ /* Get the i-th extension from the stack */
+@@ -751,7 +751,7 @@ sgx_status_t sgx_cert_find_extension(
+ /* If found then get the data */
+ if (strcmp(ext_oid.buf, oid) == 0)
+ {
+- ASN1_OCTET_STRING* str;
++ const ASN1_OCTET_STRING* str;
+
+ /* Get the data from the extension */
+ if (!(str = X509_EXTENSION_get_data(ext)))
+@@ -759,8 +759,9 @@ sgx_status_t sgx_cert_find_extension(
+
+ if (data)
+ {
+- memcpy(data, str->data, (size_t)str->length);
+- *size = (size_t)str->length;
++ const unsigned char *strdata = ASN1_STRING_get0_data(str);
++ *size = (size_t)ASN1_STRING_length(str);
++ memcpy(data, strdata, (size_t)*size);
+ result = SGX_SUCCESS;
+ goto done;
+ }
+--
+2.55.0
+
diff --git a/0100-Drop-use-of-bundled-pre-built-openssl.patch b/0100-Drop-use-of-bundled-pre-built-openssl.patch
index 3adc9b3..f29e4a7 100644
--- a/0100-Drop-use-of-bundled-pre-built-openssl.patch
+++ b/0100-Drop-use-of-bundled-pre-built-openssl.patch
@@ -1,7 +1,7 @@
From 1d5c7e55c48a88437045e08261a7cd3ce2f4ab87 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Mon, 26 Feb 2024 12:19:51 +0000
-Subject: [PATCH 100/125] Drop use of bundled pre-built openssl
+Subject: [PATCH 100/127] Drop use of bundled pre-built openssl
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -268,5 +268,5 @@ index a20a3cd5..499ee94f 100644
debug:
$(PCKCERTSEL_VERBOSE)$(MAKE) DEBUG=1 all
--
-2.54.0
+2.55.0
diff --git a/0101-Improve-debuggability-of-build-system.patch b/0101-Improve-debuggability-of-build-system.patch
index 20372c2..d6bd8f7 100644
--- a/0101-Improve-debuggability-of-build-system.patch
+++ b/0101-Improve-debuggability-of-build-system.patch
@@ -1,7 +1,7 @@
From e56d81031a49344706c38ce64a6294252d5bccc9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 1 Mar 2024 12:05:01 +0000
-Subject: [PATCH 101/125] Improve debuggability of build system
+Subject: [PATCH 101/127] Improve debuggability of build system
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -220,5 +220,5 @@ index f21ba8d3..d5af625a 100644
print-% : ; @echo $* = $($*)
--
-2.54.0
+2.55.0
diff --git a/0102-Support-build-time-setting-of-enclave-load-directory.patch b/0102-Support-build-time-setting-of-enclave-load-directory.patch
index 17b7fd2..a580812 100644
--- a/0102-Support-build-time-setting-of-enclave-load-directory.patch
+++ b/0102-Support-build-time-setting-of-enclave-load-directory.patch
@@ -1,7 +1,7 @@
From aa175423d4f6972f0a796d865f401f2fd8dc562c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Mon, 26 Feb 2024 12:19:51 +0000
-Subject: [PATCH 102/125] Support build time setting of enclave load directory
+Subject: [PATCH 102/127] Support build time setting of enclave load directory
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -259,5 +259,5 @@ index 8ff58b8a..22251bfa 100644
App_Link_Flags := $(SGX_COMMON_CFLAGS) -Wl,-z,relro,-z,now,-z,noexecstack
App_Link_Flags += -lcurl -ldl -lpthread
--
-2.54.0
+2.55.0
diff --git a/0103-Look-for-versioned-sgx_urts-library-in-PCKRetrievalT.patch b/0103-Look-for-versioned-sgx_urts-library-in-PCKRetrievalT.patch
index 83cdeed..e02509e 100644
--- a/0103-Look-for-versioned-sgx_urts-library-in-PCKRetrievalT.patch
+++ b/0103-Look-for-versioned-sgx_urts-library-in-PCKRetrievalT.patch
@@ -1,7 +1,7 @@
From 38880d491208012697daa55555ec7d0b5716da57 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 27 Feb 2024 15:46:41 +0000
-Subject: [PATCH 103/125] Look for versioned sgx_urts library in
+Subject: [PATCH 103/127] Look for versioned sgx_urts library in
PCKRetrievalTool
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -40,5 +40,5 @@ index 634ad27b..9fc1fe1d 100644
}
#endif
--
-2.54.0
+2.55.0
diff --git a/0104-pcsclient-only-import-pypac-module-on-Windows.patch b/0104-pcsclient-only-import-pypac-module-on-Windows.patch
index fd2e102..96ff0fe 100644
--- a/0104-pcsclient-only-import-pypac-module-on-Windows.patch
+++ b/0104-pcsclient-only-import-pypac-module-on-Windows.patch
@@ -1,7 +1,7 @@
From 34587f84399c672fc3da229c3288681b54b250d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 4 Oct 2024 17:41:37 +0100
-Subject: [PATCH 104/125] pcsclient: only import 'pypac' module on Windows
+Subject: [PATCH 104/127] pcsclient: only import 'pypac' module on Windows
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -31,5 +31,5 @@ index fa13c2a2..8fd28e2b 100644
from requests.adapters import HTTPAdapter
from urllib3.util import Retry
--
-2.54.0
+2.55.0
diff --git a/0105-Look-for-PCKRetrievalTool-config-file-in-etc.patch b/0105-Look-for-PCKRetrievalTool-config-file-in-etc.patch
index bea7ce7..8f5ba13 100644
--- a/0105-Look-for-PCKRetrievalTool-config-file-in-etc.patch
+++ b/0105-Look-for-PCKRetrievalTool-config-file-in-etc.patch
@@ -1,7 +1,7 @@
From ae8dae8f9a342190cf3218ca9549eef86531c327 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 29 Feb 2024 14:21:36 +0000
-Subject: [PATCH 105/125] Look for PCKRetrievalTool config file in /etc/
+Subject: [PATCH 105/127] Look for PCKRetrievalTool config file in /etc/
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -39,5 +39,5 @@ index 65baf517..e4666896 100644
if(strnlen(local_configuration_file_path ,MAX_PATH)+strnlen(LOCAL_NETWORK_SETTING,MAX_PATH)+sizeof(char) > MAX_PATH) {
return false;
--
-2.54.0
+2.55.0
diff --git a/0106-Honour-CFLAGS-CXXFLAGS-LDFLAGS-for-various-tools-and.patch b/0106-Honour-CFLAGS-CXXFLAGS-LDFLAGS-for-various-tools-and.patch
index 66d3d54..308b379 100644
--- a/0106-Honour-CFLAGS-CXXFLAGS-LDFLAGS-for-various-tools-and.patch
+++ b/0106-Honour-CFLAGS-CXXFLAGS-LDFLAGS-for-various-tools-and.patch
@@ -1,7 +1,7 @@
From c53e28aec887ef3fbfcd91621b0726ab84dc4f1f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 28 Mar 2025 16:00:27 +0000
-Subject: [PATCH 106/125] Honour CFLAGS/CXXFLAGS/LDFLAGS for various tools and
+Subject: [PATCH 106/127] Honour CFLAGS/CXXFLAGS/LDFLAGS for various tools and
libraries
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -170,5 +170,5 @@ index 2b10a4c3..d0f4b053 100644
CXX_WARNINGS := -Wall -Wextra -Winit-self -Wpointer-arith -Wreturn-type -Waddress -Wsequence-point -Wformat-security \
-Wmissing-include-dirs -Wfloat-equal -Wundef -Wshadow -Wcast-align -Wconversion -Wredundant-decls
--
-2.54.0
+2.55.0
diff --git a/0107-qgs-add-space-between-program-name-first-arg-in-usag.patch b/0107-qgs-add-space-between-program-name-first-arg-in-usag.patch
index b5e60b5..1f4bba3 100644
--- a/0107-qgs-add-space-between-program-name-first-arg-in-usag.patch
+++ b/0107-qgs-add-space-between-program-name-first-arg-in-usag.patch
@@ -1,7 +1,7 @@
From 56e82b013fb62af8d5805da1993f05cadf401350 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 3 Oct 2024 14:42:29 +0100
-Subject: [PATCH 107/125] qgs: add space between program name & first arg in
+Subject: [PATCH 107/127] qgs: add space between program name & first arg in
usage
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -35,5 +35,5 @@ index acf7a199..b9f3eed3 100644
exit(1);
}
--
-2.54.0
+2.55.0
diff --git a/0108-qgs-protect-against-format-strings-in-QL-log-message.patch b/0108-qgs-protect-against-format-strings-in-QL-log-message.patch
index 867a42d..a07d00b 100644
--- a/0108-qgs-protect-against-format-strings-in-QL-log-message.patch
+++ b/0108-qgs-protect-against-format-strings-in-QL-log-message.patch
@@ -1,7 +1,7 @@
From d07488f32723bb310712e0cd6c744028ca643fd3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 4 Oct 2024 09:43:17 +0100
-Subject: [PATCH 108/125] qgs: protect against format strings in QL log
+Subject: [PATCH 108/127] qgs: protect against format strings in QL log
messages
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -35,5 +35,5 @@ index ce37e418..12c51596 100644
}
--
-2.54.0
+2.55.0
diff --git a/0109-qgs-add-debug-parameter-to-control-logging.patch b/0109-qgs-add-debug-parameter-to-control-logging.patch
index c6ff316..4bb42c6 100644
--- a/0109-qgs-add-debug-parameter-to-control-logging.patch
+++ b/0109-qgs-add-debug-parameter-to-control-logging.patch
@@ -1,7 +1,7 @@
From b193dc9b0f715eb14044e1e848c2a0c4c40d1f55 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 3 Oct 2024 16:57:35 +0100
-Subject: [PATCH 109/125] qgs: add --debug parameter to control logging
+Subject: [PATCH 109/127] qgs: add --debug parameter to control logging
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -125,5 +125,5 @@ index b9f3eed3..62764d04 100644
exit(1);
}
--
-2.54.0
+2.55.0
diff --git a/0110-pcsclient-remove-leftover-debugging-print-args-state.patch b/0110-pcsclient-remove-leftover-debugging-print-args-state.patch
index 803c5b7..d401778 100644
--- a/0110-pcsclient-remove-leftover-debugging-print-args-state.patch
+++ b/0110-pcsclient-remove-leftover-debugging-print-args-state.patch
@@ -1,7 +1,7 @@
From cdda8a978fcb996f567ad7e72e5e45c93b5ae024 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 8 Oct 2024 10:13:02 +0100
-Subject: [PATCH 110/125] pcsclient: remove leftover debugging 'print(args)'
+Subject: [PATCH 110/127] pcsclient: remove leftover debugging 'print(args)'
statement
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -30,5 +30,5 @@ index 07ab8080..eef984af 100755
class Utils:
--
-2.54.0
+2.55.0
diff --git a/0111-Fix-soname-version-for-libsgx_qe3_logic.so-library.patch b/0111-Fix-soname-version-for-libsgx_qe3_logic.so-library.patch
index 14666b1..1972110 100644
--- a/0111-Fix-soname-version-for-libsgx_qe3_logic.so-library.patch
+++ b/0111-Fix-soname-version-for-libsgx_qe3_logic.so-library.patch
@@ -1,7 +1,7 @@
From f31fe57de72e42558e408f93540c8887ee0f217e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 17 Jan 2025 15:39:39 +0000
-Subject: [PATCH 111/125] Fix soname version for libsgx_qe3_logic.so library
+Subject: [PATCH 111/127] Fix soname version for libsgx_qe3_logic.so library
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -51,5 +51,5 @@ index 47684976..63542e58 100644
$(BUILD_DIR):
--
-2.54.0
+2.55.0
diff --git a/0112-Workaround-broken-GCC-15.patch b/0112-Workaround-broken-GCC-15.patch
index 8614c31..55bdc57 100644
--- a/0112-Workaround-broken-GCC-15.patch
+++ b/0112-Workaround-broken-GCC-15.patch
@@ -1,7 +1,7 @@
From 5a18d8d08db1a051a810085427873922e3d9f92a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 6 Feb 2025 20:08:59 +0000
-Subject: [PATCH 112/125] Workaround broken GCC 15
+Subject: [PATCH 112/127] Workaround broken GCC 15
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -36,5 +36,5 @@ index 15fbdd42..4400544b 100644
private:
struct alignas(A)_T_instantiator_
--
-2.54.0
+2.55.0
diff --git a/0113-Don-t-disable-cf-protection-for-qgs.patch b/0113-Don-t-disable-cf-protection-for-qgs.patch
index 263e033..64eddd7 100644
--- a/0113-Don-t-disable-cf-protection-for-qgs.patch
+++ b/0113-Don-t-disable-cf-protection-for-qgs.patch
@@ -1,7 +1,7 @@
From 20494e4793ffbf276fb195a2caf971eff3a5844b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Wed, 2 Apr 2025 18:39:31 +0100
-Subject: [PATCH 113/125] Don't disable cf-protection for qgs
+Subject: [PATCH 113/127] Don't disable cf-protection for qgs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -27,5 +27,5 @@ index 2faa6130..fa1f6708 100644
DEPENDS = ${QGS_OBJS test_client.o:.o=.d}
--
-2.54.0
+2.55.0
diff --git a/0114-Delete-broken-checks-for-GCC-version-that-break-fsta.patch b/0114-Delete-broken-checks-for-GCC-version-that-break-fsta.patch
index dfac886..403b956 100644
--- a/0114-Delete-broken-checks-for-GCC-version-that-break-fsta.patch
+++ b/0114-Delete-broken-checks-for-GCC-version-that-break-fsta.patch
@@ -1,7 +1,7 @@
From 4cde0980849bd6e9f33a868491ddb462b0d2f1c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 3 Apr 2025 17:44:48 +0100
-Subject: [PATCH 114/125] Delete broken checks for GCC version that break
+Subject: [PATCH 114/127] Delete broken checks for GCC version that break
-fstack-protector-strong
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -112,5 +112,5 @@ index 715f365a..6a2b23b7 100644
Enclave_Common_Flags += -DPICOJSON_USE_LOCALE=0 -DBUILD_QAE -DSGX_JWT
--
-2.54.0
+2.55.0
diff --git a/0115-Use-distro-provided-rapidjson-package.patch b/0115-Use-distro-provided-rapidjson-package.patch
index 0464f2b..418f41c 100644
--- a/0115-Use-distro-provided-rapidjson-package.patch
+++ b/0115-Use-distro-provided-rapidjson-package.patch
@@ -1,7 +1,7 @@
From fed97620605cf8e64efdaea313645a65abb5f82e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Mon, 26 Feb 2024 12:19:51 +0000
-Subject: [PATCH 115/125] Use distro provided rapidjson package
+Subject: [PATCH 115/127] Use distro provided rapidjson package
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -163,5 +163,5 @@ index 499ee94f..434fa6b9 100644
# the library shared object name
LIB_NAME := libPCKCertSelection.a
--
-2.54.0
+2.55.0
diff --git a/0116-Don-t-stomp-on-VERBOSE-variable.patch b/0116-Don-t-stomp-on-VERBOSE-variable.patch
index d991f34..fdbc8a0 100644
--- a/0116-Don-t-stomp-on-VERBOSE-variable.patch
+++ b/0116-Don-t-stomp-on-VERBOSE-variable.patch
@@ -1,7 +1,7 @@
From 6b23d61924f49afc6a9264a5b46a23a34e39829b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Wed, 16 Apr 2025 11:48:52 +0100
-Subject: [PATCH 116/125] Don't stomp on "VERBOSE" variable
+Subject: [PATCH 116/127] Don't stomp on "VERBOSE" variable
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -97,5 +97,5 @@ index 3d474bbc..0f593f5e 100644
- $(VERBOSE) rm -vrf $(TARGET) $(SIGNING_MATERIAL)
+ $(CMD_VERBOSE) rm -vrf $(TARGET) $(SIGNING_MATERIAL)
--
-2.54.0
+2.55.0
diff --git a/0117-qgs-add-m-MODE-parameter-for-UNIX-socket-mode.patch b/0117-qgs-add-m-MODE-parameter-for-UNIX-socket-mode.patch
index 35185c0..1427173 100644
--- a/0117-qgs-add-m-MODE-parameter-for-UNIX-socket-mode.patch
+++ b/0117-qgs-add-m-MODE-parameter-for-UNIX-socket-mode.patch
@@ -1,7 +1,7 @@
From b9104a5ce6234ff22c802e333224fcbbaf70fea6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 2 May 2025 14:48:24 +0100
-Subject: [PATCH 117/125] qgs: add -m=MODE parameter for UNIX socket mode
+Subject: [PATCH 117/127] qgs: add -m=MODE parameter for UNIX socket mode
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -90,5 +90,5 @@ index 62764d04..bef9e0ec 100644
io_service.run();
QGS_LOG_INFO("Quit main loop\n");
--
-2.54.0
+2.55.0
diff --git a/0118-pcsclient-make-keyring-module-optional.patch b/0118-pcsclient-make-keyring-module-optional.patch
index 8af5797..798aaff 100644
--- a/0118-pcsclient-make-keyring-module-optional.patch
+++ b/0118-pcsclient-make-keyring-module-optional.patch
@@ -1,7 +1,7 @@
From 1055a7f1f6b9cb2f55784ae52d29677a828ca93c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 4 Dec 2025 13:31:54 +0000
-Subject: [PATCH 118/125] pcsclient: make 'keyring' module optional
+Subject: [PATCH 118/127] pcsclient: make 'keyring' module optional
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -65,5 +65,5 @@ index fa1e38d0..e0e32ddb 100644
+ return False
return True
--
-2.54.0
+2.55.0
diff --git a/0119-pcsclient-convert-from-asn1-to-pyasn1-python-module.patch b/0119-pcsclient-convert-from-asn1-to-pyasn1-python-module.patch
index c5ebf5b..8cb08b8 100644
--- a/0119-pcsclient-convert-from-asn1-to-pyasn1-python-module.patch
+++ b/0119-pcsclient-convert-from-asn1-to-pyasn1-python-module.patch
@@ -1,7 +1,7 @@
From a01581a9e29e919d2af9ee1781d70d725619937d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 4 Dec 2025 13:54:19 +0000
-Subject: [PATCH 119/125] pcsclient: convert from asn1 to pyasn1 python module
+Subject: [PATCH 119/127] pcsclient: convert from asn1 to pyasn1 python module
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -337,5 +337,5 @@ index 97aa2783..eaed331b 100644
+ ent= list(filter(lambda e: e['tCBId'] == id_ce_tCB_pCESVN, tcb))[0]
+ return int(ent["tCBValue"]).to_bytes(2, byteorder='little').hex()
--
-2.54.0
+2.55.0
diff --git a/0120-pcsclient-ignore-errors-trying-to-clear-the-keyring.patch b/0120-pcsclient-ignore-errors-trying-to-clear-the-keyring.patch
index e2ef6ef..5907263 100644
--- a/0120-pcsclient-ignore-errors-trying-to-clear-the-keyring.patch
+++ b/0120-pcsclient-ignore-errors-trying-to-clear-the-keyring.patch
@@ -1,7 +1,7 @@
From 5368f45e784a42a837523916667d045b0680f23d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 4 Dec 2025 18:05:14 +0000
-Subject: [PATCH 120/125] pcsclient: ignore errors trying to clear the keyring
+Subject: [PATCH 120/127] pcsclient: ignore errors trying to clear the keyring
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -51,5 +51,5 @@ index 8fd28e2b..93f1132b 100644
# Verify expected headers
--
-2.54.0
+2.55.0
diff --git a/0121-use-system-gtest-gmock-libraries.patch b/0121-use-system-gtest-gmock-libraries.patch
index 965d78b..985ec3a 100644
--- a/0121-use-system-gtest-gmock-libraries.patch
+++ b/0121-use-system-gtest-gmock-libraries.patch
@@ -1,7 +1,7 @@
From 035a1ce29dd514141efbee81f2582b9dd71e2b08 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 29 Jan 2026 15:26:38 +0000
-Subject: [PATCH 121/125] use system gtest / gmock libraries
+Subject: [PATCH 121/127] use system gtest / gmock libraries
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -121,5 +121,5 @@ index d0f4b053..d59c297e 100644
+ @$(CXX) -c $(CXXFLAGS) $(INCLUDE) $(GTEST_CFLAGS) $< -o $@
@echo "$<"
--
-2.54.0
+2.55.0
diff --git a/0122-Disable-PcsClientTool-package-build.patch b/0122-Disable-PcsClientTool-package-build.patch
index 890769b..491bf2a 100644
--- a/0122-Disable-PcsClientTool-package-build.patch
+++ b/0122-Disable-PcsClientTool-package-build.patch
@@ -1,7 +1,7 @@
From 933df77a1507b07d3f30c579f0d878e130dc264e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Mon, 2 Feb 2026 16:12:50 +0000
-Subject: [PATCH 122/125] Disable PcsClientTool package build
+Subject: [PATCH 122/127] Disable PcsClientTool package build
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -26,5 +26,5 @@ index f6f0fabf..c01e4057 100644
.PHONY: deb_sgx_pcs_client_pkg
deb_sgx_pcs_client_pkg:
--
-2.54.0
+2.55.0
diff --git a/0123-disable-building-of-WASM-SIMDE-code.patch b/0123-disable-building-of-WASM-SIMDE-code.patch
index 5c00ee6..2dbae69 100644
--- a/0123-disable-building-of-WASM-SIMDE-code.patch
+++ b/0123-disable-building-of-WASM-SIMDE-code.patch
@@ -1,7 +1,7 @@
From a4b5bda8e776636080f2d9b5ec435fa7102d252b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 3 Feb 2026 11:40:10 +0000
-Subject: [PATCH 123/125] disable building of WASM SIMDE code
+Subject: [PATCH 123/127] disable building of WASM SIMDE code
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -29,5 +29,5 @@ index af72a783..a317cf11 100644
WASM_CONFIG := -DCMAKE_BUILD_TYPE=Debug
QAL_Cpp_Flags += -fsanitize=undefined
--
-2.54.0
+2.55.0
diff --git a/0124-ensure-build-terminates-if-prepare_sgxssl.sh-fails.patch b/0124-ensure-build-terminates-if-prepare_sgxssl.sh-fails.patch
index 0772ff3..8589f5d 100644
--- a/0124-ensure-build-terminates-if-prepare_sgxssl.sh-fails.patch
+++ b/0124-ensure-build-terminates-if-prepare_sgxssl.sh-fails.patch
@@ -1,7 +1,7 @@
From a4ec3d8f326e92b32ed151bd89a3ab99f4d66279 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Wed, 25 Mar 2026 15:54:42 +0000
-Subject: [PATCH 124/125] ensure build terminates if prepare_sgxssl.sh fails
+Subject: [PATCH 124/127] ensure build terminates if prepare_sgxssl.sh fails
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -29,5 +29,5 @@ index 19152d77..8195407f 100755
top_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
sgxssl_dir=$top_dir/sgxssl
--
-2.54.0
+2.55.0
diff --git a/0125-Support-for-26.04-enabled-in-SGXSDK-and-DCAP.patch b/0125-Support-for-26.04-enabled-in-SGXSDK-and-DCAP.patch
index 624d65e..c8a2bb9 100644
--- a/0125-Support-for-26.04-enabled-in-SGXSDK-and-DCAP.patch
+++ b/0125-Support-for-26.04-enabled-in-SGXSDK-and-DCAP.patch
@@ -1,7 +1,7 @@
From 6c33ecfb5fa66e0144e68ffb7f7bf21c01c65393 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 6 Mar 2026 07:51:15 +0100
-Subject: [PATCH 125/125] Support for 26.04 enabled in SGXSDK and DCAP
+Subject: [PATCH 125/127] Support for 26.04 enabled in SGXSDK and DCAP
From: Krzysztof Sandowicz <krzysztof.sandowicz@intel.com>
@@ -197,5 +197,5 @@ index bef9e0ec..ea2dceae 100644
QgsServer *temp_server = server;
server = NULL;
--
-2.54.0
+2.55.0
diff --git a/0126-qpl-fix-const-correctness-for-ASN1_STRING-X509_NAME_.patch b/0126-qpl-fix-const-correctness-for-ASN1_STRING-X509_NAME_.patch
new file mode 100644
index 0000000..1585d0f
--- /dev/null
+++ b/0126-qpl-fix-const-correctness-for-ASN1_STRING-X509_NAME_.patch
@@ -0,0 +1,34 @@
+From cf60ce8a83cae39e7d626b33ebf0f38dd511bfb7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
+Date: Mon, 20 Jul 2026 12:36:19 +0100
+Subject: [PATCH 126/127] qpl: fix const correctness for
+ ASN1_STRING/X509_NAME_ENTRY
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In OpenSSL 4 the functions now return a const struct where possible.
+
+Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
+---
+ QuoteGeneration/qpl/linux/x509.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/QuoteGeneration/qpl/linux/x509.cpp b/QuoteGeneration/qpl/linux/x509.cpp
+index 044db8ce..6170ce5e 100644
+--- a/QuoteGeneration/qpl/linux/x509.cpp
++++ b/QuoteGeneration/qpl/linux/x509.cpp
+@@ -69,8 +69,8 @@ static vector<string> crl_urls(X509 *x509) {
+ } else if (distpoint->type == 1) {
+ STACK_OF(X509_NAME_ENTRY) *sk_relname = distpoint->name.relativename;
+ for (int k = 0; k < sk_X509_NAME_ENTRY_num(sk_relname); k++) {
+- X509_NAME_ENTRY *e = sk_X509_NAME_ENTRY_value(sk_relname, k);
+- ASN1_STRING *d = X509_NAME_ENTRY_get_data(e);
++ const X509_NAME_ENTRY *e = sk_X509_NAME_ENTRY_value(sk_relname, k);
++ const ASN1_STRING *d = X509_NAME_ENTRY_get_data(e);
+ list.push_back(string((char *)ASN1_STRING_get0_data(d), ASN1_STRING_length(d)));
+ }
+ }
+--
+2.55.0
+
diff --git a/0127-qal-force-compat-with-CMake-3.5.patch b/0127-qal-force-compat-with-CMake-3.5.patch
new file mode 100644
index 0000000..aeaee78
--- /dev/null
+++ b/0127-qal-force-compat-with-CMake-3.5.patch
@@ -0,0 +1,33 @@
+From bb1b8f61184bc8130a273518dbb293a06c1dc985 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
+Date: Wed, 22 Jul 2026 16:32:05 +0100
+Subject: [PATCH 127/127] qal: force compat with CMake 3.5
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+CMake 4 has dropped support for build files designed for
+CMake 3.x out of the box. To opt back in to historical
+compat requires CMAKE_POLICY_VERSION_MINIMUM=3.5 to be
+set.
+
+Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
+---
+ QuoteVerification/appraisal/qal/Makefile | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/QuoteVerification/appraisal/qal/Makefile b/QuoteVerification/appraisal/qal/Makefile
+index a317cf11..ce0a0e00 100644
+--- a/QuoteVerification/appraisal/qal/Makefile
++++ b/QuoteVerification/appraisal/qal/Makefile
+@@ -39,6 +39,7 @@ ifeq ($(DEBUG), 1)
+ endif
+ # Disable HW bound check to allow potential usage with other languages, such as Golang, Java
+ WASM_CONFIG += -DWAMR_DISABLE_HW_BOUND_CHECK=1
++WASM_CONFIG += -DCMAKE_POLICY_VERSION_MINIMUM=3.5
+
+ ifeq ($(USE_LOCAL_WASM), 1)
+ QAL_Cpp_Flags += -DUSE_LOCAL_WASM
+--
+2.55.0
+
diff --git a/0200-Enable-pointing-sgxssl-build-to-alternative-glibc-he.patch b/0200-Enable-pointing-sgxssl-build-to-alternative-glibc-he.patch
index 0661241..ea225bc 100644
--- a/0200-Enable-pointing-sgxssl-build-to-alternative-glibc-he.patch
+++ b/0200-Enable-pointing-sgxssl-build-to-alternative-glibc-he.patch
@@ -1,7 +1,7 @@
-From 726612218a56c0f5f3d219e2fbacb6c1e2f7153c Mon Sep 17 00:00:00 2001
+From 862befc397afca6c221d3abe50cfd99e55aa828d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 29 Aug 2024 12:23:30 +0100
-Subject: [PATCH 200/203] Enable pointing sgxssl build to alternative glibc
+Subject: [PATCH 200/204] Enable pointing sgxssl build to alternative glibc
headers
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -73,5 +73,5 @@ index ed8456d..bea3463 100644
clean:
$(MAKE) -C $(TRUSTED_LIB_DIR) clean
--
-2.53.0
+2.55.0
diff --git a/0201-Workaround-missing-output-directory.patch b/0201-Workaround-missing-output-directory.patch
index 5a13acf..64169fe 100644
--- a/0201-Workaround-missing-output-directory.patch
+++ b/0201-Workaround-missing-output-directory.patch
@@ -1,7 +1,7 @@
-From c3b4f345afd487fce48837a604b16625f25c1c60 Mon Sep 17 00:00:00 2001
+From d15993ad959c4f599b5c20753b419ee495ac1b11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 29 Aug 2024 12:50:32 +0100
-Subject: [PATCH 201/203] Workaround missing output directory
+Subject: [PATCH 201/204] Workaround missing output directory
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -28,5 +28,5 @@ index 1a8ea2c..44bfa7b 100755
grep OPENSSL_VERSION_STR include/openssl/opensslv.h > $SGXSSL_ROOT/sgx/osslverstr.h || exit 1
cp -r include/crypto $SGXSSL_ROOT/sgx/test_app/enclave/ || exit 1
--
-2.53.0
+2.55.0
diff --git a/0202-Disable-various-EC-crypto-features.patch b/0202-Disable-various-EC-crypto-features.patch
index 906d370..495c719 100644
--- a/0202-Disable-various-EC-crypto-features.patch
+++ b/0202-Disable-various-EC-crypto-features.patch
@@ -1,7 +1,7 @@
-From dba682aa959d913aa316d0102b064ef8415b6987 Mon Sep 17 00:00:00 2001
+From f7230e5a5b0833d809f0ee41e472f24ee3b3faf0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 1 Mar 2024 13:24:26 +0000
-Subject: [PATCH 202/203] Disable various EC crypto features
+Subject: [PATCH 202/204] Disable various EC crypto features
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -1631,5 +1631,5 @@ index 0000000..0cae2fa
+
+ err:
--
-2.53.0
+2.55.0
diff --git a/0203-Disable-sm2-and-sm4-crypto-algorithms.patch b/0203-Disable-sm2-and-sm4-crypto-algorithms.patch
index 25fca76..852ecfd 100644
--- a/0203-Disable-sm2-and-sm4-crypto-algorithms.patch
+++ b/0203-Disable-sm2-and-sm4-crypto-algorithms.patch
@@ -1,7 +1,7 @@
-From 7ca8da21d6f4d5f6a0785dadd4b90547e3419609 Mon Sep 17 00:00:00 2001
+From 5984c3b8f7ba3310d880a3b65e1143cbc1c12416 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 1 Mar 2024 13:25:14 +0000
-Subject: [PATCH 203/203] Disable sm2 and sm4 crypto algorithms
+Subject: [PATCH 203/204] Disable sm2 and sm4 crypto algorithms
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -119,5 +119,5 @@ index a395ce8..f49e5b7 100644
}
+#endif
--
-2.53.0
+2.55.0
diff --git a/0204-Update-patches-for-openssl-3.0.19.patch b/0204-Update-patches-for-openssl-3.0.19.patch
new file mode 100644
index 0000000..d74092d
--- /dev/null
+++ b/0204-Update-patches-for-openssl-3.0.19.patch
@@ -0,0 +1,1643 @@
+From 57391d0ca631398b2b6317a9ad3bfeb44751effe Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
+Date: Mon, 20 Jul 2026 17:29:27 +0100
+Subject: [PATCH 204/204] Update patches for openssl 3.0.19
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The 3.0 stable branch got 'clang-format' run across its source breaking
+all patches. Update the patches and use 'set -e' when applying to detect
+errors in future.
+
+Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
+---
+ Linux/build_openssl.sh | 2 +
+ ...10-Add-changes-to-ectest-and-eccurve.patch | 556 ++++++++----------
+ openssl_source/0011-Remove-EC-curves.patch | 276 ++++-----
+ openssl_source/0012-Disable-explicit-ec.patch | 189 +++---
+ 4 files changed, 464 insertions(+), 559 deletions(-)
+
+diff --git a/Linux/build_openssl.sh b/Linux/build_openssl.sh
+index 5b11130..f9f6e99 100755
+--- a/Linux/build_openssl.sh
++++ b/Linux/build_openssl.sh
+@@ -58,6 +58,8 @@ tar xvf $OPENSSL_VERSION.tar.gz > /dev/null || exit 1
+ (
+ cd $OPENSSL_VERSION
+
++ set -e
++
+ for i in $SGXSSL_ROOT/../openssl_source/*.patch
+ do
+ echo "Apply $i"
+diff --git a/openssl_source/0010-Add-changes-to-ectest-and-eccurve.patch b/openssl_source/0010-Add-changes-to-ectest-and-eccurve.patch
+index aac242b..2097ed2 100644
+--- a/openssl_source/0010-Add-changes-to-ectest-and-eccurve.patch
++++ b/openssl_source/0010-Add-changes-to-ectest-and-eccurve.patch
+@@ -1,17 +1,13 @@
+-diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+---- ./crypto/ec/ec_curve.c.remove-ec 2023-03-13 16:50:09.278933578 +0100
+-+++ ./crypto/ec/ec_curve.c 2023-03-21 12:38:57.696531941 +0100
+-@@ -32,38 +32,6 @@ typedef struct {
+- /* the nist prime curves */
++diff -rup openssl-3.0.19/crypto/ec/ec_curve.c openssl-3.0.19.new/crypto/ec/ec_curve.c
++--- openssl-3.0.19/crypto/ec/ec_curve.c 2026-01-27 14:09:55.000000000 +0000
+++++ openssl-3.0.19.new/crypto/ec/ec_curve.c 2026-07-20 16:29:22.811921724 +0100
++@@ -33,34 +33,6 @@ typedef struct {
+ static const struct {
+ EC_CURVE_DATA h;
+-- unsigned char data[20 + 24 * 6];
++ unsigned char data[20 + 24 * 6];
+ -} _EC_NIST_PRIME_192 = {
+-- {
+-- NID_X9_62_prime_field, 20, 24, 1
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 24, 1 },
++- { /* seed */
+ - 0x30, 0x45, 0xAE, 0x6F, 0xC8, 0x42, 0x2F, 0x64, 0xED, 0x57, 0x95, 0x28,
+ - 0xD3, 0x81, 0x20, 0xEA, 0xE1, 0x21, 0x96, 0xD5,
+ - /* p */
+@@ -31,30 +27,27 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x6b, 0x24, 0xcd, 0xd5, 0x73, 0xf9, 0x77, 0xa1, 0x1e, 0x79, 0x48, 0x11,
+ - /* order */
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+-- 0x99, 0xDE, 0xF8, 0x36, 0x14, 0x6B, 0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31
+-- }
++- 0x99, 0xDE, 0xF8, 0x36, 0x14, 0x6B, 0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+- unsigned char data[20 + 28 * 6];
++- unsigned char data[20 + 28 * 6];
+ } _EC_NIST_PRIME_224 = {
+- {
+-@@ -200,187 +168,6 @@ static const struct {
+- }
++ { NID_X9_62_prime_field, 20, 28, 1 },
++ { /* seed */
++@@ -184,167 +156,6 @@ static const struct {
++ 0xB7, 0x1E, 0x91, 0x38, 0x64, 0x09 }
+ };
+
+--# ifndef FIPS_MODULE
++-#ifndef FIPS_MODULE
+ -/* the x9.62 prime curves (minus the nist prime curves) */
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[20 + 24 * 6];
+ -} _EC_X9_62_PRIME_192V2 = {
+-- {
+-- NID_X9_62_prime_field, 20, 24, 1
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 24, 1 },
++- { /* seed */
+ - 0x31, 0xA9, 0x2E, 0xE2, 0x02, 0x9F, 0xD1, 0x0D, 0x90, 0x1B, 0x11, 0x3E,
+ - 0x99, 0x07, 0x10, 0xF0, 0xD2, 0x1A, 0xC6, 0xB6,
+ - /* p */
+@@ -74,19 +67,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x08, 0x3d, 0xf2, 0xf2, 0xb0, 0x84, 0x7d, 0xe9, 0x70, 0xb2, 0xde, 0x15,
+ - /* order */
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
+-- 0x5F, 0xB1, 0xA7, 0x24, 0xDC, 0x80, 0x41, 0x86, 0x48, 0xD8, 0xDD, 0x31
+-- }
++- 0x5F, 0xB1, 0xA7, 0x24, 0xDC, 0x80, 0x41, 0x86, 0x48, 0xD8, 0xDD, 0x31 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[20 + 24 * 6];
+ -} _EC_X9_62_PRIME_192V3 = {
+-- {
+-- NID_X9_62_prime_field, 20, 24, 1
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 24, 1 },
++- { /* seed */
+ - 0xC4, 0x69, 0x68, 0x44, 0x35, 0xDE, 0xB3, 0x78, 0xC4, 0xB6, 0x5C, 0xA9,
+ - 0x59, 0x1E, 0x2A, 0x57, 0x63, 0x05, 0x9A, 0x2E,
+ - /* p */
+@@ -106,19 +95,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x6a, 0x6d, 0xc8, 0xf9, 0x97, 0x8a, 0xca, 0x76, 0x48, 0xa9, 0x43, 0xb0,
+ - /* order */
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+-- 0x7A, 0x62, 0xD0, 0x31, 0xC8, 0x3F, 0x42, 0x94, 0xF6, 0x40, 0xEC, 0x13
+-- }
++- 0x7A, 0x62, 0xD0, 0x31, 0xC8, 0x3F, 0x42, 0x94, 0xF6, 0x40, 0xEC, 0x13 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[20 + 30 * 6];
+ -} _EC_X9_62_PRIME_239V1 = {
+-- {
+-- NID_X9_62_prime_field, 20, 30, 1
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 30, 1 },
++- { /* seed */
+ - 0xE4, 0x3B, 0xB4, 0x60, 0xF0, 0xB8, 0x0C, 0xC0, 0xC0, 0xB0, 0x75, 0x79,
+ - 0x8E, 0x94, 0x80, 0x60, 0xF8, 0x32, 0x1B, 0x7D,
+ - /* p */
+@@ -144,19 +129,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - /* order */
+ - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ - 0x7F, 0xFF, 0xFF, 0x9E, 0x5E, 0x9A, 0x9F, 0x5D, 0x90, 0x71, 0xFB, 0xD1,
+-- 0x52, 0x26, 0x88, 0x90, 0x9D, 0x0B
+-- }
++- 0x52, 0x26, 0x88, 0x90, 0x9D, 0x0B }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[20 + 30 * 6];
+ -} _EC_X9_62_PRIME_239V2 = {
+-- {
+-- NID_X9_62_prime_field, 20, 30, 1
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 30, 1 },
++- { /* seed */
+ - 0xE8, 0xB4, 0x01, 0x16, 0x04, 0x09, 0x53, 0x03, 0xCA, 0x3B, 0x80, 0x99,
+ - 0x98, 0x2B, 0xE0, 0x9F, 0xCB, 0x9A, 0xE6, 0x16,
+ - /* p */
+@@ -182,19 +163,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - /* order */
+ - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ - 0x80, 0x00, 0x00, 0xCF, 0xA7, 0xE8, 0x59, 0x43, 0x77, 0xD4, 0x14, 0xC0,
+-- 0x38, 0x21, 0xBC, 0x58, 0x20, 0x63
+-- }
++- 0x38, 0x21, 0xBC, 0x58, 0x20, 0x63 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[20 + 30 * 6];
+ -} _EC_X9_62_PRIME_239V3 = {
+-- {
+-- NID_X9_62_prime_field, 20, 30, 1
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 30, 1 },
++- { /* seed */
+ - 0x7D, 0x73, 0x74, 0x16, 0x8F, 0xFE, 0x34, 0x71, 0xB6, 0x0A, 0x85, 0x76,
+ - 0x86, 0xA1, 0x94, 0x75, 0xD3, 0xBF, 0xA2, 0xFF,
+ - /* p */
+@@ -220,25 +197,20 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - /* order */
+ - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ - 0x7F, 0xFF, 0xFF, 0x97, 0x5D, 0xEB, 0x41, 0xB3, 0xA6, 0x05, 0x7C, 0x3C,
+-- 0x43, 0x21, 0x46, 0x52, 0x65, 0x51
+-- }
++- 0x43, 0x21, 0x46, 0x52, 0x65, 0x51 }
+ -};
+ -#endif /* FIPS_MODULE */
+ -
+ static const struct {
+ EC_CURVE_DATA h;
+ unsigned char data[20 + 32 * 6];
+-@@ -423,294 +210,6 @@ static const struct {
+- /* the secg prime curves (minus the nist and x9.62 prime curves) */
++@@ -384,258 +195,6 @@ static const struct {
+ static const struct {
+ EC_CURVE_DATA h;
+-- unsigned char data[20 + 14 * 6];
++ unsigned char data[20 + 14 * 6];
+ -} _EC_SECG_PRIME_112R1 = {
+-- {
+-- NID_X9_62_prime_field, 20, 14, 1
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 14, 1 },
++- { /* seed */
+ - 0x00, 0xF5, 0x0B, 0x02, 0x8E, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61,
+ - 0x51, 0x75, 0x29, 0x04, 0x72, 0x78, 0x3F, 0xB1,
+ - /* p */
+@@ -258,19 +230,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x75, 0x00,
+ - /* order */
+ - 0xDB, 0x7C, 0x2A, 0xBF, 0x62, 0xE3, 0x5E, 0x76, 0x28, 0xDF, 0xAC, 0x65,
+-- 0x61, 0xC5
+-- }
++- 0x61, 0xC5 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[20 + 14 * 6];
+ -} _EC_SECG_PRIME_112R2 = {
+-- {
+-- NID_X9_62_prime_field, 20, 14, 4
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 14, 4 },
++- { /* seed */
+ - 0x00, 0x27, 0x57, 0xA1, 0x11, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61,
+ - 0x51, 0x75, 0x53, 0x16, 0xC0, 0x5E, 0x0B, 0xD4,
+ - /* p */
+@@ -290,19 +258,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x6e, 0x97,
+ - /* order */
+ - 0x36, 0xDF, 0x0A, 0xAF, 0xD8, 0xB8, 0xD7, 0x59, 0x7C, 0xA1, 0x05, 0x20,
+-- 0xD0, 0x4B
+-- }
++- 0xD0, 0x4B }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[20 + 16 * 6];
+ -} _EC_SECG_PRIME_128R1 = {
+-- {
+-- NID_X9_62_prime_field, 20, 16, 1
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 16, 1 },
++- { /* seed */
+ - 0x00, 0x0E, 0x0D, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75,
+ - 0x0C, 0xC0, 0x3A, 0x44, 0x73, 0xD0, 0x36, 0x79,
+ - /* p */
+@@ -322,19 +286,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0xdd, 0xed, 0x7a, 0x83,
+ - /* order */
+ - 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x75, 0xA3, 0x0D, 0x1B,
+-- 0x90, 0x38, 0xA1, 0x15
+-- }
++- 0x90, 0x38, 0xA1, 0x15 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[20 + 16 * 6];
+ -} _EC_SECG_PRIME_128R2 = {
+-- {
+-- NID_X9_62_prime_field, 20, 16, 4
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 16, 4 },
++- { /* seed */
+ - 0x00, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75, 0x12, 0xD8,
+ - 0xF0, 0x34, 0x31, 0xFC, 0xE6, 0x3B, 0x88, 0xF4,
+ - /* p */
+@@ -354,19 +314,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x5f, 0xc3, 0x4b, 0x44,
+ - /* order */
+ - 0x3F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xBE, 0x00, 0x24, 0x72,
+-- 0x06, 0x13, 0xB5, 0xA3
+-- }
++- 0x06, 0x13, 0xB5, 0xA3 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[0 + 21 * 6];
+ -} _EC_SECG_PRIME_160K1 = {
+-- {
+-- NID_X9_62_prime_field, 0, 21, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 21, 1 },
++- { /* no seed */
+ - /* p */
+ - 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xAC, 0x73,
+@@ -384,19 +340,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x86, 0x53, 0x17, 0x33, 0xc3, 0xf0, 0x3c, 0x4f, 0xee,
+ - /* order */
+ - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xB8,
+-- 0xFA, 0x16, 0xDF, 0xAB, 0x9A, 0xCA, 0x16, 0xB6, 0xB3
+-- }
++- 0xFA, 0x16, 0xDF, 0xAB, 0x9A, 0xCA, 0x16, 0xB6, 0xB3 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[20 + 21 * 6];
+ -} _EC_SECG_PRIME_160R1 = {
+-- {
+-- NID_X9_62_prime_field, 20, 21, 1
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 21, 1 },
++- { /* seed */
+ - 0x10, 0x53, 0xCD, 0xE4, 0x2C, 0x14, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56,
+ - 0x15, 0x17, 0x53, 0x3B, 0xF3, 0xF8, 0x33, 0x45,
+ - /* p */
+@@ -416,19 +368,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x12, 0x04, 0x23, 0x51, 0x37, 0x7a, 0xc5, 0xfb, 0x32,
+ - /* order */
+ - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF4,
+-- 0xC8, 0xF9, 0x27, 0xAE, 0xD3, 0xCA, 0x75, 0x22, 0x57
+-- }
++- 0xC8, 0xF9, 0x27, 0xAE, 0xD3, 0xCA, 0x75, 0x22, 0x57 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[20 + 21 * 6];
+ -} _EC_SECG_PRIME_160R2 = {
+-- {
+-- NID_X9_62_prime_field, 20, 21, 1
+-- },
+-- {
+-- /* seed */
++- { NID_X9_62_prime_field, 20, 21, 1 },
++- { /* seed */
+ - 0xB9, 0x9B, 0x99, 0xB0, 0x99, 0xB3, 0x23, 0xE0, 0x27, 0x09, 0xA4, 0xD6,
+ - 0x96, 0xE6, 0x76, 0x87, 0x56, 0x15, 0x17, 0x51,
+ - /* p */
+@@ -448,19 +396,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x0d, 0xf9, 0x98, 0x2c, 0xfe, 0xa7, 0xd4, 0x3f, 0x2e,
+ - /* order */
+ - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35,
+-- 0x1E, 0xE7, 0x86, 0xA8, 0x18, 0xF3, 0xA1, 0xA1, 0x6B
+-- }
++- 0x1E, 0xE7, 0x86, 0xA8, 0x18, 0xF3, 0xA1, 0xA1, 0x6B }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[0 + 24 * 6];
+ -} _EC_SECG_PRIME_192K1 = {
+-- {
+-- NID_X9_62_prime_field, 0, 24, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 24, 1 },
++- { /* no seed */
+ - /* p */
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEE, 0x37,
+@@ -478,19 +422,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x15, 0xbe, 0x86, 0x34, 0x40, 0x82, 0xaa, 0x88, 0xd9, 0x5e, 0x2f, 0x9d,
+ - /* order */
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
+-- 0x26, 0xF2, 0xFC, 0x17, 0x0F, 0x69, 0x46, 0x6A, 0x74, 0xDE, 0xFD, 0x8D
+-- }
++- 0x26, 0xF2, 0xFC, 0x17, 0x0F, 0x69, 0x46, 0x6A, 0x74, 0xDE, 0xFD, 0x8D }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[0 + 29 * 6];
+ -} _EC_SECG_PRIME_224K1 = {
+-- {
+-- NID_X9_62_prime_field, 0, 29, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 29, 1 },
++- { /* no seed */
+ - /* p */
+ - 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+@@ -514,17 +454,17 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - /* order */
+ - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ - 0x00, 0x00, 0x01, 0xDC, 0xE8, 0xD2, 0xEC, 0x61, 0x84, 0xCA, 0xF0, 0xA9,
+-- 0x71, 0x76, 0x9F, 0xB1, 0xF7
+-- }
++- 0x71, 0x76, 0x9F, 0xB1, 0xF7 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+- unsigned char data[0 + 32 * 6];
++- unsigned char data[0 + 32 * 6];
+ } _EC_SECG_PRIME_256K1 = {
+- {
+-@@ -745,102 +244,6 @@ static const struct {
+- }
++ { NID_X9_62_prime_field, 0, 32, 1 },
++ { /* no seed */
++@@ -665,90 +224,6 @@ static const struct {
++ 0xBF, 0xD2, 0x5E, 0x8C, 0xD0, 0x36, 0x41, 0x41 }
+ };
+
+ -/* some wap/wtls curves */
+@@ -532,11 +472,8 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - EC_CURVE_DATA h;
+ - unsigned char data[0 + 15 * 6];
+ -} _EC_WTLS_8 = {
+-- {
+-- NID_X9_62_prime_field, 0, 15, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 15, 1 },
++- { /* no seed */
+ - /* p */
+ - 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ - 0xFF, 0xFD, 0xE7,
+@@ -554,19 +491,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x00, 0x00, 0x02,
+ - /* order */
+ - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEC, 0xEA, 0x55, 0x1A,
+-- 0xD8, 0x37, 0xE9
+-- }
++- 0xD8, 0x37, 0xE9 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[0 + 21 * 6];
+ -} _EC_WTLS_9 = {
+-- {
+-- NID_X9_62_prime_field, 0, 21, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 21, 1 },
++- { /* no seed */
+ - /* p */
+ - 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x80, 0x8F,
+@@ -584,19 +517,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ - /* order */
+ - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xCD,
+-- 0xC9, 0x8A, 0xE0, 0xE2, 0xDE, 0x57, 0x4A, 0xBF, 0x33
+-- }
++- 0xC9, 0x8A, 0xE0, 0xE2, 0xDE, 0x57, 0x4A, 0xBF, 0x33 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[0 + 28 * 6];
+ -} _EC_WTLS_12 = {
+-- {
+-- NID_X9_62_prime_field, 0, 28, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 28, 1 },
++- { /* no seed */
+ - /* p */
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+@@ -620,23 +549,19 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - /* order */
+ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ - 0xFF, 0xFF, 0x16, 0xA2, 0xE0, 0xB8, 0xF0, 0x3E, 0x13, 0xDD, 0x29, 0x45,
+-- 0x5C, 0x5C, 0x2A, 0x3D
+-- }
++- 0x5C, 0x5C, 0x2A, 0x3D }
+ -};
+ #endif /* FIPS_MODULE */
+
+ #ifndef OPENSSL_NO_EC2M
+-@@ -2238,198 +1641,6 @@ static const struct {
++@@ -1998,174 +1473,6 @@ static const struct {
+ #ifndef FIPS_MODULE
+ static const struct {
+ EC_CURVE_DATA h;
+ - unsigned char data[0 + 20 * 6];
+ -} _EC_brainpoolP160r1 = {
+-- {
+-- NID_X9_62_prime_field, 0, 20, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 20, 1 },
++- { /* no seed */
+ - /* p */
+ - 0xE9, 0x5E, 0x4A, 0x5F, 0x73, 0x70, 0x59, 0xDC, 0x60, 0xDF, 0xC7, 0xAD,
+ - 0x95, 0xB3, 0xD8, 0x13, 0x95, 0x15, 0x62, 0x0F,
+@@ -654,19 +579,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x66, 0x9C, 0x97, 0x63, 0x16, 0xDA, 0x63, 0x21,
+ - /* order */
+ - 0xE9, 0x5E, 0x4A, 0x5F, 0x73, 0x70, 0x59, 0xDC, 0x60, 0xDF, 0x59, 0x91,
+-- 0xD4, 0x50, 0x29, 0x40, 0x9E, 0x60, 0xFC, 0x09
+-- }
++- 0xD4, 0x50, 0x29, 0x40, 0x9E, 0x60, 0xFC, 0x09 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[0 + 20 * 6];
+ -} _EC_brainpoolP160t1 = {
+-- {
+-- NID_X9_62_prime_field, 0, 20, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 20, 1 },
++- { /* no seed */
+ - /* p */
+ - 0xE9, 0x5E, 0x4A, 0x5F, 0x73, 0x70, 0x59, 0xDC, 0x60, 0xDF, 0xC7, 0xAD,
+ - 0x95, 0xB3, 0xD8, 0x13, 0x95, 0x15, 0x62, 0x0F,
+@@ -684,19 +605,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x24, 0x43, 0x77, 0x21, 0x52, 0xC9, 0xE0, 0xAD,
+ - /* order */
+ - 0xE9, 0x5E, 0x4A, 0x5F, 0x73, 0x70, 0x59, 0xDC, 0x60, 0xDF, 0x59, 0x91,
+-- 0xD4, 0x50, 0x29, 0x40, 0x9E, 0x60, 0xFC, 0x09
+-- }
++- 0xD4, 0x50, 0x29, 0x40, 0x9E, 0x60, 0xFC, 0x09 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[0 + 24 * 6];
+ -} _EC_brainpoolP192r1 = {
+-- {
+-- NID_X9_62_prime_field, 0, 24, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 24, 1 },
++- { /* no seed */
+ - /* p */
+ - 0xC3, 0x02, 0xF4, 0x1D, 0x93, 0x2A, 0x36, 0xCD, 0xA7, 0xA3, 0x46, 0x30,
+ - 0x93, 0xD1, 0x8D, 0xB7, 0x8F, 0xCE, 0x47, 0x6D, 0xE1, 0xA8, 0x62, 0x97,
+@@ -714,19 +631,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0xC1, 0x49, 0x00, 0x02, 0xE6, 0x77, 0x3F, 0xA2, 0xFA, 0x29, 0x9B, 0x8F,
+ - /* order */
+ - 0xC3, 0x02, 0xF4, 0x1D, 0x93, 0x2A, 0x36, 0xCD, 0xA7, 0xA3, 0x46, 0x2F,
+-- 0x9E, 0x9E, 0x91, 0x6B, 0x5B, 0xE8, 0xF1, 0x02, 0x9A, 0xC4, 0xAC, 0xC1
+-- }
++- 0x9E, 0x9E, 0x91, 0x6B, 0x5B, 0xE8, 0xF1, 0x02, 0x9A, 0xC4, 0xAC, 0xC1 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[0 + 24 * 6];
+ -} _EC_brainpoolP192t1 = {
+-- {
+-- NID_X9_62_prime_field, 0, 24, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 24, 1 },
++- { /* no seed */
+ - /* p */
+ - 0xC3, 0x02, 0xF4, 0x1D, 0x93, 0x2A, 0x36, 0xCD, 0xA7, 0xA3, 0x46, 0x30,
+ - 0x93, 0xD1, 0x8D, 0xB7, 0x8F, 0xCE, 0x47, 0x6D, 0xE1, 0xA8, 0x62, 0x97,
+@@ -744,19 +657,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - 0x44, 0x9D, 0x00, 0x84, 0xB7, 0xE5, 0xB3, 0xDE, 0x7C, 0xCC, 0x01, 0xC9,
+ - /* order */
+ - 0xC3, 0x02, 0xF4, 0x1D, 0x93, 0x2A, 0x36, 0xCD, 0xA7, 0xA3, 0x46, 0x2F,
+-- 0x9E, 0x9E, 0x91, 0x6B, 0x5B, 0xE8, 0xF1, 0x02, 0x9A, 0xC4, 0xAC, 0xC1
+-- }
++- 0x9E, 0x9E, 0x91, 0x6B, 0x5B, 0xE8, 0xF1, 0x02, 0x9A, 0xC4, 0xAC, 0xC1 }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[0 + 28 * 6];
+ -} _EC_brainpoolP224r1 = {
+-- {
+-- NID_X9_62_prime_field, 0, 28, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 28, 1 },
++- { /* no seed */
+ - /* p */
+ - 0xD7, 0xC1, 0x34, 0xAA, 0x26, 0x43, 0x66, 0x86, 0x2A, 0x18, 0x30, 0x25,
+ - 0x75, 0xD1, 0xD7, 0x87, 0xB0, 0x9F, 0x07, 0x57, 0x97, 0xDA, 0x89, 0xF5,
+@@ -780,19 +689,15 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - /* order */
+ - 0xD7, 0xC1, 0x34, 0xAA, 0x26, 0x43, 0x66, 0x86, 0x2A, 0x18, 0x30, 0x25,
+ - 0x75, 0xD0, 0xFB, 0x98, 0xD1, 0x16, 0xBC, 0x4B, 0x6D, 0xDE, 0xBC, 0xA3,
+-- 0xA5, 0xA7, 0x93, 0x9F
+-- }
++- 0xA5, 0xA7, 0x93, 0x9F }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ - unsigned char data[0 + 28 * 6];
+ -} _EC_brainpoolP224t1 = {
+-- {
+-- NID_X9_62_prime_field, 0, 28, 1
+-- },
+-- {
+-- /* no seed */
++- { NID_X9_62_prime_field, 0, 28, 1 },
++- { /* no seed */
+ - /* p */
+ - 0xD7, 0xC1, 0x34, 0xAA, 0x26, 0x43, 0x66, 0x86, 0x2A, 0x18, 0x30, 0x25,
+ - 0x75, 0xD1, 0xD7, 0x87, 0xB0, 0x9F, 0x07, 0x57, 0x97, 0xDA, 0x89, 0xF5,
+@@ -816,115 +721,114 @@ diff -up ./crypto/ec/ec_curve.c.remove-ec ./crypto/ec/ec_curve.c
+ - /* order */
+ - 0xD7, 0xC1, 0x34, 0xAA, 0x26, 0x43, 0x66, 0x86, 0x2A, 0x18, 0x30, 0x25,
+ - 0x75, 0xD0, 0xFB, 0x98, 0xD1, 0x16, 0xBC, 0x4B, 0x6D, 0xDE, 0xBC, 0xA3,
+-- 0xA5, 0xA7, 0x93, 0x9F
+-- }
++- 0xA5, 0xA7, 0x93, 0x9F }
+ -};
+ -
+ -static const struct {
+ - EC_CURVE_DATA h;
+ unsigned char data[0 + 32 * 6];
+ } _EC_brainpoolP256r1 = {
+- {
+-@@ -2854,8 +2065,6 @@ static const ec_list_element curve_list[
+- "NIST/SECG curve over a 521 bit prime field"},
++ { NID_X9_62_prime_field, 0, 32, 1 },
++@@ -2730,8 +2037,6 @@ static const ec_list_element curve_list[
++ "NIST/SECG curve over a 521 bit prime field" },
+
+ /* X9.62 curves */
+-- {NID_X9_62_prime192v1, &_EC_NIST_PRIME_192.h, 0,
+-- "NIST/X9.62/SECG curve over a 192 bit prime field"},
+- {NID_X9_62_prime256v1, &_EC_X9_62_PRIME_256V1.h,
+- # if defined(ECP_NISTZ256_ASM)
+- EC_GFp_nistz256_method,
+-@@ -2899,25 +2108,6 @@ static const ec_list_element curve_list[
++- { NID_X9_62_prime192v1, &_EC_NIST_PRIME_192.h, 0,
++- "NIST/X9.62/SECG curve over a 192 bit prime field" },
++ { NID_X9_62_prime256v1, &_EC_X9_62_PRIME_256V1.h,
++ #if defined(ECP_NISTZ256_ASM)
++ EC_GFp_nistz256_method,
++@@ -2775,25 +2080,6 @@ static const ec_list_element curve_list[
+ static const ec_list_element curve_list[] = {
+ /* prime field curves */
+ /* secg curves */
+-- {NID_secp112r1, &_EC_SECG_PRIME_112R1.h, 0,
+-- "SECG/WTLS curve over a 112 bit prime field"},
+-- {NID_secp112r2, &_EC_SECG_PRIME_112R2.h, 0,
+-- "SECG curve over a 112 bit prime field"},
+-- {NID_secp128r1, &_EC_SECG_PRIME_128R1.h, 0,
+-- "SECG curve over a 128 bit prime field"},
+-- {NID_secp128r2, &_EC_SECG_PRIME_128R2.h, 0,
+-- "SECG curve over a 128 bit prime field"},
+-- {NID_secp160k1, &_EC_SECG_PRIME_160K1.h, 0,
+-- "SECG curve over a 160 bit prime field"},
+-- {NID_secp160r1, &_EC_SECG_PRIME_160R1.h, 0,
+-- "SECG curve over a 160 bit prime field"},
+-- {NID_secp160r2, &_EC_SECG_PRIME_160R2.h, 0,
+-- "SECG/WTLS curve over a 160 bit prime field"},
++- { NID_secp112r1, &_EC_SECG_PRIME_112R1.h, 0,
++- "SECG/WTLS curve over a 112 bit prime field" },
++- { NID_secp112r2, &_EC_SECG_PRIME_112R2.h, 0,
++- "SECG curve over a 112 bit prime field" },
++- { NID_secp128r1, &_EC_SECG_PRIME_128R1.h, 0,
++- "SECG curve over a 128 bit prime field" },
++- { NID_secp128r2, &_EC_SECG_PRIME_128R2.h, 0,
++- "SECG curve over a 128 bit prime field" },
++- { NID_secp160k1, &_EC_SECG_PRIME_160K1.h, 0,
++- "SECG curve over a 160 bit prime field" },
++- { NID_secp160r1, &_EC_SECG_PRIME_160R1.h, 0,
++- "SECG curve over a 160 bit prime field" },
++- { NID_secp160r2, &_EC_SECG_PRIME_160R2.h, 0,
++- "SECG/WTLS curve over a 160 bit prime field" },
+ - /* SECG secp192r1 is the same as X9.62 prime192v1 and hence omitted */
+-- {NID_secp192k1, &_EC_SECG_PRIME_192K1.h, 0,
+-- "SECG curve over a 192 bit prime field"},
+-- {NID_secp224k1, &_EC_SECG_PRIME_224K1.h, 0,
+-- "SECG curve over a 224 bit prime field"},
+- # ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
+- {NID_secp224r1, &_EC_NIST_PRIME_224.h, EC_GFp_nistp224_method,
+- "NIST/SECG curve over a 224 bit prime field"},
+-@@ -2945,18 +2135,6 @@ static const ec_list_element curve_list[
+- # endif
+- "NIST/SECG curve over a 521 bit prime field"},
++- { NID_secp192k1, &_EC_SECG_PRIME_192K1.h, 0,
++- "SECG curve over a 192 bit prime field" },
++- { NID_secp224k1, &_EC_SECG_PRIME_224K1.h, 0,
++- "SECG curve over a 224 bit prime field" },
++ #ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
++ { NID_secp224r1, &_EC_NIST_PRIME_224.h, EC_GFp_nistp224_method,
++ "NIST/SECG curve over a 224 bit prime field" },
++@@ -2821,18 +2107,6 @@ static const ec_list_element curve_list[
++ #endif
++ "NIST/SECG curve over a 521 bit prime field" },
+ /* X9.62 curves */
+-- {NID_X9_62_prime192v1, &_EC_NIST_PRIME_192.h, 0,
+-- "NIST/X9.62/SECG curve over a 192 bit prime field"},
+-- {NID_X9_62_prime192v2, &_EC_X9_62_PRIME_192V2.h, 0,
+-- "X9.62 curve over a 192 bit prime field"},
+-- {NID_X9_62_prime192v3, &_EC_X9_62_PRIME_192V3.h, 0,
+-- "X9.62 curve over a 192 bit prime field"},
+-- {NID_X9_62_prime239v1, &_EC_X9_62_PRIME_239V1.h, 0,
+-- "X9.62 curve over a 239 bit prime field"},
+-- {NID_X9_62_prime239v2, &_EC_X9_62_PRIME_239V2.h, 0,
+-- "X9.62 curve over a 239 bit prime field"},
+-- {NID_X9_62_prime239v3, &_EC_X9_62_PRIME_239V3.h, 0,
+-- "X9.62 curve over a 239 bit prime field"},
+- {NID_X9_62_prime256v1, &_EC_X9_62_PRIME_256V1.h,
+- # if defined(ECP_NISTZ256_ASM)
+- EC_GFp_nistz256_method,
+-@@ -3053,22 +2231,12 @@ static const ec_list_element curve_list[
+- {NID_wap_wsg_idm_ecid_wtls5, &_EC_X9_62_CHAR2_163V1.h, 0,
+- "X9.62 curve over a 163 bit binary field"},
+- # endif
+-- {NID_wap_wsg_idm_ecid_wtls6, &_EC_SECG_PRIME_112R1.h, 0,
+-- "SECG/WTLS curve over a 112 bit prime field"},
+-- {NID_wap_wsg_idm_ecid_wtls7, &_EC_SECG_PRIME_160R2.h, 0,
+-- "SECG/WTLS curve over a 160 bit prime field"},
+-- {NID_wap_wsg_idm_ecid_wtls8, &_EC_WTLS_8.h, 0,
+-- "WTLS curve over a 112 bit prime field"},
+-- {NID_wap_wsg_idm_ecid_wtls9, &_EC_WTLS_9.h, 0,
+-- "WTLS curve over a 160 bit prime field"},
+- # ifndef OPENSSL_NO_EC2M
+- {NID_wap_wsg_idm_ecid_wtls10, &_EC_NIST_CHAR2_233K.h, 0,
+- "NIST/SECG/WTLS curve over a 233 bit binary field"},
+- {NID_wap_wsg_idm_ecid_wtls11, &_EC_NIST_CHAR2_233B.h, 0,
+- "NIST/SECG/WTLS curve over a 233 bit binary field"},
+- # endif
+-- {NID_wap_wsg_idm_ecid_wtls12, &_EC_WTLS_12.h, 0,
+-- "WTLS curve over a 224 bit prime field"},
+- # ifndef OPENSSL_NO_EC2M
++- { NID_X9_62_prime192v1, &_EC_NIST_PRIME_192.h, 0,
++- "NIST/X9.62/SECG curve over a 192 bit prime field" },
++- { NID_X9_62_prime192v2, &_EC_X9_62_PRIME_192V2.h, 0,
++- "X9.62 curve over a 192 bit prime field" },
++- { NID_X9_62_prime192v3, &_EC_X9_62_PRIME_192V3.h, 0,
++- "X9.62 curve over a 192 bit prime field" },
++- { NID_X9_62_prime239v1, &_EC_X9_62_PRIME_239V1.h, 0,
++- "X9.62 curve over a 239 bit prime field" },
++- { NID_X9_62_prime239v2, &_EC_X9_62_PRIME_239V2.h, 0,
++- "X9.62 curve over a 239 bit prime field" },
++- { NID_X9_62_prime239v3, &_EC_X9_62_PRIME_239V3.h, 0,
++- "X9.62 curve over a 239 bit prime field" },
++ { NID_X9_62_prime256v1, &_EC_X9_62_PRIME_256V1.h,
++ #if defined(ECP_NISTZ256_ASM)
++ EC_GFp_nistz256_method,
++@@ -2929,22 +2203,12 @@ static const ec_list_element curve_list[
++ { NID_wap_wsg_idm_ecid_wtls5, &_EC_X9_62_CHAR2_163V1.h, 0,
++ "X9.62 curve over a 163 bit binary field" },
++ #endif
++- { NID_wap_wsg_idm_ecid_wtls6, &_EC_SECG_PRIME_112R1.h, 0,
++- "SECG/WTLS curve over a 112 bit prime field" },
++- { NID_wap_wsg_idm_ecid_wtls7, &_EC_SECG_PRIME_160R2.h, 0,
++- "SECG/WTLS curve over a 160 bit prime field" },
++- { NID_wap_wsg_idm_ecid_wtls8, &_EC_WTLS_8.h, 0,
++- "WTLS curve over a 112 bit prime field" },
++- { NID_wap_wsg_idm_ecid_wtls9, &_EC_WTLS_9.h, 0,
++- "WTLS curve over a 160 bit prime field" },
++ #ifndef OPENSSL_NO_EC2M
++ { NID_wap_wsg_idm_ecid_wtls10, &_EC_NIST_CHAR2_233K.h, 0,
++ "NIST/SECG/WTLS curve over a 233 bit binary field" },
++ { NID_wap_wsg_idm_ecid_wtls11, &_EC_NIST_CHAR2_233B.h, 0,
++ "NIST/SECG/WTLS curve over a 233 bit binary field" },
++ #endif
++- { NID_wap_wsg_idm_ecid_wtls12, &_EC_WTLS_12.h, 0,
++- "WTLS curve over a 224 bit prime field" },
++ #ifndef OPENSSL_NO_EC2M
+ /* IPSec curves */
+- {NID_ipsec3, &_EC_IPSEC_155_ID3.h, 0,
+-@@ -3079,18 +2247,6 @@ static const ec_list_element curve_list[
+- "\tNot suitable for ECDSA.\n\tQuestionable extension field!"},
+- # endif
++ { NID_ipsec3, &_EC_IPSEC_155_ID3.h, 0,
++@@ -2955,18 +2219,6 @@ static const ec_list_element curve_list[
++ "\tNot suitable for ECDSA.\n\tQuestionable extension field!" },
++ #endif
+ /* brainpool curves */
+-- {NID_brainpoolP160r1, &_EC_brainpoolP160r1.h, 0,
+-- "RFC 5639 curve over a 160 bit prime field"},
+-- {NID_brainpoolP160t1, &_EC_brainpoolP160t1.h, 0,
+-- "RFC 5639 curve over a 160 bit prime field"},
+-- {NID_brainpoolP192r1, &_EC_brainpoolP192r1.h, 0,
+-- "RFC 5639 curve over a 192 bit prime field"},
+-- {NID_brainpoolP192t1, &_EC_brainpoolP192t1.h, 0,
+-- "RFC 5639 curve over a 192 bit prime field"},
+-- {NID_brainpoolP224r1, &_EC_brainpoolP224r1.h, 0,
+-- "RFC 5639 curve over a 224 bit prime field"},
+-- {NID_brainpoolP224t1, &_EC_brainpoolP224t1.h, 0,
+-- "RFC 5639 curve over a 224 bit prime field"},
+- {NID_brainpoolP256r1, &_EC_brainpoolP256r1.h, 0,
+- "RFC 5639 curve over a 256 bit prime field"},
+- {NID_brainpoolP256t1, &_EC_brainpoolP256t1.h, 0,
+-diff -up ./test/ectest.c.remove-ec ./test/ectest.c
+---- ./test/ectest.c.remove-ec 2023-03-13 18:39:30.544642912 +0100
+-+++ ./test/ectest.c 2023-03-20 07:27:26.403212965 +0100
+-@@ -175,184 +175,26 @@ static int prime_field_tests(void)
++- { NID_brainpoolP160r1, &_EC_brainpoolP160r1.h, 0,
++- "RFC 5639 curve over a 160 bit prime field" },
++- { NID_brainpoolP160t1, &_EC_brainpoolP160t1.h, 0,
++- "RFC 5639 curve over a 160 bit prime field" },
++- { NID_brainpoolP192r1, &_EC_brainpoolP192r1.h, 0,
++- "RFC 5639 curve over a 192 bit prime field" },
++- { NID_brainpoolP192t1, &_EC_brainpoolP192t1.h, 0,
++- "RFC 5639 curve over a 192 bit prime field" },
++- { NID_brainpoolP224r1, &_EC_brainpoolP224r1.h, 0,
++- "RFC 5639 curve over a 224 bit prime field" },
++- { NID_brainpoolP224t1, &_EC_brainpoolP224t1.h, 0,
++- "RFC 5639 curve over a 224 bit prime field" },
++ { NID_brainpoolP256r1, &_EC_brainpoolP256r1.h, 0,
++ "RFC 5639 curve over a 256 bit prime field" },
++ { NID_brainpoolP256t1, &_EC_brainpoolP256t1.h, 0,
++diff -rup openssl-3.0.19/test/ectest.c openssl-3.0.19.new/test/ectest.c
++--- openssl-3.0.19/test/ectest.c 2026-01-27 14:09:55.000000000 +0000
+++++ openssl-3.0.19.new/test/ectest.c 2026-07-20 16:32:40.435694967 +0100
++@@ -174,183 +174,26 @@ static int prime_field_tests(void)
+ || !TEST_ptr(p = BN_new())
+ || !TEST_ptr(a = BN_new())
+ || !TEST_ptr(b = BN_new())
+@@ -958,7 +862,7 @@ diff -up ./test/ectest.c.remove-ec ./test/ectest.c
+ || !TEST_ptr(x = BN_new())
+ || !TEST_ptr(y = BN_new())
+ || !TEST_ptr(z = BN_new())
+-- || !TEST_ptr(yplusone = BN_new())
++ || !TEST_ptr(yplusone = BN_new())
+ - || !TEST_true(BN_hex2bn(&x, "D"))
+ - || !TEST_true(EC_POINT_set_compressed_coordinates(group, Q, x, 1, ctx)))
+ - goto err;
+@@ -982,7 +886,7 @@ diff -up ./test/ectest.c.remove-ec ./test/ectest.c
+ - TEST_note(" point at infinity");
+ - } else {
+ - if (!TEST_true(EC_POINT_get_affine_coordinates(group, P, x, y,
+-- ctx)))
++- ctx)))
+ - goto err;
+ -
+ - test_output_bignum("x", x);
+@@ -999,64 +903,63 @@ diff -up ./test/ectest.c.remove-ec ./test/ectest.c
+ - || !TEST_true(EC_POINT_is_at_infinity(group, P)))
+ - goto err;
+ -
+-- len =
+-- EC_POINT_point2oct(group, Q, POINT_CONVERSION_COMPRESSED, buf,
+-- sizeof(buf), ctx);
++- len = EC_POINT_point2oct(group, Q, POINT_CONVERSION_COMPRESSED, buf,
++- sizeof(buf), ctx);
+ - if (!TEST_size_t_ne(len, 0)
+ - || !TEST_true(EC_POINT_oct2point(group, P, buf, len, ctx))
+ - || !TEST_int_eq(0, EC_POINT_cmp(group, P, Q, ctx)))
+-- goto err;
++ goto err;
+ - test_output_memory("Generator as octet string, compressed form:",
+-- buf, len);
++- buf, len);
+ -
+ - len = EC_POINT_point2oct(group, Q, POINT_CONVERSION_UNCOMPRESSED,
+-- buf, sizeof(buf), ctx);
++- buf, sizeof(buf), ctx);
+ - if (!TEST_size_t_ne(len, 0)
+ - || !TEST_true(EC_POINT_oct2point(group, P, buf, len, ctx))
+ - || !TEST_int_eq(0, EC_POINT_cmp(group, P, Q, ctx)))
+ - goto err;
+ - test_output_memory("Generator as octet string, uncompressed form:",
+-- buf, len);
++- buf, len);
+ -
+ - len = EC_POINT_point2oct(group, Q, POINT_CONVERSION_HYBRID,
+-- buf, sizeof(buf), ctx);
++- buf, sizeof(buf), ctx);
+ - if (!TEST_size_t_ne(len, 0)
+ - || !TEST_true(EC_POINT_oct2point(group, P, buf, len, ctx))
+ - || !TEST_int_eq(0, EC_POINT_cmp(group, P, Q, ctx)))
+ - goto err;
+ - test_output_memory("Generator as octet string, hybrid form:",
+-- buf, len);
++- buf, len);
+ -
+ - if (!TEST_true(EC_POINT_invert(group, P, ctx))
+ - || !TEST_int_eq(0, EC_POINT_cmp(group, P, R, ctx))
+ -
+-- /*
+-- * Curve secp160r1 (Certicom Research SEC 2 Version 1.0, section 2.4.2,
+-- * 2000) -- not a NIST curve, but commonly used
+-- */
++- /*
++- * Curve secp160r1 (Certicom Research SEC 2 Version 1.0, section 2.4.2,
++- * 2000) -- not a NIST curve, but commonly used
++- */
+ -
+-- || !TEST_true(BN_hex2bn(&p, "FFFFFFFF"
++- || !TEST_true(BN_hex2bn(&p, "FFFFFFFF"
+ - "FFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF"))
+ - || !TEST_int_eq(1, BN_check_prime(p, ctx, NULL))
+-- || !TEST_true(BN_hex2bn(&a, "FFFFFFFF"
++- || !TEST_true(BN_hex2bn(&a, "FFFFFFFF"
+ - "FFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC"))
+-- || !TEST_true(BN_hex2bn(&b, "1C97BEFC"
++- || !TEST_true(BN_hex2bn(&b, "1C97BEFC"
+ - "54BD7A8B65ACF89F81D4D4ADC565FA45"))
+ - || !TEST_true(EC_GROUP_set_curve(group, p, a, b, ctx))
+-- || !TEST_true(BN_hex2bn(&x, "4A96B568"
++- || !TEST_true(BN_hex2bn(&x, "4A96B568"
+ - "8EF573284664698968C38BB913CBFC82"))
+-- || !TEST_true(BN_hex2bn(&y, "23a62855"
++- || !TEST_true(BN_hex2bn(&y, "23a62855"
+ - "3168947d59dcc912042351377ac5fb32"))
+ - || !TEST_true(BN_add(yplusone, y, BN_value_one()))
+-- /*
+-- * When (x, y) is on the curve, (x, y + 1) is, as it happens, not,
+-- * and therefore setting the coordinates should fail.
+-- */
++- /*
++- * When (x, y) is on the curve, (x, y + 1) is, as it happens, not,
++- * and therefore setting the coordinates should fail.
++- */
+ - || !TEST_false(EC_POINT_set_affine_coordinates(group, P, x, yplusone,
+-- ctx))
++- ctx))
+ - || !TEST_true(EC_POINT_set_affine_coordinates(group, P, x, y, ctx))
+ - || !TEST_int_gt(EC_POINT_is_on_curve(group, P, ctx), 0)
+-- || !TEST_true(BN_hex2bn(&z, "0100000000"
++- || !TEST_true(BN_hex2bn(&z, "0100000000"
+ - "000000000001F4C8F927AED3CA752257"))
+ - || !TEST_true(EC_GROUP_set_generator(group, P, z, BN_value_one()))
+ - || !TEST_true(EC_POINT_get_affine_coordinates(group, P, x, y, ctx)))
+@@ -1065,58 +968,57 @@ diff -up ./test/ectest.c.remove-ec ./test/ectest.c
+ - test_output_bignum("x", x);
+ - test_output_bignum("y", y);
+ - /* G_y value taken from the standard: */
+-- if (!TEST_true(BN_hex2bn(&z, "23a62855"
++- if (!TEST_true(BN_hex2bn(&z, "23a62855"
+ - "3168947d59dcc912042351377ac5fb32"))
+ - || !TEST_BN_eq(y, z)
+ - || !TEST_int_eq(EC_GROUP_get_degree(group), 160)
+ - || !group_order_tests(group)
+ -
+-- /* Curve P-192 (FIPS PUB 186-2, App. 6) */
++- /* Curve P-192 (FIPS PUB 186-2, App. 6) */
+ -
+-- || !TEST_true(BN_hex2bn(&p, "FFFFFFFFFFFFFFFF"
++- || !TEST_true(BN_hex2bn(&p, "FFFFFFFFFFFFFFFF"
+ - "FFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"))
+ - || !TEST_int_eq(1, BN_check_prime(p, ctx, NULL))
+-- || !TEST_true(BN_hex2bn(&a, "FFFFFFFFFFFFFFFF"
++- || !TEST_true(BN_hex2bn(&a, "FFFFFFFFFFFFFFFF"
+ - "FFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC"))
+-- || !TEST_true(BN_hex2bn(&b, "64210519E59C80E7"
++- || !TEST_true(BN_hex2bn(&b, "64210519E59C80E7"
+ - "0FA7E9AB72243049FEB8DEECC146B9B1"))
+ - || !TEST_true(EC_GROUP_set_curve(group, p, a, b, ctx))
+-- || !TEST_true(BN_hex2bn(&x, "188DA80EB03090F6"
++- || !TEST_true(BN_hex2bn(&x, "188DA80EB03090F6"
+ - "7CBF20EB43A18800F4FF0AFD82FF1012"))
+ - || !TEST_true(EC_POINT_set_compressed_coordinates(group, P, x, 1, ctx))
+ - || !TEST_int_gt(EC_POINT_is_on_curve(group, P, ctx), 0)
+-- || !TEST_true(BN_hex2bn(&z, "FFFFFFFFFFFFFFFF"
++- || !TEST_true(BN_hex2bn(&z, "FFFFFFFFFFFFFFFF"
+ - "FFFFFFFF99DEF836146BC9B1B4D22831"))
+ - || !TEST_true(EC_GROUP_set_generator(group, P, z, BN_value_one()))
+ - || !TEST_true(EC_POINT_get_affine_coordinates(group, P, x, y, ctx)))
+-+ || !TEST_ptr(yplusone = BN_new()))
+- goto err;
+-
++- goto err;
++-
+ - TEST_info("NIST curve P-192 -- Generator");
+ - test_output_bignum("x", x);
+ - test_output_bignum("y", y);
+ - /* G_y value taken from the standard: */
+-- if (!TEST_true(BN_hex2bn(&z, "07192B95FFC8DA78"
++- if (!TEST_true(BN_hex2bn(&z, "07192B95FFC8DA78"
+ - "631011ED6B24CDD573F977A11E794811"))
+ - || !TEST_BN_eq(y, z)
+ - || !TEST_true(BN_add(yplusone, y, BN_value_one()))
+-- /*
+-- * When (x, y) is on the curve, (x, y + 1) is, as it happens, not,
+-- * and therefore setting the coordinates should fail.
+-- */
++- /*
++- * When (x, y) is on the curve, (x, y + 1) is, as it happens, not,
++- * and therefore setting the coordinates should fail.
++- */
+ - || !TEST_false(EC_POINT_set_affine_coordinates(group, P, x, yplusone,
+-- ctx))
++- ctx))
+ - || !TEST_int_eq(EC_GROUP_get_degree(group), 192)
+ - || !group_order_tests(group)
+--
+- /* Curve P-224 (FIPS PUB 186-2, App. 6) */
+
+-- || !TEST_true(BN_hex2bn(&p, "FFFFFFFFFFFFFFFFFFFFFFFF"
+-+ if (!TEST_true(BN_hex2bn(&p, "FFFFFFFFFFFFFFFFFFFFFFFF"
++ /* Curve P-224 (FIPS PUB 186-2, App. 6) */
++
++- || !TEST_true(BN_hex2bn(&p, "FFFFFFFFFFFFFFFFFFFFFFFF"
+++ if(!TEST_true(BN_hex2bn(&p, "FFFFFFFFFFFFFFFFFFFFFFFF"
+ "FFFFFFFF000000000000000000000001"))
+ || !TEST_int_eq(1, BN_check_prime(p, ctx, NULL))
+- || !TEST_true(BN_hex2bn(&a, "FFFFFFFFFFFFFFFFFFFFFFFF"
+-@@ -3015,7 +2857,7 @@ int setup_tests(void)
++ || !TEST_true(BN_hex2bn(&a, "FFFFFFFFFFFFFFFFFFFFFFFF"
++@@ -3410,7 +3253,7 @@ int setup_tests(void)
+ return 0;
+
+ ADD_TEST(parameter_test);
+diff --git a/openssl_source/0011-Remove-EC-curves.patch b/openssl_source/0011-Remove-EC-curves.patch
+index f6c733a..0d2e7f8 100644
+--- a/openssl_source/0011-Remove-EC-curves.patch
++++ b/openssl_source/0011-Remove-EC-curves.patch
+@@ -1,147 +1,147 @@
+-diff -up ./apps/speed.c.ec-curves ./apps/speed.c
+---- ./apps/speed.c.ec-curves 2023-03-14 04:44:12.545437892 +0100
+-+++ ./apps/speed.c 2023-03-14 04:48:28.606729067 +0100
+-@@ -366,7 +366,7 @@ static double ffdh_results[FFDH_NUM][1];
++diff -rup openssl-3.0.19/apps/speed.c openssl-3.0.19.new/apps/speed.c
++--- openssl-3.0.19/apps/speed.c 2026-01-27 14:09:55.000000000 +0000
+++++ openssl-3.0.19.new/apps/speed.c 2026-07-20 17:14:09.495098286 +0100
++@@ -417,8 +417,6 @@ static double ffdh_results[FFDH_NUM][1];
+ #endif /* OPENSSL_NO_DH */
+
+ enum ec_curves_t {
+-- R_EC_P160, R_EC_P192, R_EC_P224, R_EC_P256, R_EC_P384, R_EC_P521,
+-+ R_EC_P224, R_EC_P256, R_EC_P384, R_EC_P521,
+- #ifndef OPENSSL_NO_EC2M
+- R_EC_K163, R_EC_K233, R_EC_K283, R_EC_K409, R_EC_K571,
+- R_EC_B163, R_EC_B233, R_EC_B283, R_EC_B409, R_EC_B571,
+-@@ -376,8 +376,6 @@ enum ec_curves_t {
++- R_EC_P160,
++- R_EC_P192,
++ R_EC_P224,
++ R_EC_P256,
++ R_EC_P384,
++@@ -445,8 +443,6 @@ enum ec_curves_t {
+ };
+ /* list of ecdsa curves */
+ static const OPT_PAIR ecdsa_choices[ECDSA_NUM] = {
+-- {"ecdsap160", R_EC_P160},
+-- {"ecdsap192", R_EC_P192},
+- {"ecdsap224", R_EC_P224},
+- {"ecdsap256", R_EC_P256},
+- {"ecdsap384", R_EC_P384},
+-@@ -404,8 +402,6 @@ static const OPT_PAIR ecdsa_choices[ECDS
+- enum { R_EC_X25519 = ECDSA_NUM, R_EC_X448, EC_NUM };
++- { "ecdsap160", R_EC_P160 },
++- { "ecdsap192", R_EC_P192 },
++ { "ecdsap224", R_EC_P224 },
++ { "ecdsap256", R_EC_P256 },
++ { "ecdsap384", R_EC_P384 },
++@@ -475,8 +471,6 @@ enum { R_EC_X25519 = ECDSA_NUM,
++ EC_NUM };
+ /* list of ecdh curves, extension of |ecdsa_choices| list above */
+ static const OPT_PAIR ecdh_choices[EC_NUM] = {
+-- {"ecdhp160", R_EC_P160},
+-- {"ecdhp192", R_EC_P192},
+- {"ecdhp224", R_EC_P224},
+- {"ecdhp256", R_EC_P256},
+- {"ecdhp384", R_EC_P384},
+-@@ -1422,8 +1418,6 @@ int speed_main(int argc, char **argv)
++- { "ecdhp160", R_EC_P160 },
++- { "ecdhp192", R_EC_P192 },
++ { "ecdhp224", R_EC_P224 },
++ { "ecdhp256", R_EC_P256 },
++ { "ecdhp384", R_EC_P384 },
++@@ -1603,8 +1597,6 @@ int speed_main(int argc, char **argv)
+ */
+ static const EC_CURVE ec_curves[EC_NUM] = {
+ /* Prime Curves */
+-- {"secp160r1", NID_secp160r1, 160},
+-- {"nistp192", NID_X9_62_prime192v1, 192},
+- {"nistp224", NID_secp224r1, 224},
+- {"nistp256", NID_X9_62_prime256v1, 256},
+- {"nistp384", NID_secp384r1, 384},
+-diff -up ./crypto/evp/ec_support.c.ec-curves ./crypto/evp/ec_support.c
+---- ./crypto/evp/ec_support.c.ec-curves 2023-03-14 06:22:41.542310442 +0100
+-+++ ./crypto/evp/ec_support.c 2023-03-21 11:24:18.378451683 +0100
++- { "secp160r1", NID_secp160r1, 160 },
++- { "nistp192", NID_X9_62_prime192v1, 192 },
++ { "nistp224", NID_secp224r1, 224 },
++ { "nistp256", NID_X9_62_prime256v1, 256 },
++ { "nistp384", NID_secp384r1, 384 },
++diff -rup openssl-3.0.19/crypto/evp/ec_support.c openssl-3.0.19.new/crypto/evp/ec_support.c
++--- openssl-3.0.19/crypto/evp/ec_support.c 2026-01-27 14:09:55.000000000 +0000
+++++ openssl-3.0.19.new/crypto/evp/ec_support.c 2026-07-20 17:13:19.774616988 +0100
+ @@ -20,89 +20,15 @@ typedef struct ec_name2nid_st {
+ static const EC_NAME2NID curve_list[] = {
+ /* prime field curves */
+ /* secg curves */
+-- {"secp112r1", NID_secp112r1 },
+-- {"secp112r2", NID_secp112r2 },
+-- {"secp128r1", NID_secp128r1 },
+-- {"secp128r2", NID_secp128r2 },
+-- {"secp160k1", NID_secp160k1 },
+-- {"secp160r1", NID_secp160r1 },
+-- {"secp160r2", NID_secp160r2 },
+-- {"secp192k1", NID_secp192k1 },
+-- {"secp224k1", NID_secp224k1 },
+- {"secp224r1", NID_secp224r1 },
+- {"secp256k1", NID_secp256k1 },
+- {"secp384r1", NID_secp384r1 },
+- {"secp521r1", NID_secp521r1 },
++- { "secp112r1", NID_secp112r1 },
++- { "secp112r2", NID_secp112r2 },
++- { "secp128r1", NID_secp128r1 },
++- { "secp128r2", NID_secp128r2 },
++- { "secp160k1", NID_secp160k1 },
++- { "secp160r1", NID_secp160r1 },
++- { "secp160r2", NID_secp160r2 },
++- { "secp192k1", NID_secp192k1 },
++- { "secp224k1", NID_secp224k1 },
++ { "secp224r1", NID_secp224r1 },
++ { "secp256k1", NID_secp256k1 },
++ { "secp384r1", NID_secp384r1 },
++ { "secp521r1", NID_secp521r1 },
+ /* X9.62 curves */
+-- {"prime192v1", NID_X9_62_prime192v1 },
+-- {"prime192v2", NID_X9_62_prime192v2 },
+-- {"prime192v3", NID_X9_62_prime192v3 },
+-- {"prime239v1", NID_X9_62_prime239v1 },
+-- {"prime239v2", NID_X9_62_prime239v2 },
+-- {"prime239v3", NID_X9_62_prime239v3 },
+- {"prime256v1", NID_X9_62_prime256v1 },
++- { "prime192v1", NID_X9_62_prime192v1 },
++- { "prime192v2", NID_X9_62_prime192v2 },
++- { "prime192v3", NID_X9_62_prime192v3 },
++- { "prime239v1", NID_X9_62_prime239v1 },
++- { "prime239v2", NID_X9_62_prime239v2 },
++- { "prime239v3", NID_X9_62_prime239v3 },
++ { "prime256v1", NID_X9_62_prime256v1 },
+ /* characteristic two field curves */
+ /* NIST/SECG curves */
+-- {"sect113r1", NID_sect113r1 },
+-- {"sect113r2", NID_sect113r2 },
+-- {"sect131r1", NID_sect131r1 },
+-- {"sect131r2", NID_sect131r2 },
+-- {"sect163k1", NID_sect163k1 },
+-- {"sect163r1", NID_sect163r1 },
+-- {"sect163r2", NID_sect163r2 },
+-- {"sect193r1", NID_sect193r1 },
+-- {"sect193r2", NID_sect193r2 },
+-- {"sect233k1", NID_sect233k1 },
+-- {"sect233r1", NID_sect233r1 },
+-- {"sect239k1", NID_sect239k1 },
+-- {"sect283k1", NID_sect283k1 },
+-- {"sect283r1", NID_sect283r1 },
+-- {"sect409k1", NID_sect409k1 },
+-- {"sect409r1", NID_sect409r1 },
+-- {"sect571k1", NID_sect571k1 },
+-- {"sect571r1", NID_sect571r1 },
++- { "sect113r1", NID_sect113r1 },
++- { "sect113r2", NID_sect113r2 },
++- { "sect131r1", NID_sect131r1 },
++- { "sect131r2", NID_sect131r2 },
++- { "sect163k1", NID_sect163k1 },
++- { "sect163r1", NID_sect163r1 },
++- { "sect163r2", NID_sect163r2 },
++- { "sect193r1", NID_sect193r1 },
++- { "sect193r2", NID_sect193r2 },
++- { "sect233k1", NID_sect233k1 },
++- { "sect233r1", NID_sect233r1 },
++- { "sect239k1", NID_sect239k1 },
++- { "sect283k1", NID_sect283k1 },
++- { "sect283r1", NID_sect283r1 },
++- { "sect409k1", NID_sect409k1 },
++- { "sect409r1", NID_sect409r1 },
++- { "sect571k1", NID_sect571k1 },
++- { "sect571r1", NID_sect571r1 },
+ - /* X9.62 curves */
+-- {"c2pnb163v1", NID_X9_62_c2pnb163v1 },
+-- {"c2pnb163v2", NID_X9_62_c2pnb163v2 },
+-- {"c2pnb163v3", NID_X9_62_c2pnb163v3 },
+-- {"c2pnb176v1", NID_X9_62_c2pnb176v1 },
+-- {"c2tnb191v1", NID_X9_62_c2tnb191v1 },
+-- {"c2tnb191v2", NID_X9_62_c2tnb191v2 },
+-- {"c2tnb191v3", NID_X9_62_c2tnb191v3 },
+-- {"c2pnb208w1", NID_X9_62_c2pnb208w1 },
+-- {"c2tnb239v1", NID_X9_62_c2tnb239v1 },
+-- {"c2tnb239v2", NID_X9_62_c2tnb239v2 },
+-- {"c2tnb239v3", NID_X9_62_c2tnb239v3 },
+-- {"c2pnb272w1", NID_X9_62_c2pnb272w1 },
+-- {"c2pnb304w1", NID_X9_62_c2pnb304w1 },
+-- {"c2tnb359v1", NID_X9_62_c2tnb359v1 },
+-- {"c2pnb368w1", NID_X9_62_c2pnb368w1 },
+-- {"c2tnb431r1", NID_X9_62_c2tnb431r1 },
++- { "c2pnb163v1", NID_X9_62_c2pnb163v1 },
++- { "c2pnb163v2", NID_X9_62_c2pnb163v2 },
++- { "c2pnb163v3", NID_X9_62_c2pnb163v3 },
++- { "c2pnb176v1", NID_X9_62_c2pnb176v1 },
++- { "c2tnb191v1", NID_X9_62_c2tnb191v1 },
++- { "c2tnb191v2", NID_X9_62_c2tnb191v2 },
++- { "c2tnb191v3", NID_X9_62_c2tnb191v3 },
++- { "c2pnb208w1", NID_X9_62_c2pnb208w1 },
++- { "c2tnb239v1", NID_X9_62_c2tnb239v1 },
++- { "c2tnb239v2", NID_X9_62_c2tnb239v2 },
++- { "c2tnb239v3", NID_X9_62_c2tnb239v3 },
++- { "c2pnb272w1", NID_X9_62_c2pnb272w1 },
++- { "c2pnb304w1", NID_X9_62_c2pnb304w1 },
++- { "c2tnb359v1", NID_X9_62_c2tnb359v1 },
++- { "c2pnb368w1", NID_X9_62_c2pnb368w1 },
++- { "c2tnb431r1", NID_X9_62_c2tnb431r1 },
+ - /*
+ - * the WAP/WTLS curves [unlike SECG, spec has its own OIDs for curves
+ - * from X9.62]
+ - */
+-- {"wap-wsg-idm-ecid-wtls1", NID_wap_wsg_idm_ecid_wtls1 },
+-- {"wap-wsg-idm-ecid-wtls3", NID_wap_wsg_idm_ecid_wtls3 },
+-- {"wap-wsg-idm-ecid-wtls4", NID_wap_wsg_idm_ecid_wtls4 },
+-- {"wap-wsg-idm-ecid-wtls5", NID_wap_wsg_idm_ecid_wtls5 },
+-- {"wap-wsg-idm-ecid-wtls6", NID_wap_wsg_idm_ecid_wtls6 },
+-- {"wap-wsg-idm-ecid-wtls7", NID_wap_wsg_idm_ecid_wtls7 },
+-- {"wap-wsg-idm-ecid-wtls8", NID_wap_wsg_idm_ecid_wtls8 },
+-- {"wap-wsg-idm-ecid-wtls9", NID_wap_wsg_idm_ecid_wtls9 },
+-- {"wap-wsg-idm-ecid-wtls10", NID_wap_wsg_idm_ecid_wtls10 },
+-- {"wap-wsg-idm-ecid-wtls11", NID_wap_wsg_idm_ecid_wtls11 },
+-- {"wap-wsg-idm-ecid-wtls12", NID_wap_wsg_idm_ecid_wtls12 },
++- { "wap-wsg-idm-ecid-wtls1", NID_wap_wsg_idm_ecid_wtls1 },
++- { "wap-wsg-idm-ecid-wtls3", NID_wap_wsg_idm_ecid_wtls3 },
++- { "wap-wsg-idm-ecid-wtls4", NID_wap_wsg_idm_ecid_wtls4 },
++- { "wap-wsg-idm-ecid-wtls5", NID_wap_wsg_idm_ecid_wtls5 },
++- { "wap-wsg-idm-ecid-wtls6", NID_wap_wsg_idm_ecid_wtls6 },
++- { "wap-wsg-idm-ecid-wtls7", NID_wap_wsg_idm_ecid_wtls7 },
++- { "wap-wsg-idm-ecid-wtls8", NID_wap_wsg_idm_ecid_wtls8 },
++- { "wap-wsg-idm-ecid-wtls9", NID_wap_wsg_idm_ecid_wtls9 },
++- { "wap-wsg-idm-ecid-wtls10", NID_wap_wsg_idm_ecid_wtls10 },
++- { "wap-wsg-idm-ecid-wtls11", NID_wap_wsg_idm_ecid_wtls11 },
++- { "wap-wsg-idm-ecid-wtls12", NID_wap_wsg_idm_ecid_wtls12 },
+ - /* IPSec curves */
+-- {"Oakley-EC2N-3", NID_ipsec3 },
+-- {"Oakley-EC2N-4", NID_ipsec4 },
++- { "Oakley-EC2N-3", NID_ipsec3 },
++- { "Oakley-EC2N-4", NID_ipsec4 },
+ /* brainpool curves */
+-- {"brainpoolP160r1", NID_brainpoolP160r1 },
+-- {"brainpoolP160t1", NID_brainpoolP160t1 },
+-- {"brainpoolP192r1", NID_brainpoolP192r1 },
+-- {"brainpoolP192t1", NID_brainpoolP192t1 },
+-- {"brainpoolP224r1", NID_brainpoolP224r1 },
+-- {"brainpoolP224t1", NID_brainpoolP224t1 },
+- {"brainpoolP256r1", NID_brainpoolP256r1 },
+- {"brainpoolP256t1", NID_brainpoolP256t1 },
+- {"brainpoolP320r1", NID_brainpoolP320r1 },
++- { "brainpoolP160r1", NID_brainpoolP160r1 },
++- { "brainpoolP160t1", NID_brainpoolP160t1 },
++- { "brainpoolP192r1", NID_brainpoolP192r1 },
++- { "brainpoolP192t1", NID_brainpoolP192t1 },
++- { "brainpoolP224r1", NID_brainpoolP224r1 },
++- { "brainpoolP224t1", NID_brainpoolP224t1 },
++ { "brainpoolP256r1", NID_brainpoolP256r1 },
++ { "brainpoolP256t1", NID_brainpoolP256t1 },
++ { "brainpoolP320r1", NID_brainpoolP320r1 },
+ @@ -111,8 +37,6 @@ static const EC_NAME2NID curve_list[] =
+- {"brainpoolP384t1", NID_brainpoolP384t1 },
+- {"brainpoolP512r1", NID_brainpoolP512r1 },
+- {"brainpoolP512t1", NID_brainpoolP512t1 },
++ { "brainpoolP384t1", NID_brainpoolP384t1 },
++ { "brainpoolP512r1", NID_brainpoolP512r1 },
++ { "brainpoolP512t1", NID_brainpoolP512t1 },
+ - /* SM2 curve */
+-- {"SM2", NID_sm2 },
++- { "SM2", NID_sm2 },
+ };
+
+ const char *OSSL_EC_curve_nid2name(int nid)
+-diff -up ./test/acvp_test.inc.ec-curves ./test/acvp_test.inc
+---- ./test/acvp_test.inc.ec-curves 2023-03-14 06:38:20.563712586 +0100
+-+++ ./test/acvp_test.inc 2023-03-14 06:39:01.631080059 +0100
++diff -rup openssl-3.0.19/test/acvp_test.inc openssl-3.0.19.new/test/acvp_test.inc
++--- openssl-3.0.19/test/acvp_test.inc 2026-01-27 14:09:55.000000000 +0000
+++++ openssl-3.0.19.new/test/acvp_test.inc 2026-07-20 17:11:05.067303432 +0100
+ @@ -212,15 +212,6 @@ static const unsigned char ecdsa_sigver_
+ };
+ static const struct ecdsa_sigver_st ecdsa_sigver_data[] = {
+@@ -158,36 +158,36 @@ diff -up ./test/acvp_test.inc.ec-curves ./test/acvp_test.inc
+ "SHA2-512",
+ "P-521",
+ ITM(ecdsa_sigver_msg1),
+-diff -up ./test/ecdsatest.h.ec-curves ./test/ecdsatest.h
+---- ./test/ecdsatest.h.ec-curves 2023-03-14 04:49:16.148154472 +0100
+-+++ ./test/ecdsatest.h 2023-03-14 04:51:01.376096037 +0100
++diff -rup openssl-3.0.19/test/ecdsatest.h openssl-3.0.19.new/test/ecdsatest.h
++--- openssl-3.0.19/test/ecdsatest.h 2026-01-27 14:09:55.000000000 +0000
+++++ openssl-3.0.19.new/test/ecdsatest.h 2026-07-20 17:12:07.302488657 +0100
+ @@ -32,23 +32,6 @@ typedef struct {
+ } ecdsa_cavs_kat_t;
+
+ static const ecdsa_cavs_kat_t ecdsa_cavs_kats[] = {
+ - /* prime KATs from X9.62 */
+-- {NID_X9_62_prime192v1, NID_sha1,
+-- "616263", /* "abc" */
+-- "1a8d598fc15bf0fd89030b5cb1111aeb92ae8baf5ea475fb",
+-- "0462b12d60690cdcf330babab6e69763b471f994dd702d16a563bf5ec08069705ffff65e"
+-- "5ca5c0d69716dfcb3474373902",
+-- "fa6de29746bbeb7f8bb1e761f85f7dfb2983169d82fa2f4e",
+-- "885052380ff147b734c330c43d39b2c4a89f29b0f749fead",
+-- "e9ecc78106def82bf1070cf1d4d804c3cb390046951df686"},
+-- {NID_X9_62_prime239v1, NID_sha1,
+-- "616263", /* "abc" */
+-- "7ef7c6fabefffdea864206e80b0b08a9331ed93e698561b64ca0f7777f3d",
+-- "045b6dc53bc61a2548ffb0f671472de6c9521a9d2d2534e65abfcbd5fe0c707fd9f1ed2e"
+-- "65f09f6ce0893baf5e8e31e6ae82ea8c3592335be906d38dee",
+-- "656c7196bf87dcc5d1f1020906df2782360d36b2de7a17ece37d503784af",
+-- "2cb7f36803ebb9c427c58d8265f11fc5084747133078fc279de874fbecb0",
+-- "2eeae988104e9c2234a3c2beb1f53bfa5dc11ff36a875d1e3ccb1f7e45cf"},
++- { NID_X9_62_prime192v1, NID_sha1,
++- "616263", /* "abc" */
++- "1a8d598fc15bf0fd89030b5cb1111aeb92ae8baf5ea475fb",
++- "0462b12d60690cdcf330babab6e69763b471f994dd702d16a563bf5ec08069705ffff65e"
++- "5ca5c0d69716dfcb3474373902",
++- "fa6de29746bbeb7f8bb1e761f85f7dfb2983169d82fa2f4e",
++- "885052380ff147b734c330c43d39b2c4a89f29b0f749fead",
++- "e9ecc78106def82bf1070cf1d4d804c3cb390046951df686" },
++- { NID_X9_62_prime239v1, NID_sha1,
++- "616263", /* "abc" */
++- "7ef7c6fabefffdea864206e80b0b08a9331ed93e698561b64ca0f7777f3d",
++- "045b6dc53bc61a2548ffb0f671472de6c9521a9d2d2534e65abfcbd5fe0c707fd9f1ed2e"
++- "65f09f6ce0893baf5e8e31e6ae82ea8c3592335be906d38dee",
++- "656c7196bf87dcc5d1f1020906df2782360d36b2de7a17ece37d503784af",
++- "2cb7f36803ebb9c427c58d8265f11fc5084747133078fc279de874fbecb0",
++- "2eeae988104e9c2234a3c2beb1f53bfa5dc11ff36a875d1e3ccb1f7e45cf" },
+ /* prime KATs from NIST CAVP */
+- {NID_secp224r1, NID_sha224,
+- "699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc1"
+-diff -up ./test/recipes/15-test_genec.t.ec-curves ./test/recipes/15-test_genec.t
+---- ./test/recipes/15-test_genec.t.ec-curves 2023-03-14 04:51:45.215488277 +0100
+-+++ ./test/recipes/15-test_genec.t 2023-03-21 11:26:58.613885435 +0100
++ { NID_secp224r1, NID_sha224,
++ "699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc1"
++diff -rup openssl-3.0.19/test/recipes/15-test_genec.t openssl-3.0.19.new/test/recipes/15-test_genec.t
++--- openssl-3.0.19/test/recipes/15-test_genec.t 2026-01-27 14:09:55.000000000 +0000
+++++ openssl-3.0.19.new/test/recipes/15-test_genec.t 2026-07-20 17:11:05.070539526 +0100
+ @@ -41,37 +41,11 @@ plan skip_all => "This test is unsupport
+ if disabled("ec");
+
+diff --git a/openssl_source/0012-Disable-explicit-ec.patch b/openssl_source/0012-Disable-explicit-ec.patch
+index 0cae2fa..5e9f311 100644
+--- a/openssl_source/0012-Disable-explicit-ec.patch
++++ b/openssl_source/0012-Disable-explicit-ec.patch
+@@ -1,7 +1,7 @@
+-diff -up openssl-3.0.1/crypto/ec/ec_asn1.c.disable_explicit_ec openssl-3.0.1/crypto/ec/ec_asn1.c
+---- openssl-3.0.1/crypto/ec/ec_asn1.c.disable_explicit_ec 2022-03-22 13:10:45.718077845 +0100
+-+++ openssl-3.0.1/crypto/ec/ec_asn1.c 2022-03-22 13:12:46.626599016 +0100
+-@@ -895,6 +895,12 @@ EC_GROUP *d2i_ECPKParameters(EC_GROUP **
++diff -rup openssl-3.0.19/crypto/ec/ec_asn1.c openssl-3.0.19.new/crypto/ec/ec_asn1.c
++--- openssl-3.0.19/crypto/ec/ec_asn1.c 2026-01-27 14:09:55.000000000 +0000
+++++ openssl-3.0.19.new/crypto/ec/ec_asn1.c 2026-07-20 17:15:52.006629497 +0100
++@@ -893,6 +893,12 @@ EC_GROUP *d2i_ECPKParameters(EC_GROUP **
+ if (params->type == ECPKPARAMETERS_TYPE_EXPLICIT)
+ group->decoded_from_explicit_params = 1;
+
+@@ -14,7 +14,7 @@ diff -up openssl-3.0.1/crypto/ec/ec_asn1.c.disable_explicit_ec openssl-3.0.1/cry
+ if (a) {
+ EC_GROUP_free(*a);
+ *a = group;
+-@@ -954,6 +959,11 @@ EC_KEY *d2i_ECPrivateKey(EC_KEY **a, con
++@@ -952,6 +958,11 @@ EC_KEY *d2i_ECPrivateKey(EC_KEY **a, con
+ goto err;
+ }
+
+@@ -26,10 +26,10 @@ diff -up openssl-3.0.1/crypto/ec/ec_asn1.c.disable_explicit_ec openssl-3.0.1/cry
+ ret->version = priv_key->version;
+
+ if (priv_key->privateKey) {
+-diff -up openssl-3.0.9/crypto/ec/ec_lib.c.noec openssl-3.0.9/crypto/ec/ec_lib.c
+---- openssl-3.0.9/crypto/ec/ec_lib.c.noec 2023-07-27 10:32:52.870910095 +0200
+-+++ openssl-3.0.9/crypto/ec/ec_lib.c 2023-07-27 10:35:18.029151181 +0200
+-@@ -1728,6 +1728,11 @@ EC_GROUP *EC_GROUP_new_from_params(const
++diff -rup openssl-3.0.19/crypto/ec/ec_lib.c openssl-3.0.19.new/crypto/ec/ec_lib.c
++--- openssl-3.0.19/crypto/ec/ec_lib.c 2026-01-27 14:09:55.000000000 +0000
+++++ openssl-3.0.19.new/crypto/ec/ec_lib.c 2026-07-20 17:15:52.007144448 +0100
++@@ -1723,6 +1723,11 @@ EC_GROUP *EC_GROUP_new_from_params(const
+ goto err;
+ }
+ if (named_group == group) {
+@@ -41,7 +41,7 @@ diff -up openssl-3.0.9/crypto/ec/ec_lib.c.noec openssl-3.0.9/crypto/ec/ec_lib.c
+ /*
+ * If we did not find a named group then the encoding should be explicit
+ * if it was specified
+-@@ -1743,6 +1748,7 @@ EC_GROUP *EC_GROUP_new_from_params(const
++@@ -1738,6 +1743,7 @@ EC_GROUP *EC_GROUP_new_from_params(const
+ goto err;
+ }
+ EC_GROUP_set_asn1_flag(group, OPENSSL_EC_EXPLICIT_CURVE);
+@@ -49,19 +49,83 @@ diff -up openssl-3.0.9/crypto/ec/ec_lib.c.noec openssl-3.0.9/crypto/ec/ec_lib.c
+ } else {
+ EC_GROUP_free(group);
+ group = named_group;
+-diff -up openssl-3.0.1/test/endecode_test.c.disable_explicit_ec openssl-3.0.1/test/endecode_test.c
+---- openssl-3.0.1/test/endecode_test.c.disable_explicit_ec 2022-03-21 16:55:46.005558779 +0100
+-+++ openssl-3.0.1/test/endecode_test.c 2022-03-21 16:56:12.636792762 +0100
+-@@ -57,7 +57,7 @@ static BN_CTX *bnctx = NULL;
++diff -rup openssl-3.0.19/test/ectest.c openssl-3.0.19.new/test/ectest.c
++--- openssl-3.0.19/test/ectest.c 2026-07-20 16:41:27.096703470 +0100
+++++ openssl-3.0.19.new/test/ectest.c 2026-07-20 17:19:36.304261819 +0100
++@@ -2444,6 +2444,7 @@ static int cardinality_test(int n)
++ || !TEST_true(BN_lshift(g1_order, g1_p, 2))
++ || !TEST_false(EC_GROUP_set_generator(g2, g2_gen, g1_order, NULL)))
++ goto err;
+++#endif
++ ret = 1;
++ err:
++ EC_POINT_free(g2_gen);
++@@ -2680,11 +2681,12 @@ static int do_test_custom_explicit_fromd
++ if (!TEST_ptr(params = OSSL_PARAM_BLD_to_param(bld))
++ || !TEST_ptr(pctx = EVP_PKEY_CTX_new_from_name(NULL, "EC", NULL))
++ || !TEST_int_gt(EVP_PKEY_fromdata_init(pctx), 0)
++- || !TEST_int_gt(EVP_PKEY_fromdata(pctx, &pkeyparam,
+++ || !TEST_int_le(EVP_PKEY_fromdata(pctx, &pkeyparam,
++ EVP_PKEY_KEY_PARAMETERS, params),
++ 0))
++ goto err;
++-
+++/* As creating the key should fail, the rest of the test is pointless */
+++# if 0
++ /*- Check that all the set values are retrievable -*/
++
++ /* There should be no match to a group name since the generator changed */
++@@ -2899,7 +2901,7 @@ static int custom_generator_test(int id)
++
++ if (!do_test_custom_explicit_fromdata(group, ctx, b1, bsize))
++ goto err;
++-
+++#endif
++ ret = 1;
++
++ err:
++@@ -3106,21 +3108,21 @@ static int custom_params_test(int id)
++
++ /* Compute keyexchange in both directions */
++ if (!TEST_ptr(pctx1 = EVP_PKEY_CTX_new(pkey1, NULL))
++- || !TEST_int_eq(EVP_PKEY_derive_init(pctx1), 1)
++- || !TEST_int_eq(EVP_PKEY_derive_set_peer(pctx1, pkey2), 1)
+++ || !TEST_int_le(EVP_PKEY_derive_init(pctx1), 0)
+++/* || !TEST_int_eq(EVP_PKEY_derive_set_peer(pctx1, pkey2), 1)
++ || !TEST_int_eq(EVP_PKEY_derive(pctx1, NULL, &sslen), 1)
++ || !TEST_int_gt(bsize, sslen)
++- || !TEST_int_eq(EVP_PKEY_derive(pctx1, buf1, &sslen), 1))
+++ || !TEST_int_eq(EVP_PKEY_derive(pctx1, buf1, &sslen), 1)*/)
++ goto err;
++ if (!TEST_ptr(pctx2 = EVP_PKEY_CTX_new(pkey2, NULL))
++- || !TEST_int_eq(EVP_PKEY_derive_init(pctx2), 1)
++- || !TEST_int_eq(EVP_PKEY_derive_set_peer(pctx2, pkey1), 1)
+++ || !TEST_int_le(EVP_PKEY_derive_init(pctx2), 1)
+++/* || !TEST_int_eq(EVP_PKEY_derive_set_peer(pctx2, pkey1), 1)
++ || !TEST_int_eq(EVP_PKEY_derive(pctx2, NULL, &t), 1)
++ || !TEST_int_gt(bsize, t)
++ || !TEST_int_le(sslen, t)
++- || !TEST_int_eq(EVP_PKEY_derive(pctx2, buf2, &t), 1))
+++ || !TEST_int_eq(EVP_PKEY_derive(pctx2, buf2, &t), 1)*/)
++ goto err;
++-
+++#if 0
++ /* Both sides should expect the same shared secret */
++ if (!TEST_mem_eq(buf1, sslen, buf2, t))
++ goto err;
++diff -rup openssl-3.0.19/test/endecode_test.c openssl-3.0.19.new/test/endecode_test.c
++--- openssl-3.0.19/test/endecode_test.c 2026-01-27 14:09:55.000000000 +0000
+++++ openssl-3.0.19.new/test/endecode_test.c 2026-07-20 17:21:16.380230560 +0100
++@@ -58,7 +58,7 @@ static BN_CTX *bnctx = NULL;
+ static OSSL_PARAM_BLD *bld_prime_nc = NULL;
+ static OSSL_PARAM_BLD *bld_prime = NULL;
+ static OSSL_PARAM *ec_explicit_prime_params_nc = NULL;
+ -static OSSL_PARAM *ec_explicit_prime_params_explicit = NULL;
+ +/*static OSSL_PARAM *ec_explicit_prime_params_explicit = NULL;*/
+
+- # ifndef OPENSSL_NO_EC2M
++ #ifndef OPENSSL_NO_EC2M
+ static OSSL_PARAM_BLD *bld_tri_nc = NULL;
+-@@ -990,9 +990,9 @@ IMPLEMENT_TEST_SUITE_LEGACY(EC, "EC")
++@@ -1008,9 +1008,9 @@ IMPLEMENT_TEST_SUITE_LEGACY(EC, "EC")
+ DOMAIN_KEYS(ECExplicitPrimeNamedCurve);
+ IMPLEMENT_TEST_SUITE(ECExplicitPrimeNamedCurve, "EC", 1)
+ IMPLEMENT_TEST_SUITE_LEGACY(ECExplicitPrimeNamedCurve, "EC")
+@@ -71,28 +135,28 @@ diff -up openssl-3.0.1/test/endecode_test.c.disable_explicit_ec openssl-3.0.1/te
+ +/*DOMAIN_KEYS(ECExplicitPrime2G);*/
+ +/*IMPLEMENT_TEST_SUITE(ECExplicitPrime2G, "EC", 0)*/
+ +/*IMPLEMENT_TEST_SUITE_LEGACY(ECExplicitPrime2G, "EC")*/
+- # ifndef OPENSSL_NO_EC2M
++ #ifndef OPENSSL_NO_EC2M
+ DOMAIN_KEYS(ECExplicitTriNamedCurve);
+ IMPLEMENT_TEST_SUITE(ECExplicitTriNamedCurve, "EC", 1)
+-@@ -1318,7 +1318,7 @@ int setup_tests(void)
++@@ -1392,7 +1392,7 @@ int setup_tests(void)
+ || !create_ec_explicit_prime_params_namedcurve(bld_prime_nc)
+ || !create_ec_explicit_prime_params(bld_prime)
+ || !TEST_ptr(ec_explicit_prime_params_nc = OSSL_PARAM_BLD_to_param(bld_prime_nc))
+ - || !TEST_ptr(ec_explicit_prime_params_explicit = OSSL_PARAM_BLD_to_param(bld_prime))
+ +/* || !TEST_ptr(ec_explicit_prime_params_explicit = OSSL_PARAM_BLD_to_param(bld_prime))*/
+- # ifndef OPENSSL_NO_EC2M
++ #ifndef OPENSSL_NO_EC2M
+ || !TEST_ptr(bld_tri_nc = OSSL_PARAM_BLD_new())
+ || !TEST_ptr(bld_tri = OSSL_PARAM_BLD_new())
+-@@ -1346,7 +1346,7 @@ int setup_tests(void)
++@@ -1420,7 +1420,7 @@ int setup_tests(void)
+ TEST_info("Generating EC keys...");
+ MAKE_DOMAIN_KEYS(EC, "EC", EC_params);
+ MAKE_DOMAIN_KEYS(ECExplicitPrimeNamedCurve, "EC", ec_explicit_prime_params_nc);
+ - MAKE_DOMAIN_KEYS(ECExplicitPrime2G, "EC", ec_explicit_prime_params_explicit);
+ +/* MAKE_DOMAIN_KEYS(ECExplicitPrime2G, "EC", ec_explicit_prime_params_explicit);*/
+- # ifndef OPENSSL_NO_EC2M
++ #ifndef OPENSSL_NO_EC2M
+ MAKE_DOMAIN_KEYS(ECExplicitTriNamedCurve, "EC", ec_explicit_tri_params_nc);
+ MAKE_DOMAIN_KEYS(ECExplicitTri2G, "EC", ec_explicit_tri_params_explicit);
+-@@ -1389,8 +1389,8 @@ int setup_tests(void)
++@@ -1467,8 +1467,8 @@ int setup_tests(void)
+ ADD_TEST_SUITE_LEGACY(EC);
+ ADD_TEST_SUITE(ECExplicitPrimeNamedCurve);
+ ADD_TEST_SUITE_LEGACY(ECExplicitPrimeNamedCurve);
+@@ -100,10 +164,10 @@ diff -up openssl-3.0.1/test/endecode_test.c.disable_explicit_ec openssl-3.0.1/te
+ - ADD_TEST_SUITE_LEGACY(ECExplicitPrime2G);
+ +/* ADD_TEST_SUITE(ECExplicitPrime2G);*/
+ +/* ADD_TEST_SUITE_LEGACY(ECExplicitPrime2G);*/
+- # ifndef OPENSSL_NO_EC2M
++ #ifndef OPENSSL_NO_EC2M
+ ADD_TEST_SUITE(ECExplicitTriNamedCurve);
+ ADD_TEST_SUITE_LEGACY(ECExplicitTriNamedCurve);
+-@@ -1427,7 +1427,7 @@ void cleanup_tests(void)
++@@ -1511,7 +1511,7 @@ void cleanup_tests(void)
+ {
+ #ifndef OPENSSL_NO_EC
+ OSSL_PARAM_free(ec_explicit_prime_params_nc);
+@@ -111,20 +175,20 @@ diff -up openssl-3.0.1/test/endecode_test.c.disable_explicit_ec openssl-3.0.1/te
+ +/* OSSL_PARAM_free(ec_explicit_prime_params_explicit);*/
+ OSSL_PARAM_BLD_free(bld_prime_nc);
+ OSSL_PARAM_BLD_free(bld_prime);
+- # ifndef OPENSSL_NO_EC2M
+-@@ -1449,7 +1449,7 @@ void cleanup_tests(void)
++ #ifndef OPENSSL_NO_EC2M
++@@ -1533,7 +1533,7 @@ void cleanup_tests(void)
+ #ifndef OPENSSL_NO_EC
+ FREE_DOMAIN_KEYS(EC);
+ FREE_DOMAIN_KEYS(ECExplicitPrimeNamedCurve);
+ - FREE_DOMAIN_KEYS(ECExplicitPrime2G);
+ +/* FREE_DOMAIN_KEYS(ECExplicitPrime2G);*/
+- # ifndef OPENSSL_NO_EC2M
++ #ifndef OPENSSL_NO_EC2M
+ FREE_DOMAIN_KEYS(ECExplicitTriNamedCurve);
+ FREE_DOMAIN_KEYS(ECExplicitTri2G);
+-diff -up openssl-3.0.1/test/recipes/30-test_evp_data/evppkey_ecdsa.txt.disable_explicit_ec openssl-3.0.1/test/recipes/30-test_evp_data/evppkey_ecdsa.txt
+---- openssl-3.0.1/test/recipes/30-test_evp_data/evppkey_ecdsa.txt.disable_explicit_ec 2022-03-25 11:20:50.920949208 +0100
+-+++ openssl-3.0.1/test/recipes/30-test_evp_data/evppkey_ecdsa.txt 2022-03-25 11:21:13.177147598 +0100
+-@@ -121,18 +121,6 @@ AAAA//////////+85vqtpxeehPO5ysL8YyVRAgEB
++diff -rup openssl-3.0.19/test/recipes/30-test_evp_data/evppkey_ecdsa.txt openssl-3.0.19.new/test/recipes/30-test_evp_data/evppkey_ecdsa.txt
++--- openssl-3.0.19/test/recipes/30-test_evp_data/evppkey_ecdsa.txt 2026-01-27 14:09:55.000000000 +0000
+++++ openssl-3.0.19.new/test/recipes/30-test_evp_data/evppkey_ecdsa.txt 2026-07-20 17:15:52.008539721 +0100
++@@ -133,18 +133,6 @@ AAAA//////////+85vqtpxeehPO5ysL8YyVRAgEB
+ 3ev1gTwRBduzqqlwd54AUSgI+pjttW8zrWNitO8H1sf59MPWOESKxNtZ1+Nl
+ -----END PRIVATE KEY-----
+
+@@ -143,66 +207,3 @@ diff -up openssl-3.0.1/test/recipes/30-test_evp_data/evppkey_ecdsa.txt.disable_e
+ PrivateKey = B-163
+ -----BEGIN PRIVATE KEY-----
+ MGMCAQAwEAYHKoZIzj0CAQYFK4EEAA8ETDBKAgEBBBUDnQW0mLiHVha/jqFznX/K
+-diff -up openssl-3.0.9/test/ectest.c.noec openssl-3.0.9/test/ectest.c
+---- openssl-3.0.9/test/ectest.c.noec 2023-07-27 11:30:24.078979261 +0200
+-+++ openssl-3.0.9/test/ectest.c 2023-07-27 11:35:12.335576107 +0200
+-@@ -2301,10 +2301,11 @@ static int do_test_custom_explicit_fromd
+- if (!TEST_ptr(params = OSSL_PARAM_BLD_to_param(bld))
+- || !TEST_ptr(pctx = EVP_PKEY_CTX_new_from_name(NULL, "EC", NULL))
+- || !TEST_int_gt(EVP_PKEY_fromdata_init(pctx), 0)
+-- || !TEST_int_gt(EVP_PKEY_fromdata(pctx, &pkeyparam,
+-+ || !TEST_int_le(EVP_PKEY_fromdata(pctx, &pkeyparam,
+- EVP_PKEY_KEY_PARAMETERS, params), 0))
+- goto err;
+--
+-+/* As creating the key should fail, the rest of the test is pointless */
+-+# if 0
+- /*- Check that all the set values are retrievable -*/
+-
+- /* There should be no match to a group name since the generator changed */
+-@@ -2433,6 +2434,7 @@ static int do_test_custom_explicit_fromd
+- #endif
+- )
+- goto err;
+-+#endif
+- ret = 1;
+- err:
+- BN_free(order_out);
+-@@ -2714,21 +2716,21 @@ static int custom_params_test(int id)
+-
+- /* Compute keyexchange in both directions */
+- if (!TEST_ptr(pctx1 = EVP_PKEY_CTX_new(pkey1, NULL))
+-- || !TEST_int_eq(EVP_PKEY_derive_init(pctx1), 1)
+-- || !TEST_int_eq(EVP_PKEY_derive_set_peer(pctx1, pkey2), 1)
+-+ || !TEST_int_le(EVP_PKEY_derive_init(pctx1), 0)
+-+/* || !TEST_int_eq(EVP_PKEY_derive_set_peer(pctx1, pkey2), 1)
+- || !TEST_int_eq(EVP_PKEY_derive(pctx1, NULL, &sslen), 1)
+- || !TEST_int_gt(bsize, sslen)
+-- || !TEST_int_eq(EVP_PKEY_derive(pctx1, buf1, &sslen), 1))
+-+ || !TEST_int_eq(EVP_PKEY_derive(pctx1, buf1, &sslen), 1)*/)
+- goto err;
+- if (!TEST_ptr(pctx2 = EVP_PKEY_CTX_new(pkey2, NULL))
+-- || !TEST_int_eq(EVP_PKEY_derive_init(pctx2), 1)
+-- || !TEST_int_eq(EVP_PKEY_derive_set_peer(pctx2, pkey1), 1)
+-+ || !TEST_int_le(EVP_PKEY_derive_init(pctx2), 1)
+-+/* || !TEST_int_eq(EVP_PKEY_derive_set_peer(pctx2, pkey1), 1)
+- || !TEST_int_eq(EVP_PKEY_derive(pctx2, NULL, &t), 1)
+- || !TEST_int_gt(bsize, t)
+- || !TEST_int_le(sslen, t)
+-- || !TEST_int_eq(EVP_PKEY_derive(pctx2, buf2, &t), 1))
+-+ || !TEST_int_eq(EVP_PKEY_derive(pctx2, buf2, &t), 1) */)
+- goto err;
+--
+-+#if 0
+- /* Both sides should expect the same shared secret */
+- if (!TEST_mem_eq(buf1, sslen, buf2, t))
+- goto err;
+-@@ -2780,7 +2782,7 @@ static int custom_params_test(int id)
+- /* compare with previous result */
+- || !TEST_mem_eq(buf1, t, buf2, sslen))
+- goto err;
+--
+-+#endif
+- ret = 1;
+-
+- err:
+--
+2.55.0
+
diff --git a/0400-Fix-constness-for-OpenSSL4-X509-ASN1-APIs.patch b/0400-Fix-constness-for-OpenSSL4-X509-ASN1-APIs.patch
new file mode 100644
index 0000000..93dd26b
--- /dev/null
+++ b/0400-Fix-constness-for-OpenSSL4-X509-ASN1-APIs.patch
@@ -0,0 +1,422 @@
+From 5512707e0185c85f778c7e8b13f3d7f4c6ce7c62 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
+Date: Mon, 20 Jul 2026 13:23:50 +0100
+Subject: [PATCH] Fix constness for OpenSSL4 X509/ASN1 APIs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The OpenSSL 4 release changes APIs to add const on the returned
+struct type where possible.
+
+Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
+---
+ .../src/PckParser/PckParser.cpp | 42 ++++++++++---------
+ .../SgxEcdsaAttestation/AttestationParsers.h | 6 +--
+ .../src/OpensslHelpers/OidUtils.cpp | 17 ++++----
+ Src/AttestationParsers/src/ParserUtils.cpp | 6 +--
+ Src/AttestationParsers/src/ParserUtils.h | 2 +-
+ .../src/X509/Certificate.cpp | 13 +++---
+ .../src/X509/DistinguishedName.cpp | 2 +-
+ Src/AttestationParsers/src/X509/Extension.cpp | 20 +++++----
+ Src/AttestationParsers/src/X509/Signature.cpp | 5 ++-
+ 9 files changed, 61 insertions(+), 52 deletions(-)
+
+diff --git a/Src/AttestationLibrary/src/PckParser/PckParser.cpp b/Src/AttestationLibrary/src/PckParser/PckParser.cpp
+index 2ec8c2b..3392d6c 100644
+--- a/Src/AttestationLibrary/src/PckParser/PckParser.cpp
++++ b/Src/AttestationLibrary/src/PckParser/PckParser.cpp
+@@ -158,8 +158,9 @@ std::vector<uint8_t> bn2Vec(const BIGNUM* bn)
+
+ Signature getSignature(const ASN1_BIT_STRING* psig)
+ {
+- std::vector<uint8_t> rawDerSequence(static_cast<size_t>(psig->length));
+- safeMemcpy(rawDerSequence.data(), psig->data, static_cast<size_t>(psig->length));
++ std::vector<uint8_t> rawDerSequence(static_cast<size_t>(ASN1_STRING_length(psig)));
++ safeMemcpy(rawDerSequence.data(), ASN1_STRING_get0_data(psig),
++ static_cast<size_t>(ASN1_STRING_length(psig)));
+
+ const uint8_t *derSeqIt = rawDerSequence.data();
+ const auto sig = crypto::make_unique(d2i_ECDSA_SIG(nullptr, &derSeqIt , static_cast<long>(rawDerSequence.size())));
+@@ -211,7 +212,7 @@ std::string x509NameToString(const X509_NAME* name)
+ return ret;
+ }
+
+-std::string getNameEntry(X509_NAME* name, int nid)
++std::string getNameEntry(const X509_NAME* name, int nid)
+ {
+ // sad, defensive code
+
+@@ -236,14 +237,14 @@ std::string getNameEntry(X509_NAME* name, int nid)
+ return "";
+ }
+
+- X509_NAME_ENTRY *entry = X509_NAME_get_entry(name, position);
++ const X509_NAME_ENTRY *entry = X509_NAME_get_entry(name, position);
+
+ if(!entry)
+ {
+ return "";
+ }
+
+- ASN1_STRING *asn1 = X509_NAME_ENTRY_get_data(entry);
++ const ASN1_STRING *asn1 = X509_NAME_ENTRY_get_data(entry);
+ const int asn1EstimatedStrLen = ASN1_STRING_length(asn1);
+ if(asn1EstimatedStrLen <= 0)
+ {
+@@ -302,12 +303,12 @@ std::string asn1ToString(const ASN1_TIME* time)
+ return std::string(buff);
+ }
+
+-Extension getExtension(X509_EXTENSION* ex)
++Extension getExtension(const X509_EXTENSION* ex)
+ {
+ // I do not check for nullptr below cause this func is not part of
+ // public API and given a place from where call is perfmormed I'm pretty certain
+ // there won't be any here
+- const ASN1_OBJECT *asn1Obj = X509_EXTENSION_get_object(ex);
++ const ASN1_OBJECT *asn1Obj = X509_EXTENSION_get_object(const_cast<X509_EXTENSION *>(ex));
+
+ const int nid = OBJ_obj2nid(asn1Obj);
+
+@@ -318,15 +319,16 @@ Extension getExtension(X509_EXTENSION* ex)
+
+ const std::string extName = obj2Str(asn1Obj);
+
+- const auto val = X509_EXTENSION_get_data(ex);
++ const auto val = X509_EXTENSION_get_data(const_cast<X509_EXTENSION *>(ex));
+
+ if(!val)
+ {
+ throw FormatException("Invalid Extension");
+ }
+
+- std::vector<uint8_t> data(static_cast<size_t>(val->length));
+- std::copy_n(val->data, val->length, data.begin());
++ std::vector<uint8_t> data(static_cast<size_t>(ASN1_STRING_length(val)));
++ std::copy_n(ASN1_STRING_get0_data(val),
++ ASN1_STRING_length(val), data.begin());
+
+ return Extension {
+ nid,
+@@ -336,15 +338,16 @@ Extension getExtension(X509_EXTENSION* ex)
+ }
+
+ auto bio = crypto::make_unique(BIO_new(BIO_s_mem()));
+- if(!X509V3_EXT_print(bio.get(), ex, 0, 0))
++ if(!X509V3_EXT_print(bio.get(), const_cast<X509_EXTENSION *>(ex), 0, 0))
+ { // revocation extensions may not be printable,
+ // at the time of writing this code, there was no revocation
+ // extensions planned so this 'if' statement probably won't be
+ // hit at all
+- const auto val = X509_EXTENSION_get_data(ex);
++ const auto val = X509_EXTENSION_get_data(const_cast<X509_EXTENSION *>(ex));
+
+- std::vector<uint8_t> data(static_cast<size_t>(val->length));
+- std::copy_n(val->data, val->length, data.begin());
++ std::vector<uint8_t> data(static_cast<size_t>(ASN1_STRING_length(val)));
++ std::copy_n(ASN1_STRING_get0_data(val),
++ ASN1_STRING_length(val), data.begin());
+
+ return Extension{
+ nid,
+@@ -387,13 +390,14 @@ Revoked getRevoked(const STACK_OF(X509_REVOKED)* revokedStack, int index)
+ return {};
+ }
+
+- if(serialNumber->length <= 0)
++ if(ASN1_STRING_length(serialNumber) <= 0)
+ {
+ return {};
+ }
+
+- std::vector<uint8_t> retSerial(static_cast<size_t>(serialNumber->length));
+- std::copy_n(serialNumber->data, serialNumber->length, retSerial.begin());
++ std::vector<uint8_t> retSerial(static_cast<size_t>(ASN1_STRING_length(serialNumber)));
++ std::copy_n(ASN1_STRING_get0_data(serialNumber),
++ ASN1_STRING_length(serialNumber), retSerial.begin());
+
+ // Revoked entry can have its extensions
+ // but at the time of writing this code there was no
+@@ -511,7 +515,7 @@ long getVersion(const X509_CRL& crl)
+
+ Issuer getIssuer(const X509_CRL& crl)
+ {
+- X509_NAME *issuer = X509_CRL_get_issuer(&crl);
++ const X509_NAME *issuer = X509_CRL_get_issuer(&crl);
+ if(!issuer)
+ {
+ throw FormatException(getLastError());
+@@ -567,7 +571,7 @@ Signature getSignature(const X509_CRL& crl)
+ throw FormatException(getLastError());
+ }
+
+- if(psig->length == 0)
++ if(ASN1_STRING_length(psig) == 0)
+ {
+ return {};
+ }
+diff --git a/Src/AttestationParsers/include/SgxEcdsaAttestation/AttestationParsers.h b/Src/AttestationParsers/include/SgxEcdsaAttestation/AttestationParsers.h
+index b393d23..db2e4ca 100644
+--- a/Src/AttestationParsers/include/SgxEcdsaAttestation/AttestationParsers.h
++++ b/Src/AttestationParsers/include/SgxEcdsaAttestation/AttestationParsers.h
+@@ -812,7 +812,7 @@ namespace intel { namespace sgx { namespace dcap { namespace parser
+ std::string _locationName;
+ std::string _stateName;
+
+- explicit DistinguishedName(X509_name_st *x509Name);
++ explicit DistinguishedName(const X509_name_st *x509Name);
+
+ friend class Certificate;
+ };
+@@ -945,7 +945,7 @@ namespace intel { namespace sgx { namespace dcap { namespace parser
+ std::string _name;
+ std::vector<uint8_t> _value;
+
+- explicit Extension(X509_EXTENSION *ext);
++ explicit Extension(const X509_EXTENSION *ext);
+
+ friend class Certificate;
+ friend class UnitTests;
+@@ -1461,4 +1461,4 @@ namespace intel { namespace sgx { namespace dcap { namespace parser
+
+ }}}}
+
+-#endif // SGX_DCAP_PARSERS_H_
+\ No newline at end of file
++#endif // SGX_DCAP_PARSERS_H_
+diff --git a/Src/AttestationParsers/src/OpensslHelpers/OidUtils.cpp b/Src/AttestationParsers/src/OpensslHelpers/OidUtils.cpp
+index d339b7a..ea673a5 100644
+--- a/Src/AttestationParsers/src/OpensslHelpers/OidUtils.cpp
++++ b/Src/AttestationParsers/src/OpensslHelpers/OidUtils.cpp
+@@ -60,16 +60,16 @@ void validateOid(const std::string& oidName, const ASN1_TYPE *oidValue, int expe
+ switch (oidValue->type)
+ {
+ case V_ASN1_INTEGER:
+- oidValueLen = oidValue->value.integer->length;
++ oidValueLen = ASN1_STRING_length(oidValue->value.integer);
+ break;
+ case V_ASN1_OCTET_STRING:
+- oidValueLen = oidValue->value.octet_string->length;
++ oidValueLen = ASN1_STRING_length(oidValue->value.octet_string);
+ break;
+ case V_ASN1_ENUMERATED:
+- oidValueLen = oidValue->value.enumerated->length;
++ oidValueLen = ASN1_STRING_length(oidValue->value.enumerated);
+ break;
+ case V_ASN1_SEQUENCE:
+- oidValueLen = oidValue->value.sequence->length;
++ oidValueLen = ASN1_STRING_length(oidValue->value.sequence);
+ break;
+ default:
+ {
+@@ -87,9 +87,9 @@ void validateOid(const std::string& oidName, const ASN1_TYPE *oidValue, int expe
+
+ std::vector<uint8_t> oidToBytes(const ASN1_TYPE *oidValue)
+ {
+- const auto oidValueLen = oidValue->value.octet_string->length;
++ const auto oidValueLen = ASN1_STRING_length(oidValue->value.octet_string);
+ auto bytes = std::vector<uint8_t>(static_cast<size_t>(oidValueLen));
+- std::copy_n(oidValue->value.octet_string->data,
++ std::copy_n(ASN1_STRING_get0_data(oidValue->value.octet_string),
+ oidValueLen,
+ bytes.begin());
+ return bytes;
+@@ -115,8 +115,9 @@ int oidToEnum(const ASN1_TYPE *oidValue)
+
+ STACK_OF_ASN1TYPE_uptr oidToStack(const ASN1_TYPE *oidValue)
+ {
+- const unsigned char *data = oidValue->value.sequence->data;
+- auto stack = crypto::make_unique(d2i_ASN1_SEQUENCE_ANY(nullptr, &data, oidValue->value.sequence->length));
++ const unsigned char *data = ASN1_STRING_get0_data(oidValue->value.sequence);
++ auto stack = crypto::make_unique(d2i_ASN1_SEQUENCE_ANY(nullptr, &data,
++ ASN1_STRING_length(oidValue->value.sequence)));
+
+ if(!stack)
+ {
+diff --git a/Src/AttestationParsers/src/ParserUtils.cpp b/Src/AttestationParsers/src/ParserUtils.cpp
+index 3f94f43..7723448 100644
+--- a/Src/AttestationParsers/src/ParserUtils.cpp
++++ b/Src/AttestationParsers/src/ParserUtils.cpp
+@@ -113,7 +113,7 @@ std::string x509NameToString(const X509_NAME* name)
+ return ret;
+ }
+
+-std::string getNameEntry(X509_NAME* name, int nid)
++std::string getNameEntry(const X509_NAME* name, int nid)
+ {
+ // sad, defensive code
+
+@@ -141,7 +141,7 @@ std::string getNameEntry(X509_NAME* name, int nid)
+ return "";
+ }
+
+- X509_NAME_ENTRY *entry = X509_NAME_get_entry(name, position);
++ const X509_NAME_ENTRY *entry = X509_NAME_get_entry(name, position);
+
+ if(!entry)
+ {
+@@ -149,7 +149,7 @@ std::string getNameEntry(X509_NAME* name, int nid)
+ return "";
+ }
+
+- ASN1_STRING *asn1 = X509_NAME_ENTRY_get_data(entry);
++ const ASN1_STRING *asn1 = X509_NAME_ENTRY_get_data(entry);
+ const int asn1EstimatedStrLen = ASN1_STRING_length(asn1);
+ if(asn1EstimatedStrLen <= 0)
+ {
+diff --git a/Src/AttestationParsers/src/ParserUtils.h b/Src/AttestationParsers/src/ParserUtils.h
+index 0245a82..ffaa1a9 100644
+--- a/Src/AttestationParsers/src/ParserUtils.h
++++ b/Src/AttestationParsers/src/ParserUtils.h
+@@ -48,7 +48,7 @@ namespace intel { namespace sgx { namespace dcap { namespace parser {
+ std::string obj2Str(const ASN1_OBJECT* obj);
+ std::vector<uint8_t> bn2Vec(const BIGNUM* bn);
+ std::string x509NameToString(const X509_NAME* name);
+-std::string getNameEntry(X509_NAME* name, int nid);
++std::string getNameEntry(const X509_NAME* name, int nid);
+ std::tuple<time_t, time_t> asn1TimePeriodToCTime(const ASN1_TIME* validityBegin, const ASN1_TIME* validityEnd);
+ std::string getLastError();
+
+diff --git a/Src/AttestationParsers/src/X509/Certificate.cpp b/Src/AttestationParsers/src/X509/Certificate.cpp
+index c783dd8..233e98e 100644
+--- a/Src/AttestationParsers/src/X509/Certificate.cpp
++++ b/Src/AttestationParsers/src/X509/Certificate.cpp
+@@ -182,7 +182,7 @@ void Certificate::setSerialNumber(const X509 *x509)
+ void Certificate::setSubject(const X509 *x509)
+ {
+ // this is an internal pointer and must not be freed !
+- X509_NAME *subject = X509_get_subject_name(x509);
++ const X509_NAME *subject = X509_get_subject_name(x509);
+
+ if(!subject)
+ {
+@@ -197,7 +197,7 @@ void Certificate::setSubject(const X509 *x509)
+ void Certificate::setIssuer(const X509 *x509)
+ {
+ // this is an internal pointer and must not be freed !
+- X509_NAME *issuer = X509_get_issuer_name(x509);
++ const X509_NAME *issuer = X509_get_issuer_name(x509);
+
+ if(!issuer)
+ {
+@@ -290,7 +290,7 @@ void Certificate::setSignature(const X509 *x509)
+ LOG_AND_THROW(FormatException, err);
+ }
+
+- if(psig->length == 0)
++ if(ASN1_STRING_length(psig) == 0)
+ {
+ LOG_AND_THROW(FormatException, "Signature should not be empty")
+ }
+@@ -300,16 +300,17 @@ void Certificate::setSignature(const X509 *x509)
+
+ void Certificate::setPublicKey(const X509 *x509)
+ {
+- ASN1_BIT_STRING* asn1PubKey = X509_get0_pubkey_bitstr(x509);
++ const ASN1_BIT_STRING* asn1PubKey = X509_get0_pubkey_bitstr(x509);
+
+ if(asn1PubKey == nullptr)
+ {
+ LOG_AND_THROW(FormatException, "Certificate should not be NULL");
+ }
+
+- size_t len = static_cast<size_t>(asn1PubKey->length);
++ size_t len = static_cast<size_t>(ASN1_STRING_length(asn1PubKey));
++ const uint8_t *data = static_cast<const uint8_t *>(ASN1_STRING_get0_data(asn1PubKey));
+
+- _pubKey = std::vector<uint8_t>(asn1PubKey->data, asn1PubKey->data + len);
++ _pubKey = std::vector<uint8_t>(data, data + len);
+ }
+
+ void Certificate::setCrlDistributionPoint(const X509 *x509)
+diff --git a/Src/AttestationParsers/src/X509/DistinguishedName.cpp b/Src/AttestationParsers/src/X509/DistinguishedName.cpp
+index cf5fecd..61e72db 100644
+--- a/Src/AttestationParsers/src/X509/DistinguishedName.cpp
++++ b/Src/AttestationParsers/src/X509/DistinguishedName.cpp
+@@ -95,7 +95,7 @@ bool DistinguishedName::operator!=(const DistinguishedName &other) const {
+
+ // Private
+
+-DistinguishedName::DistinguishedName(X509_name_st *x509Name):
++DistinguishedName::DistinguishedName(const X509_name_st *x509Name):
+ DistinguishedName(x509NameToString(x509Name),
+ getNameEntry(x509Name, NID_commonName),
+ getNameEntry(x509Name, NID_countryName),
+diff --git a/Src/AttestationParsers/src/X509/Extension.cpp b/Src/AttestationParsers/src/X509/Extension.cpp
+index 85ddc84..66b15e9 100644
+--- a/Src/AttestationParsers/src/X509/Extension.cpp
++++ b/Src/AttestationParsers/src/X509/Extension.cpp
+@@ -80,12 +80,12 @@ bool Extension::operator!=(const Extension& other) const
+
+ // Private
+
+-Extension::Extension(X509_EXTENSION *ext)
++Extension::Extension(const X509_EXTENSION *ext)
+ {
+ // I do not check for nullptr below cause this func is not part of
+ // public API and given a place from where call is performed I'm pretty certain
+ // there won't be any here
+- const ASN1_OBJECT *asn1Obj = X509_EXTENSION_get_object(ext);
++ const ASN1_OBJECT *asn1Obj = X509_EXTENSION_get_object(const_cast<X509_EXTENSION *>(ext));
+
+ _nid = OBJ_obj2nid(asn1Obj);
+
+@@ -96,29 +96,31 @@ Extension::Extension(X509_EXTENSION *ext)
+
+ _name = obj2Str(asn1Obj);
+
+- const auto val = X509_EXTENSION_get_data(ext);
++ const auto val = X509_EXTENSION_get_data(const_cast<X509_EXTENSION *>(ext));
+
+ if(!val)
+ {
+ throw FormatException("Invalid Extension");
+ }
+
+- _value = std::vector<uint8_t>(static_cast<size_t>(val->length));
+- std::copy_n(val->data, val->length, _value.begin());
++ _value = std::vector<uint8_t>(static_cast<size_t>(ASN1_STRING_length(val)));
++ std::copy_n(ASN1_STRING_get0_data(val),
++ ASN1_STRING_length(val), _value.begin());
+
+ return;
+ }
+
+ auto bio = crypto::make_unique(BIO_new(BIO_s_mem()));
+- if(!X509V3_EXT_print(bio.get(), ext, 0, 0))
++ if(!X509V3_EXT_print(bio.get(), const_cast<X509_EXTENSION *>(ext), 0, 0))
+ { // revocation extensions may not be printable,
+ // at the time of writing this code, there was no revocation
+ // extensions planned so this 'if' statement probably won't be
+ // hit at all
+- const auto val = X509_EXTENSION_get_data(ext);
++ const auto val = X509_EXTENSION_get_data(const_cast<X509_EXTENSION *>(ext));
+
+- _value = std::vector<uint8_t>(static_cast<size_t>(val->length));
+- std::copy_n(val->data, val->length, _value.begin());
++ _value = std::vector<uint8_t>(static_cast<size_t>(ASN1_STRING_length(val)));
++ std::copy_n(ASN1_STRING_get0_data(val),
++ ASN1_STRING_length(val), _value.begin());
+
+ _name = std::string(OBJ_nid2ln(_nid));
+
+diff --git a/Src/AttestationParsers/src/X509/Signature.cpp b/Src/AttestationParsers/src/X509/Signature.cpp
+index 0df63a7..4478060 100644
+--- a/Src/AttestationParsers/src/X509/Signature.cpp
++++ b/Src/AttestationParsers/src/X509/Signature.cpp
+@@ -78,8 +78,9 @@ const std::vector<uint8_t>& Signature::getS() const
+ // Private
+ Signature::Signature(const ASN1_BIT_STRING* pSig)
+ {
+- _rawDer = std::vector<uint8_t>(static_cast<size_t>(pSig->length));
+- safeMemcpy(_rawDer.data(), pSig->data, static_cast<size_t>(pSig->length));
++ _rawDer = std::vector<uint8_t>(static_cast<size_t>(ASN1_STRING_length(pSig)));
++ safeMemcpy(_rawDer.data(), ASN1_STRING_get0_data(pSig),
++ static_cast<size_t>(ASN1_STRING_length(pSig)));
+
+ const uint8_t *derSeqIt = _rawDer.data();
+ const auto sig = crypto::make_unique(d2i_ECDSA_SIG(nullptr, &derSeqIt , static_cast<long>(_rawDer.size())));
+--
+2.55.0
+
diff --git a/linux-sgx.spec b/linux-sgx.spec
index 4d0c05f..4eebcbe 100644
--- a/linux-sgx.spec
+++ b/linux-sgx.spec
@@ -315,6 +315,7 @@ Patch0013: 0013-linux-installer-drop-PCCS-package-from-BOM.patch
Patch0014: 0014-sdk-avoid-failure-due-to-attribute-regparam-with-GCC.patch
Patch0015: 0015-fix-BOM-for-mpa_manage-mpa_registration-files.patch
Patch0016: 0016-fix-missing-def-of-uncaught_exception.patch
+Patch0017: 0017-sdk-adapt-to-openssl4-API-changes.patch
# Optional patches
Patch0050: 0050-Disable-inclusion-of-AESM-in-installer.patch
@@ -353,6 +354,8 @@ Patch0122: 0122-Disable-PcsClientTool-package-build.patch
Patch0123: 0123-disable-building-of-WASM-SIMDE-code.patch
Patch0124: 0124-ensure-build-terminates-if-prepare_sgxssl.sh-fails.patch
Patch0125: 0125-Support-for-26.04-enabled-in-SGXSDK-and-DCAP.patch
+Patch0126: 0126-qpl-fix-const-correctness-for-ASN1_STRING-X509_NAME_.patch
+Patch0127: 0127-qal-force-compat-with-CMake-3.5.patch
# 0200-0299 -> against intel-sgx-ssl.git
@@ -363,6 +366,7 @@ Patch0200: 0200-Enable-pointing-sgxssl-build-to-alternative-glibc-he.patch
Patch0201: 0201-Workaround-missing-output-directory.patch
Patch0202: 0202-Disable-various-EC-crypto-features.patch
Patch0203: 0203-Disable-sm2-and-sm4-crypto-algorithms.patch
+Patch0204: 0204-Update-patches-for-openssl-3.0.19.patch
# 0300-0399 -> against ipp-crypto.git
@@ -373,6 +377,12 @@ Patch0300: 0300-Drop-min-openssl-from-3.0.8-to-3.0.7.patch
Patch0301: 0301-Drop-Werror-from-build-flags.patch
+# 0400-0499 -> against confidential-computing.tee.dcap.qvl.git
+#
+# Maintained in https://github.com/berrange/confidential-computing.tee.dcap.qvl
+#
+Patch0400: 0400-Fix-constness-for-OpenSSL4-X509-ASN1-APIs.patch
+
BuildRequires: sgx-rpm-macros
BuildRequires: autoconf
BuildRequires: automake
@@ -640,6 +650,7 @@ rm -rf external/{dnnl,openmp,protobuf} sdk/sample_libcrypto
cd QuoteVerification/QVL
tar zxf %{SOURCE7} --strip 1
+ %autopatch -m 400 -M 499 -p1
)
(
reply other threads:[~2026-07-23 11:18 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178480552879.1.12349014832050574955.rpms-linux-sgx-0f24fac4cedf@fedoraproject.org \
--to=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox