* [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3
@ 2026-09-29 18:34 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 01/66] package/qt5/qt5knx: remove package Bernd Kuhls
` (65 more replies)
0 siblings, 66 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:34 UTC (permalink / raw)
To: buildroot
Hi,
this series bumps libopenssl to version 4.0.3.
It consists of the following parts:
0001-0003: package removals
0004-0026: version bumps that provide compatibility with OpenSSL 4.x
0004-0021 belong to the boost patch series
0027-0065: upstream fixes for packages without a released version that
provides compatibility with OpenSSL 4.x
The luvi package needs to be bumped first so the upstream fix
for OpenSSL 4.x can be applied
0066: bump libopenssl to 4.0.3
None of the patches 0001-0081 depend on the libopenssl bump, they all
build fine with libopenssl 3.6.x.
Regards, Bernd
v7:
- rebased
- added output of 'utils/get-developers --cc' to individual patches to
avoid sending the whole series to all devs (Thomas)
- bumped libopenssl to 4.0.3
- removed qt6/qt6opcua as well (to-do from v3)
- please note that this series depends on the security bump of
libopenssl to 3.6.5:
https://patchwork.buildroot.org/project/buildroot/patch/20260929175300.1838821-1-bernd@kuhls.net/
v6:
- rebased
- created PR for package/squid/0001*.patch
- added OpenSSL fix for mender-artifact
- added Michael's boost series:
https://lists.buildroot.org/pipermail/buildroot/2026-September/810503.html
v5:
- rebased
- fixed mender build by using an Ubuntu patch
v4, only minor changes, not sent CC to all maintainers:
- renumbered patches in cover letter
- added Upstream: tag to patch package/resiprocate/0001
- mentioned resiprocate changes in v3
v3:
- rebased
the current tree, also containing unrelated build fixes, can be found
here:
https://gitlab.com/bkuhls/buildroot/-/commits/c60dc5542041aef205b874e875a3da582ebb6811
- added systemd fix
- removed resiprocate removal, bumped to 1.14.0 and added OpenSSL fixes
- removed mender removal for the time being from the series
the tree mentioned above still contains the removal, then the revert
of the removal and Adam's bump to 5.1.0 which is broken with the bump
to OpenSSL 4.0.2:
https://lists.buildroot.org/pipermail/buildroot/2026-September/810147.html
v2:
- squashed BR2_TOOLCHAIN_HAS_GCC_BUG_101916 removal into
heirloom-mailx removal patch
- added qt6 bump which also fixes build with OpenSSL 4.0
Bernd Kuhls (51):
package/qt5/qt5knx: remove package
package/qt5/qt5opcua: remove package
package/qt6/qt6opcua: remove package
package/domoticz: bump version to 2026.3
package/libtorrent-rasterbar: bump version to 2.1.1
package/boost: bump version to 1.92.0
package/dovecot{-pigeonhole}: security bump version to 2.4.5
package/nmap: bump version to 7.991
package/openvmtools: bump version to 13.1.0
package/poco: bump version to 1.15.3
package/resiprocate: security bump version to 1.14.0
package/resiprocate: Fix build with OpenSSL 4.0.0
package/snort3: fix build error with numa support
package/snort3: Fix build with OpenSSL 4.0.0
package/xtables-addons: use kernel-module infra
package/xtables-addons: bump version to 3.31
package/apache: Add support for OpenSSL 4.0.0
package/boinc: Fix build with OpenSSL 4.0.0
package/ca-certificates: Replace c_rehash with openssl rehash
package/clamav: Fix build with OpenSSL 4.0.0
package/freeradius-server: Add support for OpenSSL 4.0.0
package/freeswitch: Add support for OpenSSL 4.0.0
package/ibm-sw-tpm2: Fix build with OpenSSL 4.{0, 1}
package/ibrdtnd: Fix build with OpenSSL 4.0.0
package/lftp: Add support for OpenSSL 4.0.0
package/libesmtp: Fix build with OpenSSL 4.0.0
package/libkrb5: Add support for OpenSSL 4.0.0
package/luvi: fix build without c++
package/luvi: bump version to 102-g9fa6c141a
package/luvi: Fix build with OpenSSL 4.0.0
package/mender-artifact: Fix build with OpenSSL 4.0.0
package/perl-net-ssleay: Add support for OpenSSL 4.0.0
package/python3: Add support for OpenSSL 4.0.0
package/qpid-proton: Fix build with OpenSSL 4.0.0
package/qt5/qt5base: Add support for OpenSSL 4.0.0
package/rauc: Fix build with OpenSSL 4.0.0
package/redis: Fix build with OpenSSL 4.0.0
package/socat: Add support for OpenSSL 4.0.0
package/sofia-sip: Fix build with OpenSSL 4.0.0
package/softhsm2: Fix build with OpenSSL 4.0.0
package/squid: Fix build with OpenSSL 4.0.0
package/sudo: Add support for OpenSSL 4.0.0
package/systemd: Fix build with OpenSSL 4.0.0
package/thrift: Fix build with LibreSSL and OpenSSL 4.x
package/thrift: Fix build with OpenSSL 4.0.0
package/tpm2-openssl: Fix build with OpenSSL 4.0.0
package/trousers: Fix build with OpenSSL 4.0.0
package/uboot-tools: Fix build with OpenSSL 4.0.0
package/xmrig: Add support for OpenSSL 4.0.0
package/znc: Fix build with OpenSSL 4.0.0
package/libopenssl: bump version to 4.0.3
Michael Nosthoff (15):
package/boost: add new charconv and cobalt library
package/boost: add switch for boost-process
package/boost: program_options needs container
package/boost: thread needs more dependencies
package/boost: contract needs thread
package/boost: fix coroutine dependencies
package/boost: fiber needs exception
package/boost: update graph dependencies
package/boost: math needs container
package/boost: log needs serialization
package/boost: test needs exception
package/boost: wave needs thread
package/boost: update locale dependencies
package/boost: update C++ version dependencies
package/boost: system: update description
.checkpackageignore | 10 +-
Config.in.legacy | 57 +
DEVELOPERS | 3 -
docs/manual/migrating.adoc | 6 +
.../0004-modules-md-Merge-from-icing-md.patch | 57 +
package/apr-util/Config.in | 1 -
...fix-a-build-failure-with-openssl-4.0.patch | 26 +
...xit_code-guard-static_asserts-on-MIP.patch | 59 +
.../0001-unordered-fix-copy-assign.patch | 22 -
...-for-duplicate-definition-of-SIGLOST.patch | 30 +
package/boost/0003-Fix-build.patch | 39 +
package/boost/0004-Fix-build.patch | 40 +
package/boost/0005-Fix-build.patch | 64 +
package/boost/Config.in | 190 +-
package/boost/boost.hash | 4 +-
package/boost/boost.mk | 10 +-
package/ca-certificates/ca-certificates.mk | 4 +-
...-crypto-Remove-cl_ASN1_GetTimeT-1731.patch | 136 +
package/domoticz/Config.in | 7 +-
package/domoticz/domoticz.hash | 3 +-
package/domoticz/domoticz.mk | 27 +-
.../dovecot-pigeonhole.hash | 4 +-
.../dovecot-pigeonhole/dovecot-pigeonhole.mk | 12 +-
...xpand-crypt-Link-test-binary-statica.patch | 32 +
...g-passdbs-with-identical-driver-args.patch | 137 -
...onfigure-Explicitly-check-for-icu-uc.patch | 28 -
package/dovecot/Config.in | 21 +-
package/dovecot/dovecot.hash | 4 +-
package/dovecot/dovecot.mk | 68 +-
package/fluent-bit/Config.in | 1 -
...ING-functions-for-OpenSSL-4.0-compat.patch | 80 +
package/freeswitch/freeswitch.mk | 5 +
.../0002-tpm-Update-to-OpenSSL-4.1.patch | 28 +
...ateManager.cpp-fix-build-with-OpenSS.patch | 41 +
.../0002-allow-build-with-OpenSSL-4.x.patch | 56 +
package/libcoap/Config.in | 1 -
...-with-OpenSSL-4.0-opaque-ASN1_STRING.patch | 36 +
...eck_host-to-verify-KKDCP-server-cert.patch | 252 +
...Improve-future-OpenSSL-compatibility.patch | 327 +
package/libks/Config.in | 1 -
package/libldns/libldns.mk | 8 +-
package/libopenssl/Config.in | 34 -
package/libopenssl/libopenssl.hash | 4 +-
package/libopenssl/libopenssl.mk | 18 +-
package/libp11/Config.in | 1 -
package/libp11/libp11.mk | 3 +-
package/librelp/Config.in | 1 -
package/libssh/Config.in | 1 -
.../0001-fix-more-c-17-that-made-it-in.patch | 53 +
package/libtorrent-rasterbar/Config.in | 8 +-
.../libtorrent-rasterbar.hash | 5 +-
.../libtorrent-rasterbar.mk | 22 +-
package/log4cxx/Config.in | 5 +
...eLists.txt-only-require-a-C-compiler.patch | 48 +
...ly-disable-GCC-diagnostics-in-ocsp.c.patch | 80 -
...isable-Wincompatible-pointer-types-f.patch | 54 -
.../luvi/0002-feat-support-openssl-4.0.patch | 403 +
package/luvi/Config.in | 1 -
package/luvi/luvi.hash | 2 +-
package/luvi/luvi.mk | 2 +-
.../0001-openssl-v4-update.patch | 180 +
package/mender/Config.in | 1 -
package/mtd/Config.in | 1 -
...if-compiling-without-Lua-support.-Cl.patch | 29 +
package/nmap/nmap.hash | 6 +-
package/nmap/nmap.mk | 2 +-
package/openssh/openssh.mk | 8 +-
.../0001-configure.ac-disable-Werror.patch | 32 +
.../openvmtools/0001-no_cflags_werror.patch | 18 -
.../0002-dont-force-cppflags.patch | 21 -
...-not-force-I-usr-include-in-CPPFLAGS.patch | 36 +
..._poll-h-to-fix-build-failure-on-musl.patch | 813 --
...to-vm_poll.h-to-fix-build-failure-on.patch | 133 +
...ns-about-glibc-being-only-libc-imple.patch | 27 +-
...e-configure-test-for-struct-timespec.patch | 31 +-
...finition-of-ALLPERMS-and-ACCESSPERMS.patch | 35 +-
...-test-for-feature-instead-of-platfor.patch | 74 +-
...onfigure-test-for-sys-stat.h-include.patch | 21 +-
...gfs-fuse-fsutils.h-fix-build-on-mus.patch} | 8 +-
...FromNtTimeNsec-aware-of-64-bit-time_.patch | 51 +
...on-discards-const-qualifier-from-poi.patch | 148 +
...FromNtTimeNsec-aware-of-64-bit-time_.patch | 80 -
...GLib-g_free-macro-redefinition-erro.patch} | 11 +-
...uthorization-on-incoming-guestOps-re.patch | 41 -
...-2025-22247-1100-1225-VGAuth-updates.patch | 383 -
package/openvmtools/openvmtools.hash | 3 +-
package/openvmtools/openvmtools.mk | 22 +-
.../0002-Fix-SSLv3-in-OpenSSL-4.0.0.patch | 39 +
...emove-support-for-some-TLS-functions.patch | 197 +
...SSLeay-to-support-opaque-ASN1_STRING.patch | 179 +
...-removal-of-SSLv2-Client-Hello-suppo.patch | 66 +
...Net-SSLeay-OPENSSL_info-return-value.patch | 45 +
...r-OPenSSL-4-support-and-update-tests.patch | 94 +
...but-if-with-else-to-avoid-duplicate-.patch | 83 +
package/poco/poco.hash | 2 +-
package/poco/poco.mk | 2 +-
package/python-libconfig/Config.in | 5 +-
package/python3/0011-openssl4-support.patch | 9807 +++++++++++++++++
...1-PROTON-2937-Add-OpenSSL-4.x-compat.patch | 80 +
package/qt5/Config.in | 2 -
package/qt5/qt5base/0009-openssl4.patch | 52 +
package/qt5/qt5base/0010-openssl4.patch | 139 +
package/qt5/qt5base/0011-openssl4.patch | 89 +
package/qt5/qt5knx/Config.in | 12 -
package/qt5/qt5knx/qt5knx.hash | 6 -
package/qt5/qt5knx/qt5knx.mk | 15 -
package/qt5/qt5opcua/Config.in | 9 -
package/qt5/qt5opcua/qt5opcua.hash | 10 -
package/qt5/qt5opcua/qt5opcua.mk | 19 -
package/qt6/Config.in | 1 -
package/qt6/qt6opcua/Config.in | 14 -
package/qt6/qt6opcua/qt6opcua.hash | 10 -
package/qt6/qt6opcua/qt6opcua.mk | 40 -
...N1_STRING_get0_data-and-ASN1_STRING_.patch | 48 +
package/rauc/Config.in | 2 -
package/rauc/rauc.mk | 3 +-
...emove-Werror-deprecated-declarations.patch | 28 +
...precated-OpenSSL-calls-fix-upcoming-.patch | 597 +
...aining-build-errors-with-OpenSSL-4.x.patch | 47 +
package/resiprocate/Config.in | 4 +
package/resiprocate/resiprocate.hash | 2 +-
package/resiprocate/resiprocate.mk | 2 +-
.../0001-Rename-numa.h-to-numa_snort.h.patch | 79 +
...fix-const-qualifiers-for-OpenSSL-4.0.patch | 63 +
...penSSL-4.0-use-ASN1_STRING-accessors.patch | 35 +
...001-Fix-build-error-with-OpenSSL-4.0.patch | 42 +
...mory-leak-in-OSSL-byteString2oid-863.patch | 49 +
...in-EdDSA-PrintableString-handling-85.patch | 98 +
package/softhsm2/Config.in | 1 -
.../0001-Fix-OpenSSL-4.0-compatibility.patch | 368 +
...-for-getting-an-ASN1_STRING-s-length.patch | 46 +
...compilation-with-openssl-4.0.0-beta1.patch | 86 +
...sport-Make-it-compatible-with-OpenSS.patch | 193 +
...recated-OpenSSL-API-ASN1_STRING_data.patch | 35 +
...TRING-and-X509_NAME-access-for-OpenS.patch | 87 +
package/trousers/0004-openssl4.patch | 26 +
...Add-support-for-OpenSSL-Provider-API.patch | 304 +
package/unbound/Config.in | 1 -
package/unbound/unbound.mk | 1 +
.../0001-Fix-build-with-OpenSSL-4.0.0.patch | 40 +
package/xtables-addons/Config.in | 2 +-
package/xtables-addons/xtables-addons.hash | 2 +-
package/xtables-addons/xtables-addons.mk | 9 +-
package/zmqpp/Config.in | 5 +-
...-Fix-build-error-with-OpenSSL-4-2024.patch | 57 +
145 files changed, 16163 insertions(+), 2113 deletions(-)
create mode 100644 package/apache/0004-modules-md-Merge-from-icing-md.patch
create mode 100644 package/boinc/0001-Adapt-code-to-fix-a-build-failure-with-openssl-4.0.patch
create mode 100644 package/boost/0001-fix-process-v2-exit_code-guard-static_asserts-on-MIP.patch
delete mode 100644 package/boost/0001-unordered-fix-copy-assign.patch
create mode 100644 package/boost/0002-Add-check-for-duplicate-definition-of-SIGLOST.patch
create mode 100644 package/boost/0003-Fix-build.patch
create mode 100644 package/boost/0004-Fix-build.patch
create mode 100644 package/boost/0005-Fix-build.patch
create mode 100644 package/clamav/0001-libclamav-crypto-Remove-cl_ASN1_GetTimeT-1731.patch
create mode 100644 package/dovecot/0001-Revert-lib-var-expand-crypt-Link-test-binary-statica.patch
delete mode 100644 package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch
delete mode 100644 package/dovecot/0002-configure-Explicitly-check-for-icu-uc.patch
create mode 100644 package/freeradius-server/0009-Use-ASN1_STRING-functions-for-OpenSSL-4.0-compat.patch
create mode 100644 package/ibm-sw-tpm2/0002-tpm-Update-to-OpenSSL-4.1.patch
create mode 100644 package/ibrdtnd/0003-SecurityCertificateManager.cpp-fix-build-with-OpenSS.patch
create mode 100644 package/lftp/0002-allow-build-with-OpenSSL-4.x.patch
create mode 100644 package/libesmtp/0001-Fix-build-with-OpenSSL-4.0-opaque-ASN1_STRING.patch
create mode 100644 package/libkrb5/0002-Use-X509_check_host-to-verify-KKDCP-server-cert.patch
create mode 100644 package/libkrb5/0003-Improve-future-OpenSSL-compatibility.patch
create mode 100644 package/libtorrent-rasterbar/0001-fix-more-c-17-that-made-it-in.patch
create mode 100644 package/luvi/0001-CMakeLists.txt-only-require-a-C-compiler.patch
delete mode 100644 package/luvi/0001-Selectively-disable-GCC-diagnostics-in-ocsp.c.patch
delete mode 100644 package/luvi/0002-CMakeLists.txt-disable-Wincompatible-pointer-types-f.patch
create mode 100644 package/luvi/0002-feat-support-openssl-4.0.patch
create mode 100644 package/mender-artifact/0001-openssl-v4-update.patch
create mode 100644 package/nmap/0002-Do-not-call-NSE-if-compiling-without-Lua-support.-Cl.patch
create mode 100644 package/openvmtools/0001-configure.ac-disable-Werror.patch
delete mode 100644 package/openvmtools/0001-no_cflags_werror.patch
delete mode 100644 package/openvmtools/0002-dont-force-cppflags.patch
create mode 100644 package/openvmtools/0002-m4-do-not-force-I-usr-include-in-CPPFLAGS.patch
delete mode 100644 package/openvmtools/0003-Rename-poll-h-into-vm_poll-h-to-fix-build-failure-on-musl.patch
create mode 100644 package/openvmtools/0003-Rename-poll.h-into-vm_poll.h-to-fix-build-failure-on.patch
rename package/openvmtools/{0011-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch => 0009-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch} (86%)
create mode 100644 package/openvmtools/0010-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch
create mode 100644 package/openvmtools/0011-fix-initialization-discards-const-qualifier-from-poi.patch
delete mode 100644 package/openvmtools/0012-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch
rename package/openvmtools/{0015-glib_stubs-avoid-GLib-g_free-macro-redefinition-error.patch => 0012-glib_stubs-avoid-GLib-g_free-macro-redefinition-erro.patch} (84%)
delete mode 100644 package/openvmtools/0013-Properly-check-authorization-on-incoming-guestOps-re.patch
delete mode 100644 package/openvmtools/0014-CVE-2025-22247-1100-1225-VGAuth-updates.patch
create mode 100644 package/perl-net-ssleay/0002-Fix-SSLv3-in-OpenSSL-4.0.0.patch
create mode 100644 package/perl-net-ssleay/0003-OpenSSL-4.0.0-remove-support-for-some-TLS-functions.patch
create mode 100644 package/perl-net-ssleay/0004-Fix-Net-SSLeay-to-support-opaque-ASN1_STRING.patch
create mode 100644 package/perl-net-ssleay/0005-Update-tests-for-removal-of-SSLv2-Client-Hello-suppo.patch
create mode 100644 package/perl-net-ssleay/0006-Add-default-for-Net-SSLeay-OPENSSL_info-return-value.patch
create mode 100644 package/perl-net-ssleay/0007-Add-Changes-for-OPenSSL-4-support-and-update-tests.patch
create mode 100644 package/perl-net-ssleay/0008-Do-not-use-elif-but-if-with-else-to-avoid-duplicate-.patch
create mode 100644 package/python3/0011-openssl4-support.patch
create mode 100644 package/qpid-proton/0001-PROTON-2937-Add-OpenSSL-4.x-compat.patch
create mode 100644 package/qt5/qt5base/0009-openssl4.patch
create mode 100644 package/qt5/qt5base/0010-openssl4.patch
create mode 100644 package/qt5/qt5base/0011-openssl4.patch
delete mode 100644 package/qt5/qt5knx/Config.in
delete mode 100644 package/qt5/qt5knx/qt5knx.hash
delete mode 100644 package/qt5/qt5knx/qt5knx.mk
delete mode 100644 package/qt5/qt5opcua/Config.in
delete mode 100644 package/qt5/qt5opcua/qt5opcua.hash
delete mode 100644 package/qt5/qt5opcua/qt5opcua.mk
delete mode 100644 package/qt6/qt6opcua/Config.in
delete mode 100644 package/qt6/qt6opcua/qt6opcua.hash
delete mode 100644 package/qt6/qt6opcua/qt6opcua.mk
create mode 100644 package/rauc/0001-signature-use-ASN1_STRING_get0_data-and-ASN1_STRING_.patch
create mode 100644 package/redis/0004-Remove-Werror-deprecated-declarations.patch
create mode 100644 package/resiprocate/0001-ssl-modernize-deprecated-OpenSSL-calls-fix-upcoming-.patch
create mode 100644 package/resiprocate/0002-ssl-Fix-remaining-build-errors-with-OpenSSL-4.x.patch
create mode 100644 package/snort3/0001-Rename-numa.h-to-numa_snort.h.patch
create mode 100644 package/snort3/0002-ssl-fix-const-qualifiers-for-OpenSSL-4.0.patch
create mode 100644 package/socat/0002-Fix-build-with-OpenSSL-4.0-use-ASN1_STRING-accessors.patch
create mode 100644 package/sofia-sip/0001-Fix-build-error-with-OpenSSL-4.0.patch
create mode 100644 package/softhsm2/0001-Fix-the-memory-leak-in-OSSL-byteString2oid-863.patch
create mode 100644 package/softhsm2/0002-Fix-memory-leak-in-EdDSA-PrintableString-handling-85.patch
create mode 100644 package/squid/0001-Fix-OpenSSL-4.0-compatibility.patch
create mode 100644 package/sudo/0002-Use-accessor-for-getting-an-ASN1_STRING-s-length.patch
create mode 100644 package/systemd/0001-various-fix-compilation-with-openssl-4.0.0-beta1.patch
create mode 100644 package/thrift/0002-THRIFT-6170-transport-Make-it-compatible-with-OpenSS.patch
create mode 100644 package/thrift/0003-Replace-deprecated-OpenSSL-API-ASN1_STRING_data.patch
create mode 100644 package/tpm2-openssl/0001-Fix-ASN1_OCTET_STRING-and-X509_NAME-access-for-OpenS.patch
create mode 100644 package/trousers/0004-openssl4.patch
create mode 100644 package/uboot-tools/0003-Add-support-for-OpenSSL-Provider-API.patch
create mode 100644 package/xmrig/0001-Fix-build-with-OpenSSL-4.0.0.patch
create mode 100644 package/znc/0001-Fix-build-error-with-OpenSSL-4-2024.patch
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 01/66] package/qt5/qt5knx: remove package
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 02/66] package/qt5/qt5opcua: " Bernd Kuhls
` (64 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Angelo Compagnucci
Build is broken with the upcoming bump of OpenSSL to 4.0.3:
ssl/qsslsocket_openssl_symbols.cpp: In function 'QDateTime QKnxPrivate::q_getTimeFromASN1(const ASN1_TIME*)':
ssl/qsslsocket_openssl_symbols.cpp:1352:31: error: invalid use of incomplete type 'const ASN1_TIME' {aka 'const struct asn1_string_st'}
1352 | size_t lTimeLength = aTime->length;
ssl/qsslsocket_openssl_symbols.cpp:1353:35: error: invalid use of incomplete type 'const ASN1_TIME' {aka 'const struct asn1_string_st'}
1353 | char *pString = (char *) aTime->data;
ssl/qsslsocket_openssl_symbols.cpp:1355:14: error: invalid use of incomplete type 'const ASN1_TIME' {aka 'const struct asn1_string_st'}
1355 | if (aTime->type == V_ASN1_UTCTIME) {
ssl/qsslsocket_openssl_symbols.cpp:1415:21: error: invalid use of incomplete type 'const ASN1_TIME' {aka 'const struct asn1_string_st'}
1415 | } else if (aTime->type == V_ASN1_GENERALIZEDTIME) {
Last update of the package dates back to 2020:
https://github.com/qt/qtknx/branches/all
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Angelo Compagnucci <angelo.compagnucci@gmail.com>
---
Config.in.legacy | 7 +++++++
DEVELOPERS | 1 -
package/qt5/Config.in | 1 -
package/qt5/qt5knx/Config.in | 12 ------------
package/qt5/qt5knx/qt5knx.hash | 6 ------
package/qt5/qt5knx/qt5knx.mk | 15 ---------------
6 files changed, 7 insertions(+), 35 deletions(-)
delete mode 100644 package/qt5/qt5knx/Config.in
delete mode 100644 package/qt5/qt5knx/qt5knx.hash
delete mode 100644 package/qt5/qt5knx/qt5knx.mk
diff --git a/Config.in.legacy b/Config.in.legacy
index bb6257f532..5bbe332112 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -146,6 +146,13 @@ endif
comment "Legacy options removed in 2026.11"
+config BR2_PACKAGE_QT5KNX
+ bool "qt5knx has been removed"
+ select BR2_LEGACY
+ help
+ The qt5knx package has been removed because it is
+ incompatible with OpenSSL >= 4.x
+
config BR2_PACKAGE_LIBCPPRESTSDK
bool "libcpprestsdk has been removed"
select BR2_LEGACY
diff --git a/DEVELOPERS b/DEVELOPERS
index d62bfaafb3..0211f53e4b 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -254,7 +254,6 @@ F: package/python-spidev/
F: package/python-web2py/
F: package/qpdf/
F: package/qt5/qt5coap/
-F: package/qt5/qt5knx/
F: package/qt5/qt5mqtt/
F: package/rtl8723ds/
F: package/rtl8723ds-bt/
diff --git a/package/qt5/Config.in b/package/qt5/Config.in
index f1b16ff39b..b837601dc6 100644
--- a/package/qt5/Config.in
+++ b/package/qt5/Config.in
@@ -44,7 +44,6 @@ source "package/qt5/qt5doc/Config.in"
source "package/qt5/qt5enginio/Config.in"
source "package/qt5/qt5graphicaleffects/Config.in"
source "package/qt5/qt5imageformats/Config.in"
-source "package/qt5/qt5knx/Config.in"
source "package/qt5/qt5location/Config.in"
source "package/qt5/qt5lottie/Config.in"
source "package/qt5/qt5mqtt/Config.in"
diff --git a/package/qt5/qt5knx/Config.in b/package/qt5/qt5knx/Config.in
deleted file mode 100644
index 991e93c8cb..0000000000
--- a/package/qt5/qt5knx/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_QT5KNX
- bool "qt5knx"
- help
- Qt is a cross-platform application and UI framework for
- developers using C++.
-
- The Qt KNX module implements the client side of a connection
- between a client and a KNXnet/IP server. This connection
- can be used to send messages to the KNX bus and to control
- the functionalities of the KNX devices.
-
- https://doc.qt.io/QtKNX/index.html
diff --git a/package/qt5/qt5knx/qt5knx.hash b/package/qt5/qt5knx/qt5knx.hash
deleted file mode 100644
index 2600a739bc..0000000000
--- a/package/qt5/qt5knx/qt5knx.hash
+++ /dev/null
@@ -1,6 +0,0 @@
-# Hash locally calculated
-sha256 1648bd6d7e5d8fc91aaa6db1bf9d2744d0385a087ba78a00080f99f1d5027c8b qt5knx-5.15.2-git4.tar.gz
-
-# Hashes for license files:
-sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3
-sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT
diff --git a/package/qt5/qt5knx/qt5knx.mk b/package/qt5/qt5knx/qt5knx.mk
deleted file mode 100644
index 91b99aaa87..0000000000
--- a/package/qt5/qt5knx/qt5knx.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-################################################################################
-#
-# qt5knx
-#
-################################################################################
-
-QT5KNX_VERSION = 5.15.2
-QT5KNX_SITE = https://code.qt.io/qt/qtknx.git
-QT5KNX_SITE_METHOD = git
-QT5KNX_INSTALL_STAGING = YES
-QT5KNX_LICENSE = GPL-3.0 with exception
-QT5KNX_LICENSE_FILES = LICENSE.GPL3 LICENSE.GPL3-EXCEPT
-QT5KNX_SYNC_QT_HEADERS = YES
-
-$(eval $(qmake-package))
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 02/66] package/qt5/qt5opcua: remove package
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 01/66] package/qt5/qt5knx: remove package Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 03/66] package/qt6/qt6opcua: " Bernd Kuhls
` (63 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Build is broken with the upcoming bump of OpenSSL to 4.0.3:
x509/openssl_symbols.cpp: In function 'QDateTime q_getTimeFromASN1(const ASN1_TIME*)':
x509/openssl_symbols.cpp:1244:31: error: invalid use of incomplete type 'const ASN1_TIME' {aka 'const struct asn1_string_st'}
1244 | size_t lTimeLength = aTime->length;
x509/openssl_symbols.cpp:1245:35: error: invalid use of incomplete type 'const ASN1_TIME' {aka 'const struct asn1_string_st'}
1245 | char *pString = (char *) aTime->data;
x509/openssl_symbols.cpp:1247:14: error: invalid use of incomplete type 'const ASN1_TIME' {aka 'const struct asn1_string_st'}
1247 | if (aTime->type == V_ASN1_UTCTIME) {
x509/openssl_symbols.cpp:1307:21: error: invalid use of incomplete type 'const ASN1_TIME' {aka 'const struct asn1_string_st'}
1307 | } else if (aTime->type == V_ASN1_GENERALIZEDTIME) {
and mbed TLS since it was bumped from 2.28.10 to 3.6.3.1 with buildroot
commit 3481a9643fc7223e400ed877f08ade34d44e6b78 as seen by the
autobuilders.
The last release of the 5.x series dates back to 2020:
https://github.com/qt/qtopcua/releases/tag/v5.15.2
Fixes:
https://autobuild.buildroot.net/results/1f0/1f06b1efdde65fcd99ff79a63ed01b749788dec8/
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Andreas Naumann <dev@andin.de>
---
Config.in.legacy | 7 +++++++
DEVELOPERS | 1 -
package/qt5/Config.in | 1 -
package/qt5/qt5opcua/Config.in | 9 ---------
package/qt5/qt5opcua/qt5opcua.hash | 10 ----------
package/qt5/qt5opcua/qt5opcua.mk | 19 -------------------
6 files changed, 7 insertions(+), 40 deletions(-)
delete mode 100644 package/qt5/qt5opcua/Config.in
delete mode 100644 package/qt5/qt5opcua/qt5opcua.hash
delete mode 100644 package/qt5/qt5opcua/qt5opcua.mk
diff --git a/Config.in.legacy b/Config.in.legacy
index 5bbe332112..1cceec25d2 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -146,6 +146,13 @@ endif
comment "Legacy options removed in 2026.11"
+config BR2_PACKAGE_QT5OPCUA
+ bool "qt5opcua has been removed"
+ select BR2_LEGACY
+ help
+ The qt5opcua package has been removed because it is
+ incompatible with OpenSSL >= 4.x and mbed TLS 3.x
+
config BR2_PACKAGE_QT5KNX
bool "qt5knx has been removed"
select BR2_LEGACY
diff --git a/DEVELOPERS b/DEVELOPERS
index 0211f53e4b..76c99ed311 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -203,7 +203,6 @@ N: Andreas Naumann <dev@andin.de>
F: package/evemu/
F: package/libevdev/
F: package/pkg-qmake.mk
-F: package/qt5/qt5opcua/
F: package/qt6/qt6opcua/
N: Andreas Ziegler <br025@umbiko.net>
diff --git a/package/qt5/Config.in b/package/qt5/Config.in
index b837601dc6..8b4903a5ab 100644
--- a/package/qt5/Config.in
+++ b/package/qt5/Config.in
@@ -48,7 +48,6 @@ source "package/qt5/qt5location/Config.in"
source "package/qt5/qt5lottie/Config.in"
source "package/qt5/qt5mqtt/Config.in"
source "package/qt5/qt5multimedia/Config.in"
-source "package/qt5/qt5opcua/Config.in"
source "package/qt5/qt5quickcontrols/Config.in"
source "package/qt5/qt5quickcontrols2/Config.in"
source "package/qt5/qt5quicktimeline/Config.in"
diff --git a/package/qt5/qt5opcua/Config.in b/package/qt5/qt5opcua/Config.in
deleted file mode 100644
index 2b0ba37af3..0000000000
--- a/package/qt5/qt5opcua/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_QT5OPCUA
- bool "qt5opcua"
- depends on BR2_PACKAGE_QT5
- help
- Qt is a cross-platform application and UI framework for
- developers using C++.
-
- The Qt OPC UA module implements a Qt API to interact with
- OPC UA on top of a 3rd party OPC UA stack.
diff --git a/package/qt5/qt5opcua/qt5opcua.hash b/package/qt5/qt5opcua/qt5opcua.hash
deleted file mode 100644
index a325653f80..0000000000
--- a/package/qt5/qt5opcua/qt5opcua.hash
+++ /dev/null
@@ -1,10 +0,0 @@
-# Hash locally calculated
-sha256 fa8e0e87aae6f321aecac2605e6ac1b858ba1ed4db3c4a78a193eb7b547ab224 qt5opcua-5.15.2-git4.tar.gz
-
-# Hashes for license files:
-sha256 d93cc415382f0013088fa276d9cf82373badf244c78220a926f15ee46f0fe3c4 LICENSE-CC0
-sha256 f827ad079686ba92cc94811e35492d0e8966f704008b6da9eeda0b659fb58a8d LICENSE.FDL
-sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3
-sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT
-sha256 6c3f3c31b93985f1b93bfbb35fb609d37281697d0efc220c9f91cf4b59eaabde LICENSE.GPLv2
-sha256 75d800e60c8d58c2e7f0338e8552ea6123a9ce7e5dd8e1cdf2095e013b737488 LICENSE.LGPLv3
diff --git a/package/qt5/qt5opcua/qt5opcua.mk b/package/qt5/qt5opcua/qt5opcua.mk
deleted file mode 100644
index ef51abddf8..0000000000
--- a/package/qt5/qt5opcua/qt5opcua.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-################################################################################
-#
-# qt5opcua
-#
-################################################################################
-
-QT5OPCUA_VERSION = 5.15.2
-QT5OPCUA_SITE = https://code.qt.io/qt/qtopcua.git
-QT5OPCUA_SITE_METHOD = git
-QT5OPCUA_INSTALL_STAGING = YES
-QT5OPCUA_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) CC0-1.0
-QT5OPCUA_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL LICENSE-CC0
-QT5OPCUA_SYNC_QT_HEADERS = YES
-
-ifeq ($(BR2_PACKAGE_MBEDTLS),y)
-QT5OPCUA_DEPENDENCIES += mbedtls
-endif
-
-$(eval $(qmake-package))
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 03/66] package/qt6/qt6opcua: remove package
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 01/66] package/qt5/qt5knx: remove package Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 02/66] package/qt5/qt5opcua: " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 04/66] package/domoticz: bump version to 2026.3 Bernd Kuhls
` (62 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Build is broken with the upcoming bump of OpenSSL to 4.0.3.
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Andreas Naumann <dev@andin.de>
---
Config.in.legacy | 7 ++++++
DEVELOPERS | 1 -
package/qt6/Config.in | 1 -
package/qt6/qt6opcua/Config.in | 14 -----------
package/qt6/qt6opcua/qt6opcua.hash | 10 --------
package/qt6/qt6opcua/qt6opcua.mk | 40 ------------------------------
6 files changed, 7 insertions(+), 66 deletions(-)
delete mode 100644 package/qt6/qt6opcua/Config.in
delete mode 100644 package/qt6/qt6opcua/qt6opcua.hash
delete mode 100644 package/qt6/qt6opcua/qt6opcua.mk
diff --git a/Config.in.legacy b/Config.in.legacy
index 1cceec25d2..a6f97db08c 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -146,6 +146,13 @@ endif
comment "Legacy options removed in 2026.11"
+config BR2_PACKAGE_QT6OPCUA
+ bool "qt6opcua has been removed"
+ select BR2_LEGACY
+ help
+ The qt6opcua package has been removed because it is
+ incompatible with OpenSSL >= 4.x and mbed TLS 3.x
+
config BR2_PACKAGE_QT5OPCUA
bool "qt5opcua has been removed"
select BR2_LEGACY
diff --git a/DEVELOPERS b/DEVELOPERS
index 76c99ed311..892bd983f5 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -203,7 +203,6 @@ N: Andreas Naumann <dev@andin.de>
F: package/evemu/
F: package/libevdev/
F: package/pkg-qmake.mk
-F: package/qt6/qt6opcua/
N: Andreas Ziegler <br025@umbiko.net>
F: package/mpd/
diff --git a/package/qt6/Config.in b/package/qt6/Config.in
index d6ee9f3ea3..31fa4582d2 100644
--- a/package/qt6/Config.in
+++ b/package/qt6/Config.in
@@ -52,7 +52,6 @@ source "package/qt6/qt6grpc/Config.in"
source "package/qt6/qt6languageserver/Config.in"
source "package/qt6/qt6mqtt/Config.in"
source "package/qt6/qt6multimedia/Config.in"
-source "package/qt6/qt6opcua/Config.in"
source "package/qt6/qt6positioning/Config.in"
source "package/qt6/qt6quick3d/Config.in"
source "package/qt6/qt6quicktimeline/Config.in"
diff --git a/package/qt6/qt6opcua/Config.in b/package/qt6/qt6opcua/Config.in
deleted file mode 100644
index 9b5359dd4c..0000000000
--- a/package/qt6/qt6opcua/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_QT6OPCUA
- bool "qt6opcua"
- select BR2_PACKAGE_QT6BASE_NETWORK
- # qt6opcua needs host-qt6opcua, and host-qt6opcua needs
- # network support in qt6base.
- select BR2_PACKAGE_HOST_QT6BASE_NETWORK
-
- help
- Qt is a cross-platform application and UI framework for
- developers using C++.
-
- This package corresponds to the qt6opcua module.
-
- https://doc.qt.io/qt-6/qtopcua-index.html
diff --git a/package/qt6/qt6opcua/qt6opcua.hash b/package/qt6/qt6opcua/qt6opcua.hash
deleted file mode 100644
index e05212eaa8..0000000000
--- a/package/qt6/qt6opcua/qt6opcua.hash
+++ /dev/null
@@ -1,10 +0,0 @@
-# Locally computed
-sha256 41982d99b93bfde68f9ee5997376cd64f62d0e7cdca1a08e582a034840528ca1 qt6opcua-6.11.2-git4.tar.gz
-
-# Hashes for license files
-sha256 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce LICENSES/BSD-3-Clause.txt
-sha256 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4 LICENSES/GFDL-1.3-no-invariants-only.txt
-sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSES/GPL-2.0-only.txt
-sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSES/GPL-3.0-only.txt
-sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSES/LGPL-3.0-only.txt
-sha256 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2 LICENSES/Qt-GPL-exception-1.0.txt
diff --git a/package/qt6/qt6opcua/qt6opcua.mk b/package/qt6/qt6opcua/qt6opcua.mk
deleted file mode 100644
index 28771ba8a5..0000000000
--- a/package/qt6/qt6opcua/qt6opcua.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-################################################################################
-#
-# qt6opcua
-#
-################################################################################
-
-QT6OPCUA_VERSION = $(QT6_VERSION)
-QT6OPCUA_SITE = $(QT6_GIT)/qt/qtopcua.git
-QT6OPCUA_SITE_METHOD = git
-QT6OPCUA_INSTALL_STAGING = YES
-QT6OPCUA_SUPPORTS_IN_SOURCE_BUILD = NO
-
-QT6OPCUA_CMAKE_BACKEND = ninja
-
-QT6OPCUA_LICENSE = \
- GPL-2.0 or GPL-3.0 or LGPL-3.0, \
- GFDL-1.3 no invariants (docs), \
- BSD-3-Clause (examples + buildsystem)
-
-QT6OPCUA_LICENSE_FILES = \
- LICENSES/BSD-3-Clause.txt \
- LICENSES/GFDL-1.3-no-invariants-only.txt \
- LICENSES/GPL-2.0-only.txt \
- LICENSES/GPL-3.0-only.txt \
- LICENSES/LGPL-3.0-only.txt
-
-QT6OPCUA_CONF_OPTS = \
- -DQT_HOST_PATH=$(HOST_DIR) \
- -DBUILD_WITH_PCH=OFF
-
-QT6OPCUA_DEPENDENCIES = \
- qt6base \
- host-qt6opcua
-
-ifeq ($(BR2_PACKAGE_OPENSSL),y)
-QT6OPCUA_DEPENDENCIES += openssl
-endif
-
-$(eval $(cmake-package))
-$(eval $(host-cmake-package))
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 04/66] package/domoticz: bump version to 2026.3
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (2 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 03/66] package/qt6/qt6opcua: " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 05/66] package/libtorrent-rasterbar: bump version to 2.1.1 Bernd Kuhls
` (61 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Fabrice Fontaine
Added new dependency jwt-cpp needed since 2025.1:
https://github.com/domoticz/domoticz/commit/b30d9e9436ad428a2cbfd1fbb273461bdbf50a82
Added _EXTRA_DOWNLOAD for libwebem after its split from domoticz:
https://github.com/domoticz/domoticz/commit/7de4834e9959e8a9a21a2b82bb7700ea5af6e618
to avoid fetching git submodules. Use version number from upstream repo:
https://github.com/domoticz/domoticz/tree/2026.3/extern
Raised minimum gcc version because libwebem depends on c++17:
https://github.com/domoticz/libwebem/blob/master/README.md
Removed configure option USE_BUILTIN_MQTT due to its upstream removal:
https://github.com/domoticz/domoticz/commit/be95eec094bf524c1ab011eebcd797d3b19b17fc
Link to libatomic to fix a build error
output/per-package/domoticz/host/opt/ext-toolchain/bin/../lib/gcc/arc-buildroot-linux-uclibc/15.3.0/../../../../arc-buildroot-linux-uclibc/bin/ld:
CMakeFiles/domoticz.dir/hardware/Matter.cpp.o:
undefined reference to symbol '__atomic_load_8@@LIBATOMIC_1.0'
detected by the Gitlab pipelines which is introduced by upstream
commit
https://github.com/domoticz/domoticz/commit/ec5488a7df963af4b260a92bfecea53edc20b136
that added hardware/Matter.cpp in version 2026.2.
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Fabrice Fontaine <fabrice.fontaine@orange.com>
---
package/domoticz/Config.in | 7 ++++---
package/domoticz/domoticz.hash | 3 ++-
package/domoticz/domoticz.mk | 27 +++++++++++++++++++++++----
3 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/package/domoticz/Config.in b/package/domoticz/Config.in
index a0e69a7601..2af63baecf 100644
--- a/package/domoticz/Config.in
+++ b/package/domoticz/Config.in
@@ -2,7 +2,7 @@ config BR2_PACKAGE_DOMOTICZ
bool "domoticz"
depends on BR2_USE_MMU # fork()
depends on !BR2_STATIC_LIBS
- depends on BR2_TOOLCHAIN_GCC_AT_LEAST_6 # C++14
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17
# pthread_condattr_setclock
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # mosquitto
depends on BR2_INSTALL_LIBSTDCPP
@@ -17,6 +17,7 @@ config BR2_PACKAGE_DOMOTICZ
select BR2_PACKAGE_BOOST_THREAD
select BR2_PACKAGE_CEREAL
select BR2_PACKAGE_JSONCPP
+ select BR2_PACKAGE_JWT_CPP
select BR2_PACKAGE_LIBCURL
select BR2_PACKAGE_MINIZIP_ZLIB
select BR2_PACKAGE_MOSQUITTO
@@ -32,11 +33,11 @@ config BR2_PACKAGE_DOMOTICZ
http://domoticz.com
-comment "domoticz needs lua 5.3 and a toolchain w/ C++, gcc >= 6, NPTL, wchar, dynamic library"
+comment "domoticz needs lua 5.3 and a toolchain w/ C++, gcc >= 7, NPTL, wchar, dynamic library"
depends on BR2_USE_MMU
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
depends on !BR2_INSTALL_LIBSTDCPP || \
- !BR2_TOOLCHAIN_GCC_AT_LEAST_6 || \
+ !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \
!BR2_TOOLCHAIN_HAS_THREADS_NPTL || \
!BR2_USE_WCHAR || BR2_STATIC_LIBS || \
!BR2_PACKAGE_LUA_5_3
diff --git a/package/domoticz/domoticz.hash b/package/domoticz/domoticz.hash
index ae86a67b79..fc3904ade7 100644
--- a/package/domoticz/domoticz.hash
+++ b/package/domoticz/domoticz.hash
@@ -1,3 +1,4 @@
# Locally computed:
-sha256 d87113d7cacd0b52b9126fcc1ef24e140a4f7042d5bc6262e86e4b4752f5cf38 domoticz-2024.4.tar.gz
+sha256 10053191b4f6becdf244d2a416b9e655c91d357b51dd8280832c6e36f7d5d5c7 domoticz-2026.3.tar.gz
+sha256 937e31bfb4b414bb33e70cad1403afd023dfff6cebba3213ec62a9c91525dcab libwebem-9126af0ce3456c24b936dfb20d1b5a8bdb797104.tar.gz
sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 License.txt
diff --git a/package/domoticz/domoticz.mk b/package/domoticz/domoticz.mk
index 95d3335adb..5387076b97 100644
--- a/package/domoticz/domoticz.mk
+++ b/package/domoticz/domoticz.mk
@@ -4,16 +4,30 @@
#
################################################################################
-DOMOTICZ_VERSION = 2024.4
+DOMOTICZ_VERSION = 2026.3
DOMOTICZ_SITE = $(call github,domoticz,domoticz,$(DOMOTICZ_VERSION))
DOMOTICZ_LICENSE = GPL-3.0
DOMOTICZ_LICENSE_FILES = License.txt
DOMOTICZ_CPE_ID_VENDOR = domoticz
+
+DOMOTICZ_LIBWEBEM_VERSION = 9126af0ce3456c24b936dfb20d1b5a8bdb797104
+DOMOTICZ_EXTRA_DOWNLOADS = \
+ $(call github,domoticz,libwebem,$(DOMOTICZ_LIBWEBEM_VERSION))/libwebem-$(DOMOTICZ_LIBWEBEM_VERSION).tar.gz
+
+define DOMOTICZ_INSTALL_SUBPROJECTS
+ rm -rf $(@D)/extern/libwebem
+ mkdir -p $(@D)/extern/libwebem
+ $(TAR) --strip-components=1 -C $(@D)/extern/libwebem \
+ -xf $(DOMOTICZ_DL_DIR)/libwebem-$(DOMOTICZ_LIBWEBEM_VERSION).tar.gz
+endef
+DOMOTICZ_POST_EXTRACT_HOOKS += DOMOTICZ_INSTALL_SUBPROJECTS
+
DOMOTICZ_DEPENDENCIES = \
boost \
cereal \
host-pkgconf \
jsoncpp \
+ jwt-cpp \
libcurl \
lua \
minizip-zlib \
@@ -25,6 +39,11 @@ DOMOTICZ_DEPENDENCIES = \
# Disable precompiled header as it needs cmake >= 3.16
DOMOTICZ_CONF_OPTS = -DUSE_PRECOMPILED_HEADER=OFF
+# Uses __atomic_load_8
+ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
+DOMOTICZ_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic
+endif
+
# Due to the dependency on mosquitto, domoticz depends on
# !BR2_STATIC_LIBS so set USE_STATIC_BOOST and USE_OPENSSL_STATIC to OFF
DOMOTICZ_CONF_OPTS += \
@@ -32,12 +51,12 @@ DOMOTICZ_CONF_OPTS += \
-DUSE_OPENSSL_STATIC=OFF
# Do not use any built-in libraries which are enabled by default for
-# jsoncpp, fmt, minizip, sqlite and mqtt
+# jsoncpp, jwt-cpp, minizip and sqlite
DOMOTICZ_CONF_OPTS += \
-DUSE_BUILTIN_JSONCPP=OFF \
+ -DUSE_BUILTIN_JWTCPP=OFF \
-DUSE_BUILTIN_MINIZIP=OFF \
- -DUSE_BUILTIN_SQLITE=OFF \
- -DUSE_BUILTIN_MQTT=OFF
+ -DUSE_BUILTIN_SQLITE=OFF
ifeq ($(BR2_PACKAGE_LIBEXECINFO),y)
DOMOTICZ_DEPENDENCIES += libexecinfo
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 05/66] package/libtorrent-rasterbar: bump version to 2.1.1
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (3 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 04/66] package/domoticz: bump version to 2026.3 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 06/66] package/boost: bump version to 1.92.0 Bernd Kuhls
` (60 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Philipp Richter
https://github.com/arvidn/libtorrent/blob/v2.1.1/ChangeLog
Switched to sha256 tarball hash provided by upstream.
Updated license hash due to copyright year bumps:
https://github.com/arvidn/libtorrent/commit/d3f7a363c2a413f4b3b4ddfd6cbe5a3208016b1c
https://github.com/arvidn/libtorrent/commit/fb2ab9946a130df7b5ee290ec363aa2214256e00
Added patch 0001 to fix a build error with gcc-9.3.0 detected by the
Gitlab pipelines which would be introduced by this bump.
Raised minimum gcc version to 8 to fix a build error detected by the
Gitlab pipelines which would be introduced by this bump:
/builds/bkuhls/buildroot/br-test-pkg/bootlin-aarch64-glibc-old/build/libtorrent-rasterbar-2.1.1/include/libtorrent/string_view.hpp:13:23:
fatal error: string_view: No such file or directory
Added dependency to BR2_USE_MMU to fix a build error detected by the
Gitlab pipelines which would be introduced by this bump:
/builds/bkuhls/buildroot/br-test-pkg/bootlin-armv7m-uclibc/build/libtorrent-rasterbar-2.1.1/src/mmap.cpp:283:19:
error: ‘::madvise’ has not been declared; did you mean ‘advise’?
Switched build system to cmake due to upstream removal of autotools:
https://github.com/arvidn/libtorrent/commit/d7db28663d3b6827c2fa8d5a44fad7c73828108a
Added new configure option webtorrent
https://github.com/arvidn/libtorrent/commit/4ef8be818fea440c921c39e5f90e5818a4749086
to disable the dependency to OpenSSL for libdatachannel:
https://github.com/paullouisageneau/libdatachannel/blob/a02b751917ac8afc8c58dc6f4461d25ff9465d48/CMakeLists.txt#L452
which was added to libtorrent-rasterbar in version 2.1.0:
https://github.com/arvidn/libtorrent/commit/8d7d82b0330f16297b21e77a5d7c355813687e16
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Philipp Richter <richterphilipp.pops@gmail.com>
---
.../0001-fix-more-c-17-that-made-it-in.patch | 53 +++++++++++++++++++
package/libtorrent-rasterbar/Config.in | 8 +--
.../libtorrent-rasterbar.hash | 5 +-
.../libtorrent-rasterbar.mk | 22 +++-----
4 files changed, 67 insertions(+), 21 deletions(-)
create mode 100644 package/libtorrent-rasterbar/0001-fix-more-c-17-that-made-it-in.patch
diff --git a/package/libtorrent-rasterbar/0001-fix-more-c-17-that-made-it-in.patch b/package/libtorrent-rasterbar/0001-fix-more-c-17-that-made-it-in.patch
new file mode 100644
index 0000000000..afce75b9ff
--- /dev/null
+++ b/package/libtorrent-rasterbar/0001-fix-more-c-17-that-made-it-in.patch
@@ -0,0 +1,53 @@
+From 2638789b7048e17aba7cc8674305f36bd349c795 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Mon, 14 Sep 2026 17:31:24 +0200
+Subject: [PATCH] fix more c++17 that made it in
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Patch was inspired by https://github.com/arvidn/libtorrent/pull/4805
+and fixes a build error with gcc-9.3.0
+
+buildroot/output/build/libtorrent-rasterbar-2.1.1/src/torrent_info.cpp:855:16:
+ error: function ‘libtorrent::torrent_info& libtorrent::torrent_info::operator=(libtorrent::torrent_info&&)’
+ defaulted on its redeclaration with an exception-specification that
+ differs from the implicit exception-specification ‘’
+
+Upstream: https://github.com/arvidn/libtorrent/pull/8869
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ include/libtorrent/torrent_info.hpp | 2 +-
+ src/torrent_info.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/libtorrent/torrent_info.hpp b/include/libtorrent/torrent_info.hpp
+index 8843179a2..add61c2d7 100644
+--- a/include/libtorrent/torrent_info.hpp
++++ b/include/libtorrent/torrent_info.hpp
+@@ -213,7 +213,7 @@ TORRENT_VERSION_NAMESPACE_4
+
+ // hidden
+ torrent_info& operator=(torrent_info const&) = delete;
+- torrent_info& operator=(torrent_info&&) noexcept;
++ torrent_info& operator=(torrent_info&&);
+
+ // The file_storage object contains the information on how to map the
+ // pieces to files. It is separated from the torrent_info object as the
+diff --git a/src/torrent_info.cpp b/src/torrent_info.cpp
+index 0a4b90b04..6fe584c39 100644
+--- a/src/torrent_info.cpp
++++ b/src/torrent_info.cpp
+@@ -856,7 +856,7 @@ namespace {
+ TORRENT_VERSION_NAMESPACE_4
+
+ torrent_info::torrent_info(torrent_info const&) = default;
+- torrent_info& torrent_info::operator=(torrent_info&&) noexcept = default;
++ torrent_info& torrent_info::operator=(torrent_info&&) = default;
+
+ #if TORRENT_ABI_VERSION < 4
+ void torrent_info::remap_files(file_storage const& f)
+--
+2.47.3
+
diff --git a/package/libtorrent-rasterbar/Config.in b/package/libtorrent-rasterbar/Config.in
index 459edc1be5..d78f9ac206 100644
--- a/package/libtorrent-rasterbar/Config.in
+++ b/package/libtorrent-rasterbar/Config.in
@@ -1,8 +1,9 @@
-comment "libtorrent-rasterbar needs a toolchain w/ C++, threads, wchar, gcc >= 4.9"
+comment "libtorrent-rasterbar needs a toolchain w/ C++, threads, wchar, gcc >= 8"
depends on BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735
+ depends on BR2_USE_MMU
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \
- !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+ !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_8
comment "libtorrent-rasterbar needs exception_ptr"
depends on BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK
@@ -11,9 +12,10 @@ comment "libtorrent-rasterbar needs exception_ptr"
config BR2_PACKAGE_LIBTORRENT_RASTERBAR
bool "libtorrent-rasterbar"
depends on BR2_INSTALL_LIBSTDCPP # boost
- depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # string_view
depends on BR2_TOOLCHAIN_HAS_THREADS # boost
depends on BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK
+ depends on BR2_USE_MMU # madvise()
depends on BR2_USE_WCHAR # boost
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr
select BR2_PACKAGE_BOOST
diff --git a/package/libtorrent-rasterbar/libtorrent-rasterbar.hash b/package/libtorrent-rasterbar/libtorrent-rasterbar.hash
index 6b6175d9de..19f11665e6 100644
--- a/package/libtorrent-rasterbar/libtorrent-rasterbar.hash
+++ b/package/libtorrent-rasterbar/libtorrent-rasterbar.hash
@@ -1,3 +1,4 @@
+# From https://github.com/arvidn/libtorrent/releases/tag/v2.1.1
+sha256 0f163516ecef2e3331500266751de3098835a3c3ae0c2290448046c632bc0e93 libtorrent-rasterbar-2.1.1.tar.gz
# Locally calculated
-sha256 ccbf8e8c21dc81635de95166b498922b4725f9725a23b2cfe2a6b2fead6fb9fc libtorrent-rasterbar-1.2.20.tar.gz
-sha256 f3a5dd1558cce616b12edad521427ec8976ce2bb0af33f7f359cfa648bf55ad8 COPYING
+sha256 f4b492afbde73d2f4e051050a619622876a13b77e7b8b6ea3ec2868a6929b31b COPYING
diff --git a/package/libtorrent-rasterbar/libtorrent-rasterbar.mk b/package/libtorrent-rasterbar/libtorrent-rasterbar.mk
index 2cc24c487a..d71907b1be 100644
--- a/package/libtorrent-rasterbar/libtorrent-rasterbar.mk
+++ b/package/libtorrent-rasterbar/libtorrent-rasterbar.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LIBTORRENT_RASTERBAR_VERSION = 1.2.20
+LIBTORRENT_RASTERBAR_VERSION = 2.1.1
LIBTORRENT_RASTERBAR_SITE = \
https://github.com/arvidn/libtorrent/releases/download/v$(LIBTORRENT_RASTERBAR_VERSION)
LIBTORRENT_RASTERBAR_LICENSE = BSD-3-Clause
@@ -13,10 +13,7 @@ LIBTORRENT_RASTERBAR_CPE_ID_VENDOR = libtorrent
LIBTORRENT_RASTERBAR_CPE_ID_PRODUCT = libtorrent
LIBTORRENT_RASTERBAR_DEPENDENCIES = host-pkgconf boost
LIBTORRENT_RASTERBAR_INSTALL_STAGING = YES
-LIBTORRENT_RASTERBAR_CONF_OPTS = \
- --with-boost-libdir=$(STAGING_DIR)/usr/lib \
- --disable-invariant-checks
-LIBTORRENT_RASTERBAR_CXXFLAGS = $(TARGET_CXXFLAGS) -std=c++11
+LIBTORRENT_RASTERBAR_CXXFLAGS = $(TARGET_CXXFLAGS)
# Internal error, aborting at dwarf2cfi.c:2802 in connect_traces
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58864
@@ -28,20 +25,13 @@ ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)
LIBTORRENT_RASTERBAR_CXXFLAGS += -O0
endif
-LIBTORRENT_RASTERBAR_CONF_OPTS += CXXFLAGS="$(LIBTORRENT_RASTERBAR_CXXFLAGS)"
-
-ifeq ($(BR2_ENABLE_LOCALE)$(BR2_PACKAGE_LIBICONV),y)
-LIBTORRENT_RASTERBAR_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv)
-LIBTORRENT_RASTERBAR_CONF_OPTS += --with-libiconv
-else
-LIBTORRENT_RASTERBAR_CONF_OPTS += --without-libiconv
-endif
+LIBTORRENT_RASTERBAR_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(LIBTORRENT_RASTERBAR_CXXFLAGS)"
ifeq ($(BR2_PACKAGE_OPENSSL),y)
LIBTORRENT_RASTERBAR_DEPENDENCIES += openssl
-LIBTORRENT_RASTERBAR_CONF_OPTS += --enable-encryption
+LIBTORRENT_RASTERBAR_CONF_OPTS += -Dencryption=ON -Dwebtorrent=ON
else
-LIBTORRENT_RASTERBAR_CONF_OPTS += --disable-encryption
+LIBTORRENT_RASTERBAR_CONF_OPTS += -Dencryption=OFF -Dwebtorrent=OFF
endif
-$(eval $(autotools-package))
+$(eval $(cmake-package))
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 06/66] package/boost: bump version to 1.92.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (4 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 05/66] package/libtorrent-rasterbar: bump version to 2.1.1 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 07/66] package/boost: add new charconv and cobalt library Bernd Kuhls
` (59 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
https://www.boost.org/releases/1.92.0/
https://www.boost.org/releases/1.91.0/
https://www.boost.org/releases/1.90.0/
https://www.boost.org/releases/1.89.0/
https://www.boost.org/releases/1.88.0/
https://www.boost.org/releases/1.87.0/
https://www.boost.org/releases/1.86.0/
https://www.boost.org/releases/1.85.0/
https://www.boost.org/releases/1.84.0/
Removed patch which is included in this release.
Added patch 0001 to fix a build error introduced by upstream commit
https://github.com/boostorg/process/commit/406cd3ecf36c19b94b4376241a4b3b43d1eae308
first included in version 1.85.0.
Added patches 0002-0005 to fix more build errors detected by the Gitlab
pipelines.
Updated supported archs according to
https://www.boost.org/doc/libs/1_92_0/libs/context/doc/html/context/architectures.html
sparc64 passed Gitlab pipeline:
https://gitlab.com/bkuhls/buildroot/-/jobs/16491117298
loongarch64 passed this defconfig:
BR2_loongarch64=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_PACKAGE_BOOST=y
BR2_PACKAGE_BOOST_CONTRACT=y
BR2_PACKAGE_BOOST_COROUTINE=y
BR2_PACKAGE_BOOST_DATE_TIME=y
BR2_PACKAGE_BOOST_EXCEPTION=y
BR2_PACKAGE_BOOST_FIBER=y
BR2_PACKAGE_BOOST_GRAPH=y
BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
BR2_PACKAGE_BOOST_IOSTREAMS=y
BR2_PACKAGE_BOOST_JSON=y
BR2_PACKAGE_BOOST_LOCALE=y
BR2_PACKAGE_BOOST_LOG=y
BR2_PACKAGE_BOOST_MATH=y
BR2_PACKAGE_BOOST_MPI=y
BR2_PACKAGE_BOOST_NOWIDE=y
BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
BR2_PACKAGE_BOOST_STACKTRACE=y
BR2_PACKAGE_BOOST_SYSTEM=y
BR2_PACKAGE_BOOST_TEST=y
BR2_PACKAGE_BOOST_TIMER=y
BR2_PACKAGE_BOOST_TYPE_ERASURE=y
BR2_PACKAGE_BOOST_URL=y
BR2_PACKAGE_BOOST_WAVE=y
Updated module dependencies according to the Boost Dependency Report:
https://pdimov.github.io/boostdep-report/boost-1.92.0/module-overview.html
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
...xit_code-guard-static_asserts-on-MIP.patch | 59 +++++++++++++++++
.../0001-unordered-fix-copy-assign.patch | 22 -------
...-for-duplicate-definition-of-SIGLOST.patch | 30 +++++++++
package/boost/0003-Fix-build.patch | 39 +++++++++++
package/boost/0004-Fix-build.patch | 40 ++++++++++++
package/boost/0005-Fix-build.patch | 64 +++++++++++++++++++
package/boost/Config.in | 12 ++--
package/boost/boost.hash | 4 +-
package/boost/boost.mk | 2 +-
9 files changed, 242 insertions(+), 30 deletions(-)
create mode 100644 package/boost/0001-fix-process-v2-exit_code-guard-static_asserts-on-MIP.patch
delete mode 100644 package/boost/0001-unordered-fix-copy-assign.patch
create mode 100644 package/boost/0002-Add-check-for-duplicate-definition-of-SIGLOST.patch
create mode 100644 package/boost/0003-Fix-build.patch
create mode 100644 package/boost/0004-Fix-build.patch
create mode 100644 package/boost/0005-Fix-build.patch
diff --git a/package/boost/0001-fix-process-v2-exit_code-guard-static_asserts-on-MIP.patch b/package/boost/0001-fix-process-v2-exit_code-guard-static_asserts-on-MIP.patch
new file mode 100644
index 0000000000..3f96580e4e
--- /dev/null
+++ b/package/boost/0001-fix-process-v2-exit_code-guard-static_asserts-on-MIP.patch
@@ -0,0 +1,59 @@
+From 670ad64ea1f012bc06ed4d657e6b8a4b530abd82 Mon Sep 17 00:00:00 2001
+From: WXbet <57314510+WXbet@users.noreply.github.com>
+Date: Sat, 1 Aug 2026 17:01:19 +0200
+Subject: [PATCH] fix: process/v2/exit_code: guard static_asserts on MIPS
+
+glibc 2.44 added sysdeps/unix/sysv/linux/mips/bits/waitstatus.h
+(commit c19cdbf66ff62a4578ac2117d43ebb306ae36aeb) which defines
+WIFSTOPPED and WIFSIGNALED as `static inline int` functions rather
+than macros so that MIPS's SIGRTMAX=127 special-case (status 0x7f)
+can be handled. Since those inline functions are not constexpr, the
+four static_assert lines guarding still_active fail to compile on
+MIPS with
+
+ error: non-constant condition for static assertion
+ error: call to non-'constexpr' function 'int __WIFSTOPPED(int)'
+
+whenever env.cpp (or any other TU pulling exit_code.hpp) is compiled.
+
+Earlier glibc versions used the generic macro-based header on MIPS
+too and Boost.Process compiled fine there. musl has taken the same
+approach for MIPS since 2018 (musl commit 41c632824c...); this is the
+same class of problem previously reported for is_running.hpp / musl
+in issue #48, which was fixed by the v1 rewrite but resurfaced in
+v2's exit_code.hpp.
+
+The asserts are compile-time sanity checks on Boost's own still_active
+constant (0x17f); the semantics on MIPS are unchanged (WIFSTOPPED
+returns true, the other three return false, as intended). Guard the
+block with `#ifndef __mips__` so the checks keep firing on every port
+where they can, and are skipped only on the one arch where glibc
+implements the underlying primitives as inline functions.
+
+Upstream: https://github.com/boostorg/process/pull/565
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ boost/process/v2/exit_code.hpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/boost/process/v2/exit_code.hpp b/boost/process/v2/exit_code.hpp
+index 24e51fa..b87c544 100644
+--- a/boost/process/v2/exit_code.hpp
++++ b/boost/process/v2/exit_code.hpp
+@@ -73,10 +73,12 @@ typedef int native_exit_code_type;
+ namespace detail
+ {
+ constexpr native_exit_code_type still_active = 0x17f;
++#ifndef __mips__
+ static_assert(WIFSTOPPED(still_active), "Expected still_active to indicate WIFSTOPPED");
+ static_assert(!WIFEXITED(still_active), "Expected still_active to not indicate WIFEXITED");
+ static_assert(!WIFSIGNALED(still_active), "Expected still_active to not indicate WIFSIGNALED");
+ static_assert(!WIFCONTINUED(still_active), "Expected still_active to not indicate WIFCONTINUED");
++#endif
+ }
+
+ inline bool process_is_running(int code)
+--
+2.47.3
+
diff --git a/package/boost/0001-unordered-fix-copy-assign.patch b/package/boost/0001-unordered-fix-copy-assign.patch
deleted file mode 100644
index 670552535a..0000000000
--- a/package/boost/0001-unordered-fix-copy-assign.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Upstream Patch for Unordered
-
-Prevent erroneous copying of groups data, update max load to properly propagate
-
-Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
-Upstream: https://github.com/boostorg/unordered/commit/067884a4e213352e7c81c441f1453c54735c39f3
-diff --git a/include/boost/unordered/detail/foa/core.hpp b/include/boost/unordered/detail/foa/core.hpp
-index 239d05d3..7ae9f2c8 100644
---- a/boost/unordered/detail/foa/core.hpp
-+++ b/boost/unordered/detail/foa/core.hpp
-@@ -1870,9 +1870,10 @@ private:
-
- void fast_copy_elements_from(const table_core& x)
- {
-- if(arrays.elements){
-+ if(arrays.elements&&x.arrays.elements){
- copy_elements_array_from(x);
- copy_groups_array_from(x);
-+ size_ctrl.ml=std::size_t(x.size_ctrl.ml);
- size_ctrl.size=std::size_t(x.size_ctrl.size);
- }
- }
diff --git a/package/boost/0002-Add-check-for-duplicate-definition-of-SIGLOST.patch b/package/boost/0002-Add-check-for-duplicate-definition-of-SIGLOST.patch
new file mode 100644
index 0000000000..56bb9cacb1
--- /dev/null
+++ b/package/boost/0002-Add-check-for-duplicate-definition-of-SIGLOST.patch
@@ -0,0 +1,30 @@
+From ea71ce1995ca861b1bbfacf01ed0d2e5fea50237 Mon Sep 17 00:00:00 2001
+From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+Date: Tue, 17 Feb 2026 09:35:57 +0100
+Subject: [PATCH] Add check for duplicate definition of SIGLOST
+
+Closes #545
+
+Upstream: https://github.com/boostorg/process/commit/ea71ce1995ca861b1bbfacf01ed0d2e5fea50237
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ libs/process/src/error.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libs/process/src/error.cpp b/libs/process/src/error.cpp
+index 3427072..0c93fb3 100644
+--- a/libs/process/src/error.cpp
++++ b/libs/process/src/error.cpp
+@@ -112,7 +112,7 @@ struct exit_code_category final : public error_category
+ # if defined(SIGKILL)
+ case SIGKILL: return "SIGKILL: Kill signal";
+ # endif
+-# if defined(SIGLOST)
++# if defined(SIGLOST) && SIGLOST != SIGPWR
+ case SIGLOST: return "SIGLOST: File lock lost (unused)";
+ # endif
+ # if defined(SIGPIPE)
+--
+2.47.3
+
diff --git a/package/boost/0003-Fix-build.patch b/package/boost/0003-Fix-build.patch
new file mode 100644
index 0000000000..10d81538f9
--- /dev/null
+++ b/package/boost/0003-Fix-build.patch
@@ -0,0 +1,39 @@
+From 22d487b7c02fab4e9633b8d9d3fada15c9ca70d0 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Sun, 13 Sep 2026 23:53:34 +0200
+Subject: [PATCH] Fix build
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In file included from ./boost/charconv/detail/fast_float/fast_float.hpp:11,
+ from output/build/boost-1.92.0/libs/charconv/build/../src/from_chars.cpp:16:
+./boost/charconv/detail/fast_float/float_common.hpp:349:20: error: conflicting declaration ‘constexpr const boost::uint64_t boost::charconv::detail::fast_float::binary_format_lookup_tables<double, U>::max_mantissa []’ [-Wtemplate-body]
+ 349 | constexpr uint64_t binary_format_lookup_tables<double, U>::max_mantissa[];
+
+./boost/charconv/detail/fast_float/float_common.hpp:318:34: note: previous declaration as ‘constexpr const uint64_t boost::charconv::detail::fast_float::binary_format_lookup_tables<double, U>::max_mantissa [24]’
+ 318 | static constexpr std::uint64_t max_mantissa[] = {
+
+Upstream: https://github.com/boostorg/charconv/pull/307
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ boost/charconv/detail/fast_float/float_common.hpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/boost/charconv/detail/fast_float/float_common.hpp b/boost/charconv/detail/fast_float/float_common.hpp
+index 0b9d3ae..627f97f 100644
+--- a/boost/charconv/detail/fast_float/float_common.hpp
++++ b/boost/charconv/detail/fast_float/float_common.hpp
+@@ -315,7 +315,7 @@ struct binary_format_lookup_tables<double, U> {
+
+ // Largest integer value v so that (5**index * v) <= 1<<53.
+ // 0x10000000000000 == 1 << 53
+- static constexpr std::uint64_t max_mantissa[] = {
++ static constexpr uint64_t max_mantissa[] = {
+ UINT64_C(0x10000000000000),
+ UINT64_C(0x10000000000000) / UINT64_C(5),
+ UINT64_C(0x10000000000000) / (UINT64_C(5) * UINT64_C(5)),
+--
+2.47.3
+
diff --git a/package/boost/0004-Fix-build.patch b/package/boost/0004-Fix-build.patch
new file mode 100644
index 0000000000..3c09d8bc5d
--- /dev/null
+++ b/package/boost/0004-Fix-build.patch
@@ -0,0 +1,40 @@
+From 3d5659f0a06b68864a2daed145c0897a4b18c893 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Mon, 14 Sep 2026 00:02:41 +0200
+Subject: [PATCH] Fix build
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In file included from ./boost/json/detail/charconv/detail/fast_float/fast_float.hpp:11,
+ from ./boost/json/detail/charconv/impl/from_chars.ipp:14,
+ from ./boost/json/src.hpp:59:
+./boost/json/detail/charconv/detail/fast_float/float_common.hpp:307:20: error: conflicting declaration ‘constexpr const boost::uint64_t boost::json::detail::charconv::detail::fast_float::binary_format_lookup_tables<double, U>::max_mantissa []’ [-Wtemplate-body]
+ 307 | constexpr uint64_t binary_format_lookup_tables<double, U>::max_mantissa[];
+
+./boost/json/detail/charconv/detail/fast_float/float_common.hpp:276:34: note: previous declaration as ‘constexpr const uint64_t boost::json::detail::charconv::detail::fast_float::binary_format_lookup_tables<double, U>::max_mantissa [24]’
+ 276 | static constexpr std::uint64_t max_mantissa[] = {
+
+Upstream: https://github.com/boostorg/json/pull/1197
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ boost/json/detail/charconv/detail/fast_float/float_common.hpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/boost/json/detail/charconv/detail/fast_float/float_common.hpp b/boost/json/detail/charconv/detail/fast_float/float_common.hpp
+index ef31140..a280095 100644
+--- a/boost/json/detail/charconv/detail/fast_float/float_common.hpp
++++ b/boost/json/detail/charconv/detail/fast_float/float_common.hpp
+@@ -273,7 +273,7 @@ struct binary_format_lookup_tables<double, U> {
+
+ // Largest integer value v so that (5**index * v) <= 1<<53.
+ // 0x10000000000000 == 1 << 53
+- static constexpr std::uint64_t max_mantissa[] = {
++ static constexpr uint64_t max_mantissa[] = {
+ UINT64_C(0x10000000000000),
+ UINT64_C(0x10000000000000) / UINT64_C(5),
+ UINT64_C(0x10000000000000) / (UINT64_C(5) * UINT64_C(5)),
+--
+2.47.3
+
diff --git a/package/boost/0005-Fix-build.patch b/package/boost/0005-Fix-build.patch
new file mode 100644
index 0000000000..0793283eb6
--- /dev/null
+++ b/package/boost/0005-Fix-build.patch
@@ -0,0 +1,64 @@
+From d51809b279440cd681f8adc4c03e954775fcdf50 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Mon, 14 Sep 2026 00:13:03 +0200
+Subject: [PATCH] Fix build
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In file included from ./boost/json/src.hpp:46,
+ from output/build/boost-1.92.0/libs/json/src/src.cpp:10:
+./boost/json/impl/value_stack.ipp:435:1: error: no declaration matches ‘void boost::json::value_stack::push_int64(boost::int64_t)’
+ 435 | value_stack::
+ | ^~~~~~~~~~~
+In file included from ./boost/json/detail/handler.hpp:18,
+ from ./boost/json/parser.hpp:17,
+ from ./boost/json.hpp:28,
+ from ./boost/json/src.hpp:27:
+./boost/json/value_stack.hpp:397:5: note: candidate is: ‘void boost::json::value_stack::push_int64(int64_t)’
+ 397 | push_int64(
+ | ^~~~~~~~~~
+./boost/json/value_stack.hpp:101:7: note: ‘class boost::json::value_stack’ defined here
+ 101 | class value_stack
+ | ^~~~~~~~~~~
+./boost/json/impl/value_stack.ipp:443:1: error: no declaration matches ‘void boost::json::value_stack::push_uint64(boost::uint64_t)’
+ 443 | value_stack::
+ | ^~~~~~~~~~~
+./boost/json/value_stack.hpp:411:5: note: candidate is: ‘void boost::json::value_stack::push_uint64(uint64_t)’
+ 411 | push_uint64(
+ | ^~~~~~~~~~~
+./boost/json/value_stack.hpp:101:7: note: ‘class boost::json::value_stack’ defined here
+ 101 | class value_stack
+
+Upstream: https://github.com/boostorg/json/pull/1197
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ boost/json/impl/value_stack.ipp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/boost/json/impl/value_stack.ipp b/boost/json/impl/value_stack.ipp
+index af1b107..4c3dbac 100644
+--- a/boost/json/impl/value_stack.ipp
++++ b/boost/json/impl/value_stack.ipp
+@@ -434,7 +434,7 @@ push_string(
+ void
+ value_stack::
+ push_int64(
+- int64_t i)
++ std::int64_t i)
+ {
+ st_.push(i, sp_);
+ }
+@@ -442,7 +442,7 @@ push_int64(
+ void
+ value_stack::
+ push_uint64(
+- uint64_t u)
++ std::uint64_t u)
+ {
+ st_.push(u, sp_);
+ }
+--
+2.47.3
+
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 7b78345798..da213dd2d3 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -41,9 +41,11 @@ config BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
default y if ((BR2_arm || BR2_armeb) && BR2_ARM_CPU_HAS_ARM)
default y if (BR2_aarch64 || BR2_aarch64_be)
default y if BR2_i386
+ default y if BR2_loongarch64
default y if BR2_mips
default y if BR2_mipsel
default y if BR2_powerpc
+ default y if BR2_sparc64
default y if BR2_x86_64
config BR2_PACKAGE_BOOST_CONTEXT
@@ -73,9 +75,7 @@ config BR2_PACKAGE_BOOST_COROUTINE
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-context
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context, boost-thread
- select BR2_PACKAGE_BOOST_CHRONO
select BR2_PACKAGE_BOOST_CONTEXT
- select BR2_PACKAGE_BOOST_THREAD
help
deprecated coroutine library, the non-deprecated coroutine2
library is a header-only library and does not need to be
@@ -154,6 +154,8 @@ config BR2_PACKAGE_BOOST_IOSTREAMS
bool "boost-iostreams"
select BR2_PACKAGE_BZIP2
select BR2_PACKAGE_ZLIB
+ select BR2_PACKAGE_BOOST_RANDOM
+ select BR2_PACKAGE_BOOST_REGEX
help
Boost.IOStreams provides a framework for defining streams,
stream buffers and i/o filters.
@@ -219,6 +221,7 @@ comment "boost-log needs a toolchain not affected by GCC bug 64735"
config BR2_PACKAGE_BOOST_MATH
bool "boost-math"
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14
+ select BR2_PACKAGE_BOOST_RANDOM
help
Boost.Math includes several contributions in the domain of
mathematics:
@@ -266,6 +269,7 @@ config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
config BR2_PACKAGE_BOOST_PYTHON
bool "boost-python"
depends on BR2_PACKAGE_PYTHON3
+ select BR2_PACKAGE_BOOST_GRAPH
help
The Boost Python Library is a framework for interfacing Python
and C++. It allows you to quickly and seamlessly expose C++
@@ -308,7 +312,6 @@ config BR2_PACKAGE_BOOST_SYSTEM
config BR2_PACKAGE_BOOST_TEST
bool "boost-test"
depends on BR2_USE_MMU # fork()
- select BR2_PACKAGE_BOOST_TIMER
help
Support for simple program testing, full unit testing, and for
program execution monitoring.
@@ -326,7 +329,6 @@ comment "boost-thread needs a toolchain not affected by GCC bug 64735"
config BR2_PACKAGE_BOOST_TIMER
bool "boost-timer"
- select BR2_PACKAGE_BOOST_CHRONO
help
Event timer, progress timer, and progress display classes.
@@ -362,7 +364,7 @@ config BR2_PACKAGE_BOOST_WAVE
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
select BR2_PACKAGE_BOOST_FILESYSTEM
- select BR2_PACKAGE_BOOST_THREAD
+ select BR2_PACKAGE_BOOST_SERIALIZATION
help
The Boost.Wave library is a Standards conformant, and highly
configurable implementation of the mandated C99/C++
diff --git a/package/boost/boost.hash b/package/boost/boost.hash
index 14403758ac..baf5fbd618 100644
--- a/package/boost/boost.hash
+++ b/package/boost/boost.hash
@@ -1,5 +1,5 @@
-# From https://www.boost.org/users/history/version_1_83_0.html
-sha256 6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e boost_1_83_0.tar.bz2
+# From https://www.boost.org/releases/1.92.0/
+sha256 5c1d40cb8e19adbf740a4ec2da35b3e58f3f5804b1dce44deb53df72193cbc6c boost_1_92_0.tar.bz2
# Locally computed
sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE_1_0.txt
diff --git a/package/boost/boost.mk b/package/boost/boost.mk
index 1dcc4a4b3a..ed63a608ac 100644
--- a/package/boost/boost.mk
+++ b/package/boost/boost.mk
@@ -4,7 +4,7 @@
#
################################################################################
-BOOST_VERSION = 1.83.0
+BOOST_VERSION = 1.92.0
BOOST_SOURCE = boost_$(subst .,_,$(BOOST_VERSION)).tar.bz2
BOOST_SITE = https://archives.boost.io/release/$(BOOST_VERSION)/source
BOOST_INSTALL_STAGING = YES
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 07/66] package/boost: add new charconv and cobalt library
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (5 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 06/66] package/boost: bump version to 1.92.0 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 08/66] package/boost: add switch for boost-process Bernd Kuhls
` (58 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 29 +++++++++++++++++++++++++++++
package/boost/boost.mk | 6 +++++-
2 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index da213dd2d3..45b98ec0a2 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -22,11 +22,40 @@ config BR2_PACKAGE_BOOST_ATOMIC
help
C++11-style atomic<>.
+config BR2_PACKAGE_BOOST_CHARCONV
+ bool "boost-charconv"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11
+ help
+ An Implementation of <charconv> in C++11.
+
+comment "boost-charconv needs a toolchain w/ C++11, gcc>=4.9"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
config BR2_PACKAGE_BOOST_CHRONO
bool "boost-chrono"
help
Useful time utilities. C++11.
+config BR2_PACKAGE_BOOST_COBALT
+ bool "boost-cobalt"
+ depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10 # C++20
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context
+ select BR2_PACKAGE_BOOST_CONTEXT
+ select BR2_PACKAGE_BOOST_CONTAINER
+ select BR2_PACKAGE_BOOST_DATE_TIME
+ select BR2_PACKAGE_BOOST_EXCEPTION
+ help
+ Basic algorithms and types for C++20 coroutines.
+
+comment "boost-cobalt needs a toolchain w/ C++20, gcc>=10"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_10
+
+comment "boost-cobalt needs a toolchain not affected by GCC bug 64735"
+ depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
+ depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
+
+
config BR2_PACKAGE_BOOST_CONTAINER
bool "boost-container"
help
diff --git a/package/boost/boost.mk b/package/boost/boost.mk
index ed63a608ac..87a576f277 100644
--- a/package/boost/boost.mk
+++ b/package/boost/boost.mk
@@ -40,7 +40,9 @@ endif
HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \
--without-libraries=$(subst $(space),$(comma),\
atomic \
+ charconv \
chrono \
+ cobalt \
container \
context \
contract \
@@ -68,7 +70,7 @@ HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \
timer \
type_erasure \
url \
- wave\
+ wave \
)
HOST_BOOST_OPTS += toolset=gcc threading=multi \
@@ -120,7 +122,9 @@ BOOST_DEPENDENCIES += $(if $(BR2_ENABLE_LOCALE),,libiconv)
endif
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_ATOMIC),,atomic)
+BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHARCONV),,charconv)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono)
+BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_COBALT),,cobalt)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTAINER),,container)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTEXT),,context)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTRACT),,contract)
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 08/66] package/boost: add switch for boost-process
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (6 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 07/66] package/boost: add new charconv and cobalt library Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 09/66] package/boost: program_options needs container Bernd Kuhls
` (57 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
since boost 1.86 this is a buildable module.
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 22 ++++++++++++++++++++++
package/boost/boost.mk | 2 ++
2 files changed, 24 insertions(+)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 45b98ec0a2..736255a33c 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -287,6 +287,28 @@ config BR2_PACKAGE_BOOST_NOWIDE
help
Library for cross-platform, unicode aware programming.
+config BR2_PACKAGE_BOOST_PROCESS
+ bool "boost-process"
+ depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-context
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem
+ select BR2_PACKAGE_BOOST_CONTAINER
+ select BR2_PACKAGE_BOOST_CONTEXT
+ select BR2_PACKAGE_BOOST_DATE_TIME
+ select BR2_PACKAGE_BOOST_FILESYSTEM
+ help
+ Library to create processes in a portable way.
+
+comment "boost-process needs a toolchain w/ C++11, gcc>=4.8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
+comment "boost-process needs a toolchain not affected by GCC bug 64735"
+ depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-context
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem
+ depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
+
config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
bool "boost-program_options"
help
diff --git a/package/boost/boost.mk b/package/boost/boost.mk
index 87a576f277..37ec918aef 100644
--- a/package/boost/boost.mk
+++ b/package/boost/boost.mk
@@ -60,6 +60,7 @@ HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \
math \
mpi \
nowide \
+ process \
program_options \
python \
random \
@@ -142,6 +143,7 @@ BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOG),,log)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MATH),,math)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MPI),,mpi)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_NOWIDE),,nowide)
+BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PROCESS),,process)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PROGRAM_OPTIONS),,program_options)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PYTHON),,python)
BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_RANDOM),,random)
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 09/66] package/boost: program_options needs container
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (7 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 08/66] package/boost: add switch for boost-process Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 10/66] package/boost: thread needs more dependencies Bernd Kuhls
` (56 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 736255a33c..406a5b4d6c 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -311,6 +311,7 @@ comment "boost-process needs a toolchain not affected by GCC bug 64735"
config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
bool "boost-program_options"
+ select BR2_PACKAGE_BOOST_CONTAINER
help
The program_options library allows program developers to
obtain program options, that is (name, value) pairs from the
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 10/66] package/boost: thread needs more dependencies
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (8 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 09/66] package/boost: program_options needs container Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 11/66] package/boost: contract needs thread Bernd Kuhls
` (55 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 406a5b4d6c..70e99aef11 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -370,13 +370,18 @@ config BR2_PACKAGE_BOOST_TEST
config BR2_PACKAGE_BOOST_THREAD
bool "boost-thread"
- depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::current_exception
+ select BR2_PACKAGE_BOOST_ATOMIC
select BR2_PACKAGE_BOOST_CHRONO
+ select BR2_PACKAGE_BOOST_CONTAINER
+ select BR2_PACKAGE_BOOST_DATE_TIME
+ select BR2_PACKAGE_BOOST_EXCEPTION
help
Portable C++ multi-threading. C++11, C++14.
comment "boost-thread needs a toolchain not affected by GCC bug 64735"
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
config BR2_PACKAGE_BOOST_TIMER
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 11/66] package/boost: contract needs thread
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (9 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 10/66] package/boost: thread needs more dependencies Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 12/66] package/boost: fix coroutine dependencies Bernd Kuhls
` (54 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 70e99aef11..929a9c3869 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -90,8 +90,9 @@ comment "boost-context needs a toolchain w/ C++11, gcc>=4.8"
config BR2_PACKAGE_BOOST_CONTRACT
bool "boost-contract"
- # pthread_condattr_setclock
- depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
+ depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_condattr_setclock
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread -> atomic
+ select BR2_PACKAGE_BOOST_THREAD
help
Contract programming for C++.
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 12/66] package/boost: fix coroutine dependencies
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (10 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 11/66] package/boost: contract needs thread Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 13/66] package/boost: fiber needs exception Bernd Kuhls
` (53 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 929a9c3869..f22f263538 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -102,21 +102,21 @@ comment "boost-contract needs a toolchain w/ NPTL"
config BR2_PACKAGE_BOOST_COROUTINE
bool "boost-coroutine"
depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
- depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-context
- depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context, boost-thread
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context
select BR2_PACKAGE_BOOST_CONTEXT
+ select BR2_PACKAGE_BOOST_EXCEPTION
help
deprecated coroutine library, the non-deprecated coroutine2
library is a header-only library and does not need to be
selected.
comment "boost-coroutine needs a toolchain w/ C++11, gcc>=4.8"
+ depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
comment "boost-coroutine needs a toolchain not affected by GCC bug 64735"
depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
- depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
config BR2_PACKAGE_BOOST_DATE_TIME
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 13/66] package/boost: fiber needs exception
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (11 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 12/66] package/boost: fix coroutine dependencies Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 14/66] package/boost: update graph dependencies Bernd Kuhls
` (52 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index f22f263538..362cd6c95c 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -147,6 +147,7 @@ config BR2_PACKAGE_BOOST_FIBER
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
select BR2_PACKAGE_BOOST_CONTEXT
select BR2_PACKAGE_BOOST_FILESYSTEM
+ select BR2_PACKAGE_BOOST_EXCEPTION
help
C++11 userland threads library.
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 14/66] package/boost: update graph dependencies
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (12 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 13/66] package/boost: fiber needs exception Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 15/66] package/boost: math needs container Bernd Kuhls
` (51 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
needs match, serialization and thread
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 362cd6c95c..63c50d9835 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -170,7 +170,12 @@ config BR2_PACKAGE_BOOST_FILESYSTEM
config BR2_PACKAGE_BOOST_GRAPH
bool "boost-graph"
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
+ select BR2_PACKAGE_BOOST_MATH
select BR2_PACKAGE_BOOST_REGEX
+ select BR2_PACKAGE_BOOST_SERIALIZATION
+ select BR2_PACKAGE_BOOST_THREAD
help
The BGL graph interface and graph components are generic, in
the same sense as the the Standard Template Library (STL).
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 15/66] package/boost: math needs container
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (13 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 14/66] package/boost: update graph dependencies Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 16/66] package/boost: log needs serialization Bernd Kuhls
` (50 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 63c50d9835..e88f497f6a 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -257,6 +257,7 @@ comment "boost-log needs a toolchain not affected by GCC bug 64735"
config BR2_PACKAGE_BOOST_MATH
bool "boost-math"
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14
+ select BR2_PACKAGE_BOOST_CONTAINER
select BR2_PACKAGE_BOOST_RANDOM
help
Boost.Math includes several contributions in the domain of
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 16/66] package/boost: log needs serialization
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (14 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 15/66] package/boost: math needs container Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 17/66] package/boost: test needs exception Bernd Kuhls
` (49 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index e88f497f6a..5ab351d8e4 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -243,6 +243,7 @@ config BR2_PACKAGE_BOOST_LOG
select BR2_PACKAGE_BOOST_ATOMIC
select BR2_PACKAGE_BOOST_FILESYSTEM
select BR2_PACKAGE_BOOST_REGEX
+ select BR2_PACKAGE_BOOST_SERIALIZATION
select BR2_PACKAGE_BOOST_THREAD
help
Logging library.
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 17/66] package/boost: test needs exception
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (15 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 16/66] package/boost: log needs serialization Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 18/66] package/boost: wave needs thread Bernd Kuhls
` (48 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 5ab351d8e4..0f52bbd475 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -373,6 +373,7 @@ config BR2_PACKAGE_BOOST_SYSTEM
config BR2_PACKAGE_BOOST_TEST
bool "boost-test"
depends on BR2_USE_MMU # fork()
+ select BR2_PACKAGE_BOOST_EXCEPTION
help
Support for simple program testing, full unit testing, and for
program execution monitoring.
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 18/66] package/boost: wave needs thread
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (16 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 17/66] package/boost: test needs exception Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 19/66] package/boost: update locale dependencies Bernd Kuhls
` (47 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 0f52bbd475..d4626bf79a 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -432,6 +432,7 @@ config BR2_PACKAGE_BOOST_WAVE
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
select BR2_PACKAGE_BOOST_FILESYSTEM
select BR2_PACKAGE_BOOST_SERIALIZATION
+ select BR2_PACKAGE_BOOST_THREAD
help
The Boost.Wave library is a Standards conformant, and highly
configurable implementation of the mandated C99/C++
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 19/66] package/boost: update locale dependencies
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (17 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 18/66] package/boost: wave needs thread Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 20/66] package/boost: update C++ version dependencies Bernd Kuhls
` (46 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
- now always need thread
- charconv
this changed in boost 1.88.
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index d4626bf79a..93ba15df50 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -217,10 +217,11 @@ config BR2_PACKAGE_BOOST_LOCALE
# https://svn.boost.org/trac/boost/ticket/9685 for more
# details.
depends on !(BR2_STATIC_LIBS && BR2_PACKAGE_ICU)
- depends on !(BR2_TOOLCHAIN_HAS_GCC_BUG_64735 && BR2_PACKAGE_ICU) # boost-thread
- depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \
- || !BR2_PACKAGE_ICU # boost-thread
- select BR2_PACKAGE_BOOST_THREAD if BR2_PACKAGE_ICU
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # charconv
+ select BR2_PACKAGE_BOOST_CHARCONV
+ select BR2_PACKAGE_BOOST_THREAD
select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
help
Provide localization and Unicode handling tools for C++.
@@ -232,7 +233,6 @@ comment "boost-locale needs a toolchain w/ dynamic library"
comment "boost-locale needs a toolchain not affected by GCC bug 64735"
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
- depends on BR2_PACKAGE_ICU
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
config BR2_PACKAGE_BOOST_LOG
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 20/66] package/boost: update C++ version dependencies
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (18 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 19/66] package/boost: update locale dependencies Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 21/66] package/boost: system: update description Bernd Kuhls
` (45 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
1.84: Atomic, Chrono, Filesystem, Log, Random, Stacktrace, Test and
Thread require C++11
1.85: Boost.System requires C++11
1.86: Boost.Graph requires C++14
1.88: Boost.JSON dropped support for GCC versions older than 5
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 90 +++++++++++++++++++++++++++++-
package/log4cxx/Config.in | 5 ++
package/python-libconfig/Config.in | 5 +-
package/resiprocate/Config.in | 4 ++
package/zmqpp/Config.in | 5 +-
5 files changed, 103 insertions(+), 6 deletions(-)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 93ba15df50..dede9b946e 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -19,9 +19,13 @@ if BR2_PACKAGE_BOOST
config BR2_PACKAGE_BOOST_ATOMIC
bool "boost-atomic"
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
help
C++11-style atomic<>.
+comment "boost-atomic needs a toolchain w/ C++11, gcc>=4.8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
config BR2_PACKAGE_BOOST_CHARCONV
bool "boost-charconv"
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11
@@ -33,9 +37,13 @@ comment "boost-charconv needs a toolchain w/ C++11, gcc>=4.9"
config BR2_PACKAGE_BOOST_CHRONO
bool "boost-chrono"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
help
Useful time utilities. C++11.
+comment "boost-chrono needs a toolchain w/ C++11, gcc>=4.8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
config BR2_PACKAGE_BOOST_COBALT
bool "boost-cobalt"
depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
@@ -55,7 +63,6 @@ comment "boost-cobalt needs a toolchain not affected by GCC bug 64735"
depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
-
config BR2_PACKAGE_BOOST_CONTAINER
bool "boost-container"
help
@@ -92,6 +99,7 @@ config BR2_PACKAGE_BOOST_CONTRACT
bool "boost-contract"
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_condattr_setclock
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread -> atomic
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-thread
select BR2_PACKAGE_BOOST_THREAD
help
Contract programming for C++.
@@ -99,6 +107,11 @@ config BR2_PACKAGE_BOOST_CONTRACT
comment "boost-contract needs a toolchain w/ NPTL"
depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL
+comment "boost-contract needs a toolchain w/ C++11, gcc>=4.8"
+ depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
config BR2_PACKAGE_BOOST_COROUTINE
bool "boost-coroutine"
depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
@@ -163,15 +176,20 @@ comment "boost-fiber needs a toolchain not affected by GCC bug 64735"
config BR2_PACKAGE_BOOST_FILESYSTEM
bool "boost-filesystem"
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
select BR2_PACKAGE_BOOST_ATOMIC
help
The Boost Filesystem Library provides portable facilities to
query and manipulate paths, files, and directories.
+comment "boost-filesystem needs a toolchain w/ C++11, gcc>=4.8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
config BR2_PACKAGE_BOOST_GRAPH
bool "boost-graph"
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14
select BR2_PACKAGE_BOOST_MATH
select BR2_PACKAGE_BOOST_REGEX
select BR2_PACKAGE_BOOST_SERIALIZATION
@@ -180,14 +198,22 @@ config BR2_PACKAGE_BOOST_GRAPH
The BGL graph interface and graph components are generic, in
the same sense as the the Standard Template Library (STL).
+comment "boost-graph needs a toolchain w/ C++14, gcc>=5.0"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5
+
config BR2_PACKAGE_BOOST_GRAPH_PARALLEL
bool "boost-graph_parallel"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # boost-graph
help
The PBGL graph interface and graph components are generic, in
the same sense as the the Standard Template Library (STL).
+comment "boost-graph_parallel needs a toolchain w/ C++14, gcc>=5.0"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5
+
config BR2_PACKAGE_BOOST_IOSTREAMS
bool "boost-iostreams"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-random
select BR2_PACKAGE_BZIP2
select BR2_PACKAGE_ZLIB
select BR2_PACKAGE_BOOST_RANDOM
@@ -196,8 +222,12 @@ config BR2_PACKAGE_BOOST_IOSTREAMS
Boost.IOStreams provides a framework for defining streams,
stream buffers and i/o filters.
+comment "boost-iostreams needs a toolchain w/ C++11, gcc>=4.8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
config BR2_PACKAGE_BOOST_JSON
bool "boost-json"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++11
select BR2_PACKAGE_BOOST_CONTAINER
help
Boost.JSON is a portable C++ library which provides containers
@@ -206,6 +236,9 @@ config BR2_PACKAGE_BOOST_JSON
To use the library "header-only" this option is not needed.
+comment "boost-json needs a toolchain w/ C++11, gcc>=5.0"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5
+
config BR2_PACKAGE_BOOST_LOCALE
bool "boost-locale"
# When boost-locale is enabled with icu support, Boost no
@@ -231,6 +264,9 @@ comment "boost-locale needs a toolchain w/ dynamic library"
depends on BR2_PACKAGE_ICU
depends on BR2_STATIC_LIBS
+comment "boost-locale needs a toolchain w/ C++11, gcc>=4.8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
comment "boost-locale needs a toolchain not affected by GCC bug 64735"
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
@@ -240,6 +276,7 @@ config BR2_PACKAGE_BOOST_LOG
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
select BR2_PACKAGE_BOOST_ATOMIC
select BR2_PACKAGE_BOOST_FILESYSTEM
select BR2_PACKAGE_BOOST_REGEX
@@ -252,6 +289,11 @@ comment "boost-log needs a toolchain w/ NPTL"
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL
+comment "boost-log needs a toolchain w/ C++11, gcc>=4.8"
+ depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
comment "boost-log needs a toolchain not affected by GCC bug 64735"
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
@@ -304,7 +346,7 @@ config BR2_PACKAGE_BOOST_PROCESS
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem
select BR2_PACKAGE_BOOST_CONTAINER
select BR2_PACKAGE_BOOST_CONTEXT
- select BR2_PACKAGE_BOOST_DATE_TIME
+ select BR2_PACKAGE_BOOST_DATE_TIME
select BR2_PACKAGE_BOOST_FILESYSTEM
help
Library to create processes in a portable way.
@@ -330,6 +372,7 @@ config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
config BR2_PACKAGE_BOOST_PYTHON
bool "boost-python"
depends on BR2_PACKAGE_PYTHON3
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # boost-graph
select BR2_PACKAGE_BOOST_GRAPH
help
The Boost Python Library is a framework for interfacing Python
@@ -337,11 +380,19 @@ config BR2_PACKAGE_BOOST_PYTHON
classes functions and objects to Python, and vice-versa,
using no special tools -- just your C++ compiler.
+comment "boost-python needs a toolchain w/ C++14, gcc>=5.0"
+ depends on BR2_PACKAGE_PYTHON3
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5
+
config BR2_PACKAGE_BOOST_RANDOM
bool "boost-random"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
help
A complete system for random number generation.
+comment "boost-random needs a toolchain w/ C++11, gcc>=4.8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
config BR2_PACKAGE_BOOST_REGEX
bool "boost-regex"
help
@@ -356,32 +407,47 @@ config BR2_PACKAGE_BOOST_SERIALIZATION
config BR2_PACKAGE_BOOST_STACKTRACE
bool "boost-stacktrace"
depends on !BR2_STATIC_LIBS
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
help
Gather, store, copy and print backtraces.
comment "boost-stacktrace needs a toolchain w/ dynamic library"
depends on BR2_STATIC_LIBS
+comment "boost-stacktrace needs a toolchain w/ C++11, gcc>=4.8"
+ depends on !BR2_STATIC_LIBS
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
config BR2_PACKAGE_BOOST_SYSTEM
bool "boost-system"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
help
Extensible Error Reporting.
This library is now header only. Building a stub library
is still supported for backward compatibility.
+comment "boost-system needs a toolchain w/ C++11, gcc>=4.8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
config BR2_PACKAGE_BOOST_TEST
bool "boost-test"
depends on BR2_USE_MMU # fork()
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
select BR2_PACKAGE_BOOST_EXCEPTION
help
Support for simple program testing, full unit testing, and for
program execution monitoring.
+comment "boost-test needs a toolchain w/ C++11, gcc>=4.8"
+ depends on BR2_USE_MMU
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
config BR2_PACKAGE_BOOST_THREAD
bool "boost-thread"
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::current_exception
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
select BR2_PACKAGE_BOOST_ATOMIC
select BR2_PACKAGE_BOOST_CHRONO
select BR2_PACKAGE_BOOST_CONTAINER
@@ -390,6 +456,11 @@ config BR2_PACKAGE_BOOST_THREAD
help
Portable C++ multi-threading. C++11, C++14.
+comment "boost-thread needs a toolchain w/ C++11, gcc>=4.8"
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::current_exception
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
comment "boost-thread needs a toolchain not affected by GCC bug 64735"
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
@@ -403,10 +474,16 @@ config BR2_PACKAGE_BOOST_TYPE_ERASURE
bool "boost-type_erasure"
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-thread
select BR2_PACKAGE_BOOST_THREAD
help
Runtime polymorphism based on concepts.
+comment "boost-type_erasure needs a toolchain w/ C++11, gcc>=4.8"
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
comment "boost-type_erasure needs a toolchain not affected by GCC bug 64735"
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
@@ -430,6 +507,7 @@ config BR2_PACKAGE_BOOST_WAVE
depends on !BR2_m68k_cf
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-filesystem
select BR2_PACKAGE_BOOST_FILESYSTEM
select BR2_PACKAGE_BOOST_SERIALIZATION
select BR2_PACKAGE_BOOST_THREAD
@@ -439,7 +517,15 @@ config BR2_PACKAGE_BOOST_WAVE
preprocessor functionality packed behind an easy to use
iterator interface.
+comment "boost-wave needs a toolchain w/ C++11, gcc>=4.8"
+ depends on !BR2_m68k_cf
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
comment "boost-wave needs a toolchain not affected by GCC bug 64735"
+ depends on !BR2_m68k_cf
+ depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
endif
diff --git a/package/log4cxx/Config.in b/package/log4cxx/Config.in
index 8305217a48..4eddc1a227 100644
--- a/package/log4cxx/Config.in
+++ b/package/log4cxx/Config.in
@@ -7,6 +7,7 @@ config BR2_PACKAGE_LOG4CXX
depends on BR2_USE_WCHAR # mbsinit
depends on BR2_USE_MMU # apr
depends on BR2_USE_WCHAR || BR2_TOOLCHAIN_GCC_AT_LEAST_7 # boost
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS || BR2_TOOLCHAIN_GCC_AT_LEAST_7 # boost-thread
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 || BR2_TOOLCHAIN_GCC_AT_LEAST_7 # boost-thread
select BR2_PACKAGE_APR
@@ -30,6 +31,10 @@ comment "log4cxx needs a toolchain w/ wchar or gcc >= 7"
depends on !(BR2_USE_WCHAR || BR2_TOOLCHAIN_GCC_AT_LEAST_7)
depends on BR2_USE_MMU
+comment "log4cxx needs a toolchain w/ gcc >= 4.8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+ depends on BR2_USE_MMU
+
comment "log4cxx needs a toolchain not affected by GCC bug 64735"
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
diff --git a/package/python-libconfig/Config.in b/package/python-libconfig/Config.in
index 00688719ee..f0d56602ac 100644
--- a/package/python-libconfig/Config.in
+++ b/package/python-libconfig/Config.in
@@ -1,6 +1,6 @@
-comment "python-libconfig needs a glibc or uClibc toolchain w/ C++, threads"
+comment "python-libconfig needs a glibc or uClibc toolchain w/ C++, threads, gcc>=5.0"
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \
- BR2_TOOLCHAIN_USES_MUSL
+ BR2_TOOLCHAIN_USES_MUSL || !BR2_TOOLCHAIN_GCC_AT_LEAST_5
config BR2_PACKAGE_PYTHON_LIBCONFIG
bool "python-libconfig"
@@ -8,6 +8,7 @@ config BR2_PACKAGE_PYTHON_LIBCONFIG
depends on BR2_TOOLCHAIN_HAS_THREADS
# error: invalid use of incomplete type 'struct _IO_FILE'
depends on !BR2_TOOLCHAIN_USES_MUSL
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # boost-python -> boost-graph
select BR2_PACKAGE_BOOST
select BR2_PACKAGE_BOOST_PYTHON
select BR2_PACKAGE_LIBCONFIG
diff --git a/package/resiprocate/Config.in b/package/resiprocate/Config.in
index ba68ad8e59..584f8d9e86 100644
--- a/package/resiprocate/Config.in
+++ b/package/resiprocate/Config.in
@@ -32,6 +32,7 @@ config BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT
config BR2_PACKAGE_RESIPROCATE_REND
bool "resiprocate-rend"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-system
select BR2_PACKAGE_BOOST
select BR2_PACKAGE_BOOST_SYSTEM
select BR2_PACKAGE_OPENSSL
@@ -40,4 +41,7 @@ config BR2_PACKAGE_RESIPROCATE_REND
Rend is tool that is was created specifically to load test
gtSIP based presence servers.
+comment "resiprocate-rend needs a toolchain w/ C++11, gcc>=4.8"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
endif # BR2_PACKAGE_RESIPROCATE
diff --git a/package/zmqpp/Config.in b/package/zmqpp/Config.in
index 8c08b9d862..a913e71b89 100644
--- a/package/zmqpp/Config.in
+++ b/package/zmqpp/Config.in
@@ -21,15 +21,16 @@ config BR2_PACKAGE_ZMQPP_CLIENT
depends on !BR2_STATIC_LIBS
depends on BR2_TOOLCHAIN_HAS_THREADS # boost
depends on BR2_USE_WCHAR # boost
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost
select BR2_PACKAGE_BOOST
select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
help
Build and install the zmqpp client, a command line tool that
can be used to listen or send to zeromq sockets.
-comment "zmqpp client needs a toolchain w/ dynamic library, threads, wchar"
+comment "zmqpp client needs a toolchain w/ dynamic library, threads, wchar, gcc>=4.8"
depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \
- || !BR2_USE_WCHAR
+ || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
endif
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 21/66] package/boost: system: update description
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (19 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 20/66] package/boost: update C++ version dependencies Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 22/66] package/dovecot{-pigeonhole}: security bump version to 2.4.5 Bernd Kuhls
` (44 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Simon Dawson, Thomas Petazzoni
From: Michael Nosthoff <buildroot@heine.tech>
After removing the stub library in 1.89 a CMake config
was added in 1.91 to not break 3rd party packages requiring.
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Johan Derycke <johanderycke@gmail.com>
Cc: Michael Nosthoff <buildroot@heine.tech>
Cc: Simon Dawson <spdawson@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/boost/Config.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package/boost/Config.in b/package/boost/Config.in
index dede9b946e..5eadbff2d3 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -424,8 +424,8 @@ config BR2_PACKAGE_BOOST_SYSTEM
help
Extensible Error Reporting.
- This library is now header only. Building a stub library
- is still supported for backward compatibility.
+ This library is header only. Enabling this option will
+ install a CMake config file for backward compatibility.
comment "boost-system needs a toolchain w/ C++11, gcc>=4.8"
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 22/66] package/dovecot{-pigeonhole}: security bump version to 2.4.5
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (20 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 21/66] package/boost: system: update description Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-10-03 13:14 ` Thomas Petazzoni via buildroot
2026-09-29 18:35 ` [Buildroot] [PATCH v7 23/66] package/nmap: bump version to 7.991 Bernd Kuhls
` (43 subsequent siblings)
65 siblings, 1 reply; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
2.4.0:
https://dovecot.org/mailman3/archives/list/dovecot-news@dovecot.org/thread/UYNR6GBP25XEGFCS633SWPR4HXV3NSS3/
"Pigeonhole versioning has been changed to match Dovecot versioning."
"New 2.4 packages are not compatible with old 2.3 configuration, please
carefully review https://doc.dovecot.org/2.4.0/installation/upgrade/2.3-to-2.4.html
before installing the new packages."
2.4.1:
https://dovecot.org/mailman3/archives/list/dovecot-news@dovecot.org/thread/XPT6TA7Y4B4QZZQ2XUE46Z35BDR2X2AA/
2.4.2:
https://dovecot.org/mailman3/archives/list/dovecot-news@dovecot.org/thread/XTMMPVQ3QKQMYDZ3CZZCXPNHN7OXKS3L/
Fixes CVE-2025-30189:
https://dovecot.org/mailman3/archives/list/dovecot-news@dovecot.org/thread/G3K5HMBKW6XOYNBXYV5GUM2GR6WPUD4M/
2.4.3:
https://dovecot.org/mailman3/archives/list/dovecot-news@dovecot.org/thread/IKIHZX77IPTGSP5WBIPJUOFBUQFKVPE7/
Fixes various CVEs:
https://dovecot.org/mailman3/archives/list/dovecot-news@dovecot.org/thread/I4KFFV4IKP6M5MS67SWYHKDSDMSNILQG/
* CVE-2025-59028: Invalid base64 authentication can cause DoS for other
logins.
* CVE-2025-59031: decode2text.sh OOXML extraction may follow symlinks
and read unintended files during indexing. Fixed by dropping the script.
* CVE-2026-24031: SQL injection possible if auth_username_chars is
configured empty. Fixed escaping to always happen. v2.4 regression.
* CVE-2026-27859: Excessive RFC 2231 MIME parameters in email would cause
excessive CPU usage. Fixed by limiting number of parameters to process.
* CVE-2026-27860: LDAP query injection possible if auth_username_chars
is configured empty. Fixed escaping to always happen. v2.4 regression.
* CVE-2026-27857: Sending excessive parenthesis causes imap-login to use
excessive memory.
* CVE-2026-27856: Doveadm credentials were not checked using timing-safe
checking function.
* CVE-2026-27855: OTP driver vulnerable to replay attack.
* CVE-2026-27858: managesieve-login can allocate large amount of memory
during authentication.
* CVE-2025-59032: ManageSieve panic occurs with sieve-connect as a client.
2.4.4:
https://dovecot.org/mailman3/archives/list/dovecot-news@dovecot.org/thread/YW7GVOH3VVLNAYW2C4TEBTGJW52J7F6H/
Fixes various CVEs:
https://dovecot.org/mailman3/archives/list/dovecot-news@dovecot.org/thread/YQYBB3NJPNFFJ4SHDU7PLXLRRGHBJKSK/
* CVE-2026-27851: lib-var-expand: Safe filter marks all following pipelines safe.
* CVE-2026-33603: auth: CRAM-SHA-*-PLUS channel binding could be faked.
MITM attacker with a certificate trusted by the client could have
bypassed the requirement for channel binding.
* CVE-2026-40020: IMAP folders can be shared-spammed to everyone.
* CVE-2026-42006: An attacker can cause uncontrolled memory usage with
excessive bracing over IMAP. The fix in CVE-2026-27857 was incomplete.
* CVE-2026-40016: sieve :contains and :matches operators could have been
using excessive amount of CPU. Limit the CPU to sieve_max_cpu_time.
2.4.5:
https://dovecot.org/mailman3/archives/list/dovecot-news@dovecot.org/thread/D7FJQODYCY23BG3FWUZXCJRCLCPT7RZT/
Fixes various CVEs:
https://dovecot.org/mailman3/archives/list/dovecot-news@dovecot.org/thread/WT4USR35HN43TGQGVDXPDAMCUTGLVMET/
* CVE-2026-27852: Messages with a huge number of From/To/Cc/etc email addresses
could result in excessive memory usage.
* CVE-2026-33263: Submission: Login service crashes with panic once
mail_max_userip_connections limit is reached.
* CVE-2026-33604: The SMTP outbound dot-stuffing mechanism does not properly
escape dots following a bare \r in message bodies, potentially allowing
spoofed emails via malicious end-of-DATA injection.
* CVE-2026-33606: Mail content stored by a user can be crafted so that it is
interpreted as dsync protocol commands when an administrator later runs dsync
with the stream protocol, for example during a migration.
* CVE-2026-33607: IMAP LIST command could be used to cause excessive CPU usage.
* CVE-2026-40014: IMAP THREAD command could have used excessive amount of CPU
processing a single email with a massive number of Message-IDs in References
header.
* CVE-2026-40015: Invalid IMAP command sent to imap-hibernate process might
crash it.
* CVE-2026-40017: IMAP THREAD command could have used excessive amount of CPU
processing emails with a large number of specially crafted Message-IDs in
References header. The fix requires a new dovecot.index.thread file format,
which is enabled only after setting dovecot_storage_version or newer. This
rebuilds the index, so it will cause some extra CPU usage and extra
metacache disk IO usage. It shouldn't cause (much) extra object storage IO,
because all the fields should be coming from dovecot.index.cache.
* CVE-2026-40203: When IMAP COMPRESS=DEFLATE was enabled, an attacker
could send mails into a victim's mailbox and observe network traffic to
determine whether a secret message matched a known string by comparing
compressed response sizes (a CRIME-style attack). The fix resets the
compression dictionary after each IMAP command, preventing information from
leaking between commands.
* CVE-2026-40205: If multiple OAUTH scopes were required, then
this could have been only partially enforced with certain
configurations.
* CVE-2026-4200: XCLIENT FORWARD allows to forward key only passdb
fields without the "forward_" prefix which allows connections from
trusted networks to set nopasswd field which allows to skip the
authentication.
* CVE-2026-42391: Pre-login IMAP ID command could have used excessive
amount of memory, causing the process to become killed and disconnecting
all the other IMAP connections being proxied by the process. Or
alternatively it could have caused excessive CPU usage, slowing down
all the other IMAP connections being proxied by the process.
* CVE-2026-42392: If URLAUTH is enabled, sending an invalid IMAP URLFETCH
can result in an untagged NO response containing uninitialized memory,
potentially leaking sensitive data.
* CVE-2026-42393: Doveadm password length or API key length could still
be determined via timing based attacks.
* CVE-2026-42395: XCLIENT FORWARD command from login_trusted_networks
could have been used to cause login processes to crash.
* CVE-2026-52681: Sieve resource usage (sieve_max_cpu_time) was tracked
in the active Sieve binary. Switching to a different active binary
could have been used to reset (bypass) the resource usage.
* CVE-2026-52687: Using IMAP COMPRESS ZSTD command can cause excessive
memory usage in imap-login process, possibly making it reach vsz_limit
and kill all the connections being served by the process. Fixed by
disabling COMPRESS command with all other compression algorithms than
the standard DEFLATE.
* CVE-2026-73208: In oauth2, scope/aud checking was done with JWT tokens.
Now it requires all scopes.
* CVE-2026-73209: Sending IMAP COMPRESS package containing zero-length
frames crashes imap or imap-login process.
* CVE-2026-33605: managesieve-login: Pre-auth crash. An unauthenticated attacker
can crash the ManageSieve login process by sending a small malformed command
before authenticating.
* CVE-2026-40019: v2.4.3 regression: managesieve-login pre-auth infinite loop.
An unauthenticated attacker can send a truncated quoted argument to the
ManageSieve login process, which makes it spin in an infinite loop consuming CPU.
* CVE-2026-42007: sieve-editheader: An attacker that has valid credentials can
use a Sieve script with the editheader extension to trigger a use-after-free
in the mail editing code, and to write memory contents beyond the intended
buffer in the delivered mail.
Removed patches which are included in this release.
Added patch 0001 to revert upstream commit which breaks the build:
CCLD test-var-expand-crypt
output/per-package/dovecot/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
attempted static link of dynamic object `./.libs/var_expand_crypt.so'
Select libiconv when needed, upstream removed the optional support in
verion 2.4.2:
https://github.com/dovecot/core/commit/8dd2ec82f63ba1bf9ddf1b74243e00185ebba9b1
Added optional dependency to pcre2 available since version 2.4.2:
https://github.com/dovecot/core/commit/38fc1545fe8cf8b97ff3b23f4a4279a0eb344881
which needs BR2_PACKAGE_PCRE2_32:
https://github.com/dovecot/core/blob/2.4.5/m4/want_pcre.m4#L9
Ported path fixup for Makefile from dovecot to dovecot-pigeonhole to fix
build error:
make[6]: *** No rule to make target
'/usr/libexec/dovecot/settings-history.py', needed by
'settings-history-pigeonhole.h'. Stop.
Updated license hashes due to upstream commits:
https://github.com/dovecot/core/commit/8de4423b61320d93acce56a31844219c3317d43e
https://github.com/dovecot/core/commit/2a5809c115ed270c26fdca5c9b0c29a369706210
https://github.com/dovecot/pigeonhole/commit/8020ac138000e7e45f85f352eb15b66fa246f7a2
Added optional support for libkrb5, openldap, postgresql and zstd.
Removed optional support for xz due to its upstream removal:
https://github.com/dovecot/core/commit/3e44364d4a030159e21d3758bab04ebdb09ef27b
Removed configure option --with-ssl (openssl is already a dependency):
https://github.com/dovecot/core/commit/6b0b7141a8a50ffc99ad51b4f27c75f876e58616
Removed configure options for zlib (zlib is already a dependency):
https://github.com/dovecot/core/commit/d666521754b024ce4f1cfee322fcc492673c00a5
Renamed RPCGEN value in _CONF_ENV to silence configure warning:
./configure: line 34595: __disable_RPCGEN_rquota: command not found
Removed various _CONF_ENV variables due to their upstream removal:
i_cv_inotify_works:
https://github.com/dovecot/core/pull/107#issuecomment-560056967
i_cv_signed_size_t:
https://github.com/dovecot/core/commit/52d322449d236d9ac885130abdc024c5549e109c
i_cv_signed_time_t:
https://github.com/dovecot/core/commit/7cedd93c4ed18344940cb327fce12bd90d83d83b
i_cv_c99_vsnprintf:
https://github.com/dovecot/core/commit/5dc503907d7ef65293e441603ad80060c34ad502
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
.checkpackageignore | 1 -
docs/manual/migrating.adoc | 6 +
.../dovecot-pigeonhole.hash | 4 +-
.../dovecot-pigeonhole/dovecot-pigeonhole.mk | 12 +-
...xpand-crypt-Link-test-binary-statica.patch | 32 ++++
...g-passdbs-with-identical-driver-args.patch | 137 ------------------
...onfigure-Explicitly-check-for-icu-uc.patch | 28 ----
package/dovecot/Config.in | 20 +++
package/dovecot/dovecot.hash | 4 +-
package/dovecot/dovecot.mk | 68 +++++----
10 files changed, 113 insertions(+), 199 deletions(-)
create mode 100644 package/dovecot/0001-Revert-lib-var-expand-crypt-Link-test-binary-statica.patch
delete mode 100644 package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch
delete mode 100644 package/dovecot/0002-configure-Explicitly-check-for-icu-uc.patch
diff --git a/.checkpackageignore b/.checkpackageignore
index bd3766988d..95cb5eccc5 100644
--- a/.checkpackageignore
+++ b/.checkpackageignore
@@ -281,7 +281,6 @@ package/dmalloc/0004-Makefile-use-the-configure-detected-or-user-supplied.patch
package/dmalloc/0005-configure-use-LD-instead-of-hard-coding-ld.patch lib_patch.Upstream
package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch lib_patch.Upstream
package/domoticz/S99domoticz Shellcheck
-package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch lib_patch.Upstream
package/dracut/merged-usr-module-setup.sh Shellcheck
package/dropbear/S50dropbear Shellcheck lib_sysv.Indent lib_sysv.Variables
package/dt/0001-adjust-os-symlink.patch lib_patch.Upstream
diff --git a/docs/manual/migrating.adoc b/docs/manual/migrating.adoc
index 68f09e1bae..86b040a19c 100644
--- a/docs/manual/migrating.adoc
+++ b/docs/manual/migrating.adoc
@@ -264,3 +264,9 @@ added to .cargo-checksum.json to clarify that this file is not a
security mechanism. Tarballs generated by Cargo-fetched packages have
changed, therefore the suffix of such tarballs has been changed from
+-cargo5+ to +-cargo6+.
+
+[[migrating-to-2026-11]]
+=== Migration to 2026.11
+
+Due to the update of Dovecot to version 2.4.x the runtime configuration
+files need to be updated.
diff --git a/package/dovecot-pigeonhole/dovecot-pigeonhole.hash b/package/dovecot-pigeonhole/dovecot-pigeonhole.hash
index 247f74fdba..96bf279e24 100644
--- a/package/dovecot-pigeonhole/dovecot-pigeonhole.hash
+++ b/package/dovecot-pigeonhole/dovecot-pigeonhole.hash
@@ -1,3 +1,3 @@
# Locally computed after checking signature
-sha256 0377db284b620723de060431115fb2e7791e1df4321411af718201d6925c4692 dovecot-2.3-pigeonhole-0.5.21.1.tar.gz
-sha256 fc9e9522216f2a9a28b31300e3c73c1df56acc27dfae951bf516e7995366b51a COPYING
+sha256 ad7c478cb3aaa76c5f81f86727a3e6843645b0a1253f5684fb8a0beec0d22925 dovecot-pigeonhole-2.4.5.tar.gz
+sha256 1fc821d394719d8b5337223c1f4bd898a231f2fb559f2cf3ebeda97be8362d6d COPYING
diff --git a/package/dovecot-pigeonhole/dovecot-pigeonhole.mk b/package/dovecot-pigeonhole/dovecot-pigeonhole.mk
index 4d21ebd395..17ffc1d7cf 100644
--- a/package/dovecot-pigeonhole/dovecot-pigeonhole.mk
+++ b/package/dovecot-pigeonhole/dovecot-pigeonhole.mk
@@ -4,9 +4,9 @@
#
################################################################################
-DOVECOT_PIGEONHOLE_VERSION = 0.5.21.1
-DOVECOT_PIGEONHOLE_SOURCE = dovecot-2.3-pigeonhole-$(DOVECOT_PIGEONHOLE_VERSION).tar.gz
-DOVECOT_PIGEONHOLE_SITE = https://pigeonhole.dovecot.org/releases/2.3
+DOVECOT_PIGEONHOLE_VERSION_MAJOR = 2.4
+DOVECOT_PIGEONHOLE_VERSION = $(DOVECOT_PIGEONHOLE_VERSION_MAJOR).5
+DOVECOT_PIGEONHOLE_SITE = https://pigeonhole.dovecot.org/releases/$(DOVECOT_PIGEONHOLE_VERSION_MAJOR)
DOVECOT_PIGEONHOLE_LICENSE = LGPL-2.1
DOVECOT_PIGEONHOLE_LICENSE_FILES = COPYING
DOVECOT_PIGEONHOLE_CPE_ID_VENDOR = dovecot
@@ -15,4 +15,10 @@ DOVECOT_PIGEONHOLE_DEPENDENCIES = dovecot
DOVECOT_PIGEONHOLE_CONF_OPTS = --with-dovecot=$(STAGING_DIR)/usr/lib
+# fix path to avoid using /usr/lib/dovecot
+define DOVECOT_PIGEONHOLE_POST_CONFIGURE
+ $(SED) 's%^dovecot_pkglibexecdir =.*%dovecot_pkglibexecdir = $(STAGING_DIR)/usr/libexec%' $(@D)/src/plugins/settings/Makefile
+endef
+DOVECOT_PIGEONHOLE_POST_CONFIGURE_HOOKS += DOVECOT_PIGEONHOLE_POST_CONFIGURE
+
$(eval $(autotools-package))
diff --git a/package/dovecot/0001-Revert-lib-var-expand-crypt-Link-test-binary-statica.patch b/package/dovecot/0001-Revert-lib-var-expand-crypt-Link-test-binary-statica.patch
new file mode 100644
index 0000000000..83ba1168ce
--- /dev/null
+++ b/package/dovecot/0001-Revert-lib-var-expand-crypt-Link-test-binary-statica.patch
@@ -0,0 +1,32 @@
+From 08a6ca5cfb9d4148d5dedabd0660e06fd3081606 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Tue, 25 Aug 2026 21:17:48 +0200
+Subject: [PATCH] Revert "lib-var-expand-crypt: Link test binary statically"
+
+This reverts commit 1c6b67195d279836d94e141215c626c20af93af6.
+
+Upstream: n/a (buildroot specific)
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/lib-var-expand-crypt/Makefile.am | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/lib-var-expand-crypt/Makefile.am b/src/lib-var-expand-crypt/Makefile.am
+index aa6a3b9b81..12d424a845 100644
+--- a/src/lib-var-expand-crypt/Makefile.am
++++ b/src/lib-var-expand-crypt/Makefile.am
+@@ -35,9 +35,8 @@ test_libs = \
+ test_var_expand_crypt_SOURCES = test-var-expand-crypt.c
+ test_var_expand_crypt_LDADD = $(test_libs) $(SSL_LIBS) $(LIBDOVECOT_TEST_LIBS)
+ test_var_expand_crypt_DEPENDENCIES = $(module_LTLIBRARIES)
+-test_var_expand_crypt_LDFLAGS = -static
+ if HAVE_WHOLE_ARCHIVE
+-test_var_expand_crypt_LDFLAGS += -export-dynamic -Wl,$(LD_WHOLE_ARCHIVE),../lib/.libs/liblib.a,../lib-json/.libs/libjson.a,../lib-ssl-iostream/.libs/libssl_iostream.a,$(LD_NO_WHOLE_ARCHIVE)
++test_var_expand_crypt_LDFLAGS = -export-dynamic -Wl,$(LD_WHOLE_ARCHIVE),../lib/.libs/liblib.a,../lib-json/.libs/libjson.a,../lib-ssl-iostream/.libs/libssl_iostream.a,$(LD_NO_WHOLE_ARCHIVE)
+ endif
+
+ test_var_expand_crypt_CFLAGS = $(AM_CFLAGS) \
+--
+2.47.3
+
diff --git a/package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch b/package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch
deleted file mode 100644
index 99a2b83563..0000000000
--- a/package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From 7bad6a24160e34bce8f10e73dbbf9e5fbbcd1904 Mon Sep 17 00:00:00 2001
-From: Timo Sirainen <timo.sirainen@open-xchange.com>
-Date: Mon, 9 May 2022 15:23:33 +0300
-Subject: [PATCH] auth: Fix handling passdbs with identical driver/args but
- different mechanisms/username_filter
-
-The passdb was wrongly deduplicated in this situation, causing wrong
-mechanisms or username_filter setting to be used. This would be a rather
-unlikely configuration though.
-
-Fixed by moving mechanisms and username_filter from struct passdb_module
-to struct auth_passdb, which is where they should have been in the first
-place.
-
-CVE: CVE-2022-30550
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
----
- src/auth/auth-request.c | 6 +++---
- src/auth/auth.c | 18 ++++++++++++++++++
- src/auth/auth.h | 5 +++++
- src/auth/passdb.c | 15 ++-------------
- src/auth/passdb.h | 4 ----
- 5 files changed, 28 insertions(+), 20 deletions(-)
-
-diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c
-index cd08b1fa02..0ca29f3674 100644
---- a/src/auth/auth-request.c
-+++ b/src/auth/auth-request.c
-@@ -534,8 +534,8 @@ auth_request_want_skip_passdb(struct auth_request *request,
- struct auth_passdb *passdb)
- {
- /* if mechanism is not supported, skip */
-- const char *const *mechs = passdb->passdb->mechanisms;
-- const char *const *username_filter = passdb->passdb->username_filter;
-+ const char *const *mechs = passdb->mechanisms;
-+ const char *const *username_filter = passdb->username_filter;
- const char *username;
-
- username = request->fields.user;
-@@ -548,7 +548,7 @@ auth_request_want_skip_passdb(struct auth_request *request,
- return TRUE;
- }
-
-- if (passdb->passdb->username_filter != NULL &&
-+ if (passdb->username_filter != NULL &&
- !auth_request_username_accepted(username_filter, username)) {
- auth_request_log_debug(request,
- request->mech != NULL ? AUTH_SUBSYS_MECH
-diff --git a/src/auth/auth.c b/src/auth/auth.c
-index f2f3fda20c..9f6c4ba60c 100644
---- a/src/auth/auth.c
-+++ b/src/auth/auth.c
-@@ -99,6 +99,24 @@ auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings *set,
- auth_passdb->override_fields_tmpl =
- passdb_template_build(auth->pool, set->override_fields);
-
-+ if (*set->mechanisms == '\0') {
-+ auth_passdb->mechanisms = NULL;
-+ } else if (strcasecmp(set->mechanisms, "none") == 0) {
-+ auth_passdb->mechanisms = (const char *const[]){ NULL };
-+ } else {
-+ auth_passdb->mechanisms =
-+ (const char *const *)p_strsplit_spaces(auth->pool,
-+ set->mechanisms, " ,");
-+ }
-+
-+ if (*set->username_filter == '\0') {
-+ auth_passdb->username_filter = NULL;
-+ } else {
-+ auth_passdb->username_filter =
-+ (const char *const *)p_strsplit_spaces(auth->pool,
-+ set->username_filter, " ,");
-+ }
-+
- /* for backwards compatibility: */
- if (set->pass)
- auth_passdb->result_success = AUTH_DB_RULE_CONTINUE;
-diff --git a/src/auth/auth.h b/src/auth/auth.h
-index f700e29d5c..460a179765 100644
---- a/src/auth/auth.h
-+++ b/src/auth/auth.h
-@@ -41,6 +41,11 @@ struct auth_passdb {
- struct passdb_template *default_fields_tmpl;
- struct passdb_template *override_fields_tmpl;
-
-+ /* Supported authentication mechanisms, NULL is all, {NULL} is none */
-+ const char *const *mechanisms;
-+ /* Username filter, NULL is no filter */
-+ const char *const *username_filter;
-+
- enum auth_passdb_skip skip;
- enum auth_db_rule result_success;
- enum auth_db_rule result_failure;
-diff --git a/src/auth/passdb.c b/src/auth/passdb.c
-index eb4ac8ae82..f5eed1af4f 100644
---- a/src/auth/passdb.c
-+++ b/src/auth/passdb.c
-@@ -224,19 +224,8 @@ passdb_preinit(pool_t pool, const struct auth_passdb_settings *set)
- passdb->id = ++auth_passdb_id;
- passdb->iface = *iface;
- passdb->args = p_strdup(pool, set->args);
-- if (*set->mechanisms == '\0') {
-- passdb->mechanisms = NULL;
-- } else if (strcasecmp(set->mechanisms, "none") == 0) {
-- passdb->mechanisms = (const char *const[]){NULL};
-- } else {
-- passdb->mechanisms = (const char* const*)p_strsplit_spaces(pool, set->mechanisms, " ,");
-- }
--
-- if (*set->username_filter == '\0') {
-- passdb->username_filter = NULL;
-- } else {
-- passdb->username_filter = (const char* const*)p_strsplit_spaces(pool, set->username_filter, " ,");
-- }
-+ /* NOTE: if anything else than driver & args are added here,
-+ passdb_find() also needs to be updated. */
- array_push_back(&passdb_modules, &passdb);
- return passdb;
- }
-diff --git a/src/auth/passdb.h b/src/auth/passdb.h
-index 2e95328e5c..e466a9fdb6 100644
---- a/src/auth/passdb.h
-+++ b/src/auth/passdb.h
-@@ -63,10 +63,6 @@ struct passdb_module {
- /* Default password scheme for this module.
- If default_cache_key is set, must not be NULL. */
- const char *default_pass_scheme;
-- /* Supported authentication mechanisms, NULL is all, [NULL] is none*/
-- const char *const *mechanisms;
-- /* Username filter, NULL is no filter */
-- const char *const *username_filter;
-
- /* If blocking is set to TRUE, use child processes to access
- this passdb. */
---
-2.30.2
-
diff --git a/package/dovecot/0002-configure-Explicitly-check-for-icu-uc.patch b/package/dovecot/0002-configure-Explicitly-check-for-icu-uc.patch
deleted file mode 100644
index ea9aecebde..0000000000
--- a/package/dovecot/0002-configure-Explicitly-check-for-icu-uc.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 1ccd5b54a408d12fce0c94ab0bbaedbb5ef69830 Mon Sep 17 00:00:00 2001
-From: fundawang <fundawang@yeah.net>
-Date: Sun, 27 Oct 2024 22:11:21 +0800
-Subject: [PATCH] configure: Explicitly check for icu-uc
-
-Ensure we link against libicu-uc when it's split in v76.
-
-Upstream: https://github.com/dovecot/core/commit/1ccd5b54a408d12fce0c94ab0bbaedbb5ef69830
-
-Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
-[Bernd: backported to version 2.3.21.1]
----
- m4/want_icu.m4 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/m4/want_icu.m4 b/m4/want_icu.m4
-index b656ef9f479..405a73b361f 100644
---- a/m4/want_icu.m4
-+++ b/m4/want_icu.m4
-@@ -1,7 +1,7 @@
- AC_DEFUN([DOVECOT_WANT_ICU], [
- if test "$want_icu" != "no"; then
- if test "$PKG_CONFIG" != "" && $PKG_CONFIG --exists icu-i18n 2>/dev/null; then
-- PKG_CHECK_MODULES(LIBICU, icu-i18n)
-+ PKG_CHECK_MODULES(LIBICU, icu-i18n icu-uc)
- have_icu=yes
- AC_DEFINE(HAVE_LIBICU,, [Define if you want ICU normalization support for FTS])
- elif test "$want_icu" = "yes"; then
diff --git a/package/dovecot/Config.in b/package/dovecot/Config.in
index e109ce6be8..6753160c27 100644
--- a/package/dovecot/Config.in
+++ b/package/dovecot/Config.in
@@ -2,8 +2,10 @@ config BR2_PACKAGE_DOVECOT
bool "dovecot"
depends on !BR2_STATIC_LIBS
depends on BR2_USE_MMU # fork()
+ select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL
select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC
+ select BR2_PACKAGE_PCRE2_32 if BR2_PACKAGE_PCRE2
select BR2_PACKAGE_OPENSSL
select BR2_PACKAGE_ZLIB
help
@@ -32,6 +34,24 @@ comment "mysql support needs a toolchain w/ C++, threads, wchar"
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \
!BR2_USE_WCHAR
+config BR2_PACKAGE_DOVECOT_POSTGRESQL
+ bool "postgresql support"
+ depends on !BR2_sparc # postgresql
+ depends on BR2_USE_WCHAR # postgresql
+ depends on BR2_ENABLE_LOCALE # postgresql
+ depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # postgresql
+ depends on !BR2_OPTIMIZE_FAST # postgresql
+ select BR2_PACKAGE_POSTGRESQL
+ help
+ Enable PostgreSQL support.
+
+comment "postgresql needs a toolchain w/ wchar, NPTL, locale"
+ depends on !BR2_sparc
+ depends on !BR2_USE_WCHAR
+ depends on !BR2_ENABLE_LOCALE
+ depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL
+ depends on BR2_OPTIMIZE_FAST
+
config BR2_PACKAGE_DOVECOT_SQLITE
bool "sqlite support"
select BR2_PACKAGE_SQLITE
diff --git a/package/dovecot/dovecot.hash b/package/dovecot/dovecot.hash
index fde96f32a5..f29eccb319 100644
--- a/package/dovecot/dovecot.hash
+++ b/package/dovecot/dovecot.hash
@@ -1,5 +1,5 @@
# Locally computed after checking signature
-sha256 2d90a178c4297611088bf7daae5492a3bc3d5ab6328c3a032eb425d2c249097e dovecot-2.3.21.1.tar.gz
-sha256 319a9830aab406109cd67cb45496587566a8123203d66d037b209ca3e13de02a COPYING
+sha256 868c2686a61b5f8e00a3e4721789b1ab46e6528fd773a5fbed07a6ecba7731e6 dovecot-2.4.5.tar.gz
+sha256 4825bf42bebc624c4ce283bd6147daa1aa2c874a12af6f7fb7b07a2c793cc131 COPYING
sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL
sha256 52b8c95fabb19575281874b661ef7968ea47e8f5d74ba0dd40ce512e52b3fc97 COPYING.MIT
diff --git a/package/dovecot/dovecot.mk b/package/dovecot/dovecot.mk
index a4c799221c..74cacc3200 100644
--- a/package/dovecot/dovecot.mk
+++ b/package/dovecot/dovecot.mk
@@ -4,14 +4,16 @@
#
################################################################################
-DOVECOT_VERSION_MAJOR = 2.3
-DOVECOT_VERSION = $(DOVECOT_VERSION_MAJOR).21.1
+DOVECOT_VERSION_MAJOR = 2.4
+DOVECOT_VERSION = $(DOVECOT_VERSION_MAJOR).5
DOVECOT_SITE = https://dovecot.org/releases/$(DOVECOT_VERSION_MAJOR)
DOVECOT_INSTALL_STAGING = YES
DOVECOT_LICENSE = LGPL-2.1, MIT, Public Domain, BSD-3-Clause, Unicode-DFS-2015
DOVECOT_LICENSE_FILES = COPYING COPYING.LGPL COPYING.MIT
DOVECOT_CPE_ID_VENDOR = dovecot
DOVECOT_SELINUX_MODULES = dovecot
+
+# 0001-Revert-lib-var-expand-crypt-Link-test-binary-statica.patch
DOVECOT_AUTORECONF = YES
# add host-gettext for AM_ICONV macro needed for autoreconf
@@ -19,30 +21,22 @@ DOVECOT_DEPENDENCIES = \
host-gettext \
host-pkgconf \
$(if $(BR2_PACKAGE_LIBICONV),libiconv) \
- openssl
-
-# 0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch
-# Note: this ignore CVE entry is reported as stale by pkg-stats, but
-# the NVD database is incorrect:
-# https://lore.kernel.org/buildroot/20250517181815.02ce0393@windsurf/
-DOVECOT_IGNORE_CVES += CVE-2022-30550
+ openssl \
+ zlib
DOVECOT_CONF_ENV = \
- RPCGEN=__disable_RPCGEN_rquota \
+ RPCGEN=false \
i_cv_epoll_works=yes \
- i_cv_inotify_works=yes \
+ i_cv_gssapi_spnego=yes \
i_cv_posix_fallocate_works=no \
- i_cv_signed_size_t=no \
i_cv_gmtime_max_time_t=32 \
- i_cv_signed_time_t=yes \
i_cv_mmap_plays_with_write=yes \
i_cv_fd_passing=yes \
- i_cv_c99_vsnprintf=yes \
lib_cv_va_copy=yes \
lib_cv___va_copy=yes \
lib_cv_va_val_copy=yes
-DOVECOT_CONF_OPTS = --without-docs --with-ssl=openssl
+DOVECOT_CONF_OPTS = --without-docs
ifeq ($(BR2_PACKAGE_DOVECOT_MYSQL)$(BR2_PACKAGE_DOVECOT_SQLITE),)
DOVECOT_CONF_OPTS += --without-sql
@@ -69,6 +63,14 @@ else
DOVECOT_CONF_OPTS += --without-libcap
endif
+ifeq ($(BR2_PACKAGE_LIBKRB5),y)
+DOVECOT_CONF_ENV += KRB5CONFIG="$(STAGING_DIR)/usr/bin/krb5-config"
+DOVECOT_CONF_OPTS += --with-gssapi=yes
+DOVECOT_DEPENDENCIES += libkrb5
+else
+DOVECOT_CONF_OPTS += --without-gssapi
+endif
+
ifeq ($(BR2_PACKAGE_LIBSODIUM),y)
DOVECOT_CONF_OPTS += --with-sodium
DOVECOT_DEPENDENCIES += libsodium
@@ -87,6 +89,20 @@ else
DOVECOT_CONF_OPTS += --without-pam
endif
+ifeq ($(BR2_PACKAGE_OPENLDAP),y)
+DOVECOT_CONF_OPTS += --with-ldap=yes
+DOVECOT_DEPENDENCIES += openldap
+else
+DOVECOT_CONF_OPTS += --without-ldap
+endif
+
+ifeq ($(BR2_PACKAGE_PCRE2),y)
+DOVECOT_CONF_OPTS += --with-pcre2
+DOVECOT_DEPENDENCIES += pcre2
+else
+DOVECOT_CONF_OPTS += --without-pcre2
+endif
+
ifeq ($(BR2_PACKAGE_DOVECOT_MYSQL),y)
DOVECOT_CONF_ENV += MYSQL_CONFIG="$(STAGING_DIR)/usr/bin/mysql_config"
DOVECOT_CONF_OPTS += --with-mysql
@@ -95,6 +111,13 @@ else
DOVECOT_CONF_OPTS += --without-mysql
endif
+ifeq ($(BR2_PACKAGE_DOVECOT_POSTGRESQL),y)
+DOVECOT_CONF_OPTS += --with-pgsql
+DOVECOT_DEPENDENCIES += postgresql
+else
+DOVECOT_CONF_OPTS += --without-pgsql
+endif
+
ifeq ($(BR2_PACKAGE_DOVECOT_SQLITE),y)
DOVECOT_CONF_OPTS += --with-sqlite
DOVECOT_DEPENDENCIES += sqlite
@@ -109,18 +132,11 @@ else
DOVECOT_CONF_OPTS += --without-lz4
endif
-ifeq ($(BR2_PACKAGE_XZ),y)
-DOVECOT_CONF_OPTS += --with-lzma
-DOVECOT_DEPENDENCIES += xz
-else
-DOVECOT_CONF_OPTS += --without-lzma
-endif
-
-ifeq ($(BR2_PACKAGE_ZLIB),y)
-DOVECOT_CONF_OPTS += --with-zlib
-DOVECOT_DEPENDENCIES += zlib
+ifeq ($(BR2_PACKAGE_ZSTD),y)
+DOVECOT_CONF_OPTS += --with-zstd
+DOVECOT_DEPENDENCIES += zstd
else
-DOVECOT_CONF_OPTS += --without-zlib
+DOVECOT_CONF_OPTS += --without-zstd
endif
# fix paths to avoid using /usr/lib/dovecot
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 23/66] package/nmap: bump version to 7.991
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (21 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 22/66] package/dovecot{-pigeonhole}: security bump version to 2.4.5 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-10-02 20:17 ` Thomas Petazzoni via buildroot
2026-09-29 18:35 ` [Buildroot] [PATCH v7 24/66] package/openvmtools: bump version to 13.1.0 Bernd Kuhls
` (42 subsequent siblings)
65 siblings, 1 reply; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Added patch to fix build error introduced by upstream commit
https://github.com/nmap/nmap/commit/a24082eee41fcabf7fa180020e1771af3226b358
which was first added to this release.
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...if-compiling-without-Lua-support.-Cl.patch | 29 +++++++++++++++++++
package/nmap/nmap.hash | 6 ++--
package/nmap/nmap.mk | 2 +-
3 files changed, 33 insertions(+), 4 deletions(-)
create mode 100644 package/nmap/0002-Do-not-call-NSE-if-compiling-without-Lua-support.-Cl.patch
diff --git a/package/nmap/0002-Do-not-call-NSE-if-compiling-without-Lua-support.-Cl.patch b/package/nmap/0002-Do-not-call-NSE-if-compiling-without-Lua-support.-Cl.patch
new file mode 100644
index 0000000000..54cafdafbc
--- /dev/null
+++ b/package/nmap/0002-Do-not-call-NSE-if-compiling-without-Lua-support.-Cl.patch
@@ -0,0 +1,29 @@
+From 4c36cf12f246b52a8d510bdde8becd5c5b3bf8b5 Mon Sep 17 00:00:00 2001
+From: nnposter <nnposter@e0a8ed71-7df4-0310-8962-fdc924857419>
+Date: Wed, 12 Aug 2026 19:29:05 +0000
+Subject: [PATCH] Do not call NSE if compiling without Lua support. Close #3434
+
+Upstream: https://github.com/nmap/nmap/commit/4c36cf12f246b52a8d510bdde8becd5c5b3bf8b5
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ nmap.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/nmap.cc b/nmap.cc
+index b94c71223..70206daed 100644
+--- a/nmap.cc
++++ b/nmap.cc
+@@ -1858,7 +1858,9 @@ void nmap_free_mem() {
+ AllProbes::service_scan_free();
+ traceroute_hop_cache_clear();
+ nsock_set_default_engine(NULL);
++#ifndef NOLUA
+ close_nse();
++#endif
+ }
+
+ int nmap_main(int argc, char *argv[]) {
+--
+2.47.3
+
diff --git a/package/nmap/nmap.hash b/package/nmap/nmap.hash
index 17f9eb7f5e..bbdb81ec4f 100644
--- a/package/nmap/nmap.hash
+++ b/package/nmap/nmap.hash
@@ -1,6 +1,6 @@
-# From https://nmap.org/dist/sigs/nmap-7.99.tar.bz2.digest.txt (lowercase)
-sha256 df512492ffd108e53a27a06f26d8635bbe89e0e569455dc8ffef058c035d51b2 nmap-7.99.tar.bz2
-sha512 9ff69659b76573eb10b6e472a0217032fd5fed20f0ac971b3736a4222fb6251c5fbf381ebea7ede313b8ff2feac90a848f645000c61200772d01b843594f4ba4 nmap-7.99.tar.bz2
+# From https://nmap.org/dist/sigs/nmap-7.991.tar.bz2.digest.txt (lowercase)
+sha256 a5d507f29437bef3bedd4771ff9aaa8fc1c2a109ddba1f5b1cf12027456929be nmap-7.991.tar.bz2
+sha512 d87836eedd453f4f5e55075b50640a6ad61cb5dbc1f887dbaf725fa8c32b6a472d838d174c68a2efa749b3b028512d2f0467aea0ff0b5f5752df714db62f8320 nmap-7.991.tar.bz2
# Locally calculated
sha256 9d9a9a763c0e6145172cfe7d8483e23b38ce60b6c79a82e4894242917bdae6d3 LICENSE
diff --git a/package/nmap/nmap.mk b/package/nmap/nmap.mk
index b04d8b080d..0dd96d2b95 100644
--- a/package/nmap/nmap.mk
+++ b/package/nmap/nmap.mk
@@ -4,7 +4,7 @@
#
################################################################################
-NMAP_VERSION = 7.99
+NMAP_VERSION = 7.991
NMAP_SITE = https://nmap.org/dist
NMAP_SOURCE = nmap-$(NMAP_VERSION).tar.bz2
NMAP_DEPENDENCIES = liblinear libpcap
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 24/66] package/openvmtools: bump version to 13.1.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (22 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 23/66] package/nmap: bump version to 7.991 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 25/66] package/poco: bump version to 1.15.3 Bernd Kuhls
` (41 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Karoly Kasza
Rebased patch set in two steps:
1.: downloaded patch set from home-assistant
https://github.com/home-assistant/buildroot/tree/2025.02.x-haos/package/openvmtools
which is based on 13.0.0
2.: rebased again on 13.1.0 (no changes needed)
Added patches 0011 to fix build errors with glibc 2.43.
Renumbered patches.
Added tarball hash provided by upstream.
Removed CVE entries in openvmtools.mk due to patches 0013 and 0014
being added to upstream release.
Ported various configure options from home-assistant commit
https://github.com/home-assistant/buildroot/commit/3206b3fa58a636c7a98ff7a65f76fcf23a4302ee
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Karoly Kasza <kaszak@gmail.com>
---
.checkpackageignore | 9 +-
.../0001-configure.ac-disable-Werror.patch | 32 +
.../openvmtools/0001-no_cflags_werror.patch | 18 -
.../0002-dont-force-cppflags.patch | 21 -
...-not-force-I-usr-include-in-CPPFLAGS.patch | 36 +
..._poll-h-to-fix-build-failure-on-musl.patch | 813 ------------------
...to-vm_poll.h-to-fix-build-failure-on.patch | 133 +++
...ns-about-glibc-being-only-libc-imple.patch | 27 +-
...e-configure-test-for-struct-timespec.patch | 31 +-
...finition-of-ALLPERMS-and-ACCESSPERMS.patch | 35 +-
...-test-for-feature-instead-of-platfor.patch | 74 +-
...onfigure-test-for-sys-stat.h-include.patch | 21 +-
...gfs-fuse-fsutils.h-fix-build-on-mus.patch} | 8 +-
...FromNtTimeNsec-aware-of-64-bit-time_.patch | 51 ++
...on-discards-const-qualifier-from-poi.patch | 148 ++++
...FromNtTimeNsec-aware-of-64-bit-time_.patch | 80 --
...GLib-g_free-macro-redefinition-erro.patch} | 11 +-
...uthorization-on-incoming-guestOps-re.patch | 41 -
...-2025-22247-1100-1225-VGAuth-updates.patch | 383 ---------
package/openvmtools/openvmtools.hash | 3 +-
package/openvmtools/openvmtools.mk | 22 +-
21 files changed, 535 insertions(+), 1462 deletions(-)
create mode 100644 package/openvmtools/0001-configure.ac-disable-Werror.patch
delete mode 100644 package/openvmtools/0001-no_cflags_werror.patch
delete mode 100644 package/openvmtools/0002-dont-force-cppflags.patch
create mode 100644 package/openvmtools/0002-m4-do-not-force-I-usr-include-in-CPPFLAGS.patch
delete mode 100644 package/openvmtools/0003-Rename-poll-h-into-vm_poll-h-to-fix-build-failure-on-musl.patch
create mode 100644 package/openvmtools/0003-Rename-poll.h-into-vm_poll.h-to-fix-build-failure-on.patch
rename package/openvmtools/{0011-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch => 0009-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch} (86%)
create mode 100644 package/openvmtools/0010-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch
create mode 100644 package/openvmtools/0011-fix-initialization-discards-const-qualifier-from-poi.patch
delete mode 100644 package/openvmtools/0012-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch
rename package/openvmtools/{0015-glib_stubs-avoid-GLib-g_free-macro-redefinition-error.patch => 0012-glib_stubs-avoid-GLib-g_free-macro-redefinition-erro.patch} (84%)
delete mode 100644 package/openvmtools/0013-Properly-check-authorization-on-incoming-guestOps-re.patch
delete mode 100644 package/openvmtools/0014-CVE-2025-22247-1100-1225-VGAuth-updates.patch
diff --git a/.checkpackageignore b/.checkpackageignore
index 95cb5eccc5..fc12ae87bf 100644
--- a/.checkpackageignore
+++ b/.checkpackageignore
@@ -682,16 +682,15 @@ package/openrc/0004-init.d-agetty-start-agetty-after-all-sevices.patch lib_patch
package/openrc/0005-runlevels-do-not-add-agetty.tty-1-6-if-MKSYSVINIT-ye.patch lib_patch.Upstream
package/openrc/0006-Also-create-run-lock-subsys-directory.patch lib_patch.Upstream
package/opentyrian/0001-Move-definitions-that-don-t-need-to-be-exposed-from-opl-h-to-opl-c.patch lib_patch.Upstream
-package/openvmtools/0001-no_cflags_werror.patch lib_patch.Upstream
-package/openvmtools/0002-dont-force-cppflags.patch lib_patch.Upstream
-package/openvmtools/0003-Rename-poll-h-into-vm_poll-h-to-fix-build-failure-on-musl.patch lib_patch.Upstream
+package/openvmtools/0001-configure.ac-disable-Werror.patch lib_patch.Upstream
+package/openvmtools/0002-m4-do-not-force-I-usr-include-in-CPPFLAGS.patch lib_patch.Upstream
package/openvmtools/0004-Remove-assumptions-about-glibc-being-only-libc-imple.patch lib_patch.Upstream
package/openvmtools/0005-Use-configure-test-for-struct-timespec.patch lib_patch.Upstream
package/openvmtools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch lib_patch.Upstream
package/openvmtools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch lib_patch.Upstream
package/openvmtools/0008-Use-configure-test-for-sys-stat.h-include.patch lib_patch.Upstream
-package/openvmtools/0011-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch lib_patch.Upstream
-package/openvmtools/0012-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch lib_patch.Upstream
+package/openvmtools/0009-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch lib_patch.Upstream
+package/openvmtools/0010-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch lib_patch.Upstream
package/openvmtools/shutdown Shellcheck
package/openvpn/S60openvpn Shellcheck lib_sysv.Indent lib_sysv.Variables
package/oprofile/0001-musl.patch lib_patch.Upstream
diff --git a/package/openvmtools/0001-configure.ac-disable-Werror.patch b/package/openvmtools/0001-configure.ac-disable-Werror.patch
new file mode 100644
index 0000000000..5b7c20d0e9
--- /dev/null
+++ b/package/openvmtools/0001-configure.ac-disable-Werror.patch
@@ -0,0 +1,32 @@
+From 818066b581f6cfedbec83031dd8b084178f622e1 Mon Sep 17 00:00:00 2001
+From: Stefan Agner <stefan@agner.ch>
+Date: Tue, 5 Sep 2023 13:11:18 +0200
+Subject: [PATCH] configure.ac: disable -Werror
+
+Disable the mandatory flag -Werror in configure.ac.
+
+Signed-off-by: Karoly Kasza <kaszak@gmail.com>
+[rebased against stable-12.3.0]
+Signed-off-by: Stefan Agner <stefan@agner.ch>
+[Bernd: rebased against stable-13.0.10]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 92b610429..89b0bd8db 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1403,7 +1403,7 @@ AC_C_VOLATILE
+
+ ### General flags / actions
+ CFLAGS="$CFLAGS -Wall"
+-CFLAGS="$CFLAGS -Werror"
++# CFLAGS="$CFLAGS -Werror"
+
+ # -Wno-unknown-pragmas is due to gcc not understanding '#pragma ident'
+ # in Xlib.h on OpenSolaris.
+--
+2.47.3
+
diff --git a/package/openvmtools/0001-no_cflags_werror.patch b/package/openvmtools/0001-no_cflags_werror.patch
deleted file mode 100644
index 3378cb8e7d..0000000000
--- a/package/openvmtools/0001-no_cflags_werror.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-configure.ac: disable -Werror
-
-Disable the mandatory flag -Werror in configure.ac.
-
-Signed-off-by: Karoly Kasza <kaszak@gmail.com>
-
---- open-vm-tools/configure.ac 2015-06-17 10:02:00.000000000 +0200
-+++ open-vm-tools/configure.ac 2015-06-17 10:02:00.000000000 +0200
-@@ -935,7 +935,7 @@
-
- ### General flags / actions
- CFLAGS="$CFLAGS -Wall"
--CFLAGS="$CFLAGS -Werror"
-+# CFLAGS="$CFLAGS -Werror"
-
- # -Wno-unknown-pragmas is due to gcc not understanding '#pragma ident'
- # in Xlib.h on OpenSolaris.
-
diff --git a/package/openvmtools/0002-dont-force-cppflags.patch b/package/openvmtools/0002-dont-force-cppflags.patch
deleted file mode 100644
index eb2fe16ba9..0000000000
--- a/package/openvmtools/0002-dont-force-cppflags.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-m4: do not force -I/usr/include in CPPFLAGS
-
-This is so horribly broken for cross-compilation. :-(
-
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-
---- open-vm-tools/m4/vmtools.m4 2015-06-17 10:03:00.000000000 +0200
-+++ open-vm-tools/m4/vmtools.m4 2015-06-17 10:03:00.000000000 +0200
-@@ -281,10 +281,10 @@
- if test "$os" = freebsd; then
- CUSTOM_$1_CPPFLAGS="-I/usr/local/include"
- else
-- CUSTOM_$1_CPPFLAGS="-I/usr/include"
-+ CUSTOM_$1_CPPFLAGS=" "
- fi
- if test -n "$2"; then
-- CUSTOM_$1_CPPFLAGS="${CUSTOM_$1_CPPFLAGS}/$2"
-+ : CUSTOM_$1_CPPFLAGS="${CUSTOM_$1_CPPFLAGS}/$2"
- fi
- fi
- ])
diff --git a/package/openvmtools/0002-m4-do-not-force-I-usr-include-in-CPPFLAGS.patch b/package/openvmtools/0002-m4-do-not-force-I-usr-include-in-CPPFLAGS.patch
new file mode 100644
index 0000000000..141dc5664b
--- /dev/null
+++ b/package/openvmtools/0002-m4-do-not-force-I-usr-include-in-CPPFLAGS.patch
@@ -0,0 +1,36 @@
+From 4c45151dd99e4025be5d9e85e49c1af3e951cc9d Mon Sep 17 00:00:00 2001
+From: Stefan Agner <stefan@agner.ch>
+Date: Tue, 5 Sep 2023 13:14:04 +0200
+Subject: [PATCH] m4: do not force -I/usr/include in CPPFLAGS
+
+This is so horribly broken for cross-compilation. :-(
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+[rebased against stable-12.3.0]
+Signed-off-by: Stefan Agner <stefan@agner.ch>
+[Bernd: rebased against stable-13.0.10]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ m4/vmtools.m4 | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/m4/vmtools.m4 b/m4/vmtools.m4
+index 055b39d9b..d281f81d1 100644
+--- a/m4/vmtools.m4
++++ b/m4/vmtools.m4
+@@ -279,10 +279,10 @@ AC_DEFUN([AC_VMW_DEFAULT_FLAGS],[
+ if test "$os" = freebsd; then
+ CUSTOM_$1_CPPFLAGS="-I/usr/local/include"
+ else
+- CUSTOM_$1_CPPFLAGS="-I/usr/include"
++ CUSTOM_$1_CPPFLAGS=" "
+ fi
+ if test -n "$2"; then
+- CUSTOM_$1_CPPFLAGS="${CUSTOM_$1_CPPFLAGS}/$2"
++ : CUSTOM_$1_CPPFLAGS="${CUSTOM_$1_CPPFLAGS}/$2"
+ fi
+ fi
+ ])
+--
+2.47.3
+
diff --git a/package/openvmtools/0003-Rename-poll-h-into-vm_poll-h-to-fix-build-failure-on-musl.patch b/package/openvmtools/0003-Rename-poll-h-into-vm_poll-h-to-fix-build-failure-on-musl.patch
deleted file mode 100644
index b4e94d870d..0000000000
--- a/package/openvmtools/0003-Rename-poll-h-into-vm_poll-h-to-fix-build-failure-on-musl.patch
+++ /dev/null
@@ -1,813 +0,0 @@
-From 1dfab46d367d11e9132506ee0f7d3eb2ceff5f3c Mon Sep 17 00:00:00 2001
-Message-Id: <1dfab46d367d11e9132506ee0f7d3eb2ceff5f3c.1652913832.git.stefan@agner.ch>
-From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Date: Mon, 30 Sep 2019 13:32:35 +0200
-Subject: [PATCH] Rename poll.h into vm_poll.h to fix build failure on musl
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-musl libc redirects include of sys/poll.h to poll.h. But since poll.h is
-also a local header file, the musl libc header is never included. This
-leads to the following build failure:
-
-In file included from asyncsocket.c:73:0:
-.../host/i586-buildroot-linux-musl/sysroot/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
- #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
-asyncsocket.c: In function ‘AsyncTCPSocketPollWork’:
-asyncsocket.c:2537:13: error: invalid use of undefined type ‘struct pollfd’
- pfd[i].fd = asock[i]->fd;
- ^
-asyncsocket.c:2537:13: error: dereferencing pointer to incomplete type ‘struct pollfd’
-asyncsocket.c:2538:13: error: invalid use of undefined type ‘struct pollfd’
- pfd[i].events = read ? POLLIN : POLLOUT;
- ^
-asyncsocket.c:2538:33: error: ‘POLLIN’ undeclared (first use in this function); did you mean ‘POLL_IN’?
- pfd[i].events = read ? POLLIN : POLLOUT;
-
-So rename poll.h into vm_poll.h as suggested by srowe in
-https://github.com/vmware/open-vm-tools/issues/359#issuecomment-533529956
-
-Fixes:
- - http://autobuild.buildroot.org/results/4f575ef42bbc4387a07e396205052b2da081c64d
-
-Fix #359
-
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-[Upstream status: https://github.com/vmware/open-vm-tools/pull/383]
----
- lib/asyncsocket/asyncsocket.c | 4 +-
- lib/hgfsServer/hgfsServer.c | 2 +-
- lib/include/asyncsocket.h | 2 +-
- lib/include/poll.h | 337 --------------------
- lib/include/pollImpl.h | 2 +-
- lib/include/vm_poll.h | 337 ++++++++++++++++++++
- lib/rpcIn/rpcin.c | 2 +-
- 7 files changed, 343 insertions(+), 343 deletions(-)
- delete mode 100644 lib/include/poll.h
- create mode 100644 lib/include/vm_poll.h
-
-diff --git a/lib/asyncsocket/asyncsocket.c b/open-vm-tools/lib/asyncsocket/asyncsocket.c
-index 05147d2e..16949567 100644
---- a/lib/asyncsocket/asyncsocket.c
-+++ b/lib/asyncsocket/asyncsocket.c
-@@ -70,8 +70,8 @@
- #else
- #include <stddef.h>
- #include <ctype.h>
-+#include <poll.h>
- #include <sys/types.h>
--#include <sys/poll.h>
- #include <sys/socket.h>
- #include <sys/un.h>
- #include <netdb.h>
-@@ -87,7 +87,7 @@
- #include "random.h"
- #include "asyncsocket.h"
- #include "asyncSocketBase.h"
--#include "poll.h"
-+#include "vm_poll.h"
- #include "log.h"
- #include "err.h"
- #include "hostinfo.h"
-diff --git a/lib/hgfsServer/hgfsServer.c b/open-vm-tools/lib/hgfsServer/hgfsServer.c
-index 98f5b3f0..b436f0c7 100644
---- a/lib/hgfsServer/hgfsServer.c
-+++ b/lib/hgfsServer/hgfsServer.c
-@@ -51,7 +51,7 @@
- #include "hgfsDirNotify.h"
- #include "hgfsThreadpool.h"
- #include "userlock.h"
--#include "poll.h"
-+#include "vm_poll.h"
- #include "mutexRankLib.h"
- #include "vm_basic_asm.h"
- #include "unicodeOperations.h"
-diff --git a/lib/include/asyncsocket.h b/open-vm-tools/lib/include/asyncsocket.h
-index 47b5b873..b8b0149e 100644
---- a/lib/include/asyncsocket.h
-+++ b/lib/include/asyncsocket.h
-@@ -171,7 +171,7 @@ typedef struct AsyncSocket AsyncSocket;
- * Or the client can specify its favorite poll class and locking behavior.
- * Use of IVmdbPoll is only supported for regular sockets and for Attach.
- */
--#include "poll.h"
-+#include "vm_poll.h"
- struct IVmdbPoll;
- typedef struct AsyncSocketPollParams {
- int flags; /* Default 0, only POLL_FLAG_NO_BULL is valid */
-diff --git a/lib/include/poll.h b/open-vm-tools/lib/include/poll.h
-deleted file mode 100644
-index c90f5dcd..00000000
---- a/lib/include/poll.h
-+++ /dev/null
-@@ -1,337 +0,0 @@
--/*********************************************************
-- * Copyright (C) 1998-2020 VMware, Inc. All rights reserved.
-- *
-- * This program is free software; you can redistribute it and/or modify it
-- * under the terms of the GNU Lesser General Public License as published
-- * by the Free Software Foundation version 2.1 and no later version.
-- *
-- * This program is distributed in the hope that it will be useful, but
-- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-- * or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public
-- * License for more details.
-- *
-- * You should have received a copy of the GNU Lesser General Public License
-- * along with this program; if not, write to the Free Software Foundation, Inc.,
-- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-- *
-- *********************************************************/
--
--/*********************************************************
-- * The contents of this file are subject to the terms of the Common
-- * Development and Distribution License (the "License") version 1.0
-- * and no later version. You may not use this file except in
-- * compliance with the License.
-- *
-- * You can obtain a copy of the License at
-- * http://www.opensource.org/licenses/cddl1.php
-- *
-- * See the License for the specific language governing permissions
-- * and limitations under the License.
-- *
-- *********************************************************/
--
--
--#ifndef _POLL_H_
--#define _POLL_H_
--
--#define INCLUDE_ALLOW_USERLEVEL
--#define INCLUDE_ALLOW_VMCORE
--#include "includeCheck.h"
--
--#include "vm_basic_types.h"
--#include "vm_basic_defs.h"
--#include "vmware.h"
--#include "userlock.h"
--
--#if defined(__cplusplus)
--extern "C" {
--#endif
--
--#ifdef _WIN32
--#define HZ 100
--#elif defined __linux__
--#include <asm/param.h>
--#elif __APPLE__
--#include <TargetConditionals.h>
--/*
-- * Old SDKs don't define TARGET_OS_IPHONE at all.
-- * New ones define it to 0 on Mac OS X, 1 on iOS.
-- */
--#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0
--#include <sys/kernel.h>
--#endif
--#include <sys/poll.h>
--#define HZ 100
--#endif
--#ifdef __ANDROID__
--/*
-- * <poll.h> of android should be included, but its name is same
-- * with this file. So its content is put here to avoid conflict.
-- */
--#include <asm/poll.h>
--#define HZ 100
--typedef unsigned int nfds_t;
--int poll(struct pollfd *, nfds_t, long);
--#endif
--
--
--/*
-- * Poll event types: each type has a different reason for firing,
-- * or condition that must be met before firing.
-- */
--
--typedef enum {
-- /*
-- * Actual Poll queue types against which you can register callbacks.
-- */
-- POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */
-- POLL_VTIME = 0,
-- POLL_REALTIME,
-- POLL_DEVICE,
-- POLL_MAIN_LOOP,
-- POLL_NUM_QUEUES
--} PollEventType;
--
--
--/*
-- * Classes of events
-- *
-- * These are the predefined classes. More can be declared
-- * with Poll_AllocClass().
-- */
--
--typedef enum PollClass {
-- POLL_CLASS_MAIN,
-- POLL_CLASS_PAUSE,
-- POLL_CLASS_IPC,
-- POLL_CLASS_CPT,
-- POLL_CLASS_MKS,
-- POLL_FIXED_CLASSES,
-- POLL_DEFAULT_FIXED_CLASSES,
-- /* Size enum to maximum */
-- POLL_MAX_CLASSES = 31,
--} PollClass;
--
--/*
-- * Do not use; Special pseudo private poll class supported by
-- * PollDefault only
-- */
--#define POLL_DEFAULT_CLASS_NET POLL_FIXED_CLASSES
--#define POLL_DEFAULT_CS_NET PollClassSet_Singleton(POLL_DEFAULT_CLASS_NET)
--
--/*
-- * Each callback is registered in a set of classes
-- */
--
--typedef struct PollClassSet {
-- uintptr_t bits;
--} PollClassSet;
--
--/* An empty PollClassSet. */
--static INLINE PollClassSet
--PollClassSet_Empty(void)
--{
-- PollClassSet set = { 0 };
-- return set;
--}
--
--/* A PollClassSet with the single member. */
--static INLINE PollClassSet
--PollClassSet_Singleton(PollClass c)
--{
-- PollClassSet s = PollClassSet_Empty();
--
-- ASSERT_ON_COMPILE(POLL_MAX_CLASSES < sizeof s.bits * 8);
-- ASSERT(c < POLL_MAX_CLASSES);
--
-- s.bits = CONST3264U(1) << c;
-- return s;
--}
--
--/* Combine two PollClassSets. */
--static INLINE PollClassSet
--PollClassSet_Union(PollClassSet lhs, PollClassSet rhs)
--{
-- PollClassSet set;
-- set.bits = lhs.bits | rhs.bits;
-- return set;
--}
--
--/* Add single class to PollClassSet. */
--static INLINE PollClassSet
--PollClassSet_Include(PollClassSet set, PollClass c)
--{
-- return PollClassSet_Union(set, PollClassSet_Singleton(c));
--}
--
--
--#define POLL_CS_MAIN PollClassSet_Singleton(POLL_CLASS_MAIN)
--#define POLL_CS_PAUSE PollClassSet_Union(POLL_CS_MAIN, \
-- PollClassSet_Singleton(POLL_CLASS_PAUSE))
--#define POLL_CS_CPT PollClassSet_Union(POLL_CS_PAUSE, \
-- PollClassSet_Singleton(POLL_CLASS_CPT))
--#define POLL_CS_IPC PollClassSet_Union(POLL_CS_CPT, \
-- PollClassSet_Singleton(POLL_CLASS_IPC))
--#define POLL_CS_VMDB POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */
--#define POLL_CS_MKS PollClassSet_Singleton(POLL_CLASS_MKS)
--/*
-- * DANGER. You don't need POLL_CS_ALWAYS. Really. So don't use it.
-- */
--#define POLL_CS_ALWAYS PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC)
--
--/*
-- * Poll class-set taxonomy:
-- * POLL_CS_MAIN
-- * - Unless you NEED another class, use POLL_CS_MAIN.
-- * POLL_CS_PAUSE
-- * - For callbacks that must occur even if the guest is paused.
-- * Most VMDB or Foundry commands are in this category.
-- * POLL_CS_CPT
-- * - Only for callbacks which can trigger intermediate Checkpoint
-- * transitions.
-- * The ONLY such callback is Migrate.
-- * POLL_CS_IPC
-- * - Only for callbacks which can contain Msg_(Post|Hint|Question)
-- * responses, and for signal handlers (why)?
-- * Vigor, VMDB, and Foundry can contain Msg_* responses.
-- * POLL_CS_MKS
-- * - Callback runs in MKS thread.
-- * POLL_CS_ALWAYS
-- * - Only for events that must be processed immediately.
-- * The ONLY such callback is OvhdMemVmxSizeCheck.
-- */
--
--
--/*
-- * Poll_Callback flags
-- */
--
--#define POLL_FLAG_PERIODIC 0x01 // keep after firing
--#define POLL_FLAG_REMOVE_AT_POWEROFF 0x02 // self-explanatory
--#define POLL_FLAG_READ 0x04 // device is ready for reading
--#define POLL_FLAG_WRITE 0x08 // device is ready for writing
--#define POLL_FLAG_SOCKET 0x10 // device is a Windows socket
--#define POLL_FLAG_NO_BULL 0x20 // callback does its own locking
--#define POLL_FLAG_WINSOCK 0x40 // Winsock style write events
--#define POLL_FLAG_FD 0x80 // device is a Windows file descriptor.
--#define POLL_FLAG_ACCEPT_INVALID_FDS 0x100 // For broken 3rd party libs, e.g. curl
--#define POLL_FLAG_THUNK_TO_WND 0x200 // thunk callback to window message loop
--
--
--typedef void (*PollerFunction)(void *clientData);
--typedef void (*PollerFireWrapper)(PollerFunction func,
-- void *funcData,
-- void *wrapperData);
--typedef Bool (*PollerErrorFn)(const char *errorStr);
--
--/*
-- * Initialisers:
-- *
-- * For the sake of convenience, we declare the initialisers
-- * for custom implmentations here, even though the actual
-- * implementations are distinct from the core poll code.
-- */
--
--
--/* Socket pair created with non-blocking mode */
--#define POLL_OPTIONS_SOCKET_PAIR_NONBLOCK_CONN 0x01
--
--typedef unsigned int SocketSpecialOpts;
--
--typedef struct PollOptions {
-- Bool locked; // Use internal MXUser for locking
-- Bool allowFullQueue; // Don't assert when device event queue is full.
-- VThreadID windowsMsgThread; // thread that processes Windows messages
-- PollerFireWrapper fireWrapperFn; // optional; may be useful for stats
-- void *fireWrapperData; // optional
-- PollerErrorFn errorFn; // optional; called upon unrecoverable error
-- SocketSpecialOpts pollSocketOpts;
--} PollOptions;
--
--
--void Poll_InitDefault(void);
--void Poll_InitDefaultEx(const PollOptions *opts);
--void Poll_InitGtk(void); // On top of glib for Linux
--void Poll_InitCF(void); // On top of CoreFoundation for OSX
--
--
--/*
-- * Functions
-- */
--int Poll_SocketPair(Bool vmci, Bool stream, int fds[2], SocketSpecialOpts opts);
--void Poll_Loop(Bool loop, Bool *exit, PollClass c);
--void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout);
--Bool Poll_LockingEnabled(void);
--void Poll_Exit(void);
--
--
--/*
-- * Poll_Callback adds a callback regardless of whether an identical one exists.
-- * The exception to this rule is POLL_DEVICE callbacks: there is a maximum of
-- * one read and one write callback per fd.
-- *
-- * Poll_CallbackRemove removes one callback. If there are multiple identical
-- * callbacks, which one is removed is an implementation detail. Note that in
-- * the case of POLL_DEVICE and POLL_REALTIME callbacks, the fd/delay used to
-- * create the callback is not specified when removing, so all callbacks
-- * of those types with the same flags, function, and clientData are considered
-- * "identical" even if their fd/delay differed.
-- */
--
--VMwareStatus Poll_Callback(PollClassSet classSet,
-- int flags,
-- PollerFunction f,
-- void *clientData,
-- PollEventType type,
-- PollDevHandle info, // fd/microsec delay
-- MXUserRecLock *lck);
--Bool Poll_CallbackRemove(PollClassSet classSet,
-- int flags,
-- PollerFunction f,
-- void *clientData,
-- PollEventType type);
--Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet,
-- int flags,
-- PollerFunction f,
-- PollEventType type,
-- void **clientData);
--
--void Poll_NotifyChange(PollClassSet classSet);
--
--/*
-- * Wrappers for Poll_Callback and Poll_CallbackRemove that present
-- * simpler subsets of those interfaces.
-- */
--
--VMwareStatus Poll_CB_Device(PollerFunction f,
-- void *clientData,
-- PollDevHandle device,
-- Bool periodic);
--
--Bool Poll_CB_DeviceRemove(PollerFunction f,
-- void *clientData,
-- Bool periodic);
--
--
--VMwareStatus Poll_CB_RTime(PollerFunction f,
-- void *clientData,
-- int64 delay, // microseconds
-- Bool periodic,
-- MXUserRecLock *lock);
--
--Bool Poll_CB_RTimeRemove(PollerFunction f,
-- void *clientData,
-- Bool periodic);
--
--
--#ifdef _WIN32
--void Poll_SetPumpsWindowsMessages(Bool pumps);
--void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk);
--Bool Poll_FireWndCallback(void *lparam);
--#endif
--
--#if defined(__cplusplus)
--} // extern "C"
--#endif
--
--#endif // _POLL_H_
-diff --git a/lib/include/pollImpl.h b/open-vm-tools/lib/include/pollImpl.h
-index 46442e55..8bc66997 100644
---- a/lib/include/pollImpl.h
-+++ b/lib/include/pollImpl.h
-@@ -44,7 +44,7 @@
- #define INCLUDE_ALLOW_USERLEVEL
- #include "includeCheck.h"
-
--#include "poll.h"
-+#include "vm_poll.h"
- #include "vm_basic_asm.h"
-
- #if defined(__cplusplus)
-diff --git a/lib/include/vm_poll.h b/open-vm-tools/lib/include/vm_poll.h
-new file mode 100644
-index 00000000..c90f5dcd
---- /dev/null
-+++ b/lib/include/vm_poll.h
-@@ -0,0 +1,337 @@
-+/*********************************************************
-+ * Copyright (C) 1998-2020 VMware, Inc. All rights reserved.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU Lesser General Public License as published
-+ * by the Free Software Foundation version 2.1 and no later version.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-+ * or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public
-+ * License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * along with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ *********************************************************/
-+
-+/*********************************************************
-+ * The contents of this file are subject to the terms of the Common
-+ * Development and Distribution License (the "License") version 1.0
-+ * and no later version. You may not use this file except in
-+ * compliance with the License.
-+ *
-+ * You can obtain a copy of the License at
-+ * http://www.opensource.org/licenses/cddl1.php
-+ *
-+ * See the License for the specific language governing permissions
-+ * and limitations under the License.
-+ *
-+ *********************************************************/
-+
-+
-+#ifndef _POLL_H_
-+#define _POLL_H_
-+
-+#define INCLUDE_ALLOW_USERLEVEL
-+#define INCLUDE_ALLOW_VMCORE
-+#include "includeCheck.h"
-+
-+#include "vm_basic_types.h"
-+#include "vm_basic_defs.h"
-+#include "vmware.h"
-+#include "userlock.h"
-+
-+#if defined(__cplusplus)
-+extern "C" {
-+#endif
-+
-+#ifdef _WIN32
-+#define HZ 100
-+#elif defined __linux__
-+#include <asm/param.h>
-+#elif __APPLE__
-+#include <TargetConditionals.h>
-+/*
-+ * Old SDKs don't define TARGET_OS_IPHONE at all.
-+ * New ones define it to 0 on Mac OS X, 1 on iOS.
-+ */
-+#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0
-+#include <sys/kernel.h>
-+#endif
-+#include <sys/poll.h>
-+#define HZ 100
-+#endif
-+#ifdef __ANDROID__
-+/*
-+ * <poll.h> of android should be included, but its name is same
-+ * with this file. So its content is put here to avoid conflict.
-+ */
-+#include <asm/poll.h>
-+#define HZ 100
-+typedef unsigned int nfds_t;
-+int poll(struct pollfd *, nfds_t, long);
-+#endif
-+
-+
-+/*
-+ * Poll event types: each type has a different reason for firing,
-+ * or condition that must be met before firing.
-+ */
-+
-+typedef enum {
-+ /*
-+ * Actual Poll queue types against which you can register callbacks.
-+ */
-+ POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */
-+ POLL_VTIME = 0,
-+ POLL_REALTIME,
-+ POLL_DEVICE,
-+ POLL_MAIN_LOOP,
-+ POLL_NUM_QUEUES
-+} PollEventType;
-+
-+
-+/*
-+ * Classes of events
-+ *
-+ * These are the predefined classes. More can be declared
-+ * with Poll_AllocClass().
-+ */
-+
-+typedef enum PollClass {
-+ POLL_CLASS_MAIN,
-+ POLL_CLASS_PAUSE,
-+ POLL_CLASS_IPC,
-+ POLL_CLASS_CPT,
-+ POLL_CLASS_MKS,
-+ POLL_FIXED_CLASSES,
-+ POLL_DEFAULT_FIXED_CLASSES,
-+ /* Size enum to maximum */
-+ POLL_MAX_CLASSES = 31,
-+} PollClass;
-+
-+/*
-+ * Do not use; Special pseudo private poll class supported by
-+ * PollDefault only
-+ */
-+#define POLL_DEFAULT_CLASS_NET POLL_FIXED_CLASSES
-+#define POLL_DEFAULT_CS_NET PollClassSet_Singleton(POLL_DEFAULT_CLASS_NET)
-+
-+/*
-+ * Each callback is registered in a set of classes
-+ */
-+
-+typedef struct PollClassSet {
-+ uintptr_t bits;
-+} PollClassSet;
-+
-+/* An empty PollClassSet. */
-+static INLINE PollClassSet
-+PollClassSet_Empty(void)
-+{
-+ PollClassSet set = { 0 };
-+ return set;
-+}
-+
-+/* A PollClassSet with the single member. */
-+static INLINE PollClassSet
-+PollClassSet_Singleton(PollClass c)
-+{
-+ PollClassSet s = PollClassSet_Empty();
-+
-+ ASSERT_ON_COMPILE(POLL_MAX_CLASSES < sizeof s.bits * 8);
-+ ASSERT(c < POLL_MAX_CLASSES);
-+
-+ s.bits = CONST3264U(1) << c;
-+ return s;
-+}
-+
-+/* Combine two PollClassSets. */
-+static INLINE PollClassSet
-+PollClassSet_Union(PollClassSet lhs, PollClassSet rhs)
-+{
-+ PollClassSet set;
-+ set.bits = lhs.bits | rhs.bits;
-+ return set;
-+}
-+
-+/* Add single class to PollClassSet. */
-+static INLINE PollClassSet
-+PollClassSet_Include(PollClassSet set, PollClass c)
-+{
-+ return PollClassSet_Union(set, PollClassSet_Singleton(c));
-+}
-+
-+
-+#define POLL_CS_MAIN PollClassSet_Singleton(POLL_CLASS_MAIN)
-+#define POLL_CS_PAUSE PollClassSet_Union(POLL_CS_MAIN, \
-+ PollClassSet_Singleton(POLL_CLASS_PAUSE))
-+#define POLL_CS_CPT PollClassSet_Union(POLL_CS_PAUSE, \
-+ PollClassSet_Singleton(POLL_CLASS_CPT))
-+#define POLL_CS_IPC PollClassSet_Union(POLL_CS_CPT, \
-+ PollClassSet_Singleton(POLL_CLASS_IPC))
-+#define POLL_CS_VMDB POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */
-+#define POLL_CS_MKS PollClassSet_Singleton(POLL_CLASS_MKS)
-+/*
-+ * DANGER. You don't need POLL_CS_ALWAYS. Really. So don't use it.
-+ */
-+#define POLL_CS_ALWAYS PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC)
-+
-+/*
-+ * Poll class-set taxonomy:
-+ * POLL_CS_MAIN
-+ * - Unless you NEED another class, use POLL_CS_MAIN.
-+ * POLL_CS_PAUSE
-+ * - For callbacks that must occur even if the guest is paused.
-+ * Most VMDB or Foundry commands are in this category.
-+ * POLL_CS_CPT
-+ * - Only for callbacks which can trigger intermediate Checkpoint
-+ * transitions.
-+ * The ONLY such callback is Migrate.
-+ * POLL_CS_IPC
-+ * - Only for callbacks which can contain Msg_(Post|Hint|Question)
-+ * responses, and for signal handlers (why)?
-+ * Vigor, VMDB, and Foundry can contain Msg_* responses.
-+ * POLL_CS_MKS
-+ * - Callback runs in MKS thread.
-+ * POLL_CS_ALWAYS
-+ * - Only for events that must be processed immediately.
-+ * The ONLY such callback is OvhdMemVmxSizeCheck.
-+ */
-+
-+
-+/*
-+ * Poll_Callback flags
-+ */
-+
-+#define POLL_FLAG_PERIODIC 0x01 // keep after firing
-+#define POLL_FLAG_REMOVE_AT_POWEROFF 0x02 // self-explanatory
-+#define POLL_FLAG_READ 0x04 // device is ready for reading
-+#define POLL_FLAG_WRITE 0x08 // device is ready for writing
-+#define POLL_FLAG_SOCKET 0x10 // device is a Windows socket
-+#define POLL_FLAG_NO_BULL 0x20 // callback does its own locking
-+#define POLL_FLAG_WINSOCK 0x40 // Winsock style write events
-+#define POLL_FLAG_FD 0x80 // device is a Windows file descriptor.
-+#define POLL_FLAG_ACCEPT_INVALID_FDS 0x100 // For broken 3rd party libs, e.g. curl
-+#define POLL_FLAG_THUNK_TO_WND 0x200 // thunk callback to window message loop
-+
-+
-+typedef void (*PollerFunction)(void *clientData);
-+typedef void (*PollerFireWrapper)(PollerFunction func,
-+ void *funcData,
-+ void *wrapperData);
-+typedef Bool (*PollerErrorFn)(const char *errorStr);
-+
-+/*
-+ * Initialisers:
-+ *
-+ * For the sake of convenience, we declare the initialisers
-+ * for custom implmentations here, even though the actual
-+ * implementations are distinct from the core poll code.
-+ */
-+
-+
-+/* Socket pair created with non-blocking mode */
-+#define POLL_OPTIONS_SOCKET_PAIR_NONBLOCK_CONN 0x01
-+
-+typedef unsigned int SocketSpecialOpts;
-+
-+typedef struct PollOptions {
-+ Bool locked; // Use internal MXUser for locking
-+ Bool allowFullQueue; // Don't assert when device event queue is full.
-+ VThreadID windowsMsgThread; // thread that processes Windows messages
-+ PollerFireWrapper fireWrapperFn; // optional; may be useful for stats
-+ void *fireWrapperData; // optional
-+ PollerErrorFn errorFn; // optional; called upon unrecoverable error
-+ SocketSpecialOpts pollSocketOpts;
-+} PollOptions;
-+
-+
-+void Poll_InitDefault(void);
-+void Poll_InitDefaultEx(const PollOptions *opts);
-+void Poll_InitGtk(void); // On top of glib for Linux
-+void Poll_InitCF(void); // On top of CoreFoundation for OSX
-+
-+
-+/*
-+ * Functions
-+ */
-+int Poll_SocketPair(Bool vmci, Bool stream, int fds[2], SocketSpecialOpts opts);
-+void Poll_Loop(Bool loop, Bool *exit, PollClass c);
-+void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout);
-+Bool Poll_LockingEnabled(void);
-+void Poll_Exit(void);
-+
-+
-+/*
-+ * Poll_Callback adds a callback regardless of whether an identical one exists.
-+ * The exception to this rule is POLL_DEVICE callbacks: there is a maximum of
-+ * one read and one write callback per fd.
-+ *
-+ * Poll_CallbackRemove removes one callback. If there are multiple identical
-+ * callbacks, which one is removed is an implementation detail. Note that in
-+ * the case of POLL_DEVICE and POLL_REALTIME callbacks, the fd/delay used to
-+ * create the callback is not specified when removing, so all callbacks
-+ * of those types with the same flags, function, and clientData are considered
-+ * "identical" even if their fd/delay differed.
-+ */
-+
-+VMwareStatus Poll_Callback(PollClassSet classSet,
-+ int flags,
-+ PollerFunction f,
-+ void *clientData,
-+ PollEventType type,
-+ PollDevHandle info, // fd/microsec delay
-+ MXUserRecLock *lck);
-+Bool Poll_CallbackRemove(PollClassSet classSet,
-+ int flags,
-+ PollerFunction f,
-+ void *clientData,
-+ PollEventType type);
-+Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet,
-+ int flags,
-+ PollerFunction f,
-+ PollEventType type,
-+ void **clientData);
-+
-+void Poll_NotifyChange(PollClassSet classSet);
-+
-+/*
-+ * Wrappers for Poll_Callback and Poll_CallbackRemove that present
-+ * simpler subsets of those interfaces.
-+ */
-+
-+VMwareStatus Poll_CB_Device(PollerFunction f,
-+ void *clientData,
-+ PollDevHandle device,
-+ Bool periodic);
-+
-+Bool Poll_CB_DeviceRemove(PollerFunction f,
-+ void *clientData,
-+ Bool periodic);
-+
-+
-+VMwareStatus Poll_CB_RTime(PollerFunction f,
-+ void *clientData,
-+ int64 delay, // microseconds
-+ Bool periodic,
-+ MXUserRecLock *lock);
-+
-+Bool Poll_CB_RTimeRemove(PollerFunction f,
-+ void *clientData,
-+ Bool periodic);
-+
-+
-+#ifdef _WIN32
-+void Poll_SetPumpsWindowsMessages(Bool pumps);
-+void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk);
-+Bool Poll_FireWndCallback(void *lparam);
-+#endif
-+
-+#if defined(__cplusplus)
-+} // extern "C"
-+#endif
-+
-+#endif // _POLL_H_
-diff --git a/lib/rpcIn/rpcin.c b/open-vm-tools/lib/rpcIn/rpcin.c
-index 8b1fe759..f22fcd40 100644
---- a/lib/rpcIn/rpcin.c
-+++ b/lib/rpcIn/rpcin.c
-@@ -57,7 +57,7 @@
-
- #if defined(VMTOOLS_USE_VSOCKET)
- # include <glib.h>
--# include "poll.h"
-+# include "vm_poll.h"
- # include "asyncsocket.h"
- # include "vmci_defs.h"
- #include "dataMap.h"
---
-2.36.1
-
diff --git a/package/openvmtools/0003-Rename-poll.h-into-vm_poll.h-to-fix-build-failure-on.patch b/package/openvmtools/0003-Rename-poll.h-into-vm_poll.h-to-fix-build-failure-on.patch
new file mode 100644
index 0000000000..f7afb1891a
--- /dev/null
+++ b/package/openvmtools/0003-Rename-poll.h-into-vm_poll.h-to-fix-build-failure-on.patch
@@ -0,0 +1,133 @@
+From 23e25f489bc054b90ebfaed0b9726544ad5a6aba Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Mon, 30 Sep 2019 13:32:35 +0200
+Subject: [PATCH] Rename poll.h into vm_poll.h to fix build failure on musl
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+musl libc redirects include of sys/poll.h to poll.h. But since poll.h is
+also a local header file, the musl libc header is never included. This
+leads to the following build failure:
+
+In file included from asyncsocket.c:73:0:
+.../host/i586-buildroot-linux-musl/sysroot/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
+ #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
+asyncsocket.c: In function ‘AsyncTCPSocketPollWork’:
+asyncsocket.c:2537:13: error: invalid use of undefined type ‘struct pollfd’
+ pfd[i].fd = asock[i]->fd;
+ ^
+asyncsocket.c:2537:13: error: dereferencing pointer to incomplete type ‘struct pollfd’
+asyncsocket.c:2538:13: error: invalid use of undefined type ‘struct pollfd’
+ pfd[i].events = read ? POLLIN : POLLOUT;
+ ^
+asyncsocket.c:2538:33: error: ‘POLLIN’ undeclared (first use in this function); did you mean ‘POLL_IN’?
+ pfd[i].events = read ? POLLIN : POLLOUT;
+
+So rename poll.h into vm_poll.h as suggested by srowe in
+https://github.com/vmware/open-vm-tools/issues/359#issuecomment-533529956
+
+Fixes:
+ - http://autobuild.buildroot.org/results/4f575ef42bbc4387a07e396205052b2da081c64d
+
+Fix #359
+
+Upstream: https://github.com/vmware/open-vm-tools/pull/383
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[rebased against stable-12.3.0]
+Signed-off-by: Stefan Agner <stefan@agner.ch>
+[Bernd: rebased against stable-13.0.10]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ lib/asyncsocket/asyncsocket.c | 4 ++--
+ lib/hgfsServer/hgfsServer.c | 2 +-
+ lib/include/asyncsocket.h | 2 +-
+ lib/include/pollImpl.h | 2 +-
+ lib/include/{poll.h => vm_poll.h} | 0
+ lib/rpcIn/rpcin.c | 2 +-
+ 6 files changed, 6 insertions(+), 6 deletions(-)
+ rename lib/include/{poll.h => vm_poll.h} (100%)
+
+diff --git a/lib/asyncsocket/asyncsocket.c b/lib/asyncsocket/asyncsocket.c
+index d61777601..3f75b85ad 100644
+--- a/lib/asyncsocket/asyncsocket.c
++++ b/lib/asyncsocket/asyncsocket.c
+@@ -70,8 +70,8 @@
+ #else
+ #include <stddef.h>
+ #include <ctype.h>
++#include <poll.h>
+ #include <sys/types.h>
+-#include <sys/poll.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+ #include <netdb.h>
+@@ -87,7 +87,7 @@
+ #include "random.h"
+ #include "asyncsocket.h"
+ #include "asyncSocketBase.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "log.h"
+ #include "err.h"
+ #include "hostinfo.h"
+diff --git a/lib/hgfsServer/hgfsServer.c b/lib/hgfsServer/hgfsServer.c
+index c7b4cdd0f..d6e0cdc0e 100644
+--- a/lib/hgfsServer/hgfsServer.c
++++ b/lib/hgfsServer/hgfsServer.c
+@@ -51,7 +51,7 @@
+ #include "hgfsDirNotify.h"
+ #include "hgfsThreadpool.h"
+ #include "userlock.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "mutexRankLib.h"
+ #include "vm_basic_asm.h"
+ #include "unicodeOperations.h"
+diff --git a/lib/include/asyncsocket.h b/lib/include/asyncsocket.h
+index 57d491570..283e2d796 100644
+--- a/lib/include/asyncsocket.h
++++ b/lib/include/asyncsocket.h
+@@ -177,7 +177,7 @@ typedef struct AsyncSocket AsyncSocket;
+ * Or the client can specify its favorite poll class and locking behavior.
+ * Use of IVmdbPoll is only supported for regular sockets and for Attach.
+ */
+-#include "poll.h"
++#include "vm_poll.h"
+ struct IVmdbPoll;
+ typedef struct AsyncSocketPollParams {
+ int flags; /* Default 0, only POLL_FLAG_NO_BULL is valid */
+diff --git a/lib/include/pollImpl.h b/lib/include/pollImpl.h
+index 46442e556..8bc669970 100644
+--- a/lib/include/pollImpl.h
++++ b/lib/include/pollImpl.h
+@@ -44,7 +44,7 @@
+ #define INCLUDE_ALLOW_USERLEVEL
+ #include "includeCheck.h"
+
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "vm_basic_asm.h"
+
+ #if defined(__cplusplus)
+diff --git a/lib/include/poll.h b/lib/include/vm_poll.h
+similarity index 100%
+rename from lib/include/poll.h
+rename to lib/include/vm_poll.h
+diff --git a/lib/rpcIn/rpcin.c b/lib/rpcIn/rpcin.c
+index f1709fe03..c1a5dfdba 100644
+--- a/lib/rpcIn/rpcin.c
++++ b/lib/rpcIn/rpcin.c
+@@ -57,7 +57,7 @@
+
+ #if defined(VMTOOLS_USE_VSOCKET)
+ # include <glib.h>
+-# include "poll.h"
++# include "vm_poll.h"
+ # include "asyncsocket.h"
+ # include "vmci_defs.h"
+ #include "dataMap.h"
+--
+2.47.3
+
diff --git a/package/openvmtools/0004-Remove-assumptions-about-glibc-being-only-libc-imple.patch b/package/openvmtools/0004-Remove-assumptions-about-glibc-being-only-libc-imple.patch
index 5960006f2f..db6c61ca91 100644
--- a/package/openvmtools/0004-Remove-assumptions-about-glibc-being-only-libc-imple.patch
+++ b/package/openvmtools/0004-Remove-assumptions-about-glibc-being-only-libc-imple.patch
@@ -1,22 +1,26 @@
-From a0983d84185f04c4e40778fe951fde4439894882 Mon Sep 17 00:00:00 2001
+From 4421d88ca9248173baa8eb4fcd563e6705f8aeb0 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 16 Jul 2017 07:37:03 -0700
-Subject: [PATCH] Remove assumptions about glibc being only libc
- implementation on linux
+Subject: [PATCH] Remove assumptions about glibc being only libc implementation
+ on linux
Signed-off-by: Khem Raj <raj.khem@gmail.com>
[Retrieved (and updated to work on current version) from:
http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Remove-assumptions-about-glibc-being-only-libc-imple.patch?h=sumo]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[rebased against stable-12.3.0]
+Signed-off-by: Stefan Agner <stefan@agner.ch>
+[Bernd: rebased against stable-13.0.10]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
- open-vm-tools/lib/file/fileIOPosix.c | 2 +-
- 2 files changed, 3 insertions(+), 1 deletion(-)
+ lib/file/fileIOPosix.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-Index: open-vm-tools/lib/file/fileIOPosix.c
-===================================================================
---- open-vm-tools.orig/lib/file/fileIOPosix.c
-+++ open-vm-tools/lib/file/fileIOPosix.c
-@@ -205,7 +205,7 @@ static AlignedPool alignedPool;
+diff --git a/lib/file/fileIOPosix.c b/lib/file/fileIOPosix.c
+index 4dedb08fc..1e16f06bd 100644
+--- a/lib/file/fileIOPosix.c
++++ b/lib/file/fileIOPosix.c
+@@ -204,7 +204,7 @@ static AlignedPool alignedPool;
* are not available in any header file.
*/
@@ -25,3 +29,6 @@ Index: open-vm-tools/lib/file/fileIOPosix.c
#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
/*
* We want preadv/pwritev. But due to FOB=64, the symbols are -64.
+--
+2.47.3
+
diff --git a/package/openvmtools/0005-Use-configure-test-for-struct-timespec.patch b/package/openvmtools/0005-Use-configure-test-for-struct-timespec.patch
index 3386faec15..5a3088cf5d 100644
--- a/package/openvmtools/0005-Use-configure-test-for-struct-timespec.patch
+++ b/package/openvmtools/0005-Use-configure-test-for-struct-timespec.patch
@@ -1,4 +1,4 @@
-From bf1eafb07297711baf9320b1edcca8a3376f117d Mon Sep 17 00:00:00 2001
+From c51e6ceb7f1443603e9713d297b0386db91f524e Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 09:03:00 +0000
Subject: [PATCH] Use configure test for struct timespec
@@ -10,16 +10,20 @@ Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
[Retrieved from:
http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0005-Use-configure-test-for-struct-timespec.patch?h=sumo]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[rebased against stable-12.3.0]
+Signed-off-by: Stefan Agner <stefan@agner.ch>
+[Bernd: rebased against stable-13.0.10]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
- open-vm-tools/configure.ac | 1 +
- open-vm-tools/lib/include/hgfsUtil.h | 8 +-------
+ configure.ac | 1 +
+ lib/include/hgfsUtil.h | 8 +-------
2 files changed, 2 insertions(+), 7 deletions(-)
-Index: open-vm-tools/configure.ac
-===================================================================
---- open-vm-tools.orig/configure.ac
-+++ open-vm-tools/configure.ac
-@@ -1127,6 +1127,7 @@ AC_TYPE_OFF_T
+diff --git a/configure.ac b/configure.ac
+index 89b0bd8db..0ba2f6658 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1393,6 +1393,7 @@ AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_CHECK_MEMBERS([struct stat.st_rdev])
@@ -27,10 +31,10 @@ Index: open-vm-tools/configure.ac
AC_HEADER_TIME
AC_STRUCT_TM
AC_C_VOLATILE
-Index: open-vm-tools/lib/include/hgfsUtil.h
-===================================================================
---- open-vm-tools.orig/lib/include/hgfsUtil.h
-+++ open-vm-tools/lib/include/hgfsUtil.h
+diff --git a/lib/include/hgfsUtil.h b/lib/include/hgfsUtil.h
+index 609f4c000..a3a022d42 100644
+--- a/lib/include/hgfsUtil.h
++++ b/lib/include/hgfsUtil.h
@@ -53,13 +53,7 @@
# include <time.h>
# endif
@@ -46,3 +50,6 @@ Index: open-vm-tools/lib/include/hgfsUtil.h
struct timespec {
time_t tv_sec;
long tv_nsec;
+--
+2.47.3
+
diff --git a/package/openvmtools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch b/package/openvmtools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch
index 371004c90f..23719e8ad6 100644
--- a/package/openvmtools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch
+++ b/package/openvmtools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch
@@ -1,4 +1,4 @@
-From 31ae6f42458f90d4994a4ad8e2b7673691612c36 Mon Sep 17 00:00:00 2001
+From 8ff21c861f204b502085f93352c182e7d449755f Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 09:10:14 +0000
Subject: [PATCH] Fix definition of ALLPERMS and ACCESSPERMS
@@ -12,16 +12,20 @@ Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
[Retrieved from:
http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch?h=sumo]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[rebased against stable-12.3.0]
+Signed-off-by: Stefan Agner <stefan@agner.ch>
+[Bernd: rebased against stable-13.0.10]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
- open-vm-tools/lib/hgfsServer/hgfsServerLinux.c | 8 +++++---
- open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c | 3 +--
+ lib/hgfsServer/hgfsServerLinux.c | 8 +++++---
+ services/plugins/dndcp/dnd/dndLinux.c | 3 +--
2 files changed, 6 insertions(+), 5 deletions(-)
-Index: open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
-===================================================================
---- open-vm-tools.orig/lib/hgfsServer/hgfsServerLinux.c
-+++ open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
-@@ -107,11 +107,13 @@ typedef struct DirectoryEntry {
+diff --git a/lib/hgfsServer/hgfsServerLinux.c b/lib/hgfsServer/hgfsServerLinux.c
+index 4a0bc9378..6ed49e2b7 100644
+--- a/lib/hgfsServer/hgfsServerLinux.c
++++ b/lib/hgfsServer/hgfsServerLinux.c
+@@ -105,11 +105,13 @@ typedef struct DirectoryEntry {
#endif
/*
@@ -38,11 +42,11 @@ Index: open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
#endif
-Index: open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
-===================================================================
---- open-vm-tools.orig/services/plugins/dndcp/dnd/dndLinux.c
-+++ open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
-@@ -51,7 +51,7 @@
+diff --git a/services/plugins/dndcp/dnd/dndLinux.c b/services/plugins/dndcp/dnd/dndLinux.c
+index 219065f74..b5b7e6203 100644
+--- a/services/plugins/dndcp/dnd/dndLinux.c
++++ b/services/plugins/dndcp/dnd/dndLinux.c
+@@ -53,7 +53,7 @@
#define DND_ROOTDIR_PERMS (S_IRWXU | S_IRWXG | S_IRWXO)
#define DND_STAGINGDIR_PERMS (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)
@@ -51,7 +55,7 @@ Index: open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
#endif
#ifdef __ANDROID__
-@@ -60,7 +60,6 @@
+@@ -62,7 +62,6 @@
*/
#define NO_SETMNTENT
#define NO_ENDMNTENT
@@ -59,3 +63,6 @@ Index: open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
#endif
+--
+2.47.3
+
diff --git a/package/openvmtools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch b/package/openvmtools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch
index f10e74e152..4a0e11b87d 100644
--- a/package/openvmtools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch
+++ b/package/openvmtools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch
@@ -1,4 +1,4 @@
-From 6cc1c22cc30320f56da552a76bd956db8f255b6a Mon Sep 17 00:00:00 2001
+From bb3b5f66bb71aa7d7af0e58ec0a5992e08814d5e Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 10:05:07 +0000
Subject: [PATCH] Use configure to test for feature instead of platform
@@ -18,23 +18,25 @@ The features we test for are:
This is needed for musl libc.
+Refit patch of open-vm-tools/lib/nicInfo/nicInfoPosix.c
+
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
-[Retrieved (and slightly updated) from:
-http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch?h=sumo]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-[Dario: make the patch to be applied with fuzz factor 0]
-Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
+Signed-off-by: Randy MacLeod <randy.macleod@windriver.com>
+[rebased against stable-12.3.0]
+Signed-off-by: Stefan Agner <stefan@agner.ch>
+[Bernd: rebased against stable-13.0.10]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
- open-vm-tools/configure.ac | 4 ++++
- open-vm-tools/lib/misc/idLinux.c | 30 ++++++++++++++----------------
- open-vm-tools/lib/nicInfo/nicInfoPosix.c | 8 ++++++--
- 3 files changed, 24 insertions(+), 18 deletions(-)
+ configure.ac | 4 ++++
+ lib/misc/idLinux.c | 30 ++++++++++++++----------------
+ lib/nicInfo/nicInfoPosix.c | 6 +++++-
+ 3 files changed, 23 insertions(+), 17 deletions(-)
-Index: open-vm-tools/configure.ac
-===================================================================
---- open-vm-tools.orig/configure.ac
-+++ open-vm-tools/configure.ac
-@@ -940,6 +940,7 @@
+diff --git a/configure.ac b/configure.ac
+index 0ba2f6658..31d61c154 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1121,6 +1121,7 @@ AC_CHECK_FUNCS(
AC_CHECK_FUNCS([ecvt])
AC_CHECK_FUNCS([fcvt])
@@ -42,7 +44,7 @@ Index: open-vm-tools/configure.ac
AC_CHECK_FUNC([mkdtemp], [have_mkdtemp=yes])
-@@ -1149,10 +1150,13 @@
+@@ -1330,10 +1331,13 @@ fi
###
AC_CHECK_HEADERS([crypt.h])
@@ -56,10 +58,10 @@ Index: open-vm-tools/configure.ac
AC_CHECK_HEADERS([sys/inttypes.h])
AC_CHECK_HEADERS([sys/io.h])
AC_CHECK_HEADERS([sys/param.h]) # Required to make the sys/user.h check work correctly on FreeBSD
-Index: open-vm-tools/lib/misc/idLinux.c
-===================================================================
---- open-vm-tools.orig/lib/misc/idLinux.c
-+++ open-vm-tools/lib/misc/idLinux.c
+diff --git a/lib/misc/idLinux.c b/lib/misc/idLinux.c
+index 3d7d1e303..0e12ac5bd 100644
+--- a/lib/misc/idLinux.c
++++ b/lib/misc/idLinux.c
@@ -27,12 +27,9 @@
#include <sys/syscall.h>
#include <string.h>
@@ -74,7 +76,7 @@ Index: open-vm-tools/lib/misc/idLinux.c
#ifdef __APPLE__
#include <sys/socket.h>
#include <TargetConditionals.h>
-@@ -1025,31 +1022,32 @@
+@@ -1025,24 +1022,23 @@ Id_EndSuperUser(uid_t uid) // IN:
static Bool
IdIsSetUGid(void)
{
@@ -108,10 +110,11 @@ Index: open-vm-tools/lib/misc/idLinux.c
+#elif HAVE___SECURE_GETENV
static const char envName[] = "VMW_SETUGID_TEST";
- if (setenv(envName, "1", TRUE) == -1) {
- return TRUE; /* Conservative */
+ /*
+@@ -1062,7 +1058,9 @@ IdIsSetUGid(void)
+ return secure_getenv(envName) == NULL;
}
- return __secure_getenv(envName) == NULL;
+ return TRUE;
-#endif
+#else
+ /* Android does not have a secure_getenv, so be conservative. */
@@ -119,10 +122,10 @@ Index: open-vm-tools/lib/misc/idLinux.c
#endif
}
#endif
-Index: open-vm-tools/lib/nicInfo/nicInfoPosix.c
-===================================================================
---- open-vm-tools.orig/lib/nicInfo/nicInfoPosix.c
-+++ open-vm-tools/lib/nicInfo/nicInfoPosix.c
+diff --git a/lib/nicInfo/nicInfoPosix.c b/lib/nicInfo/nicInfoPosix.c
+index 0135e6a09..6f20547b2 100644
+--- a/lib/nicInfo/nicInfoPosix.c
++++ b/lib/nicInfo/nicInfoPosix.c
@@ -35,9 +35,13 @@
#include <sys/stat.h>
#include <errno.h>
@@ -138,15 +141,6 @@ Index: open-vm-tools/lib/nicInfo/nicInfoPosix.c
# include <net/if.h>
#endif
#ifndef NO_DNET
-@@ -499,10 +503,7 @@
- *
- ******************************************************************************
- */
--#if defined(__FreeBSD__) || \
-- defined(__APPLE__) || \
-- defined(USERWORLD) || \
-- (defined(__linux__) && defined(NO_DNET))
-+#if defined(NO_DNET) && defined(HAVE_GETIFADDRS)
-
- char *
- GuestInfoGetPrimaryIP(void)
+--
+2.47.3
+
diff --git a/package/openvmtools/0008-Use-configure-test-for-sys-stat.h-include.patch b/package/openvmtools/0008-Use-configure-test-for-sys-stat.h-include.patch
index c058dfe6c3..198abb3f45 100644
--- a/package/openvmtools/0008-Use-configure-test-for-sys-stat.h-include.patch
+++ b/package/openvmtools/0008-Use-configure-test-for-sys-stat.h-include.patch
@@ -1,4 +1,4 @@
-From 95c6184d9ff70a47c41768850923a96de9e544aa Mon Sep 17 00:00:00 2001
+From 2b1df418ff114676ba93c005d96925a068e41944 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 10:41:01 +0000
Subject: [PATCH] Use configure test for sys/stat.h include
@@ -9,15 +9,19 @@ Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
[Retrieved from:
http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0011-Use-configure-test-for-sys-stat.h-include.patch?h=sumo]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[rebased against stable-12.3.0]
+Signed-off-by: Stefan Agner <stefan@agner.ch>
+[Bernd: rebased against stable-13.0.10]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
- open-vm-tools/services/plugins/vix/vixTools.c | 2 +-
+ services/plugins/vix/vixTools.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: open-vm-tools/services/plugins/vix/vixTools.c
-===================================================================
---- open-vm-tools.orig/services/plugins/vix/vixTools.c
-+++ open-vm-tools/services/plugins/vix/vixTools.c
-@@ -66,7 +66,7 @@
+diff --git a/services/plugins/vix/vixTools.c b/services/plugins/vix/vixTools.c
+index 694371d10..b2079a10d 100644
+--- a/services/plugins/vix/vixTools.c
++++ b/services/plugins/vix/vixTools.c
+@@ -67,7 +67,7 @@
#include <unistd.h>
#endif
@@ -26,3 +30,6 @@ Index: open-vm-tools/services/plugins/vix/vixTools.c
#include <sys/stat.h>
#endif
+--
+2.47.3
+
diff --git a/package/openvmtools/0011-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch b/package/openvmtools/0009-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch
similarity index 86%
rename from package/openvmtools/0011-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch
rename to package/openvmtools/0009-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch
index e2984a38b7..d3adc738cd 100644
--- a/package/openvmtools/0011-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch
+++ b/package/openvmtools/0009-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch
@@ -1,4 +1,4 @@
-From 0a5032669951ffd6735c294a6f309b0ec6667ea5 Mon Sep 17 00:00:00 2001
+From 84adbc466ed1ae2b87b383880ff724324866f59b Mon Sep 17 00:00:00 2001
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Date: Sun, 8 Mar 2020 18:49:00 +0100
Subject: [PATCH] open-vm-tools/vmhgfs-fuse/fsutils.h: fix build on musl
@@ -18,12 +18,14 @@ Fixes:
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
[Upstream status: not sent yet (upstream is not reactive on third patch]
+[Bernd: rebased against stable-13.0.10]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
vmhgfs-fuse/fsutil.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/vmhgfs-fuse/fsutil.h b/vmhgfs-fuse/fsutil.h
-index 34b6d489..a94f9fbb 100644
+index 34b6d489a..a94f9fbb1 100644
--- a/vmhgfs-fuse/fsutil.h
+++ b/vmhgfs-fuse/fsutil.h
@@ -32,7 +32,8 @@
@@ -37,5 +39,5 @@ index 34b6d489..a94f9fbb 100644
#endif
--
-2.25.0
+2.47.3
diff --git a/package/openvmtools/0010-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch b/package/openvmtools/0010-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch
new file mode 100644
index 0000000000..df69be32d6
--- /dev/null
+++ b/package/openvmtools/0010-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch
@@ -0,0 +1,51 @@
+From bedbcfcf347ff1a11d1a54f8f780f560e4b241a4 Mon Sep 17 00:00:00 2001
+From: Stefan Agner <stefan@agner.ch>
+Date: Tue, 5 Sep 2023 15:03:56 +0200
+Subject: [PATCH] Make HgfsConvertFromNtTimeNsec aware of 64-bit time_t on i386
+
+I verified that this function behaves as expected on x86_64, i386 with
+32-bit time_t, and i386 with 64-bit time_t for the following values of
+ntTtime:
+
+UNIX_EPOCH-1, UNIX_EPOCH, UNIX_EPOCH+1, UNIX_S32_MAX-1, UNIX_S32_MAX,
+UNIX_S32_MAX+1, UNIX_S32_MAX*2+1
+
+I did not verify whether the use of Div643264 is optimal, performance
+wise.
+
+Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
+[rebased against stable-12.3.0]
+Signed-off-by: Stefan Agner <stefan@agner.ch>
+[Bernd: rebased against stable-13.0.10]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ lib/hgfs/hgfsUtil.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/lib/hgfs/hgfsUtil.c b/lib/hgfs/hgfsUtil.c
+index fcd7fb726..f86061562 100644
+--- a/lib/hgfs/hgfsUtil.c
++++ b/lib/hgfs/hgfsUtil.c
+@@ -131,13 +131,15 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format
+ Div643232(ntTime - UNIX_EPOCH, 10000000, &sec, &nsec);
+ unixTime->tv_sec = sec;
+ unixTime->tv_nsec = nsec * 100;
+-
+- return 0;
++ } else {
++ Div643264(ntTime - UNIX_EPOCH, 10000000, &sec64, &nsec);
++ unixTime->tv_sec = sec64;
++ unixTime->tv_nsec = nsec * 100;
+ }
+-#endif
+-
++#else
+ unixTime->tv_sec = (ntTime - UNIX_EPOCH) / 10000000;
+ unixTime->tv_nsec = ((ntTime - UNIX_EPOCH) % 10000000) * 100;
++#endif // __i386__
+
+ return 0;
+ }
+--
+2.47.3
+
diff --git a/package/openvmtools/0011-fix-initialization-discards-const-qualifier-from-poi.patch b/package/openvmtools/0011-fix-initialization-discards-const-qualifier-from-poi.patch
new file mode 100644
index 0000000000..525984ebd0
--- /dev/null
+++ b/package/openvmtools/0011-fix-initialization-discards-const-qualifier-from-poi.patch
@@ -0,0 +1,148 @@
+From ba2005c94cc9ebe1b09f83e8c70ef9f0d0b5a353 Mon Sep 17 00:00:00 2001
+From: Rudi Heitbaum <rudi@heitbaum.com>
+Date: Mon, 26 Jan 2026 11:55:03 +0000
+Subject: [PATCH] fix initialization discards 'const' qualifier from pointer
+ target type
+
+Since glibc-2.43:
+
+For ISO C23, the functions bsearch, memchr, strchr, strpbrk, strrchr,
+strstr, wcschr, wcspbrk, wcsrchr, wcsstr and wmemchr that return
+pointers into their input arrays now have definitions as macros that
+return a pointer to a const-qualified type when the input argument is
+a pointer to a const-qualified type.
+
+https://lists.gnu.org/archive/html/info-gnu/2026-01/msg00005.html
+
+Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
+
+Upstream: https://github.com/vmware/open-vm-tools/pull/783
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ lib/hgfs/hgfsEscape.c | 6 +++---
+ lib/hgfsServer/hgfsServerLinux.c | 2 +-
+ lib/misc/strutil.c | 7 ++++---
+ lib/nicInfo/nicInfoPosix.c | 2 +-
+ libvmtools/i18n.c | 2 +-
+ services/plugins/vix/vixTools.c | 2 +-
+ 6 files changed, 11 insertions(+), 10 deletions(-)
+
+diff --git a/lib/hgfs/hgfsEscape.c b/lib/hgfs/hgfsEscape.c
+index c4d39b12d..212ea1c79 100644
+--- a/lib/hgfs/hgfsEscape.c
++++ b/lib/hgfs/hgfsEscape.c
+@@ -175,7 +175,7 @@ HgfsAddEscapeCharacter(char const * bufIn, // IN: input name
+ HgfsEscapeContext *escapeContext = (HgfsEscapeContext *)context;
+ uint32 charactersToCopy;
+ uint32 outputSpace;
+- char* illegal;
++ const char* illegal;
+ Bool result = TRUE;
+
+ ASSERT(offset >= escapeContext->processedOffset); // Scanning forward
+@@ -573,7 +573,7 @@ HgfsIsEscapeSequence(char const *bufIn, // IN: input name
+ uint32 length) // IN: length of the name in characters
+ {
+ if (bufIn[offset] == HGFS_ESCAPE_CHAR && offset > 0) {
+- char *substitute;
++ const char *substitute;
+ if (bufIn[offset - 1] == HGFS_ESCAPE_SUBSTITUE_CHAR && offset > 1) {
+ /*
+ * Possibly a valid sequence, check it must be preceded with a substitute
+@@ -887,7 +887,7 @@ HgfsEscapeUndoComponent(char *bufIn, // IN: Characters to be unesc
+ size_t offset = escapePointer - bufIn;
+
+ if (HgfsIsEscapeSequence(bufIn, offset, sizeIn)) {
+- char* substitute = strchr(HGFS_SUBSTITUTE_CHARS, bufIn[offset - 1]);
++ const char* substitute = strchr(HGFS_SUBSTITUTE_CHARS, bufIn[offset - 1]);
+ if (substitute != NULL) {
+ bufIn[offset - 1] = HGFS_ILLEGAL_CHARS[substitute - HGFS_SUBSTITUTE_CHARS];
+ } else if (bufIn[offset - 1] == HGFS_ESCAPE_SUBSTITUE_CHAR) {
+diff --git a/lib/hgfsServer/hgfsServerLinux.c b/lib/hgfsServer/hgfsServerLinux.c
+index 6ed49e2b7..00bed5684 100644
+--- a/lib/hgfsServer/hgfsServerLinux.c
++++ b/lib/hgfsServer/hgfsServerLinux.c
+@@ -1366,7 +1366,7 @@ static void
+ HgfsGetHiddenAttr(char const *fileName, // IN: Input filename
+ HgfsFileAttrInfo *attr) // OUT: Struct to copy into
+ {
+- char *baseName;
++ const char *baseName;
+
+ ASSERT(fileName);
+ ASSERT(attr);
+diff --git a/lib/misc/strutil.c b/lib/misc/strutil.c
+index 4fc6502e4..4be63b7b8 100644
+--- a/lib/misc/strutil.c
++++ b/lib/misc/strutil.c
+@@ -1454,6 +1454,7 @@ StrUtil_ReplaceAll(const char *orig, // IN
+ char *result;
+ const char *current;
+ char *tmp;
++ const char *tmp2;
+ size_t lenWhat;
+ size_t lenWith;
+ size_t occurrences = 0;
+@@ -1467,8 +1468,8 @@ StrUtil_ReplaceAll(const char *orig, // IN
+ lenWith = strlen(with);
+
+ current = orig;
+- while ((tmp = strstr(current, what)) != NULL) {
+- current = tmp + lenWhat;
++ while ((tmp2 = strstr(current, what)) != NULL) {
++ current = tmp2 + lenWhat;
+ ++occurrences;
+ }
+
+@@ -1695,7 +1696,7 @@ StrUtilHasListItem(char const *list, // IN:
+ char const *item, // IN:
+ int (*ncmp)(char const *, char const*, size_t)) // IN:
+ {
+- char *foundDelim;
++ const char *foundDelim;
+ int itemLen = strlen(item);
+
+ if (list == NULL) {
+diff --git a/lib/nicInfo/nicInfoPosix.c b/lib/nicInfo/nicInfoPosix.c
+index 6f20547b2..a387e377b 100644
+--- a/lib/nicInfo/nicInfoPosix.c
++++ b/lib/nicInfo/nicInfoPosix.c
+@@ -267,7 +267,7 @@ static Bool
+ IpEntryMatchesDevice(const char *devName,
+ const char *label)
+ {
+- char *p;
++ const char *p;
+ size_t n;
+
+ if ((p = strchr(label, ':')) != NULL) {
+diff --git a/libvmtools/i18n.c b/libvmtools/i18n.c
+index 3085f72d7..f61406d14 100644
+--- a/libvmtools/i18n.c
++++ b/libvmtools/i18n.c
+@@ -698,7 +698,7 @@ VMTools_BindTextDomain(const char *domain,
+ * If we couldn't find the catalog file for the user's language, see if
+ * we can find a more generic language (e.g., for "en_US", also try "en").
+ */
+- char *sep = Str_Strrchr(lang, '_');
++ const char *sep = Str_Strrchr(lang, '_');
+ if (sep != NULL) {
+ if (usrlang == NULL) {
+ usrlang = Util_SafeStrdup(lang);
+diff --git a/services/plugins/vix/vixTools.c b/services/plugins/vix/vixTools.c
+index b2079a10d..6a8498ffb 100644
+--- a/services/plugins/vix/vixTools.c
++++ b/services/plugins/vix/vixTools.c
+@@ -925,7 +925,7 @@ VixToolsBuildUserEnvironmentTable(const char * const *envp) // IN: optional
+ for (; NULL != *envp; envp++) {
+ char *name;
+ char *value;
+- char *whereToSplit;
++ const char *whereToSplit;
+ size_t nameLen;
+
+ whereToSplit = strchr(*envp, '=');
+--
+2.47.3
+
diff --git a/package/openvmtools/0012-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch b/package/openvmtools/0012-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch
deleted file mode 100644
index dbe2c29a2b..0000000000
--- a/package/openvmtools/0012-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 3f0580f2546de8be7acf1bc78a55a257bc638ebe Mon Sep 17 00:00:00 2001
-From: Bartosz Brachaczek <b.brachaczek@gmail.com>
-Date: Tue, 12 Nov 2019 14:31:08 +0100
-Subject: [PATCH] Make HgfsConvertFromNtTimeNsec aware of 64-bit time_t on i386
-
-I verified that this function behaves as expected on x86_64, i386 with
-32-bit time_t, and i386 with 64-bit time_t for the following values of
-ntTtime:
-
-UNIX_EPOCH-1, UNIX_EPOCH, UNIX_EPOCH+1, UNIX_S32_MAX-1, UNIX_S32_MAX,
-UNIX_S32_MAX+1, UNIX_S32_MAX*2+1
-
-I did not verify whether the use of Div643264 is optimal, performance
-wise.
-
-Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
----
- lib/hgfs/hgfsUtil.c | 34 +++++++++++++++++++---------------
- 1 file changed, 19 insertions(+), 15 deletions(-)
-
-diff --git a/lib/hgfs/hgfsUtil.c b/lib/hgfs/hgfsUtil.c
-index cc580ab8..49b10040 100644
---- a/lib/hgfs/hgfsUtil.c
-+++ b/lib/hgfs/hgfsUtil.c
-@@ -110,23 +110,21 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format
- uint64 ntTime) // IN: Time in Windows NT format
- {
- #ifdef __i386__
-- uint32 sec;
-- uint32 nsec;
-+ uint64 sec64;
-+ uint32 sec32, nsec;
-+#endif
-
- ASSERT(unixTime);
-- /* We assume that time_t is 32bit */
-- ASSERT_ON_COMPILE(sizeof (unixTime->tv_sec) == 4);
-
-- /* Cap NT time values that are outside of Unix time's range */
-+ if (sizeof (unixTime->tv_sec) == 4) {
-+ /* Cap NT time values that are outside of Unix time's range */
-
-- if (ntTime >= UNIX_S32_MAX) {
-- unixTime->tv_sec = 0x7FFFFFFF;
-- unixTime->tv_nsec = 0;
-- return 1;
-+ if (ntTime >= UNIX_S32_MAX) {
-+ unixTime->tv_sec = 0x7FFFFFFF;
-+ unixTime->tv_nsec = 0;
-+ return 1;
-+ }
- }
--#else
-- ASSERT(unixTime);
--#endif
-
- if (ntTime < UNIX_EPOCH) {
- unixTime->tv_sec = 0;
-@@ -135,9 +133,15 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format
- }
-
- #ifdef __i386__
-- Div643232(ntTime - UNIX_EPOCH, 10000000, &sec, &nsec);
-- unixTime->tv_sec = sec;
-- unixTime->tv_nsec = nsec * 100;
-+ if (sizeof (unixTime->tv_sec) == 4) {
-+ Div643232(ntTime - UNIX_EPOCH, 10000000, &sec32, &nsec);
-+ unixTime->tv_sec = sec32;
-+ unixTime->tv_nsec = nsec * 100;
-+ } else {
-+ Div643264(ntTime - UNIX_EPOCH, 10000000, &sec64, &nsec);
-+ unixTime->tv_sec = sec64;
-+ unixTime->tv_nsec = nsec * 100;
-+ }
- #else
- unixTime->tv_sec = (ntTime - UNIX_EPOCH) / 10000000;
- unixTime->tv_nsec = ((ntTime - UNIX_EPOCH) % 10000000) * 100;
---
-2.25.1
-
diff --git a/package/openvmtools/0015-glib_stubs-avoid-GLib-g_free-macro-redefinition-error.patch b/package/openvmtools/0012-glib_stubs-avoid-GLib-g_free-macro-redefinition-erro.patch
similarity index 84%
rename from package/openvmtools/0015-glib_stubs-avoid-GLib-g_free-macro-redefinition-error.patch
rename to package/openvmtools/0012-glib_stubs-avoid-GLib-g_free-macro-redefinition-erro.patch
index 226fd5a15f..6b58002c4b 100644
--- a/package/openvmtools/0015-glib_stubs-avoid-GLib-g_free-macro-redefinition-error.patch
+++ b/package/openvmtools/0012-glib_stubs-avoid-GLib-g_free-macro-redefinition-erro.patch
@@ -1,4 +1,4 @@
-From bfd12cf73d81919843383598e4a9e64c6e5fd97a Mon Sep 17 00:00:00 2001
+From 34b3bfcbb8162a96b5a65a6864f736dff1ccd70b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 21 Nov 2025 00:29:10 -0800
Subject: [PATCH] glib_stubs: avoid GLib g_free macro redefinition error
@@ -9,13 +9,13 @@ inside the function signature and breaking the build.
Undefine the macro before defining the stub.
-Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream: https://github.com/vmware/open-vm-tools/pull/779
-Signed-off-by: John Ernberg <j@j-ernberg.se>
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
- open-vm-tools/lib/rpcChannel/glib_stubs.c | 3 +++
+ lib/rpcChannel/glib_stubs.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/rpcChannel/glib_stubs.c b/lib/rpcChannel/glib_stubs.c
@@ -32,3 +32,6 @@ index c32deb073..cb89c6a87 100644
void g_free(void *p) { free(p); }
void g_mutex_init(GMutex *mutex) { }
+--
+2.47.3
+
diff --git a/package/openvmtools/0013-Properly-check-authorization-on-incoming-guestOps-re.patch b/package/openvmtools/0013-Properly-check-authorization-on-incoming-guestOps-re.patch
deleted file mode 100644
index c257e77504..0000000000
--- a/package/openvmtools/0013-Properly-check-authorization-on-incoming-guestOps-re.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From bb9f9ffbb151397545f921cee5b6a4933c6eea80 Mon Sep 17 00:00:00 2001
-Message-Id: <bb9f9ffbb151397545f921cee5b6a4933c6eea80.1666169374.git.stefan@agner.ch>
-From: John Wolfe <jwolfe@vmware.com>
-Date: Wed, 10 Aug 2022 06:12:02 -0700
-Subject: [PATCH] Properly check authorization on incoming guestOps requests
-
-Fix public pipe request checks. Only a SessionRequest type should
-be accepted on the public pipe.
-
-CVE: CVE-2022-31676
-Upstream: https://github.com/vmware/open-vm-tools/blob/CVE-2022-31676.patch/1205-Properly-check-authorization-on-incoming-guestOps-re.patch
-Signed-off-by: Stefan Agner <stefan@agner.ch>
----
- vgauth/serviceImpl/proto.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/vgauth/serviceImpl/proto.c b/vgauth/serviceImpl/proto.c
-index db7159ee..c4f85b02 100644
---- a/vgauth/serviceImpl/proto.c
-+++ b/vgauth/serviceImpl/proto.c
-@@ -1,5 +1,5 @@
- /*********************************************************
-- * Copyright (C) 2011-2016,2019-2021 VMware, Inc. All rights reserved.
-+ * Copyright (c) 2011-2016,2019-2022 VMware, Inc. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
-@@ -1201,6 +1201,10 @@ Proto_SecurityCheckRequest(ServiceConnection *conn,
- VGAuthError err;
- gboolean isSecure = ServiceNetworkIsConnectionPrivateSuperUser(conn);
-
-+ if (conn->isPublic && req->reqType != PROTO_REQUEST_SESSION_REQ) {
-+ return VGAUTH_E_PERMISSION_DENIED;
-+ }
-+
- switch (req->reqType) {
- /*
- * This comes over the public connection; alwsys let it through.
---
-2.38.0
-
diff --git a/package/openvmtools/0014-CVE-2025-22247-1100-1225-VGAuth-updates.patch b/package/openvmtools/0014-CVE-2025-22247-1100-1225-VGAuth-updates.patch
deleted file mode 100644
index 48962857ba..0000000000
--- a/package/openvmtools/0014-CVE-2025-22247-1100-1225-VGAuth-updates.patch
+++ /dev/null
@@ -1,383 +0,0 @@
-From 2a2607c6bd94ae22a937fd2adde7472d9a6d506c Mon Sep 17 00:00:00 2001
-From: John Wolfe <john.wolfe@broadcom.com>
-Date: Mon, 5 May 2025 16:10:07 -0700
-Subject: [PATCH] Validate user names and file paths
-
-Prevent usage of illegal characters in user names and file paths.
-Also, disallow unexpected symlinks in file paths.
-
-This patch contains changes to common source files not applicable
-to open-vm-tools.
-
-All files being updated should be consider to have the copyright to
-be updated to:
-
- * Copyright (c) XXXX-2025 Broadcom. All Rights Reserved.
- * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
-
-The 2025 Broadcom copyright information update is not part of this
-patch set to allow the patch to be easily applied to previous
-open-vm-tools source releases.
-
-CVE: CVE-2025-22247
-Upstream: https://github.com/vmware/blob/CVE-2025-22247.patch/CVE-2025-22247-1100-1225-VGAuth-updates.patch
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
----
- vgauth/common/VGAuthUtil.c | 33 +++++++++
- vgauth/common/VGAuthUtil.h | 2 +
- vgauth/common/prefs.h | 3 +
- vgauth/common/usercheck.c | 28 +++++--
- vgauth/serviceImpl/alias.c | 74 ++++++++++++++++++-
- vgauth/serviceImpl/service.c | 27 +++++++
- vgauth/serviceImpl/serviceInt.h | 1 +
- 7 files changed, 160 insertions(+), 8 deletions(-)
-
-diff --git a/vgauth/common/VGAuthUtil.c b/vgauth/common/VGAuthUtil.c
-index 76383c462..9c2adb8d0 100644
---- a/vgauth/common/VGAuthUtil.c
-+++ b/vgauth/common/VGAuthUtil.c
-@@ -309,3 +309,36 @@ Util_Assert(const char *cond,
- #endif
- g_assert(0);
- }
-+
-+
-+/*
-+ ******************************************************************************
-+ * Util_Utf8CaseCmp -- */ /**
-+ *
-+ * Case insensitive comparison for utf8 strings which can have non-ascii
-+ * characters.
-+ *
-+ * @param[in] str1 Null terminated utf8 string.
-+ * @param[in] str2 Null terminated utf8 string.
-+ *
-+ ******************************************************************************
-+ */
-+
-+int
-+Util_Utf8CaseCmp(const gchar *str1,
-+ const gchar *str2)
-+{
-+ int ret;
-+ gchar *str1Case;
-+ gchar *str2Case;
-+
-+ str1Case = g_utf8_casefold(str1, -1);
-+ str2Case = g_utf8_casefold(str2, -1);
-+
-+ ret = g_strcmp0(str1Case, str2Case);
-+
-+ g_free(str1Case);
-+ g_free(str2Case);
-+
-+ return ret;
-+}
-diff --git a/vgauth/common/VGAuthUtil.h b/vgauth/common/VGAuthUtil.h
-index f7f3aa216..ef32a91da 100644
---- a/vgauth/common/VGAuthUtil.h
-+++ b/vgauth/common/VGAuthUtil.h
-@@ -105,4 +105,6 @@ gboolean Util_CheckExpiration(const GTimeVal *start, unsigned int duration);
-
- void Util_Assert(const char *cond, const char *file, int lineNum);
-
-+int Util_Utf8CaseCmp(const gchar *str1, const gchar *str2);
-+
- #endif
-diff --git a/vgauth/common/prefs.h b/vgauth/common/prefs.h
-index ff116928c..7cddb3e17 100644
---- a/vgauth/common/prefs.h
-+++ b/vgauth/common/prefs.h
-@@ -165,6 +165,9 @@ msgCatalog = /etc/vmware-tools/vgauth/messages
- /** Where the localized version of the messages were installed. */
- #define VGAUTH_PREF_LOCALIZATION_DIR "msgCatalog"
-
-+/** If symlinks or junctions are allowed in alias store file path */
-+#define VGAUTH_PREF_ALLOW_SYMLINKS "allowSymlinks"
-+
- /*
- * Pref values
- */
-diff --git a/vgauth/common/usercheck.c b/vgauth/common/usercheck.c
-index 31eeb5a77..145f1f056 100644
---- a/vgauth/common/usercheck.c
-+++ b/vgauth/common/usercheck.c
-@@ -78,6 +78,8 @@
- * Solaris as well, but that path is untested.
- */
-
-+#define MAX_USER_NAME_LEN 256
-+
- /*
- * A single retry works for the LDAP case, but try more often in case NIS
- * or something else has a related issue. Note that a bad username/uid won't
-@@ -354,17 +356,29 @@ Usercheck_UsernameIsLegal(const gchar *userName)
- *
- */
- size_t len;
--#ifdef _WIN32
-- // allow '\' in for Windows domain usernames
-- char *illegalChars = "<>/";
--#else
-- char *illegalChars = "\\<>/";
--#endif
-+ size_t i = 0;
-+ int backSlashCnt = 0;
-+ /*
-+ * As user names are used to generate its alias store file name/path, it
-+ * should not contain path traversal characters ('/' and '\').
-+ */
-+ char *illegalChars = "<>/\\";
-
- len = strlen(userName);
-- if (strcspn(userName, illegalChars) != len) {
-+ if (len > MAX_USER_NAME_LEN) {
- return FALSE;
- }
-+
-+ while ((i += strcspn(userName + i, illegalChars)) < len) {
-+ /*
-+ * One backward slash is allowed for domain\username separator.
-+ */
-+ if (userName[i] != '\\' || ++backSlashCnt > 1) {
-+ return FALSE;
-+ }
-+ ++i;
-+ }
-+
- return TRUE;
- }
-
-diff --git a/vgauth/serviceImpl/alias.c b/vgauth/serviceImpl/alias.c
-index b28351eea..687d1b373 100644
---- a/vgauth/serviceImpl/alias.c
-+++ b/vgauth/serviceImpl/alias.c
-@@ -41,6 +41,7 @@
- #include "certverify.h"
- #include "VGAuthProto.h"
- #include "vmxlog.h"
-+#include "VGAuthUtil.h"
-
- // puts the identity store in an easy to find place
- #undef WIN_TEST_MODE
-@@ -66,6 +67,7 @@
- #define ALIASSTORE_FILE_PREFIX "user-"
- #define ALIASSTORE_FILE_SUFFIX ".xml"
-
-+static gboolean allowSymlinks = FALSE;
- static gchar *aliasStoreRootDir = DEFAULT_ALIASSTORE_ROOT_DIR;
-
- #ifdef _WIN32
-@@ -252,6 +254,12 @@ mapping file layout:
-
- */
-
-+#ifdef _WIN32
-+#define ISPATHSEP(c) ((c) == '\\' || (c) == '/')
-+#else
-+#define ISPATHSEP(c) ((c) == '/')
-+#endif
-+
-
- /*
- ******************************************************************************
-@@ -466,6 +474,7 @@ ServiceLoadFileContentsWin(const gchar *fileName,
- gunichar2 *fileNameW = NULL;
- BOOL ok;
- DWORD bytesRead;
-+ gchar *realPath = NULL;
-
- *fileSize = 0;
- *contents = NULL;
-@@ -622,6 +631,22 @@ ServiceLoadFileContentsWin(const gchar *fileName,
- goto done;
- }
-
-+ if (!allowSymlinks) {
-+ /*
-+ * Check if fileName is real path.
-+ */
-+ if ((realPath = ServiceFileGetPathByHandle(hFile)) == NULL) {
-+ err = VGAUTH_E_FAIL;
-+ goto done;
-+ }
-+ if (Util_Utf8CaseCmp(realPath, fileName) != 0) {
-+ Warning("%s: Real path (%s) is not same as file path (%s)\n",
-+ __FUNCTION__, realPath, fileName);
-+ err = VGAUTH_E_FAIL;
-+ goto done;
-+ }
-+ }
-+
- /*
- * Now finally read the contents.
- */
-@@ -650,6 +675,7 @@ done:
- CloseHandle(hFile);
- }
- g_free(fileNameW);
-+ g_free(realPath);
-
- return err;
- }
-@@ -672,6 +698,7 @@ ServiceLoadFileContentsPosix(const gchar *fileName,
- gchar *buf;
- gchar *bp;
- int fd = -1;
-+ gchar realPath[PATH_MAX] = { 0 };
-
- *fileSize = 0;
- *contents = NULL;
-@@ -817,6 +844,23 @@ ServiceLoadFileContentsPosix(const gchar *fileName,
- goto done;
- }
-
-+ if (!allowSymlinks) {
-+ /*
-+ * Check if fileName is real path.
-+ */
-+ if (realpath(fileName, realPath) == NULL) {
-+ Warning("%s: realpath() failed. errno (%d)\n", __FUNCTION__, errno);
-+ err = VGAUTH_E_FAIL;
-+ goto done;
-+ }
-+ if (g_strcmp0(realPath, fileName) != 0) {
-+ Warning("%s: Real path (%s) is not same as file path (%s)\n",
-+ __FUNCTION__, realPath, fileName);
-+ err = VGAUTH_E_FAIL;
-+ goto done;
-+ }
-+ }
-+
- /*
- * All sanity checks passed; read the bits.
- */
-@@ -2803,8 +2847,13 @@ ServiceAliasRemoveAlias(const gchar *reqUserName,
-
- /*
- * We don't verify the user exists in a Remove operation, to allow
-- * cleanup of deleted user's stores.
-+ * cleanup of deleted user's stores, but we do check whether the
-+ * user name is legal or not.
- */
-+ if (!Usercheck_UsernameIsLegal(userName)) {
-+ Warning("%s: Illegal user name '%s'\n", __FUNCTION__, userName);
-+ return VGAUTH_E_FAIL;
-+ }
-
- if (!CertVerify_IsWellFormedPEMCert(pemCert)) {
- return VGAUTH_E_INVALID_CERTIFICATE;
-@@ -3036,6 +3085,16 @@ ServiceAliasQueryAliases(const gchar *userName,
- }
- #endif
-
-+ /*
-+ * We don't verify the user exists in a Query operation to allow
-+ * cleaning up after a deleted user, but we do check whether the
-+ * user name is legal or not.
-+ */
-+ if (!Usercheck_UsernameIsLegal(userName)) {
-+ Warning("%s: Illegal user name '%s'\n", __FUNCTION__, userName);
-+ return VGAUTH_E_FAIL;
-+ }
-+
- err = AliasLoadAliases(userName, num, aList);
- if (VGAUTH_E_OK != err) {
- Warning("%s: failed to load Aliases for '%s'\n", __FUNCTION__, userName);
-@@ -3294,6 +3353,7 @@ ServiceAliasInitAliasStore(void)
- VGAuthError err = VGAUTH_E_OK;
- gboolean saveBadDir = FALSE;
- char *defaultDir = NULL;
-+ size_t len;
-
- #ifdef _WIN32
- {
-@@ -3324,6 +3384,10 @@ ServiceAliasInitAliasStore(void)
- defaultDir = g_strdup(DEFAULT_ALIASSTORE_ROOT_DIR);
- #endif
-
-+ allowSymlinks = Pref_GetBool(gPrefs,
-+ VGAUTH_PREF_ALLOW_SYMLINKS,
-+ VGAUTH_PREF_GROUP_NAME_SERVICE,
-+ FALSE);
- /*
- * Find the alias store directory. This allows an installer to put
- * it somewhere else if necessary.
-@@ -3337,6 +3401,14 @@ ServiceAliasInitAliasStore(void)
- VGAUTH_PREF_GROUP_NAME_SERVICE,
- defaultDir);
-
-+ /*
-+ * Remove the trailing separator if any from aliasStoreRootDir path.
-+ */
-+ len = strlen(aliasStoreRootDir);
-+ if (ISPATHSEP(aliasStoreRootDir[len - 1])) {
-+ aliasStoreRootDir[len - 1] = '\0';
-+ }
-+
- Log("Using '%s' for alias store root directory\n", aliasStoreRootDir);
-
- g_free(defaultDir);
-diff --git a/vgauth/serviceImpl/service.c b/vgauth/serviceImpl/service.c
-index d4716526c..e053ed0fa 100644
---- a/vgauth/serviceImpl/service.c
-+++ b/vgauth/serviceImpl/service.c
-@@ -28,6 +28,7 @@
- #include "VGAuthUtil.h"
- #ifdef _WIN32
- #include "winUtil.h"
-+#include <glib.h>
- #endif
-
- static ServiceStartListeningForIOFunc startListeningIOFunc = NULL;
-@@ -283,9 +284,35 @@ static gchar *
- ServiceUserNameToPipeName(const char *userName)
- {
- gchar *escapedName = ServiceEncodeUserName(userName);
-+#ifdef _WIN32
-+ /*
-+ * Adding below pragma only in windows to suppress the compile time warning
-+ * about unavailability of g_uuid_string_random() since compiler flag
-+ * GLIB_VERSION_MAX_ALLOWED is defined to GLIB_VERSION_2_34.
-+ * TODO: Remove below pragma when GLIB_VERSION_MAX_ALLOWED is bumped up to
-+ * or greater than GLIB_VERSION_2_52.
-+ */
-+#pragma warning(suppress : 4996)
-+ gchar *uuidStr = g_uuid_string_random();
-+ /*
-+ * Add a unique suffix to avoid a name collision with an existing named pipe
-+ * created by someone else (intentionally or by accident).
-+ * This is not needed for Linux; name collisions on sockets are already
-+ * avoided there since (1) file system paths to VGAuthService sockets are in
-+ * a directory that is writable only by root and (2) VGAuthService unlinks a
-+ * socket path before binding it to a newly created socket.
-+ */
-+ gchar *pipeName = g_strdup_printf("%s-%s-%s",
-+ SERVICE_PUBLIC_PIPE_NAME,
-+ escapedName,
-+ uuidStr);
-+
-+ g_free(uuidStr);
-+#else
- gchar *pipeName = g_strdup_printf("%s-%s",
- SERVICE_PUBLIC_PIPE_NAME,
- escapedName);
-+#endif
-
- g_free(escapedName);
- return pipeName;
-diff --git a/vgauth/serviceImpl/serviceInt.h b/vgauth/serviceImpl/serviceInt.h
-index ef49f42c2..c37f42fa6 100644
---- a/vgauth/serviceImpl/serviceInt.h
-+++ b/vgauth/serviceImpl/serviceInt.h
-@@ -441,6 +441,7 @@ VGAuthError ServiceFileVerifyAdminGroupOwnedByHandle(const HANDLE hFile);
- VGAuthError ServiceFileVerifyEveryoneReadableByHandle(const HANDLE hFile);
- VGAuthError ServiceFileVerifyUserAccessByHandle(const HANDLE hFile,
- const char *userName);
-+gchar *ServiceFileGetPathByHandle(HANDLE hFile);
- #else
- VGAuthError ServiceFileVerifyFileOwnerAndPerms(const char *fileName,
- const char *userName,
---
-2.43.5
-
diff --git a/package/openvmtools/openvmtools.hash b/package/openvmtools/openvmtools.hash
index 081538fbf3..a3532c6a02 100644
--- a/package/openvmtools/openvmtools.hash
+++ b/package/openvmtools/openvmtools.hash
@@ -1,3 +1,4 @@
+# From https://github.com/vmware/open-vm-tools/releases/tag/stable-13.1.0
+sha256 67a23d505aca77127b081445f758e269b1009e8824cf7f6f2d6efafb0b14d0fd open-vm-tools-13.1.0-25218885.tar.gz
# locally computed
-sha256 2053daf7b224ab7ae1a9cfcd6ae12494c646e2bf9aaca998225bd082a4a43fb7 open-vm-tools-11.3.5-18557794.tar.gz
sha256 f734933bd7d49aef25aaf897ed7281ee822e8635056e69b895a7d2e668937fc5 COPYING
diff --git a/package/openvmtools/openvmtools.mk b/package/openvmtools/openvmtools.mk
index 58876c877a..97e1c2f9ee 100644
--- a/package/openvmtools/openvmtools.mk
+++ b/package/openvmtools/openvmtools.mk
@@ -4,8 +4,8 @@
#
################################################################################
-OPENVMTOOLS_VERSION_MAJOR = 11.3.5
-OPENVMTOOLS_VERSION = $(OPENVMTOOLS_VERSION_MAJOR)-18557794
+OPENVMTOOLS_VERSION_MAJOR = 13.1.0
+OPENVMTOOLS_VERSION = $(OPENVMTOOLS_VERSION_MAJOR)-25218885
OPENVMTOOLS_SITE = https://github.com/vmware/open-vm-tools/releases/download/stable-$(OPENVMTOOLS_VERSION_MAJOR)
OPENVMTOOLS_SOURCE = open-vm-tools-$(OPENVMTOOLS_VERSION).tar.gz
OPENVMTOOLS_LICENSE = LGPL-2.1
@@ -17,18 +17,13 @@ OPENVMTOOLS_CPE_ID_PRODUCT = tools
# previously connected to this CVE ID because of a typo, is at CVE-2022-31693
OPENVMTOOLS_IGNORE_CVES += CVE-2021-31693
-# 0013-Properly-check-authorization-on-incoming-guestOps-re.patch
-OPENVMTOOLS_IGNORE_CVES += CVE-2022-31676
-
-# 0014-CVE-2025-22247-1100-1225-VGAuth-updates.patch
-OPENVMTOOLS_IGNORE_CVES += CVE-2025-22247
-
# configure.ac is patched
OPENVMTOOLS_AUTORECONF = YES
OPENVMTOOLS_CONF_OPTS = --with-dnet \
--without-icu --without-x --without-gtk2 \
--without-gtkmm --without-kernel-modules \
- --disable-deploypkg --without-xerces
+ --disable-deploypkg --without-xerces \
+ --disable-vgauth --disable-containerinfo
OPENVMTOOLS_CONF_ENV += \
CUSTOM_DNET_CPPFLAGS=" " \
LIBS=$(TARGET_NLS_LIBS)
@@ -39,7 +34,10 @@ OPENVMTOOLS_DEPENDENCIES = \
$(TARGET_NLS_DEPENDENCIES)
ifeq ($(BR2_PACKAGE_LIBTIRPC),y)
+OPENVMTOOLS_CONF_OPTS += --with-tirpc
OPENVMTOOLS_DEPENDENCIES += libtirpc
+else
+OPENVMTOOLS_CONF_OPTS += --without-tirpc
endif
ifeq ($(BR2_PACKAGE_LIBXCRYPT),y)
@@ -48,7 +46,11 @@ endif
# When libfuse is available, openvmtools can build vmblock-fuse, so
# make sure that libfuse gets built first
-ifeq ($(BR2_PACKAGE_LIBFUSE),y)
+ifeq ($(BR2_PACKAGE_LIBFUSE3),y)
+OPENVMTOOLS_CONF_OPTS += --with-fuse=fuse3
+OPENVMTOOLS_DEPENDENCIES += libfuse3
+else ifeq ($(BR2_PACKAGE_LIBFUSE),y)
+OPENVMTOOLS_CONF_OPTS += --with-fuse=fuse
OPENVMTOOLS_DEPENDENCIES += libfuse
endif
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 25/66] package/poco: bump version to 1.15.3
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (23 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 24/66] package/openvmtools: bump version to 13.1.0 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 26/66] package/resiprocate: security bump version to 1.14.0 Bernd Kuhls
` (40 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
https://github.com/pocoproject/poco/blob/poco-1.15.3-release/CHANGELOG
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/poco/poco.hash | 2 +-
package/poco/poco.mk | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package/poco/poco.hash b/package/poco/poco.hash
index 6979a9a1e4..4c132f9742 100644
--- a/package/poco/poco.hash
+++ b/package/poco/poco.hash
@@ -1,3 +1,3 @@
# Locally computed
-sha256 47394ea7ddb7b0a40e1a5be896f8f5dc77cfdc4f561d2e7131ecf582df5a0c3a poco-1.14.2.tar.gz
+sha256 4f112fea59e0c65f0fffe30a4957f8d66cf41528c21dd9903e6d7550022c794e poco-1.15.3.tar.gz
sha256 c4b1e1e5f36d8331737231fefcc30f5714326aec7c387ad59a8115eb0ba7d6b5 LICENSE
diff --git a/package/poco/poco.mk b/package/poco/poco.mk
index 63279d530e..7e2a9014bd 100644
--- a/package/poco/poco.mk
+++ b/package/poco/poco.mk
@@ -4,7 +4,7 @@
#
################################################################################
-POCO_VERSION = 1.14.2
+POCO_VERSION = 1.15.3
POCO_SITE = $(call github,pocoproject,poco,poco-$(POCO_VERSION)-release)
POCO_LICENSE = BSL-1.0
POCO_LICENSE_FILES = LICENSE
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 26/66] package/resiprocate: security bump version to 1.14.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (24 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 25/66] package/poco: bump version to 1.15.3 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-10-03 13:41 ` Thomas Petazzoni via buildroot
2026-09-29 18:35 ` [Buildroot] [PATCH v7 27/66] package/resiprocate: Fix build with OpenSSL 4.0.0 Bernd Kuhls
` (39 subsequent siblings)
65 siblings, 1 reply; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
https://github.com/resiprocate/resiprocate/releases/tag/resiprocate-1.14.0
Fixes the following security problems:
Use CSPRNG for security-sensitive SIP/STUN/TURN tokens (CWE-338)
Use crypto RNG when generating certificates and nonce
Use crypto RNG to generate various IDs that are supposed to be unique
Improve transaction ID uniqueness
Authenticate STUN Binding responses (CWE-345)
Add Digest Authentication Support for SHA256 and SHA512/256 algorithms
Add new DigestStream class, capable of MD5, SHA1, SHA256, SHA512 and SHA512/256 hash algorithms
TLS handshake fixes
Avoid using undefined client verification mode in TLS connection
Disable TLS compression by default
Correct TLS logging
Allow applications to get TLS connection/handshake errors
Propagate SSL Certificate Validation errors to ConnectionTerminated event/message
Cleanup SecurityAttributes
WinSecurity: expand constructors to allow setting of defaultPrivateKeyPassPhrase and DHParamsFilename
WinSecurity: perform normal preload process so that domain certificates can be loaded
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
package/resiprocate/resiprocate.hash | 2 +-
package/resiprocate/resiprocate.mk | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package/resiprocate/resiprocate.hash b/package/resiprocate/resiprocate.hash
index 93a7131141..be09ac4624 100644
--- a/package/resiprocate/resiprocate.hash
+++ b/package/resiprocate/resiprocate.hash
@@ -1,3 +1,3 @@
# Locally Computed
-sha256 059fda8f63c456fd61130d468a67655cfeafb5ba8ff5c1d0a55dc383f83e4fba resiprocate-1.13.2.tar.gz
+sha256 f132e4d0fcae0c155f91e5dad608a9985e199e4e3c09b6029a70b1b3b6d0b156 resiprocate-1.14.0.tar.gz
sha256 8c93f7d6085486e9d24b7c6f9c662d92e0b65571003ad15d0827bb99fd924261 LICENSE.md
diff --git a/package/resiprocate/resiprocate.mk b/package/resiprocate/resiprocate.mk
index ab8299302a..4af7bb7e76 100644
--- a/package/resiprocate/resiprocate.mk
+++ b/package/resiprocate/resiprocate.mk
@@ -4,7 +4,7 @@
#
################################################################################
-RESIPROCATE_VERSION = 1.13.2
+RESIPROCATE_VERSION = 1.14.0
RESIPROCATE_SITE = $(call github,resiprocate,resiprocate,resiprocate-$(RESIPROCATE_VERSION))
RESIPROCATE_LICENSE = VSL-1.0, BSD-3-Clause
RESIPROCATE_LICENSE_FILES = LICENSE.md
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 27/66] package/resiprocate: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (25 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 26/66] package/resiprocate: security bump version to 1.14.0 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-10-03 13:42 ` Thomas Petazzoni via buildroot
2026-09-29 18:35 ` [Buildroot] [PATCH v7 28/66] package/snort3: fix build error with numa support Bernd Kuhls
` (38 subsequent siblings)
65 siblings, 1 reply; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...precated-OpenSSL-calls-fix-upcoming-.patch | 597 ++++++++++++++++++
...aining-build-errors-with-OpenSSL-4.x.patch | 47 ++
2 files changed, 644 insertions(+)
create mode 100644 package/resiprocate/0001-ssl-modernize-deprecated-OpenSSL-calls-fix-upcoming-.patch
create mode 100644 package/resiprocate/0002-ssl-Fix-remaining-build-errors-with-OpenSSL-4.x.patch
diff --git a/package/resiprocate/0001-ssl-modernize-deprecated-OpenSSL-calls-fix-upcoming-.patch b/package/resiprocate/0001-ssl-modernize-deprecated-OpenSSL-calls-fix-upcoming-.patch
new file mode 100644
index 0000000000..f4f1c55976
--- /dev/null
+++ b/package/resiprocate/0001-ssl-modernize-deprecated-OpenSSL-calls-fix-upcoming-.patch
@@ -0,0 +1,597 @@
+From 10cfb3678293b3485dc73d781428da0205b11144 Mon Sep 17 00:00:00 2001
+From: Scott Godin <sgodin@sipspectrum.com>
+Date: Fri, 18 Sep 2026 16:38:36 -0400
+Subject: [PATCH] ssl: modernize deprecated OpenSSL calls; fix upcoming OpenSSL
+ forward-compat break (#489)
+
+OpenSSL 3.0 deprecated several APIs the code still called directly,
+producing warnings on current builds, and issue #489 shows an even
+newer OpenSSL (which makes X509_get_subject_name()/X509_get_issuer_name()
+return const and ASN1_STRING fully opaque) fails to compile outright.
+Fix both while keeping the project's existing OpenSSL 1.1.1 floor
+(rutil/ssl/OpenSSLInit.cxx and resip/stack/DtlsMessage.hxx both already
+#error below that version) intact.
+
+Deprecated since OpenSSL 3.0, version-gated so 1.1.1-2.x is unaffected:
+- SSL_get_peer_certificate() -> SSL_get1_peer_certificate() on
+ OpenSSL >= 3.0 (TlsConnection.cxx, DtlsSocket.cxx,
+ AsyncTlsSocketBase.cxx, TurnTlsSocket.cxx)
+- SSLv23_method() -> TLS_method(), a pure alias rename with no
+ behavior change; the SSLv23 vs TLSv1 protocol-version split is
+ unaffected, since that's controlled separately by
+ SSL_CTX_set_min/max_proto_version (Security.cxx, TlsBaseTransport.cxx)
+
+Deprecated since OpenSSL 1.1.0, safe on all currently-supported versions:
+- RSA_generate_key() -> RSA_generate_key_ex() (makeSelfCert.cxx,
+ makeCert.cxx, CreateCert.cxx)
+- X509_get_notBefore()/X509_get_notAfter() -> X509_getm_notBefore()/
+ X509_getm_notAfter() (makeSelfCert.cxx, makeCert.cxx)
+- drop SSL_library_init()/SSL_load_error_strings()/
+ OpenSSL_add_all_algorithms()/ERR_load_crypto_strings(), which are
+ no-ops since 1.1.0 auto-init (makeSelfCert.cxx, testDtlsWrapper.cxx)
+
+Forward-compat fixes for #489:
+- const-qualify X509_NAME* locals taken from X509_get_subject_name()
+ (Security.cxx, AsyncTlsSocketBase.cxx, TurnTlsSocket.cxx)
+- testCertSerial.cxx built its subject/issuer name by mutating the
+ cert's own embedded X509_NAME in place, which only works while that
+ accessor returns non-const; rebuild it via X509_NAME_new() and
+ X509_set_subject_name()/X509_set_issuer_name() instead, matching
+ the pattern Security.cxx and CreateCert.cxx already use
+- replace direct ASN1_STRING ->data/->length member access with
+ ASN1_STRING_get0_data()/ASN1_STRING_length() in subjectAltName
+ parsing (Security.cxx, AsyncTlsSocketBase.cxx, TurnTlsSocket.cxx)
+
+Also remove a dead EVP_MD_CTX_new()/EVP_MD_CTX_free() shim in
+DigestStream.cxx guarded by `OPENSSL_VERSION_NUMBER < 0x10100000L`
+(pre-1.1.0): unreachable given the project's 1.1.1 floor, and
+misleading since it implied OpenSSL 1.0.x support that doesn't exist.
+
+Upstream: https://github.com/resiprocate/resiprocate/commit/10cfb3678293b3485dc73d781428da0205b11144
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ reTurn/AsyncTlsSocketBase.cxx | 12 ++--
+ reTurn/client/TurnTlsSocket.cxx | 12 ++--
+ reflow/dtls_wrapper/DtlsSocket.cxx | 5 ++
+ reflow/dtls_wrapper/test/CreateCert.cxx | 14 ++++-
+ reflow/dtls_wrapper/test/testDtlsWrapper.cxx | 8 +--
+ resip/stack/makeCert.cxx | 19 ++++--
+ resip/stack/ssl/Security.cxx | 62 ++++++++++----------
+ resip/stack/ssl/TlsBaseTransport.cxx | 13 ++--
+ resip/stack/ssl/TlsConnection.cxx | 13 +++-
+ resip/stack/test/makeSelfCert.cxx | 27 ++++++---
+ rutil/DigestStream.cxx | 13 +---
+ 12 files changed, 123 insertions(+), 79 deletions(-)
+
+diff --git a/reTurn/AsyncTlsSocketBase.cxx b/reTurn/AsyncTlsSocketBase.cxx
+index ef60ca956..1594be1fd 100644
+--- a/reTurn/AsyncTlsSocketBase.cxx
++++ b/reTurn/AsyncTlsSocketBase.cxx
+@@ -141,7 +141,11 @@ AsyncTlsSocketBase::validateServerCertificateHostname()
+ << SSL_CIPHER_get_name(ciph) << " " );
+
+ // get the certificate - should always exist since mode is set for SSL to verify the cert first
++#if OPENSSL_VERSION_NUMBER < 0x30000000L
+ X509* cert = SSL_get_peer_certificate(mSocket.native_handle());
++#else
++ X509* cert = SSL_get1_peer_certificate(mSocket.native_handle());
++#endif
+ resip_assert(cert);
+
+ // Look at the SubjectAltName, and if found, set as peerName
+@@ -157,7 +161,7 @@ AsyncTlsSocketBase::validateServerCertificateHostname()
+ if (gen->type == GEN_DNS)
+ {
+ ASN1_IA5STRING* asn = gen->d.dNSName;
+- resip::Data dns(asn->data, asn->length);
++ resip::Data dns(ASN1_STRING_get0_data(asn), ASN1_STRING_length(asn));
+ InfoLog(<< "subjectAltName of TLS session cert contains DNS <" << dns << ">" );
+ hostnamePresentInSubjectAltName = true;
+ if(resip::isEqualNoCase(dns, mHostname.c_str()))
+@@ -182,8 +186,8 @@ AsyncTlsSocketBase::validateServerCertificateHostname()
+ // If there are no peer names from the subjectAltName, then use the commonName
+ if(!hostnamePresentInSubjectAltName)
+ {
+- // look at the Common Name to find the peerName of the cert
+- X509_NAME* subject = X509_get_subject_name(cert);
++ // look at the Common Name to find the peerName of the cert
++ const X509_NAME* subject = X509_get_subject_name(cert);
+ if(!subject)
+ {
+ ErrLog( << "Invalid certificate: subject not found ");
+@@ -346,7 +350,7 @@ AsyncTlsSocketBase::handleReadHeader(const asio::error_code& e)
+ /* ====================================================================
+
+ Copyright (c) 2007-2008, Plantronics, Inc.
+- Copyright (c) 2008-2018, SIP Spectrum, Inc.
++ Copyright (c) 2008-2026 SIP Spectrum, Inc. https://www.sipspectrum.com
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+diff --git a/reTurn/client/TurnTlsSocket.cxx b/reTurn/client/TurnTlsSocket.cxx
+index c30021e48..bae1ecad0 100644
+--- a/reTurn/client/TurnTlsSocket.cxx
++++ b/reTurn/client/TurnTlsSocket.cxx
+@@ -110,7 +110,11 @@ TurnTlsSocket::validateServerCertificateHostname(const std::string& hostname)
+ << SSL_CIPHER_get_name(ciph) << " " );
+
+ // get the certificate - should always exist since mode is set for SSL to verify the cert first
++#if OPENSSL_VERSION_NUMBER < 0x30000000L
+ X509* cert = SSL_get_peer_certificate(mSocket.native_handle());
++#else
++ X509* cert = SSL_get1_peer_certificate(mSocket.native_handle());
++#endif
+ resip_assert(cert);
+
+ // Look at the SubjectAltName, and if found, set as peerName
+@@ -126,7 +130,7 @@ TurnTlsSocket::validateServerCertificateHostname(const std::string& hostname)
+ if (gen->type == GEN_DNS)
+ {
+ ASN1_IA5STRING* asn = gen->d.dNSName;
+- resip::Data dns(asn->data, asn->length);
++ resip::Data dns(ASN1_STRING_get0_data(asn), ASN1_STRING_length(asn));
+ InfoLog(<< "subjectAltName of TLS session cert contains DNS <" << dns << ">" );
+ hostnamePresentInSubjectAltName = true;
+ if(resip::isEqualNoCase(dns, hostname.c_str()))
+@@ -151,8 +155,8 @@ TurnTlsSocket::validateServerCertificateHostname(const std::string& hostname)
+ // If there are no peer names from the subjectAltName, then use the commonName
+ if(!hostnamePresentInSubjectAltName)
+ {
+- // look at the Common Name to find the peerName of the cert
+- X509_NAME* subject = X509_get_subject_name(cert);
++ // look at the Common Name to find the peerName of the cert
++ const X509_NAME* subject = X509_get_subject_name(cert);
+ if(!subject)
+ {
+ ErrLog( << "Invalid certificate: subject not found ");
+@@ -235,7 +239,7 @@ TurnTlsSocket::cancelSocket()
+ /* ====================================================================
+
+ Copyright (c) 2007-2008, Plantronics, Inc.
+- Copyright (c) 2008-2018, SIP Spectrum, Inc.
++ Copyright (c) 2008-2026 SIP Spectrum, Inc. https://www.sipspectrum.com
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+diff --git a/reflow/dtls_wrapper/DtlsSocket.cxx b/reflow/dtls_wrapper/DtlsSocket.cxx
+index 1091350f2..7833f9ac4 100644
+--- a/reflow/dtls_wrapper/DtlsSocket.cxx
++++ b/reflow/dtls_wrapper/DtlsSocket.cxx
+@@ -206,7 +206,11 @@ DtlsSocket::getRemoteFingerprint(char *fprint)
+ {
+ X509 *x;
+
++#if OPENSSL_VERSION_NUMBER < 0x30000000L
+ x=SSL_get_peer_certificate(mSsl);
++#else
++ x=SSL_get1_peer_certificate(mSsl);
++#endif
+ if(!x) // No certificate
+ return false;
+
+@@ -418,6 +422,7 @@ DtlsSocket::getReadTimeout()
+ /* ====================================================================
+
+ Copyright (c) 2007-2008, Eric Rescorla and Derek MacDonald
++ Copyright (c) 2026 SIP Spectrum, Inc. https://www.sipspectrum.com
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+diff --git a/reflow/dtls_wrapper/test/CreateCert.cxx b/reflow/dtls_wrapper/test/CreateCert.cxx
+index 7e70d0b36..1b2b39c57 100644
+--- a/reflow/dtls_wrapper/test/CreateCert.cxx
++++ b/reflow/dtls_wrapper/test/CreateCert.cxx
+@@ -1,5 +1,7 @@
+ #include "CreateCert.hxx"
+
++#include <openssl/bn.h>
++#include <openssl/rsa.h>
+ #include <openssl/x509.h>
+ #include <openssl/x509v3.h>
+
+@@ -22,8 +24,15 @@ int dtls::createCert (const resip::Data& pAor, int expireDays, int keyLen, X509*
+ // Make sure that necessary algorithms exist:
+ resip_assert(EVP_sha1());
+
+- RSA* rsa = RSA_generate_key(keyLen, RSA_F4, NULL, NULL);
+- resip_assert(rsa); // couldn't make key pair
++ BIGNUM* bn = BN_new();
++ BN_set_word(bn, RSA_F4);
++
++ RSA* rsa = RSA_new();
++ resip_assert(rsa);
++
++ ret = RSA_generate_key_ex(rsa, keyLen, bn, NULL);
++ BN_free(bn);
++ resip_assert(ret); // couldn't make key pair
+
+ EVP_PKEY* privkey = EVP_PKEY_new();
+ resip_assert(privkey);
+@@ -92,6 +101,7 @@ int dtls::createCert (const resip::Data& pAor, int expireDays, int keyLen, X509*
+ /* ====================================================================
+
+ Copyright (c) 2007-2008, Eric Rescorla and Derek MacDonald
++ Copyright (c) 2026 SIP Spectrum, Inc. https://www.sipspectrum.com
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+diff --git a/reflow/dtls_wrapper/test/testDtlsWrapper.cxx b/reflow/dtls_wrapper/test/testDtlsWrapper.cxx
+index 80ed9102e..5f8d02155 100644
+--- a/reflow/dtls_wrapper/test/testDtlsWrapper.cxx
++++ b/reflow/dtls_wrapper/test/testDtlsWrapper.cxx
+@@ -68,10 +68,10 @@ class TestDtlsSocketContext : public DtlsSocketContext
+
+ int main(int argc,char **argv)
+ {
+- SSL_library_init();
+- SSL_load_error_strings();
+- ERR_load_crypto_strings();
+- srtp_init();
++ // OpenSSL 1.1.0+ initializes itself automatically; explicit calls to
++ // SSL_library_init(), SSL_load_error_strings() and ERR_load_crypto_strings()
++ // are no longer needed (and are deprecated).
++ srtp_init();
+
+ X509 *clientCert,*serverCert;
+ EVP_PKEY *clientKey,*serverKey;
+diff --git a/resip/stack/makeCert.cxx b/resip/stack/makeCert.cxx
+index a3e08d411..8033a0c83 100644
+--- a/resip/stack/makeCert.cxx
++++ b/resip/stack/makeCert.cxx
+@@ -7,6 +7,8 @@
+ #include <openssl/ssl.h>
+ #include <openssl/pem.h>
+ #include <openssl/ossl_typ.h>
++#include <openssl/bn.h>
++#include <openssl/rsa.h>
+ #include <openssl/x509.h>
+ #include <openssl/x509v3.h>
+ #include "resip/stack/X509Contents.hxx"
+@@ -35,8 +37,14 @@ int main()
+
+ Random::initialize();
+
+- rsa = RSA_generate_key(1024, RSA_F4, NULL, NULL);
+- resip_assert(rsa); // couldn't make key pair
++ {
++ BIGNUM* e = BN_new();
++ BN_set_word(e, RSA_F4);
++ rsa = RSA_new();
++ resip_assert(rsa);
++ resip_assert(RSA_generate_key_ex(rsa, 1024, e, NULL));
++ BN_free(e);
++ }
+
+ EVP_PKEY_assign_RSA(privkey, rsa);
+ resip_assert(privkey);
+@@ -106,8 +114,8 @@ int makeSelfCert(X509 **cert, EVP_PKEY *privkey) // should include a Uri type
+ X509_set_issuer_name(selfcert, subject);
+ X509_set_subject_name(selfcert, subject);
+
+- X509_gmtime_adj(X509_get_notBefore(selfcert),0);
+- X509_gmtime_adj(X509_get_notAfter(selfcert), duration);
++ X509_gmtime_adj(X509_getm_notBefore(selfcert),0);
++ X509_gmtime_adj(X509_getm_notAfter(selfcert), duration);
+
+ X509_set_pubkey(selfcert, privkey);
+
+@@ -132,7 +140,8 @@ int makeSelfCert(X509 **cert, EVP_PKEY *privkey) // should include a Uri type
+ * The Vovida Software License, Version 1.0
+ *
+ * Copyright (c) 2000-2005 Vovida Networks, Inc. All rights reserved.
+- *
++ * Copyright (c) 2026 SIP Spectrum, Inc. https://www.sipspectrum.com
++ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+diff --git a/resip/stack/ssl/Security.cxx b/resip/stack/ssl/Security.cxx
+index bc18c3671..563700cca 100644
+--- a/resip/stack/ssl/Security.cxx
++++ b/resip/stack/ssl/Security.cxx
+@@ -125,7 +125,7 @@ verifyCallback(int preverifyOk, X509_STORE_CTX* storeCtx)
+ BIO* bio = BIO_new(BIO_s_mem());
+ if (bio)
+ {
+- X509_NAME* subjectName = X509_get_subject_name(cert);
++ const X509_NAME* subjectName = X509_get_subject_name(cert);
+ if (subjectName)
+ {
+ // RFC 2253 is the preferred format (readable and reversible)
+@@ -1209,7 +1209,7 @@ BaseSecurity::BaseSecurity (const CipherList& cipherSuite, const Data& defaultPr
+ SSL_CTX_set_options(mTlsCtx, BaseSecurity::OpenSSLCTXSetOptions);
+ SSL_CTX_clear_options(mTlsCtx, BaseSecurity::OpenSSLCTXClearOptions);
+
+- mSslCtx = SSL_CTX_new( SSLv23_method() );
++ mSslCtx = SSL_CTX_new( TLS_method() );
+ resip_assert(mSslCtx);
+ SSL_CTX_set_default_passwd_cb(mSslCtx, pem_passwd_cb);
+ SSL_CTX_set_cert_store(mSslCtx, mRootSslCerts);
+@@ -2404,7 +2404,7 @@ BaseSecurity::checkSignature(MultipartSignedContents* multi,
+ if (gen->type == GEN_URI)
+ {
+ ASN1_IA5STRING* uri = gen->d.uniformResourceIdentifier;
+- Data name(uri->data, uri->length);
++ Data name(ASN1_STRING_get0_data(uri), ASN1_STRING_length(uri));
+ InfoLog(<< "subjectAltName of signing cert contains <" << name << ">" );
+ try
+ {
+@@ -2599,8 +2599,8 @@ BaseSecurity::getCertNames(X509 *cert, std::list<PeerName> &peerNames,
+
+ Data commonName;
+
+- // look at the Common Name to find the peerName of the cert
+- X509_NAME* subject = X509_get_subject_name(cert);
++ // look at the Common Name to find the peerName of the cert
++ const X509_NAME* subject = X509_get_subject_name(cert);
+ if(NULL == subject)
+ {
+ ErrLog( << "Invalid certificate: subject not found ");
+@@ -2666,7 +2666,7 @@ BaseSecurity::getCertNames(X509 *cert, std::list<PeerName> &peerNames,
+ if (gen->type == GEN_DNS)
+ {
+ ASN1_IA5STRING* asn = gen->d.dNSName;
+- Data dns(asn->data, asn->length);
++ Data dns(ASN1_STRING_get0_data(asn), ASN1_STRING_length(asn));
+ PeerName peerName(SubjectAltName, dns);
+ peerNames.push_back(peerName);
+ InfoLog(<< "subjectAltName of TLS session cert contains DNS <" << dns << ">" );
+@@ -2677,7 +2677,7 @@ BaseSecurity::getCertNames(X509 *cert, std::list<PeerName> &peerNames,
+ if(useEmailAsSIP)
+ {
+ ASN1_IA5STRING* asn = gen->d.rfc822Name;
+- Data email(asn->data, asn->length);
++ Data email(ASN1_STRING_get0_data(asn), ASN1_STRING_length(asn));
+ PeerName peerName(SubjectAltName, email);
+ peerNames.push_back(peerName);
+ InfoLog(<< "subjectAltName of TLS session cert contains EMAIL <" << email << ">" );
+@@ -2692,12 +2692,14 @@ BaseSecurity::getCertNames(X509 *cert, std::list<PeerName> &peerNames,
+ // MUST contain exactly four octets. For IP Version 6, as specified in
+ // RFC 1883, the octet string MUST contain exactly sixteen octets."
+ ASN1_OCTET_STRING* asn = gen->d.iPAddress;
+- if (asn->length == 4)
++ const unsigned char* asnData = ASN1_STRING_get0_data(asn);
++ const int asnLen = ASN1_STRING_length(asn);
++ if (asnLen == 4)
+ {
+- uint32_t ip = (asn->data[0] << 24) |
+- (asn->data[1] << 16) |
+- (asn->data[2] << 8) |
+- (asn->data[3]);
++ uint32_t ip = (asnData[0] << 24) |
++ (asnData[1] << 16) |
++ (asnData[2] << 8) |
++ (asnData[3]);
+
+ sockaddr_in sa;
+ sa.sin_family = AF_INET;
+@@ -2712,26 +2714,26 @@ BaseSecurity::getCertNames(X509 *cert, std::list<PeerName> &peerNames,
+ InfoLog(<< "subjectAltName of TLS session cert contains IP ADDRESS <" << ipv4 << ">" );
+ }
+ }
+- else if (asn->length == 16)
++ else if (asnLen == 16)
+ {
+ sockaddr_in6 sa;
+ sa.sin6_family = AF_INET6;
+- sa.sin6_addr.s6_addr[0] = asn->data[0];
+- sa.sin6_addr.s6_addr[1] = asn->data[1];
+- sa.sin6_addr.s6_addr[2] = asn->data[2];
+- sa.sin6_addr.s6_addr[3] = asn->data[3];
+- sa.sin6_addr.s6_addr[4] = asn->data[4];
+- sa.sin6_addr.s6_addr[5] = asn->data[5];
+- sa.sin6_addr.s6_addr[6] = asn->data[6];
+- sa.sin6_addr.s6_addr[7] = asn->data[7];
+- sa.sin6_addr.s6_addr[8] = asn->data[8];
+- sa.sin6_addr.s6_addr[9] = asn->data[9];
+- sa.sin6_addr.s6_addr[10] = asn->data[10];
+- sa.sin6_addr.s6_addr[11] = asn->data[11];
+- sa.sin6_addr.s6_addr[12] = asn->data[12];
+- sa.sin6_addr.s6_addr[13] = asn->data[13];
+- sa.sin6_addr.s6_addr[14] = asn->data[14];
+- sa.sin6_addr.s6_addr[15] = asn->data[15];
++ sa.sin6_addr.s6_addr[0] = asnData[0];
++ sa.sin6_addr.s6_addr[1] = asnData[1];
++ sa.sin6_addr.s6_addr[2] = asnData[2];
++ sa.sin6_addr.s6_addr[3] = asnData[3];
++ sa.sin6_addr.s6_addr[4] = asnData[4];
++ sa.sin6_addr.s6_addr[5] = asnData[5];
++ sa.sin6_addr.s6_addr[6] = asnData[6];
++ sa.sin6_addr.s6_addr[7] = asnData[7];
++ sa.sin6_addr.s6_addr[8] = asnData[8];
++ sa.sin6_addr.s6_addr[9] = asnData[9];
++ sa.sin6_addr.s6_addr[10] = asnData[10];
++ sa.sin6_addr.s6_addr[11] = asnData[11];
++ sa.sin6_addr.s6_addr[12] = asnData[12];
++ sa.sin6_addr.s6_addr[13] = asnData[13];
++ sa.sin6_addr.s6_addr[14] = asnData[14];
++ sa.sin6_addr.s6_addr[15] = asnData[15];
+
+ char addrStr[INET6_ADDRSTRLEN];
+ if (inet_ntop(sa.sin6_family, &(sa.sin6_addr), addrStr, INET6_ADDRSTRLEN) != NULL)
+@@ -2749,7 +2751,7 @@ BaseSecurity::getCertNames(X509 *cert, std::list<PeerName> &peerNames,
+ if(gen->type == GEN_URI)
+ {
+ ASN1_IA5STRING* asn = gen->d.uniformResourceIdentifier;
+- Uri uri(Data(asn->data, asn->length));
++ Uri uri(Data(ASN1_STRING_get0_data(asn), ASN1_STRING_length(asn)));
+ try
+ {
+ PeerName peerName(SubjectAltName, uri.host());
+diff --git a/resip/stack/ssl/TlsBaseTransport.cxx b/resip/stack/ssl/TlsBaseTransport.cxx
+index c5dc8ad5e..c8afdf915 100644
+--- a/resip/stack/ssl/TlsBaseTransport.cxx
++++ b/resip/stack/ssl/TlsBaseTransport.cxx
+@@ -60,11 +60,11 @@ TlsBaseTransport::TlsBaseTransport(Fifo<TransactionMessage>& fifo,
+ switch(sslType)
+ {
+ case SecurityTypes::SSLv23:
+- DebugLog(<<"Using SSLv23_method");
+- mDomainCtx = mSecurity->createDomainCtx(SSLv23_method(), sipDomain, certificateFilename, privateKeyFilename, privateKeyPassPhrase);
++ DebugLog(<<"Using SecurityTypes::SSLv23");
++ mDomainCtx = mSecurity->createDomainCtx(TLS_method(), sipDomain, certificateFilename, privateKeyFilename, privateKeyPassPhrase);
+ break;
+ case SecurityTypes::TLSv1:
+- DebugLog(<<"Using TLS_method");
++ DebugLog(<<"Using SecurityTypes::TLSv1");
+ mDomainCtx = mSecurity->createDomainCtx(TLS_method(), sipDomain, certificateFilename, privateKeyFilename, privateKeyPassPhrase);
+ if (mDomainCtx) {
+ SSL_CTX_set_min_proto_version(mDomainCtx, TLS1_VERSION);
+@@ -104,12 +104,12 @@ TlsBaseTransport::getCtx()
+ }
+ else if(mSslType == SecurityTypes::SSLv23)
+ {
+- DebugLog(<<"Using SSLv23_method");
++ DebugLog(<<"Using SecurityTypes::SSLv23 (dynamic version negotiation)");
+ ctx = mSecurity->getSslCtx();
+ }
+ else
+ {
+- DebugLog(<<"Using TLSv1_method");
++ DebugLog(<<"Using SecurityTypes::TLSv1 (pinned to TLSv1)");
+ ctx = mSecurity->getTlsCtx();
+ }
+ // FIXME: would be better to do this in a method called asynchronously after onReload
+@@ -168,7 +168,8 @@ TlsBaseTransport::createConnection(const Tuple& who, Socket fd, bool server)
+ * The Vovida Software License, Version 1.0
+ *
+ * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved.
+- *
++ * Copyright (c) 2026 SIP Spectrum, Inc. https://www.sipspectrum.com
++ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+diff --git a/resip/stack/ssl/TlsConnection.cxx b/resip/stack/ssl/TlsConnection.cxx
+index 71f85d299..ed4ffba55 100644
+--- a/resip/stack/ssl/TlsConnection.cxx
++++ b/resip/stack/ssl/TlsConnection.cxx
+@@ -268,7 +268,11 @@ TlsConnection::checkState()
+ {
+ // OpenSSL docs: If no peer certificate was presented, the returned result code is X509_V_OK.
+ // This is because no verification error occurred, it does however not indicate success.
++#if OPENSSL_VERSION_NUMBER < 0x30000000L
+ X509* peerCert = SSL_get_peer_certificate(mSsl);
++#else
++ X509* peerCert = SSL_get1_peer_certificate(mSsl);
++#endif
+ if (peerCert)
+ {
+ ds << "peer supplied a certificate, it has either not been checked or it was checked successfully";
+@@ -724,8 +728,12 @@ TlsConnection::computePeerName()
+ << SSL_CIPHER_get_version(ciph) << " "
+ << SSL_CIPHER_get_name(ciph) << " ");
+
+- // get the certificate if other side has one
++ // get the certificate if other side has one
++#if OPENSSL_VERSION_NUMBER < 0x30000000L
+ X509* cert = SSL_get_peer_certificate(mSsl);
++#else
++ X509* cert = SSL_get1_peer_certificate(mSsl);
++#endif
+ if (!cert)
+ {
+ DebugLog(<< "No peer certificate in TLS connection");
+@@ -775,7 +783,8 @@ TlsConnection::computePeerName()
+ * The Vovida Software License, Version 1.0
+ *
+ * Copyright (c) 2000-2005 Vovida Networks, Inc. All rights reserved.
+- *
++ * Copyright (c) 2026 SIP Spectrum, Inc. https://www.sipspectrum.com
++ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+diff --git a/resip/stack/test/makeSelfCert.cxx b/resip/stack/test/makeSelfCert.cxx
+index 10ec52b28..89cfcfbc0 100644
+--- a/resip/stack/test/makeSelfCert.cxx
++++ b/resip/stack/test/makeSelfCert.cxx
+@@ -1,6 +1,8 @@
+ #include <openssl/ssl.h>
+ #include <openssl/pem.h>
+ #include <openssl/ossl_typ.h>
++#include <openssl/bn.h>
++#include <openssl/rsa.h>
+ #include <openssl/x509.h>
+ #include <openssl/x509v3.h>
+ #include <openssl/err.h>
+@@ -29,18 +31,24 @@ int main(int argc, char* argv[])
+
+ Log::initialize(Log::Cerr, Log::Err, argv[0]);
+ Log::setLevel(Log::Debug);
+- SSL_library_init();
+- SSL_load_error_strings();
+- OpenSSL_add_all_algorithms();
+- //OpenSSL_add_ssl_algorithms() is insufficient here...
++ // OpenSSL 1.1.0+ initializes itself automatically; explicit calls to
++ // SSL_library_init(), SSL_load_error_strings() and OpenSSL_add_all_algorithms()
++ // are no longer needed (and are deprecated).
+
+ // make sure that necessary algorithms exist:
+ assert(EVP_des_ede3_cbc());
+
+ Random::initialize();
+
+- rsa = RSA_generate_key(1024, RSA_F4, NULL, NULL);
+- assert(rsa); // couldn't make key pair
++ {
++ BIGNUM* e = BN_new();
++ assert(e);
++ assert(BN_set_word(e, RSA_F4));
++ rsa = RSA_new();
++ assert(rsa);
++ assert(RSA_generate_key_ex(rsa, 1024, e, NULL));
++ BN_free(e);
++ }
+
+ // TODO: remove this once we've tested this
+ stat = PEM_write_RSAPrivateKey( stdout, rsa, NULL, NULL, 0, NULL, NULL); // Write this out for debugging
+@@ -133,8 +141,8 @@ int makeSelfCert(X509 **cert, EVP_PKEY *privkey) // should include a Uri type
+ stat = X509_set_subject_name(selfcert, subject);
+ assert(stat);
+
+- X509_gmtime_adj(X509_get_notBefore(selfcert),0);
+- X509_gmtime_adj(X509_get_notAfter(selfcert), duration);
++ X509_gmtime_adj(X509_getm_notBefore(selfcert),0);
++ X509_gmtime_adj(X509_getm_notAfter(selfcert), duration);
+
+ stat = X509_set_pubkey(selfcert, privkey);
+ assert(stat);
+@@ -165,7 +173,8 @@ int makeSelfCert(X509 **cert, EVP_PKEY *privkey) // should include a Uri type
+ * The Vovida Software License, Version 1.0
+ *
+ * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved.
+- *
++ * Copyright (c) 2026 SIP Spectrum, Inc. https://www.sipspectrum.com
++ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+diff --git a/rutil/DigestStream.cxx b/rutil/DigestStream.cxx
+index 339c8522e..2bc99184d 100644
+--- a/rutil/DigestStream.cxx
++++ b/rutil/DigestStream.cxx
+@@ -9,18 +9,7 @@
+ #endif
+
+ #ifdef USE_SSL
+- #include <openssl/evp.h>
+- #if OPENSSL_VERSION_NUMBER < 0x10100000L // openssl 1.1.0 api changes
+- static EVP_MD_CTX* EVP_MD_CTX_new()
+- {
+- return new EVP_MD_CTX;
+- }
+- static void EVP_MD_CTX_free(EVP_MD_CTX* pCtx)
+- {
+- EVP_MD_CTX_cleanup(pCtx);
+- delete pCtx;
+- }
+- #endif
++ #include <openssl/evp.h>
+ #else
+ #include "rutil/vmd5.hxx"
+ #include "rutil/Sha1.hxx"
+--
+2.47.3
+
diff --git a/package/resiprocate/0002-ssl-Fix-remaining-build-errors-with-OpenSSL-4.x.patch b/package/resiprocate/0002-ssl-Fix-remaining-build-errors-with-OpenSSL-4.x.patch
new file mode 100644
index 0000000000..bb5a936fdc
--- /dev/null
+++ b/package/resiprocate/0002-ssl-Fix-remaining-build-errors-with-OpenSSL-4.x.patch
@@ -0,0 +1,47 @@
+From a45447eac1cb839b7c4429811590a46272e7525e Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Sun, 20 Sep 2026 15:01:10 +0200
+Subject: [PATCH] ssl: Fix remaining build errors with OpenSSL 4.x
+
+ssl/Security.cxx: In static member function 'static void resip::BaseSecurity::getCertNames(X509*, std::__cxx11::list<PeerName>&, bool)':
+ssl/Security.cxx:2583:51: error: invalid conversion from 'const X509_NAME_ENTRY*' {aka 'const X509_name_entry_st*'} to 'X509_NAME_ENTRY*' {aka 'X509_name_entry_st*'} [-fpermissive]
+ 2583 | X509_NAME_ENTRY* entry = X509_NAME_get_entry(subject,i);
+ | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
+ | |
+ | const X509_NAME_ENTRY* {aka const X509_name_entry_st*}
+
+ssl/Security.cxx:2586:53: error: invalid conversion from 'const ASN1_STRING*' {aka 'const asn1_string_st*'} to 'ASN1_STRING*' {aka 'asn1_string_st*'} [-fpermissive]
+ 2586 | ASN1_STRING* s = X509_NAME_ENTRY_get_data(entry);
+ | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
+ | |
+ | const ASN1_STRING* {aka const asn1_string_st*}
+
+Fixes https://github.com/resiprocate/resiprocate/issues/489
+
+Upstream: https://github.com/resiprocate/resiprocate/pull/490
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ resip/stack/ssl/Security.cxx | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/resip/stack/ssl/Security.cxx b/resip/stack/ssl/Security.cxx
+index 563700cca..28348c9ce 100644
+--- a/resip/stack/ssl/Security.cxx
++++ b/resip/stack/ssl/Security.cxx
+@@ -2616,10 +2616,10 @@ BaseSecurity::getCertNames(X509 *cert, std::list<PeerName> &peerNames,
+ break;
+ }
+ resip_assert( i != -1 );
+- X509_NAME_ENTRY* entry = X509_NAME_get_entry(subject,i);
++ const X509_NAME_ENTRY* entry = X509_NAME_get_entry(subject,i);
+ resip_assert( entry );
+
+- ASN1_STRING* s = X509_NAME_ENTRY_get_data(entry);
++ const ASN1_STRING* s = X509_NAME_ENTRY_get_data(entry);
+ resip_assert( s );
+
+ int t = ASN1_STRING_type(s);
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 28/66] package/snort3: fix build error with numa support
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (26 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 27/66] package/resiprocate: Fix build with OpenSSL 4.0.0 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 29/66] package/snort3: Fix build with OpenSSL 4.0.0 Bernd Kuhls
` (37 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Fabrice Fontaine
Buildroot commit 5e78c6cf3323b4a45f84bcbc504f511dd268e270 bumped the
package from 3.1.40.0 to 3.11.1.0. Upstream commit
https://github.com/snort3/snort3/commit/83e9a2dda250a0ced9a105454a5a4fe59c304601
added numa support, first included in release 3.1.65.0.
This causes a build error due to the numactl package being pulled-in as
optional dependency by hwloc, the latter being a hard dependency of
snort3.
Fixes:
https://autobuild.buildroot.net/results/e8a/e8a9d787973fd109c07c185103de1f9f7339d506/
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
.../0001-Rename-numa.h-to-numa_snort.h.patch | 79 +++++++++++++++++++
1 file changed, 79 insertions(+)
create mode 100644 package/snort3/0001-Rename-numa.h-to-numa_snort.h.patch
diff --git a/package/snort3/0001-Rename-numa.h-to-numa_snort.h.patch b/package/snort3/0001-Rename-numa.h-to-numa_snort.h.patch
new file mode 100644
index 0000000000..ca8f7774f1
--- /dev/null
+++ b/package/snort3/0001-Rename-numa.h-to-numa_snort.h.patch
@@ -0,0 +1,79 @@
+From 3bb2a8fc1244fcbdf24235e541fa2a06a655dcea Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Tue, 8 Sep 2026 21:20:04 +0200
+Subject: [PATCH] Rename numa.h to numa_snort.h
+
+Fixes https://github.com/snort3/snort3/issues/368
+
+and a build error seen with gcc 15.1.0 by the buildroot autobuilders:
+https://autobuild.buildroot.net/results/e8a/e8a9d787973fd109c07c185103de1f9f7339d506/build-end.log
+
+/home/autobuild/autobuild/instance-44/output-1/build/snort3-3.11.1.0/src/main/numa.h:
+ In member function 'virtual int NumaWrapper::available()':
+/home/autobuild/autobuild/instance-44/output-1/build/snort3-3.11.1.0/src/main/numa.h:50:16:
+ error: 'numa_available' was not declared in this scope; did you mean 'available'?
+ 50 | return numa_available();
+
+/home/autobuild/autobuild/instance-44/output-1/build/snort3-3.11.1.0/src/main/numa.h:
+ In member function 'virtual int NumaWrapper::max_node()':
+/home/autobuild/autobuild/instance-44/output-1/build/snort3-3.11.1.0/src/main/numa.h:54:16:
+ error: 'numa_max_node' was not declared in this scope; did you mean 'max_node'?
+ 54 | return numa_max_node();
+
+Upstream: https://github.com/snort3/snort3/pull/479
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/main/CMakeLists.txt | 2 +-
+ src/main/numa.cc | 2 +-
+ src/main/{numa.h => numa_snort.h} | 0
+ src/main/thread_config.h | 2 +-
+ 4 files changed, 3 insertions(+), 3 deletions(-)
+ rename src/main/{numa.h => numa_snort.h} (100%)
+
+diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt
+index 117612b94..e4e816d15 100644
+--- a/src/main/CMakeLists.txt
++++ b/src/main/CMakeLists.txt
+@@ -23,7 +23,7 @@ endif ( ENABLE_SHELL )
+ add_subdirectory(test)
+
+ if ( HAVE_NUMA )
+- set ( NUMA_SOURCES numa.h numa.cc)
++ set ( NUMA_SOURCES numa_snort.h numa.cc)
+ endif( HAVE_NUMA )
+
+ add_library (main OBJECT
+diff --git a/src/main/numa.cc b/src/main/numa.cc
+index 259f776b7..5cb23e26b 100644
+--- a/src/main/numa.cc
++++ b/src/main/numa.cc
+@@ -17,7 +17,7 @@
+ //--------------------------------------------------------------------------
+ // numa.cc author Denys Zikratyi <dzikraty@cisco.com>
+
+-#include "numa.h"
++#include "numa_snort.h"
+
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+diff --git a/src/main/numa.h b/src/main/numa_snort.h
+similarity index 100%
+rename from src/main/numa.h
+rename to src/main/numa_snort.h
+diff --git a/src/main/thread_config.h b/src/main/thread_config.h
+index 93bfe63d2..8134da8bf 100644
+--- a/src/main/thread_config.h
++++ b/src/main/thread_config.h
+@@ -26,7 +26,7 @@
+ #include "main/thread.h"
+
+ #ifdef HAVE_NUMA
+-#include "numa.h"
++#include "numa_snort.h"
+ #endif
+
+ struct CpuSet;
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 29/66] package/snort3: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (27 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 28/66] package/snort3: fix build error with numa support Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 30/66] package/xtables-addons: use kernel-module infra Bernd Kuhls
` (36 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Fabrice Fontaine
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
...fix-const-qualifiers-for-OpenSSL-4.0.patch | 63 +++++++++++++++++++
1 file changed, 63 insertions(+)
create mode 100644 package/snort3/0002-ssl-fix-const-qualifiers-for-OpenSSL-4.0.patch
diff --git a/package/snort3/0002-ssl-fix-const-qualifiers-for-OpenSSL-4.0.patch b/package/snort3/0002-ssl-fix-const-qualifiers-for-OpenSSL-4.0.patch
new file mode 100644
index 0000000000..9f4232901a
--- /dev/null
+++ b/package/snort3/0002-ssl-fix-const-qualifiers-for-OpenSSL-4.0.patch
@@ -0,0 +1,63 @@
+From a32587b0fc22a716b70f242f7a130de003fb3b42 Mon Sep 17 00:00:00 2001
+From: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
+Date: Thu, 27 Aug 2026 11:45:48 +0000
+Subject: [PATCH] ssl: fix const qualifiers for OpenSSL 4.0
+
+OpenSSL 4.0 returns const pointers from X509_get_subject_name(),
+X509_get_issuer_name(), X509_NAME_get_entry(), and
+X509_NAME_ENTRY_get_data(). Update local variables to match.
+
+This is backward-compatible with older OpenSSL versions since
+assigning non-const to const is always valid.
+
+Fixes: https://github.com/snort3/snort3/issues/476
+
+Signed-off-by: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
+
+Upstream: https://github.com/snort3/snort3/pull/477
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/protocols/ssl.cc | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/protocols/ssl.cc b/src/protocols/ssl.cc
+index 733d19adf..4afac05dd 100644
+--- a/src/protocols/ssl.cc
++++ b/src/protocols/ssl.cc
+@@ -860,8 +860,8 @@ ParseResult parse_server_certificates(SSLV3ServerCertData* server_cert_data)
+ while (len > 2 and !(common_name and org_unit))
+ {
+ X509* cert = nullptr;
+- X509_NAME* cert_subject = nullptr;
+- X509_NAME* cert_issuer = nullptr;
++ const X509_NAME* cert_subject = nullptr;
++ const X509_NAME* cert_issuer = nullptr;
+
+ int cert_len = ntoh3(data);
+ data += 3;
+@@ -918,8 +918,8 @@ ParseResult parse_server_certificates(SSLV3ServerCertData* server_cert_data)
+ lastpos = X509_NAME_get_index_by_NID(cert_subject, NID_commonName, lastpos);
+ if (lastpos != -1)
+ {
+- X509_NAME_ENTRY* e = X509_NAME_get_entry(cert_subject, lastpos);
+- ASN1_STRING* asn1_str = X509_NAME_ENTRY_get_data(e);
++ const X509_NAME_ENTRY* e = X509_NAME_get_entry(cert_subject, lastpos);
++ const ASN1_STRING* asn1_str = X509_NAME_ENTRY_get_data(e);
+ const unsigned char* str_data = ASN1_STRING_get0_data(asn1_str);
+ int length = ASN1_STRING_length(asn1_str);
+
+@@ -941,8 +941,8 @@ ParseResult parse_server_certificates(SSLV3ServerCertData* server_cert_data)
+ lastpos = X509_NAME_get_index_by_NID(cert_subject, NID_organizationalUnitName, lastpos);
+ if (lastpos != -1)
+ {
+- X509_NAME_ENTRY* e = X509_NAME_get_entry(cert_subject, lastpos);
+- ASN1_STRING* asn1_str = X509_NAME_ENTRY_get_data(e);
++ const X509_NAME_ENTRY* e = X509_NAME_get_entry(cert_subject, lastpos);
++ const ASN1_STRING* asn1_str = X509_NAME_ENTRY_get_data(e);
+ const unsigned char* str_data = ASN1_STRING_get0_data(asn1_str);
+ org_unit_len = ASN1_STRING_length(asn1_str);
+
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 30/66] package/xtables-addons: use kernel-module infra
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (28 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 29/66] package/snort3: Fix build with OpenSSL 4.0.0 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 31/66] package/xtables-addons: bump version to 3.31 Bernd Kuhls
` (35 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
This package does not need the kernel-module infra because the kernel
module is build by autoconf but the MIPS fix from buildroot commit
1d8d9e8d6cd824b2a43a0b92d71cfb25a3f9300a is not added to _LINUX_CONFIG_
FIXUPS causing a build error with this defconfig:
BR2_mips64el=y
# BR2_MIPS_SOFT_FLOAT is not set
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_STABLE=y
BR2_PER_PACKAGE_DIRECTORIES=y
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.156"
BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
BR2_PACKAGE_XTABLES_ADDONS=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
MODPOST /home/buildroot/buildroot/output/build/xtables-addons-3.24/extensions/Module.symvers
ERROR: modpost: "memcmp" [/home/buildroot/buildroot/output/build/xtables-addons-3.24/extensions/compat_xtables.ko] undefined!
ERROR: modpost: "register_pernet_subsys" [/home/buildroot/buildroot/output/build/xtables-addons-3.24/extensions/ACCOUNT/xt_ACCOUNT.ko] undefined!
ERROR: modpost: "_printk" [/home/buildroot/buildroot/output/build/xtables-addons-3.24/extensions/ACCOUNT/xt_ACCOUNT.ko] undefined!
ERROR: modpost: "nf_register_sockopt" [/home/buildroot/buildroot/output/build/xtables-addons-3.24/extensions/ACCOUNT/xt_ACCOUNT.ko] undefined!
ERROR: modpost: "unregister_pernet_subsys" [/home/buildroot/buildroot/output/build/xtables-addons-3.24/extensions/ACCOUNT/xt_ACCOUNT.ko] undefined!
ERROR: modpost: "xt_register_target" [/home/buildroot/buildroot/output/build/xtables-addons-3.24/extensions/ACCOUNT/xt_ACCOUNT.ko] undefined!
ERROR: modpost: "nf_unregister_sockopt" [/home/buildroot/buildroot/output/build/xtables-addons-3.24/extensions/ACCOUNT/xt_ACCOUNT.ko] undefined!
ERROR: modpost: "kfree" [/home/buildroot/buildroot/output/build/xtables-addons-3.24/extensions/ACCOUNT/xt_ACCOUNT.ko] undefined!
ERROR: modpost: "free_pages" [/home/buildroot/buildroot/output/build/xtables-addons-3.24/extensions/ACCOUNT/xt_ACCOUNT.ko] undefined!
ERROR: modpost: "xt_unregister_target" [/home/buildroot/buildroot/output/build/xtables-addons-3.24/extensions/ACCOUNT/xt_ACCOUNT.ko] undefined!
WARNING: modpost: suppressed 342 unresolved symbol warnings because there were too many)
To fix the problem we add the kernel-module infra to the package.
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
package/xtables-addons/Config.in | 2 +-
package/xtables-addons/xtables-addons.mk | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/package/xtables-addons/Config.in b/package/xtables-addons/Config.in
index 36a42c7efc..8943276843 100644
--- a/package/xtables-addons/Config.in
+++ b/package/xtables-addons/Config.in
@@ -10,7 +10,7 @@ config BR2_PACKAGE_XTABLES_ADDONS
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on !BR2_STATIC_LIBS # extensions are .so
select BR2_PACKAGE_IPTABLES
- select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra
+ select BR2_LINUX_NEEDS_MODULES
help
Xtables-addons is the successor to patch-o-matic(-ng).
Likewise, it contains extensions that were not, or are not
diff --git a/package/xtables-addons/xtables-addons.mk b/package/xtables-addons/xtables-addons.mk
index efd8bd98ce..a3174725d0 100644
--- a/package/xtables-addons/xtables-addons.mk
+++ b/package/xtables-addons/xtables-addons.mk
@@ -39,4 +39,5 @@ define XTABLES_ADDONS_LINUX_CONFIG_FIXUPS
$(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT)
endef
+$(eval $(kernel-module))
$(eval $(autotools-package))
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 31/66] package/xtables-addons: bump version to 3.31
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (29 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 30/66] package/xtables-addons: use kernel-module infra Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 32/66] package/apache: Add support for OpenSSL 4.0.0 Bernd Kuhls
` (34 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
https://codeberg.org/jengelh/xtables-addons/src/tag/v3.31/doc/changelog.rst
Upstream switched tarball format to zst.
Enabled CONFIG_NETFILTER_XT_MATCH_STRING in kernel config to provide the
new upstream dependency CONFIG_TEXTSEARCH_BM:
https://codeberg.org/jengelh/xtables-addons/commit/6b7c62d83ea1b589c3115d959867e0fcbfcf74ea
Enabled CONFIG_XFRM_USER to fix build errors detected by the Gitlab
pipelines:
ERROR: modpost: "crypto_alloc_shash" [pknock/xt_pknock.ko] undefined!
ERROR: modpost: "crypto_shash_setkey" [pknock/xt_pknock.ko] undefined!
ERROR: modpost: "crypto_shash_init" [pknock/xt_pknock.ko] undefined!
ERROR: modpost: "crypto_shash_finup" [pknock/xt_pknock.ko] undefined!
ERROR: modpost: "crypto_destroy_tfm" [pknock/xt_pknock.ko] undefined!
Upstream uses these functions for > 10 years so recent changes in the
Linux kernel dependency handling are responsible for the build errors.
Enabled CONFIG_{INET, NET} to fix a build error detected by the Gitlab
pipelines for bootlin-powerpc-e500mc-uclibc:
In file included from pknock/xt_pknock.c:31:
./pknock/../compat_xtables.h:19:9: warning: #warning You need
CONFIG_NF_CONNTRACK. [-Wcpp]
19 | # warning You need CONFIG_NF_CONNTRACK.
ACCOUNT/xt_ACCOUNT.c:1179:10: error: 'struct nf_sockopt_ops' has no
member named 'set_optmin'
1179 | .set_optmin = IPT_SO_SET_ACCOUNT_HANDLE_FREE,
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
package/xtables-addons/xtables-addons.hash | 2 +-
package/xtables-addons/xtables-addons.mk | 8 ++++++--
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/package/xtables-addons/xtables-addons.hash b/package/xtables-addons/xtables-addons.hash
index 7bdbbb8578..a77ac1a230 100644
--- a/package/xtables-addons/xtables-addons.hash
+++ b/package/xtables-addons/xtables-addons.hash
@@ -1,3 +1,3 @@
# Locally calculated
-sha256 3e823f71720519ced31c4c7d2bfaf7120d9c01c59a0843dfcbe93c95c64d81c1 xtables-addons-3.24.tar.xz
+sha256 e22efc25b7bbb3436d1b7cdc309b1857ea933f7e5c7d88fbe6951a1e3e582a80 xtables-addons-3.31.tar.zst
sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE
diff --git a/package/xtables-addons/xtables-addons.mk b/package/xtables-addons/xtables-addons.mk
index a3174725d0..9f70518fed 100644
--- a/package/xtables-addons/xtables-addons.mk
+++ b/package/xtables-addons/xtables-addons.mk
@@ -4,8 +4,8 @@
#
################################################################################
-XTABLES_ADDONS_VERSION = 3.24
-XTABLES_ADDONS_SOURCE = xtables-addons-$(XTABLES_ADDONS_VERSION).tar.xz
+XTABLES_ADDONS_VERSION = 3.31
+XTABLES_ADDONS_SOURCE = xtables-addons-$(XTABLES_ADDONS_VERSION).tar.zst
XTABLES_ADDONS_SITE = https://inai.de/files/xtables-addons
XTABLES_ADDONS_DEPENDENCIES = iptables linux host-pkgconf
XTABLES_ADDONS_LICENSE = GPL-2.0+
@@ -33,10 +33,14 @@ endef
XTABLES_ADDONS_POST_INSTALL_TARGET_HOOKS += XTABLES_ADDONS_REMOVE_GEOIP_HELPERS
define XTABLES_ADDONS_LINUX_CONFIG_FIXUPS
+ $(call KCONFIG_ENABLE_OPT,CONFIG_INET)
+ $(call KCONFIG_ENABLE_OPT,CONFIG_NET)
$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED)
+ $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_STRING)
$(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK)
$(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_MARK)
$(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT)
+ $(call KCONFIG_ENABLE_OPT,CONFIG_XFRM_USER)
endef
$(eval $(kernel-module))
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 32/66] package/apache: Add support for OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (30 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 31/66] package/xtables-addons: bump version to 3.31 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 33/66] package/boinc: Fix build with " Bernd Kuhls
` (33 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
.../0004-modules-md-Merge-from-icing-md.patch | 57 +++++++++++++++++++
1 file changed, 57 insertions(+)
create mode 100644 package/apache/0004-modules-md-Merge-from-icing-md.patch
diff --git a/package/apache/0004-modules-md-Merge-from-icing-md.patch b/package/apache/0004-modules-md-Merge-from-icing-md.patch
new file mode 100644
index 0000000000..b4f04ba47b
--- /dev/null
+++ b/package/apache/0004-modules-md-Merge-from-icing-md.patch
@@ -0,0 +1,57 @@
+From d534e42b07969755b27eff2892ea56cfd909f063 Mon Sep 17 00:00:00 2001
+From: Joe Orton <jorton@apache.org>
+Date: Tue, 9 Jun 2026 06:44:42 +0000
+Subject: [PATCH] * modules/md: Merge from icing/md -
+
+https://github.com/icing/mod_md/commit/9fd90380db0722f0ccc14ff1c4da0ca21d4da75c
+
+Add OpenSSL 4.0 compatibility:
+
+* Use getters instead of direct member access.
+
+* Struct was made opaque in OpenSSL 4. Getters exist since OpenSSL 1.1.0.
+
+* Keep OpenSSL 1.0.2 compatibility.
+
+
+
+git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1935161 13f79535-47bb-0310-9956-ffa450edef68
+
+Upstream: https://github.com/apache/httpd/commit/d534e42b07969755b27eff2892ea56cfd909f063
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ modules/md/md_ocsp.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/modules/md/md_ocsp.c b/modules/md/md_ocsp.c
+index aee799a7b3..2e7f14dff3 100644
+--- a/modules/md/md_ocsp.c
++++ b/modules/md/md_ocsp.c
+@@ -533,13 +533,23 @@ static const char *certid_summary(const OCSP_CERTID *certid, apr_pool_t *p)
+ serial = issuer = key = "???";
+ OCSP_id_get0_info(&aname_hash, &amd_nid, &akey_hash, &aserial, (OCSP_CERTID*)certid);
+ if (aname_hash) {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ data.len = (apr_size_t)aname_hash->length;
+ data.data = (const char*)aname_hash->data;
++#else
++ data.len = (apr_size_t)ASN1_STRING_length(aname_hash);
++ data.data = (const char*)ASN1_STRING_get0_data(aname_hash);
++#endif
+ md_data_to_hex(&issuer, 0, p, &data);
+ }
+ if (akey_hash) {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ data.len = (apr_size_t)akey_hash->length;
+ data.data = (const char*)akey_hash->data;
++#else
++ data.len = (apr_size_t)ASN1_STRING_length(akey_hash);
++ data.data = (const char*)ASN1_STRING_get0_data(akey_hash);
++#endif
+ md_data_to_hex(&key, 0, p, &data);
+ }
+ if (aserial) {
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 33/66] package/boinc: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (31 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 32/66] package/apache: Add support for OpenSSL 4.0.0 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 34/66] package/ca-certificates: Replace c_rehash with openssl rehash Bernd Kuhls
` (32 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Fabrice Fontaine
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
...fix-a-build-failure-with-openssl-4.0.patch | 26 +++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 package/boinc/0001-Adapt-code-to-fix-a-build-failure-with-openssl-4.0.patch
diff --git a/package/boinc/0001-Adapt-code-to-fix-a-build-failure-with-openssl-4.0.patch b/package/boinc/0001-Adapt-code-to-fix-a-build-failure-with-openssl-4.0.patch
new file mode 100644
index 0000000000..22e2ef65a7
--- /dev/null
+++ b/package/boinc/0001-Adapt-code-to-fix-a-build-failure-with-openssl-4.0.patch
@@ -0,0 +1,26 @@
+From 9cdcef8261be4891b4814c6f728dcee65027e5da Mon Sep 17 00:00:00 2001
+From: Gianfranco Costamagna <locutusofborg@debian.org>
+Date: Wed, 26 Aug 2026 12:27:54 +0200
+Subject: [PATCH] Adapt code to fix a build failure with openssl-4.0
+
+Upstream: https://github.com/BOINC/boinc/commit/9cdcef8261be4891b4814c6f728dcee65027e5da
+
+[Bernd: backported to 8.2.15]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ lib/crypt.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/crypt.cpp b/lib/crypt.cpp
+index 17a9b57b3eb..b54e2f050ad 100644
+--- a/lib/crypt.cpp
++++ b/lib/crypt.cpp
+@@ -774,7 +774,7 @@
+ DATA_BLOCK sig_db;
+ BIO *bio;
+ X509 *cert;
+- X509_NAME *subj;
++ const X509_NAME *subj;
+
+ if (signatures->signatures.size() == 0) {
+ printf("No signatures available for file ('%s').\n", origFile);
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 34/66] package/ca-certificates: Replace c_rehash with openssl rehash
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (32 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 33/66] package/boinc: Fix build with " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-10-02 21:40 ` Fiona Klute via buildroot
2026-10-10 9:23 ` Thomas Perale via buildroot
2026-09-29 18:35 ` [Buildroot] [PATCH v7 35/66] package/clamav: Fix build with OpenSSL 4.0.0 Bernd Kuhls
` (31 subsequent siblings)
65 siblings, 2 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Martin Bark
The upcoming bump of libopenssl to 4.0.2 removes the c_rehash script:
https://openssl-library.org/post/2026-04-14-openssl-40-final-release/
https://github.com/openssl/openssl/blob/openssl-4.0.2/CHANGES.md#openssl-40
"* Removed `c_rehash` script tool. Use `openssl rehash` instead."
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Martin Bark <martin@barkynet.com>
---
package/ca-certificates/ca-certificates.mk | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package/ca-certificates/ca-certificates.mk b/package/ca-certificates/ca-certificates.mk
index f5675b754d..0f88df3eec 100644
--- a/package/ca-certificates/ca-certificates.mk
+++ b/package/ca-certificates/ca-certificates.mk
@@ -36,7 +36,7 @@ define CA_CERTIFICATES_GEN_BUNDLE
done >$(BUILD_DIR)/ca-certificates.crt
# Create symlinks to the certificates by their hash values
- $(HOST_DIR)/bin/c_rehash $(TARGET_DIR)/etc/ssl/certs
+ $(HOST_DIR)/bin/openssl rehash $(TARGET_DIR)/etc/ssl/certs
# Install the certificates bundle
$(INSTALL) -D -m 644 $(BUILD_DIR)/ca-certificates.crt \
@@ -65,7 +65,7 @@ define HOST_CA_CERTIFICATES_INSTALL_CMDS
done >$(BUILD_DIR)/ca-certificates.crt
# Create symlinks to the certificates by their hash values
- $(HOST_DIR)/bin/c_rehash $(HOST_DIR)/etc/ssl/certs
+ $(HOST_DIR)/bin/openssl rehash $(HOST_DIR)/etc/ssl/certs
# Install the certificates bundle
$(INSTALL) -D -m 644 $(BUILD_DIR)/ca-certificates.crt \
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 35/66] package/clamav: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (33 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 34/66] package/ca-certificates: Replace c_rehash with openssl rehash Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 36/66] package/freeradius-server: Add support for " Bernd Kuhls
` (30 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...-crypto-Remove-cl_ASN1_GetTimeT-1731.patch | 136 ++++++++++++++++++
1 file changed, 136 insertions(+)
create mode 100644 package/clamav/0001-libclamav-crypto-Remove-cl_ASN1_GetTimeT-1731.patch
diff --git a/package/clamav/0001-libclamav-crypto-Remove-cl_ASN1_GetTimeT-1731.patch b/package/clamav/0001-libclamav-crypto-Remove-cl_ASN1_GetTimeT-1731.patch
new file mode 100644
index 0000000000..60e29a1fdb
--- /dev/null
+++ b/package/clamav/0001-libclamav-crypto-Remove-cl_ASN1_GetTimeT-1731.patch
@@ -0,0 +1,136 @@
+From 0097a6f99d9f6b78381e12b677a38fb62242c41a Mon Sep 17 00:00:00 2001
+From: sebastianas <sebastianas@users.noreply.github.com>
+Date: Sat, 1 Aug 2026 00:13:13 +0200
+Subject: [PATCH] libclamav/crypto: Remove cl_ASN1_GetTimeT() (#1731)
+
+The last user has been removed in commit fa15aa98c7d5e ("bb11594 - allow
+for compilation against openssl 1.1.0"). This function is only exported
+under CLAMAV_PRIVATE to be used within clamav, not by external users.
+
+Removing the function will not cause an ABI break since it was not part
+of the officially exported ABI. As a side effect it will compile against
+OpenSSL 4.0 where the ASN1_TIME type has been made opaque.
+
+Remove cl_ASN1_GetTimeT().
+
+Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+
+Upstream: https://github.com/Cisco-Talos/clamav/commit/0097a6f99d9f6b78381e12b677a38fb62242c41a
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ libclamav/clamav.h | 8 -----
+ libclamav/crypto.c | 65 -----------------------------------------
+ libclamav/libclamav.map | 1 -
+ 3 files changed, 74 deletions(-)
+
+diff --git a/libclamav/clamav.h b/libclamav/clamav.h
+index 8a3767f78..fa75677ad 100644
+--- a/libclamav/clamav.h
++++ b/libclamav/clamav.h
+@@ -2413,14 +2413,6 @@ extern int cl_validate_certificate_chain(char **authorities, char *crlpath, char
+ */
+ extern X509 *cl_load_cert(const char *certpath);
+
+-/**
+- * @brief Parse an ASN1_TIME object.
+- *
+- * @param timeobj The ASN1_TIME object.
+- * @return A pointer to a (struct tm). Adjusted for time zone and daylight savings time.
+- */
+-extern struct tm *cl_ASN1_GetTimeT(ASN1_TIME *timeobj);
+-
+ /**
+ * @brief Load a CRL file into an X509_CRL object.
+ *
+diff --git a/libclamav/crypto.c b/libclamav/crypto.c
+index 8b398e402..968264811 100644
+--- a/libclamav/crypto.c
++++ b/libclamav/crypto.c
+@@ -1746,71 +1746,6 @@ X509 *cl_load_cert(const char *certpath)
+ return cert;
+ }
+
+-struct tm *cl_ASN1_GetTimeT(ASN1_TIME *timeobj)
+-{
+- struct tm *t;
+- char *str;
+- const char *fmt = NULL;
+- time_t localt;
+-#ifdef _WIN32
+- struct tm localtm, *ltm;
+-#else
+- struct tm localtm;
+-#endif
+-
+- if (!(timeobj) || !(timeobj->data))
+- return NULL;
+-
+- str = (char *)(timeobj->data);
+- if (strlen(str) < 12)
+- return NULL;
+-
+- t = (struct tm *)calloc(1, sizeof(struct tm));
+- if (!(t))
+- return NULL;
+-
+- if (timeobj->type == V_ASN1_UTCTIME) {
+- /* two digit year */
+- fmt = "%y%m%d%H%M%S";
+- if (str[3] == '0') {
+- str[2] = '0';
+- str[3] = '9';
+- } else {
+- str[3]--;
+- }
+- } else if (timeobj->type == V_ASN1_GENERALIZEDTIME) {
+- /* four digit year */
+- fmt = "%Y%m%d%H%M%S";
+- if (str[5] == '0') {
+- str[4] = '0';
+- str[5] = '9';
+- } else {
+- str[5]--;
+- }
+- }
+-
+- if (!(fmt)) {
+- free(t);
+- return NULL;
+- }
+-
+- if (!strptime(str, fmt, t)) {
+- free(t);
+- return NULL;
+- }
+-
+- /* Convert to local time */
+- localt = time(NULL);
+-#ifdef _WIN32
+- ltm = localtime(&localt);
+- memcpy((void *)(&localtm), (void *)ltm, sizeof(struct tm));
+-#else
+- localtime_r(&localt, &localtm);
+-#endif
+- t->tm_isdst = localtm.tm_isdst;
+- return t;
+-}
+-
+ X509_CRL *cl_load_crl(const char *file)
+ {
+ X509_CRL *x = NULL;
+diff --git a/libclamav/libclamav.map b/libclamav/libclamav.map
+index 809341f42..f3efe1a33 100644
+--- a/libclamav/libclamav.map
++++ b/libclamav/libclamav.map
+@@ -271,7 +271,6 @@ CLAMAV_PRIVATE {
+ cl_verify_signature_hash_x509;
+ cl_verify_signature_hash_x509_keyfile;
+ cl_load_cert;
+- cl_ASN1_GetTimeT;
+ cl_load_crl;
+ cl_sign_data_keyfile;
+ cl_sign_data;
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 36/66] package/freeradius-server: Add support for OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (34 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 35/66] package/clamav: Fix build with OpenSSL 4.0.0 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 37/66] package/freeswitch: " Bernd Kuhls
` (29 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: David GOUARIN
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: David GOUARIN <dgouarin@gmail.com>
---
...ING-functions-for-OpenSSL-4.0-compat.patch | 80 +++++++++++++++++++
1 file changed, 80 insertions(+)
create mode 100644 package/freeradius-server/0009-Use-ASN1_STRING-functions-for-OpenSSL-4.0-compat.patch
diff --git a/package/freeradius-server/0009-Use-ASN1_STRING-functions-for-OpenSSL-4.0-compat.patch b/package/freeradius-server/0009-Use-ASN1_STRING-functions-for-OpenSSL-4.0-compat.patch
new file mode 100644
index 0000000000..78d332ef1f
--- /dev/null
+++ b/package/freeradius-server/0009-Use-ASN1_STRING-functions-for-OpenSSL-4.0-compat.patch
@@ -0,0 +1,80 @@
+From 6658c9e375637ce0bd14bed733270d863224431e Mon Sep 17 00:00:00 2001
+From: Antonio Torres <antorres@redhat.com>
+Date: Tue, 5 May 2026 14:42:27 +0200
+Subject: [PATCH] Use ASN1_STRING functions for OpenSSL 4.0 compat
+
+Use ASN1_STRING accessor functions instead of direct field access
+for ASN1_IA5STRING, ASN1_INTEGER, and ASN1_TIME structures.
+
+This fixes compatibility with OpenSSL 4.0.
+
+Signed-off-by: Antonio Torres <antorres@redhat.com>
+
+Upstream: https://github.com/FreeRADIUS/freeradius-server/commit/6658c9e375637ce0bd14bed733270d863224431e
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/main/tls.c | 26 ++++++++++++++++----------
+ 1 file changed, 16 insertions(+), 10 deletions(-)
+
+diff --git a/src/main/tls.c b/src/main/tls.c
+index 4f4cd0c28022..27b69a06229f 100644
+--- a/src/main/tls.c
++++ b/src/main/tls.c
+@@ -2584,7 +2584,7 @@ static int ocsp_parse_cert_url(X509 *cert, char **host_out, char **port_out,
+ if (OBJ_obj2nid(ad->method) != NID_ad_OCSP) continue;
+ if (ad->location->type != GEN_URI) continue;
+
+- if (OCSP_parse_url((char *) ad->location->d.ia5->data, host_out,
++ if (OCSP_parse_url((const char *) ASN1_STRING_get0_data(ad->location->d.ia5), host_out,
+ port_out, path_out, is_https)) {
+ ret = 1;
+ break;
+@@ -3066,12 +3066,14 @@ int cbtls_verify(int ok, X509_STORE_CTX *ctx)
+ * we're at the client or issuing certificate.
+ */
+ if (certs &&
+- (lookup <= 1) && sn && ((size_t) sn->length < (sizeof(buf) / 2))) {
++ (lookup <= 1) && sn && ((size_t) ASN1_STRING_length(sn) < (sizeof(buf) / 2))) {
+ char *p = buf;
+ int i;
++ int sn_len = ASN1_STRING_length(sn);
++ const unsigned char *sn_data = ASN1_STRING_get0_data(sn);
+
+- for (i = 0; i < sn->length; i++) {
+- sprintf(p, "%02x", (unsigned int)sn->data[i]);
++ for (i = 0; i < sn_len; i++) {
++ sprintf(p, "%02x", (unsigned int)sn_data[i]);
+ p += 2;
+ }
+ vp = fr_pair_make(talloc_ctx, certs, cert_attr_names[FR_TLS_SERIAL][lookup], buf, T_OP_SET);
+@@ -3084,9 +3086,11 @@ int cbtls_verify(int ok, X509_STORE_CTX *ctx)
+ buf[0] = '\0';
+ asn_time = X509_get_notAfter(client_cert);
+ if (certs && (lookup <= 1) && asn_time &&
+- (asn_time->length < (int) sizeof(buf))) {
+- memcpy(buf, (char*) asn_time->data, asn_time->length);
+- buf[asn_time->length] = '\0';
++ (ASN1_STRING_length(asn_time) < (int) sizeof(buf))) {
++ int time_len = ASN1_STRING_length(asn_time);
++ const unsigned char *time_data = ASN1_STRING_get0_data(asn_time);
++ memcpy(buf, time_data, time_len);
++ buf[time_len] = '\0';
+ vp = fr_pair_make(talloc_ctx, certs, cert_attr_names[FR_TLS_EXPIRATION][lookup], buf, T_OP_SET);
+ rdebug_pair(L_DBG_LVL_2, request, vp, NULL);
+ }
+@@ -3097,9 +3101,11 @@ int cbtls_verify(int ok, X509_STORE_CTX *ctx)
+ buf[0] = '\0';
+ asn_time = X509_get_notBefore(client_cert);
+ if (certs && (lookup <= 1) && asn_time &&
+- (asn_time->length < (int) sizeof(buf))) {
+- memcpy(buf, (char*) asn_time->data, asn_time->length);
+- buf[asn_time->length] = '\0';
++ (ASN1_STRING_length(asn_time) < (int) sizeof(buf))) {
++ int time_len = ASN1_STRING_length(asn_time);
++ const unsigned char *time_data = ASN1_STRING_get0_data(asn_time);
++ memcpy(buf, time_data, time_len);
++ buf[time_len] = '\0';
+ vp = fr_pair_make(talloc_ctx, certs, cert_attr_names[FR_TLS_VALID_SINCE][lookup], buf, T_OP_SET);
+ rdebug_pair(L_DBG_LVL_2, request, vp, NULL);
+ }
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 37/66] package/freeswitch: Add support for OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (35 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 36/66] package/freeradius-server: Add support for " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 38/66] package/ibm-sw-tpm2: Fix build with OpenSSL 4.{0, 1} Bernd Kuhls
` (28 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
configure checks for DTLSv1_method() and DTLSv1_2_method() to make sure
OpenSSL >= 1.0.1e is used, the functions itself are not used by
freeswitch. The two functions were removed from OpenSSL 4.0.0 breaking
the configure check. To fix the problem we let Freeswitch force-detect
the function to finish configure successfully.
Bug was reported upstream:
https://github.com/signalwire/freeswitch/issues/3159
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
package/freeswitch/freeswitch.mk | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/package/freeswitch/freeswitch.mk b/package/freeswitch/freeswitch.mk
index e27c53650f..524599870c 100644
--- a/package/freeswitch/freeswitch.mk
+++ b/package/freeswitch/freeswitch.mk
@@ -75,6 +75,11 @@ FREESWITCH_CONF_ENV += \
FREESWITCH_CONF_ENV += \
ac_cv_gcc_supports_w_no_unused_result=no
+# fix build with OpenSSL 4.0.0
+FREESWITCH_CONF_ENV += \
+ ac_cv_lib_ssl_DTLSv1_method=yes \
+ ac_cv_lib_ssl_DTLSv1_2_method=yes
+
FREESWITCH_CONF_OPTS = \
--without-erlang \
--enable-fhs \
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 38/66] package/ibm-sw-tpm2: Fix build with OpenSSL 4.{0, 1}
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (36 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 37/66] package/freeswitch: " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 39/66] package/ibrdtnd: Fix build with OpenSSL 4.0.0 Bernd Kuhls
` (27 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Philippe Reynes
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Philippe Reynes <philippe.reynes@softathome.com>
---
.../0002-tpm-Update-to-OpenSSL-4.1.patch | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 package/ibm-sw-tpm2/0002-tpm-Update-to-OpenSSL-4.1.patch
diff --git a/package/ibm-sw-tpm2/0002-tpm-Update-to-OpenSSL-4.1.patch b/package/ibm-sw-tpm2/0002-tpm-Update-to-OpenSSL-4.1.patch
new file mode 100644
index 0000000000..3b4e3d815e
--- /dev/null
+++ b/package/ibm-sw-tpm2/0002-tpm-Update-to-OpenSSL-4.1.patch
@@ -0,0 +1,28 @@
+From 66921ee5ba05ffb92700b00f17cf1e8b75522aee Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Sun, 13 Sep 2026 11:11:24 +0200
+Subject: [PATCH] tpm: Update to OpenSSL 4.1
+
+Upstream: https://github.com/kgoldman/ibmswtpm2/pull/24
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/BnToOsslMath.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/BnToOsslMath.h b/src/BnToOsslMath.h
+index 731957e..345d29f 100644
+--- a/src/BnToOsslMath.h
++++ b/src/BnToOsslMath.h
+@@ -77,7 +77,7 @@
+ #include <openssl/ec.h>
+ #include <openssl/bn.h>
+
+-#if OPENSSL_VERSION_NUMBER >= 0x30600ff0L
++#if OPENSSL_VERSION_NUMBER >= 0x40100ff0L
+ // Check the bignum_st definition against the one below and either update the
+ // version check or provide the new definition for this version.
+ # error Untested OpenSSL version
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 39/66] package/ibrdtnd: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (37 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 38/66] package/ibm-sw-tpm2: Fix build with OpenSSL 4.{0, 1} Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 40/66] package/lftp: Add support for " Bernd Kuhls
` (26 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...ateManager.cpp-fix-build-with-OpenSS.patch | 41 +++++++++++++++++++
1 file changed, 41 insertions(+)
create mode 100644 package/ibrdtnd/0003-SecurityCertificateManager.cpp-fix-build-with-OpenSS.patch
diff --git a/package/ibrdtnd/0003-SecurityCertificateManager.cpp-fix-build-with-OpenSS.patch b/package/ibrdtnd/0003-SecurityCertificateManager.cpp-fix-build-with-OpenSS.patch
new file mode 100644
index 0000000000..4755409747
--- /dev/null
+++ b/package/ibrdtnd/0003-SecurityCertificateManager.cpp-fix-build-with-OpenSS.patch
@@ -0,0 +1,41 @@
+From 7dce31ed85b2e2299e63e7704ae2ffa7ce08d1c5 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Tue, 1 Sep 2026 22:44:06 +0200
+Subject: [PATCH] SecurityCertificateManager.cpp: fix build with OpenSSL 4.0.0
+
+https://github.com/openssl/openssl/issues/29117
+
+Upstream: https://github.com/ibrdtn/ibrdtn/pull/287
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/security/SecurityCertificateManager.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/security/SecurityCertificateManager.cpp b/src/security/SecurityCertificateManager.cpp
+index f2bbb017..0093d418 100644
+--- a/src/security/SecurityCertificateManager.cpp
++++ b/src/security/SecurityCertificateManager.cpp
+@@ -146,8 +146,8 @@ namespace dtn
+ throw SecurityCertificateException("certificate or common-name is empty");
+ }
+
+- X509_NAME *cert_name;
+- X509_NAME_ENTRY *name_entry;
++ const X509_NAME *cert_name;
++ const X509_NAME_ENTRY *name_entry;
+ ASN1_STRING *eid_string;
+ int lastpos = -1;
+ unsigned char *utf8_eid;
+@@ -188,7 +188,7 @@ namespace dtn
+ }
+
+ /* retrieve the string */
+- ASN1_STRING *asn1 = X509_NAME_ENTRY_get_data(name_entry);
++ const ASN1_STRING *asn1 = X509_NAME_ENTRY_get_data(name_entry);
+ if(!asn1){
+ IBRCOMMON_LOGGER_TAG(SecurityCertificateManager::TAG, error) << "X509_NAME_ENTRY_get_data returned NULL unexpectedly." << IBRCOMMON_LOGGER_ENDL;
+ continue;
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 40/66] package/lftp: Add support for OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (38 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 39/66] package/ibrdtnd: Fix build with OpenSSL 4.0.0 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 41/66] package/libesmtp: Fix build with " Bernd Kuhls
` (25 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Fabrice Fontaine
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
.../0002-allow-build-with-OpenSSL-4.x.patch | 56 +++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100644 package/lftp/0002-allow-build-with-OpenSSL-4.x.patch
diff --git a/package/lftp/0002-allow-build-with-OpenSSL-4.x.patch b/package/lftp/0002-allow-build-with-OpenSSL-4.x.patch
new file mode 100644
index 0000000000..258d08fb2d
--- /dev/null
+++ b/package/lftp/0002-allow-build-with-OpenSSL-4.x.patch
@@ -0,0 +1,56 @@
+From e5d53bcb31b1f3792c6ab321e20d566b9a4ff0a5 Mon Sep 17 00:00:00 2001
+From: Rudi Heitbaum <rudi@heitbaum.com>
+Date: Sat, 21 Mar 2026 03:56:46 +0000
+Subject: [PATCH] allow build with OpenSSL 4.x
+
+Upstream: https://github.com/lavv17/lftp/commit/e5d53bcb31b1f3792c6ab321e20d566b9a4ff0a5
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/lftp_ssl.cc | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/lftp_ssl.cc b/src/lftp_ssl.cc
+index f53edf24..49328f74 100644
+--- a/src/lftp_ssl.cc
++++ b/src/lftp_ssl.cc
+@@ -1022,8 +1022,8 @@ const char *lftp_ssl_openssl::strerror()
+ int lftp_ssl_openssl::verify_crl(X509_STORE_CTX *ctx)
+ {
+ X509_OBJECT *obj=0;
+- X509_NAME *subject=0;
+- X509_NAME *issuer=0;
++ const X509_NAME *subject=0;
++ const X509_NAME *issuer=0;
+ X509 *xs=0;
+ X509_CRL *crl=0;
+ X509_REVOKED *revoked=0;
+@@ -1436,7 +1436,7 @@ void lftp_ssl_openssl::check_certificate()
+ unsigned char *nulstr = (unsigned char *)"";
+ unsigned char *peer_CN = nulstr;
+
+- X509_NAME *name = X509_get_subject_name(server_cert) ;
++ const X509_NAME *name = X509_get_subject_name(server_cert) ;
+ if(name)
+ while((j = X509_NAME_get_index_by_NID(name, NID_commonName, i))>=0)
+ i=j;
+@@ -1446,7 +1446,7 @@ void lftp_ssl_openssl::check_certificate()
+ UTF8 etc. */
+
+ if(i>=0) {
+- ASN1_STRING *tmp = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(name,i));
++ const ASN1_STRING *tmp = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(name,i));
+
+ /* In OpenSSL 0.9.7d and earlier, ASN1_STRING_to_UTF8 fails if the input
+ is already UTF-8 encoded. We check for this case and copy the raw
+@@ -1522,8 +1522,8 @@ int lftp_ssl_openssl::verify_callback(int ok,X509_STORE_CTX *ctx)
+ if(cert!=prev_cert)
+ {
+ int depth = X509_STORE_CTX_get_error_depth(ctx);
+- X509_NAME *subject = X509_get_subject_name(cert);
+- X509_NAME *issuer = X509_get_issuer_name(cert);
++ const X509_NAME *subject = X509_get_subject_name(cert);
++ const X509_NAME *issuer = X509_get_issuer_name(cert);
+ char *subject_line = X509_NAME_oneline(subject, NULL, 0);
+ char *issuer_line = X509_NAME_oneline(issuer, NULL, 0);
+ Log::global->Format(3,"Certificate depth: %d; subject: %s; issuer: %s\n",
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 41/66] package/libesmtp: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (39 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 40/66] package/lftp: Add support for " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 42/66] package/libkrb5: Add support for " Bernd Kuhls
` (24 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...-with-OpenSSL-4.0-opaque-ASN1_STRING.patch | 36 +++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 package/libesmtp/0001-Fix-build-with-OpenSSL-4.0-opaque-ASN1_STRING.patch
diff --git a/package/libesmtp/0001-Fix-build-with-OpenSSL-4.0-opaque-ASN1_STRING.patch b/package/libesmtp/0001-Fix-build-with-OpenSSL-4.0-opaque-ASN1_STRING.patch
new file mode 100644
index 0000000000..f38435b68a
--- /dev/null
+++ b/package/libesmtp/0001-Fix-build-with-OpenSSL-4.0-opaque-ASN1_STRING.patch
@@ -0,0 +1,36 @@
+From 0705423e2596a21e2d4e1f3fd492792956a4bad3 Mon Sep 17 00:00:00 2001
+From: Ravi Kant Sharma <ravi.kant.sharma@canonical.com>
+Date: Tue, 28 Jul 2026 20:35:48 +0200
+Subject: [PATCH] Fix build with OpenSSL 4.0 opaque ASN1_STRING
+
+OpenSSL 4.0 made ASN1_STRING opaque, so direct access to ->data and
+->length fields no longer compiles. Use ASN1_STRING_get0_data() and
+ASN1_STRING_length() accessors which are available since OpenSSL 1.1.0.
+
+Fixes #33
+
+Upstream: https://github.com/libesmtp/libESMTP/pull/34
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ smtp-tls.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/smtp-tls.c b/smtp-tls.c
+index 9f3e50e..981284e 100644
+--- a/smtp-tls.c
++++ b/smtp-tls.c
+@@ -599,8 +599,8 @@ check_acceptable_security (smtp_session_t session, SSL *ssl)
+
+ if (name->type == GEN_DNS)
+ {
+- const char *ia5str = (const char *) name->d.ia5->data;
+- size_t ia5len = name->d.ia5->length;
++ const char *ia5str = (const char *) ASN1_STRING_get0_data(name->d.ia5);
++ size_t ia5len = ASN1_STRING_length(name->d.ia5);
+
+ hasaltname = 1;
+ if (strlen (ia5str) == ia5len && match_domain (host, ia5str))
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 42/66] package/libkrb5: Add support for OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (40 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 41/66] package/libesmtp: Fix build with " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 43/66] package/luvi: fix build without c++ Bernd Kuhls
` (23 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: André Zwing
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: André Zwing <nerv@dawncrow.de>
---
...eck_host-to-verify-KKDCP-server-cert.patch | 252 ++++++++++++++
...Improve-future-OpenSSL-compatibility.patch | 327 ++++++++++++++++++
2 files changed, 579 insertions(+)
create mode 100644 package/libkrb5/0002-Use-X509_check_host-to-verify-KKDCP-server-cert.patch
create mode 100644 package/libkrb5/0003-Improve-future-OpenSSL-compatibility.patch
diff --git a/package/libkrb5/0002-Use-X509_check_host-to-verify-KKDCP-server-cert.patch b/package/libkrb5/0002-Use-X509_check_host-to-verify-KKDCP-server-cert.patch
new file mode 100644
index 0000000000..d1411cf0d5
--- /dev/null
+++ b/package/libkrb5/0002-Use-X509_check_host-to-verify-KKDCP-server-cert.patch
@@ -0,0 +1,252 @@
+From f5bbfa4821cf590a4748f96d0e016bc0485e95c4 Mon Sep 17 00:00:00 2001
+From: Greg Hudson <ghudson@mit.edu>
+Date: Wed, 25 Feb 2026 19:05:40 -0500
+Subject: [PATCH] Use X509_check_host() to verify KKDCP server cert
+
+In the k5tls module, rely on X509_check_host() and
+X509_check_ip_asc(), which were added in OpenSSL 1.0.2, instead of
+doing our own verification.
+
+There is one notable difference in behavior: X509_check_host() admits
+wildcards with a prefix or suffix (but not both) within the label,
+like "kdc*.mydomain.com". The old code only allows a wildcard to
+match a complete label.
+
+ticket: 9198 (new)
+
+Upstream: https://github.com/krb5/krb5/commit/f5bbfa4821cf590a4748f96d0e016bc0485e95c4
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/plugins/tls/k5tls/openssl.c | 211 +-------------------------------
+ 1 file changed, 6 insertions(+), 205 deletions(-)
+
+diff --git a/src/plugins/tls/k5tls/openssl.c b/src/plugins/tls/k5tls/openssl.c
+index aab67c01cbc..42d72dc9ec2 100644
+--- a/src/plugins/tls/k5tls/openssl.c
++++ b/src/plugins/tls/k5tls/openssl.c
+@@ -71,218 +71,19 @@ flush_errors(krb5_context context)
+ }
+ }
+
+-/* Return the passed-in character, lower-cased if it's an ASCII character. */
+-static inline char
+-ascii_tolower(char p)
+-{
+- if (KRB5_UPPER(p))
+- return p + ('a' - 'A');
+- return p;
+-}
+-
+-/*
+- * Check a single label. If allow_wildcard is true, and the presented name
+- * includes a wildcard, return true and note that we matched a wildcard.
+- * Otherwise, for both the presented and expected values, do a case-insensitive
+- * comparison of ASCII characters, and a case-sensitive comparison of
+- * everything else.
+- */
+-static krb5_boolean
+-label_match(const char *presented, size_t plen, const char *expected,
+- size_t elen, krb5_boolean allow_wildcard, krb5_boolean *wildcard)
+-{
+- unsigned int i;
+-
+- if (allow_wildcard && plen == 1 && presented[0] == '*') {
+- *wildcard = TRUE;
+- return TRUE;
+- }
+-
+- if (plen != elen)
+- return FALSE;
+-
+- for (i = 0; i < elen; i++) {
+- if (ascii_tolower(presented[i]) != ascii_tolower(expected[i]))
+- return FALSE;
+- }
+- return TRUE;
+-}
+-
+-/* Break up the two names and check them, label by label. */
+-static krb5_boolean
+-domain_match(const char *presented, size_t plen, const char *expected)
+-{
+- const char *p, *q, *r, *s;
+- int n_label;
+- krb5_boolean used_wildcard = FALSE;
+-
+- n_label = 0;
+- p = presented;
+- r = expected;
+- while (p < presented + plen && *r != '\0') {
+- q = memchr(p, '.', plen - (p - presented));
+- if (q == NULL)
+- q = presented + plen;
+- s = r + strcspn(r, ".");
+- if (!label_match(p, q - p, r, s - r, n_label == 0, &used_wildcard))
+- return FALSE;
+- p = q < presented + plen ? q + 1 : q;
+- r = *s ? s + 1 : s;
+- n_label++;
+- }
+- if (used_wildcard && n_label <= 2)
+- return FALSE;
+- if (p == presented + plen && *r == '\0')
+- return TRUE;
+- return FALSE;
+-}
+-
+-/* Fetch the list of subjectAltNames from a certificate. */
+-static GENERAL_NAMES *
+-get_cert_sans(X509 *x)
+-{
+- int ext;
+- X509_EXTENSION *san_ext;
+-
+- ext = X509_get_ext_by_NID(x, NID_subject_alt_name, -1);
+- if (ext < 0)
+- return NULL;
+- san_ext = X509_get_ext(x, ext);
+- if (san_ext == NULL)
+- return NULL;
+- return X509V3_EXT_d2i(san_ext);
+-}
+-
+-/* Fetch a CN value from the subjct name field, returning its length, or -1 if
+- * there is no subject name or it contains no CN value. */
+-static int
+-get_cert_cn(X509 *x, char *buf, size_t bufsize)
+-{
+- X509_NAME *name;
+-
+- name = X509_get_subject_name(x);
+- if (name == NULL)
+- return -1;
+- return X509_NAME_get_text_by_NID(name, NID_commonName, buf, bufsize);
+-}
+-
+-/* Return true if text matches any of the addresses we can recover from x. */
+-static krb5_boolean
+-check_cert_address(X509 *x, const char *text)
+-{
+- char buf[1024];
+- GENERAL_NAMES *sans;
+- GENERAL_NAME *san = NULL;
+- ASN1_OCTET_STRING *ip;
+- krb5_boolean found_ip_san = FALSE, matched = FALSE;
+- int n_sans, i;
+- int name_length;
+- struct in_addr sin;
+- struct in6_addr sin6;
+-
+- /* Parse the IP address into an octet string. */
+- ip = ASN1_OCTET_STRING_new();
+- if (ip == NULL)
+- return FALSE;
+- if (inet_pton(AF_INET, text, &sin)) {
+- ASN1_OCTET_STRING_set(ip, (unsigned char *)&sin, sizeof(sin));
+- } else if (inet_pton(AF_INET6, text, &sin6)) {
+- ASN1_OCTET_STRING_set(ip, (unsigned char *)&sin6, sizeof(sin6));
+- } else {
+- ASN1_OCTET_STRING_free(ip);
+- return FALSE;
+- }
+-
+- /* Check for matches in ipaddress subjectAltName values. */
+- sans = get_cert_sans(x);
+- if (sans != NULL) {
+- n_sans = sk_GENERAL_NAME_num(sans);
+- for (i = 0; i < n_sans; i++) {
+- san = sk_GENERAL_NAME_value(sans, i);
+- if (san->type != GEN_IPADD)
+- continue;
+- found_ip_san = TRUE;
+- matched = (ASN1_OCTET_STRING_cmp(ip, san->d.iPAddress) == 0);
+- if (matched)
+- break;
+- }
+- sk_GENERAL_NAME_pop_free(sans, GENERAL_NAME_free);
+- }
+- ASN1_OCTET_STRING_free(ip);
+-
+- if (found_ip_san)
+- return matched;
+-
+- /* Check for a match against the CN value in the peer's subject name. */
+- name_length = get_cert_cn(x, buf, sizeof(buf));
+- if (name_length >= 0) {
+- /* Do a string compare to check if it's an acceptable value. */
+- return strlen(text) == (size_t)name_length &&
+- strncmp(text, buf, name_length) == 0;
+- }
+-
+- /* We didn't find a match. */
+- return FALSE;
+-}
+-
+-/* Return true if expected matches any of the names we can recover from x. */
+-static krb5_boolean
+-check_cert_servername(X509 *x, const char *expected)
+-{
+- char buf[1024];
+- GENERAL_NAMES *sans;
+- GENERAL_NAME *san = NULL;
+- unsigned char *dnsname;
+- krb5_boolean found_dns_san = FALSE, matched = FALSE;
+- int name_length, n_sans, i;
+-
+- /* Check for matches in dnsname subjectAltName values. */
+- sans = get_cert_sans(x);
+- if (sans != NULL) {
+- n_sans = sk_GENERAL_NAME_num(sans);
+- for (i = 0; i < n_sans; i++) {
+- san = sk_GENERAL_NAME_value(sans, i);
+- if (san->type != GEN_DNS)
+- continue;
+- found_dns_san = TRUE;
+- dnsname = NULL;
+- name_length = ASN1_STRING_to_UTF8(&dnsname, san->d.dNSName);
+- if (dnsname == NULL)
+- continue;
+- matched = domain_match((char *)dnsname, name_length, expected);
+- OPENSSL_free(dnsname);
+- if (matched)
+- break;
+- }
+- sk_GENERAL_NAME_pop_free(sans, GENERAL_NAME_free);
+- }
+-
+- if (matched)
+- return TRUE;
+- if (found_dns_san)
+- return matched;
+-
+- /* Check for a match against the CN value in the peer's subject name. */
+- name_length = get_cert_cn(x, buf, sizeof(buf));
+- if (name_length >= 0)
+- return domain_match(buf, name_length, expected);
+-
+- /* We didn't find a match. */
+- return FALSE;
+-}
+-
+ static krb5_boolean
+ check_cert_name_or_ip(X509 *x, const char *expected_name)
+ {
+ struct in_addr in;
+ struct in6_addr in6;
++ int r;
+
+ if (inet_pton(AF_INET, expected_name, &in) != 0 ||
+- inet_pton(AF_INET6, expected_name, &in6) != 0) {
+- return check_cert_address(x, expected_name);
+- } else {
+- return check_cert_servername(x, expected_name);
+- }
++ inet_pton(AF_INET6, expected_name, &in6) != 0)
++ r = X509_check_ip_asc(x, expected_name, 0);
++ else
++ r = X509_check_host(x, expected_name, 0, 0, NULL);
++ return r == 1;
+ }
+
+ static int
diff --git a/package/libkrb5/0003-Improve-future-OpenSSL-compatibility.patch b/package/libkrb5/0003-Improve-future-OpenSSL-compatibility.patch
new file mode 100644
index 0000000000..6b68af89e9
--- /dev/null
+++ b/package/libkrb5/0003-Improve-future-OpenSSL-compatibility.patch
@@ -0,0 +1,327 @@
+From 5e4e8452328804948d042235bbf58ca457795857 Mon Sep 17 00:00:00 2001
+From: Bob Beck <beck@openssl.org>
+Date: Mon, 16 Feb 2026 15:15:55 -0700
+Subject: [PATCH] Improve future OpenSSL compatibility
+
+Avoid calling deprecated OpenSSL functions when compiling against
+versions of OpenSSL where they are deprecated. Add
+-DOPENSSL_NO_DEPRECATED to the linux-clang-openssl CI build to help
+detect calls to deprecated functions in the future.
+
+Use const pointer variables to hold values retrieved by accessors
+which will return const pointers in OpenSSL 4.0. Define macros to
+make certain functions accept these const pointers in versions of
+OpenSSL where they don't already do so.
+
+Use accessor functions instead of direct field access for ASN1_STRING
+values, as the type will become opaque in OpenSSL 4.0.
+
+The PKINIT code is written to assume that DHX support was not present
+until OpenSSL 1.1, but it was added in release 1.0.2, causing a
+compilation error against 1.0.2 from a double definition of
+EVP_PKEY_DHX. Minimally fix the compilation error. (The custom DHX
+marshalling code to support 1.0.x could be removed, as 1.0.2 is the
+minimum version after commit f5bbfa4821cf590a4748f96d0e016bc0485e95c4,
+but the plan is to remove 1.0.x compatibility shortly.)
+
+Contains work by Frederik Wedel-Heinen
+<frederik.wedel-heinen@dencrypt.dk> and Dimitri John Ledkov
+<dimitri.ledkov@surgut.co.uk>.
+
+[ghudson@mit.edu: combined numerous commits; added compatibility
+macros; rewrote commit message; fixed 1.0.2 compatibility issue]
+
+Upstream: https://github.com/krb5/krb5/commit/5e4e8452328804948d042235bbf58ca457795857
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ .github/workflows/build.yml | 10 ++--
+ .../preauth/pkinit/pkinit_crypto_openssl.c | 54 ++++++++++++++-----
+ src/plugins/tls/k5tls/openssl.c | 26 +++++++--
+ 3 files changed, 68 insertions(+), 22 deletions(-)
+
+diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
+index f12422d19a..97f1082c59 100644
+--- a/.github/workflows/build.yml
++++ b/.github/workflows/build.yml
+@@ -16,17 +16,17 @@ jobs:
+ - name: linux-clang
+ os: ubuntu-latest
+ compiler: clang
+- makevars: CPPFLAGS=-Werror
++ flags: -Werror
+ configureopts: --enable-asan
+ - name: linux-clang-openssl
+ os: ubuntu-latest
+ compiler: clang
+- makevars: CPPFLAGS=-Werror
++ flags: -Werror -DOPENSSL_NO_DEPRECATED
+ configureopts: --with-crypto-impl=openssl
+ - name: linux-gcc
+ os: ubuntu-latest
+ compiler: gcc
+- makevars: CPPFLAGS=-D_FORTIFY_SOURCE=3
++ flags: -D_FORTIFY_SOURCE=3
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v1
+@@ -39,7 +39,7 @@ jobs:
+ - name: Build
+ env:
+ CC: ${{ matrix.compiler }}
+- MAKEVARS: ${{ matrix.makevars }}
++ FLAGS: ${{ matrix.flags }}
+ CONFIGURE_OPTS: ${{ matrix.configureopts }}
+ run: |
+ # For the ksu tests, allow homedir access from other users.
+@@ -49,7 +49,7 @@ jobs:
+ cd src
+ autoreconf
+ ./configure --enable-maintainer-mode --with-ldap $CONFIGURE_OPTS --prefix=$HOME/inst
+- make $MAKEVARS
++ make CPPFLAGS="$FLAGS"
+ make check
+ make install
+ (cd clients/ksu && make check-ksu)
+diff --git a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
+index d1fe18e5ab..aa969aa37c 100644
+--- a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
++++ b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
+@@ -209,13 +209,20 @@ create_identifiers_from_stack(STACK_OF(X509) *sk,
+ #define EVP_MD_CTX_new EVP_MD_CTX_create
+ #define EVP_MD_CTX_free EVP_MD_CTX_destroy
+ #define ASN1_STRING_get0_data ASN1_STRING_data
++#define X509_STORE_CTX_set0_trusted_stack X509_STORE_CTX_trusted_stack
+
+ /*
+- * 1.1 adds DHX support, which uses the RFC 3279 DomainParameters encoding we
++ * 1.0.2 adds DHX support, which uses the RFC 3279 DomainParameters encoding we
+ * need for PKINIT. For 1.0 we must use the original DH type when creating
+ * EVP_PKEY objects.
+ */
++#ifndef EVP_PKEY_DHX
+ #define EVP_PKEY_DHX EVP_PKEY_DH
++#endif
++
++/* Make X509_NAME_print_ex() accept a const name pointer by adding a cast. */
++#define X509_NAME_print_ex(a, b, c, d) \
++ X509_NAME_print_ex(a, (X509_NAME *)b, c, d)
+
+ /* 1.1 makes many handle types opaque and adds accessors. Add compatibility
+ * versions of the new accessors we use for pre-1.1. */
+@@ -295,6 +302,10 @@ compat_ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s)
+ #define EVP_PKEY_get_bits EVP_PKEY_bits
+ #define EVP_PKEY_get_base_id EVP_PKEY_base_id
+
++/* Make X509_dup() accept a const pointer by adding a cast. */
++#define X509_dup(a) X509_dup((X509 *)a)
++#define i2d_X509_NAME(a, b) i2d_X509_NAME((X509_NAME *)a, b)
++
+ /*
+ * Convert *dh to an EVP_PKEY object, taking ownership of *dh and setting it to
+ * NULL. On error, return NULL and do not take ownership of or change *dh.
+@@ -318,6 +329,11 @@ dh_to_pkey(DH **dh)
+ }
+ #endif /* OPENSSL_VERSION_NUMBER < 0x30000000L */
+
++#if OPENSSL_VERSION_NUMBER < 0x40000000L
++/* Make X509V3_EXT_d2i() accept a const pointer by adding a cast. */
++#define X509V3_EXT_d2i(a) X509V3_EXT_d2i((X509_EXTENSION *)a)
++#endif
++
+ /* Encode a bignum as an ASN.1 integer in DER. */
+ static int
+ encode_bn_der(const BIGNUM *bn, uint8_t **der_out, int *len_out)
+@@ -1134,6 +1150,13 @@ oerr_cert(krb5_context context, krb5_error_code code, X509_STORE_CTX *certctx,
+ return oerr(context, code, _("%s (depth %d): %s"), msg, depth, errstr);
+ }
+
++/* Convert an OpenSSL ASN.1 string value to krb5_data, without copying. */
++static inline krb5_data
++asn1string_to_data(ASN1_STRING *s)
++{
++ return make_data((char *)ASN1_STRING_get0_data(s), ASN1_STRING_length(s));
++}
++
+ krb5_error_code
+ pkinit_init_plg_crypto(krb5_context context,
+ pkinit_plg_crypto_context *cryptoctx)
+@@ -1775,7 +1798,7 @@ cms_signeddata_create(krb5_context context,
+ goto cleanup;
+ X509_STORE_CTX_init(certctx, certstore, id_cryptoctx->my_cert,
+ id_cryptoctx->intermediateCAs);
+- X509_STORE_CTX_trusted_stack(certctx, id_cryptoctx->trustedCAs);
++ X509_STORE_CTX_set0_trusted_stack(certctx, id_cryptoctx->trustedCAs);
+ if (!X509_verify_cert(certctx)) {
+ retval = oerr_cert(context, 0, certctx,
+ _("Failed to verify own certificate"));
+@@ -2002,7 +2025,7 @@ cms_signeddata_verify(krb5_context context,
+ unsigned char *d;
+ *is_signed = 0;
+ octets = CMS_get0_content(cms);
+- if (!octets || ((*octets)->type != V_ASN1_OCTET_STRING)) {
++ if (!octets || (ASN1_STRING_type(*octets) != V_ASN1_OCTET_STRING)) {
+ retval = KRB5KDC_ERR_PREAUTH_FAILED;
+ krb5_set_error_message(context, retval,
+ _("Invalid pkinit packet: octet string "
+@@ -2058,7 +2081,8 @@ cms_signeddata_verify(krb5_context context,
+ /* We cannot use CMS_dataInit because there may be no digest */
+ octets = CMS_get0_content(cms);
+ if (octets)
+- out = BIO_new_mem_buf((*octets)->data, (*octets)->length);
++ out = BIO_new_mem_buf(ASN1_STRING_get0_data(*octets),
++ ASN1_STRING_length(*octets));
+ if (out == NULL)
+ goto cleanup;
+ } else {
+@@ -2118,7 +2142,7 @@ cms_signeddata_verify(krb5_context context,
+
+ /* add trusted CAs certificates for cert verification */
+ if (idctx->trustedCAs != NULL)
+- X509_STORE_CTX_trusted_stack(cert_ctx, idctx->trustedCAs);
++ X509_STORE_CTX_set0_trusted_stack(cert_ctx, idctx->trustedCAs);
+ else {
+ pkiDebug("unable to find any trusted CAs\n");
+ goto cleanup;
+@@ -2156,7 +2180,7 @@ cms_signeddata_verify(krb5_context context,
+ i = X509_verify_cert(cert_ctx);
+ if (i <= 0) {
+ int j = X509_STORE_CTX_get_error(cert_ctx);
+- X509 *cert;
++ const X509 *cert;
+
+ cert = X509_STORE_CTX_get_current_cert(cert_ctx);
+ reqctx->received_cert = X509_dup(cert);
+@@ -2316,7 +2340,7 @@ crypto_retrieve_X509_sans(krb5_context context,
+ krb5_principal *princs = NULL;
+ char **upns = NULL;
+ unsigned char **dnss = NULL;
+- X509_EXTENSION *ext = NULL;
++ const X509_EXTENSION *ext = NULL;
+ GENERAL_NAMES *ialt = NULL;
+ GENERAL_NAME *gen = NULL;
+
+@@ -2379,8 +2403,7 @@ crypto_retrieve_X509_sans(krb5_context context,
+ gen = sk_GENERAL_NAME_value(ialt, i);
+ switch (gen->type) {
+ case GEN_OTHERNAME:
+- name.length = gen->d.otherName->value->value.sequence->length;
+- name.data = (char *)gen->d.otherName->value->value.sequence->data;
++ name = asn1string_to_data(gen->d.otherName->value->value.sequence);
+ if (princs != NULL &&
+ OBJ_cmp(plgctx->id_pkinit_san,
+ gen->d.otherName->type_id) == 0) {
+@@ -2414,12 +2437,13 @@ crypto_retrieve_X509_sans(krb5_context context,
+ case GEN_DNS:
+ if (dnss != NULL) {
+ /* Prevent abuse of embedded null characters. */
+- if (memchr(gen->d.dNSName->data, '\0', gen->d.dNSName->length))
++ if (memchr(ASN1_STRING_get0_data(gen->d.dNSName), '\0',
++ ASN1_STRING_length(gen->d.dNSName)))
+ break;
+ pkiDebug("%s: found dns name = %s\n", __FUNCTION__,
+- gen->d.dNSName->data);
++ ASN1_STRING_get0_data(gen->d.dNSName));
+ dnss[d] = (unsigned char *)
+- strdup((char *)gen->d.dNSName->data);
++ strdup((char *)ASN1_STRING_get0_data(gen->d.dNSName));
+ if (dnss[d] == NULL) {
+ pkiDebug("%s: failed to duplicate dns name\n",
+ __FUNCTION__);
+@@ -3094,8 +3118,10 @@ int
+ pkinit_openssl_init(void)
+ {
+ /* Initialize OpenSSL. */
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ ERR_load_crypto_strings();
+ OpenSSL_add_all_algorithms();
++#endif
+ return 0;
+ }
+
+@@ -4766,7 +4792,7 @@ crypto_retrieve_X509_key_usage(krb5_context context,
+ }
+
+ static krb5_error_code
+-rfc2253_name(X509_NAME *name, char **str_out)
++rfc2253_name(const X509_NAME *name, char **str_out)
+ {
+ BIO *b = NULL;
+ char *str;
+@@ -5227,7 +5253,7 @@ create_identifiers_from_stack(STACK_OF(X509) *sk,
+ int i = 0, sk_size = sk_X509_num(sk);
+ krb5_external_principal_identifier **krb5_cas = NULL;
+ X509 *x = NULL;
+- X509_NAME *xn = NULL;
++ const X509_NAME *xn = NULL;
+ unsigned char *p = NULL;
+ int len = 0;
+ PKCS7_ISSUER_AND_SERIAL *is = NULL;
+diff --git a/src/plugins/tls/k5tls/openssl.c b/src/plugins/tls/k5tls/openssl.c
+index 42d72dc9ec..7763327b7a 100644
+--- a/src/plugins/tls/k5tls/openssl.c
++++ b/src/plugins/tls/k5tls/openssl.c
+@@ -38,6 +38,24 @@
+ #include <openssl/x509v3.h>
+ #include <dirent.h>
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++/* Make X509_get_subject_name() accept a const pointer by adding a cast. */
++#define X509_get_subject_name(a) X509_get_subject_name((X509 *)a)
++
++/* OpenSSL 1.0 did not have TLS_client_method(); use the best alternative. */
++#define TLS_client_method() SSLv23_client_method()
++#endif
++
++#if OPENSSL_VERSION_NUMBER < 0x40000000L
++/*
++ * OpenSSL 4.0 constifies the result of X509_STORE_CTX_get_current_cert() and
++ * the input of X509_check_host() and X509_check_ip_asc(). For prior versions,
++ * make the latter two functions accept const pointers via a cast.
++ */
++#define X509_check_host(a, b, c, d, e) X509_check_host((X509 *)a, b, c, d, e)
++#define X509_check_ip_asc(a, b, c) X509_check_ip_asc((X509 *)a, b, c)
++#endif
++
+ struct k5_tls_handle_st {
+ SSL *ssl;
+ char *servername;
+@@ -51,9 +69,11 @@ MAKE_INIT_FUNCTION(init_openssl);
+ int
+ init_openssl(void)
+ {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ SSL_library_init();
+ SSL_load_error_strings();
+ OpenSSL_add_all_algorithms();
++#endif
+ ex_context_id = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
+ ex_handle_id = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
+ return 0;
+@@ -72,7 +92,7 @@ flush_errors(krb5_context context)
+ }
+
+ static krb5_boolean
+-check_cert_name_or_ip(X509 *x, const char *expected_name)
++check_cert_name_or_ip(const X509 *x, const char *expected_name)
+ {
+ struct in_addr in;
+ struct in6_addr in6;
+@@ -89,7 +109,7 @@ check_cert_name_or_ip(X509 *x, const char *expected_name)
+ static int
+ verify_callback(int preverify_ok, X509_STORE_CTX *store_ctx)
+ {
+- X509 *x;
++ const X509 *x;
+ SSL *ssl;
+ BIO *bio;
+ krb5_context context;
+@@ -246,7 +266,7 @@ setup(krb5_context context, SOCKET fd, const char *servername,
+ return KRB5_PLUGIN_OP_NOTSUPP;
+
+ /* Do general SSL library setup. */
+- ctx = SSL_CTX_new(SSLv23_client_method());
++ ctx = SSL_CTX_new(TLS_client_method());
+ if (ctx == NULL)
+ goto error;
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 43/66] package/luvi: fix build without c++
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (41 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 42/66] package/libkrb5: Add support for " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 44/66] package/luvi: bump version to 102-g9fa6c141a Bernd Kuhls
` (22 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Buildroot commit 00317f0aff243986983650671fd220ab040af50f bumped the
package to 2.15.0 which first included upstream commit
https://github.com/luvit/luvi/commit/262d5f7dff3484285cd8b3bf2ed32ff0f13c8741
that added the miniz submodule.
The version of miniz used by luvi contains commit
https://github.com/richgel999/miniz/commit/05ab4dc05c9d1e1f951f5849b659e2c7e291a620
which removed "C" from the project variable causing a dependency to c++
which causes build errors when the toolchain does not support c++:
-- Check for working CXX compiler: /bin/false - broken
This dependency was not intended so we add an upstream commit to fix the
problem.
Fixes:
https://autobuild.buildroot.net/results/2a5/2a5cf09dc9303b11e2a2769c5b0b319284ec1bbb/
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...eLists.txt-only-require-a-C-compiler.patch | 47 +++++++++++++++++++
1 file changed, 47 insertions(+)
create mode 100644 package/luvi/0003-CMakeLists.txt-only-require-a-C-compiler.patch
diff --git a/package/luvi/0003-CMakeLists.txt-only-require-a-C-compiler.patch b/package/luvi/0003-CMakeLists.txt-only-require-a-C-compiler.patch
new file mode 100644
index 0000000000..c68e05bdc7
--- /dev/null
+++ b/package/luvi/0003-CMakeLists.txt-only-require-a-C-compiler.patch
@@ -0,0 +1,47 @@
+From 383e551cccf41fc2ce1177712d6a37a85d936642 Mon Sep 17 00:00:00 2001
+From: Thomas Devoogdt <thomas@devoogdt.com>
+Date: Tue, 1 Apr 2025 22:56:00 +0200
+Subject: [PATCH] CMakeLists.txt: only require a C compiler
+
+Commit 05ab4dc05c9d1e1f951f5849b659e2c7e291a620
+"Add some catch2 tests" dropped that C flag,
+but should instead only have added a simple
+enable_language call for tests only.
+
+Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
+
+Upstream: https://github.com/richgel999/miniz/commit/383e551cccf41fc2ce1177712d6a37a85d936642
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ deps/miniz/CMakeLists.txt | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/deps/miniz/CMakeLists.txt b/deps/miniz/CMakeLists.txt
+index 156df83..e0933f8 100644
+--- a/deps/miniz/CMakeLists.txt
++++ b/deps/miniz/CMakeLists.txt
+@@ -7,10 +7,10 @@ if(DEFINED PROJECT_NAME)
+ endif()
+
+ if(CMAKE_MINOR_VERSION LESS 12)
+- project(miniz)
++ project(miniz C)
+ # see issue https://gitlab.kitware.com/cmake/cmake/merge_requests/1799
+ else()
+- project(miniz)
++ project(miniz C)
+ set(CMAKE_C_STANDARD 90)
+ set(CMAKE_VERBOSE_MAKEFILE ON)
+ # set(CMAKE_C_VISIBILITY_PRESET hidden)
+@@ -309,6 +309,7 @@ if(BUILD_FUZZERS)
+ endif()
+
+ if(BUILD_TESTS)
++ enable_language(CXX)
+ set(CMAKE_CXX_STANDARD 20)
+ set(CMAKE_CXX_STANDARD_REQUIRED YES)
+
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 44/66] package/luvi: bump version to 102-g9fa6c141a
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (42 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 43/66] package/luvi: fix build without c++ Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 45/66] package/luvi: Fix build with OpenSSL 4.0.0 Bernd Kuhls
` (21 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
This bump includes a bump of the lua-openssl submodule
https://github.com/luvit/luvi/commit/98fa10f2823d4a9bb93306bf445d596aa8c4a75f
which is a prerequisite for the upcoming bump of OpenSSL to 4.0.2.
Removed patches 0001 & 0002 which are included in this bump.
Renumbered and rebased remaining patch.
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...Lists.txt-only-require-a-C-compiler.patch} | 9 ++-
...ly-disable-GCC-diagnostics-in-ocsp.c.patch | 80 -------------------
...isable-Wincompatible-pointer-types-f.patch | 54 -------------
package/luvi/luvi.hash | 2 +-
package/luvi/luvi.mk | 2 +-
5 files changed, 7 insertions(+), 140 deletions(-)
rename package/luvi/{0003-CMakeLists.txt-only-require-a-C-compiler.patch => 0001-CMakeLists.txt-only-require-a-C-compiler.patch} (89%)
delete mode 100644 package/luvi/0001-Selectively-disable-GCC-diagnostics-in-ocsp.c.patch
delete mode 100644 package/luvi/0002-CMakeLists.txt-disable-Wincompatible-pointer-types-f.patch
diff --git a/package/luvi/0003-CMakeLists.txt-only-require-a-C-compiler.patch b/package/luvi/0001-CMakeLists.txt-only-require-a-C-compiler.patch
similarity index 89%
rename from package/luvi/0003-CMakeLists.txt-only-require-a-C-compiler.patch
rename to package/luvi/0001-CMakeLists.txt-only-require-a-C-compiler.patch
index c68e05bdc7..550c0fecf8 100644
--- a/package/luvi/0003-CMakeLists.txt-only-require-a-C-compiler.patch
+++ b/package/luvi/0001-CMakeLists.txt-only-require-a-C-compiler.patch
@@ -12,6 +12,7 @@ Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
Upstream: https://github.com/richgel999/miniz/commit/383e551cccf41fc2ce1177712d6a37a85d936642
+[Bernd: rebased for 102-g9fa6c141a]
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
deps/miniz/CMakeLists.txt | 5 +++--
@@ -34,14 +35,14 @@ index 156df83..e0933f8 100644
set(CMAKE_C_STANDARD 90)
set(CMAKE_VERBOSE_MAKEFILE ON)
# set(CMAKE_C_VISIBILITY_PRESET hidden)
-@@ -309,6 +309,7 @@ if(BUILD_FUZZERS)
+@@ -298,6 +298,7 @@ if(BUILD_FUZZERS)
endif()
if(BUILD_TESTS)
+ enable_language(CXX)
- set(CMAKE_CXX_STANDARD 20)
- set(CMAKE_CXX_STANDARD_REQUIRED YES)
-
+ set(CMAKE_CXX_STANDARD 20)
+ set(CMAKE_CXX_STANDARD_REQUIRED YES)
+
--
2.47.3
diff --git a/package/luvi/0001-Selectively-disable-GCC-diagnostics-in-ocsp.c.patch b/package/luvi/0001-Selectively-disable-GCC-diagnostics-in-ocsp.c.patch
deleted file mode 100644
index d29ba37bcf..0000000000
--- a/package/luvi/0001-Selectively-disable-GCC-diagnostics-in-ocsp.c.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 52bc36f5a548543835c24b87e7b7b72a327b1df7 Mon Sep 17 00:00:00 2001
-From: RDW <duckwhale@mail.ru>
-Date: Sun, 14 Sep 2025 00:33:10 +0200
-Subject: [PATCH] Selectively disable GCC diagnostics in ocsp.c
-
-GCC 14 fails to compile the library because -Wincompatible-pointer-types is now fatal.
-Since the warning is already disabled for clang here, might as well include GCC also.
-Needless to say, this is a workaround and a proper fix would require upstream changes.
-
-Upstream: https://github.com/zhaozg/lua-openssl/commit/bfeedbe8c06d8b4400fa670edecd452a433ddac4
-[Romain:
- - rebase on lua-openssl 0.9.0-0
- - format the patch as luvi patch (patching lua-openssl submodule)
-]
-Signed-off-by: Romain Naour <romain.naour@smile.fr>
----
- deps/lua-openssl/src/ocsp.c | 22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
-
-diff --git a/deps/lua-openssl/src/ocsp.c b/deps/lua-openssl/src/ocsp.c
-index ac67a53..00e3b61 100644
---- a/deps/lua-openssl/src/ocsp.c
-+++ b/deps/lua-openssl/src/ocsp.c
-@@ -183,15 +183,26 @@ static int openssl_ocsp_request_read(lua_State *L)
- BIO *bio = load_bio_object(L, 1);
- int pem = lua_gettop(L) > 1 ? auxiliar_checkboolean(L, 2) : 0;
-
-+#if defined(__GNUC__)
-+#pragma GCC diagnostic push
-+#pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
-+#endif
-+
- #if defined(__clang__)
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wincompatible-pointer-types"
- #endif
- OCSP_REQUEST *req = pem ? PEM_read_bio_OCSP_REQUEST(bio, NULL, NULL)
- : d2i_OCSP_REQUEST_bio(bio, NULL);
-+
-+#if defined(__GNUC__)
-+#pragma GCC diagnostic pop
-+#endif
-+
- #if defined(__clang__)
- #pragma clang diagnostic pop
- #endif
-+
- BIO_free(bio);
-
- if (req)
-@@ -359,15 +370,26 @@ static int openssl_ocsp_response_read(lua_State *L)
- int pem = lua_gettop(L) > 1 ? auxiliar_checkboolean(L, 2) : 0;
- int ret = 0;
-
-+#if defined(__GNUC__)
-+#pragma GCC diagnostic push
-+#pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
-+#endif
-+
- #if defined(__clang__)
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wincompatible-pointer-types"
- #endif
- OCSP_RESPONSE *res = pem ? PEM_read_bio_OCSP_RESPONSE(bio, NULL, NULL)
- : d2i_OCSP_RESPONSE_bio(bio, NULL);
-+
-+#if defined(__GNUC__)
-+#pragma GCC diagnostic pop
-+#endif
-+
- #if defined(__clang__)
- #pragma clang diagnostic pop
- #endif
-+
- if (res)
- {
- PUSH_OBJECT(res, "openssl.ocsp_response");
---
-2.51.0
-
diff --git a/package/luvi/0002-CMakeLists.txt-disable-Wincompatible-pointer-types-f.patch b/package/luvi/0002-CMakeLists.txt-disable-Wincompatible-pointer-types-f.patch
deleted file mode 100644
index b658fed202..0000000000
--- a/package/luvi/0002-CMakeLists.txt-disable-Wincompatible-pointer-types-f.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From c82c147e83d6a21f572353bf6e95dcf3a736490c Mon Sep 17 00:00:00 2001
-From: Romain Naour <romain.naour@smile.fr>
-Date: Sat, 13 Sep 2025 23:21:04 +0200
-Subject: [PATCH] CMakeLists.txt: disable Wincompatible-pointer-types for gcc
- >= 14
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Backport partially a patch [1] disabling GCC 14 warning
-Wincompatible-pointer-types.
-
-From [1]:
-"lua-openssl triggering the incompatible pointer types error by
-silencing the warning, which lua-openssl does internally but only for
-clang."
-
-Latest lua-openssl version (0.9.1-0) also disable this warning [2].
-
-Fixes:
-https://gitlab.com/buildroot.org/buildroot/-/jobs/11271124430 (TestLuvi)
-
-[1] https://github.com/luvit/luvi/commit/85d7d7bf51bc523159ad579d846cbefbbff38fdb
-[2] https://github.com/zhaozg/lua-openssl/commit/bfeedbe8c06d8b4400fa670edecd452a433ddac4
-
-Upstream: https://github.com/luvit/luvi/commit/85d7d7bf51bc523159ad579d846cbefbbff38fdb
-
-Signed-off-by: Romain Naour <romain.naour@smile.fr>
----
- CMakeLists.txt | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 0b0007d..bf10de5 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -141,6 +141,14 @@ if (WIN32)
- add_library (luvi_renamed src/luvi_renamed.c)
- endif ()
-
-+if (CMAKE_C_COMPILER_ID MATCHES "Clang|GNU")
-+ add_compile_options(-Wno-incompatible-pointer-types)
-+endif()
-+
-+if(UNIX)
-+ add_definitions(-Wall)
-+endif()
-+
- if (WITH_LUA_ENGINE STREQUAL Lua)
- add_definitions(-DWITH_PLAIN_LUA)
- endif ()
---
-2.51.0
-
diff --git a/package/luvi/luvi.hash b/package/luvi/luvi.hash
index d8825487db..4b322c119e 100644
--- a/package/luvi/luvi.hash
+++ b/package/luvi/luvi.hash
@@ -1,3 +1,3 @@
# Locally calculated
-sha256 f933bf1899a5419b26d46d7f111aaa50101831922716ffaed62e355b1bc9de1d luvi-v2.15.0-git4.tar.gz
+sha256 8dee14773ffa59e3015c2f3923d4fb62f0021961aa5669373f6bcf553847c73b luvi-102-g9fa6c141abf24a5a7fe49ca39335210fa1be3ab4-git4.tar.gz
sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt
diff --git a/package/luvi/luvi.mk b/package/luvi/luvi.mk
index 78de76aa45..157d9a1401 100644
--- a/package/luvi/luvi.mk
+++ b/package/luvi/luvi.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LUVI_VERSION = v2.15.0
+LUVI_VERSION = 102-g9fa6c141abf24a5a7fe49ca39335210fa1be3ab4
LUVI_SITE = https://github.com/luvit/luvi.git
LUVI_SITE_METHOD = git
LUVI_GIT_SUBMODULES = YES
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 45/66] package/luvi: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (43 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 44/66] package/luvi: bump version to 102-g9fa6c141a Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 46/66] package/mender-artifact: " Bernd Kuhls
` (20 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
.../luvi/0002-feat-support-openssl-4.0.patch | 403 ++++++++++++++++++
1 file changed, 403 insertions(+)
create mode 100644 package/luvi/0002-feat-support-openssl-4.0.patch
diff --git a/package/luvi/0002-feat-support-openssl-4.0.patch b/package/luvi/0002-feat-support-openssl-4.0.patch
new file mode 100644
index 0000000000..fa35b70435
--- /dev/null
+++ b/package/luvi/0002-feat-support-openssl-4.0.patch
@@ -0,0 +1,403 @@
+From 529b4a42eeb2b77f8f8c829f856977c5b50d0b7b Mon Sep 17 00:00:00 2001
+From: zhaozg <zhaozg@gmail.com>
+Date: Thu, 16 Apr 2026 14:04:32 +0800
+Subject: [PATCH] feat: support openssl 4.0
+
+Upstream: https://github.com/zhaozg/lua-openssl/commit/529b4a42eeb2b77f8f8c829f856977c5b50d0b7b
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ deps/lua-openssl/src/asn1.c | 59 +++++++++++++++++++++++++++++++------------------
+ deps/lua-openssl/src/crl.c | 9 ++++----
+ deps/lua-openssl/src/csr.c | 30 +++++++++++++++++--------
+ deps/lua-openssl/src/openssl.c | 2 ++
+ deps/lua-openssl/src/private.h | 2 +-
+ deps/lua-openssl/src/ssl.c | 2 +-
+ deps/lua-openssl/src/x509.c | 2 +-
+ deps/lua-openssl/src/xalgor.c | 2 +-
+ deps/lua-openssl/src/xname.c | 2 +-
+ deps/lua-openssl/test/helper.lua | 2 +-
+ 10 files changed, 71 insertions(+), 41 deletions(-)
+
+diff --git a/deps/lua-openssl/src/asn1.c b/deps/lua-openssl/src/asn1.c
+index d7972738..566d78ee 100644
+--- a/deps/lua-openssl/src/asn1.c
++++ b/deps/lua-openssl/src/asn1.c
+@@ -499,7 +499,14 @@ openssl_asn1object_new(lua_State *L)
+ ret = 1;
+ }
+ } else if (lua_isnone(L, 1)) {
+- ASN1_OBJECT *obj = ASN1_OBJECT_new();
++ /* ASN1_OBJECT_new() is deprecated in OpenSSL 4.0,
++ * but there's no direct replacement for creating an empty object.
++ * We create an object from a dummy NID instead. */
++ ASN1_OBJECT *obj = OBJ_nid2obj(NID_undef);
++ if (obj == NULL) {
++ /* Fallback: create from empty string */
++ obj = OBJ_txt2obj("", 1);
++ }
+ PUSH_OBJECT(obj, "openssl.asn1_object");
+ ret = 1;
+ }
+@@ -658,11 +665,13 @@ openssl_push_asn1type(lua_State *L, const ASN1_TYPE *type)
+ {
+ lua_newtable(L);
+
+-#define P(V, v) \
+- case V_##V: { \
+- V *s = (V *)type->value.ptr; \
+- AUXILIAR_SETLSTR(L, -1, "value", (const char *)s->data, s->length); \
+- break; \
++#define P(V, v) \
++ case V_##V: { \
++ V *s = (V *)type->value.ptr; \
++ AUXILIAR_SETLSTR(L, -1, "value", \
++ (const char *)ASN1_STRING_get0_data(s), \
++ ASN1_STRING_length(s)); \
++ break; \
+ }
+
+ switch (type->type) {
+@@ -695,7 +704,7 @@ openssl_push_asn1type(lua_State *L, const ASN1_TYPE *type)
+
+ default: {
+ ASN1_STRING *s = (ASN1_STRING *)type->value.asn1_string;
+- AUXILIAR_SETLSTR(L, -1, "value", (const char *)s->data, s->length);
++ AUXILIAR_SETLSTR(L, -1, "value", ASN1_STRING_get0_data(s), ASN1_STRING_length(s));
+ break;
+ }
+ }
+@@ -1004,8 +1013,9 @@ openssl_asn1group_set(lua_State *L)
+ {
+ ASN1_STRING *s = CHECK_GROUP(1, ASN1_STRING, "openssl.asn1group");
+ int ret = 1;
++ int type = ASN1_STRING_type(s);
+
+- switch (s->type) {
++ switch (type) {
+ case V_ASN1_INTEGER: {
+ ASN1_INTEGER *ai = CHECK_OBJECT(1, ASN1_INTEGER, "openssl.asn1_integer");
+ long v = luaL_checklong(L, 2);
+@@ -1044,16 +1054,19 @@ static time_t
+ ASN1_TIME_get(ASN1_TIME *time, time_t off)
+ {
+ struct tm t;
+- const char *str = (const char *)time->data;
+ size_t i = 0;
++ const char *str = (const char *)ASN1_STRING_get0_data(time);
++ size_t len = ASN1_STRING_length(time);
++ int type = ASN1_STRING_type(time);
+
++ if (len < 13) return 0; /* Invalid time format */
+ memset(&t, 0, sizeof(t));
+
+- if (time->type == V_ASN1_UTCTIME) /* two digit year */ {
++ if (type == V_ASN1_UTCTIME) /* two digit year */ {
+ t.tm_year = (str[i++] - '0') * 10;
+ t.tm_year += (str[i++] - '0');
+ if (t.tm_year < 70) t.tm_year += 100;
+- } else if (time->type == V_ASN1_GENERALIZEDTIME) /* four digit year */ {
++ } else if (type == V_ASN1_GENERALIZEDTIME) /* four digit year */ {
+ t.tm_year = (str[i++] - '0') * 1000;
+ t.tm_year += (str[i++] - '0') * 100;
+ t.tm_year += (str[i++] - '0') * 10;
+@@ -1086,7 +1099,7 @@ openssl_asn1group_get(lua_State *L)
+ {
+ ASN1_STRING *s = CHECK_GROUP(1, ASN1_STRING, "openssl.asn1group");
+ int ret = 0;
+- switch (s->type) {
++ switch (ASN1_STRING_type(s)) {
+ case V_ASN1_INTEGER: {
+ ASN1_INTEGER *ai = CHECK_OBJECT(1, ASN1_INTEGER, "openssl.asn1_integer");
+ BIGNUM *bn = ASN1_INTEGER_to_BN(ai, NULL);
+@@ -1128,7 +1141,7 @@ openssl_asn1group_i2d(lua_State *L)
+ break; \
+ }
+
+- switch (s->type) {
++ switch (ASN1_STRING_type(s)) {
+ /*
+ P(ASN1_BOOLEAN);
+ case V_ASN1_BOOLEAN:
+@@ -1220,7 +1233,7 @@ openssl_asn1group_d2i(lua_State *L)
+ break; \
+ }
+
+- switch (s->type) {
++ switch (ASN1_STRING_type(s)) {
+ /*
+ P(ASN1_BOOLEAN);
+ case V_ASN1_BOOLEAN:
+@@ -1374,7 +1387,8 @@ openssl_asn1group_eq(lua_State *L)
+ ASN1_STRING *s = CHECK_GROUP(1, ASN1_STRING, "openssl.asn1group");
+ ASN1_STRING *ss = CHECK_GROUP(2, ASN1_STRING, "openssl.asn1group");
+
+- lua_pushboolean(L, (s->type == ss->type && ASN1_STRING_cmp(s, ss) == 0));
++ lua_pushboolean(L, (ASN1_STRING_type(s) == ASN1_STRING_type(ss)
++ && ASN1_STRING_cmp(s, ss) == 0));
+ return 1;
+ }
+
+@@ -1434,7 +1448,7 @@ openssl_asn1group_toprint(lua_State *L)
+ unsigned long flags = luaL_optint(L, 2, 0);
+ BIO *out = BIO_new(BIO_s_mem());
+ BUF_MEM *mem;
+- switch (s->type) {
++ switch (ASN1_STRING_type(s)) {
+ case V_ASN1_UTCTIME: {
+ ASN1_TIME *a = (ASN1_TIME *)s;
+ ASN1_TIME_print(out, a);
+@@ -1484,7 +1498,7 @@ static int
+ openssl_asn1group_dup(lua_State *L)
+ {
+ ASN1_STRING *s = CHECK_GROUP(1, ASN1_STRING, "openssl.asn1group");
+- openssl_push_asn1(L, s, s->type);
++ openssl_push_asn1(L, s, ASN1_STRING_type(s));
+ return 1;
+ }
+
+@@ -1517,7 +1531,7 @@ openssl_asn1time_adj(lua_State *L)
+ int offset_day = luaL_optint(L, 3, 0);
+ long offset_sec = luaL_optlong(L, 4, 0);
+
+- switch (at->type) {
++ switch (ASN1_STRING_type(at)) {
+ case V_ASN1_UTCTIME: {
+ ASN1_UTCTIME *a = (ASN1_UTCTIME *)at;
+ ASN1_UTCTIME_adj(a, t, offset_day, offset_sec);
+@@ -1549,7 +1563,7 @@ openssl_asn1time_diff(lua_State *L)
+ ASN1_TIME *from = CHECK_OBJECT(1, ASN1_TIME, "openssl.asn1_time");
+ ASN1_TIME *to = lua_isnoneornil(L, 2) ? NULL : CHECK_OBJECT(2, ASN1_TIME, "openssl.asn1_time");
+
+- luaL_argcheck(L, to->type == from->type, 2, "asn1_time with mismatched type");
++ luaL_argcheck(L, ASN1_STRING_type(to) == ASN1_STRING_type(from), 2, "asn1_time with mismatched type");
+
+ ret = ASN1_TIME_diff(&day, &sec, from, to);
+ if (ret == 1) {
+@@ -1644,12 +1658,13 @@ openssl_push_asn1object(lua_State *L, const ASN1_OBJECT *obj)
+ int
+ openssl_push_asn1(lua_State *L, const ASN1_STRING *string, int type)
+ {
+- if ((string->type & V_ASN1_GENERALIZEDTIME) == V_ASN1_GENERALIZEDTIME && type == V_ASN1_UTCTIME)
++ int strType = ASN1_STRING_type(string);
++ if ((strType & V_ASN1_GENERALIZEDTIME) == V_ASN1_GENERALIZEDTIME && type == V_ASN1_UTCTIME)
+ type = V_ASN1_GENERALIZEDTIME;
+- else if ((string->type & V_ASN1_UTCTIME) == V_ASN1_UTCTIME && type == V_ASN1_GENERALIZEDTIME)
++ else if ((strType & V_ASN1_UTCTIME) == V_ASN1_UTCTIME && type == V_ASN1_GENERALIZEDTIME)
+ type = V_ASN1_UTCTIME;
+ else if (type == V_ASN1_UNDEF)
+- type = string->type;
++ type = strType;
+
+ switch (type) {
+ case V_ASN1_INTEGER: {
+diff --git a/deps/lua-openssl/src/crl.c b/deps/lua-openssl/src/crl.c
+index 4950b4ca..2958daa0 100644
+--- a/deps/lua-openssl/src/crl.c
++++ b/deps/lua-openssl/src/crl.c
+@@ -770,7 +770,7 @@ static int openssl_crl_parse(lua_State *L)
+ lua_setfield(L, -2, "sig_alg");
+ }
+
+- if (sig != NULL && sig->length > 0) {
++ if (sig != NULL && ASN1_STRING_length(sig) > 0) {
+ PUSH_ASN1_STRING(L, sig);
+ lua_setfield(L, -2, "signature");
+ }
+@@ -995,16 +995,17 @@ static time_t
+ ASN1_GetTimeT(const ASN1_TIME *time)
+ {
+ struct tm t;
+- const char *str = (const char *)time->data;
++ const char *str = ASN1_STRING_get0_data(time);
++ int type = ASN1_STRING_type(time);
+ size_t i = 0;
+
+ memset(&t, 0, sizeof(t));
+
+- if (time->type == V_ASN1_UTCTIME) /* two digit year */ {
++ if (type == V_ASN1_UTCTIME) /* two digit year */ {
+ t.tm_year = (str[i++] - '0') * 10;
+ t.tm_year += (str[i++] - '0');
+ if (t.tm_year < 70) t.tm_year += 100;
+- } else if (time->type == V_ASN1_GENERALIZEDTIME) /* four digit year */ {
++ } else if (type == V_ASN1_GENERALIZEDTIME) /* four digit year */ {
+ t.tm_year = (str[i++] - '0') * 1000;
+ t.tm_year += (str[i++] - '0') * 100;
+ t.tm_year += (str[i++] - '0') * 10;
+diff --git a/deps/lua-openssl/src/csr.c b/deps/lua-openssl/src/csr.c
+index b9aaeece..fd4743e8 100644
+--- a/deps/lua-openssl/src/csr.c
++++ b/deps/lua-openssl/src/csr.c
+@@ -120,8 +120,8 @@ static int
+ copy_extensions(X509 *x, X509_REQ *req, int override)
+ {
+ STACK_OF(X509_EXTENSION) *exts = NULL;
+- X509_EXTENSION *ext, *tmpext;
+- ASN1_OBJECT *obj;
++ const X509_EXTENSION *ext, *tmpext;
++ const ASN1_OBJECT *obj;
+ int i, idx, ret = 0;
+ if (!x || !req) return 1;
+ exts = X509_REQ_get_extensions(req);
+@@ -138,7 +138,7 @@ copy_extensions(X509 *x, X509_REQ *req, int override)
+ do {
+ tmpext = X509_get_ext(x, idx);
+ X509_delete_ext(x, idx);
+- X509_EXTENSION_free(tmpext);
++ X509_EXTENSION_free((X509_EXTENSION*)tmpext);
+ idx = X509_get_ext_by_OBJ(x, obj, -1);
+ } while (idx != -1);
+ }
+@@ -157,7 +157,7 @@ static int
+ X509_REQ_to_X509_ex(X509_REQ *r, int days, EVP_PKEY *pkey, const EVP_MD *md, X509 **x)
+ {
+ X509 *ret = NULL;
+- X509_NAME *xn = NULL;
++ const X509_NAME *xn = NULL;
+ EVP_PKEY *pubkey = NULL;
+ ASN1_TIME *notBefore = NULL, *notAfter = NULL;
+ ASN1_INTEGER *serial = NULL;
+@@ -412,9 +412,21 @@ static int openssl_csr_sign(lua_State *L)
+ /*
+ * In the interests of compatibility, I'll make sure that the bit string
+ * has a 'not-used bits' value of 0
++ *
++ * Instead of directly manipulating the internal flags (which is not allowed
++ * in OpenSSL 4.0+), we use ASN1_BIT_STRING_set_bit to properly manage the
++ * unused bits count. Setting the last bit explicitly ensures the unused
++ * bits count is calculated correctly by OpenSSL.
+ */
+- sig->flags &= ~(ASN1_STRING_FLAG_BITS_LEFT | 0x07);
+- sig->flags |= ASN1_STRING_FLAG_BITS_LEFT;
++ if (siglen > 0) {
++ /* Set the last bit of the signature to its current value.
++ * This forces OpenSSL to recalculate and set the unused bits count
++ * to 0 (since the signature is byte-aligned). */
++ int last_bit = (siglen * 8) - 1;
++ int bit_value = (sigdata[siglen - 1] & 1) ? 1 : 0;
++ ASN1_BIT_STRING_set_bit(sig, last_bit, bit_value);
++ }
++
+ lua_pushboolean(L, 1);
+ return 1;
+ } else {
+@@ -442,7 +454,7 @@ parse x509_req object as table
+ static int openssl_csr_parse(lua_State *L)
+ {
+ X509_REQ *csr = CHECK_OBJECT(1, X509_REQ, "openssl.x509_req");
+- X509_NAME *subject = X509_REQ_get_subject_name(csr);
++ const X509_NAME *subject = X509_REQ_get_subject_name(csr);
+ STACK_OF(X509_EXTENSION) *exts = X509_REQ_get_extensions(csr);
+
+ lua_newtable(L);
+@@ -457,7 +469,7 @@ static int openssl_csr_parse(lua_State *L)
+ PUSH_OBJECT(alg, "openssl.x509_algor");
+ lua_setfield(L, -2, "sig_alg");
+ }
+- if (sig->length) {
++ if (sig) {
+ openssl_push_asn1(L, sig, V_ASN1_BIT_STRING);
+ lua_setfield(L, -2, "signature");
+ }
+@@ -585,7 +597,7 @@ static int openssl_csr_subject(lua_State *L)
+ int ret = 0;
+
+ if (lua_isnone(L, 2)) {
+- X509_NAME *xn = X509_REQ_get_subject_name(csr);
++ const X509_NAME *xn = X509_REQ_get_subject_name(csr);
+ if (xn) {
+ openssl_push_xname_asobject(L, xn);
+ ret = 1;
+diff --git a/deps/lua-openssl/src/openssl.c b/deps/lua-openssl/src/openssl.c
+index 42004449..985b342b 100644
+--- a/deps/lua-openssl/src/openssl.c
++++ b/deps/lua-openssl/src/openssl.c
+@@ -544,7 +544,9 @@ openssl_initialize()
+ sizeof(LOPENSSL_VERSION LUA_VERSION OPENSSL_VERSION_TEXT));
+ #else
+ OPENSSL_init_ssl(OPENSSL_INIT_ENGINE_ALL_BUILTIN |
++#if defined (OPENSSL_INIT_ENGINE_OPENSSL)
+ OPENSSL_INIT_ENGINE_OPENSSL |
++#endif
+ OPENSSL_INIT_LOAD_CRYPTO_STRINGS |
+ OPENSSL_INIT_LOAD_SSL_STRINGS |
+ OPENSSL_INIT_ADD_ALL_CIPHERS |
+diff --git a/deps/lua-openssl/src/private.h b/deps/lua-openssl/src/private.h
+index c6010209..00728c6a 100644
+--- a/deps/lua-openssl/src/private.h
++++ b/deps/lua-openssl/src/private.h
+@@ -332,7 +332,7 @@ int openssl_push_x509_signature(lua_State *L, const X509_ALGOR *alg, const ASN1_
+ #define PUSH_ASN1_OCTET_STRING(L, s) openssl_push_asn1(L, (ASN1_STRING*)(s), V_ASN1_OCTET_STRING)
+ #define PUSH_ASN1_STRING(L, s) openssl_push_asn1(L, (ASN1_STRING*)(s), V_ASN1_UNDEF)
+
+-int openssl_push_xname_asobject(lua_State*L, X509_NAME* xname);
++int openssl_push_xname_asobject(lua_State*L, const X509_NAME* xname);
+ int openssl_push_bit_string_bitname(lua_State* L, const BIT_STRING_BITNAME* name);
+
+ ASN1_OBJECT* openssl_get_asn1object(lua_State*L, int idx, int retnil);
+diff --git a/deps/lua-openssl/src/ssl.c b/deps/lua-openssl/src/ssl.c
+index a71d71fd..9a8598fd 100644
+--- a/deps/lua-openssl/src/ssl.c
++++ b/deps/lua-openssl/src/ssl.c
+@@ -158,7 +158,7 @@ openssl_ssl_ctx_new(lua_State *L)
+ method = TLSv1_client_method();
+ #endif
+
+-#ifndef OPENSSL_NO_SSL3_METHOD
++#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_SSL3_METHOD)
+ else if (strcmp(meth, "SSLv3") == 0)
+ method = SSLv3_method();
+ else if (strcmp(meth, "SSLv3_server") == 0)
+diff --git a/deps/lua-openssl/src/x509.c b/deps/lua-openssl/src/x509.c
+index 99096090..4dcc960e 100644
+--- a/deps/lua-openssl/src/x509.c
++++ b/deps/lua-openssl/src/x509.c
+@@ -466,7 +466,7 @@ int openssl_push_x509_signature(lua_State *L, const X509_ALGOR *alg, const ASN1_
+ if (sig != NULL)
+ {
+ lua_pushliteral(L, "sig");
+- lua_pushlstring(L, (const char *)sig->data, sig->length);
++ lua_pushlstring(L, ASN1_STRING_get0_data(sig), ASN1_STRING_length(sig));
+ lua_rawset(L, i==0 ? -3 : i);
+ }
+
+diff --git a/deps/lua-openssl/src/xalgor.c b/deps/lua-openssl/src/xalgor.c
+index 95957b6f..2d7c5668 100644
+--- a/deps/lua-openssl/src/xalgor.c
++++ b/deps/lua-openssl/src/xalgor.c
+@@ -151,7 +151,7 @@ openssl_xalgor_set(lua_State *L)
+ obj = OBJ_dup(obj);
+ if (val) {
+ val = ASN1_STRING_dup(val);
+- ret = X509_ALGOR_set0(alg, obj, val->type, val);
++ ret = X509_ALGOR_set0(alg, obj, ASN1_STRING_type(val), val);
+ } else {
+ ret = X509_ALGOR_set0(alg, obj, 0, NULL);
+ }
+diff --git a/deps/lua-openssl/src/xname.c b/deps/lua-openssl/src/xname.c
+index f2fa9be6..ed5939df 100644
+--- a/deps/lua-openssl/src/xname.c
++++ b/deps/lua-openssl/src/xname.c
+@@ -10,7 +10,7 @@ x509.name module to mapping X509_NAME to lua object.
+ #include "sk.h"
+
+ int
+-openssl_push_xname_asobject(lua_State *L, X509_NAME *xname)
++openssl_push_xname_asobject(lua_State *L, const X509_NAME *xname)
+ {
+ const X509_NAME *dup = X509_NAME_dup(xname);
+ PUSH_OBJECT(dup, "openssl.x509_name");
+diff --git a/deps/lua-openssl/test/helper.lua b/deps/lua-openssl/test/helper.lua
+index ea64feb7..0634ea3c 100644
+--- a/deps/lua-openssl/test/helper.lua
++++ b/deps/lua-openssl/test/helper.lua
+@@ -6,7 +6,7 @@ local M = {}
+ M.luaopensslv, M.luav, M.opensslv = openssl.version()
+ M._luaopensslv, M._luav, M._opensslv = openssl.version(true)
+ M.libressl = M.opensslv:find("^LibreSSL")
+-M.openssl3 = M.opensslv:find("^OpenSSL 3")
++M.openssl3 = M.opensslv:find("^OpenSSL 3") or M.opensslv:find("^OpenSSL 4")
+
+ function M.sslProtocol(srv, protocol)
+ protocol = protocol or openssl.ssl.default
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 46/66] package/mender-artifact: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (44 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 45/66] package/luvi: Fix build with OpenSSL 4.0.0 Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 47/66] package/perl-net-ssleay: Add support for " Bernd Kuhls
` (19 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Angelo Compagnucci
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Angelo Compagnucci <angelo.compagnucci@gmail.com>
---
.../0001-openssl-v4-update.patch | 180 ++++++++++++++++++
1 file changed, 180 insertions(+)
create mode 100644 package/mender-artifact/0001-openssl-v4-update.patch
diff --git a/package/mender-artifact/0001-openssl-v4-update.patch b/package/mender-artifact/0001-openssl-v4-update.patch
new file mode 100644
index 0000000000..010872e69f
--- /dev/null
+++ b/package/mender-artifact/0001-openssl-v4-update.patch
@@ -0,0 +1,180 @@
+Fix build with OpenSSL 4.0
+
+Downloaded from Ubuntu:
+https://git.launchpad.net/ubuntu/+source/golang-github-mendersoftware-openssl/tree/debian/patches/0004-openssl-v4-update.patch?h=applied/ubuntu/stonking-devel
+
+Upstream: not applicable, upstream moved to c++ in newer versions
+
+[Bernd: rebased for vendored download by buildroot infra]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+
+diff -uNr mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/engine.go mender-3.5.3/vendor/github.com/mendersoftware/openssl/engine.go
+--- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/engine.go 2024-05-24 12:07:27.000000000 +0200
++++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/engine.go 2026-09-20 18:37:50.270612314 +0200
+@@ -15,6 +15,7 @@
+ package openssl
+
+ /*
++#include "shim.h"
+ #include "openssl/engine.h"
+ */
+ import "C"
+@@ -33,18 +34,18 @@
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+ e := &Engine{
+- e: C.ENGINE_by_id(cname),
++ e: C.X_ENGINE_by_id(cname),
+ }
+ if e.e == nil {
+ return nil, fmt.Errorf("engine %s missing", name)
+ }
+- if C.ENGINE_init(e.e) == 0 {
+- C.ENGINE_free(e.e)
++ if C.X_ENGINE_init(e.e) == 0 {
++ C.X_ENGINE_free(e.e)
+ return nil, fmt.Errorf("engine %s not initialized", name)
+ }
+ runtime.SetFinalizer(e, func(e *Engine) {
+- C.ENGINE_finish(e.e)
+- C.ENGINE_free(e.e)
++ C.X_ENGINE_finish(e.e)
++ C.X_ENGINE_free(e.e)
+ })
+ return e, nil
+ }
+diff -uNr mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/hostname.c mender-3.5.3/vendor/github.com/mendersoftware/openssl/hostname.c
+--- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/hostname.c 2024-05-24 12:07:27.000000000 +0200
++++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/hostname.c 2026-09-20 18:32:37.854514981 +0200
+@@ -6,6 +6,7 @@
+ */
+
+ #include <openssl/x509.h>
++#include <openssl/x509v3.h>
+
+ #ifndef X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT
+
+diff -uNr mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/key.go mender-3.5.3/vendor/github.com/mendersoftware/openssl/key.go
+--- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/key.go 2024-05-24 12:07:27.000000000 +0200
++++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/key.go 2026-09-20 18:38:13.462370202 +0200
+@@ -303,7 +303,7 @@
+ keyID := C.CString(id)
+ defer C.free(unsafe.Pointer(keyID))
+
+- key := C.ENGINE_load_private_key(e.e, keyID, nil, nil)
++ key := C.X_ENGINE_load_private_key(e.e, keyID, nil, nil)
+ if key == nil {
+ return nil, errors.New("cannot load private key, ENGINE_load_private_key error")
+ }
+diff -uNr mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/shim.c mender-3.5.3/vendor/github.com/mendersoftware/openssl/shim.c
+--- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/shim.c 2024-05-24 12:07:27.000000000 +0200
++++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/shim.c 2026-09-20 18:36:02.855038372 +0200
+@@ -382,7 +382,9 @@
+ int rc = 0;
+
+ OPENSSL_config(NULL);
++#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
+ ENGINE_load_builtin_engines();
++#endif
+ SSL_load_error_strings();
+ SSL_library_init();
+ OpenSSL_add_all_algorithms();
+@@ -403,6 +405,46 @@
+ return 0;
+ }
+
++ENGINE *X_ENGINE_by_id(const char *id) {
++#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
++ return ENGINE_by_id(id);
++#else
++ return NULL;
++#endif
++}
++
++int X_ENGINE_init(ENGINE *e) {
++#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
++ return ENGINE_init(e);
++#else
++ return 0;
++#endif
++}
++
++int X_ENGINE_free(ENGINE *e) {
++#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
++ return ENGINE_free(e);
++#else
++ return 0;
++#endif
++}
++
++int X_ENGINE_finish(ENGINE *e) {
++#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
++ return ENGINE_finish(e);
++#else
++ return 0;
++#endif
++}
++
++EVP_PKEY *X_ENGINE_load_private_key(ENGINE *e, const char *key_id, UI_METHOD *ui_method, void *callback_data) {
++#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
++ return ENGINE_load_private_key(e, key_id, ui_method, callback_data);
++#else
++ return NULL;
++#endif
++}
++
+ void * X_OPENSSL_malloc(size_t size) {
+ return OPENSSL_malloc(size);
+ }
+@@ -480,7 +522,7 @@
+ }
+
+ const SSL_METHOD *X_SSLv3_method() {
+-#ifndef OPENSSL_NO_SSL3_METHOD
++#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_SSL3_METHOD) && !defined(OPENSSL_NO_DEPRECATED_1_1_0) && !defined(OPENSSL_NO_DEPRECATED_3_0)
+ return SSLv3_method();
+ #else
+ return NULL;
+@@ -488,11 +530,15 @@
+ }
+
+ const SSL_METHOD *X_TLSv1_method() {
++#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_TLS1_METHOD) && !defined(OPENSSL_NO_DEPRECATED_1_1_0) && !defined(OPENSSL_NO_DEPRECATED_3_0)
+ return TLSv1_method();
++#else
++ return NULL;
++#endif
+ }
+
+ const SSL_METHOD *X_TLSv1_1_method() {
+-#if defined(TLS1_1_VERSION) && !defined(OPENSSL_SYSNAME_MACOSX)
++#if OPENSSL_VERSION_NUMBER < 0x40000000L && defined(TLS1_1_VERSION) && !defined(OPENSSL_SYSNAME_MACOSX) && !defined(OPENSSL_NO_TLS1_1_METHOD) && !defined(OPENSSL_NO_DEPRECATED_1_1_0) && !defined(OPENSSL_NO_DEPRECATED_3_0)
+ return TLSv1_1_method();
+ #else
+ return NULL;
+@@ -500,7 +546,7 @@
+ }
+
+ const SSL_METHOD *X_TLSv1_2_method() {
+-#if defined(TLS1_2_VERSION) && !defined(OPENSSL_SYSNAME_MACOSX)
++#if OPENSSL_VERSION_NUMBER < 0x40000000L && defined(TLS1_2_VERSION) && !defined(OPENSSL_SYSNAME_MACOSX) && !defined(OPENSSL_NO_TLS1_2_METHOD) && !defined(OPENSSL_NO_DEPRECATED_1_1_0) && !defined(OPENSSL_NO_DEPRECATED_3_0)
+ return TLSv1_2_method();
+ #else
+ return NULL;
+diff -uNr mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/shim.h mender-3.5.3/vendor/github.com/mendersoftware/openssl/shim.h
+--- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/shim.h 2024-05-24 12:07:27.000000000 +0200
++++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/shim.h 2026-09-20 18:38:33.117854985 +0200
+@@ -40,6 +40,13 @@
+ /* shim methods */
+ extern int X_shim_init();
+
++/* Engine methods */
++extern ENGINE *X_ENGINE_by_id(const char *id);
++extern int X_ENGINE_init(ENGINE *e);
++extern int X_ENGINE_free(ENGINE *e);
++extern int X_ENGINE_finish(ENGINE *e);
++extern EVP_PKEY *X_ENGINE_load_private_key(ENGINE *e, const char *key_id, UI_METHOD *ui_method, void *callback_data);
++
+ /* Library methods */
+ extern void X_OPENSSL_free(void *ref);
+ extern void *X_OPENSSL_malloc(size_t size);
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 47/66] package/perl-net-ssleay: Add support for OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (45 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 46/66] package/mender-artifact: " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 48/66] package/python3: " Bernd Kuhls
` (18 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Francois Perrad
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Francois Perrad <francois.perrad.86@gmail.com>
---
.../0002-Fix-SSLv3-in-OpenSSL-4.0.0.patch | 39 ++++
...emove-support-for-some-TLS-functions.patch | 197 ++++++++++++++++++
...SSLeay-to-support-opaque-ASN1_STRING.patch | 179 ++++++++++++++++
...-removal-of-SSLv2-Client-Hello-suppo.patch | 66 ++++++
...Net-SSLeay-OPENSSL_info-return-value.patch | 45 ++++
...r-OPenSSL-4-support-and-update-tests.patch | 94 +++++++++
...but-if-with-else-to-avoid-duplicate-.patch | 83 ++++++++
7 files changed, 703 insertions(+)
create mode 100644 package/perl-net-ssleay/0002-Fix-SSLv3-in-OpenSSL-4.0.0.patch
create mode 100644 package/perl-net-ssleay/0003-OpenSSL-4.0.0-remove-support-for-some-TLS-functions.patch
create mode 100644 package/perl-net-ssleay/0004-Fix-Net-SSLeay-to-support-opaque-ASN1_STRING.patch
create mode 100644 package/perl-net-ssleay/0005-Update-tests-for-removal-of-SSLv2-Client-Hello-suppo.patch
create mode 100644 package/perl-net-ssleay/0006-Add-default-for-Net-SSLeay-OPENSSL_info-return-value.patch
create mode 100644 package/perl-net-ssleay/0007-Add-Changes-for-OPenSSL-4-support-and-update-tests.patch
create mode 100644 package/perl-net-ssleay/0008-Do-not-use-elif-but-if-with-else-to-avoid-duplicate-.patch
diff --git a/package/perl-net-ssleay/0002-Fix-SSLv3-in-OpenSSL-4.0.0.patch b/package/perl-net-ssleay/0002-Fix-SSLv3-in-OpenSSL-4.0.0.patch
new file mode 100644
index 0000000000..8257c6c00f
--- /dev/null
+++ b/package/perl-net-ssleay/0002-Fix-SSLv3-in-OpenSSL-4.0.0.patch
@@ -0,0 +1,39 @@
+From 361b3adc1dd09f70be7bd8972992626a3240b58d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michal=20Josef=20=C5=A0pa=C4=8Dek?= <mspacek@redhat.com>
+Date: Tue, 14 Apr 2026 12:37:39 +0200
+Subject: [PATCH] Fix SSLv3 in OpenSSL 4.0.0
+
+Support for SSLv3 was removed.
+
+Upstream: https://github.com/radiator-software/p5-net-ssleay/pull/553/changes/361b3adc1dd09f70be7bd8972992626a3240b58d
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ SSLeay.xs | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/SSLeay.xs b/SSLeay.xs
+index 0ed7d96..5407fa1 100644
+--- a/SSLeay.xs
++++ b/SSLeay.xs
+@@ -2454,7 +2454,7 @@ SSL_CTX_v2_new()
+
+ #endif
+ #endif
+-#ifndef OPENSSL_NO_SSL3
++#if !defined(OPENSSL_NO_SSL3) && OPENSSL_VERSION_NUMBER < 0x40000000L
+
+ SSL_CTX *
+ SSL_CTX_v3_new()
+@@ -5600,7 +5600,7 @@ SSLv2_method()
+ #endif
+ #endif
+
+-#ifndef OPENSSL_NO_SSL3
++#if !defined(OPENSSL_NO_SSL3) && OPENSSL_VERSION_NUMBER < 0x40000000L
+
+ const SSL_METHOD *
+ SSLv3_method()
+--
+2.47.3
+
diff --git a/package/perl-net-ssleay/0003-OpenSSL-4.0.0-remove-support-for-some-TLS-functions.patch b/package/perl-net-ssleay/0003-OpenSSL-4.0.0-remove-support-for-some-TLS-functions.patch
new file mode 100644
index 0000000000..916acdcac9
--- /dev/null
+++ b/package/perl-net-ssleay/0003-OpenSSL-4.0.0-remove-support-for-some-TLS-functions.patch
@@ -0,0 +1,197 @@
+From 780c7ad4803d0fc8e755bb86e589f84898e65040 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michal=20Josef=20=C5=A0pa=C4=8Dek?= <mspacek@redhat.com>
+Date: Tue, 14 Apr 2026 14:08:00 +0200
+Subject: [PATCH] OpenSSL 4.0.0 remove support for some TLS functions
+
+Removes fixed version TLS methods
+(https://github.com/openssl/openssl/pull/30128)
+
+Upstream: https://github.com/radiator-software/p5-net-ssleay/pull/553/changes/780c7ad4803d0fc8e755bb86e589f84898e65040
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ SSLeay.xs | 51 ++++++++++++++++++++++++++++++++++++++++------
+ lib/Net/SSLeay.pod | 17 +++++++++-------
+ 2 files changed, 55 insertions(+), 13 deletions(-)
+
+diff --git a/SSLeay.xs b/SSLeay.xs
+index 5407fa1..ad996d5 100644
+--- a/SSLeay.xs
++++ b/SSLeay.xs
+@@ -2472,7 +2472,7 @@ SSL_CTX_v23_new()
+ OUTPUT:
+ RETVAL
+
+-#if !defined(OPENSSL_NO_TLS1_METHOD)
++#if !defined(OPENSSL_NO_TLS1_METHOD) && OPENSSL_VERSION_NUMBER < 0x40000000L
+
+ SSL_CTX *
+ SSL_CTX_tlsv1_new()
+@@ -2481,9 +2481,22 @@ SSL_CTX_tlsv1_new()
+ OUTPUT:
+ RETVAL
+
++#elif OPENSSL_VERSION_NUMBER >= 0x40000000L
++
++SSL_CTX *
++SSL_CTX_tlsv1_new()
++ CODE:
++ RETVAL = SSL_CTX_new(TLS_method());
++ if (RETVAL) {
++ SSL_CTX_set_min_proto_version(RETVAL, TLS1_VERSION);
++ SSL_CTX_set_max_proto_version(RETVAL, TLS1_VERSION);
++ }
++ OUTPUT:
++ RETVAL
++
+ #endif
+
+-#if (OPENSSL_VERSION_NUMBER >= 0x10001001L && !defined(OPENSSL_NO_TLS1_1_METHOD)) /* OpenSSL 1.0.1-beta1 */
++#if (OPENSSL_VERSION_NUMBER >= 0x10001001L && OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_TLS1_1_METHOD)) /* OpenSSL 1.0.1-beta1 */
+
+ SSL_CTX *
+ SSL_CTX_tlsv1_1_new()
+@@ -2492,9 +2505,22 @@ SSL_CTX_tlsv1_1_new()
+ OUTPUT:
+ RETVAL
+
++#elif OPENSSL_VERSION_NUMBER >= 0x40000000L
++
++SSL_CTX *
++SSL_CTX_tlsv1_1_new()
++ CODE:
++ RETVAL = SSL_CTX_new(TLS_method());
++ if (RETVAL) {
++ SSL_CTX_set_min_proto_version(RETVAL, TLS1_1_VERSION);
++ SSL_CTX_set_max_proto_version(RETVAL, TLS1_1_VERSION);
++ }
++ OUTPUT:
++ RETVAL
++
+ #endif
+
+-#if (OPENSSL_VERSION_NUMBER >= 0x10001001L && !defined(OPENSSL_NO_TLS1_2_METHOD)) /* OpenSSL 1.0.1-beta1 */
++#if (OPENSSL_VERSION_NUMBER >= 0x10001001L && OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_TLS1_2_METHOD)) /* OpenSSL 1.0.1-beta1 */
+
+ SSL_CTX *
+ SSL_CTX_tlsv1_2_new()
+@@ -2503,6 +2529,19 @@ SSL_CTX_tlsv1_2_new()
+ OUTPUT:
+ RETVAL
+
++#elif OPENSSL_VERSION_NUMBER >= 0x40000000L
++
++SSL_CTX *
++SSL_CTX_tlsv1_2_new()
++ CODE:
++ RETVAL = SSL_CTX_new(TLS_method());
++ if (RETVAL) {
++ SSL_CTX_set_min_proto_version(RETVAL, TLS1_2_VERSION);
++ SSL_CTX_set_max_proto_version(RETVAL, TLS1_2_VERSION);
++ }
++ OUTPUT:
++ RETVAL
++
+ #endif
+
+ SSL_CTX *
+@@ -5616,7 +5655,7 @@ SSLv23_server_method()
+ const SSL_METHOD *
+ SSLv23_client_method()
+
+-#if !defined(OPENSSL_NO_TLS1_METHOD)
++#if !defined(OPENSSL_NO_TLS1_METHOD) && OPENSSL_VERSION_NUMBER < 0x40000000L
+
+ const SSL_METHOD *
+ TLSv1_method()
+@@ -5629,7 +5668,7 @@ TLSv1_client_method()
+
+ #endif
+
+-#if (OPENSSL_VERSION_NUMBER >= 0x10001001L && !defined(OPENSSL_NO_TLS1_1_METHOD)) /* OpenSSL 1.0.1-beta1 */
++#if (OPENSSL_VERSION_NUMBER >= 0x10001001L && OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_TLS1_1_METHOD)) /* OpenSSL 1.0.1-beta1 */
+
+ const SSL_METHOD *
+ TLSv1_1_method()
+@@ -5642,7 +5681,7 @@ TLSv1_1_client_method()
+
+ #endif
+
+-#if (OPENSSL_VERSION_NUMBER >= 0x10001001L && !defined(OPENSSL_NO_TLS1_2_METHOD)) /* OpenSSL 1.0.1-beta1 */
++#if (OPENSSL_VERSION_NUMBER >= 0x10001001L && OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_TLS1_2_METHOD)) /* OpenSSL 1.0.1-beta1 */
+
+ const SSL_METHOD *
+ TLSv1_2_method()
+diff --git a/lib/Net/SSLeay.pod b/lib/Net/SSLeay.pod
+index 554fd11..d947ad3 100644
+--- a/lib/Net/SSLeay.pod
++++ b/lib/Net/SSLeay.pod
+@@ -1575,7 +1575,7 @@ Check openssl doc L<https://www.openssl.org/docs/manmaster/man3/SSL_CTX_new.html
+
+ =item * TLSv1_method, TLSv1_server_method and TLSv1_client_method
+
+-B<COMPATIBILITY:> Requires OpenSSL or LibreSSL built with support for TLSv1. Server and client methods not available in Net-SSLeay-1.82 and before.
++B<COMPATIBILITY:> Requires OpenSSL or LibreSSL built with support for TLSv1. Server and client methods not available in Net-SSLeay-1.82 and before. Not available in OpenSSL 4.0.0 and later. Use L</TLS_method> with L</CTX_set_min_proto_version> and L</CTX_set_max_proto_version> instead.
+
+ Returns SSL_METHOD structure corresponding to TLSv1 method, the return value can be later used as a param of L</CTX_new_with_method>.
+
+@@ -1587,7 +1587,7 @@ Check openssl doc L<https://www.openssl.org/docs/manmaster/man3/SSL_CTX_new.html
+
+ =item * TLSv1_1_method, TLSv1_1_server_method and TLSv1_1_client_method
+
+-B<COMPATIBILITY:> Requires OpenSSL >= 1.0.1 or LibreSSL built with support for TLSv1.1. Server and client methods not available in Net-SSLeay-1.82 and before.
++B<COMPATIBILITY:> Requires OpenSSL >= 1.0.1 or LibreSSL built with support for TLSv1.1. Server and client methods not available in Net-SSLeay-1.82 and before. Not available in OpenSSL 4.0.0 and later. Use L</TLS_method> with L</CTX_set_min_proto_version> and L</CTX_set_max_proto_version> instead.
+
+ Returns SSL_METHOD structure corresponding to TLSv1_1 method, the return value can be later used as a param of L</CTX_new_with_method>.
+
+@@ -1599,7 +1599,7 @@ Check openssl doc L<https://www.openssl.org/docs/manmaster/man3/SSL_CTX_new.html
+
+ =item * TLSv1_2_method, TLSv1_2_server_method and TLSv1_2_client_method
+
+-B<COMPATIBILITY:> Requires OpenSSL >= 1.0.1 or LibreSSL built with support for TLSv1.2. Server and client methods not available in Net-SSLeay-1.82 and before.
++B<COMPATIBILITY:> Requires OpenSSL >= 1.0.1 or LibreSSL built with support for TLSv1.2. Server and client methods not available in Net-SSLeay-1.82 and before. Not available in OpenSSL 4.0.0 and later. Use L</TLS_method> with L</CTX_set_min_proto_version> and L</CTX_set_max_proto_version> instead.
+
+ Returns SSL_METHOD structure corresponding to TLSv1_2 method, the return value can be later used as a param of L</CTX_new_with_method>.
+
+@@ -2998,7 +2998,7 @@ Creates a new SSL_CTX object - based on SSLv3_method() - as framework to establi
+
+ =item * CTX_tlsv1_new
+
+-B<COMPATIBILITY:> Requires OpenSSL or LibreSSL built with support for TLSv1.
++B<COMPATIBILITY:> Requires OpenSSL or LibreSSL built with support for TLSv1. In OpenSSL 4.0.0 and later, this function is emulated using L</TLS_method> with L</CTX_set_min_proto_version> and L</CTX_set_max_proto_version> for backward compatibility. It is recommended to use L</CTX_new> with L</CTX_set_min_proto_version> and L</CTX_set_max_proto_version> instead.
+
+ Creates a new SSL_CTX object - based on C<TLSv1_method()> - as a framework for establishing connections using TLSv1.
+
+@@ -3008,7 +3008,7 @@ Creates a new SSL_CTX object - based on C<TLSv1_method()> - as a framework for e
+
+ =item * CTX_tlsv1_1_new
+
+-B<COMPATIBILITY:> Requires OpenSSL >= 1.0.1 or LibreSSL built with support for TLSv1.1.
++B<COMPATIBILITY:> Requires OpenSSL >= 1.0.1 or LibreSSL built with support for TLSv1.1. In OpenSSL 4.0.0 and later, this function is emulated using L</TLS_method> with L</CTX_set_min_proto_version> and L</CTX_set_max_proto_version> for backward compatibility. It is recommended to use L</CTX_new> with L</CTX_set_min_proto_version> and L</CTX_set_max_proto_version> instead.
+
+ Creates a new SSL_CTX object - based on C<TLSv1_1_method()> - as a framework for establishing connections using TLSv1.1.
+
+@@ -3018,7 +3018,7 @@ Creates a new SSL_CTX object - based on C<TLSv1_1_method()> - as a framework for
+
+ =item * CTX_tlsv1_2_new
+
+-B<COMPATIBILITY:> Requires OpenSSL >= 1.0.1 or LibreSSL built with support for TLSv1.2.
++B<COMPATIBILITY:> Requires OpenSSL >= 1.0.1 or LibreSSL built with support for TLSv1.2. In OpenSSL 4.0.0 and later, this function is emulated using L</TLS_method> with L</CTX_set_min_proto_version> and L</CTX_set_max_proto_version> for backward compatibility. It is recommended to use L</CTX_new> with L</CTX_set_min_proto_version> and L</CTX_set_max_proto_version> instead.
+
+ Creates a new SSL_CTX object - based on C<TLSv1_2_method()> - as a framework for establishing connections using TLSv1.2.
+
+@@ -3035,7 +3035,10 @@ Creates a new SSL_CTX object based on $meth method
+ #
+ # returns: value corresponding to openssl's SSL_CTX structure (0 on failure)
+
+- # example
++ # example (recommended, available since OpenSSL 1.1.0)
++ my $ctx = Net::SSLeay::CTX_new_with_method(&Net::SSLeay::TLS_method);
++
++ # example (TLSv1_method not available in OpenSSL 4.0.0+)
+ my $ctx = Net::SSLeay::CTX_new_with_method(&Net::SSLeay::TLSv1_method);
+
+ Check openssl doc L<https://www.openssl.org/docs/manmaster/man3/SSL_CTX_new.html>
+--
+2.47.3
+
diff --git a/package/perl-net-ssleay/0004-Fix-Net-SSLeay-to-support-opaque-ASN1_STRING.patch b/package/perl-net-ssleay/0004-Fix-Net-SSLeay-to-support-opaque-ASN1_STRING.patch
new file mode 100644
index 0000000000..3b828ee9d2
--- /dev/null
+++ b/package/perl-net-ssleay/0004-Fix-Net-SSLeay-to-support-opaque-ASN1_STRING.patch
@@ -0,0 +1,179 @@
+From 929e8eb5ae2953fdb5231588a9d916ae6cffa939 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michal=20Josef=20=C5=A0pa=C4=8Dek?= <mspacek@redhat.com>
+Date: Tue, 14 Apr 2026 14:32:27 +0200
+Subject: [PATCH] Fix Net::SSLeay to support opaque ASN1_STRING
+
+Upstream: https://github.com/radiator-software/p5-net-ssleay/pull/553/changes/929e8eb5ae2953fdb5231588a9d916ae6cffa939
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ SSLeay.xs | 95 +++++++++++++++++++++++++++++++++----------------------
+ 1 file changed, 57 insertions(+), 38 deletions(-)
+
+diff --git a/SSLeay.xs b/SSLeay.xs
+index ad996d5..2567d81 100644
+--- a/SSLeay.xs
++++ b/SSLeay.xs
+@@ -2194,35 +2194,41 @@ int ssl_ctx_set_cert_cb_invoke(SSL *ssl, void *arg)
+
+ time_t ASN1_TIME_timet(ASN1_TIME *asn1t, time_t *gmtoff) {
+ struct tm t;
+- const char *p = (const char*) asn1t->data;
++#if (OPENSSL_VERSION_NUMBER >= 0x1010000f && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x2070000fL)
++ const char *p = (const char*) ASN1_STRING_get0_data(asn1t);
++#else
++ const char *p = (const char*) ASN1_STRING_data(asn1t);
++#endif
++ int asn1t_length = ASN1_STRING_length(asn1t);
++ int asn1t_type = ASN1_STRING_type(asn1t);
+ size_t msec = 0, tz = 0, i, l;
+ time_t result;
+ int adj = 0;
+
+- if (asn1t->type == V_ASN1_UTCTIME) {
+- if (asn1t->length<12 || asn1t->length>17) return 0;
+- if (asn1t->length>12) tz = 12;
++ if (asn1t_type == V_ASN1_UTCTIME) {
++ if (asn1t_length<12 || asn1t_length>17) return 0;
++ if (asn1t_length>12) tz = 12;
+ } else {
+- if (asn1t->length<14) return 0;
+- if (asn1t->length>14) {
++ if (asn1t_length<14) return 0;
++ if (asn1t_length>14) {
+ if (p[14] == '.') {
+ msec = 14;
+- for(i=msec+1;i<asn1t->length && p[i]>='0' && p[i]<='9';i++) ;
+- if (i<asn1t->length) tz = i;
++ for(i=msec+1;i<(size_t)asn1t_length && p[i]>='0' && p[i]<='9';i++) ;
++ if (i<(size_t)asn1t_length) tz = i;
+ } else {
+ tz = 14;
+ }
+ }
+ }
+
+- l = msec ? msec : tz ? tz : asn1t->length;
++ l = msec ? msec : tz ? tz : (size_t)asn1t_length;
+ for(i=0;i<l;i++) {
+ if (p[i]<'0' || p[i]>'9') return 0;
+ }
+
+ /* extract data and time */
+ OPENSSL_cleanse(&t, sizeof(t));
+- if (asn1t->type == V_ASN1_UTCTIME) { /* YY - two digit year */
++ if (asn1t_type == V_ASN1_UTCTIME) { /* YY - two digit year */
+ t.tm_year = (p[0]-'0')*10 + (p[1]-'0');
+ if (t.tm_year < 70) t.tm_year += 100;
+ i=2;
+@@ -2242,11 +2248,11 @@ time_t ASN1_TIME_timet(ASN1_TIME *asn1t, time_t *gmtoff) {
+ if (tz) {
+ /* TZ is 'Z' or [+-]DDDD and after TZ the string must stop*/
+ if (p[tz] == 'Z') {
+- if (asn1t->length>tz+1 ) return 0;
+- } else if (asn1t->length<tz+5 || (p[tz]!='-' && p[tz]!='+')) {
++ if ((size_t)asn1t_length>tz+1 ) return 0;
++ } else if ((size_t)asn1t_length<tz+5 || (p[tz]!='-' && p[tz]!='+')) {
+ return 0;
+ } else {
+- if (asn1t->length>tz+5 ) return 0;
++ if ((size_t)asn1t_length>tz+5 ) return 0;
+ for(i=tz+1;i<tz+5;i++) {
+ if (p[i]<'0' || p[i]>'9') return 0;
+ }
+@@ -4690,7 +4696,11 @@ X509_get_subjectAltNames(cert)
+ EXTEND(SP, 2);
+ count++;
+ PUSHs(sv_2mortal(newSViv(subjAltNameDN->type)));
+- PUSHs(sv_2mortal(newSVpv((const char*)subjAltNameDN->d.ip->data, subjAltNameDN->d.ip->length)));
++#if (OPENSSL_VERSION_NUMBER >= 0x1010000f && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x2070000fL)
++ PUSHs(sv_2mortal(newSVpv((const char*)ASN1_STRING_get0_data(subjAltNameDN->d.ip), ASN1_STRING_length(subjAltNameDN->d.ip))));
++#else
++ PUSHs(sv_2mortal(newSVpv((const char*)ASN1_STRING_data(subjAltNameDN->d.ip), ASN1_STRING_length(subjAltNameDN->d.ip))));
++#endif
+ break;
+
+ }
+@@ -5229,15 +5239,20 @@ P_ASN1_TIME_get_isotime(tm)
+ ASN1_TIME_to_generalizedtime(tm,&tmp);
+ if (tmp) {
+ if (ASN1_GENERALIZEDTIME_check(tmp)) {
+- if (strlen((char*)tmp->data)>=14 && strlen((char*)tmp->data)<200) {
++#if (OPENSSL_VERSION_NUMBER >= 0x1010000f && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x2070000fL)
++ const char *tmp_data = (const char*)ASN1_STRING_get0_data(tmp);
++#else
++ const char *tmp_data = (const char*)ASN1_STRING_data(tmp);
++#endif
++ if (strlen(tmp_data)>=14 && strlen(tmp_data)<200) {
+ strcpy (buf,"yyyy-mm-ddThh:mm:ss");
+- strncpy(buf, (char*)tmp->data, 4);
+- strncpy(buf+5, (char*)tmp->data+4, 2);
+- strncpy(buf+8, (char*)tmp->data+6, 2);
+- strncpy(buf+11,(char*)tmp->data+8, 2);
+- strncpy(buf+14,(char*)tmp->data+10,2);
+- strncpy(buf+17,(char*)tmp->data+12,2);
+- if (strlen((char*)tmp->data)>14) strcat(buf+19,(char*)tmp->data+14);
++ strncpy(buf, tmp_data, 4);
++ strncpy(buf+5, tmp_data+4, 2);
++ strncpy(buf+8, tmp_data+6, 2);
++ strncpy(buf+11,tmp_data+8, 2);
++ strncpy(buf+14,tmp_data+10,2);
++ strncpy(buf+17,tmp_data+12,2);
++ if (strlen(tmp_data)>14) strcat(buf+19,tmp_data+14);
+ }
+ }
+ ASN1_GENERALIZEDTIME_free(tmp);
+@@ -5250,7 +5265,6 @@ P_ASN1_TIME_set_isotime(tm,str)
+ ASN1_TIME *tm
+ const char *str
+ PREINIT:
+- ASN1_TIME t;
+ char buf[256];
+ int i,rv;
+ CODE:
+@@ -5272,22 +5286,27 @@ P_ASN1_TIME_set_isotime(tm,str)
+ buf[14] = '\0';
+ if (strlen(str)>19 && strlen(str)<200) strcat(buf,str+19);
+
+- /* WORKAROUND: ASN1_TIME_set_string() not available in 0.9.8 !!!*/
+- /* in 1.0.0 we would simply: rv = ASN1_TIME_set_string(tm,buf); */
+- t.length = strlen(buf);
+- t.data = (unsigned char *)buf;
+- t.flags = 0;
+- t.type = V_ASN1_UTCTIME;
+- if (!ASN1_TIME_check(&t)) {
+- t.type = V_ASN1_GENERALIZEDTIME;
+- if (!ASN1_TIME_check(&t)) XSRETURN_UNDEF;
++ /* ASN1_TIME_set_string() not available in 0.9.8 */
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++ rv = ASN1_TIME_set_string(tm, buf);
++ if (!rv) XSRETURN_UNDEF;
++#else
++ {
++ ASN1_TIME t;
++ t.length = strlen(buf);
++ t.data = (unsigned char *)buf;
++ t.flags = 0;
++ t.type = V_ASN1_UTCTIME;
++ if (!ASN1_TIME_check(&t)) {
++ t.type = V_ASN1_GENERALIZEDTIME;
++ if (!ASN1_TIME_check(&t)) XSRETURN_UNDEF;
++ }
++ tm->type = t.type;
++ tm->flags = t.flags;
++ if (!ASN1_STRING_set(tm,t.data,t.length)) XSRETURN_UNDEF;
++ rv = 1;
+ }
+- tm->type = t.type;
+- tm->flags = t.flags;
+- if (!ASN1_STRING_set(tm,t.data,t.length)) XSRETURN_UNDEF;
+- rv = 1;
+-
+- /* end of ASN1_TIME_set_string() reimplementation */
++#endif
+
+ ST(0) = sv_newmortal();
+ sv_setiv(ST(0), rv); /* 1 = success, undef = failure */
+--
+2.47.3
+
diff --git a/package/perl-net-ssleay/0005-Update-tests-for-removal-of-SSLv2-Client-Hello-suppo.patch b/package/perl-net-ssleay/0005-Update-tests-for-removal-of-SSLv2-Client-Hello-suppo.patch
new file mode 100644
index 0000000000..10fd4adccf
--- /dev/null
+++ b/package/perl-net-ssleay/0005-Update-tests-for-removal-of-SSLv2-Client-Hello-suppo.patch
@@ -0,0 +1,66 @@
+From 1a5837fa489836f0dfc411d3a0c4d955ce8fab8c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michal=20Josef=20=C5=A0pa=C4=8Dek?= <mspacek@redhat.com>
+Date: Tue, 14 Apr 2026 14:48:51 +0200
+Subject: [PATCH] Update tests for removal of SSLv2 Client Hello support in
+ OpenSSL 4.0.0
+
+Upstream: https://github.com/radiator-software/p5-net-ssleay/pull/553/changes/1a5837fa489836f0dfc411d3a0c4d955ce8fab8c
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ t/local/48_client_hello_callback.t | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/t/local/48_client_hello_callback.t b/t/local/48_client_hello_callback.t
+index d99122c..110d769 100644
+--- a/t/local/48_client_hello_callback.t
++++ b/t/local/48_client_hello_callback.t
+@@ -5,13 +5,15 @@ use Test::Net::SSLeay qw(
+ can_fork data_file_path initialise_libssl new_ctx tcp_socket
+ );
+
++my $has_sslv2_hello;
+ BEGIN {
+ if (not defined &Net::SSLeay::CTX_set_client_hello_cb) {
+ plan skip_all => "No SSL_CTX_set_client_hello_cb()";
+ } elsif (not can_fork()) {
+ plan skip_all => "fork() not supported on this system";
+ } else {
+- plan tests => 41;
++ $has_sslv2_hello = Net::SSLeay::SSLeay() < 0x40000000;
++ plan tests => $has_sslv2_hello ? 41 : 30;
+ }
+ }
+
+@@ -172,7 +174,7 @@ my @cb_tests = (
+ # argument passed to the callback
+ # true if the callback function triggers croak()
+ # true if the client needs to test that ALPN alert (120) is received
+- [ \&client_hello_cb_v2hello_detection, undef, 0 ],
++ ($has_sslv2_hello ? [ \&client_hello_cb_v2hello_detection, undef, 0 ] : ()),
+ [ \&client_hello_cb_getters, undef, 0 ],
+ [ \&client_hello_cb_value_passing, \$cb_test_arg, 0 ],
+ [ \&client_hello_cb_alert_alpn, undef, 0, 'alerts'],
+@@ -248,8 +250,8 @@ my @results;
+ };
+
+ # Start with SSLv2 ClientHello detection test. Send a canned SSLv2
+- # ClientHello.
+- {
++ # ClientHello. Removed in OpenSSL 4.0.0.
++ if ($has_sslv2_hello) {
+ my $s_clientv2 = $server->connect();
+ my $clientv2_hello = get_sslv2_hello();
+ syswrite($s_clientv2, $clientv2_hello, length $clientv2_hello);
+@@ -306,7 +308,7 @@ my @results;
+ waitpid $pid, 0;
+ push @results, [$? == 0, 'Client: server exited with 0'];
+ END {
+- Test::More->builder->current_test(37);
++ Test::More->builder->current_test($has_sslv2_hello ? 37 : 27);
+ ok( $_->[0], $_->[1] ) for (@results);
+ }
+
+--
+2.47.3
+
diff --git a/package/perl-net-ssleay/0006-Add-default-for-Net-SSLeay-OPENSSL_info-return-value.patch b/package/perl-net-ssleay/0006-Add-default-for-Net-SSLeay-OPENSSL_info-return-value.patch
new file mode 100644
index 0000000000..62946776f0
--- /dev/null
+++ b/package/perl-net-ssleay/0006-Add-default-for-Net-SSLeay-OPENSSL_info-return-value.patch
@@ -0,0 +1,45 @@
+From 89f6aa5d9f9e0c8976d2dbb07b51abe3a12457cc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michal=20Josef=20=C5=A0pa=C4=8Dek?= <mspacek@redhat.com>
+Date: Tue, 14 Apr 2026 14:55:42 +0200
+Subject: [PATCH] Add default '' for Net::SSLeay::OPENSSL_info() return value
+ in tests
+
+The root cause was the removal of engines in OpenSSL 4.0.0, which
+triggered a warning.
+
+Upstream: https://github.com/radiator-software/p5-net-ssleay/pull/553/changes/89f6aa5d9f9e0c8976d2dbb07b51abe3a12457cc
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ t/local/03_use.t | 17 +++++++++--------
+ 1 file changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/t/local/03_use.t b/t/local/03_use.t
+index 36364b4..f8fd1ae 100644
+--- a/t/local/03_use.t
++++ b/t/local/03_use.t
+@@ -63,12 +63,13 @@ if (defined &Net::SSLeay::OPENSSL_version_major) {
+ diag(" OPENSSL_version_build_metadata(): '" . Net::SSLeay::OPENSSL_version_build_metadata() . "'");
+ diag("");
+ diag("Library information with OPENSSL_info():");
+- diag(" OPENSSL_INFO_CONFIG_DIR: '" . Net::SSLeay::OPENSSL_info(Net::SSLeay::OPENSSL_INFO_CONFIG_DIR()) . "'");
+- diag(" OPENSSL_INFO_ENGINES_DIR: '" . Net::SSLeay::OPENSSL_info(Net::SSLeay::OPENSSL_INFO_ENGINES_DIR()) . "'");
+- diag(" OPENSSL_INFO_MODULES_DIR: '" . Net::SSLeay::OPENSSL_info(Net::SSLeay::OPENSSL_INFO_MODULES_DIR()) . "'");
+- diag(" OPENSSL_INFO_DSO_EXTENSION: '" . Net::SSLeay::OPENSSL_info(Net::SSLeay::OPENSSL_INFO_DSO_EXTENSION()) . "'");
+- diag(" OPENSSL_INFO_DIR_FILENAME_SEPARATOR: '" . Net::SSLeay::OPENSSL_info(Net::SSLeay::OPENSSL_INFO_DIR_FILENAME_SEPARATOR()) . "'");
+- diag(" OPENSSL_INFO_LIST_SEPARATOR: '" . Net::SSLeay::OPENSSL_info(Net::SSLeay::OPENSSL_INFO_LIST_SEPARATOR()) . "'");
+- diag(" OPENSSL_INFO_SEED_SOURCE: '" . Net::SSLeay::OPENSSL_info(Net::SSLeay::OPENSSL_INFO_SEED_SOURCE()) . "'");
+- diag(" OPENSSL_INFO_CPU_SETTINGS: '" . Net::SSLeay::OPENSSL_info(Net::SSLeay::OPENSSL_INFO_CPU_SETTINGS()) . "'");
++ my $ossl_info = sub { my $v = Net::SSLeay::OPENSSL_info($_[0]); defined $v ? $v : '' };
++ diag(" OPENSSL_INFO_CONFIG_DIR: '" . $ossl_info->(Net::SSLeay::OPENSSL_INFO_CONFIG_DIR()) . "'");
++ diag(" OPENSSL_INFO_ENGINES_DIR: '" . $ossl_info->(Net::SSLeay::OPENSSL_INFO_ENGINES_DIR()) . "'");
++ diag(" OPENSSL_INFO_MODULES_DIR: '" . $ossl_info->(Net::SSLeay::OPENSSL_INFO_MODULES_DIR()) . "'");
++ diag(" OPENSSL_INFO_DSO_EXTENSION: '" . $ossl_info->(Net::SSLeay::OPENSSL_INFO_DSO_EXTENSION()) . "'");
++ diag(" OPENSSL_INFO_DIR_FILENAME_SEPARATOR: '" . $ossl_info->(Net::SSLeay::OPENSSL_INFO_DIR_FILENAME_SEPARATOR()) . "'");
++ diag(" OPENSSL_INFO_LIST_SEPARATOR: '" . $ossl_info->(Net::SSLeay::OPENSSL_INFO_LIST_SEPARATOR()) . "'");
++ diag(" OPENSSL_INFO_SEED_SOURCE: '" . $ossl_info->(Net::SSLeay::OPENSSL_INFO_SEED_SOURCE()) . "'");
++ diag(" OPENSSL_INFO_CPU_SETTINGS: '" . $ossl_info->(Net::SSLeay::OPENSSL_INFO_CPU_SETTINGS()) . "'");
+ }
+--
+2.47.3
+
diff --git a/package/perl-net-ssleay/0007-Add-Changes-for-OPenSSL-4-support-and-update-tests.patch b/package/perl-net-ssleay/0007-Add-Changes-for-OPenSSL-4-support-and-update-tests.patch
new file mode 100644
index 0000000000..943c8f737c
--- /dev/null
+++ b/package/perl-net-ssleay/0007-Add-Changes-for-OPenSSL-4-support-and-update-tests.patch
@@ -0,0 +1,94 @@
+From cbe701c4cf200978f6332156d3b9889cf7c4984e Mon Sep 17 00:00:00 2001
+From: Heikki Vatiainen <hvn@radiatorsoftware.com>
+Date: Wed, 17 Jun 2026 10:02:11 +0300
+Subject: [PATCH] Add Changes for OPenSSL 4 support and update tests.
+
+Update the test helper module for better detection of available TLS versions
+with OpenSSL 4. Otherwise some of the tests with older TLS methods may be
+skipped even though they are available with OpenSSL 4.
+
+Upstream: https://github.com/radiator-software/p5-net-ssleay/pull/553/changes/cbe701c4cf200978f6332156d3b9889cf7c4984e
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ Changes | 20 ++++++++++++++++++++
+ inc/Test/Net/SSLeay.pm | 19 +++++++++++++++++++
+ 2 files changed, 39 insertions(+)
+
+diff --git a/Changes b/Changes
+index 09113fe..ff75ff2 100644
+--- a/Changes
++++ b/Changes
+@@ -1,5 +1,25 @@
+ Revision history for Perl extension Net::SSLeay.
+
++1.97_01 ????-??-??
++ - Support for OpenSSL 4.0.0. Contributed by Michal Josef Špaček.
++ - Net::SSLeay specific functions CTX_tlsv1_new(),
++ CTX_tlsv1_1_new() and CTX_tlsv1_2_new() with OpenSSL 4.0.0
++ and later are emulated using TLS_method() with
++ SSL_CTX_set_min_proto_version() and
++ SSL_CTX_set_max_proto_version() for backward
++ compatibility. It is recommended to use
++ Net::SSLeay::CTX_new() with
++ Net::SSLeay::CTX_set_min_proto_version() and
++ Net::SSLeay::CTX_set_max_proto_version() instead.
++ - TLSv1_method, TLSv1_server_method and TLSv1_client_method,
++ TLSv1_1_method, TLSv1_1_server_method and
++ TLSv1_1_client_method, TLSv1_2_method,
++ TLSv1_2_server_method and TLSv1_2_client_method are
++ removed in OpenSSL 4.0.0. Use TLS_method() with
++ CTX_set_min_proto_version() and
++ CTX_set_max_proto_version() instead.
++ - CTX_v3_new() is removed with OpenSSL 4.0.0 and later.
++
+ 1.96 2026-03-21
+ - New stable release incorporating all changes from developer releases
+ 1.95_01 to 1.95_03.
+diff --git a/inc/Test/Net/SSLeay.pm b/inc/Test/Net/SSLeay.pm
+index ce0b03e..ddcc421 100644
+--- a/inc/Test/Net/SSLeay.pm
++++ b/inc/Test/Net/SSLeay.pm
+@@ -38,6 +38,8 @@ my $data_path = catfile( dirname(__FILE__), '..', '..', '..', 't', 'data' );
+
+ my $initialised = 0;
+
++# All version-specific methods were removed in OpenSSL 4.0. This list
++# may be updated once the library is loaded and its version is known.
+ my %protos = (
+ 'TLSv1.3' => {
+ constant => \&Net::SSLeay::TLS1_3_VERSION,
+@@ -104,6 +106,15 @@ sub _libssl_fatal {
+ sub _load_net_ssleay {
+ eval { require Net::SSLeay; 1; } or croak $EVAL_ERROR;
+
++ if (Net::SSLeay::OPENSSL_VERSION_NUMBER() >= 0x40000000) {
++ $protos{'TLSv1.2'}->{constant} = \&Net::SSLeay::TLS1_2_VERSION;
++ $protos{'TLSv1.2'}->{constant_type} = 'version';
++ $protos{'TLSv1.1'}->{constant} = \&Net::SSLeay::TLS1_1_VERSION;
++ $protos{'TLSv1.1'}->{constant_type} = 'version';
++ $protos{'TLSv1'}->{constant} = \&Net::SSLeay::TLS1_VERSION;
++ $protos{'TLSv1'}->{constant_type} = 'version';
++ }
++
+ return 1;
+ }
+
+@@ -369,6 +380,14 @@ sub is_protocol_usable {
+ or _libssl_fatal('Failed to create SSL_CTX object');
+ }
+
++ # Security level functions were added in OpenSSL 1.1.0. Since then
++ # the default value of security level and the security level
++ # definitions have updated between the OpenSSL versions. Use level
++ # zero so that the library doesn't hide any of the protocols from
++ # us.
++ Net::SSLeay::CTX_set_security_level($ctx, 0)
++ if defined &Net::SSLeay::CTX_set_security_level;
++
+ my $ssl = Net::SSLeay::new($ctx)
+ or _libssl_fatal('Failed to create SSL structure');
+
+--
+2.47.3
+
diff --git a/package/perl-net-ssleay/0008-Do-not-use-elif-but-if-with-else-to-avoid-duplicate-.patch b/package/perl-net-ssleay/0008-Do-not-use-elif-but-if-with-else-to-avoid-duplicate-.patch
new file mode 100644
index 0000000000..5503679a94
--- /dev/null
+++ b/package/perl-net-ssleay/0008-Do-not-use-elif-but-if-with-else-to-avoid-duplicate-.patch
@@ -0,0 +1,83 @@
+From 99281b981ebd1d1367d4e871290ca84cfb295339 Mon Sep 17 00:00:00 2001
+From: Heikki Vatiainen <hvn@radiatorsoftware.com>
+Date: Wed, 17 Jun 2026 11:02:50 +0300
+Subject: [PATCH] Do not use #elif but #if with #else to avoid duplicate
+ definitions in XS.
+
+Perl XS parser seems not to understand C preproceessor #elif. Using #if with
+
+ Warning: duplicate function definition 'CTX_tlsv1_new' detected in SSLeay.xs, line 2493
+ Warning: duplicate function definition 'CTX_tlsv1_1_new' detected in SSLeay.xs, line 2517
+ Warning: duplicate function definition 'CTX_tlsv1_2_new' detected in SSLeay.xs, line 2541
+
+This was seen with Perl 5.42.0 but more may not be the cae with more recent
+Perl versions.
+
+Upstream: https://github.com/radiator-software/p5-net-ssleay/pull/553/changes/99281b981ebd1d1367d4e871290ca84cfb295339
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ SSLeay.xs | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/SSLeay.xs b/SSLeay.xs
+index 2567d81..bf722a4 100644
+--- a/SSLeay.xs
++++ b/SSLeay.xs
+@@ -2487,7 +2487,8 @@ SSL_CTX_tlsv1_new()
+ OUTPUT:
+ RETVAL
+
+-#elif OPENSSL_VERSION_NUMBER >= 0x40000000L
++#else
++#if (OPENSSL_VERSION_NUMBER >= 0x40000000L)
+
+ SSL_CTX *
+ SSL_CTX_tlsv1_new()
+@@ -2501,6 +2502,7 @@ SSL_CTX_tlsv1_new()
+ RETVAL
+
+ #endif
++#endif
+
+ #if (OPENSSL_VERSION_NUMBER >= 0x10001001L && OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_TLS1_1_METHOD)) /* OpenSSL 1.0.1-beta1 */
+
+@@ -2511,7 +2513,8 @@ SSL_CTX_tlsv1_1_new()
+ OUTPUT:
+ RETVAL
+
+-#elif OPENSSL_VERSION_NUMBER >= 0x40000000L
++#else
++#if (OPENSSL_VERSION_NUMBER >= 0x40000000L)
+
+ SSL_CTX *
+ SSL_CTX_tlsv1_1_new()
+@@ -2525,6 +2528,7 @@ SSL_CTX_tlsv1_1_new()
+ RETVAL
+
+ #endif
++#endif
+
+ #if (OPENSSL_VERSION_NUMBER >= 0x10001001L && OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_TLS1_2_METHOD)) /* OpenSSL 1.0.1-beta1 */
+
+@@ -2535,7 +2539,8 @@ SSL_CTX_tlsv1_2_new()
+ OUTPUT:
+ RETVAL
+
+-#elif OPENSSL_VERSION_NUMBER >= 0x40000000L
++#else
++#if (OPENSSL_VERSION_NUMBER >= 0x40000000L)
+
+ SSL_CTX *
+ SSL_CTX_tlsv1_2_new()
+@@ -2549,6 +2554,7 @@ SSL_CTX_tlsv1_2_new()
+ RETVAL
+
+ #endif
++#endif
+
+ SSL_CTX *
+ SSL_CTX_new_with_method(meth)
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 48/66] package/python3: Add support for OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (46 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 47/66] package/perl-net-ssleay: Add support for " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 49/66] package/qpid-proton: Fix build with " Bernd Kuhls
` (17 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Thomas Petazzoni
Python decided to add support for OpenSSL => 4.0 in version 3.15 and to
not backport the support to older branches.
Ubuntu however bumped OpenSSL to 4.0.0 and added a patch to its Python
package which we add to buildroot with this commit.
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: James Hilliard <james.hilliard1@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
---
package/python3/0011-openssl4-support.patch | 9807 +++++++++++++++++++
1 file changed, 9807 insertions(+)
create mode 100644 package/python3/0011-openssl4-support.patch
diff --git a/package/python3/0011-openssl4-support.patch b/package/python3/0011-openssl4-support.patch
new file mode 100644
index 0000000000..0d6e7b612d
--- /dev/null
+++ b/package/python3/0011-openssl4-support.patch
@@ -0,0 +1,9807 @@
+Description: Support building with OpenSSL 4
+Author: Victor Stinner <vstinner@python.org>
+Origin: https://github.com/python/cpython/pull/149783/changes
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/python3.14/+bug/2154836
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1137595
+Forwarded: no
+Last-Update: 2026-08-26
+
+Upstream: https://git.launchpad.net/ubuntu/+source/python3.14/commit/?id=266bf18086198a0b3c54defcb770e2a5419c8157
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+
+--- a/Lib/test/test_poplib.py
++++ b/Lib/test/test_poplib.py
+@@ -184,7 +184,8 @@
+ elif err.args[0] == ssl.SSL_ERROR_EOF:
+ return self.handle_close()
+ # TODO: SSLError does not expose alert information
+- elif ("SSLV3_ALERT_BAD_CERTIFICATE" in err.args[1] or
++ elif ("TLS_ALERT_BAD_CERTIFICATE" in err.args[1] or
++ "SSLV3_ALERT_BAD_CERTIFICATE" in err.args[1] or
+ "SSLV3_ALERT_CERTIFICATE_UNKNOWN" in err.args[1]):
+ return self.handle_close()
+ raise
+--- a/Lib/test/test_ssl.py
++++ b/Lib/test/test_ssl.py
+@@ -396,7 +396,7 @@
+ ssl.OP_NO_COMPRESSION
+ self.assertEqual(ssl.HAS_SNI, True)
+ self.assertEqual(ssl.HAS_ECDH, True)
+- self.assertEqual(ssl.HAS_TLSv1_2, True)
++ self.assertIsInstance(ssl.HAS_TLSv1_2, bool)
+ self.assertEqual(ssl.HAS_TLSv1_3, True)
+ ssl.OP_NO_SSLv2
+ ssl.OP_NO_SSLv3
+@@ -587,11 +587,11 @@
+ # Some sanity checks follow
+ # >= 1.1.1
+ self.assertGreaterEqual(n, 0x10101000)
+- # < 4.0
+- self.assertLess(n, 0x40000000)
++ # < 5.0
++ self.assertLess(n, 0x50000000)
+ major, minor, fix, patch, status = t
+ self.assertGreaterEqual(major, 1)
+- self.assertLess(major, 4)
++ self.assertLess(major, 5)
+ self.assertGreaterEqual(minor, 0)
+ self.assertLess(minor, 256)
+ self.assertGreaterEqual(fix, 0)
+@@ -657,12 +657,14 @@
+ ssl.OP_NO_TLSv1_2,
+ ssl.OP_NO_TLSv1_3
+ ]
+- protocols = [
+- ssl.PROTOCOL_TLSv1,
+- ssl.PROTOCOL_TLSv1_1,
+- ssl.PROTOCOL_TLSv1_2,
+- ssl.PROTOCOL_TLS
+- ]
++ protocols = []
++ if hasattr(ssl, 'PROTOCOL_TLSv1'):
++ protocols.append(ssl.PROTOCOL_TLSv1)
++ if hasattr(ssl, 'PROTOCOL_TLSv1_1'):
++ protocols.append(ssl.PROTOCOL_TLSv1_1)
++ if hasattr(ssl, 'PROTOCOL_TLSv1_2'):
++ protocols.append(ssl.PROTOCOL_TLSv1_2)
++ protocols.append(ssl.PROTOCOL_TLS)
+ versions = [
+ ssl.TLSVersion.SSLv3,
+ ssl.TLSVersion.TLSv1,
+@@ -1156,6 +1158,7 @@
+ ssl.TLSVersion.TLSv1,
+ ssl.TLSVersion.TLSv1_1,
+ ssl.TLSVersion.TLSv1_2,
++ ssl.TLSVersion.TLSv1_3,
+ ssl.TLSVersion.SSLv3,
+ }
+ )
+@@ -1169,7 +1172,7 @@
+ with self.assertRaises(ValueError):
+ ctx.minimum_version = 42
+
+- if has_tls_protocol(ssl.PROTOCOL_TLSv1_1):
++ if has_tls_protocol('PROTOCOL_TLSv1_1'):
+ ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1_1)
+
+ self.assertIn(
+@@ -1721,23 +1724,24 @@
+ self.assertFalse(ctx.check_hostname)
+ self._assert_context_options(ctx)
+
+- if has_tls_protocol(ssl.PROTOCOL_TLSv1):
++ if has_tls_protocol('PROTOCOL_TLSv1'):
+ with warnings_helper.check_warnings():
+ ctx = ssl._create_stdlib_context(ssl.PROTOCOL_TLSv1)
+ self.assertEqual(ctx.protocol, ssl.PROTOCOL_TLSv1)
+ self.assertEqual(ctx.verify_mode, ssl.CERT_NONE)
+ self._assert_context_options(ctx)
+
+- with warnings_helper.check_warnings():
+- ctx = ssl._create_stdlib_context(
+- ssl.PROTOCOL_TLSv1_2,
+- cert_reqs=ssl.CERT_REQUIRED,
+- check_hostname=True
+- )
+- self.assertEqual(ctx.protocol, ssl.PROTOCOL_TLSv1_2)
+- self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED)
+- self.assertTrue(ctx.check_hostname)
+- self._assert_context_options(ctx)
++ if has_tls_protocol('PROTOCOL_TLSv1_2'):
++ with warnings_helper.check_warnings():
++ ctx = ssl._create_stdlib_context(
++ ssl.PROTOCOL_TLSv1_2,
++ cert_reqs=ssl.CERT_REQUIRED,
++ check_hostname=True
++ )
++ self.assertEqual(ctx.protocol, ssl.PROTOCOL_TLSv1_2)
++ self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED)
++ self.assertTrue(ctx.check_hostname)
++ self._assert_context_options(ctx)
+
+ ctx = ssl._create_stdlib_context(purpose=ssl.Purpose.CLIENT_AUTH)
+ self.assertEqual(ctx.protocol, ssl.PROTOCOL_TLS_SERVER)
+@@ -2764,6 +2768,36 @@
+ def stop(self):
+ self.active = False
+
++class TestEOFServer(threading.Thread):
++ def __init__(self):
++ super().__init__()
++ self.listening = threading.Event()
++ self.address = None
++
++ def run(self):
++ context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
++ context.load_cert_chain(CERTFILE)
++ server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
++ with server_sock:
++ server_sock.settimeout(support.SHORT_TIMEOUT)
++ server_sock.bind((HOST, 0))
++ server_sock.listen(5)
++
++ self.address = server_sock.getsockname()
++ self.listening.set()
++
++ sock, addr = server_sock.accept()
++ sslconn = context.wrap_socket(sock, server_side=True)
++ with sslconn:
++ request = b''
++ while chunk := sslconn.recv(1024):
++ request += chunk
++ if b'\n' in chunk:
++ break
++
++ sslconn.sendall(b'server\n')
++ sslconn.shutdown(socket.SHUT_WR)
++
+ class AsyncoreEchoServer(threading.Thread):
+
+ # this one's based on asyncore.dispatcher
+@@ -3637,10 +3671,10 @@
+ client_options=ssl.OP_NO_TLSv1_2)
+
+ try_protocol_combo(ssl.PROTOCOL_TLS, ssl.PROTOCOL_TLSv1_2, 'TLSv1.2')
+- if has_tls_protocol(ssl.PROTOCOL_TLSv1):
++ if has_tls_protocol('PROTOCOL_TLSv1'):
+ try_protocol_combo(ssl.PROTOCOL_TLSv1_2, ssl.PROTOCOL_TLSv1, False)
+ try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1_2, False)
+- if has_tls_protocol(ssl.PROTOCOL_TLSv1_1):
++ if has_tls_protocol('PROTOCOL_TLSv1_1'):
+ try_protocol_combo(ssl.PROTOCOL_TLSv1_2, ssl.PROTOCOL_TLSv1_1, False)
+ try_protocol_combo(ssl.PROTOCOL_TLSv1_1, ssl.PROTOCOL_TLSv1_2, False)
+
+@@ -4489,7 +4523,9 @@
+ sni_name='supermessage')
+
+ # Allow for flexible libssl error messages.
+- regex = "(SSLV3_ALERT_HANDSHAKE_FAILURE|NO_PRIVATE_VALUE)"
++ regex = ("(TLS_ALERT_HANDSHAKE_FAILURE"
++ "|SSLV3_ALERT_HANDSHAKE_FAILURE"
++ "|NO_PRIVATE_VALUE)")
+ self.assertRegex(cm.exception.reason, regex)
+ self.assertEqual(catch.unraisable.exc_type, ZeroDivisionError)
+
+@@ -4805,6 +4841,50 @@
+ if cm.exc_value is not None:
+ raise cm.exc_value
+
++ def test_got_eof(self):
++ # Test that _ssl._SSLSocket behaves the same on all OpenSSL
++ # versions on calling methods after EOF (after the first SSLEOFError).
++
++ server = TestEOFServer()
++ server.start()
++ if not server.listening.wait(support.SHORT_TIMEOUT):
++ raise RuntimeError("server took too long")
++ self.addCleanup(server.join)
++
++ context = ssl.create_default_context(cafile=CERTFILE)
++ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
++ sock.settimeout(support.SHORT_TIMEOUT)
++ sock.connect(server.address)
++ sslsock = context.wrap_socket(sock, server_hostname='localhost')
++ with sslsock:
++ sslsock.sendall(b'client\n')
++ # test the _ssl._SSLSocket object, not ssl.SSLSocket
++ sslobj = sslsock._sslobj
++
++ data = sslobj.read(1024)
++ self.assertEqual(data, b'server\n')
++
++ # The second read gets EOF error and sets got_eof_error to 1
++ with self.assertRaises(ssl.SSLEOFError):
++ sslobj.read(1024)
++
++ # Following read(), sendfile(), write() and do_handshake() calls
++ # must raise SSLEOFError
++ with self.assertRaises(ssl.SSLEOFError):
++ # The _SSLSocket remembers the previous EOF error
++ # and raises again SSLEOFError
++ sslobj.read(1024)
++ if hasattr(sslobj, 'sendfile'):
++ with open(__file__, "rb") as fp:
++ with self.assertRaises(ssl.SSLEOFError):
++ sslobj.sendfile(fp.fileno(), 0, 1)
++ with self.assertRaises(ssl.SSLEOFError):
++ sslobj.write(b'client2\n')
++ with self.assertRaises(ssl.SSLEOFError):
++ sslsock.do_handshake()
++
++ self.assertEqual(sslsock.pending(), 0)
++
+
+ @unittest.skipUnless(has_tls_version('TLSv1_3') and ssl.HAS_PHA,
+ "Test needs TLS 1.3 PHA")
+--- a/Modules/_ssl.c
++++ b/Modules/_ssl.c
+@@ -123,7 +123,9 @@
+
+ /* Include generated data (error codes) */
+ /* See make_ssl_data.h for notes on adding a new version. */
+-#if (OPENSSL_VERSION_NUMBER >= 0x30401000L)
++#if (OPENSSL_VERSION_NUMBER >= 0x40000000L)
++#include "_ssl_data_40.h"
++#elif (OPENSSL_VERSION_NUMBER >= 0x30401000L)
+ #include "_ssl_data_35.h"
+ #elif (OPENSSL_VERSION_NUMBER >= 0x30100000L)
+ #include "_ssl_data_340.h"
+@@ -135,6 +137,17 @@
+ #error Unsupported OpenSSL version
+ #endif
+
++#if (OPENSSL_VERSION_NUMBER >= 0x40000000L)
++#define OPENSSL_NO_SSL3
++#define OPENSSL_NO_TLS1
++#define OPENSSL_NO_TLS1_1
++#define OPENSSL_NO_TLS1_2
++#define OPENSSL_NO_SSL3_METHOD
++#define OPENSSL_NO_TLS1_METHOD
++#define OPENSSL_NO_TLS1_1_METHOD
++#define OPENSSL_NO_TLS1_2_METHOD
++#endif
++
+ /* OpenSSL API 1.1.0+ does not include version methods */
+ #ifndef OPENSSL_NO_SSL3_METHOD
+ extern const SSL_METHOD *SSLv3_method(void);
+@@ -340,6 +353,16 @@
+ * and shutdown methods check for chained exceptions.
+ */
+ PyObject *exc;
++ // If non-zero, read(), sendfile(), write() and do_handshake()
++ // methods raise SSLEOFError without calling the underlying OpenSSL
++ // function. Set to 1 on PY_SSL_ERROR_EOF error.
++ //
++ // On OpenSSL 4, if SSL_read_ex() fails with
++ // SSL_R_UNEXPECTED_EOF_WHILE_READING, the following SSL_read_ex() call
++ // fails with a generic protocol error (ERR_peek_last_error() returns 0).
++ // Use got_eof_error to have the same behavior on OpenSSL 4 and newer and
++ // on OpenSSL 3 and older.
++ int got_eof_error;
+ } PySSLSocket;
+
+ #define PySSLSocket_CAST(op) ((PySSLSocket *)(op))
+@@ -487,6 +510,10 @@
+ PyObject *init_value, *msg, *key;
+ PyUnicodeWriter *writer = NULL;
+
++ if (ssl_errno == PY_SSL_ERROR_EOF && sslsock != NULL) {
++ sslsock->got_eof_error = 1;
++ }
++
+ if (errcode != 0) {
+ int lib, reason;
+
+@@ -642,6 +669,16 @@
+ return -1;
+ }
+
++static void
++set_eof_error(PySSLSocket *sslsock)
++{
++ _sslmodulestate *state = get_state_sock(sslsock);
++ fill_and_set_sslerror(state, sslsock, state->PySSLEOFErrorObject,
++ PY_SSL_ERROR_EOF,
++ "EOF occurred in violation of protocol",
++ __LINE__, 0);
++}
++
+ static PyObject *
+ PySSL_SetError(PySSLSocket *sslsock, const char *filename, int lineno)
+ {
+@@ -889,6 +926,7 @@
+ self->server_hostname = NULL;
+ self->err = err;
+ self->exc = NULL;
++ self->got_eof_error = 0;
+
+ /* Make sure the SSL error state is initialized */
+ ERR_clear_error();
+@@ -1029,6 +1067,11 @@
+ BIO_set_nbio(SSL_get_wbio(self->ssl), nonblocking);
+ }
+
++ if (self->got_eof_error) {
++ set_eof_error(self);
++ goto error;
++ }
++
+ timeout = GET_SOCKET_TIMEOUT(sock);
+ has_timeout = (timeout > 0);
+ if (has_timeout) {
+@@ -1134,7 +1177,7 @@
+
+ static PyObject *
+ _create_tuple_for_attribute(_sslmodulestate *state,
+- ASN1_OBJECT *name, ASN1_STRING *value)
++ const ASN1_OBJECT *name, const ASN1_STRING *value)
+ {
+ Py_ssize_t buflen;
+ PyObject *pyattr;
+@@ -1163,16 +1206,16 @@
+ }
+
+ static PyObject *
+-_create_tuple_for_X509_NAME (_sslmodulestate *state, X509_NAME *xname)
++_create_tuple_for_X509_NAME(_sslmodulestate *state, const X509_NAME *xname)
+ {
+ PyObject *dn = NULL; /* tuple which represents the "distinguished name" */
+ PyObject *rdn = NULL; /* tuple to hold a "relative distinguished name" */
+ PyObject *rdnt;
+ PyObject *attr = NULL; /* tuple to hold an attribute */
+ int entry_count = X509_NAME_entry_count(xname);
+- X509_NAME_ENTRY *entry;
+- ASN1_OBJECT *name;
+- ASN1_STRING *value;
++ const X509_NAME_ENTRY *entry;
++ const ASN1_OBJECT *name;
++ const ASN1_STRING *value;
+ int index_counter;
+ int rdn_level = -1;
+ int retcode;
+@@ -2493,6 +2536,11 @@
+ BIO_set_nbio(SSL_get_wbio(self->ssl), nonblocking);
+ }
+
++ if (self->got_eof_error) {
++ set_eof_error(self);
++ goto error;
++ }
++
+ timeout = GET_SOCKET_TIMEOUT(sock);
+ has_timeout = (timeout > 0);
+ if (has_timeout) {
+@@ -2633,6 +2681,11 @@
+ Py_INCREF(sock);
+ }
+
++ if (self->got_eof_error) {
++ set_eof_error(self);
++ goto error;
++ }
++
+ if (!group_right_1) {
+ dest = PyBytes_FromStringAndSize(NULL, len);
+ if (dest == NULL)
+@@ -6513,9 +6566,15 @@
+ ADD_INT_CONST("PROTOCOL_TLS", PY_SSL_VERSION_TLS);
+ ADD_INT_CONST("PROTOCOL_TLS_CLIENT", PY_SSL_VERSION_TLS_CLIENT);
+ ADD_INT_CONST("PROTOCOL_TLS_SERVER", PY_SSL_VERSION_TLS_SERVER);
++#ifndef OPENSSL_NO_TLS1
+ ADD_INT_CONST("PROTOCOL_TLSv1", PY_SSL_VERSION_TLS1);
++#endif
++#ifndef OPENSSL_NO_TLS1_1
+ ADD_INT_CONST("PROTOCOL_TLSv1_1", PY_SSL_VERSION_TLS1_1);
++#endif
++#ifndef OPENSSL_NO_TLS1_2
+ ADD_INT_CONST("PROTOCOL_TLSv1_2", PY_SSL_VERSION_TLS1_2);
++#endif
+
+ #define ADD_OPTION(NAME, VALUE) if (sslmodule_add_option(m, NAME, (VALUE)) < 0) return -1
+
+--- a/Modules/_ssl/cert.c
++++ b/Modules/_ssl/cert.c
+@@ -128,7 +128,8 @@
+ }
+
+ static PyObject*
+-_x509name_print(_sslmodulestate *state, X509_NAME *name, int indent, unsigned long flags)
++_x509name_print(_sslmodulestate *state, const X509_NAME *name,
++ int indent, unsigned long flags)
+ {
+ PyObject *res;
+ BIO *biobuf;
+--- /dev/null
++++ b/Modules/_ssl_data_40.h
+@@ -0,0 +1,9357 @@
++/* File generated by Tools/ssl/make_ssl_data.py */
++/* Generated on 2026-08-26T05:31:26.547074+00:00 */
++/* Generated from Git commit openssl-4.0.1-0-g1e963a8680 */
++
++/* generated from args.lib2errnum */
++static struct py_ssl_library_code library_codes[] = {
++#ifdef ERR_LIB_ASN1
++ {"ASN1", ERR_LIB_ASN1},
++#endif
++#ifdef ERR_LIB_ASYNC
++ {"ASYNC", ERR_LIB_ASYNC},
++#endif
++#ifdef ERR_LIB_BIO
++ {"BIO", ERR_LIB_BIO},
++#endif
++#ifdef ERR_LIB_BN
++ {"BN", ERR_LIB_BN},
++#endif
++#ifdef ERR_LIB_BUF
++ {"BUF", ERR_LIB_BUF},
++#endif
++#ifdef ERR_LIB_CMP
++ {"CMP", ERR_LIB_CMP},
++#endif
++#ifdef ERR_LIB_CMS
++ {"CMS", ERR_LIB_CMS},
++#endif
++#ifdef ERR_LIB_COMP
++ {"COMP", ERR_LIB_COMP},
++#endif
++#ifdef ERR_LIB_CONF
++ {"CONF", ERR_LIB_CONF},
++#endif
++#ifdef ERR_LIB_CRMF
++ {"CRMF", ERR_LIB_CRMF},
++#endif
++#ifdef ERR_LIB_CRYPTO
++ {"CRYPTO", ERR_LIB_CRYPTO},
++#endif
++#ifdef ERR_LIB_CT
++ {"CT", ERR_LIB_CT},
++#endif
++#ifdef ERR_LIB_DH
++ {"DH", ERR_LIB_DH},
++#endif
++#ifdef ERR_LIB_DSA
++ {"DSA", ERR_LIB_DSA},
++#endif
++#ifdef ERR_LIB_DSO
++ {"DSO", ERR_LIB_DSO},
++#endif
++#ifdef ERR_LIB_EC
++ {"EC", ERR_LIB_EC},
++#endif
++#ifdef ERR_LIB_ECDH
++ {"ECDH", ERR_LIB_ECDH},
++#endif
++#ifdef ERR_LIB_ECDSA
++ {"ECDSA", ERR_LIB_ECDSA},
++#endif
++#ifdef ERR_LIB_ENGINE
++ {"ENGINE", ERR_LIB_ENGINE},
++#endif
++#ifdef ERR_LIB_ESS
++ {"ESS", ERR_LIB_ESS},
++#endif
++#ifdef ERR_LIB_EVP
++ {"EVP", ERR_LIB_EVP},
++#endif
++#ifdef ERR_LIB_FIPS
++ {"FIPS", ERR_LIB_FIPS},
++#endif
++#ifdef ERR_LIB_HMAC
++ {"HMAC", ERR_LIB_HMAC},
++#endif
++#ifdef ERR_LIB_HTTP
++ {"HTTP", ERR_LIB_HTTP},
++#endif
++#ifdef ERR_LIB_JPAKE
++ {"JPAKE", ERR_LIB_JPAKE},
++#endif
++#ifdef ERR_LIB_KDF
++ {"KDF", ERR_LIB_KDF},
++#endif
++#ifdef ERR_LIB_METH
++ {"METH", ERR_LIB_METH},
++#endif
++#ifdef ERR_LIB_NONE
++ {"NONE", ERR_LIB_NONE},
++#endif
++#ifdef ERR_LIB_OBJ
++ {"OBJ", ERR_LIB_OBJ},
++#endif
++#ifdef ERR_LIB_OCSP
++ {"OCSP", ERR_LIB_OCSP},
++#endif
++#ifdef ERR_LIB_OSSL_DECODER
++ {"OSSL_DECODER", ERR_LIB_OSSL_DECODER},
++#endif
++#ifdef ERR_LIB_OSSL_ENCODER
++ {"OSSL_ENCODER", ERR_LIB_OSSL_ENCODER},
++#endif
++#ifdef ERR_LIB_OSSL_STORE
++ {"OSSL_STORE", ERR_LIB_OSSL_STORE},
++#endif
++#ifdef ERR_LIB_PEM
++ {"PEM", ERR_LIB_PEM},
++#endif
++#ifdef ERR_LIB_PKCS12
++ {"PKCS12", ERR_LIB_PKCS12},
++#endif
++#ifdef ERR_LIB_PKCS7
++ {"PKCS7", ERR_LIB_PKCS7},
++#endif
++#ifdef ERR_LIB_PROP
++ {"PROP", ERR_LIB_PROP},
++#endif
++#ifdef ERR_LIB_PROV
++ {"PROV", ERR_LIB_PROV},
++#endif
++#ifdef ERR_LIB_PROXY
++ {"PROXY", ERR_LIB_PROXY},
++#endif
++#ifdef ERR_LIB_RAND
++ {"RAND", ERR_LIB_RAND},
++#endif
++#ifdef ERR_LIB_RSA
++ {"RSA", ERR_LIB_RSA},
++#endif
++#ifdef ERR_LIB_RSAREF
++ {"RSAREF", ERR_LIB_RSAREF},
++#endif
++#ifdef ERR_LIB_SM2
++ {"SM2", ERR_LIB_SM2},
++#endif
++#ifdef ERR_LIB_SSL
++ {"SSL", ERR_LIB_SSL},
++#endif
++#ifdef ERR_LIB_SSL2
++ {"SSL2", ERR_LIB_SSL2},
++#endif
++#ifdef ERR_LIB_SSL23
++ {"SSL23", ERR_LIB_SSL23},
++#endif
++#ifdef ERR_LIB_SSL3
++ {"SSL3", ERR_LIB_SSL3},
++#endif
++#ifdef ERR_LIB_SYS
++ {"SYS", ERR_LIB_SYS},
++#endif
++#ifdef ERR_LIB_TS
++ {"TS", ERR_LIB_TS},
++#endif
++#ifdef ERR_LIB_UI
++ {"UI", ERR_LIB_UI},
++#endif
++#ifdef ERR_LIB_USER
++ {"USER", ERR_LIB_USER},
++#endif
++#ifdef ERR_LIB_X509
++ {"X509", ERR_LIB_X509},
++#endif
++#ifdef ERR_LIB_X509V3
++ {"X509V3", ERR_LIB_X509V3},
++#endif
++ {NULL, 0} /* sentinel */
++};
++
++/* generated from args.reasons */
++static struct py_ssl_error_code error_codes[] = {
++ #ifdef ASN1_R_ADDING_OBJECT
++ {"ADDING_OBJECT", ERR_LIB_ASN1, ASN1_R_ADDING_OBJECT},
++ #else
++ {"ADDING_OBJECT", 13, 171},
++ #endif
++ #ifdef ASN1_R_ASN1_PARSE_ERROR
++ {"ASN1_PARSE_ERROR", ERR_LIB_ASN1, ASN1_R_ASN1_PARSE_ERROR},
++ #else
++ {"ASN1_PARSE_ERROR", 13, 203},
++ #endif
++ #ifdef ASN1_R_ASN1_SIG_PARSE_ERROR
++ {"ASN1_SIG_PARSE_ERROR", ERR_LIB_ASN1, ASN1_R_ASN1_SIG_PARSE_ERROR},
++ #else
++ {"ASN1_SIG_PARSE_ERROR", 13, 204},
++ #endif
++ #ifdef ASN1_R_AUX_ERROR
++ {"AUX_ERROR", ERR_LIB_ASN1, ASN1_R_AUX_ERROR},
++ #else
++ {"AUX_ERROR", 13, 100},
++ #endif
++ #ifdef ASN1_R_BAD_OBJECT_HEADER
++ {"BAD_OBJECT_HEADER", ERR_LIB_ASN1, ASN1_R_BAD_OBJECT_HEADER},
++ #else
++ {"BAD_OBJECT_HEADER", 13, 102},
++ #endif
++ #ifdef ASN1_R_BAD_TEMPLATE
++ {"BAD_TEMPLATE", ERR_LIB_ASN1, ASN1_R_BAD_TEMPLATE},
++ #else
++ {"BAD_TEMPLATE", 13, 230},
++ #endif
++ #ifdef ASN1_R_BMPSTRING_IS_WRONG_LENGTH
++ {"BMPSTRING_IS_WRONG_LENGTH", ERR_LIB_ASN1, ASN1_R_BMPSTRING_IS_WRONG_LENGTH},
++ #else
++ {"BMPSTRING_IS_WRONG_LENGTH", 13, 214},
++ #endif
++ #ifdef ASN1_R_BN_LIB
++ {"BN_LIB", ERR_LIB_ASN1, ASN1_R_BN_LIB},
++ #else
++ {"BN_LIB", 13, 105},
++ #endif
++ #ifdef ASN1_R_BOOLEAN_IS_WRONG_LENGTH
++ {"BOOLEAN_IS_WRONG_LENGTH", ERR_LIB_ASN1, ASN1_R_BOOLEAN_IS_WRONG_LENGTH},
++ #else
++ {"BOOLEAN_IS_WRONG_LENGTH", 13, 106},
++ #endif
++ #ifdef ASN1_R_BUFFER_TOO_SMALL
++ {"BUFFER_TOO_SMALL", ERR_LIB_ASN1, ASN1_R_BUFFER_TOO_SMALL},
++ #else
++ {"BUFFER_TOO_SMALL", 13, 107},
++ #endif
++ #ifdef ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER
++ {"CIPHER_HAS_NO_OBJECT_IDENTIFIER", ERR_LIB_ASN1, ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER},
++ #else
++ {"CIPHER_HAS_NO_OBJECT_IDENTIFIER", 13, 108},
++ #endif
++ #ifdef ASN1_R_CONTEXT_NOT_INITIALISED
++ {"CONTEXT_NOT_INITIALISED", ERR_LIB_ASN1, ASN1_R_CONTEXT_NOT_INITIALISED},
++ #else
++ {"CONTEXT_NOT_INITIALISED", 13, 217},
++ #endif
++ #ifdef ASN1_R_DATA_IS_WRONG
++ {"DATA_IS_WRONG", ERR_LIB_ASN1, ASN1_R_DATA_IS_WRONG},
++ #else
++ {"DATA_IS_WRONG", 13, 109},
++ #endif
++ #ifdef ASN1_R_DECODE_ERROR
++ {"DECODE_ERROR", ERR_LIB_ASN1, ASN1_R_DECODE_ERROR},
++ #else
++ {"DECODE_ERROR", 13, 110},
++ #endif
++ #ifdef ASN1_R_DEPTH_EXCEEDED
++ {"DEPTH_EXCEEDED", ERR_LIB_ASN1, ASN1_R_DEPTH_EXCEEDED},
++ #else
++ {"DEPTH_EXCEEDED", 13, 174},
++ #endif
++ #ifdef ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED
++ {"DIGEST_AND_KEY_TYPE_NOT_SUPPORTED", ERR_LIB_ASN1, ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED},
++ #else
++ {"DIGEST_AND_KEY_TYPE_NOT_SUPPORTED", 13, 198},
++ #endif
++ #ifdef ASN1_R_ENCODE_ERROR
++ {"ENCODE_ERROR", ERR_LIB_ASN1, ASN1_R_ENCODE_ERROR},
++ #else
++ {"ENCODE_ERROR", 13, 112},
++ #endif
++ #ifdef ASN1_R_ERROR_GETTING_TIME
++ {"ERROR_GETTING_TIME", ERR_LIB_ASN1, ASN1_R_ERROR_GETTING_TIME},
++ #else
++ {"ERROR_GETTING_TIME", 13, 173},
++ #endif
++ #ifdef ASN1_R_ERROR_LOADING_SECTION
++ {"ERROR_LOADING_SECTION", ERR_LIB_ASN1, ASN1_R_ERROR_LOADING_SECTION},
++ #else
++ {"ERROR_LOADING_SECTION", 13, 172},
++ #endif
++ #ifdef ASN1_R_ERROR_SETTING_CIPHER_PARAMS
++ {"ERROR_SETTING_CIPHER_PARAMS", ERR_LIB_ASN1, ASN1_R_ERROR_SETTING_CIPHER_PARAMS},
++ #else
++ {"ERROR_SETTING_CIPHER_PARAMS", 13, 114},
++ #endif
++ #ifdef ASN1_R_EXPECTING_AN_INTEGER
++ {"EXPECTING_AN_INTEGER", ERR_LIB_ASN1, ASN1_R_EXPECTING_AN_INTEGER},
++ #else
++ {"EXPECTING_AN_INTEGER", 13, 115},
++ #endif
++ #ifdef ASN1_R_EXPECTING_AN_OBJECT
++ {"EXPECTING_AN_OBJECT", ERR_LIB_ASN1, ASN1_R_EXPECTING_AN_OBJECT},
++ #else
++ {"EXPECTING_AN_OBJECT", 13, 116},
++ #endif
++ #ifdef ASN1_R_EXPLICIT_LENGTH_MISMATCH
++ {"EXPLICIT_LENGTH_MISMATCH", ERR_LIB_ASN1, ASN1_R_EXPLICIT_LENGTH_MISMATCH},
++ #else
++ {"EXPLICIT_LENGTH_MISMATCH", 13, 119},
++ #endif
++ #ifdef ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED
++ {"EXPLICIT_TAG_NOT_CONSTRUCTED", ERR_LIB_ASN1, ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED},
++ #else
++ {"EXPLICIT_TAG_NOT_CONSTRUCTED", 13, 120},
++ #endif
++ #ifdef ASN1_R_FIELD_MISSING
++ {"FIELD_MISSING", ERR_LIB_ASN1, ASN1_R_FIELD_MISSING},
++ #else
++ {"FIELD_MISSING", 13, 121},
++ #endif
++ #ifdef ASN1_R_FIRST_NUM_TOO_LARGE
++ {"FIRST_NUM_TOO_LARGE", ERR_LIB_ASN1, ASN1_R_FIRST_NUM_TOO_LARGE},
++ #else
++ {"FIRST_NUM_TOO_LARGE", 13, 122},
++ #endif
++ #ifdef ASN1_R_GENERALIZEDTIME_IS_TOO_SHORT
++ {"GENERALIZEDTIME_IS_TOO_SHORT", ERR_LIB_ASN1, ASN1_R_GENERALIZEDTIME_IS_TOO_SHORT},
++ #else
++ {"GENERALIZEDTIME_IS_TOO_SHORT", 13, 232},
++ #endif
++ #ifdef ASN1_R_HEADER_TOO_LONG
++ {"HEADER_TOO_LONG", ERR_LIB_ASN1, ASN1_R_HEADER_TOO_LONG},
++ #else
++ {"HEADER_TOO_LONG", 13, 123},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_BITSTRING_FORMAT
++ {"ILLEGAL_BITSTRING_FORMAT", ERR_LIB_ASN1, ASN1_R_ILLEGAL_BITSTRING_FORMAT},
++ #else
++ {"ILLEGAL_BITSTRING_FORMAT", 13, 175},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_BOOLEAN
++ {"ILLEGAL_BOOLEAN", ERR_LIB_ASN1, ASN1_R_ILLEGAL_BOOLEAN},
++ #else
++ {"ILLEGAL_BOOLEAN", 13, 176},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_CHARACTERS
++ {"ILLEGAL_CHARACTERS", ERR_LIB_ASN1, ASN1_R_ILLEGAL_CHARACTERS},
++ #else
++ {"ILLEGAL_CHARACTERS", 13, 124},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_FORMAT
++ {"ILLEGAL_FORMAT", ERR_LIB_ASN1, ASN1_R_ILLEGAL_FORMAT},
++ #else
++ {"ILLEGAL_FORMAT", 13, 177},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_HEX
++ {"ILLEGAL_HEX", ERR_LIB_ASN1, ASN1_R_ILLEGAL_HEX},
++ #else
++ {"ILLEGAL_HEX", 13, 178},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_IMPLICIT_TAG
++ {"ILLEGAL_IMPLICIT_TAG", ERR_LIB_ASN1, ASN1_R_ILLEGAL_IMPLICIT_TAG},
++ #else
++ {"ILLEGAL_IMPLICIT_TAG", 13, 179},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_INTEGER
++ {"ILLEGAL_INTEGER", ERR_LIB_ASN1, ASN1_R_ILLEGAL_INTEGER},
++ #else
++ {"ILLEGAL_INTEGER", 13, 180},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_NEGATIVE_VALUE
++ {"ILLEGAL_NEGATIVE_VALUE", ERR_LIB_ASN1, ASN1_R_ILLEGAL_NEGATIVE_VALUE},
++ #else
++ {"ILLEGAL_NEGATIVE_VALUE", 13, 226},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_NESTED_TAGGING
++ {"ILLEGAL_NESTED_TAGGING", ERR_LIB_ASN1, ASN1_R_ILLEGAL_NESTED_TAGGING},
++ #else
++ {"ILLEGAL_NESTED_TAGGING", 13, 181},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_NULL
++ {"ILLEGAL_NULL", ERR_LIB_ASN1, ASN1_R_ILLEGAL_NULL},
++ #else
++ {"ILLEGAL_NULL", 13, 125},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_NULL_VALUE
++ {"ILLEGAL_NULL_VALUE", ERR_LIB_ASN1, ASN1_R_ILLEGAL_NULL_VALUE},
++ #else
++ {"ILLEGAL_NULL_VALUE", 13, 182},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_OBJECT
++ {"ILLEGAL_OBJECT", ERR_LIB_ASN1, ASN1_R_ILLEGAL_OBJECT},
++ #else
++ {"ILLEGAL_OBJECT", 13, 183},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_OPTIONAL_ANY
++ {"ILLEGAL_OPTIONAL_ANY", ERR_LIB_ASN1, ASN1_R_ILLEGAL_OPTIONAL_ANY},
++ #else
++ {"ILLEGAL_OPTIONAL_ANY", 13, 126},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE
++ {"ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE", ERR_LIB_ASN1, ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE},
++ #else
++ {"ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE", 13, 170},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_PADDING
++ {"ILLEGAL_PADDING", ERR_LIB_ASN1, ASN1_R_ILLEGAL_PADDING},
++ #else
++ {"ILLEGAL_PADDING", 13, 221},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_TAGGED_ANY
++ {"ILLEGAL_TAGGED_ANY", ERR_LIB_ASN1, ASN1_R_ILLEGAL_TAGGED_ANY},
++ #else
++ {"ILLEGAL_TAGGED_ANY", 13, 127},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_TIME_VALUE
++ {"ILLEGAL_TIME_VALUE", ERR_LIB_ASN1, ASN1_R_ILLEGAL_TIME_VALUE},
++ #else
++ {"ILLEGAL_TIME_VALUE", 13, 184},
++ #endif
++ #ifdef ASN1_R_ILLEGAL_ZERO_CONTENT
++ {"ILLEGAL_ZERO_CONTENT", ERR_LIB_ASN1, ASN1_R_ILLEGAL_ZERO_CONTENT},
++ #else
++ {"ILLEGAL_ZERO_CONTENT", 13, 222},
++ #endif
++ #ifdef ASN1_R_INTEGER_NOT_ASCII_FORMAT
++ {"INTEGER_NOT_ASCII_FORMAT", ERR_LIB_ASN1, ASN1_R_INTEGER_NOT_ASCII_FORMAT},
++ #else
++ {"INTEGER_NOT_ASCII_FORMAT", 13, 185},
++ #endif
++ #ifdef ASN1_R_INTEGER_TOO_LARGE_FOR_LONG
++ {"INTEGER_TOO_LARGE_FOR_LONG", ERR_LIB_ASN1, ASN1_R_INTEGER_TOO_LARGE_FOR_LONG},
++ #else
++ {"INTEGER_TOO_LARGE_FOR_LONG", 13, 128},
++ #endif
++ #ifdef ASN1_R_INVALID_BIT_STRING_BITS_LEFT
++ {"INVALID_BIT_STRING_BITS_LEFT", ERR_LIB_ASN1, ASN1_R_INVALID_BIT_STRING_BITS_LEFT},
++ #else
++ {"INVALID_BIT_STRING_BITS_LEFT", 13, 220},
++ #endif
++ #ifdef ASN1_R_INVALID_BMPSTRING_LENGTH
++ {"INVALID_BMPSTRING_LENGTH", ERR_LIB_ASN1, ASN1_R_INVALID_BMPSTRING_LENGTH},
++ #else
++ {"INVALID_BMPSTRING_LENGTH", 13, 129},
++ #endif
++ #ifdef ASN1_R_INVALID_DIGIT
++ {"INVALID_DIGIT", ERR_LIB_ASN1, ASN1_R_INVALID_DIGIT},
++ #else
++ {"INVALID_DIGIT", 13, 130},
++ #endif
++ #ifdef ASN1_R_INVALID_MIME_TYPE
++ {"INVALID_MIME_TYPE", ERR_LIB_ASN1, ASN1_R_INVALID_MIME_TYPE},
++ #else
++ {"INVALID_MIME_TYPE", 13, 205},
++ #endif
++ #ifdef ASN1_R_INVALID_MODIFIER
++ {"INVALID_MODIFIER", ERR_LIB_ASN1, ASN1_R_INVALID_MODIFIER},
++ #else
++ {"INVALID_MODIFIER", 13, 186},
++ #endif
++ #ifdef ASN1_R_INVALID_NUMBER
++ {"INVALID_NUMBER", ERR_LIB_ASN1, ASN1_R_INVALID_NUMBER},
++ #else
++ {"INVALID_NUMBER", 13, 187},
++ #endif
++ #ifdef ASN1_R_INVALID_OBJECT_ENCODING
++ {"INVALID_OBJECT_ENCODING", ERR_LIB_ASN1, ASN1_R_INVALID_OBJECT_ENCODING},
++ #else
++ {"INVALID_OBJECT_ENCODING", 13, 216},
++ #endif
++ #ifdef ASN1_R_INVALID_SCRYPT_PARAMETERS
++ {"INVALID_SCRYPT_PARAMETERS", ERR_LIB_ASN1, ASN1_R_INVALID_SCRYPT_PARAMETERS},
++ #else
++ {"INVALID_SCRYPT_PARAMETERS", 13, 227},
++ #endif
++ #ifdef ASN1_R_INVALID_SEPARATOR
++ {"INVALID_SEPARATOR", ERR_LIB_ASN1, ASN1_R_INVALID_SEPARATOR},
++ #else
++ {"INVALID_SEPARATOR", 13, 131},
++ #endif
++ #ifdef ASN1_R_INVALID_STRING_TABLE_VALUE
++ {"INVALID_STRING_TABLE_VALUE", ERR_LIB_ASN1, ASN1_R_INVALID_STRING_TABLE_VALUE},
++ #else
++ {"INVALID_STRING_TABLE_VALUE", 13, 218},
++ #endif
++ #ifdef ASN1_R_INVALID_UNIVERSALSTRING_LENGTH
++ {"INVALID_UNIVERSALSTRING_LENGTH", ERR_LIB_ASN1, ASN1_R_INVALID_UNIVERSALSTRING_LENGTH},
++ #else
++ {"INVALID_UNIVERSALSTRING_LENGTH", 13, 133},
++ #endif
++ #ifdef ASN1_R_INVALID_UTF8STRING
++ {"INVALID_UTF8STRING", ERR_LIB_ASN1, ASN1_R_INVALID_UTF8STRING},
++ #else
++ {"INVALID_UTF8STRING", 13, 134},
++ #endif
++ #ifdef ASN1_R_INVALID_VALUE
++ {"INVALID_VALUE", ERR_LIB_ASN1, ASN1_R_INVALID_VALUE},
++ #else
++ {"INVALID_VALUE", 13, 219},
++ #endif
++ #ifdef ASN1_R_LENGTH_TOO_LONG
++ {"LENGTH_TOO_LONG", ERR_LIB_ASN1, ASN1_R_LENGTH_TOO_LONG},
++ #else
++ {"LENGTH_TOO_LONG", 13, 231},
++ #endif
++ #ifdef ASN1_R_LIST_ERROR
++ {"LIST_ERROR", ERR_LIB_ASN1, ASN1_R_LIST_ERROR},
++ #else
++ {"LIST_ERROR", 13, 188},
++ #endif
++ #ifdef ASN1_R_MIME_NO_CONTENT_TYPE
++ {"MIME_NO_CONTENT_TYPE", ERR_LIB_ASN1, ASN1_R_MIME_NO_CONTENT_TYPE},
++ #else
++ {"MIME_NO_CONTENT_TYPE", 13, 206},
++ #endif
++ #ifdef ASN1_R_MIME_PARSE_ERROR
++ {"MIME_PARSE_ERROR", ERR_LIB_ASN1, ASN1_R_MIME_PARSE_ERROR},
++ #else
++ {"MIME_PARSE_ERROR", 13, 207},
++ #endif
++ #ifdef ASN1_R_MIME_SIG_PARSE_ERROR
++ {"MIME_SIG_PARSE_ERROR", ERR_LIB_ASN1, ASN1_R_MIME_SIG_PARSE_ERROR},
++ #else
++ {"MIME_SIG_PARSE_ERROR", 13, 208},
++ #endif
++ #ifdef ASN1_R_MISSING_EOC
++ {"MISSING_EOC", ERR_LIB_ASN1, ASN1_R_MISSING_EOC},
++ #else
++ {"MISSING_EOC", 13, 137},
++ #endif
++ #ifdef ASN1_R_MISSING_SECOND_NUMBER
++ {"MISSING_SECOND_NUMBER", ERR_LIB_ASN1, ASN1_R_MISSING_SECOND_NUMBER},
++ #else
++ {"MISSING_SECOND_NUMBER", 13, 138},
++ #endif
++ #ifdef ASN1_R_MISSING_VALUE
++ {"MISSING_VALUE", ERR_LIB_ASN1, ASN1_R_MISSING_VALUE},
++ #else
++ {"MISSING_VALUE", 13, 189},
++ #endif
++ #ifdef ASN1_R_MSTRING_NOT_UNIVERSAL
++ {"MSTRING_NOT_UNIVERSAL", ERR_LIB_ASN1, ASN1_R_MSTRING_NOT_UNIVERSAL},
++ #else
++ {"MSTRING_NOT_UNIVERSAL", 13, 139},
++ #endif
++ #ifdef ASN1_R_MSTRING_WRONG_TAG
++ {"MSTRING_WRONG_TAG", ERR_LIB_ASN1, ASN1_R_MSTRING_WRONG_TAG},
++ #else
++ {"MSTRING_WRONG_TAG", 13, 140},
++ #endif
++ #ifdef ASN1_R_NESTED_ASN1_STRING
++ {"NESTED_ASN1_STRING", ERR_LIB_ASN1, ASN1_R_NESTED_ASN1_STRING},
++ #else
++ {"NESTED_ASN1_STRING", 13, 197},
++ #endif
++ #ifdef ASN1_R_NESTED_TOO_DEEP
++ {"NESTED_TOO_DEEP", ERR_LIB_ASN1, ASN1_R_NESTED_TOO_DEEP},
++ #else
++ {"NESTED_TOO_DEEP", 13, 201},
++ #endif
++ #ifdef ASN1_R_NON_HEX_CHARACTERS
++ {"NON_HEX_CHARACTERS", ERR_LIB_ASN1, ASN1_R_NON_HEX_CHARACTERS},
++ #else
++ {"NON_HEX_CHARACTERS", 13, 141},
++ #endif
++ #ifdef ASN1_R_NOT_ASCII_FORMAT
++ {"NOT_ASCII_FORMAT", ERR_LIB_ASN1, ASN1_R_NOT_ASCII_FORMAT},
++ #else
++ {"NOT_ASCII_FORMAT", 13, 190},
++ #endif
++ #ifdef ASN1_R_NOT_ENOUGH_DATA
++ {"NOT_ENOUGH_DATA", ERR_LIB_ASN1, ASN1_R_NOT_ENOUGH_DATA},
++ #else
++ {"NOT_ENOUGH_DATA", 13, 142},
++ #endif
++ #ifdef ASN1_R_NO_CONTENT_TYPE
++ {"NO_CONTENT_TYPE", ERR_LIB_ASN1, ASN1_R_NO_CONTENT_TYPE},
++ #else
++ {"NO_CONTENT_TYPE", 13, 209},
++ #endif
++ #ifdef ASN1_R_NO_MATCHING_CHOICE_TYPE
++ {"NO_MATCHING_CHOICE_TYPE", ERR_LIB_ASN1, ASN1_R_NO_MATCHING_CHOICE_TYPE},
++ #else
++ {"NO_MATCHING_CHOICE_TYPE", 13, 143},
++ #endif
++ #ifdef ASN1_R_NO_MULTIPART_BODY_FAILURE
++ {"NO_MULTIPART_BODY_FAILURE", ERR_LIB_ASN1, ASN1_R_NO_MULTIPART_BODY_FAILURE},
++ #else
++ {"NO_MULTIPART_BODY_FAILURE", 13, 210},
++ #endif
++ #ifdef ASN1_R_NO_MULTIPART_BOUNDARY
++ {"NO_MULTIPART_BOUNDARY", ERR_LIB_ASN1, ASN1_R_NO_MULTIPART_BOUNDARY},
++ #else
++ {"NO_MULTIPART_BOUNDARY", 13, 211},
++ #endif
++ #ifdef ASN1_R_NO_SIG_CONTENT_TYPE
++ {"NO_SIG_CONTENT_TYPE", ERR_LIB_ASN1, ASN1_R_NO_SIG_CONTENT_TYPE},
++ #else
++ {"NO_SIG_CONTENT_TYPE", 13, 212},
++ #endif
++ #ifdef ASN1_R_NULL_IS_WRONG_LENGTH
++ {"NULL_IS_WRONG_LENGTH", ERR_LIB_ASN1, ASN1_R_NULL_IS_WRONG_LENGTH},
++ #else
++ {"NULL_IS_WRONG_LENGTH", 13, 144},
++ #endif
++ #ifdef ASN1_R_OBJECT_NOT_ASCII_FORMAT
++ {"OBJECT_NOT_ASCII_FORMAT", ERR_LIB_ASN1, ASN1_R_OBJECT_NOT_ASCII_FORMAT},
++ #else
++ {"OBJECT_NOT_ASCII_FORMAT", 13, 191},
++ #endif
++ #ifdef ASN1_R_ODD_NUMBER_OF_CHARS
++ {"ODD_NUMBER_OF_CHARS", ERR_LIB_ASN1, ASN1_R_ODD_NUMBER_OF_CHARS},
++ #else
++ {"ODD_NUMBER_OF_CHARS", 13, 145},
++ #endif
++ #ifdef ASN1_R_SECOND_NUMBER_TOO_LARGE
++ {"SECOND_NUMBER_TOO_LARGE", ERR_LIB_ASN1, ASN1_R_SECOND_NUMBER_TOO_LARGE},
++ #else
++ {"SECOND_NUMBER_TOO_LARGE", 13, 147},
++ #endif
++ #ifdef ASN1_R_SEQUENCE_LENGTH_MISMATCH
++ {"SEQUENCE_LENGTH_MISMATCH", ERR_LIB_ASN1, ASN1_R_SEQUENCE_LENGTH_MISMATCH},
++ #else
++ {"SEQUENCE_LENGTH_MISMATCH", 13, 148},
++ #endif
++ #ifdef ASN1_R_SEQUENCE_NOT_CONSTRUCTED
++ {"SEQUENCE_NOT_CONSTRUCTED", ERR_LIB_ASN1, ASN1_R_SEQUENCE_NOT_CONSTRUCTED},
++ #else
++ {"SEQUENCE_NOT_CONSTRUCTED", 13, 149},
++ #endif
++ #ifdef ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG
++ {"SEQUENCE_OR_SET_NEEDS_CONFIG", ERR_LIB_ASN1, ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG},
++ #else
++ {"SEQUENCE_OR_SET_NEEDS_CONFIG", 13, 192},
++ #endif
++ #ifdef ASN1_R_SHORT_LINE
++ {"SHORT_LINE", ERR_LIB_ASN1, ASN1_R_SHORT_LINE},
++ #else
++ {"SHORT_LINE", 13, 150},
++ #endif
++ #ifdef ASN1_R_SIG_INVALID_MIME_TYPE
++ {"SIG_INVALID_MIME_TYPE", ERR_LIB_ASN1, ASN1_R_SIG_INVALID_MIME_TYPE},
++ #else
++ {"SIG_INVALID_MIME_TYPE", 13, 213},
++ #endif
++ #ifdef ASN1_R_STREAMING_NOT_SUPPORTED
++ {"STREAMING_NOT_SUPPORTED", ERR_LIB_ASN1, ASN1_R_STREAMING_NOT_SUPPORTED},
++ #else
++ {"STREAMING_NOT_SUPPORTED", 13, 202},
++ #endif
++ #ifdef ASN1_R_STRING_TOO_LONG
++ {"STRING_TOO_LONG", ERR_LIB_ASN1, ASN1_R_STRING_TOO_LONG},
++ #else
++ {"STRING_TOO_LONG", 13, 151},
++ #endif
++ #ifdef ASN1_R_STRING_TOO_SHORT
++ {"STRING_TOO_SHORT", ERR_LIB_ASN1, ASN1_R_STRING_TOO_SHORT},
++ #else
++ {"STRING_TOO_SHORT", 13, 152},
++ #endif
++ #ifdef ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD
++ {"THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD", ERR_LIB_ASN1, ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD},
++ #else
++ {"THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD", 13, 154},
++ #endif
++ #ifdef ASN1_R_TIME_NOT_ASCII_FORMAT
++ {"TIME_NOT_ASCII_FORMAT", ERR_LIB_ASN1, ASN1_R_TIME_NOT_ASCII_FORMAT},
++ #else
++ {"TIME_NOT_ASCII_FORMAT", 13, 193},
++ #endif
++ #ifdef ASN1_R_TOO_LARGE
++ {"TOO_LARGE", ERR_LIB_ASN1, ASN1_R_TOO_LARGE},
++ #else
++ {"TOO_LARGE", 13, 223},
++ #endif
++ #ifdef ASN1_R_TOO_LONG
++ {"TOO_LONG", ERR_LIB_ASN1, ASN1_R_TOO_LONG},
++ #else
++ {"TOO_LONG", 13, 155},
++ #endif
++ #ifdef ASN1_R_TOO_SMALL
++ {"TOO_SMALL", ERR_LIB_ASN1, ASN1_R_TOO_SMALL},
++ #else
++ {"TOO_SMALL", 13, 224},
++ #endif
++ #ifdef ASN1_R_TYPE_NOT_CONSTRUCTED
++ {"TYPE_NOT_CONSTRUCTED", ERR_LIB_ASN1, ASN1_R_TYPE_NOT_CONSTRUCTED},
++ #else
++ {"TYPE_NOT_CONSTRUCTED", 13, 156},
++ #endif
++ #ifdef ASN1_R_TYPE_NOT_PRIMITIVE
++ {"TYPE_NOT_PRIMITIVE", ERR_LIB_ASN1, ASN1_R_TYPE_NOT_PRIMITIVE},
++ #else
++ {"TYPE_NOT_PRIMITIVE", 13, 195},
++ #endif
++ #ifdef ASN1_R_UNEXPECTED_EOC
++ {"UNEXPECTED_EOC", ERR_LIB_ASN1, ASN1_R_UNEXPECTED_EOC},
++ #else
++ {"UNEXPECTED_EOC", 13, 159},
++ #endif
++ #ifdef ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH
++ {"UNIVERSALSTRING_IS_WRONG_LENGTH", ERR_LIB_ASN1, ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH},
++ #else
++ {"UNIVERSALSTRING_IS_WRONG_LENGTH", 13, 215},
++ #endif
++ #ifdef ASN1_R_UNKNOWN_DIGEST
++ {"UNKNOWN_DIGEST", ERR_LIB_ASN1, ASN1_R_UNKNOWN_DIGEST},
++ #else
++ {"UNKNOWN_DIGEST", 13, 229},
++ #endif
++ #ifdef ASN1_R_UNKNOWN_FORMAT
++ {"UNKNOWN_FORMAT", ERR_LIB_ASN1, ASN1_R_UNKNOWN_FORMAT},
++ #else
++ {"UNKNOWN_FORMAT", 13, 160},
++ #endif
++ #ifdef ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM
++ {"UNKNOWN_MESSAGE_DIGEST_ALGORITHM", ERR_LIB_ASN1, ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM},
++ #else
++ {"UNKNOWN_MESSAGE_DIGEST_ALGORITHM", 13, 161},
++ #endif
++ #ifdef ASN1_R_UNKNOWN_OBJECT_TYPE
++ {"UNKNOWN_OBJECT_TYPE", ERR_LIB_ASN1, ASN1_R_UNKNOWN_OBJECT_TYPE},
++ #else
++ {"UNKNOWN_OBJECT_TYPE", 13, 162},
++ #endif
++ #ifdef ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE
++ {"UNKNOWN_PUBLIC_KEY_TYPE", ERR_LIB_ASN1, ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE},
++ #else
++ {"UNKNOWN_PUBLIC_KEY_TYPE", 13, 163},
++ #endif
++ #ifdef ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM
++ {"UNKNOWN_SIGNATURE_ALGORITHM", ERR_LIB_ASN1, ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM},
++ #else
++ {"UNKNOWN_SIGNATURE_ALGORITHM", 13, 199},
++ #endif
++ #ifdef ASN1_R_UNKNOWN_TAG
++ {"UNKNOWN_TAG", ERR_LIB_ASN1, ASN1_R_UNKNOWN_TAG},
++ #else
++ {"UNKNOWN_TAG", 13, 194},
++ #endif
++ #ifdef ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE
++ {"UNSUPPORTED_ANY_DEFINED_BY_TYPE", ERR_LIB_ASN1, ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE},
++ #else
++ {"UNSUPPORTED_ANY_DEFINED_BY_TYPE", 13, 164},
++ #endif
++ #ifdef ASN1_R_UNSUPPORTED_CIPHER
++ {"UNSUPPORTED_CIPHER", ERR_LIB_ASN1, ASN1_R_UNSUPPORTED_CIPHER},
++ #else
++ {"UNSUPPORTED_CIPHER", 13, 228},
++ #endif
++ #ifdef ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE
++ {"UNSUPPORTED_PUBLIC_KEY_TYPE", ERR_LIB_ASN1, ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE},
++ #else
++ {"UNSUPPORTED_PUBLIC_KEY_TYPE", 13, 167},
++ #endif
++ #ifdef ASN1_R_UNSUPPORTED_TYPE
++ {"UNSUPPORTED_TYPE", ERR_LIB_ASN1, ASN1_R_UNSUPPORTED_TYPE},
++ #else
++ {"UNSUPPORTED_TYPE", 13, 196},
++ #endif
++ #ifdef ASN1_R_UTCTIME_IS_TOO_SHORT
++ {"UTCTIME_IS_TOO_SHORT", ERR_LIB_ASN1, ASN1_R_UTCTIME_IS_TOO_SHORT},
++ #else
++ {"UTCTIME_IS_TOO_SHORT", 13, 233},
++ #endif
++ #ifdef ASN1_R_WRONG_INTEGER_TYPE
++ {"WRONG_INTEGER_TYPE", ERR_LIB_ASN1, ASN1_R_WRONG_INTEGER_TYPE},
++ #else
++ {"WRONG_INTEGER_TYPE", 13, 225},
++ #endif
++ #ifdef ASN1_R_WRONG_PUBLIC_KEY_TYPE
++ {"WRONG_PUBLIC_KEY_TYPE", ERR_LIB_ASN1, ASN1_R_WRONG_PUBLIC_KEY_TYPE},
++ #else
++ {"WRONG_PUBLIC_KEY_TYPE", 13, 200},
++ #endif
++ #ifdef ASN1_R_WRONG_TAG
++ {"WRONG_TAG", ERR_LIB_ASN1, ASN1_R_WRONG_TAG},
++ #else
++ {"WRONG_TAG", 13, 168},
++ #endif
++ #ifdef ASYNC_R_FAILED_TO_SET_POOL
++ {"FAILED_TO_SET_POOL", ERR_LIB_ASYNC, ASYNC_R_FAILED_TO_SET_POOL},
++ #else
++ {"FAILED_TO_SET_POOL", 51, 101},
++ #endif
++ #ifdef ASYNC_R_FAILED_TO_SWAP_CONTEXT
++ {"FAILED_TO_SWAP_CONTEXT", ERR_LIB_ASYNC, ASYNC_R_FAILED_TO_SWAP_CONTEXT},
++ #else
++ {"FAILED_TO_SWAP_CONTEXT", 51, 102},
++ #endif
++ #ifdef ASYNC_R_INIT_FAILED
++ {"INIT_FAILED", ERR_LIB_ASYNC, ASYNC_R_INIT_FAILED},
++ #else
++ {"INIT_FAILED", 51, 105},
++ #endif
++ #ifdef ASYNC_R_INVALID_POOL_SIZE
++ {"INVALID_POOL_SIZE", ERR_LIB_ASYNC, ASYNC_R_INVALID_POOL_SIZE},
++ #else
++ {"INVALID_POOL_SIZE", 51, 103},
++ #endif
++ #ifdef BIO_R_ACCEPT_ERROR
++ {"ACCEPT_ERROR", ERR_LIB_BIO, BIO_R_ACCEPT_ERROR},
++ #else
++ {"ACCEPT_ERROR", 32, 100},
++ #endif
++ #ifdef BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET
++ {"ADDRINFO_ADDR_IS_NOT_AF_INET", ERR_LIB_BIO, BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET},
++ #else
++ {"ADDRINFO_ADDR_IS_NOT_AF_INET", 32, 141},
++ #endif
++ #ifdef BIO_R_AMBIGUOUS_HOST_OR_SERVICE
++ {"AMBIGUOUS_HOST_OR_SERVICE", ERR_LIB_BIO, BIO_R_AMBIGUOUS_HOST_OR_SERVICE},
++ #else
++ {"AMBIGUOUS_HOST_OR_SERVICE", 32, 129},
++ #endif
++ #ifdef BIO_R_BAD_FOPEN_MODE
++ {"BAD_FOPEN_MODE", ERR_LIB_BIO, BIO_R_BAD_FOPEN_MODE},
++ #else
++ {"BAD_FOPEN_MODE", 32, 101},
++ #endif
++ #ifdef BIO_R_BROKEN_PIPE
++ {"BROKEN_PIPE", ERR_LIB_BIO, BIO_R_BROKEN_PIPE},
++ #else
++ {"BROKEN_PIPE", 32, 124},
++ #endif
++ #ifdef BIO_R_CONNECT_ERROR
++ {"CONNECT_ERROR", ERR_LIB_BIO, BIO_R_CONNECT_ERROR},
++ #else
++ {"CONNECT_ERROR", 32, 103},
++ #endif
++ #ifdef BIO_R_CONNECT_TIMEOUT
++ {"CONNECT_TIMEOUT", ERR_LIB_BIO, BIO_R_CONNECT_TIMEOUT},
++ #else
++ {"CONNECT_TIMEOUT", 32, 147},
++ #endif
++ #ifdef BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET
++ {"GETHOSTBYNAME_ADDR_IS_NOT_AF_INET", ERR_LIB_BIO, BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET},
++ #else
++ {"GETHOSTBYNAME_ADDR_IS_NOT_AF_INET", 32, 107},
++ #endif
++ #ifdef BIO_R_GETSOCKNAME_ERROR
++ {"GETSOCKNAME_ERROR", ERR_LIB_BIO, BIO_R_GETSOCKNAME_ERROR},
++ #else
++ {"GETSOCKNAME_ERROR", 32, 132},
++ #endif
++ #ifdef BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS
++ {"GETSOCKNAME_TRUNCATED_ADDRESS", ERR_LIB_BIO, BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS},
++ #else
++ {"GETSOCKNAME_TRUNCATED_ADDRESS", 32, 133},
++ #endif
++ #ifdef BIO_R_GETTING_SOCKTYPE
++ {"GETTING_SOCKTYPE", ERR_LIB_BIO, BIO_R_GETTING_SOCKTYPE},
++ #else
++ {"GETTING_SOCKTYPE", 32, 134},
++ #endif
++ #ifdef BIO_R_INVALID_ARGUMENT
++ {"INVALID_ARGUMENT", ERR_LIB_BIO, BIO_R_INVALID_ARGUMENT},
++ #else
++ {"INVALID_ARGUMENT", 32, 125},
++ #endif
++ #ifdef BIO_R_INVALID_SOCKET
++ {"INVALID_SOCKET", ERR_LIB_BIO, BIO_R_INVALID_SOCKET},
++ #else
++ {"INVALID_SOCKET", 32, 135},
++ #endif
++ #ifdef BIO_R_IN_USE
++ {"IN_USE", ERR_LIB_BIO, BIO_R_IN_USE},
++ #else
++ {"IN_USE", 32, 123},
++ #endif
++ #ifdef BIO_R_LENGTH_TOO_LONG
++ {"LENGTH_TOO_LONG", ERR_LIB_BIO, BIO_R_LENGTH_TOO_LONG},
++ #else
++ {"LENGTH_TOO_LONG", 32, 102},
++ #endif
++ #ifdef BIO_R_LISTEN_V6_ONLY
++ {"LISTEN_V6_ONLY", ERR_LIB_BIO, BIO_R_LISTEN_V6_ONLY},
++ #else
++ {"LISTEN_V6_ONLY", 32, 136},
++ #endif
++ #ifdef BIO_R_LOCAL_ADDR_NOT_AVAILABLE
++ {"LOCAL_ADDR_NOT_AVAILABLE", ERR_LIB_BIO, BIO_R_LOCAL_ADDR_NOT_AVAILABLE},
++ #else
++ {"LOCAL_ADDR_NOT_AVAILABLE", 32, 111},
++ #endif
++ #ifdef BIO_R_LOOKUP_RETURNED_NOTHING
++ {"LOOKUP_RETURNED_NOTHING", ERR_LIB_BIO, BIO_R_LOOKUP_RETURNED_NOTHING},
++ #else
++ {"LOOKUP_RETURNED_NOTHING", 32, 142},
++ #endif
++ #ifdef BIO_R_MALFORMED_HOST_OR_SERVICE
++ {"MALFORMED_HOST_OR_SERVICE", ERR_LIB_BIO, BIO_R_MALFORMED_HOST_OR_SERVICE},
++ #else
++ {"MALFORMED_HOST_OR_SERVICE", 32, 130},
++ #endif
++ #ifdef BIO_R_NBIO_CONNECT_ERROR
++ {"NBIO_CONNECT_ERROR", ERR_LIB_BIO, BIO_R_NBIO_CONNECT_ERROR},
++ #else
++ {"NBIO_CONNECT_ERROR", 32, 110},
++ #endif
++ #ifdef BIO_R_NON_FATAL
++ {"NON_FATAL", ERR_LIB_BIO, BIO_R_NON_FATAL},
++ #else
++ {"NON_FATAL", 32, 112},
++ #endif
++ #ifdef BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED
++ {"NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED", ERR_LIB_BIO, BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED},
++ #else
++ {"NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED", 32, 143},
++ #endif
++ #ifdef BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED
++ {"NO_HOSTNAME_OR_SERVICE_SPECIFIED", ERR_LIB_BIO, BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED},
++ #else
++ {"NO_HOSTNAME_OR_SERVICE_SPECIFIED", 32, 144},
++ #endif
++ #ifdef BIO_R_NO_PORT_DEFINED
++ {"NO_PORT_DEFINED", ERR_LIB_BIO, BIO_R_NO_PORT_DEFINED},
++ #else
++ {"NO_PORT_DEFINED", 32, 113},
++ #endif
++ #ifdef BIO_R_NO_SUCH_FILE
++ {"NO_SUCH_FILE", ERR_LIB_BIO, BIO_R_NO_SUCH_FILE},
++ #else
++ {"NO_SUCH_FILE", 32, 128},
++ #endif
++ #ifdef BIO_R_PEER_ADDR_NOT_AVAILABLE
++ {"PEER_ADDR_NOT_AVAILABLE", ERR_LIB_BIO, BIO_R_PEER_ADDR_NOT_AVAILABLE},
++ #else
++ {"PEER_ADDR_NOT_AVAILABLE", 32, 114},
++ #endif
++ #ifdef BIO_R_PORT_MISMATCH
++ {"PORT_MISMATCH", ERR_LIB_BIO, BIO_R_PORT_MISMATCH},
++ #else
++ {"PORT_MISMATCH", 32, 150},
++ #endif
++ #ifdef BIO_R_TFO_DISABLED
++ {"TFO_DISABLED", ERR_LIB_BIO, BIO_R_TFO_DISABLED},
++ #else
++ {"TFO_DISABLED", 32, 106},
++ #endif
++ #ifdef BIO_R_TFO_NO_KERNEL_SUPPORT
++ {"TFO_NO_KERNEL_SUPPORT", ERR_LIB_BIO, BIO_R_TFO_NO_KERNEL_SUPPORT},
++ #else
++ {"TFO_NO_KERNEL_SUPPORT", 32, 108},
++ #endif
++ #ifdef BIO_R_TRANSFER_ERROR
++ {"TRANSFER_ERROR", ERR_LIB_BIO, BIO_R_TRANSFER_ERROR},
++ #else
++ {"TRANSFER_ERROR", 32, 104},
++ #endif
++ #ifdef BIO_R_TRANSFER_TIMEOUT
++ {"TRANSFER_TIMEOUT", ERR_LIB_BIO, BIO_R_TRANSFER_TIMEOUT},
++ #else
++ {"TRANSFER_TIMEOUT", 32, 105},
++ #endif
++ #ifdef BIO_R_UNABLE_TO_BIND_SOCKET
++ {"UNABLE_TO_BIND_SOCKET", ERR_LIB_BIO, BIO_R_UNABLE_TO_BIND_SOCKET},
++ #else
++ {"UNABLE_TO_BIND_SOCKET", 32, 117},
++ #endif
++ #ifdef BIO_R_UNABLE_TO_CREATE_SOCKET
++ {"UNABLE_TO_CREATE_SOCKET", ERR_LIB_BIO, BIO_R_UNABLE_TO_CREATE_SOCKET},
++ #else
++ {"UNABLE_TO_CREATE_SOCKET", 32, 118},
++ #endif
++ #ifdef BIO_R_UNABLE_TO_KEEPALIVE
++ {"UNABLE_TO_KEEPALIVE", ERR_LIB_BIO, BIO_R_UNABLE_TO_KEEPALIVE},
++ #else
++ {"UNABLE_TO_KEEPALIVE", 32, 137},
++ #endif
++ #ifdef BIO_R_UNABLE_TO_LISTEN_SOCKET
++ {"UNABLE_TO_LISTEN_SOCKET", ERR_LIB_BIO, BIO_R_UNABLE_TO_LISTEN_SOCKET},
++ #else
++ {"UNABLE_TO_LISTEN_SOCKET", 32, 119},
++ #endif
++ #ifdef BIO_R_UNABLE_TO_NODELAY
++ {"UNABLE_TO_NODELAY", ERR_LIB_BIO, BIO_R_UNABLE_TO_NODELAY},
++ #else
++ {"UNABLE_TO_NODELAY", 32, 138},
++ #endif
++ #ifdef BIO_R_UNABLE_TO_REUSEADDR
++ {"UNABLE_TO_REUSEADDR", ERR_LIB_BIO, BIO_R_UNABLE_TO_REUSEADDR},
++ #else
++ {"UNABLE_TO_REUSEADDR", 32, 139},
++ #endif
++ #ifdef BIO_R_UNABLE_TO_TFO
++ {"UNABLE_TO_TFO", ERR_LIB_BIO, BIO_R_UNABLE_TO_TFO},
++ #else
++ {"UNABLE_TO_TFO", 32, 109},
++ #endif
++ #ifdef BIO_R_UNAVAILABLE_IP_FAMILY
++ {"UNAVAILABLE_IP_FAMILY", ERR_LIB_BIO, BIO_R_UNAVAILABLE_IP_FAMILY},
++ #else
++ {"UNAVAILABLE_IP_FAMILY", 32, 145},
++ #endif
++ #ifdef BIO_R_UNINITIALIZED
++ {"UNINITIALIZED", ERR_LIB_BIO, BIO_R_UNINITIALIZED},
++ #else
++ {"UNINITIALIZED", 32, 120},
++ #endif
++ #ifdef BIO_R_UNKNOWN_INFO_TYPE
++ {"UNKNOWN_INFO_TYPE", ERR_LIB_BIO, BIO_R_UNKNOWN_INFO_TYPE},
++ #else
++ {"UNKNOWN_INFO_TYPE", 32, 140},
++ #endif
++ #ifdef BIO_R_UNSUPPORTED_IP_FAMILY
++ {"UNSUPPORTED_IP_FAMILY", ERR_LIB_BIO, BIO_R_UNSUPPORTED_IP_FAMILY},
++ #else
++ {"UNSUPPORTED_IP_FAMILY", 32, 146},
++ #endif
++ #ifdef BIO_R_UNSUPPORTED_METHOD
++ {"UNSUPPORTED_METHOD", ERR_LIB_BIO, BIO_R_UNSUPPORTED_METHOD},
++ #else
++ {"UNSUPPORTED_METHOD", 32, 121},
++ #endif
++ #ifdef BIO_R_UNSUPPORTED_PROTOCOL_FAMILY
++ {"UNSUPPORTED_PROTOCOL_FAMILY", ERR_LIB_BIO, BIO_R_UNSUPPORTED_PROTOCOL_FAMILY},
++ #else
++ {"UNSUPPORTED_PROTOCOL_FAMILY", 32, 131},
++ #endif
++ #ifdef BIO_R_WRITE_TO_READ_ONLY_BIO
++ {"WRITE_TO_READ_ONLY_BIO", ERR_LIB_BIO, BIO_R_WRITE_TO_READ_ONLY_BIO},
++ #else
++ {"WRITE_TO_READ_ONLY_BIO", 32, 126},
++ #endif
++ #ifdef BIO_R_WSASTARTUP
++ {"WSASTARTUP", ERR_LIB_BIO, BIO_R_WSASTARTUP},
++ #else
++ {"WSASTARTUP", 32, 122},
++ #endif
++ #ifdef BN_R_ARG2_LT_ARG3
++ {"ARG2_LT_ARG3", ERR_LIB_BN, BN_R_ARG2_LT_ARG3},
++ #else
++ {"ARG2_LT_ARG3", 3, 100},
++ #endif
++ #ifdef BN_R_BAD_RECIPROCAL
++ {"BAD_RECIPROCAL", ERR_LIB_BN, BN_R_BAD_RECIPROCAL},
++ #else
++ {"BAD_RECIPROCAL", 3, 101},
++ #endif
++ #ifdef BN_R_BIGNUM_TOO_LONG
++ {"BIGNUM_TOO_LONG", ERR_LIB_BN, BN_R_BIGNUM_TOO_LONG},
++ #else
++ {"BIGNUM_TOO_LONG", 3, 114},
++ #endif
++ #ifdef BN_R_BITS_TOO_SMALL
++ {"BITS_TOO_SMALL", ERR_LIB_BN, BN_R_BITS_TOO_SMALL},
++ #else
++ {"BITS_TOO_SMALL", 3, 118},
++ #endif
++ #ifdef BN_R_CALLED_WITH_EVEN_MODULUS
++ {"CALLED_WITH_EVEN_MODULUS", ERR_LIB_BN, BN_R_CALLED_WITH_EVEN_MODULUS},
++ #else
++ {"CALLED_WITH_EVEN_MODULUS", 3, 102},
++ #endif
++ #ifdef BN_R_DIV_BY_ZERO
++ {"DIV_BY_ZERO", ERR_LIB_BN, BN_R_DIV_BY_ZERO},
++ #else
++ {"DIV_BY_ZERO", 3, 103},
++ #endif
++ #ifdef BN_R_ENCODING_ERROR
++ {"ENCODING_ERROR", ERR_LIB_BN, BN_R_ENCODING_ERROR},
++ #else
++ {"ENCODING_ERROR", 3, 104},
++ #endif
++ #ifdef BN_R_EXPAND_ON_STATIC_BIGNUM_DATA
++ {"EXPAND_ON_STATIC_BIGNUM_DATA", ERR_LIB_BN, BN_R_EXPAND_ON_STATIC_BIGNUM_DATA},
++ #else
++ {"EXPAND_ON_STATIC_BIGNUM_DATA", 3, 105},
++ #endif
++ #ifdef BN_R_INPUT_NOT_REDUCED
++ {"INPUT_NOT_REDUCED", ERR_LIB_BN, BN_R_INPUT_NOT_REDUCED},
++ #else
++ {"INPUT_NOT_REDUCED", 3, 110},
++ #endif
++ #ifdef BN_R_INVALID_LENGTH
++ {"INVALID_LENGTH", ERR_LIB_BN, BN_R_INVALID_LENGTH},
++ #else
++ {"INVALID_LENGTH", 3, 106},
++ #endif
++ #ifdef BN_R_INVALID_RANGE
++ {"INVALID_RANGE", ERR_LIB_BN, BN_R_INVALID_RANGE},
++ #else
++ {"INVALID_RANGE", 3, 115},
++ #endif
++ #ifdef BN_R_INVALID_SHIFT
++ {"INVALID_SHIFT", ERR_LIB_BN, BN_R_INVALID_SHIFT},
++ #else
++ {"INVALID_SHIFT", 3, 119},
++ #endif
++ #ifdef BN_R_NOT_A_SQUARE
++ {"NOT_A_SQUARE", ERR_LIB_BN, BN_R_NOT_A_SQUARE},
++ #else
++ {"NOT_A_SQUARE", 3, 111},
++ #endif
++ #ifdef BN_R_NOT_INITIALIZED
++ {"NOT_INITIALIZED", ERR_LIB_BN, BN_R_NOT_INITIALIZED},
++ #else
++ {"NOT_INITIALIZED", 3, 107},
++ #endif
++ #ifdef BN_R_NO_INVERSE
++ {"NO_INVERSE", ERR_LIB_BN, BN_R_NO_INVERSE},
++ #else
++ {"NO_INVERSE", 3, 108},
++ #endif
++ #ifdef BN_R_NO_PRIME_CANDIDATE
++ {"NO_PRIME_CANDIDATE", ERR_LIB_BN, BN_R_NO_PRIME_CANDIDATE},
++ #else
++ {"NO_PRIME_CANDIDATE", 3, 121},
++ #endif
++ #ifdef BN_R_NO_SOLUTION
++ {"NO_SOLUTION", ERR_LIB_BN, BN_R_NO_SOLUTION},
++ #else
++ {"NO_SOLUTION", 3, 116},
++ #endif
++ #ifdef BN_R_NO_SUITABLE_DIGEST
++ {"NO_SUITABLE_DIGEST", ERR_LIB_BN, BN_R_NO_SUITABLE_DIGEST},
++ #else
++ {"NO_SUITABLE_DIGEST", 3, 120},
++ #endif
++ #ifdef BN_R_PRIVATE_KEY_TOO_LARGE
++ {"PRIVATE_KEY_TOO_LARGE", ERR_LIB_BN, BN_R_PRIVATE_KEY_TOO_LARGE},
++ #else
++ {"PRIVATE_KEY_TOO_LARGE", 3, 117},
++ #endif
++ #ifdef BN_R_P_IS_NOT_PRIME
++ {"P_IS_NOT_PRIME", ERR_LIB_BN, BN_R_P_IS_NOT_PRIME},
++ #else
++ {"P_IS_NOT_PRIME", 3, 112},
++ #endif
++ #ifdef BN_R_TOO_MANY_ITERATIONS
++ {"TOO_MANY_ITERATIONS", ERR_LIB_BN, BN_R_TOO_MANY_ITERATIONS},
++ #else
++ {"TOO_MANY_ITERATIONS", 3, 113},
++ #endif
++ #ifdef BN_R_TOO_MANY_TEMPORARY_VARIABLES
++ {"TOO_MANY_TEMPORARY_VARIABLES", ERR_LIB_BN, BN_R_TOO_MANY_TEMPORARY_VARIABLES},
++ #else
++ {"TOO_MANY_TEMPORARY_VARIABLES", 3, 109},
++ #endif
++ #ifdef CMP_R_ALGORITHM_NOT_SUPPORTED
++ {"ALGORITHM_NOT_SUPPORTED", ERR_LIB_CMP, CMP_R_ALGORITHM_NOT_SUPPORTED},
++ #else
++ {"ALGORITHM_NOT_SUPPORTED", 58, 139},
++ #endif
++ #ifdef CMP_R_BAD_CHECKAFTER_IN_POLLREP
++ {"BAD_CHECKAFTER_IN_POLLREP", ERR_LIB_CMP, CMP_R_BAD_CHECKAFTER_IN_POLLREP},
++ #else
++ {"BAD_CHECKAFTER_IN_POLLREP", 58, 167},
++ #endif
++ #ifdef CMP_R_BAD_REQUEST_ID
++ {"BAD_REQUEST_ID", ERR_LIB_CMP, CMP_R_BAD_REQUEST_ID},
++ #else
++ {"BAD_REQUEST_ID", 58, 108},
++ #endif
++ #ifdef CMP_R_CERTHASH_UNMATCHED
++ {"CERTHASH_UNMATCHED", ERR_LIB_CMP, CMP_R_CERTHASH_UNMATCHED},
++ #else
++ {"CERTHASH_UNMATCHED", 58, 156},
++ #endif
++ #ifdef CMP_R_CERTID_NOT_FOUND
++ {"CERTID_NOT_FOUND", ERR_LIB_CMP, CMP_R_CERTID_NOT_FOUND},
++ #else
++ {"CERTID_NOT_FOUND", 58, 109},
++ #endif
++ #ifdef CMP_R_CERTIFICATE_NOT_ACCEPTED
++ {"CERTIFICATE_NOT_ACCEPTED", ERR_LIB_CMP, CMP_R_CERTIFICATE_NOT_ACCEPTED},
++ #else
++ {"CERTIFICATE_NOT_ACCEPTED", 58, 169},
++ #endif
++ #ifdef CMP_R_CERTIFICATE_NOT_FOUND
++ {"CERTIFICATE_NOT_FOUND", ERR_LIB_CMP, CMP_R_CERTIFICATE_NOT_FOUND},
++ #else
++ {"CERTIFICATE_NOT_FOUND", 58, 112},
++ #endif
++ #ifdef CMP_R_CERTREQMSG_NOT_FOUND
++ {"CERTREQMSG_NOT_FOUND", ERR_LIB_CMP, CMP_R_CERTREQMSG_NOT_FOUND},
++ #else
++ {"CERTREQMSG_NOT_FOUND", 58, 157},
++ #endif
++ #ifdef CMP_R_CERTRESPONSE_NOT_FOUND
++ {"CERTRESPONSE_NOT_FOUND", ERR_LIB_CMP, CMP_R_CERTRESPONSE_NOT_FOUND},
++ #else
++ {"CERTRESPONSE_NOT_FOUND", 58, 113},
++ #endif
++ #ifdef CMP_R_CERT_AND_KEY_DO_NOT_MATCH
++ {"CERT_AND_KEY_DO_NOT_MATCH", ERR_LIB_CMP, CMP_R_CERT_AND_KEY_DO_NOT_MATCH},
++ #else
++ {"CERT_AND_KEY_DO_NOT_MATCH", 58, 114},
++ #endif
++ #ifdef CMP_R_CHECKAFTER_OUT_OF_RANGE
++ {"CHECKAFTER_OUT_OF_RANGE", ERR_LIB_CMP, CMP_R_CHECKAFTER_OUT_OF_RANGE},
++ #else
++ {"CHECKAFTER_OUT_OF_RANGE", 58, 181},
++ #endif
++ #ifdef CMP_R_ENCOUNTERED_KEYUPDATEWARNING
++ {"ENCOUNTERED_KEYUPDATEWARNING", ERR_LIB_CMP, CMP_R_ENCOUNTERED_KEYUPDATEWARNING},
++ #else
++ {"ENCOUNTERED_KEYUPDATEWARNING", 58, 176},
++ #endif
++ #ifdef CMP_R_ENCOUNTERED_WAITING
++ {"ENCOUNTERED_WAITING", ERR_LIB_CMP, CMP_R_ENCOUNTERED_WAITING},
++ #else
++ {"ENCOUNTERED_WAITING", 58, 162},
++ #endif
++ #ifdef CMP_R_ERROR_CALCULATING_PROTECTION
++ {"ERROR_CALCULATING_PROTECTION", ERR_LIB_CMP, CMP_R_ERROR_CALCULATING_PROTECTION},
++ #else
++ {"ERROR_CALCULATING_PROTECTION", 58, 115},
++ #endif
++ #ifdef CMP_R_ERROR_CREATING_CERTCONF
++ {"ERROR_CREATING_CERTCONF", ERR_LIB_CMP, CMP_R_ERROR_CREATING_CERTCONF},
++ #else
++ {"ERROR_CREATING_CERTCONF", 58, 116},
++ #endif
++ #ifdef CMP_R_ERROR_CREATING_CERTREP
++ {"ERROR_CREATING_CERTREP", ERR_LIB_CMP, CMP_R_ERROR_CREATING_CERTREP},
++ #else
++ {"ERROR_CREATING_CERTREP", 58, 117},
++ #endif
++ #ifdef CMP_R_ERROR_CREATING_CERTREQ
++ {"ERROR_CREATING_CERTREQ", ERR_LIB_CMP, CMP_R_ERROR_CREATING_CERTREQ},
++ #else
++ {"ERROR_CREATING_CERTREQ", 58, 163},
++ #endif
++ #ifdef CMP_R_ERROR_CREATING_ERROR
++ {"ERROR_CREATING_ERROR", ERR_LIB_CMP, CMP_R_ERROR_CREATING_ERROR},
++ #else
++ {"ERROR_CREATING_ERROR", 58, 118},
++ #endif
++ #ifdef CMP_R_ERROR_CREATING_GENM
++ {"ERROR_CREATING_GENM", ERR_LIB_CMP, CMP_R_ERROR_CREATING_GENM},
++ #else
++ {"ERROR_CREATING_GENM", 58, 119},
++ #endif
++ #ifdef CMP_R_ERROR_CREATING_GENP
++ {"ERROR_CREATING_GENP", ERR_LIB_CMP, CMP_R_ERROR_CREATING_GENP},
++ #else
++ {"ERROR_CREATING_GENP", 58, 120},
++ #endif
++ #ifdef CMP_R_ERROR_CREATING_PKICONF
++ {"ERROR_CREATING_PKICONF", ERR_LIB_CMP, CMP_R_ERROR_CREATING_PKICONF},
++ #else
++ {"ERROR_CREATING_PKICONF", 58, 122},
++ #endif
++ #ifdef CMP_R_ERROR_CREATING_POLLREP
++ {"ERROR_CREATING_POLLREP", ERR_LIB_CMP, CMP_R_ERROR_CREATING_POLLREP},
++ #else
++ {"ERROR_CREATING_POLLREP", 58, 123},
++ #endif
++ #ifdef CMP_R_ERROR_CREATING_POLLREQ
++ {"ERROR_CREATING_POLLREQ", ERR_LIB_CMP, CMP_R_ERROR_CREATING_POLLREQ},
++ #else
++ {"ERROR_CREATING_POLLREQ", 58, 124},
++ #endif
++ #ifdef CMP_R_ERROR_CREATING_RP
++ {"ERROR_CREATING_RP", ERR_LIB_CMP, CMP_R_ERROR_CREATING_RP},
++ #else
++ {"ERROR_CREATING_RP", 58, 125},
++ #endif
++ #ifdef CMP_R_ERROR_CREATING_RR
++ {"ERROR_CREATING_RR", ERR_LIB_CMP, CMP_R_ERROR_CREATING_RR},
++ #else
++ {"ERROR_CREATING_RR", 58, 126},
++ #endif
++ #ifdef CMP_R_ERROR_PARSING_PKISTATUS
++ {"ERROR_PARSING_PKISTATUS", ERR_LIB_CMP, CMP_R_ERROR_PARSING_PKISTATUS},
++ #else
++ {"ERROR_PARSING_PKISTATUS", 58, 107},
++ #endif
++ #ifdef CMP_R_ERROR_PROCESSING_MESSAGE
++ {"ERROR_PROCESSING_MESSAGE", ERR_LIB_CMP, CMP_R_ERROR_PROCESSING_MESSAGE},
++ #else
++ {"ERROR_PROCESSING_MESSAGE", 58, 158},
++ #endif
++ #ifdef CMP_R_ERROR_PROTECTING_MESSAGE
++ {"ERROR_PROTECTING_MESSAGE", ERR_LIB_CMP, CMP_R_ERROR_PROTECTING_MESSAGE},
++ #else
++ {"ERROR_PROTECTING_MESSAGE", 58, 127},
++ #endif
++ #ifdef CMP_R_ERROR_SETTING_CERTHASH
++ {"ERROR_SETTING_CERTHASH", ERR_LIB_CMP, CMP_R_ERROR_SETTING_CERTHASH},
++ #else
++ {"ERROR_SETTING_CERTHASH", 58, 128},
++ #endif
++ #ifdef CMP_R_ERROR_UNEXPECTED_CERTCONF
++ {"ERROR_UNEXPECTED_CERTCONF", ERR_LIB_CMP, CMP_R_ERROR_UNEXPECTED_CERTCONF},
++ #else
++ {"ERROR_UNEXPECTED_CERTCONF", 58, 160},
++ #endif
++ #ifdef CMP_R_ERROR_VALIDATING_PROTECTION
++ {"ERROR_VALIDATING_PROTECTION", ERR_LIB_CMP, CMP_R_ERROR_VALIDATING_PROTECTION},
++ #else
++ {"ERROR_VALIDATING_PROTECTION", 58, 140},
++ #endif
++ #ifdef CMP_R_ERROR_VALIDATING_SIGNATURE
++ {"ERROR_VALIDATING_SIGNATURE", ERR_LIB_CMP, CMP_R_ERROR_VALIDATING_SIGNATURE},
++ #else
++ {"ERROR_VALIDATING_SIGNATURE", 58, 171},
++ #endif
++ #ifdef CMP_R_EXPECTED_POLLREQ
++ {"EXPECTED_POLLREQ", ERR_LIB_CMP, CMP_R_EXPECTED_POLLREQ},
++ #else
++ {"EXPECTED_POLLREQ", 58, 104},
++ #endif
++ #ifdef CMP_R_FAILED_BUILDING_OWN_CHAIN
++ {"FAILED_BUILDING_OWN_CHAIN", ERR_LIB_CMP, CMP_R_FAILED_BUILDING_OWN_CHAIN},
++ #else
++ {"FAILED_BUILDING_OWN_CHAIN", 58, 164},
++ #endif
++ #ifdef CMP_R_FAILED_EXTRACTING_CENTRAL_GEN_KEY
++ {"FAILED_EXTRACTING_CENTRAL_GEN_KEY", ERR_LIB_CMP, CMP_R_FAILED_EXTRACTING_CENTRAL_GEN_KEY},
++ #else
++ {"FAILED_EXTRACTING_CENTRAL_GEN_KEY", 58, 203},
++ #endif
++ #ifdef CMP_R_FAILED_EXTRACTING_PUBKEY
++ {"FAILED_EXTRACTING_PUBKEY", ERR_LIB_CMP, CMP_R_FAILED_EXTRACTING_PUBKEY},
++ #else
++ {"FAILED_EXTRACTING_PUBKEY", 58, 141},
++ #endif
++ #ifdef CMP_R_FAILURE_OBTAINING_RANDOM
++ {"FAILURE_OBTAINING_RANDOM", ERR_LIB_CMP, CMP_R_FAILURE_OBTAINING_RANDOM},
++ #else
++ {"FAILURE_OBTAINING_RANDOM", 58, 110},
++ #endif
++ #ifdef CMP_R_FAIL_INFO_OUT_OF_RANGE
++ {"FAIL_INFO_OUT_OF_RANGE", ERR_LIB_CMP, CMP_R_FAIL_INFO_OUT_OF_RANGE},
++ #else
++ {"FAIL_INFO_OUT_OF_RANGE", 58, 129},
++ #endif
++ #ifdef CMP_R_GENERATE_CERTREQTEMPLATE
++ {"GENERATE_CERTREQTEMPLATE", ERR_LIB_CMP, CMP_R_GENERATE_CERTREQTEMPLATE},
++ #else
++ {"GENERATE_CERTREQTEMPLATE", 58, 197},
++ #endif
++ #ifdef CMP_R_GENERATE_CRLSTATUS
++ {"GENERATE_CRLSTATUS", ERR_LIB_CMP, CMP_R_GENERATE_CRLSTATUS},
++ #else
++ {"GENERATE_CRLSTATUS", 58, 198},
++ #endif
++ #ifdef CMP_R_GETTING_GENP
++ {"GETTING_GENP", ERR_LIB_CMP, CMP_R_GETTING_GENP},
++ #else
++ {"GETTING_GENP", 58, 192},
++ #endif
++ #ifdef CMP_R_GET_ITAV
++ {"GET_ITAV", ERR_LIB_CMP, CMP_R_GET_ITAV},
++ #else
++ {"GET_ITAV", 58, 199},
++ #endif
++ #ifdef CMP_R_INVALID_ARGS
++ {"INVALID_ARGS", ERR_LIB_CMP, CMP_R_INVALID_ARGS},
++ #else
++ {"INVALID_ARGS", 58, 100},
++ #endif
++ #ifdef CMP_R_INVALID_GENP
++ {"INVALID_GENP", ERR_LIB_CMP, CMP_R_INVALID_GENP},
++ #else
++ {"INVALID_GENP", 58, 193},
++ #endif
++ #ifdef CMP_R_INVALID_KEYSPEC
++ {"INVALID_KEYSPEC", ERR_LIB_CMP, CMP_R_INVALID_KEYSPEC},
++ #else
++ {"INVALID_KEYSPEC", 58, 202},
++ #endif
++ #ifdef CMP_R_INVALID_OPTION
++ {"INVALID_OPTION", ERR_LIB_CMP, CMP_R_INVALID_OPTION},
++ #else
++ {"INVALID_OPTION", 58, 174},
++ #endif
++ #ifdef CMP_R_INVALID_ROOTCAKEYUPDATE
++ {"INVALID_ROOTCAKEYUPDATE", ERR_LIB_CMP, CMP_R_INVALID_ROOTCAKEYUPDATE},
++ #else
++ {"INVALID_ROOTCAKEYUPDATE", 58, 195},
++ #endif
++ #ifdef CMP_R_MISSING_CENTRAL_GEN_KEY
++ {"MISSING_CENTRAL_GEN_KEY", ERR_LIB_CMP, CMP_R_MISSING_CENTRAL_GEN_KEY},
++ #else
++ {"MISSING_CENTRAL_GEN_KEY", 58, 204},
++ #endif
++ #ifdef CMP_R_MISSING_CERTID
++ {"MISSING_CERTID", ERR_LIB_CMP, CMP_R_MISSING_CERTID},
++ #else
++ {"MISSING_CERTID", 58, 165},
++ #endif
++ #ifdef CMP_R_MISSING_KEY_INPUT_FOR_CREATING_PROTECTION
++ {"MISSING_KEY_INPUT_FOR_CREATING_PROTECTION", ERR_LIB_CMP, CMP_R_MISSING_KEY_INPUT_FOR_CREATING_PROTECTION},
++ #else
++ {"MISSING_KEY_INPUT_FOR_CREATING_PROTECTION", 58, 130},
++ #endif
++ #ifdef CMP_R_MISSING_KEY_USAGE_DIGITALSIGNATURE
++ {"MISSING_KEY_USAGE_DIGITALSIGNATURE", ERR_LIB_CMP, CMP_R_MISSING_KEY_USAGE_DIGITALSIGNATURE},
++ #else
++ {"MISSING_KEY_USAGE_DIGITALSIGNATURE", 58, 142},
++ #endif
++ #ifdef CMP_R_MISSING_P10CSR
++ {"MISSING_P10CSR", ERR_LIB_CMP, CMP_R_MISSING_P10CSR},
++ #else
++ {"MISSING_P10CSR", 58, 121},
++ #endif
++ #ifdef CMP_R_MISSING_PBM_SECRET
++ {"MISSING_PBM_SECRET", ERR_LIB_CMP, CMP_R_MISSING_PBM_SECRET},
++ #else
++ {"MISSING_PBM_SECRET", 58, 166},
++ #endif
++ #ifdef CMP_R_MISSING_PRIVATE_KEY
++ {"MISSING_PRIVATE_KEY", ERR_LIB_CMP, CMP_R_MISSING_PRIVATE_KEY},
++ #else
++ {"MISSING_PRIVATE_KEY", 58, 131},
++ #endif
++ #ifdef CMP_R_MISSING_PRIVATE_KEY_FOR_POPO
++ {"MISSING_PRIVATE_KEY_FOR_POPO", ERR_LIB_CMP, CMP_R_MISSING_PRIVATE_KEY_FOR_POPO},
++ #else
++ {"MISSING_PRIVATE_KEY_FOR_POPO", 58, 190},
++ #endif
++ #ifdef CMP_R_MISSING_PROTECTION
++ {"MISSING_PROTECTION", ERR_LIB_CMP, CMP_R_MISSING_PROTECTION},
++ #else
++ {"MISSING_PROTECTION", 58, 143},
++ #endif
++ #ifdef CMP_R_MISSING_PUBLIC_KEY
++ {"MISSING_PUBLIC_KEY", ERR_LIB_CMP, CMP_R_MISSING_PUBLIC_KEY},
++ #else
++ {"MISSING_PUBLIC_KEY", 58, 183},
++ #endif
++ #ifdef CMP_R_MISSING_REFERENCE_CERT
++ {"MISSING_REFERENCE_CERT", ERR_LIB_CMP, CMP_R_MISSING_REFERENCE_CERT},
++ #else
++ {"MISSING_REFERENCE_CERT", 58, 168},
++ #endif
++ #ifdef CMP_R_MISSING_SECRET
++ {"MISSING_SECRET", ERR_LIB_CMP, CMP_R_MISSING_SECRET},
++ #else
++ {"MISSING_SECRET", 58, 178},
++ #endif
++ #ifdef CMP_R_MISSING_SENDER_IDENTIFICATION
++ {"MISSING_SENDER_IDENTIFICATION", ERR_LIB_CMP, CMP_R_MISSING_SENDER_IDENTIFICATION},
++ #else
++ {"MISSING_SENDER_IDENTIFICATION", 58, 111},
++ #endif
++ #ifdef CMP_R_MISSING_TRUST_ANCHOR
++ {"MISSING_TRUST_ANCHOR", ERR_LIB_CMP, CMP_R_MISSING_TRUST_ANCHOR},
++ #else
++ {"MISSING_TRUST_ANCHOR", 58, 179},
++ #endif
++ #ifdef CMP_R_MISSING_TRUST_STORE
++ {"MISSING_TRUST_STORE", ERR_LIB_CMP, CMP_R_MISSING_TRUST_STORE},
++ #else
++ {"MISSING_TRUST_STORE", 58, 144},
++ #endif
++ #ifdef CMP_R_MULTIPLE_REQUESTS_NOT_SUPPORTED
++ {"MULTIPLE_REQUESTS_NOT_SUPPORTED", ERR_LIB_CMP, CMP_R_MULTIPLE_REQUESTS_NOT_SUPPORTED},
++ #else
++ {"MULTIPLE_REQUESTS_NOT_SUPPORTED", 58, 161},
++ #endif
++ #ifdef CMP_R_MULTIPLE_RESPONSES_NOT_SUPPORTED
++ {"MULTIPLE_RESPONSES_NOT_SUPPORTED", ERR_LIB_CMP, CMP_R_MULTIPLE_RESPONSES_NOT_SUPPORTED},
++ #else
++ {"MULTIPLE_RESPONSES_NOT_SUPPORTED", 58, 170},
++ #endif
++ #ifdef CMP_R_MULTIPLE_SAN_SOURCES
++ {"MULTIPLE_SAN_SOURCES", ERR_LIB_CMP, CMP_R_MULTIPLE_SAN_SOURCES},
++ #else
++ {"MULTIPLE_SAN_SOURCES", 58, 102},
++ #endif
++ #ifdef CMP_R_NO_STDIO
++ {"NO_STDIO", ERR_LIB_CMP, CMP_R_NO_STDIO},
++ #else
++ {"NO_STDIO", 58, 194},
++ #endif
++ #ifdef CMP_R_NO_SUITABLE_SENDER_CERT
++ {"NO_SUITABLE_SENDER_CERT", ERR_LIB_CMP, CMP_R_NO_SUITABLE_SENDER_CERT},
++ #else
++ {"NO_SUITABLE_SENDER_CERT", 58, 145},
++ #endif
++ #ifdef CMP_R_NULL_ARGUMENT
++ {"NULL_ARGUMENT", ERR_LIB_CMP, CMP_R_NULL_ARGUMENT},
++ #else
++ {"NULL_ARGUMENT", 58, 103},
++ #endif
++ #ifdef CMP_R_PKIBODY_ERROR
++ {"PKIBODY_ERROR", ERR_LIB_CMP, CMP_R_PKIBODY_ERROR},
++ #else
++ {"PKIBODY_ERROR", 58, 146},
++ #endif
++ #ifdef CMP_R_PKISTATUSINFO_NOT_FOUND
++ {"PKISTATUSINFO_NOT_FOUND", ERR_LIB_CMP, CMP_R_PKISTATUSINFO_NOT_FOUND},
++ #else
++ {"PKISTATUSINFO_NOT_FOUND", 58, 132},
++ #endif
++ #ifdef CMP_R_POLLING_FAILED
++ {"POLLING_FAILED", ERR_LIB_CMP, CMP_R_POLLING_FAILED},
++ #else
++ {"POLLING_FAILED", 58, 172},
++ #endif
++ #ifdef CMP_R_POTENTIALLY_INVALID_CERTIFICATE
++ {"POTENTIALLY_INVALID_CERTIFICATE", ERR_LIB_CMP, CMP_R_POTENTIALLY_INVALID_CERTIFICATE},
++ #else
++ {"POTENTIALLY_INVALID_CERTIFICATE", 58, 147},
++ #endif
++ #ifdef CMP_R_RECEIVED_ERROR
++ {"RECEIVED_ERROR", ERR_LIB_CMP, CMP_R_RECEIVED_ERROR},
++ #else
++ {"RECEIVED_ERROR", 58, 180},
++ #endif
++ #ifdef CMP_R_RECIPNONCE_UNMATCHED
++ {"RECIPNONCE_UNMATCHED", ERR_LIB_CMP, CMP_R_RECIPNONCE_UNMATCHED},
++ #else
++ {"RECIPNONCE_UNMATCHED", 58, 148},
++ #endif
++ #ifdef CMP_R_REQUEST_NOT_ACCEPTED
++ {"REQUEST_NOT_ACCEPTED", ERR_LIB_CMP, CMP_R_REQUEST_NOT_ACCEPTED},
++ #else
++ {"REQUEST_NOT_ACCEPTED", 58, 149},
++ #endif
++ #ifdef CMP_R_REQUEST_REJECTED_BY_SERVER
++ {"REQUEST_REJECTED_BY_SERVER", ERR_LIB_CMP, CMP_R_REQUEST_REJECTED_BY_SERVER},
++ #else
++ {"REQUEST_REJECTED_BY_SERVER", 58, 182},
++ #endif
++ #ifdef CMP_R_SENDER_GENERALNAME_TYPE_NOT_SUPPORTED
++ {"SENDER_GENERALNAME_TYPE_NOT_SUPPORTED", ERR_LIB_CMP, CMP_R_SENDER_GENERALNAME_TYPE_NOT_SUPPORTED},
++ #else
++ {"SENDER_GENERALNAME_TYPE_NOT_SUPPORTED", 58, 150},
++ #endif
++ #ifdef CMP_R_SRVCERT_DOES_NOT_VALIDATE_MSG
++ {"SRVCERT_DOES_NOT_VALIDATE_MSG", ERR_LIB_CMP, CMP_R_SRVCERT_DOES_NOT_VALIDATE_MSG},
++ #else
++ {"SRVCERT_DOES_NOT_VALIDATE_MSG", 58, 151},
++ #endif
++ #ifdef CMP_R_TOTAL_TIMEOUT
++ {"TOTAL_TIMEOUT", ERR_LIB_CMP, CMP_R_TOTAL_TIMEOUT},
++ #else
++ {"TOTAL_TIMEOUT", 58, 184},
++ #endif
++ #ifdef CMP_R_TRANSACTIONID_UNMATCHED
++ {"TRANSACTIONID_UNMATCHED", ERR_LIB_CMP, CMP_R_TRANSACTIONID_UNMATCHED},
++ #else
++ {"TRANSACTIONID_UNMATCHED", 58, 152},
++ #endif
++ #ifdef CMP_R_TRANSFER_ERROR
++ {"TRANSFER_ERROR", ERR_LIB_CMP, CMP_R_TRANSFER_ERROR},
++ #else
++ {"TRANSFER_ERROR", 58, 159},
++ #endif
++ #ifdef CMP_R_UNCLEAN_CTX
++ {"UNCLEAN_CTX", ERR_LIB_CMP, CMP_R_UNCLEAN_CTX},
++ #else
++ {"UNCLEAN_CTX", 58, 191},
++ #endif
++ #ifdef CMP_R_UNEXPECTED_CENTRAL_GEN_KEY
++ {"UNEXPECTED_CENTRAL_GEN_KEY", ERR_LIB_CMP, CMP_R_UNEXPECTED_CENTRAL_GEN_KEY},
++ #else
++ {"UNEXPECTED_CENTRAL_GEN_KEY", 58, 205},
++ #endif
++ #ifdef CMP_R_UNEXPECTED_CERTPROFILE
++ {"UNEXPECTED_CERTPROFILE", ERR_LIB_CMP, CMP_R_UNEXPECTED_CERTPROFILE},
++ #else
++ {"UNEXPECTED_CERTPROFILE", 58, 196},
++ #endif
++ #ifdef CMP_R_UNEXPECTED_CRLSTATUSLIST
++ {"UNEXPECTED_CRLSTATUSLIST", ERR_LIB_CMP, CMP_R_UNEXPECTED_CRLSTATUSLIST},
++ #else
++ {"UNEXPECTED_CRLSTATUSLIST", 58, 201},
++ #endif
++ #ifdef CMP_R_UNEXPECTED_PKIBODY
++ {"UNEXPECTED_PKIBODY", ERR_LIB_CMP, CMP_R_UNEXPECTED_PKIBODY},
++ #else
++ {"UNEXPECTED_PKIBODY", 58, 133},
++ #endif
++ #ifdef CMP_R_UNEXPECTED_PKISTATUS
++ {"UNEXPECTED_PKISTATUS", ERR_LIB_CMP, CMP_R_UNEXPECTED_PKISTATUS},
++ #else
++ {"UNEXPECTED_PKISTATUS", 58, 185},
++ #endif
++ #ifdef CMP_R_UNEXPECTED_POLLREQ
++ {"UNEXPECTED_POLLREQ", ERR_LIB_CMP, CMP_R_UNEXPECTED_POLLREQ},
++ #else
++ {"UNEXPECTED_POLLREQ", 58, 105},
++ #endif
++ #ifdef CMP_R_UNEXPECTED_PVNO
++ {"UNEXPECTED_PVNO", ERR_LIB_CMP, CMP_R_UNEXPECTED_PVNO},
++ #else
++ {"UNEXPECTED_PVNO", 58, 153},
++ #endif
++ #ifdef CMP_R_UNEXPECTED_SENDER
++ {"UNEXPECTED_SENDER", ERR_LIB_CMP, CMP_R_UNEXPECTED_SENDER},
++ #else
++ {"UNEXPECTED_SENDER", 58, 106},
++ #endif
++ #ifdef CMP_R_UNKNOWN_ALGORITHM_ID
++ {"UNKNOWN_ALGORITHM_ID", ERR_LIB_CMP, CMP_R_UNKNOWN_ALGORITHM_ID},
++ #else
++ {"UNKNOWN_ALGORITHM_ID", 58, 134},
++ #endif
++ #ifdef CMP_R_UNKNOWN_CERT_TYPE
++ {"UNKNOWN_CERT_TYPE", ERR_LIB_CMP, CMP_R_UNKNOWN_CERT_TYPE},
++ #else
++ {"UNKNOWN_CERT_TYPE", 58, 135},
++ #endif
++ #ifdef CMP_R_UNKNOWN_CRL_ISSUER
++ {"UNKNOWN_CRL_ISSUER", ERR_LIB_CMP, CMP_R_UNKNOWN_CRL_ISSUER},
++ #else
++ {"UNKNOWN_CRL_ISSUER", 58, 200},
++ #endif
++ #ifdef CMP_R_UNKNOWN_PKISTATUS
++ {"UNKNOWN_PKISTATUS", ERR_LIB_CMP, CMP_R_UNKNOWN_PKISTATUS},
++ #else
++ {"UNKNOWN_PKISTATUS", 58, 186},
++ #endif
++ #ifdef CMP_R_UNSUPPORTED_ALGORITHM
++ {"UNSUPPORTED_ALGORITHM", ERR_LIB_CMP, CMP_R_UNSUPPORTED_ALGORITHM},
++ #else
++ {"UNSUPPORTED_ALGORITHM", 58, 136},
++ #endif
++ #ifdef CMP_R_UNSUPPORTED_KEY_TYPE
++ {"UNSUPPORTED_KEY_TYPE", ERR_LIB_CMP, CMP_R_UNSUPPORTED_KEY_TYPE},
++ #else
++ {"UNSUPPORTED_KEY_TYPE", 58, 137},
++ #endif
++ #ifdef CMP_R_UNSUPPORTED_PKIBODY
++ {"UNSUPPORTED_PKIBODY", ERR_LIB_CMP, CMP_R_UNSUPPORTED_PKIBODY},
++ #else
++ {"UNSUPPORTED_PKIBODY", 58, 101},
++ #endif
++ #ifdef CMP_R_UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC
++ {"UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC", ERR_LIB_CMP, CMP_R_UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC},
++ #else
++ {"UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC", 58, 154},
++ #endif
++ #ifdef CMP_R_VALUE_TOO_LARGE
++ {"VALUE_TOO_LARGE", ERR_LIB_CMP, CMP_R_VALUE_TOO_LARGE},
++ #else
++ {"VALUE_TOO_LARGE", 58, 175},
++ #endif
++ #ifdef CMP_R_VALUE_TOO_SMALL
++ {"VALUE_TOO_SMALL", ERR_LIB_CMP, CMP_R_VALUE_TOO_SMALL},
++ #else
++ {"VALUE_TOO_SMALL", 58, 177},
++ #endif
++ #ifdef CMP_R_WRONG_ALGORITHM_OID
++ {"WRONG_ALGORITHM_OID", ERR_LIB_CMP, CMP_R_WRONG_ALGORITHM_OID},
++ #else
++ {"WRONG_ALGORITHM_OID", 58, 138},
++ #endif
++ #ifdef CMP_R_WRONG_CERTID
++ {"WRONG_CERTID", ERR_LIB_CMP, CMP_R_WRONG_CERTID},
++ #else
++ {"WRONG_CERTID", 58, 189},
++ #endif
++ #ifdef CMP_R_WRONG_CERTID_IN_RP
++ {"WRONG_CERTID_IN_RP", ERR_LIB_CMP, CMP_R_WRONG_CERTID_IN_RP},
++ #else
++ {"WRONG_CERTID_IN_RP", 58, 187},
++ #endif
++ #ifdef CMP_R_WRONG_PBM_VALUE
++ {"WRONG_PBM_VALUE", ERR_LIB_CMP, CMP_R_WRONG_PBM_VALUE},
++ #else
++ {"WRONG_PBM_VALUE", 58, 155},
++ #endif
++ #ifdef CMP_R_WRONG_RP_COMPONENT_COUNT
++ {"WRONG_RP_COMPONENT_COUNT", ERR_LIB_CMP, CMP_R_WRONG_RP_COMPONENT_COUNT},
++ #else
++ {"WRONG_RP_COMPONENT_COUNT", 58, 188},
++ #endif
++ #ifdef CMP_R_WRONG_SERIAL_IN_RP
++ {"WRONG_SERIAL_IN_RP", ERR_LIB_CMP, CMP_R_WRONG_SERIAL_IN_RP},
++ #else
++ {"WRONG_SERIAL_IN_RP", 58, 173},
++ #endif
++ #ifdef CMS_R_ADD_SIGNER_ERROR
++ {"ADD_SIGNER_ERROR", ERR_LIB_CMS, CMS_R_ADD_SIGNER_ERROR},
++ #else
++ {"ADD_SIGNER_ERROR", 46, 99},
++ #endif
++ #ifdef CMS_R_ATTRIBUTE_ERROR
++ {"ATTRIBUTE_ERROR", ERR_LIB_CMS, CMS_R_ATTRIBUTE_ERROR},
++ #else
++ {"ATTRIBUTE_ERROR", 46, 161},
++ #endif
++ #ifdef CMS_R_CERTIFICATE_ALREADY_PRESENT
++ {"CERTIFICATE_ALREADY_PRESENT", ERR_LIB_CMS, CMS_R_CERTIFICATE_ALREADY_PRESENT},
++ #else
++ {"CERTIFICATE_ALREADY_PRESENT", 46, 175},
++ #endif
++ #ifdef CMS_R_CERTIFICATE_HAS_NO_KEYID
++ {"CERTIFICATE_HAS_NO_KEYID", ERR_LIB_CMS, CMS_R_CERTIFICATE_HAS_NO_KEYID},
++ #else
++ {"CERTIFICATE_HAS_NO_KEYID", 46, 160},
++ #endif
++ #ifdef CMS_R_CERTIFICATE_VERIFY_ERROR
++ {"CERTIFICATE_VERIFY_ERROR", ERR_LIB_CMS, CMS_R_CERTIFICATE_VERIFY_ERROR},
++ #else
++ {"CERTIFICATE_VERIFY_ERROR", 46, 100},
++ #endif
++ #ifdef CMS_R_CIPHER_AEAD_IN_ENVELOPED_DATA
++ {"CIPHER_AEAD_IN_ENVELOPED_DATA", ERR_LIB_CMS, CMS_R_CIPHER_AEAD_IN_ENVELOPED_DATA},
++ #else
++ {"CIPHER_AEAD_IN_ENVELOPED_DATA", 46, 200},
++ #endif
++ #ifdef CMS_R_CIPHER_AEAD_SET_TAG_ERROR
++ {"CIPHER_AEAD_SET_TAG_ERROR", ERR_LIB_CMS, CMS_R_CIPHER_AEAD_SET_TAG_ERROR},
++ #else
++ {"CIPHER_AEAD_SET_TAG_ERROR", 46, 184},
++ #endif
++ #ifdef CMS_R_CIPHER_GET_TAG
++ {"CIPHER_GET_TAG", ERR_LIB_CMS, CMS_R_CIPHER_GET_TAG},
++ #else
++ {"CIPHER_GET_TAG", 46, 185},
++ #endif
++ #ifdef CMS_R_CIPHER_INITIALISATION_ERROR
++ {"CIPHER_INITIALISATION_ERROR", ERR_LIB_CMS, CMS_R_CIPHER_INITIALISATION_ERROR},
++ #else
++ {"CIPHER_INITIALISATION_ERROR", 46, 101},
++ #endif
++ #ifdef CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR
++ {"CIPHER_PARAMETER_INITIALISATION_ERROR", ERR_LIB_CMS, CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR},
++ #else
++ {"CIPHER_PARAMETER_INITIALISATION_ERROR", 46, 102},
++ #endif
++ #ifdef CMS_R_CMS_DATAFINAL_ERROR
++ {"CMS_DATAFINAL_ERROR", ERR_LIB_CMS, CMS_R_CMS_DATAFINAL_ERROR},
++ #else
++ {"CMS_DATAFINAL_ERROR", 46, 103},
++ #endif
++ #ifdef CMS_R_CMS_LIB
++ {"CMS_LIB", ERR_LIB_CMS, CMS_R_CMS_LIB},
++ #else
++ {"CMS_LIB", 46, 104},
++ #endif
++ #ifdef CMS_R_CONTENTIDENTIFIER_MISMATCH
++ {"CONTENTIDENTIFIER_MISMATCH", ERR_LIB_CMS, CMS_R_CONTENTIDENTIFIER_MISMATCH},
++ #else
++ {"CONTENTIDENTIFIER_MISMATCH", 46, 170},
++ #endif
++ #ifdef CMS_R_CONTENT_NOT_FOUND
++ {"CONTENT_NOT_FOUND", ERR_LIB_CMS, CMS_R_CONTENT_NOT_FOUND},
++ #else
++ {"CONTENT_NOT_FOUND", 46, 105},
++ #endif
++ #ifdef CMS_R_CONTENT_TYPE_MISMATCH
++ {"CONTENT_TYPE_MISMATCH", ERR_LIB_CMS, CMS_R_CONTENT_TYPE_MISMATCH},
++ #else
++ {"CONTENT_TYPE_MISMATCH", 46, 171},
++ #endif
++ #ifdef CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA
++ {"CONTENT_TYPE_NOT_COMPRESSED_DATA", ERR_LIB_CMS, CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA},
++ #else
++ {"CONTENT_TYPE_NOT_COMPRESSED_DATA", 46, 106},
++ #endif
++ #ifdef CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA
++ {"CONTENT_TYPE_NOT_ENVELOPED_DATA", ERR_LIB_CMS, CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA},
++ #else
++ {"CONTENT_TYPE_NOT_ENVELOPED_DATA", 46, 107},
++ #endif
++ #ifdef CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA
++ {"CONTENT_TYPE_NOT_SIGNED_DATA", ERR_LIB_CMS, CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA},
++ #else
++ {"CONTENT_TYPE_NOT_SIGNED_DATA", 46, 108},
++ #endif
++ #ifdef CMS_R_CONTENT_VERIFY_ERROR
++ {"CONTENT_VERIFY_ERROR", ERR_LIB_CMS, CMS_R_CONTENT_VERIFY_ERROR},
++ #else
++ {"CONTENT_VERIFY_ERROR", 46, 109},
++ #endif
++ #ifdef CMS_R_CTRL_ERROR
++ {"CTRL_ERROR", ERR_LIB_CMS, CMS_R_CTRL_ERROR},
++ #else
++ {"CTRL_ERROR", 46, 110},
++ #endif
++ #ifdef CMS_R_CTRL_FAILURE
++ {"CTRL_FAILURE", ERR_LIB_CMS, CMS_R_CTRL_FAILURE},
++ #else
++ {"CTRL_FAILURE", 46, 111},
++ #endif
++ #ifdef CMS_R_DECODE_ERROR
++ {"DECODE_ERROR", ERR_LIB_CMS, CMS_R_DECODE_ERROR},
++ #else
++ {"DECODE_ERROR", 46, 187},
++ #endif
++ #ifdef CMS_R_DECRYPT_ERROR
++ {"DECRYPT_ERROR", ERR_LIB_CMS, CMS_R_DECRYPT_ERROR},
++ #else
++ {"DECRYPT_ERROR", 46, 112},
++ #endif
++ #ifdef CMS_R_ERROR_GETTING_PUBLIC_KEY
++ {"ERROR_GETTING_PUBLIC_KEY", ERR_LIB_CMS, CMS_R_ERROR_GETTING_PUBLIC_KEY},
++ #else
++ {"ERROR_GETTING_PUBLIC_KEY", 46, 113},
++ #endif
++ #ifdef CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE
++ {"ERROR_READING_MESSAGEDIGEST_ATTRIBUTE", ERR_LIB_CMS, CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE},
++ #else
++ {"ERROR_READING_MESSAGEDIGEST_ATTRIBUTE", 46, 114},
++ #endif
++ #ifdef CMS_R_ERROR_SETTING_KEY
++ {"ERROR_SETTING_KEY", ERR_LIB_CMS, CMS_R_ERROR_SETTING_KEY},
++ #else
++ {"ERROR_SETTING_KEY", 46, 115},
++ #endif
++ #ifdef CMS_R_ERROR_SETTING_RECIPIENTINFO
++ {"ERROR_SETTING_RECIPIENTINFO", ERR_LIB_CMS, CMS_R_ERROR_SETTING_RECIPIENTINFO},
++ #else
++ {"ERROR_SETTING_RECIPIENTINFO", 46, 116},
++ #endif
++ #ifdef CMS_R_ERROR_UNSUPPORTED_STATIC_KEY_AGREEMENT
++ {"ERROR_UNSUPPORTED_STATIC_KEY_AGREEMENT", ERR_LIB_CMS, CMS_R_ERROR_UNSUPPORTED_STATIC_KEY_AGREEMENT},
++ #else
++ {"ERROR_UNSUPPORTED_STATIC_KEY_AGREEMENT", 46, 196},
++ #endif
++ #ifdef CMS_R_ESS_SIGNING_CERTID_MISMATCH_ERROR
++ {"ESS_SIGNING_CERTID_MISMATCH_ERROR", ERR_LIB_CMS, CMS_R_ESS_SIGNING_CERTID_MISMATCH_ERROR},
++ #else
++ {"ESS_SIGNING_CERTID_MISMATCH_ERROR", 46, 183},
++ #endif
++ #ifdef CMS_R_INVALID_ENCRYPTED_KEY_LENGTH
++ {"INVALID_ENCRYPTED_KEY_LENGTH", ERR_LIB_CMS, CMS_R_INVALID_ENCRYPTED_KEY_LENGTH},
++ #else
++ {"INVALID_ENCRYPTED_KEY_LENGTH", 46, 117},
++ #endif
++ #ifdef CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER
++ {"INVALID_KEY_ENCRYPTION_PARAMETER", ERR_LIB_CMS, CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER},
++ #else
++ {"INVALID_KEY_ENCRYPTION_PARAMETER", 46, 176},
++ #endif
++ #ifdef CMS_R_INVALID_KEY_LENGTH
++ {"INVALID_KEY_LENGTH", ERR_LIB_CMS, CMS_R_INVALID_KEY_LENGTH},
++ #else
++ {"INVALID_KEY_LENGTH", 46, 118},
++ #endif
++ #ifdef CMS_R_INVALID_LABEL
++ {"INVALID_LABEL", ERR_LIB_CMS, CMS_R_INVALID_LABEL},
++ #else
++ {"INVALID_LABEL", 46, 190},
++ #endif
++ #ifdef CMS_R_INVALID_OAEP_PARAMETERS
++ {"INVALID_OAEP_PARAMETERS", ERR_LIB_CMS, CMS_R_INVALID_OAEP_PARAMETERS},
++ #else
++ {"INVALID_OAEP_PARAMETERS", 46, 191},
++ #endif
++ #ifdef CMS_R_KDF_PARAMETER_ERROR
++ {"KDF_PARAMETER_ERROR", ERR_LIB_CMS, CMS_R_KDF_PARAMETER_ERROR},
++ #else
++ {"KDF_PARAMETER_ERROR", 46, 186},
++ #endif
++ #ifdef CMS_R_MD_BIO_INIT_ERROR
++ {"MD_BIO_INIT_ERROR", ERR_LIB_CMS, CMS_R_MD_BIO_INIT_ERROR},
++ #else
++ {"MD_BIO_INIT_ERROR", 46, 119},
++ #endif
++ #ifdef CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH
++ {"MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH", ERR_LIB_CMS, CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH},
++ #else
++ {"MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH", 46, 120},
++ #endif
++ #ifdef CMS_R_MESSAGEDIGEST_WRONG_LENGTH
++ {"MESSAGEDIGEST_WRONG_LENGTH", ERR_LIB_CMS, CMS_R_MESSAGEDIGEST_WRONG_LENGTH},
++ #else
++ {"MESSAGEDIGEST_WRONG_LENGTH", 46, 121},
++ #endif
++ #ifdef CMS_R_MSGSIGDIGEST_ERROR
++ {"MSGSIGDIGEST_ERROR", ERR_LIB_CMS, CMS_R_MSGSIGDIGEST_ERROR},
++ #else
++ {"MSGSIGDIGEST_ERROR", 46, 172},
++ #endif
++ #ifdef CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE
++ {"MSGSIGDIGEST_VERIFICATION_FAILURE", ERR_LIB_CMS, CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE},
++ #else
++ {"MSGSIGDIGEST_VERIFICATION_FAILURE", 46, 162},
++ #endif
++ #ifdef CMS_R_MSGSIGDIGEST_WRONG_LENGTH
++ {"MSGSIGDIGEST_WRONG_LENGTH", ERR_LIB_CMS, CMS_R_MSGSIGDIGEST_WRONG_LENGTH},
++ #else
++ {"MSGSIGDIGEST_WRONG_LENGTH", 46, 163},
++ #endif
++ #ifdef CMS_R_NEED_ONE_SIGNER
++ {"NEED_ONE_SIGNER", ERR_LIB_CMS, CMS_R_NEED_ONE_SIGNER},
++ #else
++ {"NEED_ONE_SIGNER", 46, 164},
++ #endif
++ #ifdef CMS_R_NOT_A_SIGNED_RECEIPT
++ {"NOT_A_SIGNED_RECEIPT", ERR_LIB_CMS, CMS_R_NOT_A_SIGNED_RECEIPT},
++ #else
++ {"NOT_A_SIGNED_RECEIPT", 46, 165},
++ #endif
++ #ifdef CMS_R_NOT_ENCRYPTED_DATA
++ {"NOT_ENCRYPTED_DATA", ERR_LIB_CMS, CMS_R_NOT_ENCRYPTED_DATA},
++ #else
++ {"NOT_ENCRYPTED_DATA", 46, 122},
++ #endif
++ #ifdef CMS_R_NOT_KEK
++ {"NOT_KEK", ERR_LIB_CMS, CMS_R_NOT_KEK},
++ #else
++ {"NOT_KEK", 46, 123},
++ #endif
++ #ifdef CMS_R_NOT_KEM
++ {"NOT_KEM", ERR_LIB_CMS, CMS_R_NOT_KEM},
++ #else
++ {"NOT_KEM", 46, 197},
++ #endif
++ #ifdef CMS_R_NOT_KEY_AGREEMENT
++ {"NOT_KEY_AGREEMENT", ERR_LIB_CMS, CMS_R_NOT_KEY_AGREEMENT},
++ #else
++ {"NOT_KEY_AGREEMENT", 46, 181},
++ #endif
++ #ifdef CMS_R_NOT_KEY_TRANSPORT
++ {"NOT_KEY_TRANSPORT", ERR_LIB_CMS, CMS_R_NOT_KEY_TRANSPORT},
++ #else
++ {"NOT_KEY_TRANSPORT", 46, 124},
++ #endif
++ #ifdef CMS_R_NOT_PWRI
++ {"NOT_PWRI", ERR_LIB_CMS, CMS_R_NOT_PWRI},
++ #else
++ {"NOT_PWRI", 46, 177},
++ #endif
++ #ifdef CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE
++ {"NOT_SUPPORTED_FOR_THIS_KEY_TYPE", ERR_LIB_CMS, CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE},
++ #else
++ {"NOT_SUPPORTED_FOR_THIS_KEY_TYPE", 46, 125},
++ #endif
++ #ifdef CMS_R_NO_CIPHER
++ {"NO_CIPHER", ERR_LIB_CMS, CMS_R_NO_CIPHER},
++ #else
++ {"NO_CIPHER", 46, 126},
++ #endif
++ #ifdef CMS_R_NO_CONTENT
++ {"NO_CONTENT", ERR_LIB_CMS, CMS_R_NO_CONTENT},
++ #else
++ {"NO_CONTENT", 46, 127},
++ #endif
++ #ifdef CMS_R_NO_CONTENT_TYPE
++ {"NO_CONTENT_TYPE", ERR_LIB_CMS, CMS_R_NO_CONTENT_TYPE},
++ #else
++ {"NO_CONTENT_TYPE", 46, 173},
++ #endif
++ #ifdef CMS_R_NO_DEFAULT_DIGEST
++ {"NO_DEFAULT_DIGEST", ERR_LIB_CMS, CMS_R_NO_DEFAULT_DIGEST},
++ #else
++ {"NO_DEFAULT_DIGEST", 46, 128},
++ #endif
++ #ifdef CMS_R_NO_DIGEST_SET
++ {"NO_DIGEST_SET", ERR_LIB_CMS, CMS_R_NO_DIGEST_SET},
++ #else
++ {"NO_DIGEST_SET", 46, 129},
++ #endif
++ #ifdef CMS_R_NO_KEY
++ {"NO_KEY", ERR_LIB_CMS, CMS_R_NO_KEY},
++ #else
++ {"NO_KEY", 46, 130},
++ #endif
++ #ifdef CMS_R_NO_KEY_OR_CERT
++ {"NO_KEY_OR_CERT", ERR_LIB_CMS, CMS_R_NO_KEY_OR_CERT},
++ #else
++ {"NO_KEY_OR_CERT", 46, 174},
++ #endif
++ #ifdef CMS_R_NO_MATCHING_DIGEST
++ {"NO_MATCHING_DIGEST", ERR_LIB_CMS, CMS_R_NO_MATCHING_DIGEST},
++ #else
++ {"NO_MATCHING_DIGEST", 46, 131},
++ #endif
++ #ifdef CMS_R_NO_MATCHING_RECIPIENT
++ {"NO_MATCHING_RECIPIENT", ERR_LIB_CMS, CMS_R_NO_MATCHING_RECIPIENT},
++ #else
++ {"NO_MATCHING_RECIPIENT", 46, 132},
++ #endif
++ #ifdef CMS_R_NO_MATCHING_SIGNATURE
++ {"NO_MATCHING_SIGNATURE", ERR_LIB_CMS, CMS_R_NO_MATCHING_SIGNATURE},
++ #else
++ {"NO_MATCHING_SIGNATURE", 46, 166},
++ #endif
++ #ifdef CMS_R_NO_MSGSIGDIGEST
++ {"NO_MSGSIGDIGEST", ERR_LIB_CMS, CMS_R_NO_MSGSIGDIGEST},
++ #else
++ {"NO_MSGSIGDIGEST", 46, 167},
++ #endif
++ #ifdef CMS_R_NO_PASSWORD
++ {"NO_PASSWORD", ERR_LIB_CMS, CMS_R_NO_PASSWORD},
++ #else
++ {"NO_PASSWORD", 46, 178},
++ #endif
++ #ifdef CMS_R_NO_PRIVATE_KEY
++ {"NO_PRIVATE_KEY", ERR_LIB_CMS, CMS_R_NO_PRIVATE_KEY},
++ #else
++ {"NO_PRIVATE_KEY", 46, 133},
++ #endif
++ #ifdef CMS_R_NO_PUBLIC_KEY
++ {"NO_PUBLIC_KEY", ERR_LIB_CMS, CMS_R_NO_PUBLIC_KEY},
++ #else
++ {"NO_PUBLIC_KEY", 46, 134},
++ #endif
++ #ifdef CMS_R_NO_RECEIPT_REQUEST
++ {"NO_RECEIPT_REQUEST", ERR_LIB_CMS, CMS_R_NO_RECEIPT_REQUEST},
++ #else
++ {"NO_RECEIPT_REQUEST", 46, 168},
++ #endif
++ #ifdef CMS_R_NO_SIGNERS
++ {"NO_SIGNERS", ERR_LIB_CMS, CMS_R_NO_SIGNERS},
++ #else
++ {"NO_SIGNERS", 46, 135},
++ #endif
++ #ifdef CMS_R_OPERATION_UNSUPPORTED
++ {"OPERATION_UNSUPPORTED", ERR_LIB_CMS, CMS_R_OPERATION_UNSUPPORTED},
++ #else
++ {"OPERATION_UNSUPPORTED", 46, 182},
++ #endif
++ #ifdef CMS_R_PEER_KEY_ERROR
++ {"PEER_KEY_ERROR", ERR_LIB_CMS, CMS_R_PEER_KEY_ERROR},
++ #else
++ {"PEER_KEY_ERROR", 46, 188},
++ #endif
++ #ifdef CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE
++ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", ERR_LIB_CMS, CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE},
++ #else
++ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", 46, 136},
++ #endif
++ #ifdef CMS_R_RECEIPT_DECODE_ERROR
++ {"RECEIPT_DECODE_ERROR", ERR_LIB_CMS, CMS_R_RECEIPT_DECODE_ERROR},
++ #else
++ {"RECEIPT_DECODE_ERROR", 46, 169},
++ #endif
++ #ifdef CMS_R_RECIPIENT_ERROR
++ {"RECIPIENT_ERROR", ERR_LIB_CMS, CMS_R_RECIPIENT_ERROR},
++ #else
++ {"RECIPIENT_ERROR", 46, 137},
++ #endif
++ #ifdef CMS_R_SHARED_INFO_ERROR
++ {"SHARED_INFO_ERROR", ERR_LIB_CMS, CMS_R_SHARED_INFO_ERROR},
++ #else
++ {"SHARED_INFO_ERROR", 46, 189},
++ #endif
++ #ifdef CMS_R_SIGNER_CERTIFICATE_NOT_FOUND
++ {"SIGNER_CERTIFICATE_NOT_FOUND", ERR_LIB_CMS, CMS_R_SIGNER_CERTIFICATE_NOT_FOUND},
++ #else
++ {"SIGNER_CERTIFICATE_NOT_FOUND", 46, 138},
++ #endif
++ #ifdef CMS_R_SIGNFINAL_ERROR
++ {"SIGNFINAL_ERROR", ERR_LIB_CMS, CMS_R_SIGNFINAL_ERROR},
++ #else
++ {"SIGNFINAL_ERROR", 46, 139},
++ #endif
++ #ifdef CMS_R_SMIME_TEXT_ERROR
++ {"SMIME_TEXT_ERROR", ERR_LIB_CMS, CMS_R_SMIME_TEXT_ERROR},
++ #else
++ {"SMIME_TEXT_ERROR", 46, 140},
++ #endif
++ #ifdef CMS_R_STORE_INIT_ERROR
++ {"STORE_INIT_ERROR", ERR_LIB_CMS, CMS_R_STORE_INIT_ERROR},
++ #else
++ {"STORE_INIT_ERROR", 46, 141},
++ #endif
++ #ifdef CMS_R_TYPE_NOT_COMPRESSED_DATA
++ {"TYPE_NOT_COMPRESSED_DATA", ERR_LIB_CMS, CMS_R_TYPE_NOT_COMPRESSED_DATA},
++ #else
++ {"TYPE_NOT_COMPRESSED_DATA", 46, 142},
++ #endif
++ #ifdef CMS_R_TYPE_NOT_DATA
++ {"TYPE_NOT_DATA", ERR_LIB_CMS, CMS_R_TYPE_NOT_DATA},
++ #else
++ {"TYPE_NOT_DATA", 46, 143},
++ #endif
++ #ifdef CMS_R_TYPE_NOT_DIGESTED_DATA
++ {"TYPE_NOT_DIGESTED_DATA", ERR_LIB_CMS, CMS_R_TYPE_NOT_DIGESTED_DATA},
++ #else
++ {"TYPE_NOT_DIGESTED_DATA", 46, 144},
++ #endif
++ #ifdef CMS_R_TYPE_NOT_ENCRYPTED_DATA
++ {"TYPE_NOT_ENCRYPTED_DATA", ERR_LIB_CMS, CMS_R_TYPE_NOT_ENCRYPTED_DATA},
++ #else
++ {"TYPE_NOT_ENCRYPTED_DATA", 46, 145},
++ #endif
++ #ifdef CMS_R_TYPE_NOT_ENVELOPED_DATA
++ {"TYPE_NOT_ENVELOPED_DATA", ERR_LIB_CMS, CMS_R_TYPE_NOT_ENVELOPED_DATA},
++ #else
++ {"TYPE_NOT_ENVELOPED_DATA", 46, 146},
++ #endif
++ #ifdef CMS_R_UNABLE_TO_FINALIZE_CONTEXT
++ {"UNABLE_TO_FINALIZE_CONTEXT", ERR_LIB_CMS, CMS_R_UNABLE_TO_FINALIZE_CONTEXT},
++ #else
++ {"UNABLE_TO_FINALIZE_CONTEXT", 46, 147},
++ #endif
++ #ifdef CMS_R_UNKNOWN_CIPHER
++ {"UNKNOWN_CIPHER", ERR_LIB_CMS, CMS_R_UNKNOWN_CIPHER},
++ #else
++ {"UNKNOWN_CIPHER", 46, 148},
++ #endif
++ #ifdef CMS_R_UNKNOWN_DIGEST_ALGORITHM
++ {"UNKNOWN_DIGEST_ALGORITHM", ERR_LIB_CMS, CMS_R_UNKNOWN_DIGEST_ALGORITHM},
++ #else
++ {"UNKNOWN_DIGEST_ALGORITHM", 46, 149},
++ #endif
++ #ifdef CMS_R_UNKNOWN_ID
++ {"UNKNOWN_ID", ERR_LIB_CMS, CMS_R_UNKNOWN_ID},
++ #else
++ {"UNKNOWN_ID", 46, 150},
++ #endif
++ #ifdef CMS_R_UNKNOWN_KDF_ALGORITHM
++ {"UNKNOWN_KDF_ALGORITHM", ERR_LIB_CMS, CMS_R_UNKNOWN_KDF_ALGORITHM},
++ #else
++ {"UNKNOWN_KDF_ALGORITHM", 46, 198},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM
++ {"UNSUPPORTED_COMPRESSION_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM},
++ #else
++ {"UNSUPPORTED_COMPRESSION_ALGORITHM", 46, 151},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM
++ {"UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM},
++ #else
++ {"UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM", 46, 194},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_CONTENT_TYPE
++ {"UNSUPPORTED_CONTENT_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_TYPE},
++ #else
++ {"UNSUPPORTED_CONTENT_TYPE", 46, 152},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_ENCRYPTION_TYPE
++ {"UNSUPPORTED_ENCRYPTION_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_ENCRYPTION_TYPE},
++ #else
++ {"UNSUPPORTED_ENCRYPTION_TYPE", 46, 192},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_KDF_ALGORITHM
++ {"UNSUPPORTED_KDF_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_KDF_ALGORITHM},
++ #else
++ {"UNSUPPORTED_KDF_ALGORITHM", 46, 199},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_KEK_ALGORITHM
++ {"UNSUPPORTED_KEK_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_KEK_ALGORITHM},
++ #else
++ {"UNSUPPORTED_KEK_ALGORITHM", 46, 153},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM
++ {"UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM},
++ #else
++ {"UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM", 46, 179},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_LABEL_SOURCE
++ {"UNSUPPORTED_LABEL_SOURCE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_LABEL_SOURCE},
++ #else
++ {"UNSUPPORTED_LABEL_SOURCE", 46, 193},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE
++ {"UNSUPPORTED_RECIPIENTINFO_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE},
++ #else
++ {"UNSUPPORTED_RECIPIENTINFO_TYPE", 46, 155},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_RECIPIENT_TYPE
++ {"UNSUPPORTED_RECIPIENT_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_RECIPIENT_TYPE},
++ #else
++ {"UNSUPPORTED_RECIPIENT_TYPE", 46, 154},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_SIGNATURE_ALGORITHM
++ {"UNSUPPORTED_SIGNATURE_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_SIGNATURE_ALGORITHM},
++ #else
++ {"UNSUPPORTED_SIGNATURE_ALGORITHM", 46, 195},
++ #endif
++ #ifdef CMS_R_UNSUPPORTED_TYPE
++ {"UNSUPPORTED_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_TYPE},
++ #else
++ {"UNSUPPORTED_TYPE", 46, 156},
++ #endif
++ #ifdef CMS_R_UNWRAP_ERROR
++ {"UNWRAP_ERROR", ERR_LIB_CMS, CMS_R_UNWRAP_ERROR},
++ #else
++ {"UNWRAP_ERROR", 46, 157},
++ #endif
++ #ifdef CMS_R_UNWRAP_FAILURE
++ {"UNWRAP_FAILURE", ERR_LIB_CMS, CMS_R_UNWRAP_FAILURE},
++ #else
++ {"UNWRAP_FAILURE", 46, 180},
++ #endif
++ #ifdef CMS_R_VERIFICATION_FAILURE
++ {"VERIFICATION_FAILURE", ERR_LIB_CMS, CMS_R_VERIFICATION_FAILURE},
++ #else
++ {"VERIFICATION_FAILURE", 46, 158},
++ #endif
++ #ifdef CMS_R_WRAP_ERROR
++ {"WRAP_ERROR", ERR_LIB_CMS, CMS_R_WRAP_ERROR},
++ #else
++ {"WRAP_ERROR", 46, 159},
++ #endif
++ #ifdef COMP_R_BROTLI_DECODE_ERROR
++ {"BROTLI_DECODE_ERROR", ERR_LIB_COMP, COMP_R_BROTLI_DECODE_ERROR},
++ #else
++ {"BROTLI_DECODE_ERROR", 41, 102},
++ #endif
++ #ifdef COMP_R_BROTLI_ENCODE_ERROR
++ {"BROTLI_ENCODE_ERROR", ERR_LIB_COMP, COMP_R_BROTLI_ENCODE_ERROR},
++ #else
++ {"BROTLI_ENCODE_ERROR", 41, 103},
++ #endif
++ #ifdef COMP_R_BROTLI_NOT_SUPPORTED
++ {"BROTLI_NOT_SUPPORTED", ERR_LIB_COMP, COMP_R_BROTLI_NOT_SUPPORTED},
++ #else
++ {"BROTLI_NOT_SUPPORTED", 41, 104},
++ #endif
++ #ifdef COMP_R_ZLIB_DEFLATE_ERROR
++ {"ZLIB_DEFLATE_ERROR", ERR_LIB_COMP, COMP_R_ZLIB_DEFLATE_ERROR},
++ #else
++ {"ZLIB_DEFLATE_ERROR", 41, 99},
++ #endif
++ #ifdef COMP_R_ZLIB_INFLATE_ERROR
++ {"ZLIB_INFLATE_ERROR", ERR_LIB_COMP, COMP_R_ZLIB_INFLATE_ERROR},
++ #else
++ {"ZLIB_INFLATE_ERROR", 41, 100},
++ #endif
++ #ifdef COMP_R_ZLIB_NOT_SUPPORTED
++ {"ZLIB_NOT_SUPPORTED", ERR_LIB_COMP, COMP_R_ZLIB_NOT_SUPPORTED},
++ #else
++ {"ZLIB_NOT_SUPPORTED", 41, 101},
++ #endif
++ #ifdef COMP_R_ZSTD_COMPRESS_ERROR
++ {"ZSTD_COMPRESS_ERROR", ERR_LIB_COMP, COMP_R_ZSTD_COMPRESS_ERROR},
++ #else
++ {"ZSTD_COMPRESS_ERROR", 41, 105},
++ #endif
++ #ifdef COMP_R_ZSTD_DECODE_ERROR
++ {"ZSTD_DECODE_ERROR", ERR_LIB_COMP, COMP_R_ZSTD_DECODE_ERROR},
++ #else
++ {"ZSTD_DECODE_ERROR", 41, 106},
++ #endif
++ #ifdef COMP_R_ZSTD_DECOMPRESS_ERROR
++ {"ZSTD_DECOMPRESS_ERROR", ERR_LIB_COMP, COMP_R_ZSTD_DECOMPRESS_ERROR},
++ #else
++ {"ZSTD_DECOMPRESS_ERROR", 41, 107},
++ #endif
++ #ifdef COMP_R_ZSTD_NOT_SUPPORTED
++ {"ZSTD_NOT_SUPPORTED", ERR_LIB_COMP, COMP_R_ZSTD_NOT_SUPPORTED},
++ #else
++ {"ZSTD_NOT_SUPPORTED", 41, 108},
++ #endif
++ #ifdef CONF_R_ERROR_LOADING_DSO
++ {"ERROR_LOADING_DSO", ERR_LIB_CONF, CONF_R_ERROR_LOADING_DSO},
++ #else
++ {"ERROR_LOADING_DSO", 14, 110},
++ #endif
++ #ifdef CONF_R_INVALID_PRAGMA
++ {"INVALID_PRAGMA", ERR_LIB_CONF, CONF_R_INVALID_PRAGMA},
++ #else
++ {"INVALID_PRAGMA", 14, 122},
++ #endif
++ #ifdef CONF_R_LIST_CANNOT_BE_NULL
++ {"LIST_CANNOT_BE_NULL", ERR_LIB_CONF, CONF_R_LIST_CANNOT_BE_NULL},
++ #else
++ {"LIST_CANNOT_BE_NULL", 14, 115},
++ #endif
++ #ifdef CONF_R_MANDATORY_BRACES_IN_VARIABLE_EXPANSION
++ {"MANDATORY_BRACES_IN_VARIABLE_EXPANSION", ERR_LIB_CONF, CONF_R_MANDATORY_BRACES_IN_VARIABLE_EXPANSION},
++ #else
++ {"MANDATORY_BRACES_IN_VARIABLE_EXPANSION", 14, 123},
++ #endif
++ #ifdef CONF_R_MISSING_CLOSE_SQUARE_BRACKET
++ {"MISSING_CLOSE_SQUARE_BRACKET", ERR_LIB_CONF, CONF_R_MISSING_CLOSE_SQUARE_BRACKET},
++ #else
++ {"MISSING_CLOSE_SQUARE_BRACKET", 14, 100},
++ #endif
++ #ifdef CONF_R_MISSING_EQUAL_SIGN
++ {"MISSING_EQUAL_SIGN", ERR_LIB_CONF, CONF_R_MISSING_EQUAL_SIGN},
++ #else
++ {"MISSING_EQUAL_SIGN", 14, 101},
++ #endif
++ #ifdef CONF_R_MISSING_INIT_FUNCTION
++ {"MISSING_INIT_FUNCTION", ERR_LIB_CONF, CONF_R_MISSING_INIT_FUNCTION},
++ #else
++ {"MISSING_INIT_FUNCTION", 14, 112},
++ #endif
++ #ifdef CONF_R_MODULE_INITIALIZATION_ERROR
++ {"MODULE_INITIALIZATION_ERROR", ERR_LIB_CONF, CONF_R_MODULE_INITIALIZATION_ERROR},
++ #else
++ {"MODULE_INITIALIZATION_ERROR", 14, 109},
++ #endif
++ #ifdef CONF_R_NO_CLOSE_BRACE
++ {"NO_CLOSE_BRACE", ERR_LIB_CONF, CONF_R_NO_CLOSE_BRACE},
++ #else
++ {"NO_CLOSE_BRACE", 14, 102},
++ #endif
++ #ifdef CONF_R_NO_CONF
++ {"NO_CONF", ERR_LIB_CONF, CONF_R_NO_CONF},
++ #else
++ {"NO_CONF", 14, 105},
++ #endif
++ #ifdef CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE
++ {"NO_CONF_OR_ENVIRONMENT_VARIABLE", ERR_LIB_CONF, CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE},
++ #else
++ {"NO_CONF_OR_ENVIRONMENT_VARIABLE", 14, 106},
++ #endif
++ #ifdef CONF_R_NO_SECTION
++ {"NO_SECTION", ERR_LIB_CONF, CONF_R_NO_SECTION},
++ #else
++ {"NO_SECTION", 14, 107},
++ #endif
++ #ifdef CONF_R_NO_SUCH_FILE
++ {"NO_SUCH_FILE", ERR_LIB_CONF, CONF_R_NO_SUCH_FILE},
++ #else
++ {"NO_SUCH_FILE", 14, 114},
++ #endif
++ #ifdef CONF_R_NO_VALUE
++ {"NO_VALUE", ERR_LIB_CONF, CONF_R_NO_VALUE},
++ #else
++ {"NO_VALUE", 14, 108},
++ #endif
++ #ifdef CONF_R_NUMBER_TOO_LARGE
++ {"NUMBER_TOO_LARGE", ERR_LIB_CONF, CONF_R_NUMBER_TOO_LARGE},
++ #else
++ {"NUMBER_TOO_LARGE", 14, 121},
++ #endif
++ #ifdef CONF_R_OPENSSL_CONF_REFERENCES_MISSING_SECTION
++ {"OPENSSL_CONF_REFERENCES_MISSING_SECTION", ERR_LIB_CONF, CONF_R_OPENSSL_CONF_REFERENCES_MISSING_SECTION},
++ #else
++ {"OPENSSL_CONF_REFERENCES_MISSING_SECTION", 14, 124},
++ #endif
++ #ifdef CONF_R_RECURSIVE_DIRECTORY_INCLUDE
++ {"RECURSIVE_DIRECTORY_INCLUDE", ERR_LIB_CONF, CONF_R_RECURSIVE_DIRECTORY_INCLUDE},
++ #else
++ {"RECURSIVE_DIRECTORY_INCLUDE", 14, 111},
++ #endif
++ #ifdef CONF_R_RECURSIVE_SECTION_REFERENCE
++ {"RECURSIVE_SECTION_REFERENCE", ERR_LIB_CONF, CONF_R_RECURSIVE_SECTION_REFERENCE},
++ #else
++ {"RECURSIVE_SECTION_REFERENCE", 14, 126},
++ #endif
++ #ifdef CONF_R_RELATIVE_PATH
++ {"RELATIVE_PATH", ERR_LIB_CONF, CONF_R_RELATIVE_PATH},
++ #else
++ {"RELATIVE_PATH", 14, 125},
++ #endif
++ #ifdef CONF_R_SSL_COMMAND_SECTION_EMPTY
++ {"SSL_COMMAND_SECTION_EMPTY", ERR_LIB_CONF, CONF_R_SSL_COMMAND_SECTION_EMPTY},
++ #else
++ {"SSL_COMMAND_SECTION_EMPTY", 14, 117},
++ #endif
++ #ifdef CONF_R_SSL_COMMAND_SECTION_NOT_FOUND
++ {"SSL_COMMAND_SECTION_NOT_FOUND", ERR_LIB_CONF, CONF_R_SSL_COMMAND_SECTION_NOT_FOUND},
++ #else
++ {"SSL_COMMAND_SECTION_NOT_FOUND", 14, 118},
++ #endif
++ #ifdef CONF_R_SSL_SECTION_EMPTY
++ {"SSL_SECTION_EMPTY", ERR_LIB_CONF, CONF_R_SSL_SECTION_EMPTY},
++ #else
++ {"SSL_SECTION_EMPTY", 14, 119},
++ #endif
++ #ifdef CONF_R_SSL_SECTION_NOT_FOUND
++ {"SSL_SECTION_NOT_FOUND", ERR_LIB_CONF, CONF_R_SSL_SECTION_NOT_FOUND},
++ #else
++ {"SSL_SECTION_NOT_FOUND", 14, 120},
++ #endif
++ #ifdef CONF_R_UNABLE_TO_CREATE_NEW_SECTION
++ {"UNABLE_TO_CREATE_NEW_SECTION", ERR_LIB_CONF, CONF_R_UNABLE_TO_CREATE_NEW_SECTION},
++ #else
++ {"UNABLE_TO_CREATE_NEW_SECTION", 14, 103},
++ #endif
++ #ifdef CONF_R_UNKNOWN_MODULE_NAME
++ {"UNKNOWN_MODULE_NAME", ERR_LIB_CONF, CONF_R_UNKNOWN_MODULE_NAME},
++ #else
++ {"UNKNOWN_MODULE_NAME", 14, 113},
++ #endif
++ #ifdef CONF_R_VARIABLE_EXPANSION_TOO_LONG
++ {"VARIABLE_EXPANSION_TOO_LONG", ERR_LIB_CONF, CONF_R_VARIABLE_EXPANSION_TOO_LONG},
++ #else
++ {"VARIABLE_EXPANSION_TOO_LONG", 14, 116},
++ #endif
++ #ifdef CONF_R_VARIABLE_HAS_NO_VALUE
++ {"VARIABLE_HAS_NO_VALUE", ERR_LIB_CONF, CONF_R_VARIABLE_HAS_NO_VALUE},
++ #else
++ {"VARIABLE_HAS_NO_VALUE", 14, 104},
++ #endif
++ #ifdef CRMF_R_BAD_PBM_ITERATIONCOUNT
++ {"BAD_PBM_ITERATIONCOUNT", ERR_LIB_CRMF, CRMF_R_BAD_PBM_ITERATIONCOUNT},
++ #else
++ {"BAD_PBM_ITERATIONCOUNT", 56, 100},
++ #endif
++ #ifdef CRMF_R_CMS_NOT_SUPPORTED
++ {"CMS_NOT_SUPPORTED", ERR_LIB_CRMF, CRMF_R_CMS_NOT_SUPPORTED},
++ #else
++ {"CMS_NOT_SUPPORTED", 56, 122},
++ #endif
++ #ifdef CRMF_R_CRMFERROR
++ {"CRMFERROR", ERR_LIB_CRMF, CRMF_R_CRMFERROR},
++ #else
++ {"CRMFERROR", 56, 102},
++ #endif
++ #ifdef CRMF_R_ERROR
++ {"ERROR", ERR_LIB_CRMF, CRMF_R_ERROR},
++ #else
++ {"ERROR", 56, 103},
++ #endif
++ #ifdef CRMF_R_ERROR_DECODING_CERTIFICATE
++ {"ERROR_DECODING_CERTIFICATE", ERR_LIB_CRMF, CRMF_R_ERROR_DECODING_CERTIFICATE},
++ #else
++ {"ERROR_DECODING_CERTIFICATE", 56, 104},
++ #endif
++ #ifdef CRMF_R_ERROR_DECODING_ENCRYPTEDKEY
++ {"ERROR_DECODING_ENCRYPTEDKEY", ERR_LIB_CRMF, CRMF_R_ERROR_DECODING_ENCRYPTEDKEY},
++ #else
++ {"ERROR_DECODING_ENCRYPTEDKEY", 56, 123},
++ #endif
++ #ifdef CRMF_R_ERROR_DECRYPTING_CERTIFICATE
++ {"ERROR_DECRYPTING_CERTIFICATE", ERR_LIB_CRMF, CRMF_R_ERROR_DECRYPTING_CERTIFICATE},
++ #else
++ {"ERROR_DECRYPTING_CERTIFICATE", 56, 105},
++ #endif
++ #ifdef CRMF_R_ERROR_DECRYPTING_ENCRYPTEDKEY
++ {"ERROR_DECRYPTING_ENCRYPTEDKEY", ERR_LIB_CRMF, CRMF_R_ERROR_DECRYPTING_ENCRYPTEDKEY},
++ #else
++ {"ERROR_DECRYPTING_ENCRYPTEDKEY", 56, 124},
++ #endif
++ #ifdef CRMF_R_ERROR_DECRYPTING_ENCRYPTEDVALUE
++ {"ERROR_DECRYPTING_ENCRYPTEDVALUE", ERR_LIB_CRMF, CRMF_R_ERROR_DECRYPTING_ENCRYPTEDVALUE},
++ #else
++ {"ERROR_DECRYPTING_ENCRYPTEDVALUE", 56, 125},
++ #endif
++ #ifdef CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY
++ {"ERROR_DECRYPTING_SYMMETRIC_KEY", ERR_LIB_CRMF, CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY},
++ #else
++ {"ERROR_DECRYPTING_SYMMETRIC_KEY", 56, 106},
++ #endif
++ #ifdef CRMF_R_ERROR_SETTING_PURPOSE
++ {"ERROR_SETTING_PURPOSE", ERR_LIB_CRMF, CRMF_R_ERROR_SETTING_PURPOSE},
++ #else
++ {"ERROR_SETTING_PURPOSE", 56, 126},
++ #endif
++ #ifdef CRMF_R_ERROR_SIGNING_POPO
++ {"ERROR_SIGNING_POPO", ERR_LIB_CRMF, CRMF_R_ERROR_SIGNING_POPO},
++ #else
++ {"ERROR_SIGNING_POPO", 56, 129},
++ #endif
++ #ifdef CRMF_R_ERROR_VERIFYING_ENCRYPTEDKEY
++ {"ERROR_VERIFYING_ENCRYPTEDKEY", ERR_LIB_CRMF, CRMF_R_ERROR_VERIFYING_ENCRYPTEDKEY},
++ #else
++ {"ERROR_VERIFYING_ENCRYPTEDKEY", 56, 127},
++ #endif
++ #ifdef CRMF_R_FAILURE_OBTAINING_RANDOM
++ {"FAILURE_OBTAINING_RANDOM", ERR_LIB_CRMF, CRMF_R_FAILURE_OBTAINING_RANDOM},
++ #else
++ {"FAILURE_OBTAINING_RANDOM", 56, 107},
++ #endif
++ #ifdef CRMF_R_ITERATIONCOUNT_BELOW_100
++ {"ITERATIONCOUNT_BELOW_100", ERR_LIB_CRMF, CRMF_R_ITERATIONCOUNT_BELOW_100},
++ #else
++ {"ITERATIONCOUNT_BELOW_100", 56, 108},
++ #endif
++ #ifdef CRMF_R_MALFORMED_IV
++ {"MALFORMED_IV", ERR_LIB_CRMF, CRMF_R_MALFORMED_IV},
++ #else
++ {"MALFORMED_IV", 56, 101},
++ #endif
++ #ifdef CRMF_R_NULL_ARGUMENT
++ {"NULL_ARGUMENT", ERR_LIB_CRMF, CRMF_R_NULL_ARGUMENT},
++ #else
++ {"NULL_ARGUMENT", 56, 109},
++ #endif
++ #ifdef CRMF_R_POPOSKINPUT_NOT_SUPPORTED
++ {"POPOSKINPUT_NOT_SUPPORTED", ERR_LIB_CRMF, CRMF_R_POPOSKINPUT_NOT_SUPPORTED},
++ #else
++ {"POPOSKINPUT_NOT_SUPPORTED", 56, 113},
++ #endif
++ #ifdef CRMF_R_POPO_INCONSISTENT_CENTRAL_KEYGEN
++ {"POPO_INCONSISTENT_CENTRAL_KEYGEN", ERR_LIB_CRMF, CRMF_R_POPO_INCONSISTENT_CENTRAL_KEYGEN},
++ #else
++ {"POPO_INCONSISTENT_CENTRAL_KEYGEN", 56, 128},
++ #endif
++ #ifdef CRMF_R_POPO_INCONSISTENT_PUBLIC_KEY
++ {"POPO_INCONSISTENT_PUBLIC_KEY", ERR_LIB_CRMF, CRMF_R_POPO_INCONSISTENT_PUBLIC_KEY},
++ #else
++ {"POPO_INCONSISTENT_PUBLIC_KEY", 56, 117},
++ #endif
++ #ifdef CRMF_R_POPO_MISSING
++ {"POPO_MISSING", ERR_LIB_CRMF, CRMF_R_POPO_MISSING},
++ #else
++ {"POPO_MISSING", 56, 121},
++ #endif
++ #ifdef CRMF_R_POPO_MISSING_PUBLIC_KEY
++ {"POPO_MISSING_PUBLIC_KEY", ERR_LIB_CRMF, CRMF_R_POPO_MISSING_PUBLIC_KEY},
++ #else
++ {"POPO_MISSING_PUBLIC_KEY", 56, 118},
++ #endif
++ #ifdef CRMF_R_POPO_MISSING_SUBJECT
++ {"POPO_MISSING_SUBJECT", ERR_LIB_CRMF, CRMF_R_POPO_MISSING_SUBJECT},
++ #else
++ {"POPO_MISSING_SUBJECT", 56, 119},
++ #endif
++ #ifdef CRMF_R_POPO_RAVERIFIED_NOT_ACCEPTED
++ {"POPO_RAVERIFIED_NOT_ACCEPTED", ERR_LIB_CRMF, CRMF_R_POPO_RAVERIFIED_NOT_ACCEPTED},
++ #else
++ {"POPO_RAVERIFIED_NOT_ACCEPTED", 56, 120},
++ #endif
++ #ifdef CRMF_R_SETTING_MAC_ALGOR_FAILURE
++ {"SETTING_MAC_ALGOR_FAILURE", ERR_LIB_CRMF, CRMF_R_SETTING_MAC_ALGOR_FAILURE},
++ #else
++ {"SETTING_MAC_ALGOR_FAILURE", 56, 110},
++ #endif
++ #ifdef CRMF_R_SETTING_OWF_ALGOR_FAILURE
++ {"SETTING_OWF_ALGOR_FAILURE", ERR_LIB_CRMF, CRMF_R_SETTING_OWF_ALGOR_FAILURE},
++ #else
++ {"SETTING_OWF_ALGOR_FAILURE", 56, 111},
++ #endif
++ #ifdef CRMF_R_UNSUPPORTED_ALGORITHM
++ {"UNSUPPORTED_ALGORITHM", ERR_LIB_CRMF, CRMF_R_UNSUPPORTED_ALGORITHM},
++ #else
++ {"UNSUPPORTED_ALGORITHM", 56, 112},
++ #endif
++ #ifdef CRMF_R_UNSUPPORTED_CIPHER
++ {"UNSUPPORTED_CIPHER", ERR_LIB_CRMF, CRMF_R_UNSUPPORTED_CIPHER},
++ #else
++ {"UNSUPPORTED_CIPHER", 56, 114},
++ #endif
++ #ifdef CRMF_R_UNSUPPORTED_METHOD_FOR_CREATING_POPO
++ {"UNSUPPORTED_METHOD_FOR_CREATING_POPO", ERR_LIB_CRMF, CRMF_R_UNSUPPORTED_METHOD_FOR_CREATING_POPO},
++ #else
++ {"UNSUPPORTED_METHOD_FOR_CREATING_POPO", 56, 115},
++ #endif
++ #ifdef CRMF_R_UNSUPPORTED_POPO_METHOD
++ {"UNSUPPORTED_POPO_METHOD", ERR_LIB_CRMF, CRMF_R_UNSUPPORTED_POPO_METHOD},
++ #else
++ {"UNSUPPORTED_POPO_METHOD", 56, 116},
++ #endif
++ #ifdef CRYPTO_R_BAD_ALGORITHM_NAME
++ {"BAD_ALGORITHM_NAME", ERR_LIB_CRYPTO, CRYPTO_R_BAD_ALGORITHM_NAME},
++ #else
++ {"BAD_ALGORITHM_NAME", 15, 117},
++ #endif
++ #ifdef CRYPTO_R_CONFLICTING_NAMES
++ {"CONFLICTING_NAMES", ERR_LIB_CRYPTO, CRYPTO_R_CONFLICTING_NAMES},
++ #else
++ {"CONFLICTING_NAMES", 15, 118},
++ #endif
++ #ifdef CRYPTO_R_HEX_STRING_TOO_SHORT
++ {"HEX_STRING_TOO_SHORT", ERR_LIB_CRYPTO, CRYPTO_R_HEX_STRING_TOO_SHORT},
++ #else
++ {"HEX_STRING_TOO_SHORT", 15, 121},
++ #endif
++ #ifdef CRYPTO_R_ILLEGAL_HEX_DIGIT
++ {"ILLEGAL_HEX_DIGIT", ERR_LIB_CRYPTO, CRYPTO_R_ILLEGAL_HEX_DIGIT},
++ #else
++ {"ILLEGAL_HEX_DIGIT", 15, 102},
++ #endif
++ #ifdef CRYPTO_R_INSUFFICIENT_DATA_SPACE
++ {"INSUFFICIENT_DATA_SPACE", ERR_LIB_CRYPTO, CRYPTO_R_INSUFFICIENT_DATA_SPACE},
++ #else
++ {"INSUFFICIENT_DATA_SPACE", 15, 106},
++ #endif
++ #ifdef CRYPTO_R_INSUFFICIENT_PARAM_SIZE
++ {"INSUFFICIENT_PARAM_SIZE", ERR_LIB_CRYPTO, CRYPTO_R_INSUFFICIENT_PARAM_SIZE},
++ #else
++ {"INSUFFICIENT_PARAM_SIZE", 15, 107},
++ #endif
++ #ifdef CRYPTO_R_INSUFFICIENT_SECURE_DATA_SPACE
++ {"INSUFFICIENT_SECURE_DATA_SPACE", ERR_LIB_CRYPTO, CRYPTO_R_INSUFFICIENT_SECURE_DATA_SPACE},
++ #else
++ {"INSUFFICIENT_SECURE_DATA_SPACE", 15, 108},
++ #endif
++ #ifdef CRYPTO_R_INTEGER_OVERFLOW
++ {"INTEGER_OVERFLOW", ERR_LIB_CRYPTO, CRYPTO_R_INTEGER_OVERFLOW},
++ #else
++ {"INTEGER_OVERFLOW", 15, 127},
++ #endif
++ #ifdef CRYPTO_R_INVALID_NEGATIVE_VALUE
++ {"INVALID_NEGATIVE_VALUE", ERR_LIB_CRYPTO, CRYPTO_R_INVALID_NEGATIVE_VALUE},
++ #else
++ {"INVALID_NEGATIVE_VALUE", 15, 122},
++ #endif
++ #ifdef CRYPTO_R_INVALID_NULL_ARGUMENT
++ {"INVALID_NULL_ARGUMENT", ERR_LIB_CRYPTO, CRYPTO_R_INVALID_NULL_ARGUMENT},
++ #else
++ {"INVALID_NULL_ARGUMENT", 15, 109},
++ #endif
++ #ifdef CRYPTO_R_INVALID_OSSL_PARAM_TYPE
++ {"INVALID_OSSL_PARAM_TYPE", ERR_LIB_CRYPTO, CRYPTO_R_INVALID_OSSL_PARAM_TYPE},
++ #else
++ {"INVALID_OSSL_PARAM_TYPE", 15, 110},
++ #endif
++ #ifdef CRYPTO_R_NO_PARAMS_TO_MERGE
++ {"NO_PARAMS_TO_MERGE", ERR_LIB_CRYPTO, CRYPTO_R_NO_PARAMS_TO_MERGE},
++ #else
++ {"NO_PARAMS_TO_MERGE", 15, 131},
++ #endif
++ #ifdef CRYPTO_R_NO_SPACE_FOR_TERMINATING_NULL
++ {"NO_SPACE_FOR_TERMINATING_NULL", ERR_LIB_CRYPTO, CRYPTO_R_NO_SPACE_FOR_TERMINATING_NULL},
++ #else
++ {"NO_SPACE_FOR_TERMINATING_NULL", 15, 128},
++ #endif
++ #ifdef CRYPTO_R_ODD_NUMBER_OF_DIGITS
++ {"ODD_NUMBER_OF_DIGITS", ERR_LIB_CRYPTO, CRYPTO_R_ODD_NUMBER_OF_DIGITS},
++ #else
++ {"ODD_NUMBER_OF_DIGITS", 15, 103},
++ #endif
++ #ifdef CRYPTO_R_PARAM_CANNOT_BE_REPRESENTED_EXACTLY
++ {"PARAM_CANNOT_BE_REPRESENTED_EXACTLY", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_CANNOT_BE_REPRESENTED_EXACTLY},
++ #else
++ {"PARAM_CANNOT_BE_REPRESENTED_EXACTLY", 15, 123},
++ #endif
++ #ifdef CRYPTO_R_PARAM_NOT_INTEGER_TYPE
++ {"PARAM_NOT_INTEGER_TYPE", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_NOT_INTEGER_TYPE},
++ #else
++ {"PARAM_NOT_INTEGER_TYPE", 15, 124},
++ #endif
++ #ifdef CRYPTO_R_PARAM_OF_INCOMPATIBLE_TYPE
++ {"PARAM_OF_INCOMPATIBLE_TYPE", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_OF_INCOMPATIBLE_TYPE},
++ #else
++ {"PARAM_OF_INCOMPATIBLE_TYPE", 15, 129},
++ #endif
++ #ifdef CRYPTO_R_PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED
++ {"PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED},
++ #else
++ {"PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED", 15, 125},
++ #endif
++ #ifdef CRYPTO_R_PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT
++ {"PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT},
++ #else
++ {"PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT", 15, 130},
++ #endif
++ #ifdef CRYPTO_R_PARAM_VALUE_TOO_LARGE_FOR_DESTINATION
++ {"PARAM_VALUE_TOO_LARGE_FOR_DESTINATION", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_VALUE_TOO_LARGE_FOR_DESTINATION},
++ #else
++ {"PARAM_VALUE_TOO_LARGE_FOR_DESTINATION", 15, 126},
++ #endif
++ #ifdef CRYPTO_R_PROVIDER_ALREADY_EXISTS
++ {"PROVIDER_ALREADY_EXISTS", ERR_LIB_CRYPTO, CRYPTO_R_PROVIDER_ALREADY_EXISTS},
++ #else
++ {"PROVIDER_ALREADY_EXISTS", 15, 104},
++ #endif
++ #ifdef CRYPTO_R_PROVIDER_SECTION_ERROR
++ {"PROVIDER_SECTION_ERROR", ERR_LIB_CRYPTO, CRYPTO_R_PROVIDER_SECTION_ERROR},
++ #else
++ {"PROVIDER_SECTION_ERROR", 15, 105},
++ #endif
++ #ifdef CRYPTO_R_RANDOM_SECTION_ERROR
++ {"RANDOM_SECTION_ERROR", ERR_LIB_CRYPTO, CRYPTO_R_RANDOM_SECTION_ERROR},
++ #else
++ {"RANDOM_SECTION_ERROR", 15, 119},
++ #endif
++ #ifdef CRYPTO_R_SECURE_MALLOC_FAILURE
++ {"SECURE_MALLOC_FAILURE", ERR_LIB_CRYPTO, CRYPTO_R_SECURE_MALLOC_FAILURE},
++ #else
++ {"SECURE_MALLOC_FAILURE", 15, 111},
++ #endif
++ #ifdef CRYPTO_R_STRING_TOO_LONG
++ {"STRING_TOO_LONG", ERR_LIB_CRYPTO, CRYPTO_R_STRING_TOO_LONG},
++ #else
++ {"STRING_TOO_LONG", 15, 112},
++ #endif
++ #ifdef CRYPTO_R_TOO_MANY_BYTES
++ {"TOO_MANY_BYTES", ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_BYTES},
++ #else
++ {"TOO_MANY_BYTES", 15, 113},
++ #endif
++ #ifdef CRYPTO_R_TOO_MANY_NAMES
++ {"TOO_MANY_NAMES", ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_NAMES},
++ #else
++ {"TOO_MANY_NAMES", 15, 132},
++ #endif
++ #ifdef CRYPTO_R_TOO_MANY_RECORDS
++ {"TOO_MANY_RECORDS", ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_RECORDS},
++ #else
++ {"TOO_MANY_RECORDS", 15, 114},
++ #endif
++ #ifdef CRYPTO_R_TOO_SMALL_BUFFER
++ {"TOO_SMALL_BUFFER", ERR_LIB_CRYPTO, CRYPTO_R_TOO_SMALL_BUFFER},
++ #else
++ {"TOO_SMALL_BUFFER", 15, 116},
++ #endif
++ #ifdef CRYPTO_R_UNKNOWN_NAME_IN_RANDOM_SECTION
++ {"UNKNOWN_NAME_IN_RANDOM_SECTION", ERR_LIB_CRYPTO, CRYPTO_R_UNKNOWN_NAME_IN_RANDOM_SECTION},
++ #else
++ {"UNKNOWN_NAME_IN_RANDOM_SECTION", 15, 120},
++ #endif
++ #ifdef CRYPTO_R_ZERO_LENGTH_NUMBER
++ {"ZERO_LENGTH_NUMBER", ERR_LIB_CRYPTO, CRYPTO_R_ZERO_LENGTH_NUMBER},
++ #else
++ {"ZERO_LENGTH_NUMBER", 15, 115},
++ #endif
++ #ifdef CT_R_BASE64_DECODE_ERROR
++ {"BASE64_DECODE_ERROR", ERR_LIB_CT, CT_R_BASE64_DECODE_ERROR},
++ #else
++ {"BASE64_DECODE_ERROR", 50, 108},
++ #endif
++ #ifdef CT_R_INVALID_LOG_ID_LENGTH
++ {"INVALID_LOG_ID_LENGTH", ERR_LIB_CT, CT_R_INVALID_LOG_ID_LENGTH},
++ #else
++ {"INVALID_LOG_ID_LENGTH", 50, 100},
++ #endif
++ #ifdef CT_R_LOG_CONF_INVALID
++ {"LOG_CONF_INVALID", ERR_LIB_CT, CT_R_LOG_CONF_INVALID},
++ #else
++ {"LOG_CONF_INVALID", 50, 109},
++ #endif
++ #ifdef CT_R_LOG_CONF_INVALID_KEY
++ {"LOG_CONF_INVALID_KEY", ERR_LIB_CT, CT_R_LOG_CONF_INVALID_KEY},
++ #else
++ {"LOG_CONF_INVALID_KEY", 50, 110},
++ #endif
++ #ifdef CT_R_LOG_CONF_MISSING_DESCRIPTION
++ {"LOG_CONF_MISSING_DESCRIPTION", ERR_LIB_CT, CT_R_LOG_CONF_MISSING_DESCRIPTION},
++ #else
++ {"LOG_CONF_MISSING_DESCRIPTION", 50, 111},
++ #endif
++ #ifdef CT_R_LOG_CONF_MISSING_KEY
++ {"LOG_CONF_MISSING_KEY", ERR_LIB_CT, CT_R_LOG_CONF_MISSING_KEY},
++ #else
++ {"LOG_CONF_MISSING_KEY", 50, 112},
++ #endif
++ #ifdef CT_R_LOG_KEY_INVALID
++ {"LOG_KEY_INVALID", ERR_LIB_CT, CT_R_LOG_KEY_INVALID},
++ #else
++ {"LOG_KEY_INVALID", 50, 113},
++ #endif
++ #ifdef CT_R_SCT_FUTURE_TIMESTAMP
++ {"SCT_FUTURE_TIMESTAMP", ERR_LIB_CT, CT_R_SCT_FUTURE_TIMESTAMP},
++ #else
++ {"SCT_FUTURE_TIMESTAMP", 50, 116},
++ #endif
++ #ifdef CT_R_SCT_INVALID
++ {"SCT_INVALID", ERR_LIB_CT, CT_R_SCT_INVALID},
++ #else
++ {"SCT_INVALID", 50, 104},
++ #endif
++ #ifdef CT_R_SCT_INVALID_SIGNATURE
++ {"SCT_INVALID_SIGNATURE", ERR_LIB_CT, CT_R_SCT_INVALID_SIGNATURE},
++ #else
++ {"SCT_INVALID_SIGNATURE", 50, 107},
++ #endif
++ #ifdef CT_R_SCT_LIST_INVALID
++ {"SCT_LIST_INVALID", ERR_LIB_CT, CT_R_SCT_LIST_INVALID},
++ #else
++ {"SCT_LIST_INVALID", 50, 105},
++ #endif
++ #ifdef CT_R_SCT_LOG_ID_MISMATCH
++ {"SCT_LOG_ID_MISMATCH", ERR_LIB_CT, CT_R_SCT_LOG_ID_MISMATCH},
++ #else
++ {"SCT_LOG_ID_MISMATCH", 50, 114},
++ #endif
++ #ifdef CT_R_SCT_NOT_SET
++ {"SCT_NOT_SET", ERR_LIB_CT, CT_R_SCT_NOT_SET},
++ #else
++ {"SCT_NOT_SET", 50, 106},
++ #endif
++ #ifdef CT_R_SCT_UNSUPPORTED_VERSION
++ {"SCT_UNSUPPORTED_VERSION", ERR_LIB_CT, CT_R_SCT_UNSUPPORTED_VERSION},
++ #else
++ {"SCT_UNSUPPORTED_VERSION", 50, 115},
++ #endif
++ #ifdef CT_R_UNRECOGNIZED_SIGNATURE_NID
++ {"UNRECOGNIZED_SIGNATURE_NID", ERR_LIB_CT, CT_R_UNRECOGNIZED_SIGNATURE_NID},
++ #else
++ {"UNRECOGNIZED_SIGNATURE_NID", 50, 101},
++ #endif
++ #ifdef CT_R_UNSUPPORTED_ENTRY_TYPE
++ {"UNSUPPORTED_ENTRY_TYPE", ERR_LIB_CT, CT_R_UNSUPPORTED_ENTRY_TYPE},
++ #else
++ {"UNSUPPORTED_ENTRY_TYPE", 50, 102},
++ #endif
++ #ifdef CT_R_UNSUPPORTED_VERSION
++ {"UNSUPPORTED_VERSION", ERR_LIB_CT, CT_R_UNSUPPORTED_VERSION},
++ #else
++ {"UNSUPPORTED_VERSION", 50, 103},
++ #endif
++ #ifdef DH_R_BAD_FFC_PARAMETERS
++ {"BAD_FFC_PARAMETERS", ERR_LIB_DH, DH_R_BAD_FFC_PARAMETERS},
++ #else
++ {"BAD_FFC_PARAMETERS", 5, 127},
++ #endif
++ #ifdef DH_R_BAD_GENERATOR
++ {"BAD_GENERATOR", ERR_LIB_DH, DH_R_BAD_GENERATOR},
++ #else
++ {"BAD_GENERATOR", 5, 101},
++ #endif
++ #ifdef DH_R_BN_DECODE_ERROR
++ {"BN_DECODE_ERROR", ERR_LIB_DH, DH_R_BN_DECODE_ERROR},
++ #else
++ {"BN_DECODE_ERROR", 5, 109},
++ #endif
++ #ifdef DH_R_BN_ERROR
++ {"BN_ERROR", ERR_LIB_DH, DH_R_BN_ERROR},
++ #else
++ {"BN_ERROR", 5, 106},
++ #endif
++ #ifdef DH_R_CHECK_INVALID_J_VALUE
++ {"CHECK_INVALID_J_VALUE", ERR_LIB_DH, DH_R_CHECK_INVALID_J_VALUE},
++ #else
++ {"CHECK_INVALID_J_VALUE", 5, 115},
++ #endif
++ #ifdef DH_R_CHECK_INVALID_Q_VALUE
++ {"CHECK_INVALID_Q_VALUE", ERR_LIB_DH, DH_R_CHECK_INVALID_Q_VALUE},
++ #else
++ {"CHECK_INVALID_Q_VALUE", 5, 116},
++ #endif
++ #ifdef DH_R_CHECK_PUBKEY_INVALID
++ {"CHECK_PUBKEY_INVALID", ERR_LIB_DH, DH_R_CHECK_PUBKEY_INVALID},
++ #else
++ {"CHECK_PUBKEY_INVALID", 5, 122},
++ #endif
++ #ifdef DH_R_CHECK_PUBKEY_TOO_LARGE
++ {"CHECK_PUBKEY_TOO_LARGE", ERR_LIB_DH, DH_R_CHECK_PUBKEY_TOO_LARGE},
++ #else
++ {"CHECK_PUBKEY_TOO_LARGE", 5, 123},
++ #endif
++ #ifdef DH_R_CHECK_PUBKEY_TOO_SMALL
++ {"CHECK_PUBKEY_TOO_SMALL", ERR_LIB_DH, DH_R_CHECK_PUBKEY_TOO_SMALL},
++ #else
++ {"CHECK_PUBKEY_TOO_SMALL", 5, 124},
++ #endif
++ #ifdef DH_R_CHECK_P_NOT_PRIME
++ {"CHECK_P_NOT_PRIME", ERR_LIB_DH, DH_R_CHECK_P_NOT_PRIME},
++ #else
++ {"CHECK_P_NOT_PRIME", 5, 117},
++ #endif
++ #ifdef DH_R_CHECK_P_NOT_SAFE_PRIME
++ {"CHECK_P_NOT_SAFE_PRIME", ERR_LIB_DH, DH_R_CHECK_P_NOT_SAFE_PRIME},
++ #else
++ {"CHECK_P_NOT_SAFE_PRIME", 5, 118},
++ #endif
++ #ifdef DH_R_CHECK_Q_NOT_PRIME
++ {"CHECK_Q_NOT_PRIME", ERR_LIB_DH, DH_R_CHECK_Q_NOT_PRIME},
++ #else
++ {"CHECK_Q_NOT_PRIME", 5, 119},
++ #endif
++ #ifdef DH_R_DECODE_ERROR
++ {"DECODE_ERROR", ERR_LIB_DH, DH_R_DECODE_ERROR},
++ #else
++ {"DECODE_ERROR", 5, 104},
++ #endif
++ #ifdef DH_R_INVALID_PARAMETER_NAME
++ {"INVALID_PARAMETER_NAME", ERR_LIB_DH, DH_R_INVALID_PARAMETER_NAME},
++ #else
++ {"INVALID_PARAMETER_NAME", 5, 110},
++ #endif
++ #ifdef DH_R_INVALID_PARAMETER_NID
++ {"INVALID_PARAMETER_NID", ERR_LIB_DH, DH_R_INVALID_PARAMETER_NID},
++ #else
++ {"INVALID_PARAMETER_NID", 5, 114},
++ #endif
++ #ifdef DH_R_INVALID_PUBKEY
++ {"INVALID_PUBKEY", ERR_LIB_DH, DH_R_INVALID_PUBKEY},
++ #else
++ {"INVALID_PUBKEY", 5, 102},
++ #endif
++ #ifdef DH_R_INVALID_SECRET
++ {"INVALID_SECRET", ERR_LIB_DH, DH_R_INVALID_SECRET},
++ #else
++ {"INVALID_SECRET", 5, 128},
++ #endif
++ #ifdef DH_R_INVALID_SIZE
++ {"INVALID_SIZE", ERR_LIB_DH, DH_R_INVALID_SIZE},
++ #else
++ {"INVALID_SIZE", 5, 129},
++ #endif
++ #ifdef DH_R_KDF_PARAMETER_ERROR
++ {"KDF_PARAMETER_ERROR", ERR_LIB_DH, DH_R_KDF_PARAMETER_ERROR},
++ #else
++ {"KDF_PARAMETER_ERROR", 5, 112},
++ #endif
++ #ifdef DH_R_KEYS_NOT_SET
++ {"KEYS_NOT_SET", ERR_LIB_DH, DH_R_KEYS_NOT_SET},
++ #else
++ {"KEYS_NOT_SET", 5, 108},
++ #endif
++ #ifdef DH_R_MISSING_PUBKEY
++ {"MISSING_PUBKEY", ERR_LIB_DH, DH_R_MISSING_PUBKEY},
++ #else
++ {"MISSING_PUBKEY", 5, 125},
++ #endif
++ #ifdef DH_R_MODULUS_TOO_LARGE
++ {"MODULUS_TOO_LARGE", ERR_LIB_DH, DH_R_MODULUS_TOO_LARGE},
++ #else
++ {"MODULUS_TOO_LARGE", 5, 103},
++ #endif
++ #ifdef DH_R_MODULUS_TOO_SMALL
++ {"MODULUS_TOO_SMALL", ERR_LIB_DH, DH_R_MODULUS_TOO_SMALL},
++ #else
++ {"MODULUS_TOO_SMALL", 5, 126},
++ #endif
++ #ifdef DH_R_NOT_SUITABLE_GENERATOR
++ {"NOT_SUITABLE_GENERATOR", ERR_LIB_DH, DH_R_NOT_SUITABLE_GENERATOR},
++ #else
++ {"NOT_SUITABLE_GENERATOR", 5, 120},
++ #endif
++ #ifdef DH_R_NO_PARAMETERS_SET
++ {"NO_PARAMETERS_SET", ERR_LIB_DH, DH_R_NO_PARAMETERS_SET},
++ #else
++ {"NO_PARAMETERS_SET", 5, 107},
++ #endif
++ #ifdef DH_R_NO_PRIVATE_VALUE
++ {"NO_PRIVATE_VALUE", ERR_LIB_DH, DH_R_NO_PRIVATE_VALUE},
++ #else
++ {"NO_PRIVATE_VALUE", 5, 100},
++ #endif
++ #ifdef DH_R_PARAMETER_ENCODING_ERROR
++ {"PARAMETER_ENCODING_ERROR", ERR_LIB_DH, DH_R_PARAMETER_ENCODING_ERROR},
++ #else
++ {"PARAMETER_ENCODING_ERROR", 5, 105},
++ #endif
++ #ifdef DH_R_PEER_KEY_ERROR
++ {"PEER_KEY_ERROR", ERR_LIB_DH, DH_R_PEER_KEY_ERROR},
++ #else
++ {"PEER_KEY_ERROR", 5, 111},
++ #endif
++ #ifdef DH_R_Q_TOO_LARGE
++ {"Q_TOO_LARGE", ERR_LIB_DH, DH_R_Q_TOO_LARGE},
++ #else
++ {"Q_TOO_LARGE", 5, 130},
++ #endif
++ #ifdef DH_R_SHARED_INFO_ERROR
++ {"SHARED_INFO_ERROR", ERR_LIB_DH, DH_R_SHARED_INFO_ERROR},
++ #else
++ {"SHARED_INFO_ERROR", 5, 113},
++ #endif
++ #ifdef DH_R_UNABLE_TO_CHECK_GENERATOR
++ {"UNABLE_TO_CHECK_GENERATOR", ERR_LIB_DH, DH_R_UNABLE_TO_CHECK_GENERATOR},
++ #else
++ {"UNABLE_TO_CHECK_GENERATOR", 5, 121},
++ #endif
++ #ifdef DSA_R_BAD_FFC_PARAMETERS
++ {"BAD_FFC_PARAMETERS", ERR_LIB_DSA, DSA_R_BAD_FFC_PARAMETERS},
++ #else
++ {"BAD_FFC_PARAMETERS", 10, 114},
++ #endif
++ #ifdef DSA_R_BAD_Q_VALUE
++ {"BAD_Q_VALUE", ERR_LIB_DSA, DSA_R_BAD_Q_VALUE},
++ #else
++ {"BAD_Q_VALUE", 10, 102},
++ #endif
++ #ifdef DSA_R_BN_DECODE_ERROR
++ {"BN_DECODE_ERROR", ERR_LIB_DSA, DSA_R_BN_DECODE_ERROR},
++ #else
++ {"BN_DECODE_ERROR", 10, 108},
++ #endif
++ #ifdef DSA_R_BN_ERROR
++ {"BN_ERROR", ERR_LIB_DSA, DSA_R_BN_ERROR},
++ #else
++ {"BN_ERROR", 10, 109},
++ #endif
++ #ifdef DSA_R_DECODE_ERROR
++ {"DECODE_ERROR", ERR_LIB_DSA, DSA_R_DECODE_ERROR},
++ #else
++ {"DECODE_ERROR", 10, 104},
++ #endif
++ #ifdef DSA_R_INVALID_DIGEST_TYPE
++ {"INVALID_DIGEST_TYPE", ERR_LIB_DSA, DSA_R_INVALID_DIGEST_TYPE},
++ #else
++ {"INVALID_DIGEST_TYPE", 10, 106},
++ #endif
++ #ifdef DSA_R_INVALID_PARAMETERS
++ {"INVALID_PARAMETERS", ERR_LIB_DSA, DSA_R_INVALID_PARAMETERS},
++ #else
++ {"INVALID_PARAMETERS", 10, 112},
++ #endif
++ #ifdef DSA_R_MISSING_PARAMETERS
++ {"MISSING_PARAMETERS", ERR_LIB_DSA, DSA_R_MISSING_PARAMETERS},
++ #else
++ {"MISSING_PARAMETERS", 10, 101},
++ #endif
++ #ifdef DSA_R_MISSING_PRIVATE_KEY
++ {"MISSING_PRIVATE_KEY", ERR_LIB_DSA, DSA_R_MISSING_PRIVATE_KEY},
++ #else
++ {"MISSING_PRIVATE_KEY", 10, 111},
++ #endif
++ #ifdef DSA_R_MODULUS_TOO_LARGE
++ {"MODULUS_TOO_LARGE", ERR_LIB_DSA, DSA_R_MODULUS_TOO_LARGE},
++ #else
++ {"MODULUS_TOO_LARGE", 10, 103},
++ #endif
++ #ifdef DSA_R_NO_PARAMETERS_SET
++ {"NO_PARAMETERS_SET", ERR_LIB_DSA, DSA_R_NO_PARAMETERS_SET},
++ #else
++ {"NO_PARAMETERS_SET", 10, 107},
++ #endif
++ #ifdef DSA_R_PARAMETER_ENCODING_ERROR
++ {"PARAMETER_ENCODING_ERROR", ERR_LIB_DSA, DSA_R_PARAMETER_ENCODING_ERROR},
++ #else
++ {"PARAMETER_ENCODING_ERROR", 10, 105},
++ #endif
++ #ifdef DSA_R_P_NOT_PRIME
++ {"P_NOT_PRIME", ERR_LIB_DSA, DSA_R_P_NOT_PRIME},
++ #else
++ {"P_NOT_PRIME", 10, 115},
++ #endif
++ #ifdef DSA_R_Q_NOT_PRIME
++ {"Q_NOT_PRIME", ERR_LIB_DSA, DSA_R_Q_NOT_PRIME},
++ #else
++ {"Q_NOT_PRIME", 10, 113},
++ #endif
++ #ifdef DSA_R_SEED_LEN_SMALL
++ {"SEED_LEN_SMALL", ERR_LIB_DSA, DSA_R_SEED_LEN_SMALL},
++ #else
++ {"SEED_LEN_SMALL", 10, 110},
++ #endif
++ #ifdef DSA_R_TOO_MANY_RETRIES
++ {"TOO_MANY_RETRIES", ERR_LIB_DSA, DSA_R_TOO_MANY_RETRIES},
++ #else
++ {"TOO_MANY_RETRIES", 10, 116},
++ #endif
++ #ifdef DSO_R_CTRL_FAILED
++ {"CTRL_FAILED", ERR_LIB_DSO, DSO_R_CTRL_FAILED},
++ #else
++ {"CTRL_FAILED", 37, 100},
++ #endif
++ #ifdef DSO_R_DSO_ALREADY_LOADED
++ {"DSO_ALREADY_LOADED", ERR_LIB_DSO, DSO_R_DSO_ALREADY_LOADED},
++ #else
++ {"DSO_ALREADY_LOADED", 37, 110},
++ #endif
++ #ifdef DSO_R_EMPTY_FILE_STRUCTURE
++ {"EMPTY_FILE_STRUCTURE", ERR_LIB_DSO, DSO_R_EMPTY_FILE_STRUCTURE},
++ #else
++ {"EMPTY_FILE_STRUCTURE", 37, 113},
++ #endif
++ #ifdef DSO_R_FAILURE
++ {"FAILURE", ERR_LIB_DSO, DSO_R_FAILURE},
++ #else
++ {"FAILURE", 37, 114},
++ #endif
++ #ifdef DSO_R_FILENAME_TOO_BIG
++ {"FILENAME_TOO_BIG", ERR_LIB_DSO, DSO_R_FILENAME_TOO_BIG},
++ #else
++ {"FILENAME_TOO_BIG", 37, 101},
++ #endif
++ #ifdef DSO_R_FINISH_FAILED
++ {"FINISH_FAILED", ERR_LIB_DSO, DSO_R_FINISH_FAILED},
++ #else
++ {"FINISH_FAILED", 37, 102},
++ #endif
++ #ifdef DSO_R_INCORRECT_FILE_SYNTAX
++ {"INCORRECT_FILE_SYNTAX", ERR_LIB_DSO, DSO_R_INCORRECT_FILE_SYNTAX},
++ #else
++ {"INCORRECT_FILE_SYNTAX", 37, 115},
++ #endif
++ #ifdef DSO_R_LOAD_FAILED
++ {"LOAD_FAILED", ERR_LIB_DSO, DSO_R_LOAD_FAILED},
++ #else
++ {"LOAD_FAILED", 37, 103},
++ #endif
++ #ifdef DSO_R_NAME_TRANSLATION_FAILED
++ {"NAME_TRANSLATION_FAILED", ERR_LIB_DSO, DSO_R_NAME_TRANSLATION_FAILED},
++ #else
++ {"NAME_TRANSLATION_FAILED", 37, 109},
++ #endif
++ #ifdef DSO_R_NO_FILENAME
++ {"NO_FILENAME", ERR_LIB_DSO, DSO_R_NO_FILENAME},
++ #else
++ {"NO_FILENAME", 37, 111},
++ #endif
++ #ifdef DSO_R_NULL_HANDLE
++ {"NULL_HANDLE", ERR_LIB_DSO, DSO_R_NULL_HANDLE},
++ #else
++ {"NULL_HANDLE", 37, 104},
++ #endif
++ #ifdef DSO_R_SET_FILENAME_FAILED
++ {"SET_FILENAME_FAILED", ERR_LIB_DSO, DSO_R_SET_FILENAME_FAILED},
++ #else
++ {"SET_FILENAME_FAILED", 37, 112},
++ #endif
++ #ifdef DSO_R_STACK_ERROR
++ {"STACK_ERROR", ERR_LIB_DSO, DSO_R_STACK_ERROR},
++ #else
++ {"STACK_ERROR", 37, 105},
++ #endif
++ #ifdef DSO_R_SYM_FAILURE
++ {"SYM_FAILURE", ERR_LIB_DSO, DSO_R_SYM_FAILURE},
++ #else
++ {"SYM_FAILURE", 37, 106},
++ #endif
++ #ifdef DSO_R_UNLOAD_FAILED
++ {"UNLOAD_FAILED", ERR_LIB_DSO, DSO_R_UNLOAD_FAILED},
++ #else
++ {"UNLOAD_FAILED", 37, 107},
++ #endif
++ #ifdef DSO_R_UNSUPPORTED
++ {"UNSUPPORTED", ERR_LIB_DSO, DSO_R_UNSUPPORTED},
++ #else
++ {"UNSUPPORTED", 37, 108},
++ #endif
++ #ifdef EC_R_ASN1_ERROR
++ {"ASN1_ERROR", ERR_LIB_EC, EC_R_ASN1_ERROR},
++ #else
++ {"ASN1_ERROR", 16, 115},
++ #endif
++ #ifdef EC_R_BAD_SIGNATURE
++ {"BAD_SIGNATURE", ERR_LIB_EC, EC_R_BAD_SIGNATURE},
++ #else
++ {"BAD_SIGNATURE", 16, 156},
++ #endif
++ #ifdef EC_R_BIGNUM_OUT_OF_RANGE
++ {"BIGNUM_OUT_OF_RANGE", ERR_LIB_EC, EC_R_BIGNUM_OUT_OF_RANGE},
++ #else
++ {"BIGNUM_OUT_OF_RANGE", 16, 144},
++ #endif
++ #ifdef EC_R_BUFFER_TOO_SMALL
++ {"BUFFER_TOO_SMALL", ERR_LIB_EC, EC_R_BUFFER_TOO_SMALL},
++ #else
++ {"BUFFER_TOO_SMALL", 16, 100},
++ #endif
++ #ifdef EC_R_CANNOT_INVERT
++ {"CANNOT_INVERT", ERR_LIB_EC, EC_R_CANNOT_INVERT},
++ #else
++ {"CANNOT_INVERT", 16, 165},
++ #endif
++ #ifdef EC_R_COORDINATES_OUT_OF_RANGE
++ {"COORDINATES_OUT_OF_RANGE", ERR_LIB_EC, EC_R_COORDINATES_OUT_OF_RANGE},
++ #else
++ {"COORDINATES_OUT_OF_RANGE", 16, 146},
++ #endif
++ #ifdef EC_R_CURVE_DOES_NOT_SUPPORT_ECDH
++ {"CURVE_DOES_NOT_SUPPORT_ECDH", ERR_LIB_EC, EC_R_CURVE_DOES_NOT_SUPPORT_ECDH},
++ #else
++ {"CURVE_DOES_NOT_SUPPORT_ECDH", 16, 160},
++ #endif
++ #ifdef EC_R_CURVE_DOES_NOT_SUPPORT_ECDSA
++ {"CURVE_DOES_NOT_SUPPORT_ECDSA", ERR_LIB_EC, EC_R_CURVE_DOES_NOT_SUPPORT_ECDSA},
++ #else
++ {"CURVE_DOES_NOT_SUPPORT_ECDSA", 16, 170},
++ #endif
++ #ifdef EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING
++ {"CURVE_DOES_NOT_SUPPORT_SIGNING", ERR_LIB_EC, EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING},
++ #else
++ {"CURVE_DOES_NOT_SUPPORT_SIGNING", 16, 159},
++ #endif
++ #ifdef EC_R_DECODE_ERROR
++ {"DECODE_ERROR", ERR_LIB_EC, EC_R_DECODE_ERROR},
++ #else
++ {"DECODE_ERROR", 16, 142},
++ #endif
++ #ifdef EC_R_DISCRIMINANT_IS_ZERO
++ {"DISCRIMINANT_IS_ZERO", ERR_LIB_EC, EC_R_DISCRIMINANT_IS_ZERO},
++ #else
++ {"DISCRIMINANT_IS_ZERO", 16, 118},
++ #endif
++ #ifdef EC_R_EC_GROUP_NEW_BY_NAME_FAILURE
++ {"EC_GROUP_NEW_BY_NAME_FAILURE", ERR_LIB_EC, EC_R_EC_GROUP_NEW_BY_NAME_FAILURE},
++ #else
++ {"EC_GROUP_NEW_BY_NAME_FAILURE", 16, 119},
++ #endif
++ #ifdef EC_R_EXPLICIT_PARAMS_NOT_SUPPORTED
++ {"EXPLICIT_PARAMS_NOT_SUPPORTED", ERR_LIB_EC, EC_R_EXPLICIT_PARAMS_NOT_SUPPORTED},
++ #else
++ {"EXPLICIT_PARAMS_NOT_SUPPORTED", 16, 127},
++ #endif
++ #ifdef EC_R_FAILED_MAKING_PUBLIC_KEY
++ {"FAILED_MAKING_PUBLIC_KEY", ERR_LIB_EC, EC_R_FAILED_MAKING_PUBLIC_KEY},
++ #else
++ {"FAILED_MAKING_PUBLIC_KEY", 16, 166},
++ #endif
++ #ifdef EC_R_FIELD_TOO_LARGE
++ {"FIELD_TOO_LARGE", ERR_LIB_EC, EC_R_FIELD_TOO_LARGE},
++ #else
++ {"FIELD_TOO_LARGE", 16, 143},
++ #endif
++ #ifdef EC_R_GF2M_NOT_SUPPORTED
++ {"GF2M_NOT_SUPPORTED", ERR_LIB_EC, EC_R_GF2M_NOT_SUPPORTED},
++ #else
++ {"GF2M_NOT_SUPPORTED", 16, 147},
++ #endif
++ #ifdef EC_R_GROUP2PKPARAMETERS_FAILURE
++ {"GROUP2PKPARAMETERS_FAILURE", ERR_LIB_EC, EC_R_GROUP2PKPARAMETERS_FAILURE},
++ #else
++ {"GROUP2PKPARAMETERS_FAILURE", 16, 120},
++ #endif
++ #ifdef EC_R_I2D_ECPKPARAMETERS_FAILURE
++ {"I2D_ECPKPARAMETERS_FAILURE", ERR_LIB_EC, EC_R_I2D_ECPKPARAMETERS_FAILURE},
++ #else
++ {"I2D_ECPKPARAMETERS_FAILURE", 16, 121},
++ #endif
++ #ifdef EC_R_INCOMPATIBLE_OBJECTS
++ {"INCOMPATIBLE_OBJECTS", ERR_LIB_EC, EC_R_INCOMPATIBLE_OBJECTS},
++ #else
++ {"INCOMPATIBLE_OBJECTS", 16, 101},
++ #endif
++ #ifdef EC_R_INVALID_A
++ {"INVALID_A", ERR_LIB_EC, EC_R_INVALID_A},
++ #else
++ {"INVALID_A", 16, 168},
++ #endif
++ #ifdef EC_R_INVALID_ARGUMENT
++ {"INVALID_ARGUMENT", ERR_LIB_EC, EC_R_INVALID_ARGUMENT},
++ #else
++ {"INVALID_ARGUMENT", 16, 112},
++ #endif
++ #ifdef EC_R_INVALID_B
++ {"INVALID_B", ERR_LIB_EC, EC_R_INVALID_B},
++ #else
++ {"INVALID_B", 16, 169},
++ #endif
++ #ifdef EC_R_INVALID_COFACTOR
++ {"INVALID_COFACTOR", ERR_LIB_EC, EC_R_INVALID_COFACTOR},
++ #else
++ {"INVALID_COFACTOR", 16, 171},
++ #endif
++ #ifdef EC_R_INVALID_COMPRESSED_POINT
++ {"INVALID_COMPRESSED_POINT", ERR_LIB_EC, EC_R_INVALID_COMPRESSED_POINT},
++ #else
++ {"INVALID_COMPRESSED_POINT", 16, 110},
++ #endif
++ #ifdef EC_R_INVALID_COMPRESSION_BIT
++ {"INVALID_COMPRESSION_BIT", ERR_LIB_EC, EC_R_INVALID_COMPRESSION_BIT},
++ #else
++ {"INVALID_COMPRESSION_BIT", 16, 109},
++ #endif
++ #ifdef EC_R_INVALID_CURVE
++ {"INVALID_CURVE", ERR_LIB_EC, EC_R_INVALID_CURVE},
++ #else
++ {"INVALID_CURVE", 16, 141},
++ #endif
++ #ifdef EC_R_INVALID_DIGEST
++ {"INVALID_DIGEST", ERR_LIB_EC, EC_R_INVALID_DIGEST},
++ #else
++ {"INVALID_DIGEST", 16, 151},
++ #endif
++ #ifdef EC_R_INVALID_DIGEST_TYPE
++ {"INVALID_DIGEST_TYPE", ERR_LIB_EC, EC_R_INVALID_DIGEST_TYPE},
++ #else
++ {"INVALID_DIGEST_TYPE", 16, 138},
++ #endif
++ #ifdef EC_R_INVALID_ENCODING
++ {"INVALID_ENCODING", ERR_LIB_EC, EC_R_INVALID_ENCODING},
++ #else
++ {"INVALID_ENCODING", 16, 102},
++ #endif
++ #ifdef EC_R_INVALID_FIELD
++ {"INVALID_FIELD", ERR_LIB_EC, EC_R_INVALID_FIELD},
++ #else
++ {"INVALID_FIELD", 16, 103},
++ #endif
++ #ifdef EC_R_INVALID_FORM
++ {"INVALID_FORM", ERR_LIB_EC, EC_R_INVALID_FORM},
++ #else
++ {"INVALID_FORM", 16, 104},
++ #endif
++ #ifdef EC_R_INVALID_GENERATOR
++ {"INVALID_GENERATOR", ERR_LIB_EC, EC_R_INVALID_GENERATOR},
++ #else
++ {"INVALID_GENERATOR", 16, 173},
++ #endif
++ #ifdef EC_R_INVALID_GROUP_ORDER
++ {"INVALID_GROUP_ORDER", ERR_LIB_EC, EC_R_INVALID_GROUP_ORDER},
++ #else
++ {"INVALID_GROUP_ORDER", 16, 122},
++ #endif
++ #ifdef EC_R_INVALID_KEY
++ {"INVALID_KEY", ERR_LIB_EC, EC_R_INVALID_KEY},
++ #else
++ {"INVALID_KEY", 16, 116},
++ #endif
++ #ifdef EC_R_INVALID_LENGTH
++ {"INVALID_LENGTH", ERR_LIB_EC, EC_R_INVALID_LENGTH},
++ #else
++ {"INVALID_LENGTH", 16, 117},
++ #endif
++ #ifdef EC_R_INVALID_NAMED_GROUP_CONVERSION
++ {"INVALID_NAMED_GROUP_CONVERSION", ERR_LIB_EC, EC_R_INVALID_NAMED_GROUP_CONVERSION},
++ #else
++ {"INVALID_NAMED_GROUP_CONVERSION", 16, 174},
++ #endif
++ #ifdef EC_R_INVALID_OUTPUT_LENGTH
++ {"INVALID_OUTPUT_LENGTH", ERR_LIB_EC, EC_R_INVALID_OUTPUT_LENGTH},
++ #else
++ {"INVALID_OUTPUT_LENGTH", 16, 161},
++ #endif
++ #ifdef EC_R_INVALID_P
++ {"INVALID_P", ERR_LIB_EC, EC_R_INVALID_P},
++ #else
++ {"INVALID_P", 16, 172},
++ #endif
++ #ifdef EC_R_INVALID_PEER_KEY
++ {"INVALID_PEER_KEY", ERR_LIB_EC, EC_R_INVALID_PEER_KEY},
++ #else
++ {"INVALID_PEER_KEY", 16, 133},
++ #endif
++ #ifdef EC_R_INVALID_PENTANOMIAL_BASIS
++ {"INVALID_PENTANOMIAL_BASIS", ERR_LIB_EC, EC_R_INVALID_PENTANOMIAL_BASIS},
++ #else
++ {"INVALID_PENTANOMIAL_BASIS", 16, 132},
++ #endif
++ #ifdef EC_R_INVALID_PRIVATE_KEY
++ {"INVALID_PRIVATE_KEY", ERR_LIB_EC, EC_R_INVALID_PRIVATE_KEY},
++ #else
++ {"INVALID_PRIVATE_KEY", 16, 123},
++ #endif
++ #ifdef EC_R_INVALID_SEED
++ {"INVALID_SEED", ERR_LIB_EC, EC_R_INVALID_SEED},
++ #else
++ {"INVALID_SEED", 16, 175},
++ #endif
++ #ifdef EC_R_INVALID_TRINOMIAL_BASIS
++ {"INVALID_TRINOMIAL_BASIS", ERR_LIB_EC, EC_R_INVALID_TRINOMIAL_BASIS},
++ #else
++ {"INVALID_TRINOMIAL_BASIS", 16, 137},
++ #endif
++ #ifdef EC_R_KDF_PARAMETER_ERROR
++ {"KDF_PARAMETER_ERROR", ERR_LIB_EC, EC_R_KDF_PARAMETER_ERROR},
++ #else
++ {"KDF_PARAMETER_ERROR", 16, 148},
++ #endif
++ #ifdef EC_R_KEYS_NOT_SET
++ {"KEYS_NOT_SET", ERR_LIB_EC, EC_R_KEYS_NOT_SET},
++ #else
++ {"KEYS_NOT_SET", 16, 140},
++ #endif
++ #ifdef EC_R_LADDER_POST_FAILURE
++ {"LADDER_POST_FAILURE", ERR_LIB_EC, EC_R_LADDER_POST_FAILURE},
++ #else
++ {"LADDER_POST_FAILURE", 16, 136},
++ #endif
++ #ifdef EC_R_LADDER_PRE_FAILURE
++ {"LADDER_PRE_FAILURE", ERR_LIB_EC, EC_R_LADDER_PRE_FAILURE},
++ #else
++ {"LADDER_PRE_FAILURE", 16, 153},
++ #endif
++ #ifdef EC_R_LADDER_STEP_FAILURE
++ {"LADDER_STEP_FAILURE", ERR_LIB_EC, EC_R_LADDER_STEP_FAILURE},
++ #else
++ {"LADDER_STEP_FAILURE", 16, 162},
++ #endif
++ #ifdef EC_R_MISSING_OID
++ {"MISSING_OID", ERR_LIB_EC, EC_R_MISSING_OID},
++ #else
++ {"MISSING_OID", 16, 167},
++ #endif
++ #ifdef EC_R_MISSING_PARAMETERS
++ {"MISSING_PARAMETERS", ERR_LIB_EC, EC_R_MISSING_PARAMETERS},
++ #else
++ {"MISSING_PARAMETERS", 16, 124},
++ #endif
++ #ifdef EC_R_MISSING_PRIVATE_KEY
++ {"MISSING_PRIVATE_KEY", ERR_LIB_EC, EC_R_MISSING_PRIVATE_KEY},
++ #else
++ {"MISSING_PRIVATE_KEY", 16, 125},
++ #endif
++ #ifdef EC_R_NEED_NEW_SETUP_VALUES
++ {"NEED_NEW_SETUP_VALUES", ERR_LIB_EC, EC_R_NEED_NEW_SETUP_VALUES},
++ #else
++ {"NEED_NEW_SETUP_VALUES", 16, 157},
++ #endif
++ #ifdef EC_R_NOT_A_NIST_PRIME
++ {"NOT_A_NIST_PRIME", ERR_LIB_EC, EC_R_NOT_A_NIST_PRIME},
++ #else
++ {"NOT_A_NIST_PRIME", 16, 135},
++ #endif
++ #ifdef EC_R_NOT_IMPLEMENTED
++ {"NOT_IMPLEMENTED", ERR_LIB_EC, EC_R_NOT_IMPLEMENTED},
++ #else
++ {"NOT_IMPLEMENTED", 16, 126},
++ #endif
++ #ifdef EC_R_NOT_INITIALIZED
++ {"NOT_INITIALIZED", ERR_LIB_EC, EC_R_NOT_INITIALIZED},
++ #else
++ {"NOT_INITIALIZED", 16, 111},
++ #endif
++ #ifdef EC_R_NO_PARAMETERS_SET
++ {"NO_PARAMETERS_SET", ERR_LIB_EC, EC_R_NO_PARAMETERS_SET},
++ #else
++ {"NO_PARAMETERS_SET", 16, 139},
++ #endif
++ #ifdef EC_R_NO_PRIVATE_VALUE
++ {"NO_PRIVATE_VALUE", ERR_LIB_EC, EC_R_NO_PRIVATE_VALUE},
++ #else
++ {"NO_PRIVATE_VALUE", 16, 154},
++ #endif
++ #ifdef EC_R_OPERATION_NOT_SUPPORTED
++ {"OPERATION_NOT_SUPPORTED", ERR_LIB_EC, EC_R_OPERATION_NOT_SUPPORTED},
++ #else
++ {"OPERATION_NOT_SUPPORTED", 16, 152},
++ #endif
++ #ifdef EC_R_PASSED_NULL_PARAMETER
++ {"PASSED_NULL_PARAMETER", ERR_LIB_EC, EC_R_PASSED_NULL_PARAMETER},
++ #else
++ {"PASSED_NULL_PARAMETER", 16, 134},
++ #endif
++ #ifdef EC_R_PEER_KEY_ERROR
++ {"PEER_KEY_ERROR", ERR_LIB_EC, EC_R_PEER_KEY_ERROR},
++ #else
++ {"PEER_KEY_ERROR", 16, 149},
++ #endif
++ #ifdef EC_R_POINT_ARITHMETIC_FAILURE
++ {"POINT_ARITHMETIC_FAILURE", ERR_LIB_EC, EC_R_POINT_ARITHMETIC_FAILURE},
++ #else
++ {"POINT_ARITHMETIC_FAILURE", 16, 155},
++ #endif
++ #ifdef EC_R_POINT_AT_INFINITY
++ {"POINT_AT_INFINITY", ERR_LIB_EC, EC_R_POINT_AT_INFINITY},
++ #else
++ {"POINT_AT_INFINITY", 16, 106},
++ #endif
++ #ifdef EC_R_POINT_COORDINATES_BLIND_FAILURE
++ {"POINT_COORDINATES_BLIND_FAILURE", ERR_LIB_EC, EC_R_POINT_COORDINATES_BLIND_FAILURE},
++ #else
++ {"POINT_COORDINATES_BLIND_FAILURE", 16, 163},
++ #endif
++ #ifdef EC_R_POINT_IS_NOT_ON_CURVE
++ {"POINT_IS_NOT_ON_CURVE", ERR_LIB_EC, EC_R_POINT_IS_NOT_ON_CURVE},
++ #else
++ {"POINT_IS_NOT_ON_CURVE", 16, 107},
++ #endif
++ #ifdef EC_R_RANDOM_NUMBER_GENERATION_FAILED
++ {"RANDOM_NUMBER_GENERATION_FAILED", ERR_LIB_EC, EC_R_RANDOM_NUMBER_GENERATION_FAILED},
++ #else
++ {"RANDOM_NUMBER_GENERATION_FAILED", 16, 158},
++ #endif
++ #ifdef EC_R_SHARED_INFO_ERROR
++ {"SHARED_INFO_ERROR", ERR_LIB_EC, EC_R_SHARED_INFO_ERROR},
++ #else
++ {"SHARED_INFO_ERROR", 16, 150},
++ #endif
++ #ifdef EC_R_SLOT_FULL
++ {"SLOT_FULL", ERR_LIB_EC, EC_R_SLOT_FULL},
++ #else
++ {"SLOT_FULL", 16, 108},
++ #endif
++ #ifdef EC_R_TOO_MANY_RETRIES
++ {"TOO_MANY_RETRIES", ERR_LIB_EC, EC_R_TOO_MANY_RETRIES},
++ #else
++ {"TOO_MANY_RETRIES", 16, 176},
++ #endif
++ #ifdef EC_R_UNDEFINED_GENERATOR
++ {"UNDEFINED_GENERATOR", ERR_LIB_EC, EC_R_UNDEFINED_GENERATOR},
++ #else
++ {"UNDEFINED_GENERATOR", 16, 113},
++ #endif
++ #ifdef EC_R_UNDEFINED_ORDER
++ {"UNDEFINED_ORDER", ERR_LIB_EC, EC_R_UNDEFINED_ORDER},
++ #else
++ {"UNDEFINED_ORDER", 16, 128},
++ #endif
++ #ifdef EC_R_UNKNOWN_COFACTOR
++ {"UNKNOWN_COFACTOR", ERR_LIB_EC, EC_R_UNKNOWN_COFACTOR},
++ #else
++ {"UNKNOWN_COFACTOR", 16, 164},
++ #endif
++ #ifdef EC_R_UNKNOWN_GROUP
++ {"UNKNOWN_GROUP", ERR_LIB_EC, EC_R_UNKNOWN_GROUP},
++ #else
++ {"UNKNOWN_GROUP", 16, 129},
++ #endif
++ #ifdef EC_R_UNKNOWN_ORDER
++ {"UNKNOWN_ORDER", ERR_LIB_EC, EC_R_UNKNOWN_ORDER},
++ #else
++ {"UNKNOWN_ORDER", 16, 114},
++ #endif
++ #ifdef EC_R_UNSUPPORTED_FIELD
++ {"UNSUPPORTED_FIELD", ERR_LIB_EC, EC_R_UNSUPPORTED_FIELD},
++ #else
++ {"UNSUPPORTED_FIELD", 16, 131},
++ #endif
++ #ifdef EC_R_WRONG_CURVE_PARAMETERS
++ {"WRONG_CURVE_PARAMETERS", ERR_LIB_EC, EC_R_WRONG_CURVE_PARAMETERS},
++ #else
++ {"WRONG_CURVE_PARAMETERS", 16, 145},
++ #endif
++ #ifdef EC_R_WRONG_ORDER
++ {"WRONG_ORDER", ERR_LIB_EC, EC_R_WRONG_ORDER},
++ #else
++ {"WRONG_ORDER", 16, 130},
++ #endif
++ #ifdef ESS_R_EMPTY_ESS_CERT_ID_LIST
++ {"EMPTY_ESS_CERT_ID_LIST", ERR_LIB_ESS, ESS_R_EMPTY_ESS_CERT_ID_LIST},
++ #else
++ {"EMPTY_ESS_CERT_ID_LIST", 54, 107},
++ #endif
++ #ifdef ESS_R_ESS_CERT_DIGEST_ERROR
++ {"ESS_CERT_DIGEST_ERROR", ERR_LIB_ESS, ESS_R_ESS_CERT_DIGEST_ERROR},
++ #else
++ {"ESS_CERT_DIGEST_ERROR", 54, 103},
++ #endif
++ #ifdef ESS_R_ESS_CERT_ID_NOT_FOUND
++ {"ESS_CERT_ID_NOT_FOUND", ERR_LIB_ESS, ESS_R_ESS_CERT_ID_NOT_FOUND},
++ #else
++ {"ESS_CERT_ID_NOT_FOUND", 54, 104},
++ #endif
++ #ifdef ESS_R_ESS_CERT_ID_WRONG_ORDER
++ {"ESS_CERT_ID_WRONG_ORDER", ERR_LIB_ESS, ESS_R_ESS_CERT_ID_WRONG_ORDER},
++ #else
++ {"ESS_CERT_ID_WRONG_ORDER", 54, 105},
++ #endif
++ #ifdef ESS_R_ESS_DIGEST_ALG_UNKNOWN
++ {"ESS_DIGEST_ALG_UNKNOWN", ERR_LIB_ESS, ESS_R_ESS_DIGEST_ALG_UNKNOWN},
++ #else
++ {"ESS_DIGEST_ALG_UNKNOWN", 54, 106},
++ #endif
++ #ifdef ESS_R_ESS_SIGNING_CERTIFICATE_ERROR
++ {"ESS_SIGNING_CERTIFICATE_ERROR", ERR_LIB_ESS, ESS_R_ESS_SIGNING_CERTIFICATE_ERROR},
++ #else
++ {"ESS_SIGNING_CERTIFICATE_ERROR", 54, 102},
++ #endif
++ #ifdef ESS_R_ESS_SIGNING_CERT_ADD_ERROR
++ {"ESS_SIGNING_CERT_ADD_ERROR", ERR_LIB_ESS, ESS_R_ESS_SIGNING_CERT_ADD_ERROR},
++ #else
++ {"ESS_SIGNING_CERT_ADD_ERROR", 54, 100},
++ #endif
++ #ifdef ESS_R_ESS_SIGNING_CERT_V2_ADD_ERROR
++ {"ESS_SIGNING_CERT_V2_ADD_ERROR", ERR_LIB_ESS, ESS_R_ESS_SIGNING_CERT_V2_ADD_ERROR},
++ #else
++ {"ESS_SIGNING_CERT_V2_ADD_ERROR", 54, 101},
++ #endif
++ #ifdef ESS_R_MISSING_SIGNING_CERTIFICATE_ATTRIBUTE
++ {"MISSING_SIGNING_CERTIFICATE_ATTRIBUTE", ERR_LIB_ESS, ESS_R_MISSING_SIGNING_CERTIFICATE_ATTRIBUTE},
++ #else
++ {"MISSING_SIGNING_CERTIFICATE_ATTRIBUTE", 54, 108},
++ #endif
++ #ifdef EVP_R_AES_KEY_SETUP_FAILED
++ {"AES_KEY_SETUP_FAILED", ERR_LIB_EVP, EVP_R_AES_KEY_SETUP_FAILED},
++ #else
++ {"AES_KEY_SETUP_FAILED", 6, 143},
++ #endif
++ #ifdef EVP_R_ARIA_KEY_SETUP_FAILED
++ {"ARIA_KEY_SETUP_FAILED", ERR_LIB_EVP, EVP_R_ARIA_KEY_SETUP_FAILED},
++ #else
++ {"ARIA_KEY_SETUP_FAILED", 6, 176},
++ #endif
++ #ifdef EVP_R_BAD_ALGORITHM_NAME
++ {"BAD_ALGORITHM_NAME", ERR_LIB_EVP, EVP_R_BAD_ALGORITHM_NAME},
++ #else
++ {"BAD_ALGORITHM_NAME", 6, 200},
++ #endif
++ #ifdef EVP_R_BAD_DECRYPT
++ {"BAD_DECRYPT", ERR_LIB_EVP, EVP_R_BAD_DECRYPT},
++ #else
++ {"BAD_DECRYPT", 6, 100},
++ #endif
++ #ifdef EVP_R_BAD_KEY_LENGTH
++ {"BAD_KEY_LENGTH", ERR_LIB_EVP, EVP_R_BAD_KEY_LENGTH},
++ #else
++ {"BAD_KEY_LENGTH", 6, 195},
++ #endif
++ #ifdef EVP_R_BUFFER_TOO_SMALL
++ {"BUFFER_TOO_SMALL", ERR_LIB_EVP, EVP_R_BUFFER_TOO_SMALL},
++ #else
++ {"BUFFER_TOO_SMALL", 6, 155},
++ #endif
++ #ifdef EVP_R_CACHE_CONSTANTS_FAILED
++ {"CACHE_CONSTANTS_FAILED", ERR_LIB_EVP, EVP_R_CACHE_CONSTANTS_FAILED},
++ #else
++ {"CACHE_CONSTANTS_FAILED", 6, 225},
++ #endif
++ #ifdef EVP_R_CAMELLIA_KEY_SETUP_FAILED
++ {"CAMELLIA_KEY_SETUP_FAILED", ERR_LIB_EVP, EVP_R_CAMELLIA_KEY_SETUP_FAILED},
++ #else
++ {"CAMELLIA_KEY_SETUP_FAILED", 6, 157},
++ #endif
++ #ifdef EVP_R_CANNOT_GET_PARAMETERS
++ {"CANNOT_GET_PARAMETERS", ERR_LIB_EVP, EVP_R_CANNOT_GET_PARAMETERS},
++ #else
++ {"CANNOT_GET_PARAMETERS", 6, 197},
++ #endif
++ #ifdef EVP_R_CANNOT_SET_PARAMETERS
++ {"CANNOT_SET_PARAMETERS", ERR_LIB_EVP, EVP_R_CANNOT_SET_PARAMETERS},
++ #else
++ {"CANNOT_SET_PARAMETERS", 6, 198},
++ #endif
++ #ifdef EVP_R_CIPHER_NOT_GCM_MODE
++ {"CIPHER_NOT_GCM_MODE", ERR_LIB_EVP, EVP_R_CIPHER_NOT_GCM_MODE},
++ #else
++ {"CIPHER_NOT_GCM_MODE", 6, 184},
++ #endif
++ #ifdef EVP_R_CIPHER_PARAMETER_ERROR
++ {"CIPHER_PARAMETER_ERROR", ERR_LIB_EVP, EVP_R_CIPHER_PARAMETER_ERROR},
++ #else
++ {"CIPHER_PARAMETER_ERROR", 6, 122},
++ #endif
++ #ifdef EVP_R_COMMAND_NOT_SUPPORTED
++ {"COMMAND_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_COMMAND_NOT_SUPPORTED},
++ #else
++ {"COMMAND_NOT_SUPPORTED", 6, 147},
++ #endif
++ #ifdef EVP_R_CONFLICTING_ALGORITHM_NAME
++ {"CONFLICTING_ALGORITHM_NAME", ERR_LIB_EVP, EVP_R_CONFLICTING_ALGORITHM_NAME},
++ #else
++ {"CONFLICTING_ALGORITHM_NAME", 6, 201},
++ #endif
++ #ifdef EVP_R_CONTEXT_FINALIZED
++ {"CONTEXT_FINALIZED", ERR_LIB_EVP, EVP_R_CONTEXT_FINALIZED},
++ #else
++ {"CONTEXT_FINALIZED", 6, 239},
++ #endif
++ #ifdef EVP_R_COPY_ERROR
++ {"COPY_ERROR", ERR_LIB_EVP, EVP_R_COPY_ERROR},
++ #else
++ {"COPY_ERROR", 6, 173},
++ #endif
++ #ifdef EVP_R_CTRL_NOT_IMPLEMENTED
++ {"CTRL_NOT_IMPLEMENTED", ERR_LIB_EVP, EVP_R_CTRL_NOT_IMPLEMENTED},
++ #else
++ {"CTRL_NOT_IMPLEMENTED", 6, 132},
++ #endif
++ #ifdef EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED
++ {"CTRL_OPERATION_NOT_IMPLEMENTED", ERR_LIB_EVP, EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED},
++ #else
++ {"CTRL_OPERATION_NOT_IMPLEMENTED", 6, 133},
++ #endif
++ #ifdef EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH
++ {"DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH", ERR_LIB_EVP, EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH},
++ #else
++ {"DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH", 6, 138},
++ #endif
++ #ifdef EVP_R_DECODE_ERROR
++ {"DECODE_ERROR", ERR_LIB_EVP, EVP_R_DECODE_ERROR},
++ #else
++ {"DECODE_ERROR", 6, 114},
++ #endif
++ #ifdef EVP_R_DEFAULT_QUERY_PARSE_ERROR
++ {"DEFAULT_QUERY_PARSE_ERROR", ERR_LIB_EVP, EVP_R_DEFAULT_QUERY_PARSE_ERROR},
++ #else
++ {"DEFAULT_QUERY_PARSE_ERROR", 6, 210},
++ #endif
++ #ifdef EVP_R_DIFFERENT_KEY_TYPES
++ {"DIFFERENT_KEY_TYPES", ERR_LIB_EVP, EVP_R_DIFFERENT_KEY_TYPES},
++ #else
++ {"DIFFERENT_KEY_TYPES", 6, 101},
++ #endif
++ #ifdef EVP_R_DIFFERENT_PARAMETERS
++ {"DIFFERENT_PARAMETERS", ERR_LIB_EVP, EVP_R_DIFFERENT_PARAMETERS},
++ #else
++ {"DIFFERENT_PARAMETERS", 6, 153},
++ #endif
++ #ifdef EVP_R_ERROR_LOADING_SECTION
++ {"ERROR_LOADING_SECTION", ERR_LIB_EVP, EVP_R_ERROR_LOADING_SECTION},
++ #else
++ {"ERROR_LOADING_SECTION", 6, 165},
++ #endif
++ #ifdef EVP_R_EXPECTING_AN_HMAC_KEY
++ {"EXPECTING_AN_HMAC_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_AN_HMAC_KEY},
++ #else
++ {"EXPECTING_AN_HMAC_KEY", 6, 174},
++ #endif
++ #ifdef EVP_R_EXPECTING_AN_RSA_KEY
++ {"EXPECTING_AN_RSA_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_AN_RSA_KEY},
++ #else
++ {"EXPECTING_AN_RSA_KEY", 6, 127},
++ #endif
++ #ifdef EVP_R_EXPECTING_A_DH_KEY
++ {"EXPECTING_A_DH_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_DH_KEY},
++ #else
++ {"EXPECTING_A_DH_KEY", 6, 128},
++ #endif
++ #ifdef EVP_R_EXPECTING_A_DSA_KEY
++ {"EXPECTING_A_DSA_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_DSA_KEY},
++ #else
++ {"EXPECTING_A_DSA_KEY", 6, 129},
++ #endif
++ #ifdef EVP_R_EXPECTING_A_ECX_KEY
++ {"EXPECTING_A_ECX_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_ECX_KEY},
++ #else
++ {"EXPECTING_A_ECX_KEY", 6, 219},
++ #endif
++ #ifdef EVP_R_EXPECTING_A_EC_KEY
++ {"EXPECTING_A_EC_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_EC_KEY},
++ #else
++ {"EXPECTING_A_EC_KEY", 6, 142},
++ #endif
++ #ifdef EVP_R_EXPECTING_A_POLY1305_KEY
++ {"EXPECTING_A_POLY1305_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_POLY1305_KEY},
++ #else
++ {"EXPECTING_A_POLY1305_KEY", 6, 164},
++ #endif
++ #ifdef EVP_R_EXPECTING_A_SIPHASH_KEY
++ {"EXPECTING_A_SIPHASH_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_SIPHASH_KEY},
++ #else
++ {"EXPECTING_A_SIPHASH_KEY", 6, 175},
++ #endif
++ #ifdef EVP_R_FINAL_ERROR
++ {"FINAL_ERROR", ERR_LIB_EVP, EVP_R_FINAL_ERROR},
++ #else
++ {"FINAL_ERROR", 6, 188},
++ #endif
++ #ifdef EVP_R_GENERATE_ERROR
++ {"GENERATE_ERROR", ERR_LIB_EVP, EVP_R_GENERATE_ERROR},
++ #else
++ {"GENERATE_ERROR", 6, 214},
++ #endif
++ #ifdef EVP_R_GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED
++ {"GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED},
++ #else
++ {"GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED", 6, 229},
++ #endif
++ #ifdef EVP_R_GET_RAW_KEY_FAILED
++ {"GET_RAW_KEY_FAILED", ERR_LIB_EVP, EVP_R_GET_RAW_KEY_FAILED},
++ #else
++ {"GET_RAW_KEY_FAILED", 6, 182},
++ #endif
++ #ifdef EVP_R_ILLEGAL_SCRYPT_PARAMETERS
++ {"ILLEGAL_SCRYPT_PARAMETERS", ERR_LIB_EVP, EVP_R_ILLEGAL_SCRYPT_PARAMETERS},
++ #else
++ {"ILLEGAL_SCRYPT_PARAMETERS", 6, 171},
++ #endif
++ #ifdef EVP_R_INACCESSIBLE_DOMAIN_PARAMETERS
++ {"INACCESSIBLE_DOMAIN_PARAMETERS", ERR_LIB_EVP, EVP_R_INACCESSIBLE_DOMAIN_PARAMETERS},
++ #else
++ {"INACCESSIBLE_DOMAIN_PARAMETERS", 6, 204},
++ #endif
++ #ifdef EVP_R_INACCESSIBLE_KEY
++ {"INACCESSIBLE_KEY", ERR_LIB_EVP, EVP_R_INACCESSIBLE_KEY},
++ #else
++ {"INACCESSIBLE_KEY", 6, 203},
++ #endif
++ #ifdef EVP_R_INITIALIZATION_ERROR
++ {"INITIALIZATION_ERROR", ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR},
++ #else
++ {"INITIALIZATION_ERROR", 6, 134},
++ #endif
++ #ifdef EVP_R_INPUT_NOT_INITIALIZED
++ {"INPUT_NOT_INITIALIZED", ERR_LIB_EVP, EVP_R_INPUT_NOT_INITIALIZED},
++ #else
++ {"INPUT_NOT_INITIALIZED", 6, 111},
++ #endif
++ #ifdef EVP_R_INVALID_CUSTOM_LENGTH
++ {"INVALID_CUSTOM_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_CUSTOM_LENGTH},
++ #else
++ {"INVALID_CUSTOM_LENGTH", 6, 185},
++ #endif
++ #ifdef EVP_R_INVALID_DIGEST
++ {"INVALID_DIGEST", ERR_LIB_EVP, EVP_R_INVALID_DIGEST},
++ #else
++ {"INVALID_DIGEST", 6, 152},
++ #endif
++ #ifdef EVP_R_INVALID_IV_LENGTH
++ {"INVALID_IV_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_IV_LENGTH},
++ #else
++ {"INVALID_IV_LENGTH", 6, 194},
++ #endif
++ #ifdef EVP_R_INVALID_KEY
++ {"INVALID_KEY", ERR_LIB_EVP, EVP_R_INVALID_KEY},
++ #else
++ {"INVALID_KEY", 6, 163},
++ #endif
++ #ifdef EVP_R_INVALID_KEY_LENGTH
++ {"INVALID_KEY_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH},
++ #else
++ {"INVALID_KEY_LENGTH", 6, 130},
++ #endif
++ #ifdef EVP_R_INVALID_LENGTH
++ {"INVALID_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_LENGTH},
++ #else
++ {"INVALID_LENGTH", 6, 221},
++ #endif
++ #ifdef EVP_R_INVALID_NULL_ALGORITHM
++ {"INVALID_NULL_ALGORITHM", ERR_LIB_EVP, EVP_R_INVALID_NULL_ALGORITHM},
++ #else
++ {"INVALID_NULL_ALGORITHM", 6, 218},
++ #endif
++ #ifdef EVP_R_INVALID_OPERATION
++ {"INVALID_OPERATION", ERR_LIB_EVP, EVP_R_INVALID_OPERATION},
++ #else
++ {"INVALID_OPERATION", 6, 148},
++ #endif
++ #ifdef EVP_R_INVALID_PROVIDER_FUNCTIONS
++ {"INVALID_PROVIDER_FUNCTIONS", ERR_LIB_EVP, EVP_R_INVALID_PROVIDER_FUNCTIONS},
++ #else
++ {"INVALID_PROVIDER_FUNCTIONS", 6, 193},
++ #endif
++ #ifdef EVP_R_INVALID_SALT_LENGTH
++ {"INVALID_SALT_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_SALT_LENGTH},
++ #else
++ {"INVALID_SALT_LENGTH", 6, 186},
++ #endif
++ #ifdef EVP_R_INVALID_SECRET_LENGTH
++ {"INVALID_SECRET_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_SECRET_LENGTH},
++ #else
++ {"INVALID_SECRET_LENGTH", 6, 223},
++ #endif
++ #ifdef EVP_R_INVALID_SEED_LENGTH
++ {"INVALID_SEED_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_SEED_LENGTH},
++ #else
++ {"INVALID_SEED_LENGTH", 6, 220},
++ #endif
++ #ifdef EVP_R_INVALID_VALUE
++ {"INVALID_VALUE", ERR_LIB_EVP, EVP_R_INVALID_VALUE},
++ #else
++ {"INVALID_VALUE", 6, 222},
++ #endif
++ #ifdef EVP_R_KEYMGMT_EXPORT_FAILURE
++ {"KEYMGMT_EXPORT_FAILURE", ERR_LIB_EVP, EVP_R_KEYMGMT_EXPORT_FAILURE},
++ #else
++ {"KEYMGMT_EXPORT_FAILURE", 6, 205},
++ #endif
++ #ifdef EVP_R_KEY_SETUP_FAILED
++ {"KEY_SETUP_FAILED", ERR_LIB_EVP, EVP_R_KEY_SETUP_FAILED},
++ #else
++ {"KEY_SETUP_FAILED", 6, 180},
++ #endif
++ #ifdef EVP_R_LOCKING_NOT_SUPPORTED
++ {"LOCKING_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_LOCKING_NOT_SUPPORTED},
++ #else
++ {"LOCKING_NOT_SUPPORTED", 6, 213},
++ #endif
++ #ifdef EVP_R_MEMORY_LIMIT_EXCEEDED
++ {"MEMORY_LIMIT_EXCEEDED", ERR_LIB_EVP, EVP_R_MEMORY_LIMIT_EXCEEDED},
++ #else
++ {"MEMORY_LIMIT_EXCEEDED", 6, 172},
++ #endif
++ #ifdef EVP_R_MESSAGE_DIGEST_IS_NULL
++ {"MESSAGE_DIGEST_IS_NULL", ERR_LIB_EVP, EVP_R_MESSAGE_DIGEST_IS_NULL},
++ #else
++ {"MESSAGE_DIGEST_IS_NULL", 6, 159},
++ #endif
++ #ifdef EVP_R_METHOD_NOT_SUPPORTED
++ {"METHOD_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_METHOD_NOT_SUPPORTED},
++ #else
++ {"METHOD_NOT_SUPPORTED", 6, 144},
++ #endif
++ #ifdef EVP_R_MISSING_PARAMETERS
++ {"MISSING_PARAMETERS", ERR_LIB_EVP, EVP_R_MISSING_PARAMETERS},
++ #else
++ {"MISSING_PARAMETERS", 6, 103},
++ #endif
++ #ifdef EVP_R_NOT_ABLE_TO_COPY_CTX
++ {"NOT_ABLE_TO_COPY_CTX", ERR_LIB_EVP, EVP_R_NOT_ABLE_TO_COPY_CTX},
++ #else
++ {"NOT_ABLE_TO_COPY_CTX", 6, 190},
++ #endif
++ #ifdef EVP_R_NOT_XOF_OR_INVALID_LENGTH
++ {"NOT_XOF_OR_INVALID_LENGTH", ERR_LIB_EVP, EVP_R_NOT_XOF_OR_INVALID_LENGTH},
++ #else
++ {"NOT_XOF_OR_INVALID_LENGTH", 6, 178},
++ #endif
++ #ifdef EVP_R_NO_CIPHER_SET
++ {"NO_CIPHER_SET", ERR_LIB_EVP, EVP_R_NO_CIPHER_SET},
++ #else
++ {"NO_CIPHER_SET", 6, 131},
++ #endif
++ #ifdef EVP_R_NO_DEFAULT_DIGEST
++ {"NO_DEFAULT_DIGEST", ERR_LIB_EVP, EVP_R_NO_DEFAULT_DIGEST},
++ #else
++ {"NO_DEFAULT_DIGEST", 6, 158},
++ #endif
++ #ifdef EVP_R_NO_DIGEST_SET
++ {"NO_DIGEST_SET", ERR_LIB_EVP, EVP_R_NO_DIGEST_SET},
++ #else
++ {"NO_DIGEST_SET", 6, 139},
++ #endif
++ #ifdef EVP_R_NO_IMPORT_FUNCTION
++ {"NO_IMPORT_FUNCTION", ERR_LIB_EVP, EVP_R_NO_IMPORT_FUNCTION},
++ #else
++ {"NO_IMPORT_FUNCTION", 6, 206},
++ #endif
++ #ifdef EVP_R_NO_KEYMGMT_AVAILABLE
++ {"NO_KEYMGMT_AVAILABLE", ERR_LIB_EVP, EVP_R_NO_KEYMGMT_AVAILABLE},
++ #else
++ {"NO_KEYMGMT_AVAILABLE", 6, 199},
++ #endif
++ #ifdef EVP_R_NO_KEYMGMT_PRESENT
++ {"NO_KEYMGMT_PRESENT", ERR_LIB_EVP, EVP_R_NO_KEYMGMT_PRESENT},
++ #else
++ {"NO_KEYMGMT_PRESENT", 6, 196},
++ #endif
++ #ifdef EVP_R_NO_KEY_SET
++ {"NO_KEY_SET", ERR_LIB_EVP, EVP_R_NO_KEY_SET},
++ #else
++ {"NO_KEY_SET", 6, 154},
++ #endif
++ #ifdef EVP_R_NO_OPERATION_SET
++ {"NO_OPERATION_SET", ERR_LIB_EVP, EVP_R_NO_OPERATION_SET},
++ #else
++ {"NO_OPERATION_SET", 6, 149},
++ #endif
++ #ifdef EVP_R_NULL_MAC_PKEY_CTX
++ {"NULL_MAC_PKEY_CTX", ERR_LIB_EVP, EVP_R_NULL_MAC_PKEY_CTX},
++ #else
++ {"NULL_MAC_PKEY_CTX", 6, 208},
++ #endif
++ #ifdef EVP_R_ONLY_ONESHOT_SUPPORTED
++ {"ONLY_ONESHOT_SUPPORTED", ERR_LIB_EVP, EVP_R_ONLY_ONESHOT_SUPPORTED},
++ #else
++ {"ONLY_ONESHOT_SUPPORTED", 6, 177},
++ #endif
++ #ifdef EVP_R_OPERATION_NOT_INITIALIZED
++ {"OPERATION_NOT_INITIALIZED", ERR_LIB_EVP, EVP_R_OPERATION_NOT_INITIALIZED},
++ #else
++ {"OPERATION_NOT_INITIALIZED", 6, 151},
++ #endif
++ #ifdef EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE
++ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE},
++ #else
++ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", 6, 150},
++ #endif
++ #ifdef EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE
++ {"OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE", ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE},
++ #else
++ {"OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE", 6, 226},
++ #endif
++ #ifdef EVP_R_OUTPUT_WOULD_OVERFLOW
++ {"OUTPUT_WOULD_OVERFLOW", ERR_LIB_EVP, EVP_R_OUTPUT_WOULD_OVERFLOW},
++ #else
++ {"OUTPUT_WOULD_OVERFLOW", 6, 202},
++ #endif
++ #ifdef EVP_R_PARAMETER_TOO_LARGE
++ {"PARAMETER_TOO_LARGE", ERR_LIB_EVP, EVP_R_PARAMETER_TOO_LARGE},
++ #else
++ {"PARAMETER_TOO_LARGE", 6, 187},
++ #endif
++ #ifdef EVP_R_PARTIALLY_OVERLAPPING
++ {"PARTIALLY_OVERLAPPING", ERR_LIB_EVP, EVP_R_PARTIALLY_OVERLAPPING},
++ #else
++ {"PARTIALLY_OVERLAPPING", 6, 162},
++ #endif
++ #ifdef EVP_R_PBKDF2_ERROR
++ {"PBKDF2_ERROR", ERR_LIB_EVP, EVP_R_PBKDF2_ERROR},
++ #else
++ {"PBKDF2_ERROR", 6, 181},
++ #endif
++ #ifdef EVP_R_PIPELINE_NOT_SUPPORTED
++ {"PIPELINE_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_PIPELINE_NOT_SUPPORTED},
++ #else
++ {"PIPELINE_NOT_SUPPORTED", 6, 230},
++ #endif
++ #ifdef EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED
++ {"PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED", ERR_LIB_EVP, EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED},
++ #else
++ {"PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED", 6, 179},
++ #endif
++ #ifdef EVP_R_PRIVATE_KEY_DECODE_ERROR
++ {"PRIVATE_KEY_DECODE_ERROR", ERR_LIB_EVP, EVP_R_PRIVATE_KEY_DECODE_ERROR},
++ #else
++ {"PRIVATE_KEY_DECODE_ERROR", 6, 145},
++ #endif
++ #ifdef EVP_R_PRIVATE_KEY_ENCODE_ERROR
++ {"PRIVATE_KEY_ENCODE_ERROR", ERR_LIB_EVP, EVP_R_PRIVATE_KEY_ENCODE_ERROR},
++ #else
++ {"PRIVATE_KEY_ENCODE_ERROR", 6, 146},
++ #endif
++ #ifdef EVP_R_PROVIDER_ASYM_CIPHER_FAILURE
++ {"PROVIDER_ASYM_CIPHER_FAILURE", ERR_LIB_EVP, EVP_R_PROVIDER_ASYM_CIPHER_FAILURE},
++ #else
++ {"PROVIDER_ASYM_CIPHER_FAILURE", 6, 232},
++ #endif
++ #ifdef EVP_R_PROVIDER_ASYM_CIPHER_NOT_SUPPORTED
++ {"PROVIDER_ASYM_CIPHER_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_PROVIDER_ASYM_CIPHER_NOT_SUPPORTED},
++ #else
++ {"PROVIDER_ASYM_CIPHER_NOT_SUPPORTED", 6, 235},
++ #endif
++ #ifdef EVP_R_PROVIDER_GET_CTX_PARAMS_NOT_SUPPORTED
++ {"PROVIDER_GET_CTX_PARAMS_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_PROVIDER_GET_CTX_PARAMS_NOT_SUPPORTED},
++ #else
++ {"PROVIDER_GET_CTX_PARAMS_NOT_SUPPORTED", 6, 238},
++ #endif
++ #ifdef EVP_R_PROVIDER_KEYMGMT_FAILURE
++ {"PROVIDER_KEYMGMT_FAILURE", ERR_LIB_EVP, EVP_R_PROVIDER_KEYMGMT_FAILURE},
++ #else
++ {"PROVIDER_KEYMGMT_FAILURE", 6, 233},
++ #endif
++ #ifdef EVP_R_PROVIDER_KEYMGMT_NOT_SUPPORTED
++ {"PROVIDER_KEYMGMT_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_PROVIDER_KEYMGMT_NOT_SUPPORTED},
++ #else
++ {"PROVIDER_KEYMGMT_NOT_SUPPORTED", 6, 236},
++ #endif
++ #ifdef EVP_R_PROVIDER_SIGNATURE_FAILURE
++ {"PROVIDER_SIGNATURE_FAILURE", ERR_LIB_EVP, EVP_R_PROVIDER_SIGNATURE_FAILURE},
++ #else
++ {"PROVIDER_SIGNATURE_FAILURE", 6, 234},
++ #endif
++ #ifdef EVP_R_PROVIDER_SIGNATURE_NOT_SUPPORTED
++ {"PROVIDER_SIGNATURE_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_PROVIDER_SIGNATURE_NOT_SUPPORTED},
++ #else
++ {"PROVIDER_SIGNATURE_NOT_SUPPORTED", 6, 237},
++ #endif
++ #ifdef EVP_R_PUBLIC_KEY_NOT_RSA
++ {"PUBLIC_KEY_NOT_RSA", ERR_LIB_EVP, EVP_R_PUBLIC_KEY_NOT_RSA},
++ #else
++ {"PUBLIC_KEY_NOT_RSA", 6, 106},
++ #endif
++ #ifdef EVP_R_SETTING_XOF_FAILED
++ {"SETTING_XOF_FAILED", ERR_LIB_EVP, EVP_R_SETTING_XOF_FAILED},
++ #else
++ {"SETTING_XOF_FAILED", 6, 227},
++ #endif
++ #ifdef EVP_R_SET_DEFAULT_PROPERTY_FAILURE
++ {"SET_DEFAULT_PROPERTY_FAILURE", ERR_LIB_EVP, EVP_R_SET_DEFAULT_PROPERTY_FAILURE},
++ #else
++ {"SET_DEFAULT_PROPERTY_FAILURE", 6, 209},
++ #endif
++ #ifdef EVP_R_SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE
++ {"SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE", ERR_LIB_EVP, EVP_R_SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE},
++ #else
++ {"SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE", 6, 228},
++ #endif
++ #ifdef EVP_R_TOO_MANY_PIPES
++ {"TOO_MANY_PIPES", ERR_LIB_EVP, EVP_R_TOO_MANY_PIPES},
++ #else
++ {"TOO_MANY_PIPES", 6, 231},
++ #endif
++ #ifdef EVP_R_TOO_MANY_RECORDS
++ {"TOO_MANY_RECORDS", ERR_LIB_EVP, EVP_R_TOO_MANY_RECORDS},
++ #else
++ {"TOO_MANY_RECORDS", 6, 183},
++ #endif
++ #ifdef EVP_R_UNABLE_TO_ENABLE_LOCKING
++ {"UNABLE_TO_ENABLE_LOCKING", ERR_LIB_EVP, EVP_R_UNABLE_TO_ENABLE_LOCKING},
++ #else
++ {"UNABLE_TO_ENABLE_LOCKING", 6, 212},
++ #endif
++ #ifdef EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE
++ {"UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE", ERR_LIB_EVP, EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE},
++ #else
++ {"UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE", 6, 215},
++ #endif
++ #ifdef EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH
++ {"UNABLE_TO_GET_RANDOM_STRENGTH", ERR_LIB_EVP, EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH},
++ #else
++ {"UNABLE_TO_GET_RANDOM_STRENGTH", 6, 216},
++ #endif
++ #ifdef EVP_R_UNABLE_TO_LOCK_CONTEXT
++ {"UNABLE_TO_LOCK_CONTEXT", ERR_LIB_EVP, EVP_R_UNABLE_TO_LOCK_CONTEXT},
++ #else
++ {"UNABLE_TO_LOCK_CONTEXT", 6, 211},
++ #endif
++ #ifdef EVP_R_UNABLE_TO_SET_CALLBACKS
++ {"UNABLE_TO_SET_CALLBACKS", ERR_LIB_EVP, EVP_R_UNABLE_TO_SET_CALLBACKS},
++ #else
++ {"UNABLE_TO_SET_CALLBACKS", 6, 217},
++ #endif
++ #ifdef EVP_R_UNKNOWN_BITS
++ {"UNKNOWN_BITS", ERR_LIB_EVP, EVP_R_UNKNOWN_BITS},
++ #else
++ {"UNKNOWN_BITS", 6, 166},
++ #endif
++ #ifdef EVP_R_UNKNOWN_CIPHER
++ {"UNKNOWN_CIPHER", ERR_LIB_EVP, EVP_R_UNKNOWN_CIPHER},
++ #else
++ {"UNKNOWN_CIPHER", 6, 160},
++ #endif
++ #ifdef EVP_R_UNKNOWN_DIGEST
++ {"UNKNOWN_DIGEST", ERR_LIB_EVP, EVP_R_UNKNOWN_DIGEST},
++ #else
++ {"UNKNOWN_DIGEST", 6, 161},
++ #endif
++ #ifdef EVP_R_UNKNOWN_KEY_TYPE
++ {"UNKNOWN_KEY_TYPE", ERR_LIB_EVP, EVP_R_UNKNOWN_KEY_TYPE},
++ #else
++ {"UNKNOWN_KEY_TYPE", 6, 207},
++ #endif
++ #ifdef EVP_R_UNKNOWN_MAX_SIZE
++ {"UNKNOWN_MAX_SIZE", ERR_LIB_EVP, EVP_R_UNKNOWN_MAX_SIZE},
++ #else
++ {"UNKNOWN_MAX_SIZE", 6, 167},
++ #endif
++ #ifdef EVP_R_UNKNOWN_OPTION
++ {"UNKNOWN_OPTION", ERR_LIB_EVP, EVP_R_UNKNOWN_OPTION},
++ #else
++ {"UNKNOWN_OPTION", 6, 169},
++ #endif
++ #ifdef EVP_R_UNKNOWN_PBE_ALGORITHM
++ {"UNKNOWN_PBE_ALGORITHM", ERR_LIB_EVP, EVP_R_UNKNOWN_PBE_ALGORITHM},
++ #else
++ {"UNKNOWN_PBE_ALGORITHM", 6, 121},
++ #endif
++ #ifdef EVP_R_UNKNOWN_SECURITY_BITS
++ {"UNKNOWN_SECURITY_BITS", ERR_LIB_EVP, EVP_R_UNKNOWN_SECURITY_BITS},
++ #else
++ {"UNKNOWN_SECURITY_BITS", 6, 168},
++ #endif
++ #ifdef EVP_R_UNSUPPORTED_ALGORITHM
++ {"UNSUPPORTED_ALGORITHM", ERR_LIB_EVP, EVP_R_UNSUPPORTED_ALGORITHM},
++ #else
++ {"UNSUPPORTED_ALGORITHM", 6, 156},
++ #endif
++ #ifdef EVP_R_UNSUPPORTED_CIPHER
++ {"UNSUPPORTED_CIPHER", ERR_LIB_EVP, EVP_R_UNSUPPORTED_CIPHER},
++ #else
++ {"UNSUPPORTED_CIPHER", 6, 107},
++ #endif
++ #ifdef EVP_R_UNSUPPORTED_KEYLENGTH
++ {"UNSUPPORTED_KEYLENGTH", ERR_LIB_EVP, EVP_R_UNSUPPORTED_KEYLENGTH},
++ #else
++ {"UNSUPPORTED_KEYLENGTH", 6, 123},
++ #endif
++ #ifdef EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION
++ {"UNSUPPORTED_KEY_DERIVATION_FUNCTION", ERR_LIB_EVP, EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION},
++ #else
++ {"UNSUPPORTED_KEY_DERIVATION_FUNCTION", 6, 124},
++ #endif
++ #ifdef EVP_R_UNSUPPORTED_KEY_SIZE
++ {"UNSUPPORTED_KEY_SIZE", ERR_LIB_EVP, EVP_R_UNSUPPORTED_KEY_SIZE},
++ #else
++ {"UNSUPPORTED_KEY_SIZE", 6, 108},
++ #endif
++ #ifdef EVP_R_UNSUPPORTED_KEY_TYPE
++ {"UNSUPPORTED_KEY_TYPE", ERR_LIB_EVP, EVP_R_UNSUPPORTED_KEY_TYPE},
++ #else
++ {"UNSUPPORTED_KEY_TYPE", 6, 224},
++ #endif
++ #ifdef EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS
++ {"UNSUPPORTED_NUMBER_OF_ROUNDS", ERR_LIB_EVP, EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS},
++ #else
++ {"UNSUPPORTED_NUMBER_OF_ROUNDS", 6, 135},
++ #endif
++ #ifdef EVP_R_UNSUPPORTED_PRF
++ {"UNSUPPORTED_PRF", ERR_LIB_EVP, EVP_R_UNSUPPORTED_PRF},
++ #else
++ {"UNSUPPORTED_PRF", 6, 125},
++ #endif
++ #ifdef EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM
++ {"UNSUPPORTED_PRIVATE_KEY_ALGORITHM", ERR_LIB_EVP, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM},
++ #else
++ {"UNSUPPORTED_PRIVATE_KEY_ALGORITHM", 6, 118},
++ #endif
++ #ifdef EVP_R_UNSUPPORTED_SALT_TYPE
++ {"UNSUPPORTED_SALT_TYPE", ERR_LIB_EVP, EVP_R_UNSUPPORTED_SALT_TYPE},
++ #else
++ {"UNSUPPORTED_SALT_TYPE", 6, 126},
++ #endif
++ #ifdef EVP_R_UPDATE_ERROR
++ {"UPDATE_ERROR", ERR_LIB_EVP, EVP_R_UPDATE_ERROR},
++ #else
++ {"UPDATE_ERROR", 6, 189},
++ #endif
++ #ifdef EVP_R_WRAP_MODE_NOT_ALLOWED
++ {"WRAP_MODE_NOT_ALLOWED", ERR_LIB_EVP, EVP_R_WRAP_MODE_NOT_ALLOWED},
++ #else
++ {"WRAP_MODE_NOT_ALLOWED", 6, 170},
++ #endif
++ #ifdef EVP_R_WRONG_FINAL_BLOCK_LENGTH
++ {"WRONG_FINAL_BLOCK_LENGTH", ERR_LIB_EVP, EVP_R_WRONG_FINAL_BLOCK_LENGTH},
++ #else
++ {"WRONG_FINAL_BLOCK_LENGTH", 6, 109},
++ #endif
++ #ifdef EVP_R_XTS_DATA_UNIT_IS_TOO_LARGE
++ {"XTS_DATA_UNIT_IS_TOO_LARGE", ERR_LIB_EVP, EVP_R_XTS_DATA_UNIT_IS_TOO_LARGE},
++ #else
++ {"XTS_DATA_UNIT_IS_TOO_LARGE", 6, 191},
++ #endif
++ #ifdef EVP_R_XTS_DUPLICATED_KEYS
++ {"XTS_DUPLICATED_KEYS", ERR_LIB_EVP, EVP_R_XTS_DUPLICATED_KEYS},
++ #else
++ {"XTS_DUPLICATED_KEYS", 6, 192},
++ #endif
++ #ifdef HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN
++ {"ASN1_LEN_EXCEEDS_MAX_RESP_LEN", ERR_LIB_HTTP, HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN},
++ #else
++ {"ASN1_LEN_EXCEEDS_MAX_RESP_LEN", 61, 108},
++ #endif
++ #ifdef HTTP_R_CONNECT_FAILURE
++ {"CONNECT_FAILURE", ERR_LIB_HTTP, HTTP_R_CONNECT_FAILURE},
++ #else
++ {"CONNECT_FAILURE", 61, 100},
++ #endif
++ #ifdef HTTP_R_CONTENT_TYPE_MISMATCH
++ {"CONTENT_TYPE_MISMATCH", ERR_LIB_HTTP, HTTP_R_CONTENT_TYPE_MISMATCH},
++ #else
++ {"CONTENT_TYPE_MISMATCH", 61, 131},
++ #endif
++ #ifdef HTTP_R_ERROR_PARSING_ASN1_LENGTH
++ {"ERROR_PARSING_ASN1_LENGTH", ERR_LIB_HTTP, HTTP_R_ERROR_PARSING_ASN1_LENGTH},
++ #else
++ {"ERROR_PARSING_ASN1_LENGTH", 61, 109},
++ #endif
++ #ifdef HTTP_R_ERROR_PARSING_CONTENT_LENGTH
++ {"ERROR_PARSING_CONTENT_LENGTH", ERR_LIB_HTTP, HTTP_R_ERROR_PARSING_CONTENT_LENGTH},
++ #else
++ {"ERROR_PARSING_CONTENT_LENGTH", 61, 119},
++ #endif
++ #ifdef HTTP_R_ERROR_PARSING_URL
++ {"ERROR_PARSING_URL", ERR_LIB_HTTP, HTTP_R_ERROR_PARSING_URL},
++ #else
++ {"ERROR_PARSING_URL", 61, 101},
++ #endif
++ #ifdef HTTP_R_ERROR_RECEIVING
++ {"ERROR_RECEIVING", ERR_LIB_HTTP, HTTP_R_ERROR_RECEIVING},
++ #else
++ {"ERROR_RECEIVING", 61, 103},
++ #endif
++ #ifdef HTTP_R_ERROR_SENDING
++ {"ERROR_SENDING", ERR_LIB_HTTP, HTTP_R_ERROR_SENDING},
++ #else
++ {"ERROR_SENDING", 61, 102},
++ #endif
++ #ifdef HTTP_R_FAILED_READING_DATA
++ {"FAILED_READING_DATA", ERR_LIB_HTTP, HTTP_R_FAILED_READING_DATA},
++ #else
++ {"FAILED_READING_DATA", 61, 128},
++ #endif
++ #ifdef HTTP_R_HEADER_PARSE_ERROR
++ {"HEADER_PARSE_ERROR", ERR_LIB_HTTP, HTTP_R_HEADER_PARSE_ERROR},
++ #else
++ {"HEADER_PARSE_ERROR", 61, 126},
++ #endif
++ #ifdef HTTP_R_INCONSISTENT_CONTENT_LENGTH
++ {"INCONSISTENT_CONTENT_LENGTH", ERR_LIB_HTTP, HTTP_R_INCONSISTENT_CONTENT_LENGTH},
++ #else
++ {"INCONSISTENT_CONTENT_LENGTH", 61, 120},
++ #endif
++ #ifdef HTTP_R_INVALID_PORT_NUMBER
++ {"INVALID_PORT_NUMBER", ERR_LIB_HTTP, HTTP_R_INVALID_PORT_NUMBER},
++ #else
++ {"INVALID_PORT_NUMBER", 61, 123},
++ #endif
++ #ifdef HTTP_R_INVALID_URL_PATH
++ {"INVALID_URL_PATH", ERR_LIB_HTTP, HTTP_R_INVALID_URL_PATH},
++ #else
++ {"INVALID_URL_PATH", 61, 125},
++ #endif
++ #ifdef HTTP_R_INVALID_URL_SCHEME
++ {"INVALID_URL_SCHEME", ERR_LIB_HTTP, HTTP_R_INVALID_URL_SCHEME},
++ #else
++ {"INVALID_URL_SCHEME", 61, 124},
++ #endif
++ #ifdef HTTP_R_MAX_RESP_LEN_EXCEEDED
++ {"MAX_RESP_LEN_EXCEEDED", ERR_LIB_HTTP, HTTP_R_MAX_RESP_LEN_EXCEEDED},
++ #else
++ {"MAX_RESP_LEN_EXCEEDED", 61, 117},
++ #endif
++ #ifdef HTTP_R_MISSING_ASN1_ENCODING
++ {"MISSING_ASN1_ENCODING", ERR_LIB_HTTP, HTTP_R_MISSING_ASN1_ENCODING},
++ #else
++ {"MISSING_ASN1_ENCODING", 61, 110},
++ #endif
++ #ifdef HTTP_R_MISSING_CONTENT_TYPE
++ {"MISSING_CONTENT_TYPE", ERR_LIB_HTTP, HTTP_R_MISSING_CONTENT_TYPE},
++ #else
++ {"MISSING_CONTENT_TYPE", 61, 121},
++ #endif
++ #ifdef HTTP_R_MISSING_REDIRECT_LOCATION
++ {"MISSING_REDIRECT_LOCATION", ERR_LIB_HTTP, HTTP_R_MISSING_REDIRECT_LOCATION},
++ #else
++ {"MISSING_REDIRECT_LOCATION", 61, 111},
++ #endif
++ #ifdef HTTP_R_RECEIVED_ERROR
++ {"RECEIVED_ERROR", ERR_LIB_HTTP, HTTP_R_RECEIVED_ERROR},
++ #else
++ {"RECEIVED_ERROR", 61, 105},
++ #endif
++ #ifdef HTTP_R_RECEIVED_WRONG_HTTP_VERSION
++ {"RECEIVED_WRONG_HTTP_VERSION", ERR_LIB_HTTP, HTTP_R_RECEIVED_WRONG_HTTP_VERSION},
++ #else
++ {"RECEIVED_WRONG_HTTP_VERSION", 61, 106},
++ #endif
++ #ifdef HTTP_R_REDIRECTION_FROM_HTTPS_TO_HTTP
++ {"REDIRECTION_FROM_HTTPS_TO_HTTP", ERR_LIB_HTTP, HTTP_R_REDIRECTION_FROM_HTTPS_TO_HTTP},
++ #else
++ {"REDIRECTION_FROM_HTTPS_TO_HTTP", 61, 112},
++ #endif
++ #ifdef HTTP_R_REDIRECTION_NOT_ENABLED
++ {"REDIRECTION_NOT_ENABLED", ERR_LIB_HTTP, HTTP_R_REDIRECTION_NOT_ENABLED},
++ #else
++ {"REDIRECTION_NOT_ENABLED", 61, 116},
++ #endif
++ #ifdef HTTP_R_RESPONSE_LINE_TOO_LONG
++ {"RESPONSE_LINE_TOO_LONG", ERR_LIB_HTTP, HTTP_R_RESPONSE_LINE_TOO_LONG},
++ #else
++ {"RESPONSE_LINE_TOO_LONG", 61, 113},
++ #endif
++ #ifdef HTTP_R_RESPONSE_PARSE_ERROR
++ {"RESPONSE_PARSE_ERROR", ERR_LIB_HTTP, HTTP_R_RESPONSE_PARSE_ERROR},
++ #else
++ {"RESPONSE_PARSE_ERROR", 61, 104},
++ #endif
++ #ifdef HTTP_R_RESPONSE_TOO_MANY_HDRLINES
++ {"RESPONSE_TOO_MANY_HDRLINES", ERR_LIB_HTTP, HTTP_R_RESPONSE_TOO_MANY_HDRLINES},
++ #else
++ {"RESPONSE_TOO_MANY_HDRLINES", 61, 130},
++ #endif
++ #ifdef HTTP_R_RETRY_TIMEOUT
++ {"RETRY_TIMEOUT", ERR_LIB_HTTP, HTTP_R_RETRY_TIMEOUT},
++ #else
++ {"RETRY_TIMEOUT", 61, 129},
++ #endif
++ #ifdef HTTP_R_SERVER_CANCELED_CONNECTION
++ {"SERVER_CANCELED_CONNECTION", ERR_LIB_HTTP, HTTP_R_SERVER_CANCELED_CONNECTION},
++ #else
++ {"SERVER_CANCELED_CONNECTION", 61, 127},
++ #endif
++ #ifdef HTTP_R_SOCK_NOT_SUPPORTED
++ {"SOCK_NOT_SUPPORTED", ERR_LIB_HTTP, HTTP_R_SOCK_NOT_SUPPORTED},
++ #else
++ {"SOCK_NOT_SUPPORTED", 61, 122},
++ #endif
++ #ifdef HTTP_R_STATUS_CODE_UNSUPPORTED
++ {"STATUS_CODE_UNSUPPORTED", ERR_LIB_HTTP, HTTP_R_STATUS_CODE_UNSUPPORTED},
++ #else
++ {"STATUS_CODE_UNSUPPORTED", 61, 114},
++ #endif
++ #ifdef HTTP_R_TLS_NOT_ENABLED
++ {"TLS_NOT_ENABLED", ERR_LIB_HTTP, HTTP_R_TLS_NOT_ENABLED},
++ #else
++ {"TLS_NOT_ENABLED", 61, 107},
++ #endif
++ #ifdef HTTP_R_TOO_MANY_REDIRECTIONS
++ {"TOO_MANY_REDIRECTIONS", ERR_LIB_HTTP, HTTP_R_TOO_MANY_REDIRECTIONS},
++ #else
++ {"TOO_MANY_REDIRECTIONS", 61, 115},
++ #endif
++ #ifdef HTTP_R_UNEXPECTED_CONTENT_TYPE
++ {"UNEXPECTED_CONTENT_TYPE", ERR_LIB_HTTP, HTTP_R_UNEXPECTED_CONTENT_TYPE},
++ #else
++ {"UNEXPECTED_CONTENT_TYPE", 61, 118},
++ #endif
++ #ifdef OBJ_R_OID_EXISTS
++ {"OID_EXISTS", ERR_LIB_OBJ, OBJ_R_OID_EXISTS},
++ #else
++ {"OID_EXISTS", 8, 102},
++ #endif
++ #ifdef OBJ_R_UNKNOWN_NID
++ {"UNKNOWN_NID", ERR_LIB_OBJ, OBJ_R_UNKNOWN_NID},
++ #else
++ {"UNKNOWN_NID", 8, 101},
++ #endif
++ #ifdef OBJ_R_UNKNOWN_OBJECT_NAME
++ {"UNKNOWN_OBJECT_NAME", ERR_LIB_OBJ, OBJ_R_UNKNOWN_OBJECT_NAME},
++ #else
++ {"UNKNOWN_OBJECT_NAME", 8, 103},
++ #endif
++ #ifdef OCSP_R_CERTIFICATE_VERIFY_ERROR
++ {"CERTIFICATE_VERIFY_ERROR", ERR_LIB_OCSP, OCSP_R_CERTIFICATE_VERIFY_ERROR},
++ #else
++ {"CERTIFICATE_VERIFY_ERROR", 39, 101},
++ #endif
++ #ifdef OCSP_R_DIGEST_ERR
++ {"DIGEST_ERR", ERR_LIB_OCSP, OCSP_R_DIGEST_ERR},
++ #else
++ {"DIGEST_ERR", 39, 102},
++ #endif
++ #ifdef OCSP_R_DIGEST_NAME_ERR
++ {"DIGEST_NAME_ERR", ERR_LIB_OCSP, OCSP_R_DIGEST_NAME_ERR},
++ #else
++ {"DIGEST_NAME_ERR", 39, 106},
++ #endif
++ #ifdef OCSP_R_DIGEST_SIZE_ERR
++ {"DIGEST_SIZE_ERR", ERR_LIB_OCSP, OCSP_R_DIGEST_SIZE_ERR},
++ #else
++ {"DIGEST_SIZE_ERR", 39, 107},
++ #endif
++ #ifdef OCSP_R_ERROR_IN_NEXTUPDATE_FIELD
++ {"ERROR_IN_NEXTUPDATE_FIELD", ERR_LIB_OCSP, OCSP_R_ERROR_IN_NEXTUPDATE_FIELD},
++ #else
++ {"ERROR_IN_NEXTUPDATE_FIELD", 39, 122},
++ #endif
++ #ifdef OCSP_R_ERROR_IN_THISUPDATE_FIELD
++ {"ERROR_IN_THISUPDATE_FIELD", ERR_LIB_OCSP, OCSP_R_ERROR_IN_THISUPDATE_FIELD},
++ #else
++ {"ERROR_IN_THISUPDATE_FIELD", 39, 123},
++ #endif
++ #ifdef OCSP_R_MISSING_OCSPSIGNING_USAGE
++ {"MISSING_OCSPSIGNING_USAGE", ERR_LIB_OCSP, OCSP_R_MISSING_OCSPSIGNING_USAGE},
++ #else
++ {"MISSING_OCSPSIGNING_USAGE", 39, 103},
++ #endif
++ #ifdef OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE
++ {"NEXTUPDATE_BEFORE_THISUPDATE", ERR_LIB_OCSP, OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE},
++ #else
++ {"NEXTUPDATE_BEFORE_THISUPDATE", 39, 124},
++ #endif
++ #ifdef OCSP_R_NOT_BASIC_RESPONSE
++ {"NOT_BASIC_RESPONSE", ERR_LIB_OCSP, OCSP_R_NOT_BASIC_RESPONSE},
++ #else
++ {"NOT_BASIC_RESPONSE", 39, 104},
++ #endif
++ #ifdef OCSP_R_NO_CERTIFICATES_IN_CHAIN
++ {"NO_CERTIFICATES_IN_CHAIN", ERR_LIB_OCSP, OCSP_R_NO_CERTIFICATES_IN_CHAIN},
++ #else
++ {"NO_CERTIFICATES_IN_CHAIN", 39, 105},
++ #endif
++ #ifdef OCSP_R_NO_RESPONSE_DATA
++ {"NO_RESPONSE_DATA", ERR_LIB_OCSP, OCSP_R_NO_RESPONSE_DATA},
++ #else
++ {"NO_RESPONSE_DATA", 39, 108},
++ #endif
++ #ifdef OCSP_R_NO_REVOKED_TIME
++ {"NO_REVOKED_TIME", ERR_LIB_OCSP, OCSP_R_NO_REVOKED_TIME},
++ #else
++ {"NO_REVOKED_TIME", 39, 109},
++ #endif
++ #ifdef OCSP_R_NO_SIGNER_KEY
++ {"NO_SIGNER_KEY", ERR_LIB_OCSP, OCSP_R_NO_SIGNER_KEY},
++ #else
++ {"NO_SIGNER_KEY", 39, 130},
++ #endif
++ #ifdef OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE
++ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", ERR_LIB_OCSP, OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE},
++ #else
++ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", 39, 110},
++ #endif
++ #ifdef OCSP_R_REQUEST_NOT_SIGNED
++ {"REQUEST_NOT_SIGNED", ERR_LIB_OCSP, OCSP_R_REQUEST_NOT_SIGNED},
++ #else
++ {"REQUEST_NOT_SIGNED", 39, 128},
++ #endif
++ #ifdef OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA
++ {"RESPONSE_CONTAINS_NO_REVOCATION_DATA", ERR_LIB_OCSP, OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA},
++ #else
++ {"RESPONSE_CONTAINS_NO_REVOCATION_DATA", 39, 111},
++ #endif
++ #ifdef OCSP_R_ROOT_CA_NOT_TRUSTED
++ {"ROOT_CA_NOT_TRUSTED", ERR_LIB_OCSP, OCSP_R_ROOT_CA_NOT_TRUSTED},
++ #else
++ {"ROOT_CA_NOT_TRUSTED", 39, 112},
++ #endif
++ #ifdef OCSP_R_SIGNATURE_FAILURE
++ {"SIGNATURE_FAILURE", ERR_LIB_OCSP, OCSP_R_SIGNATURE_FAILURE},
++ #else
++ {"SIGNATURE_FAILURE", 39, 117},
++ #endif
++ #ifdef OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND
++ {"SIGNER_CERTIFICATE_NOT_FOUND", ERR_LIB_OCSP, OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND},
++ #else
++ {"SIGNER_CERTIFICATE_NOT_FOUND", 39, 118},
++ #endif
++ #ifdef OCSP_R_STATUS_EXPIRED
++ {"STATUS_EXPIRED", ERR_LIB_OCSP, OCSP_R_STATUS_EXPIRED},
++ #else
++ {"STATUS_EXPIRED", 39, 125},
++ #endif
++ #ifdef OCSP_R_STATUS_NOT_YET_VALID
++ {"STATUS_NOT_YET_VALID", ERR_LIB_OCSP, OCSP_R_STATUS_NOT_YET_VALID},
++ #else
++ {"STATUS_NOT_YET_VALID", 39, 126},
++ #endif
++ #ifdef OCSP_R_STATUS_TOO_OLD
++ {"STATUS_TOO_OLD", ERR_LIB_OCSP, OCSP_R_STATUS_TOO_OLD},
++ #else
++ {"STATUS_TOO_OLD", 39, 127},
++ #endif
++ #ifdef OCSP_R_UNKNOWN_MESSAGE_DIGEST
++ {"UNKNOWN_MESSAGE_DIGEST", ERR_LIB_OCSP, OCSP_R_UNKNOWN_MESSAGE_DIGEST},
++ #else
++ {"UNKNOWN_MESSAGE_DIGEST", 39, 119},
++ #endif
++ #ifdef OCSP_R_UNKNOWN_NID
++ {"UNKNOWN_NID", ERR_LIB_OCSP, OCSP_R_UNKNOWN_NID},
++ #else
++ {"UNKNOWN_NID", 39, 120},
++ #endif
++ #ifdef OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE
++ {"UNSUPPORTED_REQUESTORNAME_TYPE", ERR_LIB_OCSP, OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE},
++ #else
++ {"UNSUPPORTED_REQUESTORNAME_TYPE", 39, 129},
++ #endif
++ #ifdef OSSL_DECODER_R_COULD_NOT_DECODE_OBJECT
++ {"COULD_NOT_DECODE_OBJECT", ERR_LIB_OSSL_DECODER, OSSL_DECODER_R_COULD_NOT_DECODE_OBJECT},
++ #else
++ {"COULD_NOT_DECODE_OBJECT", 60, 101},
++ #endif
++ #ifdef OSSL_DECODER_R_DECODER_NOT_FOUND
++ {"DECODER_NOT_FOUND", ERR_LIB_OSSL_DECODER, OSSL_DECODER_R_DECODER_NOT_FOUND},
++ #else
++ {"DECODER_NOT_FOUND", 60, 102},
++ #endif
++ #ifdef OSSL_DECODER_R_MISSING_GET_PARAMS
++ {"MISSING_GET_PARAMS", ERR_LIB_OSSL_DECODER, OSSL_DECODER_R_MISSING_GET_PARAMS},
++ #else
++ {"MISSING_GET_PARAMS", 60, 100},
++ #endif
++ #ifdef OSSL_ENCODER_R_BAD_PARAMETER_VALUE
++ {"BAD_PARAMETER_VALUE", ERR_LIB_OSSL_ENCODER, OSSL_ENCODER_R_BAD_PARAMETER_VALUE},
++ #else
++ {"BAD_PARAMETER_VALUE", 59, 103},
++ #endif
++ #ifdef OSSL_ENCODER_R_ENCODER_NOT_FOUND
++ {"ENCODER_NOT_FOUND", ERR_LIB_OSSL_ENCODER, OSSL_ENCODER_R_ENCODER_NOT_FOUND},
++ #else
++ {"ENCODER_NOT_FOUND", 59, 101},
++ #endif
++ #ifdef OSSL_ENCODER_R_INCORRECT_PROPERTY_QUERY
++ {"INCORRECT_PROPERTY_QUERY", ERR_LIB_OSSL_ENCODER, OSSL_ENCODER_R_INCORRECT_PROPERTY_QUERY},
++ #else
++ {"INCORRECT_PROPERTY_QUERY", 59, 100},
++ #endif
++ #ifdef OSSL_ENCODER_R_MISSING_GET_PARAMS
++ {"MISSING_GET_PARAMS", ERR_LIB_OSSL_ENCODER, OSSL_ENCODER_R_MISSING_GET_PARAMS},
++ #else
++ {"MISSING_GET_PARAMS", 59, 102},
++ #endif
++ #ifdef OSSL_ENCODER_R_UNKNOWN_PARAMETER_NAME
++ {"UNKNOWN_PARAMETER_NAME", ERR_LIB_OSSL_ENCODER, OSSL_ENCODER_R_UNKNOWN_PARAMETER_NAME},
++ #else
++ {"UNKNOWN_PARAMETER_NAME", 59, 104},
++ #endif
++ #ifdef OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE
++ {"AMBIGUOUS_CONTENT_TYPE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE},
++ #else
++ {"AMBIGUOUS_CONTENT_TYPE", 44, 107},
++ #endif
++ #ifdef OSSL_STORE_R_BAD_PASSWORD_READ
++ {"BAD_PASSWORD_READ", ERR_LIB_OSSL_STORE, OSSL_STORE_R_BAD_PASSWORD_READ},
++ #else
++ {"BAD_PASSWORD_READ", 44, 115},
++ #endif
++ #ifdef OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC
++ {"ERROR_VERIFYING_PKCS12_MAC", ERR_LIB_OSSL_STORE, OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC},
++ #else
++ {"ERROR_VERIFYING_PKCS12_MAC", 44, 113},
++ #endif
++ #ifdef OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST
++ {"FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST", ERR_LIB_OSSL_STORE, OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST},
++ #else
++ {"FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST", 44, 121},
++ #endif
++ #ifdef OSSL_STORE_R_INVALID_SCHEME
++ {"INVALID_SCHEME", ERR_LIB_OSSL_STORE, OSSL_STORE_R_INVALID_SCHEME},
++ #else
++ {"INVALID_SCHEME", 44, 106},
++ #endif
++ #ifdef OSSL_STORE_R_IS_NOT_A
++ {"IS_NOT_A", ERR_LIB_OSSL_STORE, OSSL_STORE_R_IS_NOT_A},
++ #else
++ {"IS_NOT_A", 44, 112},
++ #endif
++ #ifdef OSSL_STORE_R_LOADER_INCOMPLETE
++ {"LOADER_INCOMPLETE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_LOADER_INCOMPLETE},
++ #else
++ {"LOADER_INCOMPLETE", 44, 116},
++ #endif
++ #ifdef OSSL_STORE_R_LOADING_STARTED
++ {"LOADING_STARTED", ERR_LIB_OSSL_STORE, OSSL_STORE_R_LOADING_STARTED},
++ #else
++ {"LOADING_STARTED", 44, 117},
++ #endif
++ #ifdef OSSL_STORE_R_NOT_A_CERTIFICATE
++ {"NOT_A_CERTIFICATE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_A_CERTIFICATE},
++ #else
++ {"NOT_A_CERTIFICATE", 44, 100},
++ #endif
++ #ifdef OSSL_STORE_R_NOT_A_CRL
++ {"NOT_A_CRL", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_A_CRL},
++ #else
++ {"NOT_A_CRL", 44, 101},
++ #endif
++ #ifdef OSSL_STORE_R_NOT_A_NAME
++ {"NOT_A_NAME", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_A_NAME},
++ #else
++ {"NOT_A_NAME", 44, 103},
++ #endif
++ #ifdef OSSL_STORE_R_NOT_A_PRIVATE_KEY
++ {"NOT_A_PRIVATE_KEY", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_A_PRIVATE_KEY},
++ #else
++ {"NOT_A_PRIVATE_KEY", 44, 102},
++ #endif
++ #ifdef OSSL_STORE_R_NOT_A_PUBLIC_KEY
++ {"NOT_A_PUBLIC_KEY", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_A_PUBLIC_KEY},
++ #else
++ {"NOT_A_PUBLIC_KEY", 44, 122},
++ #endif
++ #ifdef OSSL_STORE_R_NOT_A_SYMMETRIC_KEY
++ {"NOT_A_SYMMETRIC_KEY", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_A_SYMMETRIC_KEY},
++ #else
++ {"NOT_A_SYMMETRIC_KEY", 44, 124},
++ #endif
++ #ifdef OSSL_STORE_R_NOT_PARAMETERS
++ {"NOT_PARAMETERS", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_PARAMETERS},
++ #else
++ {"NOT_PARAMETERS", 44, 104},
++ #endif
++ #ifdef OSSL_STORE_R_NO_LOADERS_FOUND
++ {"NO_LOADERS_FOUND", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NO_LOADERS_FOUND},
++ #else
++ {"NO_LOADERS_FOUND", 44, 123},
++ #endif
++ #ifdef OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR
++ {"PASSPHRASE_CALLBACK_ERROR", ERR_LIB_OSSL_STORE, OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR},
++ #else
++ {"PASSPHRASE_CALLBACK_ERROR", 44, 114},
++ #endif
++ #ifdef OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE
++ {"PATH_MUST_BE_ABSOLUTE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE},
++ #else
++ {"PATH_MUST_BE_ABSOLUTE", 44, 108},
++ #endif
++ #ifdef OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES
++ {"SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES", ERR_LIB_OSSL_STORE, OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES},
++ #else
++ {"SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES", 44, 119},
++ #endif
++ #ifdef OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED
++ {"UI_PROCESS_INTERRUPTED_OR_CANCELLED", ERR_LIB_OSSL_STORE, OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED},
++ #else
++ {"UI_PROCESS_INTERRUPTED_OR_CANCELLED", 44, 109},
++ #endif
++ #ifdef OSSL_STORE_R_UNREGISTERED_SCHEME
++ {"UNREGISTERED_SCHEME", ERR_LIB_OSSL_STORE, OSSL_STORE_R_UNREGISTERED_SCHEME},
++ #else
++ {"UNREGISTERED_SCHEME", 44, 105},
++ #endif
++ #ifdef OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE
++ {"UNSUPPORTED_CONTENT_TYPE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE},
++ #else
++ {"UNSUPPORTED_CONTENT_TYPE", 44, 110},
++ #endif
++ #ifdef OSSL_STORE_R_UNSUPPORTED_OPERATION
++ {"UNSUPPORTED_OPERATION", ERR_LIB_OSSL_STORE, OSSL_STORE_R_UNSUPPORTED_OPERATION},
++ #else
++ {"UNSUPPORTED_OPERATION", 44, 118},
++ #endif
++ #ifdef OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE
++ {"UNSUPPORTED_SEARCH_TYPE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE},
++ #else
++ {"UNSUPPORTED_SEARCH_TYPE", 44, 120},
++ #endif
++ #ifdef OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED
++ {"URI_AUTHORITY_UNSUPPORTED", ERR_LIB_OSSL_STORE, OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED},
++ #else
++ {"URI_AUTHORITY_UNSUPPORTED", 44, 111},
++ #endif
++ #ifdef PEM_R_BAD_BASE64_DECODE
++ {"BAD_BASE64_DECODE", ERR_LIB_PEM, PEM_R_BAD_BASE64_DECODE},
++ #else
++ {"BAD_BASE64_DECODE", 9, 100},
++ #endif
++ #ifdef PEM_R_BAD_DECRYPT
++ {"BAD_DECRYPT", ERR_LIB_PEM, PEM_R_BAD_DECRYPT},
++ #else
++ {"BAD_DECRYPT", 9, 101},
++ #endif
++ #ifdef PEM_R_BAD_END_LINE
++ {"BAD_END_LINE", ERR_LIB_PEM, PEM_R_BAD_END_LINE},
++ #else
++ {"BAD_END_LINE", 9, 102},
++ #endif
++ #ifdef PEM_R_BAD_IV_CHARS
++ {"BAD_IV_CHARS", ERR_LIB_PEM, PEM_R_BAD_IV_CHARS},
++ #else
++ {"BAD_IV_CHARS", 9, 103},
++ #endif
++ #ifdef PEM_R_BAD_MAGIC_NUMBER
++ {"BAD_MAGIC_NUMBER", ERR_LIB_PEM, PEM_R_BAD_MAGIC_NUMBER},
++ #else
++ {"BAD_MAGIC_NUMBER", 9, 116},
++ #endif
++ #ifdef PEM_R_BAD_PASSWORD_READ
++ {"BAD_PASSWORD_READ", ERR_LIB_PEM, PEM_R_BAD_PASSWORD_READ},
++ #else
++ {"BAD_PASSWORD_READ", 9, 104},
++ #endif
++ #ifdef PEM_R_BAD_VERSION_NUMBER
++ {"BAD_VERSION_NUMBER", ERR_LIB_PEM, PEM_R_BAD_VERSION_NUMBER},
++ #else
++ {"BAD_VERSION_NUMBER", 9, 117},
++ #endif
++ #ifdef PEM_R_BIO_WRITE_FAILURE
++ {"BIO_WRITE_FAILURE", ERR_LIB_PEM, PEM_R_BIO_WRITE_FAILURE},
++ #else
++ {"BIO_WRITE_FAILURE", 9, 118},
++ #endif
++ #ifdef PEM_R_CIPHER_IS_NULL
++ {"CIPHER_IS_NULL", ERR_LIB_PEM, PEM_R_CIPHER_IS_NULL},
++ #else
++ {"CIPHER_IS_NULL", 9, 127},
++ #endif
++ #ifdef PEM_R_ERROR_CONVERTING_PRIVATE_KEY
++ {"ERROR_CONVERTING_PRIVATE_KEY", ERR_LIB_PEM, PEM_R_ERROR_CONVERTING_PRIVATE_KEY},
++ #else
++ {"ERROR_CONVERTING_PRIVATE_KEY", 9, 115},
++ #endif
++ #ifdef PEM_R_EXPECTING_DSS_KEY_BLOB
++ {"EXPECTING_DSS_KEY_BLOB", ERR_LIB_PEM, PEM_R_EXPECTING_DSS_KEY_BLOB},
++ #else
++ {"EXPECTING_DSS_KEY_BLOB", 9, 131},
++ #endif
++ #ifdef PEM_R_EXPECTING_PRIVATE_KEY_BLOB
++ {"EXPECTING_PRIVATE_KEY_BLOB", ERR_LIB_PEM, PEM_R_EXPECTING_PRIVATE_KEY_BLOB},
++ #else
++ {"EXPECTING_PRIVATE_KEY_BLOB", 9, 119},
++ #endif
++ #ifdef PEM_R_EXPECTING_PUBLIC_KEY_BLOB
++ {"EXPECTING_PUBLIC_KEY_BLOB", ERR_LIB_PEM, PEM_R_EXPECTING_PUBLIC_KEY_BLOB},
++ #else
++ {"EXPECTING_PUBLIC_KEY_BLOB", 9, 120},
++ #endif
++ #ifdef PEM_R_EXPECTING_RSA_KEY_BLOB
++ {"EXPECTING_RSA_KEY_BLOB", ERR_LIB_PEM, PEM_R_EXPECTING_RSA_KEY_BLOB},
++ #else
++ {"EXPECTING_RSA_KEY_BLOB", 9, 132},
++ #endif
++ #ifdef PEM_R_HEADER_TOO_LONG
++ {"HEADER_TOO_LONG", ERR_LIB_PEM, PEM_R_HEADER_TOO_LONG},
++ #else
++ {"HEADER_TOO_LONG", 9, 128},
++ #endif
++ #ifdef PEM_R_INCONSISTENT_HEADER
++ {"INCONSISTENT_HEADER", ERR_LIB_PEM, PEM_R_INCONSISTENT_HEADER},
++ #else
++ {"INCONSISTENT_HEADER", 9, 121},
++ #endif
++ #ifdef PEM_R_KEYBLOB_HEADER_PARSE_ERROR
++ {"KEYBLOB_HEADER_PARSE_ERROR", ERR_LIB_PEM, PEM_R_KEYBLOB_HEADER_PARSE_ERROR},
++ #else
++ {"KEYBLOB_HEADER_PARSE_ERROR", 9, 122},
++ #endif
++ #ifdef PEM_R_KEYBLOB_TOO_SHORT
++ {"KEYBLOB_TOO_SHORT", ERR_LIB_PEM, PEM_R_KEYBLOB_TOO_SHORT},
++ #else
++ {"KEYBLOB_TOO_SHORT", 9, 123},
++ #endif
++ #ifdef PEM_R_MISSING_DEK_IV
++ {"MISSING_DEK_IV", ERR_LIB_PEM, PEM_R_MISSING_DEK_IV},
++ #else
++ {"MISSING_DEK_IV", 9, 129},
++ #endif
++ #ifdef PEM_R_NOT_DEK_INFO
++ {"NOT_DEK_INFO", ERR_LIB_PEM, PEM_R_NOT_DEK_INFO},
++ #else
++ {"NOT_DEK_INFO", 9, 105},
++ #endif
++ #ifdef PEM_R_NOT_ENCRYPTED
++ {"NOT_ENCRYPTED", ERR_LIB_PEM, PEM_R_NOT_ENCRYPTED},
++ #else
++ {"NOT_ENCRYPTED", 9, 106},
++ #endif
++ #ifdef PEM_R_NOT_PROC_TYPE
++ {"NOT_PROC_TYPE", ERR_LIB_PEM, PEM_R_NOT_PROC_TYPE},
++ #else
++ {"NOT_PROC_TYPE", 9, 107},
++ #endif
++ #ifdef PEM_R_NO_START_LINE
++ {"NO_START_LINE", ERR_LIB_PEM, PEM_R_NO_START_LINE},
++ #else
++ {"NO_START_LINE", 9, 108},
++ #endif
++ #ifdef PEM_R_PROBLEMS_GETTING_PASSWORD
++ {"PROBLEMS_GETTING_PASSWORD", ERR_LIB_PEM, PEM_R_PROBLEMS_GETTING_PASSWORD},
++ #else
++ {"PROBLEMS_GETTING_PASSWORD", 9, 109},
++ #endif
++ #ifdef PEM_R_PVK_DATA_TOO_SHORT
++ {"PVK_DATA_TOO_SHORT", ERR_LIB_PEM, PEM_R_PVK_DATA_TOO_SHORT},
++ #else
++ {"PVK_DATA_TOO_SHORT", 9, 124},
++ #endif
++ #ifdef PEM_R_PVK_TOO_SHORT
++ {"PVK_TOO_SHORT", ERR_LIB_PEM, PEM_R_PVK_TOO_SHORT},
++ #else
++ {"PVK_TOO_SHORT", 9, 125},
++ #endif
++ #ifdef PEM_R_READ_KEY
++ {"READ_KEY", ERR_LIB_PEM, PEM_R_READ_KEY},
++ #else
++ {"READ_KEY", 9, 111},
++ #endif
++ #ifdef PEM_R_SHORT_HEADER
++ {"SHORT_HEADER", ERR_LIB_PEM, PEM_R_SHORT_HEADER},
++ #else
++ {"SHORT_HEADER", 9, 112},
++ #endif
++ #ifdef PEM_R_UNEXPECTED_DEK_IV
++ {"UNEXPECTED_DEK_IV", ERR_LIB_PEM, PEM_R_UNEXPECTED_DEK_IV},
++ #else
++ {"UNEXPECTED_DEK_IV", 9, 130},
++ #endif
++ #ifdef PEM_R_UNSUPPORTED_CIPHER
++ {"UNSUPPORTED_CIPHER", ERR_LIB_PEM, PEM_R_UNSUPPORTED_CIPHER},
++ #else
++ {"UNSUPPORTED_CIPHER", 9, 113},
++ #endif
++ #ifdef PEM_R_UNSUPPORTED_ENCRYPTION
++ {"UNSUPPORTED_ENCRYPTION", ERR_LIB_PEM, PEM_R_UNSUPPORTED_ENCRYPTION},
++ #else
++ {"UNSUPPORTED_ENCRYPTION", 9, 114},
++ #endif
++ #ifdef PEM_R_UNSUPPORTED_KEY_COMPONENTS
++ {"UNSUPPORTED_KEY_COMPONENTS", ERR_LIB_PEM, PEM_R_UNSUPPORTED_KEY_COMPONENTS},
++ #else
++ {"UNSUPPORTED_KEY_COMPONENTS", 9, 126},
++ #endif
++ #ifdef PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE
++ {"UNSUPPORTED_PUBLIC_KEY_TYPE", ERR_LIB_PEM, PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE},
++ #else
++ {"UNSUPPORTED_PUBLIC_KEY_TYPE", 9, 110},
++ #endif
++ #ifdef PEM_R_UNSUPPORTED_PVK_KEY_TYPE
++ {"UNSUPPORTED_PVK_KEY_TYPE", ERR_LIB_PEM, PEM_R_UNSUPPORTED_PVK_KEY_TYPE},
++ #else
++ {"UNSUPPORTED_PVK_KEY_TYPE", 9, 133},
++ #endif
++ #ifdef PKCS12_R_CALLBACK_FAILED
++ {"CALLBACK_FAILED", ERR_LIB_PKCS12, PKCS12_R_CALLBACK_FAILED},
++ #else
++ {"CALLBACK_FAILED", 35, 115},
++ #endif
++ #ifdef PKCS12_R_CANT_PACK_STRUCTURE
++ {"CANT_PACK_STRUCTURE", ERR_LIB_PKCS12, PKCS12_R_CANT_PACK_STRUCTURE},
++ #else
++ {"CANT_PACK_STRUCTURE", 35, 100},
++ #endif
++ #ifdef PKCS12_R_CONTENT_TYPE_NOT_DATA
++ {"CONTENT_TYPE_NOT_DATA", ERR_LIB_PKCS12, PKCS12_R_CONTENT_TYPE_NOT_DATA},
++ #else
++ {"CONTENT_TYPE_NOT_DATA", 35, 121},
++ #endif
++ #ifdef PKCS12_R_DECODE_ERROR
++ {"DECODE_ERROR", ERR_LIB_PKCS12, PKCS12_R_DECODE_ERROR},
++ #else
++ {"DECODE_ERROR", 35, 101},
++ #endif
++ #ifdef PKCS12_R_ENCODE_ERROR
++ {"ENCODE_ERROR", ERR_LIB_PKCS12, PKCS12_R_ENCODE_ERROR},
++ #else
++ {"ENCODE_ERROR", 35, 102},
++ #endif
++ #ifdef PKCS12_R_ENCRYPT_ERROR
++ {"ENCRYPT_ERROR", ERR_LIB_PKCS12, PKCS12_R_ENCRYPT_ERROR},
++ #else
++ {"ENCRYPT_ERROR", 35, 103},
++ #endif
++ #ifdef PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE
++ {"ERROR_SETTING_ENCRYPTED_DATA_TYPE", ERR_LIB_PKCS12, PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE},
++ #else
++ {"ERROR_SETTING_ENCRYPTED_DATA_TYPE", 35, 120},
++ #endif
++ #ifdef PKCS12_R_INVALID_NULL_ARGUMENT
++ {"INVALID_NULL_ARGUMENT", ERR_LIB_PKCS12, PKCS12_R_INVALID_NULL_ARGUMENT},
++ #else
++ {"INVALID_NULL_ARGUMENT", 35, 104},
++ #endif
++ #ifdef PKCS12_R_INVALID_NULL_PKCS12_POINTER
++ {"INVALID_NULL_PKCS12_POINTER", ERR_LIB_PKCS12, PKCS12_R_INVALID_NULL_PKCS12_POINTER},
++ #else
++ {"INVALID_NULL_PKCS12_POINTER", 35, 105},
++ #endif
++ #ifdef PKCS12_R_INVALID_SALT_LENGTH
++ {"INVALID_SALT_LENGTH", ERR_LIB_PKCS12, PKCS12_R_INVALID_SALT_LENGTH},
++ #else
++ {"INVALID_SALT_LENGTH", 35, 117},
++ #endif
++ #ifdef PKCS12_R_INVALID_TYPE
++ {"INVALID_TYPE", ERR_LIB_PKCS12, PKCS12_R_INVALID_TYPE},
++ #else
++ {"INVALID_TYPE", 35, 112},
++ #endif
++ #ifdef PKCS12_R_IV_GEN_ERROR
++ {"IV_GEN_ERROR", ERR_LIB_PKCS12, PKCS12_R_IV_GEN_ERROR},
++ #else
++ {"IV_GEN_ERROR", 35, 106},
++ #endif
++ #ifdef PKCS12_R_KEY_GEN_ERROR
++ {"KEY_GEN_ERROR", ERR_LIB_PKCS12, PKCS12_R_KEY_GEN_ERROR},
++ #else
++ {"KEY_GEN_ERROR", 35, 107},
++ #endif
++ #ifdef PKCS12_R_MAC_ABSENT
++ {"MAC_ABSENT", ERR_LIB_PKCS12, PKCS12_R_MAC_ABSENT},
++ #else
++ {"MAC_ABSENT", 35, 108},
++ #endif
++ #ifdef PKCS12_R_MAC_GENERATION_ERROR
++ {"MAC_GENERATION_ERROR", ERR_LIB_PKCS12, PKCS12_R_MAC_GENERATION_ERROR},
++ #else
++ {"MAC_GENERATION_ERROR", 35, 109},
++ #endif
++ #ifdef PKCS12_R_MAC_SETUP_ERROR
++ {"MAC_SETUP_ERROR", ERR_LIB_PKCS12, PKCS12_R_MAC_SETUP_ERROR},
++ #else
++ {"MAC_SETUP_ERROR", 35, 110},
++ #endif
++ #ifdef PKCS12_R_MAC_STRING_SET_ERROR
++ {"MAC_STRING_SET_ERROR", ERR_LIB_PKCS12, PKCS12_R_MAC_STRING_SET_ERROR},
++ #else
++ {"MAC_STRING_SET_ERROR", 35, 111},
++ #endif
++ #ifdef PKCS12_R_MAC_VERIFY_FAILURE
++ {"MAC_VERIFY_FAILURE", ERR_LIB_PKCS12, PKCS12_R_MAC_VERIFY_FAILURE},
++ #else
++ {"MAC_VERIFY_FAILURE", 35, 113},
++ #endif
++ #ifdef PKCS12_R_PARSE_ERROR
++ {"PARSE_ERROR", ERR_LIB_PKCS12, PKCS12_R_PARSE_ERROR},
++ #else
++ {"PARSE_ERROR", 35, 114},
++ #endif
++ #ifdef PKCS12_R_PKCS12_CIPHERFINAL_ERROR
++ {"PKCS12_CIPHERFINAL_ERROR", ERR_LIB_PKCS12, PKCS12_R_PKCS12_CIPHERFINAL_ERROR},
++ #else
++ {"PKCS12_CIPHERFINAL_ERROR", 35, 116},
++ #endif
++ #ifdef PKCS12_R_UNKNOWN_DIGEST_ALGORITHM
++ {"UNKNOWN_DIGEST_ALGORITHM", ERR_LIB_PKCS12, PKCS12_R_UNKNOWN_DIGEST_ALGORITHM},
++ #else
++ {"UNKNOWN_DIGEST_ALGORITHM", 35, 118},
++ #endif
++ #ifdef PKCS12_R_UNSUPPORTED_PKCS12_MODE
++ {"UNSUPPORTED_PKCS12_MODE", ERR_LIB_PKCS12, PKCS12_R_UNSUPPORTED_PKCS12_MODE},
++ #else
++ {"UNSUPPORTED_PKCS12_MODE", 35, 119},
++ #endif
++ #ifdef PKCS7_R_CERTIFICATE_VERIFY_ERROR
++ {"CERTIFICATE_VERIFY_ERROR", ERR_LIB_PKCS7, PKCS7_R_CERTIFICATE_VERIFY_ERROR},
++ #else
++ {"CERTIFICATE_VERIFY_ERROR", 33, 117},
++ #endif
++ #ifdef PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER
++ {"CIPHER_HAS_NO_OBJECT_IDENTIFIER", ERR_LIB_PKCS7, PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER},
++ #else
++ {"CIPHER_HAS_NO_OBJECT_IDENTIFIER", 33, 144},
++ #endif
++ #ifdef PKCS7_R_CIPHER_NOT_INITIALIZED
++ {"CIPHER_NOT_INITIALIZED", ERR_LIB_PKCS7, PKCS7_R_CIPHER_NOT_INITIALIZED},
++ #else
++ {"CIPHER_NOT_INITIALIZED", 33, 116},
++ #endif
++ #ifdef PKCS7_R_CONTENT_AND_DATA_PRESENT
++ {"CONTENT_AND_DATA_PRESENT", ERR_LIB_PKCS7, PKCS7_R_CONTENT_AND_DATA_PRESENT},
++ #else
++ {"CONTENT_AND_DATA_PRESENT", 33, 118},
++ #endif
++ #ifdef PKCS7_R_CTRL_ERROR
++ {"CTRL_ERROR", ERR_LIB_PKCS7, PKCS7_R_CTRL_ERROR},
++ #else
++ {"CTRL_ERROR", 33, 152},
++ #endif
++ #ifdef PKCS7_R_DECRYPT_ERROR
++ {"DECRYPT_ERROR", ERR_LIB_PKCS7, PKCS7_R_DECRYPT_ERROR},
++ #else
++ {"DECRYPT_ERROR", 33, 119},
++ #endif
++ #ifdef PKCS7_R_DIGEST_FAILURE
++ {"DIGEST_FAILURE", ERR_LIB_PKCS7, PKCS7_R_DIGEST_FAILURE},
++ #else
++ {"DIGEST_FAILURE", 33, 101},
++ #endif
++ #ifdef PKCS7_R_ENCRYPTION_CTRL_FAILURE
++ {"ENCRYPTION_CTRL_FAILURE", ERR_LIB_PKCS7, PKCS7_R_ENCRYPTION_CTRL_FAILURE},
++ #else
++ {"ENCRYPTION_CTRL_FAILURE", 33, 149},
++ #endif
++ #ifdef PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE
++ {"ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE", ERR_LIB_PKCS7, PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE},
++ #else
++ {"ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE", 33, 150},
++ #endif
++ #ifdef PKCS7_R_ERROR_ADDING_RECIPIENT
++ {"ERROR_ADDING_RECIPIENT", ERR_LIB_PKCS7, PKCS7_R_ERROR_ADDING_RECIPIENT},
++ #else
++ {"ERROR_ADDING_RECIPIENT", 33, 120},
++ #endif
++ #ifdef PKCS7_R_ERROR_SETTING_CIPHER
++ {"ERROR_SETTING_CIPHER", ERR_LIB_PKCS7, PKCS7_R_ERROR_SETTING_CIPHER},
++ #else
++ {"ERROR_SETTING_CIPHER", 33, 121},
++ #endif
++ #ifdef PKCS7_R_INVALID_NULL_POINTER
++ {"INVALID_NULL_POINTER", ERR_LIB_PKCS7, PKCS7_R_INVALID_NULL_POINTER},
++ #else
++ {"INVALID_NULL_POINTER", 33, 143},
++ #endif
++ #ifdef PKCS7_R_INVALID_SIGNED_DATA_TYPE
++ {"INVALID_SIGNED_DATA_TYPE", ERR_LIB_PKCS7, PKCS7_R_INVALID_SIGNED_DATA_TYPE},
++ #else
++ {"INVALID_SIGNED_DATA_TYPE", 33, 155},
++ #endif
++ #ifdef PKCS7_R_NO_CONTENT
++ {"NO_CONTENT", ERR_LIB_PKCS7, PKCS7_R_NO_CONTENT},
++ #else
++ {"NO_CONTENT", 33, 122},
++ #endif
++ #ifdef PKCS7_R_NO_DEFAULT_DIGEST
++ {"NO_DEFAULT_DIGEST", ERR_LIB_PKCS7, PKCS7_R_NO_DEFAULT_DIGEST},
++ #else
++ {"NO_DEFAULT_DIGEST", 33, 151},
++ #endif
++ #ifdef PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND
++ {"NO_MATCHING_DIGEST_TYPE_FOUND", ERR_LIB_PKCS7, PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND},
++ #else
++ {"NO_MATCHING_DIGEST_TYPE_FOUND", 33, 154},
++ #endif
++ #ifdef PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE
++ {"NO_RECIPIENT_MATCHES_CERTIFICATE", ERR_LIB_PKCS7, PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE},
++ #else
++ {"NO_RECIPIENT_MATCHES_CERTIFICATE", 33, 115},
++ #endif
++ #ifdef PKCS7_R_NO_SIGNATURES_ON_DATA
++ {"NO_SIGNATURES_ON_DATA", ERR_LIB_PKCS7, PKCS7_R_NO_SIGNATURES_ON_DATA},
++ #else
++ {"NO_SIGNATURES_ON_DATA", 33, 123},
++ #endif
++ #ifdef PKCS7_R_NO_SIGNERS
++ {"NO_SIGNERS", ERR_LIB_PKCS7, PKCS7_R_NO_SIGNERS},
++ #else
++ {"NO_SIGNERS", 33, 142},
++ #endif
++ #ifdef PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE
++ {"OPERATION_NOT_SUPPORTED_ON_THIS_TYPE", ERR_LIB_PKCS7, PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE},
++ #else
++ {"OPERATION_NOT_SUPPORTED_ON_THIS_TYPE", 33, 104},
++ #endif
++ #ifdef PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR
++ {"PKCS7_ADD_SIGNATURE_ERROR", ERR_LIB_PKCS7, PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR},
++ #else
++ {"PKCS7_ADD_SIGNATURE_ERROR", 33, 124},
++ #endif
++ #ifdef PKCS7_R_PKCS7_ADD_SIGNER_ERROR
++ {"PKCS7_ADD_SIGNER_ERROR", ERR_LIB_PKCS7, PKCS7_R_PKCS7_ADD_SIGNER_ERROR},
++ #else
++ {"PKCS7_ADD_SIGNER_ERROR", 33, 153},
++ #endif
++ #ifdef PKCS7_R_PKCS7_DATASIGN
++ {"PKCS7_DATASIGN", ERR_LIB_PKCS7, PKCS7_R_PKCS7_DATASIGN},
++ #else
++ {"PKCS7_DATASIGN", 33, 145},
++ #endif
++ #ifdef PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE
++ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", ERR_LIB_PKCS7, PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE},
++ #else
++ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", 33, 127},
++ #endif
++ #ifdef PKCS7_R_SIGNATURE_FAILURE
++ {"SIGNATURE_FAILURE", ERR_LIB_PKCS7, PKCS7_R_SIGNATURE_FAILURE},
++ #else
++ {"SIGNATURE_FAILURE", 33, 105},
++ #endif
++ #ifdef PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND
++ {"SIGNER_CERTIFICATE_NOT_FOUND", ERR_LIB_PKCS7, PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND},
++ #else
++ {"SIGNER_CERTIFICATE_NOT_FOUND", 33, 128},
++ #endif
++ #ifdef PKCS7_R_SIGNING_CTRL_FAILURE
++ {"SIGNING_CTRL_FAILURE", ERR_LIB_PKCS7, PKCS7_R_SIGNING_CTRL_FAILURE},
++ #else
++ {"SIGNING_CTRL_FAILURE", 33, 147},
++ #endif
++ #ifdef PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE
++ {"SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE", ERR_LIB_PKCS7, PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE},
++ #else
++ {"SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE", 33, 148},
++ #endif
++ #ifdef PKCS7_R_SMIME_TEXT_ERROR
++ {"SMIME_TEXT_ERROR", ERR_LIB_PKCS7, PKCS7_R_SMIME_TEXT_ERROR},
++ #else
++ {"SMIME_TEXT_ERROR", 33, 129},
++ #endif
++ #ifdef PKCS7_R_UNABLE_TO_FIND_CERTIFICATE
++ {"UNABLE_TO_FIND_CERTIFICATE", ERR_LIB_PKCS7, PKCS7_R_UNABLE_TO_FIND_CERTIFICATE},
++ #else
++ {"UNABLE_TO_FIND_CERTIFICATE", 33, 106},
++ #endif
++ #ifdef PKCS7_R_UNABLE_TO_FIND_MEM_BIO
++ {"UNABLE_TO_FIND_MEM_BIO", ERR_LIB_PKCS7, PKCS7_R_UNABLE_TO_FIND_MEM_BIO},
++ #else
++ {"UNABLE_TO_FIND_MEM_BIO", 33, 107},
++ #endif
++ #ifdef PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST
++ {"UNABLE_TO_FIND_MESSAGE_DIGEST", ERR_LIB_PKCS7, PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST},
++ #else
++ {"UNABLE_TO_FIND_MESSAGE_DIGEST", 33, 108},
++ #endif
++ #ifdef PKCS7_R_UNKNOWN_DIGEST_TYPE
++ {"UNKNOWN_DIGEST_TYPE", ERR_LIB_PKCS7, PKCS7_R_UNKNOWN_DIGEST_TYPE},
++ #else
++ {"UNKNOWN_DIGEST_TYPE", 33, 109},
++ #endif
++ #ifdef PKCS7_R_UNKNOWN_OPERATION
++ {"UNKNOWN_OPERATION", ERR_LIB_PKCS7, PKCS7_R_UNKNOWN_OPERATION},
++ #else
++ {"UNKNOWN_OPERATION", 33, 110},
++ #endif
++ #ifdef PKCS7_R_UNSUPPORTED_CIPHER_TYPE
++ {"UNSUPPORTED_CIPHER_TYPE", ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CIPHER_TYPE},
++ #else
++ {"UNSUPPORTED_CIPHER_TYPE", 33, 111},
++ #endif
++ #ifdef PKCS7_R_UNSUPPORTED_CONTENT_TYPE
++ {"UNSUPPORTED_CONTENT_TYPE", ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CONTENT_TYPE},
++ #else
++ {"UNSUPPORTED_CONTENT_TYPE", 33, 112},
++ #endif
++ #ifdef PKCS7_R_WRONG_CONTENT_TYPE
++ {"WRONG_CONTENT_TYPE", ERR_LIB_PKCS7, PKCS7_R_WRONG_CONTENT_TYPE},
++ #else
++ {"WRONG_CONTENT_TYPE", 33, 113},
++ #endif
++ #ifdef PKCS7_R_WRONG_PKCS7_TYPE
++ {"WRONG_PKCS7_TYPE", ERR_LIB_PKCS7, PKCS7_R_WRONG_PKCS7_TYPE},
++ #else
++ {"WRONG_PKCS7_TYPE", 33, 114},
++ #endif
++ #ifdef PROP_R_NAME_TOO_LONG
++ {"NAME_TOO_LONG", ERR_LIB_PROP, PROP_R_NAME_TOO_LONG},
++ #else
++ {"NAME_TOO_LONG", 55, 100},
++ #endif
++ #ifdef PROP_R_NOT_AN_ASCII_CHARACTER
++ {"NOT_AN_ASCII_CHARACTER", ERR_LIB_PROP, PROP_R_NOT_AN_ASCII_CHARACTER},
++ #else
++ {"NOT_AN_ASCII_CHARACTER", 55, 101},
++ #endif
++ #ifdef PROP_R_NOT_AN_HEXADECIMAL_DIGIT
++ {"NOT_AN_HEXADECIMAL_DIGIT", ERR_LIB_PROP, PROP_R_NOT_AN_HEXADECIMAL_DIGIT},
++ #else
++ {"NOT_AN_HEXADECIMAL_DIGIT", 55, 102},
++ #endif
++ #ifdef PROP_R_NOT_AN_IDENTIFIER
++ {"NOT_AN_IDENTIFIER", ERR_LIB_PROP, PROP_R_NOT_AN_IDENTIFIER},
++ #else
++ {"NOT_AN_IDENTIFIER", 55, 103},
++ #endif
++ #ifdef PROP_R_NOT_AN_OCTAL_DIGIT
++ {"NOT_AN_OCTAL_DIGIT", ERR_LIB_PROP, PROP_R_NOT_AN_OCTAL_DIGIT},
++ #else
++ {"NOT_AN_OCTAL_DIGIT", 55, 104},
++ #endif
++ #ifdef PROP_R_NOT_A_DECIMAL_DIGIT
++ {"NOT_A_DECIMAL_DIGIT", ERR_LIB_PROP, PROP_R_NOT_A_DECIMAL_DIGIT},
++ #else
++ {"NOT_A_DECIMAL_DIGIT", 55, 105},
++ #endif
++ #ifdef PROP_R_NO_MATCHING_STRING_DELIMITER
++ {"NO_MATCHING_STRING_DELIMITER", ERR_LIB_PROP, PROP_R_NO_MATCHING_STRING_DELIMITER},
++ #else
++ {"NO_MATCHING_STRING_DELIMITER", 55, 106},
++ #endif
++ #ifdef PROP_R_NO_VALUE
++ {"NO_VALUE", ERR_LIB_PROP, PROP_R_NO_VALUE},
++ #else
++ {"NO_VALUE", 55, 107},
++ #endif
++ #ifdef PROP_R_PARSE_FAILED
++ {"PARSE_FAILED", ERR_LIB_PROP, PROP_R_PARSE_FAILED},
++ #else
++ {"PARSE_FAILED", 55, 108},
++ #endif
++ #ifdef PROP_R_STRING_TOO_LONG
++ {"STRING_TOO_LONG", ERR_LIB_PROP, PROP_R_STRING_TOO_LONG},
++ #else
++ {"STRING_TOO_LONG", 55, 109},
++ #endif
++ #ifdef PROP_R_TRAILING_CHARACTERS
++ {"TRAILING_CHARACTERS", ERR_LIB_PROP, PROP_R_TRAILING_CHARACTERS},
++ #else
++ {"TRAILING_CHARACTERS", 55, 110},
++ #endif
++ #ifdef PROV_R_ADDITIONAL_INPUT_TOO_LONG
++ {"ADDITIONAL_INPUT_TOO_LONG", ERR_LIB_PROV, PROV_R_ADDITIONAL_INPUT_TOO_LONG},
++ #else
++ {"ADDITIONAL_INPUT_TOO_LONG", 57, 184},
++ #endif
++ #ifdef PROV_R_ALGORITHM_MISMATCH
++ {"ALGORITHM_MISMATCH", ERR_LIB_PROV, PROV_R_ALGORITHM_MISMATCH},
++ #else
++ {"ALGORITHM_MISMATCH", 57, 173},
++ #endif
++ #ifdef PROV_R_ALREADY_INSTANTIATED
++ {"ALREADY_INSTANTIATED", ERR_LIB_PROV, PROV_R_ALREADY_INSTANTIATED},
++ #else
++ {"ALREADY_INSTANTIATED", 57, 185},
++ #endif
++ #ifdef PROV_R_BAD_DECRYPT
++ {"BAD_DECRYPT", ERR_LIB_PROV, PROV_R_BAD_DECRYPT},
++ #else
++ {"BAD_DECRYPT", 57, 100},
++ #endif
++ #ifdef PROV_R_BAD_ENCODING
++ {"BAD_ENCODING", ERR_LIB_PROV, PROV_R_BAD_ENCODING},
++ #else
++ {"BAD_ENCODING", 57, 141},
++ #endif
++ #ifdef PROV_R_BAD_LENGTH
++ {"BAD_LENGTH", ERR_LIB_PROV, PROV_R_BAD_LENGTH},
++ #else
++ {"BAD_LENGTH", 57, 142},
++ #endif
++ #ifdef PROV_R_BAD_TLS_CLIENT_VERSION
++ {"BAD_TLS_CLIENT_VERSION", ERR_LIB_PROV, PROV_R_BAD_TLS_CLIENT_VERSION},
++ #else
++ {"BAD_TLS_CLIENT_VERSION", 57, 161},
++ #endif
++ #ifdef PROV_R_BN_ERROR
++ {"BN_ERROR", ERR_LIB_PROV, PROV_R_BN_ERROR},
++ #else
++ {"BN_ERROR", 57, 160},
++ #endif
++ #ifdef PROV_R_CIPHER_OPERATION_FAILED
++ {"CIPHER_OPERATION_FAILED", ERR_LIB_PROV, PROV_R_CIPHER_OPERATION_FAILED},
++ #else
++ {"CIPHER_OPERATION_FAILED", 57, 102},
++ #endif
++ #ifdef PROV_R_COFACTOR_REQUIRED
++ {"COFACTOR_REQUIRED", ERR_LIB_PROV, PROV_R_COFACTOR_REQUIRED},
++ #else
++ {"COFACTOR_REQUIRED", 57, 236},
++ #endif
++ #ifdef PROV_R_DERIVATION_FUNCTION_INIT_FAILED
++ {"DERIVATION_FUNCTION_INIT_FAILED", ERR_LIB_PROV, PROV_R_DERIVATION_FUNCTION_INIT_FAILED},
++ #else
++ {"DERIVATION_FUNCTION_INIT_FAILED", 57, 205},
++ #endif
++ #ifdef PROV_R_DIGEST_NOT_ALLOWED
++ {"DIGEST_NOT_ALLOWED", ERR_LIB_PROV, PROV_R_DIGEST_NOT_ALLOWED},
++ #else
++ {"DIGEST_NOT_ALLOWED", 57, 174},
++ #endif
++ #ifdef PROV_R_EMS_NOT_ENABLED
++ {"EMS_NOT_ENABLED", ERR_LIB_PROV, PROV_R_EMS_NOT_ENABLED},
++ #else
++ {"EMS_NOT_ENABLED", 57, 233},
++ #endif
++ #ifdef PROV_R_ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS
++ {"ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS", ERR_LIB_PROV, PROV_R_ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS},
++ #else
++ {"ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS", 57, 244},
++ #endif
++ #ifdef PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK
++ {"ENTROPY_SOURCE_STRENGTH_TOO_WEAK", ERR_LIB_PROV, PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK},
++ #else
++ {"ENTROPY_SOURCE_STRENGTH_TOO_WEAK", 57, 186},
++ #endif
++ #ifdef PROV_R_ERROR_INSTANTIATING_DRBG
++ {"ERROR_INSTANTIATING_DRBG", ERR_LIB_PROV, PROV_R_ERROR_INSTANTIATING_DRBG},
++ #else
++ {"ERROR_INSTANTIATING_DRBG", 57, 188},
++ #endif
++ #ifdef PROV_R_ERROR_RETRIEVING_ENTROPY
++ {"ERROR_RETRIEVING_ENTROPY", ERR_LIB_PROV, PROV_R_ERROR_RETRIEVING_ENTROPY},
++ #else
++ {"ERROR_RETRIEVING_ENTROPY", 57, 189},
++ #endif
++ #ifdef PROV_R_ERROR_RETRIEVING_NONCE
++ {"ERROR_RETRIEVING_NONCE", ERR_LIB_PROV, PROV_R_ERROR_RETRIEVING_NONCE},
++ #else
++ {"ERROR_RETRIEVING_NONCE", 57, 190},
++ #endif
++ #ifdef PROV_R_FAILED_DURING_DERIVATION
++ {"FAILED_DURING_DERIVATION", ERR_LIB_PROV, PROV_R_FAILED_DURING_DERIVATION},
++ #else
++ {"FAILED_DURING_DERIVATION", 57, 164},
++ #endif
++ #ifdef PROV_R_FAILED_TO_CREATE_LOCK
++ {"FAILED_TO_CREATE_LOCK", ERR_LIB_PROV, PROV_R_FAILED_TO_CREATE_LOCK},
++ #else
++ {"FAILED_TO_CREATE_LOCK", 57, 180},
++ #endif
++ #ifdef PROV_R_FAILED_TO_DECRYPT
++ {"FAILED_TO_DECRYPT", ERR_LIB_PROV, PROV_R_FAILED_TO_DECRYPT},
++ #else
++ {"FAILED_TO_DECRYPT", 57, 162},
++ #endif
++ #ifdef PROV_R_FAILED_TO_GENERATE_KEY
++ {"FAILED_TO_GENERATE_KEY", ERR_LIB_PROV, PROV_R_FAILED_TO_GENERATE_KEY},
++ #else
++ {"FAILED_TO_GENERATE_KEY", 57, 121},
++ #endif
++ #ifdef PROV_R_FAILED_TO_GET_PARAMETER
++ {"FAILED_TO_GET_PARAMETER", ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER},
++ #else
++ {"FAILED_TO_GET_PARAMETER", 57, 103},
++ #endif
++ #ifdef PROV_R_FAILED_TO_SET_PARAMETER
++ {"FAILED_TO_SET_PARAMETER", ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER},
++ #else
++ {"FAILED_TO_SET_PARAMETER", 57, 104},
++ #endif
++ #ifdef PROV_R_FAILED_TO_SIGN
++ {"FAILED_TO_SIGN", ERR_LIB_PROV, PROV_R_FAILED_TO_SIGN},
++ #else
++ {"FAILED_TO_SIGN", 57, 175},
++ #endif
++ #ifdef PROV_R_FINAL_CALL_OUT_OF_ORDER
++ {"FINAL_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_FINAL_CALL_OUT_OF_ORDER},
++ #else
++ {"FINAL_CALL_OUT_OF_ORDER", 57, 237},
++ #endif
++ #ifdef PROV_R_FIPS_MODULE_CONDITIONAL_ERROR
++ {"FIPS_MODULE_CONDITIONAL_ERROR", ERR_LIB_PROV, PROV_R_FIPS_MODULE_CONDITIONAL_ERROR},
++ #else
++ {"FIPS_MODULE_CONDITIONAL_ERROR", 57, 227},
++ #endif
++ #ifdef PROV_R_FIPS_MODULE_ENTERING_ERROR_STATE
++ {"FIPS_MODULE_ENTERING_ERROR_STATE", ERR_LIB_PROV, PROV_R_FIPS_MODULE_ENTERING_ERROR_STATE},
++ #else
++ {"FIPS_MODULE_ENTERING_ERROR_STATE", 57, 224},
++ #endif
++ #ifdef PROV_R_FIPS_MODULE_IMPORT_PCT_ERROR
++ {"FIPS_MODULE_IMPORT_PCT_ERROR", ERR_LIB_PROV, PROV_R_FIPS_MODULE_IMPORT_PCT_ERROR},
++ #else
++ {"FIPS_MODULE_IMPORT_PCT_ERROR", 57, 253},
++ #endif
++ #ifdef PROV_R_FIPS_MODULE_IN_ERROR_STATE
++ {"FIPS_MODULE_IN_ERROR_STATE", ERR_LIB_PROV, PROV_R_FIPS_MODULE_IN_ERROR_STATE},
++ #else
++ {"FIPS_MODULE_IN_ERROR_STATE", 57, 225},
++ #endif
++ #ifdef PROV_R_GENERATE_ERROR
++ {"GENERATE_ERROR", ERR_LIB_PROV, PROV_R_GENERATE_ERROR},
++ #else
++ {"GENERATE_ERROR", 57, 191},
++ #endif
++ #ifdef PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE
++ {"ILLEGAL_OR_UNSUPPORTED_PADDING_MODE", ERR_LIB_PROV, PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE},
++ #else
++ {"ILLEGAL_OR_UNSUPPORTED_PADDING_MODE", 57, 165},
++ #endif
++ #ifdef PROV_R_INDICATOR_INTEGRITY_FAILURE
++ {"INDICATOR_INTEGRITY_FAILURE", ERR_LIB_PROV, PROV_R_INDICATOR_INTEGRITY_FAILURE},
++ #else
++ {"INDICATOR_INTEGRITY_FAILURE", 57, 210},
++ #endif
++ #ifdef PROV_R_INIT_CALL_OUT_OF_ORDER
++ {"INIT_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_INIT_CALL_OUT_OF_ORDER},
++ #else
++ {"INIT_CALL_OUT_OF_ORDER", 57, 238},
++ #endif
++ #ifdef PROV_R_INSUFFICIENT_DRBG_STRENGTH
++ {"INSUFFICIENT_DRBG_STRENGTH", ERR_LIB_PROV, PROV_R_INSUFFICIENT_DRBG_STRENGTH},
++ #else
++ {"INSUFFICIENT_DRBG_STRENGTH", 57, 181},
++ #endif
++ #ifdef PROV_R_INVALID_AAD
++ {"INVALID_AAD", ERR_LIB_PROV, PROV_R_INVALID_AAD},
++ #else
++ {"INVALID_AAD", 57, 108},
++ #endif
++ #ifdef PROV_R_INVALID_AEAD
++ {"INVALID_AEAD", ERR_LIB_PROV, PROV_R_INVALID_AEAD},
++ #else
++ {"INVALID_AEAD", 57, 231},
++ #endif
++ #ifdef PROV_R_INVALID_CIPHER
++ {"INVALID_CIPHER", ERR_LIB_PROV, PROV_R_INVALID_CIPHER},
++ #else
++ {"INVALID_CIPHER", 57, 260},
++ #endif
++ #ifdef PROV_R_INVALID_CONFIG_DATA
++ {"INVALID_CONFIG_DATA", ERR_LIB_PROV, PROV_R_INVALID_CONFIG_DATA},
++ #else
++ {"INVALID_CONFIG_DATA", 57, 211},
++ #endif
++ #ifdef PROV_R_INVALID_CONSTANT_LENGTH
++ {"INVALID_CONSTANT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_CONSTANT_LENGTH},
++ #else
++ {"INVALID_CONSTANT_LENGTH", 57, 157},
++ #endif
++ #ifdef PROV_R_INVALID_CURVE
++ {"INVALID_CURVE", ERR_LIB_PROV, PROV_R_INVALID_CURVE},
++ #else
++ {"INVALID_CURVE", 57, 176},
++ #endif
++ #ifdef PROV_R_INVALID_CUSTOM_LENGTH
++ {"INVALID_CUSTOM_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_CUSTOM_LENGTH},
++ #else
++ {"INVALID_CUSTOM_LENGTH", 57, 111},
++ #endif
++ #ifdef PROV_R_INVALID_DATA
++ {"INVALID_DATA", ERR_LIB_PROV, PROV_R_INVALID_DATA},
++ #else
++ {"INVALID_DATA", 57, 115},
++ #endif
++ #ifdef PROV_R_INVALID_DIGEST
++ {"INVALID_DIGEST", ERR_LIB_PROV, PROV_R_INVALID_DIGEST},
++ #else
++ {"INVALID_DIGEST", 57, 122},
++ #endif
++ #ifdef PROV_R_INVALID_DIGEST_LENGTH
++ {"INVALID_DIGEST_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_DIGEST_LENGTH},
++ #else
++ {"INVALID_DIGEST_LENGTH", 57, 166},
++ #endif
++ #ifdef PROV_R_INVALID_DIGEST_SIZE
++ {"INVALID_DIGEST_SIZE", ERR_LIB_PROV, PROV_R_INVALID_DIGEST_SIZE},
++ #else
++ {"INVALID_DIGEST_SIZE", 57, 218},
++ #endif
++ #ifdef PROV_R_INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION
++ {"INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION", ERR_LIB_PROV, PROV_R_INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION},
++ #else
++ {"INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION", 57, 243},
++ #endif
++ #ifdef PROV_R_INVALID_FUNCTION_NAME
++ {"INVALID_FUNCTION_NAME", ERR_LIB_PROV, PROV_R_INVALID_FUNCTION_NAME},
++ #else
++ {"INVALID_FUNCTION_NAME", 57, 258},
++ #endif
++ #ifdef PROV_R_INVALID_INDEX_LENGTH
++ {"INVALID_INDEX_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_INDEX_LENGTH},
++ #else
++ {"INVALID_INDEX_LENGTH", 57, 259},
++ #endif
++ #ifdef PROV_R_INVALID_INPUT_LENGTH
++ {"INVALID_INPUT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_INPUT_LENGTH},
++ #else
++ {"INVALID_INPUT_LENGTH", 57, 230},
++ #endif
++ #ifdef PROV_R_INVALID_ITERATION_COUNT
++ {"INVALID_ITERATION_COUNT", ERR_LIB_PROV, PROV_R_INVALID_ITERATION_COUNT},
++ #else
++ {"INVALID_ITERATION_COUNT", 57, 123},
++ #endif
++ #ifdef PROV_R_INVALID_IV_LENGTH
++ {"INVALID_IV_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_IV_LENGTH},
++ #else
++ {"INVALID_IV_LENGTH", 57, 109},
++ #endif
++ #ifdef PROV_R_INVALID_KDF
++ {"INVALID_KDF", ERR_LIB_PROV, PROV_R_INVALID_KDF},
++ #else
++ {"INVALID_KDF", 57, 232},
++ #endif
++ #ifdef PROV_R_INVALID_KDR
++ {"INVALID_KDR", ERR_LIB_PROV, PROV_R_INVALID_KDR},
++ #else
++ {"INVALID_KDR", 57, 256},
++ #endif
++ #ifdef PROV_R_INVALID_KEY
++ {"INVALID_KEY", ERR_LIB_PROV, PROV_R_INVALID_KEY},
++ #else
++ {"INVALID_KEY", 57, 158},
++ #endif
++ #ifdef PROV_R_INVALID_KEY_LENGTH
++ {"INVALID_KEY_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_KEY_LENGTH},
++ #else
++ {"INVALID_KEY_LENGTH", 57, 105},
++ #endif
++ #ifdef PROV_R_INVALID_LABEL
++ {"INVALID_LABEL", ERR_LIB_PROV, PROV_R_INVALID_LABEL},
++ #else
++ {"INVALID_LABEL", 57, 257},
++ #endif
++ #ifdef PROV_R_INVALID_MAC
++ {"INVALID_MAC", ERR_LIB_PROV, PROV_R_INVALID_MAC},
++ #else
++ {"INVALID_MAC", 57, 151},
++ #endif
++ #ifdef PROV_R_INVALID_MEMORY_SIZE
++ {"INVALID_MEMORY_SIZE", ERR_LIB_PROV, PROV_R_INVALID_MEMORY_SIZE},
++ #else
++ {"INVALID_MEMORY_SIZE", 57, 235},
++ #endif
++ #ifdef PROV_R_INVALID_MGF1_MD
++ {"INVALID_MGF1_MD", ERR_LIB_PROV, PROV_R_INVALID_MGF1_MD},
++ #else
++ {"INVALID_MGF1_MD", 57, 167},
++ #endif
++ #ifdef PROV_R_INVALID_MODE
++ {"INVALID_MODE", ERR_LIB_PROV, PROV_R_INVALID_MODE},
++ #else
++ {"INVALID_MODE", 57, 125},
++ #endif
++ #ifdef PROV_R_INVALID_OUTPUT_LENGTH
++ {"INVALID_OUTPUT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_OUTPUT_LENGTH},
++ #else
++ {"INVALID_OUTPUT_LENGTH", 57, 217},
++ #endif
++ #ifdef PROV_R_INVALID_PADDING_MODE
++ {"INVALID_PADDING_MODE", ERR_LIB_PROV, PROV_R_INVALID_PADDING_MODE},
++ #else
++ {"INVALID_PADDING_MODE", 57, 168},
++ #endif
++ #ifdef PROV_R_INVALID_PREHASHED_DIGEST_LENGTH
++ {"INVALID_PREHASHED_DIGEST_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_PREHASHED_DIGEST_LENGTH},
++ #else
++ {"INVALID_PREHASHED_DIGEST_LENGTH", 57, 241},
++ #endif
++ #ifdef PROV_R_INVALID_PUBINFO
++ {"INVALID_PUBINFO", ERR_LIB_PROV, PROV_R_INVALID_PUBINFO},
++ #else
++ {"INVALID_PUBINFO", 57, 198},
++ #endif
++ #ifdef PROV_R_INVALID_SALT_LENGTH
++ {"INVALID_SALT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_SALT_LENGTH},
++ #else
++ {"INVALID_SALT_LENGTH", 57, 112},
++ #endif
++ #ifdef PROV_R_INVALID_SEED_LENGTH
++ {"INVALID_SEED_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_SEED_LENGTH},
++ #else
++ {"INVALID_SEED_LENGTH", 57, 154},
++ #endif
++ #ifdef PROV_R_INVALID_SIGNATURE_SIZE
++ {"INVALID_SIGNATURE_SIZE", ERR_LIB_PROV, PROV_R_INVALID_SIGNATURE_SIZE},
++ #else
++ {"INVALID_SIGNATURE_SIZE", 57, 179},
++ #endif
++ #ifdef PROV_R_INVALID_STATE
++ {"INVALID_STATE", ERR_LIB_PROV, PROV_R_INVALID_STATE},
++ #else
++ {"INVALID_STATE", 57, 212},
++ #endif
++ #ifdef PROV_R_INVALID_TAG
++ {"INVALID_TAG", ERR_LIB_PROV, PROV_R_INVALID_TAG},
++ #else
++ {"INVALID_TAG", 57, 110},
++ #endif
++ #ifdef PROV_R_INVALID_TAG_LENGTH
++ {"INVALID_TAG_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_TAG_LENGTH},
++ #else
++ {"INVALID_TAG_LENGTH", 57, 118},
++ #endif
++ #ifdef PROV_R_INVALID_THREAD_POOL_SIZE
++ {"INVALID_THREAD_POOL_SIZE", ERR_LIB_PROV, PROV_R_INVALID_THREAD_POOL_SIZE},
++ #else
++ {"INVALID_THREAD_POOL_SIZE", 57, 234},
++ #endif
++ #ifdef PROV_R_INVALID_UKM_LENGTH
++ {"INVALID_UKM_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_UKM_LENGTH},
++ #else
++ {"INVALID_UKM_LENGTH", 57, 200},
++ #endif
++ #ifdef PROV_R_INVALID_X931_DIGEST
++ {"INVALID_X931_DIGEST", ERR_LIB_PROV, PROV_R_INVALID_X931_DIGEST},
++ #else
++ {"INVALID_X931_DIGEST", 57, 170},
++ #endif
++ #ifdef PROV_R_IN_ERROR_STATE
++ {"IN_ERROR_STATE", ERR_LIB_PROV, PROV_R_IN_ERROR_STATE},
++ #else
++ {"IN_ERROR_STATE", 57, 192},
++ #endif
++ #ifdef PROV_R_KEY_SETUP_FAILED
++ {"KEY_SETUP_FAILED", ERR_LIB_PROV, PROV_R_KEY_SETUP_FAILED},
++ #else
++ {"KEY_SETUP_FAILED", 57, 101},
++ #endif
++ #ifdef PROV_R_KEY_SIZE_TOO_SMALL
++ {"KEY_SIZE_TOO_SMALL", ERR_LIB_PROV, PROV_R_KEY_SIZE_TOO_SMALL},
++ #else
++ {"KEY_SIZE_TOO_SMALL", 57, 171},
++ #endif
++ #ifdef PROV_R_LENGTH_TOO_LARGE
++ {"LENGTH_TOO_LARGE", ERR_LIB_PROV, PROV_R_LENGTH_TOO_LARGE},
++ #else
++ {"LENGTH_TOO_LARGE", 57, 202},
++ #endif
++ #ifdef PROV_R_MISMATCHING_DOMAIN_PARAMETERS
++ {"MISMATCHING_DOMAIN_PARAMETERS", ERR_LIB_PROV, PROV_R_MISMATCHING_DOMAIN_PARAMETERS},
++ #else
++ {"MISMATCHING_DOMAIN_PARAMETERS", 57, 203},
++ #endif
++ #ifdef PROV_R_MISSING_CEK_ALG
++ {"MISSING_CEK_ALG", ERR_LIB_PROV, PROV_R_MISSING_CEK_ALG},
++ #else
++ {"MISSING_CEK_ALG", 57, 144},
++ #endif
++ #ifdef PROV_R_MISSING_CIPHER
++ {"MISSING_CIPHER", ERR_LIB_PROV, PROV_R_MISSING_CIPHER},
++ #else
++ {"MISSING_CIPHER", 57, 155},
++ #endif
++ #ifdef PROV_R_MISSING_CONFIG_DATA
++ {"MISSING_CONFIG_DATA", ERR_LIB_PROV, PROV_R_MISSING_CONFIG_DATA},
++ #else
++ {"MISSING_CONFIG_DATA", 57, 213},
++ #endif
++ #ifdef PROV_R_MISSING_CONSTANT
++ {"MISSING_CONSTANT", ERR_LIB_PROV, PROV_R_MISSING_CONSTANT},
++ #else
++ {"MISSING_CONSTANT", 57, 156},
++ #endif
++ #ifdef PROV_R_MISSING_EID
++ {"MISSING_EID", ERR_LIB_PROV, PROV_R_MISSING_EID},
++ #else
++ {"MISSING_EID", 57, 255},
++ #endif
++ #ifdef PROV_R_MISSING_KEY
++ {"MISSING_KEY", ERR_LIB_PROV, PROV_R_MISSING_KEY},
++ #else
++ {"MISSING_KEY", 57, 128},
++ #endif
++ #ifdef PROV_R_MISSING_MAC
++ {"MISSING_MAC", ERR_LIB_PROV, PROV_R_MISSING_MAC},
++ #else
++ {"MISSING_MAC", 57, 150},
++ #endif
++ #ifdef PROV_R_MISSING_MESSAGE_DIGEST
++ {"MISSING_MESSAGE_DIGEST", ERR_LIB_PROV, PROV_R_MISSING_MESSAGE_DIGEST},
++ #else
++ {"MISSING_MESSAGE_DIGEST", 57, 129},
++ #endif
++ #ifdef PROV_R_MISSING_OID
++ {"MISSING_OID", ERR_LIB_PROV, PROV_R_MISSING_OID},
++ #else
++ {"MISSING_OID", 57, 209},
++ #endif
++ #ifdef PROV_R_MISSING_PASS
++ {"MISSING_PASS", ERR_LIB_PROV, PROV_R_MISSING_PASS},
++ #else
++ {"MISSING_PASS", 57, 130},
++ #endif
++ #ifdef PROV_R_MISSING_SALT
++ {"MISSING_SALT", ERR_LIB_PROV, PROV_R_MISSING_SALT},
++ #else
++ {"MISSING_SALT", 57, 131},
++ #endif
++ #ifdef PROV_R_MISSING_SECRET
++ {"MISSING_SECRET", ERR_LIB_PROV, PROV_R_MISSING_SECRET},
++ #else
++ {"MISSING_SECRET", 57, 132},
++ #endif
++ #ifdef PROV_R_MISSING_SEED
++ {"MISSING_SEED", ERR_LIB_PROV, PROV_R_MISSING_SEED},
++ #else
++ {"MISSING_SEED", 57, 140},
++ #endif
++ #ifdef PROV_R_MISSING_SESSION_ID
++ {"MISSING_SESSION_ID", ERR_LIB_PROV, PROV_R_MISSING_SESSION_ID},
++ #else
++ {"MISSING_SESSION_ID", 57, 133},
++ #endif
++ #ifdef PROV_R_MISSING_TYPE
++ {"MISSING_TYPE", ERR_LIB_PROV, PROV_R_MISSING_TYPE},
++ #else
++ {"MISSING_TYPE", 57, 134},
++ #endif
++ #ifdef PROV_R_MISSING_XCGHASH
++ {"MISSING_XCGHASH", ERR_LIB_PROV, PROV_R_MISSING_XCGHASH},
++ #else
++ {"MISSING_XCGHASH", 57, 135},
++ #endif
++ #ifdef PROV_R_ML_DSA_NO_FORMAT
++ {"ML_DSA_NO_FORMAT", ERR_LIB_PROV, PROV_R_ML_DSA_NO_FORMAT},
++ #else
++ {"ML_DSA_NO_FORMAT", 57, 245},
++ #endif
++ #ifdef PROV_R_ML_KEM_NO_FORMAT
++ {"ML_KEM_NO_FORMAT", ERR_LIB_PROV, PROV_R_ML_KEM_NO_FORMAT},
++ #else
++ {"ML_KEM_NO_FORMAT", 57, 246},
++ #endif
++ #ifdef PROV_R_MODULE_INTEGRITY_FAILURE
++ {"MODULE_INTEGRITY_FAILURE", ERR_LIB_PROV, PROV_R_MODULE_INTEGRITY_FAILURE},
++ #else
++ {"MODULE_INTEGRITY_FAILURE", 57, 214},
++ #endif
++ #ifdef PROV_R_NOT_A_PRIVATE_KEY
++ {"NOT_A_PRIVATE_KEY", ERR_LIB_PROV, PROV_R_NOT_A_PRIVATE_KEY},
++ #else
++ {"NOT_A_PRIVATE_KEY", 57, 221},
++ #endif
++ #ifdef PROV_R_NOT_A_PUBLIC_KEY
++ {"NOT_A_PUBLIC_KEY", ERR_LIB_PROV, PROV_R_NOT_A_PUBLIC_KEY},
++ #else
++ {"NOT_A_PUBLIC_KEY", 57, 220},
++ #endif
++ #ifdef PROV_R_NOT_INSTANTIATED
++ {"NOT_INSTANTIATED", ERR_LIB_PROV, PROV_R_NOT_INSTANTIATED},
++ #else
++ {"NOT_INSTANTIATED", 57, 193},
++ #endif
++ #ifdef PROV_R_NOT_PARAMETERS
++ {"NOT_PARAMETERS", ERR_LIB_PROV, PROV_R_NOT_PARAMETERS},
++ #else
++ {"NOT_PARAMETERS", 57, 226},
++ #endif
++ #ifdef PROV_R_NOT_SUPPORTED
++ {"NOT_SUPPORTED", ERR_LIB_PROV, PROV_R_NOT_SUPPORTED},
++ #else
++ {"NOT_SUPPORTED", 57, 136},
++ #endif
++ #ifdef PROV_R_NOT_XOF_OR_INVALID_LENGTH
++ {"NOT_XOF_OR_INVALID_LENGTH", ERR_LIB_PROV, PROV_R_NOT_XOF_OR_INVALID_LENGTH},
++ #else
++ {"NOT_XOF_OR_INVALID_LENGTH", 57, 113},
++ #endif
++ #ifdef PROV_R_NO_INSTANCE_ALLOWED
++ {"NO_INSTANCE_ALLOWED", ERR_LIB_PROV, PROV_R_NO_INSTANCE_ALLOWED},
++ #else
++ {"NO_INSTANCE_ALLOWED", 57, 242},
++ #endif
++ #ifdef PROV_R_NO_KEY_SET
++ {"NO_KEY_SET", ERR_LIB_PROV, PROV_R_NO_KEY_SET},
++ #else
++ {"NO_KEY_SET", 57, 114},
++ #endif
++ #ifdef PROV_R_NO_PARAMETERS_SET
++ {"NO_PARAMETERS_SET", ERR_LIB_PROV, PROV_R_NO_PARAMETERS_SET},
++ #else
++ {"NO_PARAMETERS_SET", 57, 177},
++ #endif
++ #ifdef PROV_R_NULL_LENGTH_POINTER
++ {"NULL_LENGTH_POINTER", ERR_LIB_PROV, PROV_R_NULL_LENGTH_POINTER},
++ #else
++ {"NULL_LENGTH_POINTER", 57, 247},
++ #endif
++ #ifdef PROV_R_NULL_OUTPUT_BUFFER
++ {"NULL_OUTPUT_BUFFER", ERR_LIB_PROV, PROV_R_NULL_OUTPUT_BUFFER},
++ #else
++ {"NULL_OUTPUT_BUFFER", 57, 248},
++ #endif
++ #ifdef PROV_R_ONESHOT_CALL_OUT_OF_ORDER
++ {"ONESHOT_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_ONESHOT_CALL_OUT_OF_ORDER},
++ #else
++ {"ONESHOT_CALL_OUT_OF_ORDER", 57, 239},
++ #endif
++ #ifdef PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE
++ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", ERR_LIB_PROV, PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE},
++ #else
++ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", 57, 178},
++ #endif
++ #ifdef PROV_R_OUTPUT_BUFFER_TOO_SMALL
++ {"OUTPUT_BUFFER_TOO_SMALL", ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL},
++ #else
++ {"OUTPUT_BUFFER_TOO_SMALL", 57, 106},
++ #endif
++ #ifdef PROV_R_PARENT_CANNOT_GENERATE_RANDOM_NUMBERS
++ {"PARENT_CANNOT_GENERATE_RANDOM_NUMBERS", ERR_LIB_PROV, PROV_R_PARENT_CANNOT_GENERATE_RANDOM_NUMBERS},
++ #else
++ {"PARENT_CANNOT_GENERATE_RANDOM_NUMBERS", 57, 228},
++ #endif
++ #ifdef PROV_R_PARENT_CANNOT_SUPPLY_ENTROPY_SEED
++ {"PARENT_CANNOT_SUPPLY_ENTROPY_SEED", ERR_LIB_PROV, PROV_R_PARENT_CANNOT_SUPPLY_ENTROPY_SEED},
++ #else
++ {"PARENT_CANNOT_SUPPLY_ENTROPY_SEED", 57, 187},
++ #endif
++ #ifdef PROV_R_PARENT_LOCKING_NOT_ENABLED
++ {"PARENT_LOCKING_NOT_ENABLED", ERR_LIB_PROV, PROV_R_PARENT_LOCKING_NOT_ENABLED},
++ #else
++ {"PARENT_LOCKING_NOT_ENABLED", 57, 182},
++ #endif
++ #ifdef PROV_R_PARENT_STRENGTH_TOO_WEAK
++ {"PARENT_STRENGTH_TOO_WEAK", ERR_LIB_PROV, PROV_R_PARENT_STRENGTH_TOO_WEAK},
++ #else
++ {"PARENT_STRENGTH_TOO_WEAK", 57, 194},
++ #endif
++ #ifdef PROV_R_PASSWORD_STRENGTH_TOO_WEAK
++ {"PASSWORD_STRENGTH_TOO_WEAK", ERR_LIB_PROV, PROV_R_PASSWORD_STRENGTH_TOO_WEAK},
++ #else
++ {"PASSWORD_STRENGTH_TOO_WEAK", 57, 254},
++ #endif
++ #ifdef PROV_R_PATH_MUST_BE_ABSOLUTE
++ {"PATH_MUST_BE_ABSOLUTE", ERR_LIB_PROV, PROV_R_PATH_MUST_BE_ABSOLUTE},
++ #else
++ {"PATH_MUST_BE_ABSOLUTE", 57, 219},
++ #endif
++ #ifdef PROV_R_PERSONALISATION_STRING_TOO_LONG
++ {"PERSONALISATION_STRING_TOO_LONG", ERR_LIB_PROV, PROV_R_PERSONALISATION_STRING_TOO_LONG},
++ #else
++ {"PERSONALISATION_STRING_TOO_LONG", 57, 195},
++ #endif
++ #ifdef PROV_R_PSS_SALTLEN_TOO_SMALL
++ {"PSS_SALTLEN_TOO_SMALL", ERR_LIB_PROV, PROV_R_PSS_SALTLEN_TOO_SMALL},
++ #else
++ {"PSS_SALTLEN_TOO_SMALL", 57, 172},
++ #endif
++ #ifdef PROV_R_REPEATED_PARAMETER
++ {"REPEATED_PARAMETER", ERR_LIB_PROV, PROV_R_REPEATED_PARAMETER},
++ #else
++ {"REPEATED_PARAMETER", 57, 252},
++ #endif
++ #ifdef PROV_R_REQUEST_TOO_LARGE_FOR_DRBG
++ {"REQUEST_TOO_LARGE_FOR_DRBG", ERR_LIB_PROV, PROV_R_REQUEST_TOO_LARGE_FOR_DRBG},
++ #else
++ {"REQUEST_TOO_LARGE_FOR_DRBG", 57, 196},
++ #endif
++ #ifdef PROV_R_REQUIRE_CTR_MODE_CIPHER
++ {"REQUIRE_CTR_MODE_CIPHER", ERR_LIB_PROV, PROV_R_REQUIRE_CTR_MODE_CIPHER},
++ #else
++ {"REQUIRE_CTR_MODE_CIPHER", 57, 206},
++ #endif
++ #ifdef PROV_R_RESEED_ERROR
++ {"RESEED_ERROR", ERR_LIB_PROV, PROV_R_RESEED_ERROR},
++ #else
++ {"RESEED_ERROR", 57, 197},
++ #endif
++ #ifdef PROV_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES
++ {"SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES", ERR_LIB_PROV, PROV_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES},
++ #else
++ {"SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES", 57, 222},
++ #endif
++ #ifdef PROV_R_SEED_SOURCES_MUST_NOT_HAVE_A_PARENT
++ {"SEED_SOURCES_MUST_NOT_HAVE_A_PARENT", ERR_LIB_PROV, PROV_R_SEED_SOURCES_MUST_NOT_HAVE_A_PARENT},
++ #else
++ {"SEED_SOURCES_MUST_NOT_HAVE_A_PARENT", 57, 229},
++ #endif
++ #ifdef PROV_R_SELF_TEST_KAT_FAILURE
++ {"SELF_TEST_KAT_FAILURE", ERR_LIB_PROV, PROV_R_SELF_TEST_KAT_FAILURE},
++ #else
++ {"SELF_TEST_KAT_FAILURE", 57, 215},
++ #endif
++ #ifdef PROV_R_SELF_TEST_POST_FAILURE
++ {"SELF_TEST_POST_FAILURE", ERR_LIB_PROV, PROV_R_SELF_TEST_POST_FAILURE},
++ #else
++ {"SELF_TEST_POST_FAILURE", 57, 216},
++ #endif
++ #ifdef PROV_R_TAG_NOT_NEEDED
++ {"TAG_NOT_NEEDED", ERR_LIB_PROV, PROV_R_TAG_NOT_NEEDED},
++ #else
++ {"TAG_NOT_NEEDED", 57, 120},
++ #endif
++ #ifdef PROV_R_TAG_NOT_SET
++ {"TAG_NOT_SET", ERR_LIB_PROV, PROV_R_TAG_NOT_SET},
++ #else
++ {"TAG_NOT_SET", 57, 119},
++ #endif
++ #ifdef PROV_R_TOO_MANY_RECORDS
++ {"TOO_MANY_RECORDS", ERR_LIB_PROV, PROV_R_TOO_MANY_RECORDS},
++ #else
++ {"TOO_MANY_RECORDS", 57, 126},
++ #endif
++ #ifdef PROV_R_UNABLE_TO_FIND_CIPHERS
++ {"UNABLE_TO_FIND_CIPHERS", ERR_LIB_PROV, PROV_R_UNABLE_TO_FIND_CIPHERS},
++ #else
++ {"UNABLE_TO_FIND_CIPHERS", 57, 207},
++ #endif
++ #ifdef PROV_R_UNABLE_TO_GET_PARENT_STRENGTH
++ {"UNABLE_TO_GET_PARENT_STRENGTH", ERR_LIB_PROV, PROV_R_UNABLE_TO_GET_PARENT_STRENGTH},
++ #else
++ {"UNABLE_TO_GET_PARENT_STRENGTH", 57, 199},
++ #endif
++ #ifdef PROV_R_UNABLE_TO_GET_PASSPHRASE
++ {"UNABLE_TO_GET_PASSPHRASE", ERR_LIB_PROV, PROV_R_UNABLE_TO_GET_PASSPHRASE},
++ #else
++ {"UNABLE_TO_GET_PASSPHRASE", 57, 159},
++ #endif
++ #ifdef PROV_R_UNABLE_TO_INITIALISE_CIPHERS
++ {"UNABLE_TO_INITIALISE_CIPHERS", ERR_LIB_PROV, PROV_R_UNABLE_TO_INITIALISE_CIPHERS},
++ #else
++ {"UNABLE_TO_INITIALISE_CIPHERS", 57, 208},
++ #endif
++ #ifdef PROV_R_UNABLE_TO_LOAD_SHA256
++ {"UNABLE_TO_LOAD_SHA256", ERR_LIB_PROV, PROV_R_UNABLE_TO_LOAD_SHA256},
++ #else
++ {"UNABLE_TO_LOAD_SHA256", 57, 147},
++ #endif
++ #ifdef PROV_R_UNABLE_TO_LOCK_PARENT
++ {"UNABLE_TO_LOCK_PARENT", ERR_LIB_PROV, PROV_R_UNABLE_TO_LOCK_PARENT},
++ #else
++ {"UNABLE_TO_LOCK_PARENT", 57, 201},
++ #endif
++ #ifdef PROV_R_UNABLE_TO_RESEED
++ {"UNABLE_TO_RESEED", ERR_LIB_PROV, PROV_R_UNABLE_TO_RESEED},
++ #else
++ {"UNABLE_TO_RESEED", 57, 204},
++ #endif
++ #ifdef PROV_R_UNEXPECTED_KEY_PARAMETERS
++ {"UNEXPECTED_KEY_PARAMETERS", ERR_LIB_PROV, PROV_R_UNEXPECTED_KEY_PARAMETERS},
++ #else
++ {"UNEXPECTED_KEY_PARAMETERS", 57, 249},
++ #endif
++ #ifdef PROV_R_UNSUPPORTED_CEK_ALG
++ {"UNSUPPORTED_CEK_ALG", ERR_LIB_PROV, PROV_R_UNSUPPORTED_CEK_ALG},
++ #else
++ {"UNSUPPORTED_CEK_ALG", 57, 145},
++ #endif
++ #ifdef PROV_R_UNSUPPORTED_KEY_SIZE
++ {"UNSUPPORTED_KEY_SIZE", ERR_LIB_PROV, PROV_R_UNSUPPORTED_KEY_SIZE},
++ #else
++ {"UNSUPPORTED_KEY_SIZE", 57, 153},
++ #endif
++ #ifdef PROV_R_UNSUPPORTED_MAC_TYPE
++ {"UNSUPPORTED_MAC_TYPE", ERR_LIB_PROV, PROV_R_UNSUPPORTED_MAC_TYPE},
++ #else
++ {"UNSUPPORTED_MAC_TYPE", 57, 137},
++ #endif
++ #ifdef PROV_R_UNSUPPORTED_NUMBER_OF_ROUNDS
++ {"UNSUPPORTED_NUMBER_OF_ROUNDS", ERR_LIB_PROV, PROV_R_UNSUPPORTED_NUMBER_OF_ROUNDS},
++ #else
++ {"UNSUPPORTED_NUMBER_OF_ROUNDS", 57, 152},
++ #endif
++ #ifdef PROV_R_UNSUPPORTED_SELECTION
++ {"UNSUPPORTED_SELECTION", ERR_LIB_PROV, PROV_R_UNSUPPORTED_SELECTION},
++ #else
++ {"UNSUPPORTED_SELECTION", 57, 250},
++ #endif
++ #ifdef PROV_R_UPDATE_CALL_OUT_OF_ORDER
++ {"UPDATE_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_UPDATE_CALL_OUT_OF_ORDER},
++ #else
++ {"UPDATE_CALL_OUT_OF_ORDER", 57, 240},
++ #endif
++ #ifdef PROV_R_URI_AUTHORITY_UNSUPPORTED
++ {"URI_AUTHORITY_UNSUPPORTED", ERR_LIB_PROV, PROV_R_URI_AUTHORITY_UNSUPPORTED},
++ #else
++ {"URI_AUTHORITY_UNSUPPORTED", 57, 223},
++ #endif
++ #ifdef PROV_R_VALUE_ERROR
++ {"VALUE_ERROR", ERR_LIB_PROV, PROV_R_VALUE_ERROR},
++ #else
++ {"VALUE_ERROR", 57, 138},
++ #endif
++ #ifdef PROV_R_WRONG_CIPHERTEXT_SIZE
++ {"WRONG_CIPHERTEXT_SIZE", ERR_LIB_PROV, PROV_R_WRONG_CIPHERTEXT_SIZE},
++ #else
++ {"WRONG_CIPHERTEXT_SIZE", 57, 251},
++ #endif
++ #ifdef PROV_R_WRONG_FINAL_BLOCK_LENGTH
++ {"WRONG_FINAL_BLOCK_LENGTH", ERR_LIB_PROV, PROV_R_WRONG_FINAL_BLOCK_LENGTH},
++ #else
++ {"WRONG_FINAL_BLOCK_LENGTH", 57, 107},
++ #endif
++ #ifdef PROV_R_WRONG_OUTPUT_BUFFER_SIZE
++ {"WRONG_OUTPUT_BUFFER_SIZE", ERR_LIB_PROV, PROV_R_WRONG_OUTPUT_BUFFER_SIZE},
++ #else
++ {"WRONG_OUTPUT_BUFFER_SIZE", 57, 139},
++ #endif
++ #ifdef PROV_R_XOF_DIGESTS_NOT_ALLOWED
++ {"XOF_DIGESTS_NOT_ALLOWED", ERR_LIB_PROV, PROV_R_XOF_DIGESTS_NOT_ALLOWED},
++ #else
++ {"XOF_DIGESTS_NOT_ALLOWED", 57, 183},
++ #endif
++ #ifdef PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE
++ {"XTS_DATA_UNIT_IS_TOO_LARGE", ERR_LIB_PROV, PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE},
++ #else
++ {"XTS_DATA_UNIT_IS_TOO_LARGE", 57, 148},
++ #endif
++ #ifdef PROV_R_XTS_DUPLICATED_KEYS
++ {"XTS_DUPLICATED_KEYS", ERR_LIB_PROV, PROV_R_XTS_DUPLICATED_KEYS},
++ #else
++ {"XTS_DUPLICATED_KEYS", 57, 149},
++ #endif
++ #ifdef RAND_R_ADDITIONAL_INPUT_TOO_LONG
++ {"ADDITIONAL_INPUT_TOO_LONG", ERR_LIB_RAND, RAND_R_ADDITIONAL_INPUT_TOO_LONG},
++ #else
++ {"ADDITIONAL_INPUT_TOO_LONG", 36, 102},
++ #endif
++ #ifdef RAND_R_ALREADY_INSTANTIATED
++ {"ALREADY_INSTANTIATED", ERR_LIB_RAND, RAND_R_ALREADY_INSTANTIATED},
++ #else
++ {"ALREADY_INSTANTIATED", 36, 103},
++ #endif
++ #ifdef RAND_R_ARGUMENT_OUT_OF_RANGE
++ {"ARGUMENT_OUT_OF_RANGE", ERR_LIB_RAND, RAND_R_ARGUMENT_OUT_OF_RANGE},
++ #else
++ {"ARGUMENT_OUT_OF_RANGE", 36, 105},
++ #endif
++ #ifdef RAND_R_CANNOT_OPEN_FILE
++ {"CANNOT_OPEN_FILE", ERR_LIB_RAND, RAND_R_CANNOT_OPEN_FILE},
++ #else
++ {"CANNOT_OPEN_FILE", 36, 121},
++ #endif
++ #ifdef RAND_R_DRBG_ALREADY_INITIALIZED
++ {"DRBG_ALREADY_INITIALIZED", ERR_LIB_RAND, RAND_R_DRBG_ALREADY_INITIALIZED},
++ #else
++ {"DRBG_ALREADY_INITIALIZED", 36, 129},
++ #endif
++ #ifdef RAND_R_DRBG_NOT_INITIALISED
++ {"DRBG_NOT_INITIALISED", ERR_LIB_RAND, RAND_R_DRBG_NOT_INITIALISED},
++ #else
++ {"DRBG_NOT_INITIALISED", 36, 104},
++ #endif
++ #ifdef RAND_R_ENTROPY_INPUT_TOO_LONG
++ {"ENTROPY_INPUT_TOO_LONG", ERR_LIB_RAND, RAND_R_ENTROPY_INPUT_TOO_LONG},
++ #else
++ {"ENTROPY_INPUT_TOO_LONG", 36, 106},
++ #endif
++ #ifdef RAND_R_ENTROPY_OUT_OF_RANGE
++ {"ENTROPY_OUT_OF_RANGE", ERR_LIB_RAND, RAND_R_ENTROPY_OUT_OF_RANGE},
++ #else
++ {"ENTROPY_OUT_OF_RANGE", 36, 124},
++ #endif
++ #ifdef RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED
++ {"ERROR_ENTROPY_POOL_WAS_IGNORED", ERR_LIB_RAND, RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED},
++ #else
++ {"ERROR_ENTROPY_POOL_WAS_IGNORED", 36, 127},
++ #endif
++ #ifdef RAND_R_ERROR_INITIALISING_DRBG
++ {"ERROR_INITIALISING_DRBG", ERR_LIB_RAND, RAND_R_ERROR_INITIALISING_DRBG},
++ #else
++ {"ERROR_INITIALISING_DRBG", 36, 107},
++ #endif
++ #ifdef RAND_R_ERROR_INSTANTIATING_DRBG
++ {"ERROR_INSTANTIATING_DRBG", ERR_LIB_RAND, RAND_R_ERROR_INSTANTIATING_DRBG},
++ #else
++ {"ERROR_INSTANTIATING_DRBG", 36, 108},
++ #endif
++ #ifdef RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT
++ {"ERROR_RETRIEVING_ADDITIONAL_INPUT", ERR_LIB_RAND, RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT},
++ #else
++ {"ERROR_RETRIEVING_ADDITIONAL_INPUT", 36, 109},
++ #endif
++ #ifdef RAND_R_ERROR_RETRIEVING_ENTROPY
++ {"ERROR_RETRIEVING_ENTROPY", ERR_LIB_RAND, RAND_R_ERROR_RETRIEVING_ENTROPY},
++ #else
++ {"ERROR_RETRIEVING_ENTROPY", 36, 110},
++ #endif
++ #ifdef RAND_R_ERROR_RETRIEVING_NONCE
++ {"ERROR_RETRIEVING_NONCE", ERR_LIB_RAND, RAND_R_ERROR_RETRIEVING_NONCE},
++ #else
++ {"ERROR_RETRIEVING_NONCE", 36, 111},
++ #endif
++ #ifdef RAND_R_FAILED_TO_CREATE_LOCK
++ {"FAILED_TO_CREATE_LOCK", ERR_LIB_RAND, RAND_R_FAILED_TO_CREATE_LOCK},
++ #else
++ {"FAILED_TO_CREATE_LOCK", 36, 126},
++ #endif
++ #ifdef RAND_R_FUNC_NOT_IMPLEMENTED
++ {"FUNC_NOT_IMPLEMENTED", ERR_LIB_RAND, RAND_R_FUNC_NOT_IMPLEMENTED},
++ #else
++ {"FUNC_NOT_IMPLEMENTED", 36, 101},
++ #endif
++ #ifdef RAND_R_FWRITE_ERROR
++ {"FWRITE_ERROR", ERR_LIB_RAND, RAND_R_FWRITE_ERROR},
++ #else
++ {"FWRITE_ERROR", 36, 123},
++ #endif
++ #ifdef RAND_R_GENERATE_ERROR
++ {"GENERATE_ERROR", ERR_LIB_RAND, RAND_R_GENERATE_ERROR},
++ #else
++ {"GENERATE_ERROR", 36, 112},
++ #endif
++ #ifdef RAND_R_INSUFFICIENT_DRBG_STRENGTH
++ {"INSUFFICIENT_DRBG_STRENGTH", ERR_LIB_RAND, RAND_R_INSUFFICIENT_DRBG_STRENGTH},
++ #else
++ {"INSUFFICIENT_DRBG_STRENGTH", 36, 139},
++ #endif
++ #ifdef RAND_R_INTERNAL_ERROR
++ {"INTERNAL_ERROR", ERR_LIB_RAND, RAND_R_INTERNAL_ERROR},
++ #else
++ {"INTERNAL_ERROR", 36, 113},
++ #endif
++ #ifdef RAND_R_INVALID_PROPERTY_QUERY
++ {"INVALID_PROPERTY_QUERY", ERR_LIB_RAND, RAND_R_INVALID_PROPERTY_QUERY},
++ #else
++ {"INVALID_PROPERTY_QUERY", 36, 137},
++ #endif
++ #ifdef RAND_R_IN_ERROR_STATE
++ {"IN_ERROR_STATE", ERR_LIB_RAND, RAND_R_IN_ERROR_STATE},
++ #else
++ {"IN_ERROR_STATE", 36, 114},
++ #endif
++ #ifdef RAND_R_NOT_A_REGULAR_FILE
++ {"NOT_A_REGULAR_FILE", ERR_LIB_RAND, RAND_R_NOT_A_REGULAR_FILE},
++ #else
++ {"NOT_A_REGULAR_FILE", 36, 122},
++ #endif
++ #ifdef RAND_R_NOT_INSTANTIATED
++ {"NOT_INSTANTIATED", ERR_LIB_RAND, RAND_R_NOT_INSTANTIATED},
++ #else
++ {"NOT_INSTANTIATED", 36, 115},
++ #endif
++ #ifdef RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED
++ {"NO_DRBG_IMPLEMENTATION_SELECTED", ERR_LIB_RAND, RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED},
++ #else
++ {"NO_DRBG_IMPLEMENTATION_SELECTED", 36, 128},
++ #endif
++ #ifdef RAND_R_PARENT_LOCKING_NOT_ENABLED
++ {"PARENT_LOCKING_NOT_ENABLED", ERR_LIB_RAND, RAND_R_PARENT_LOCKING_NOT_ENABLED},
++ #else
++ {"PARENT_LOCKING_NOT_ENABLED", 36, 130},
++ #endif
++ #ifdef RAND_R_PARENT_STRENGTH_TOO_WEAK
++ {"PARENT_STRENGTH_TOO_WEAK", ERR_LIB_RAND, RAND_R_PARENT_STRENGTH_TOO_WEAK},
++ #else
++ {"PARENT_STRENGTH_TOO_WEAK", 36, 131},
++ #endif
++ #ifdef RAND_R_PERSONALISATION_STRING_TOO_LONG
++ {"PERSONALISATION_STRING_TOO_LONG", ERR_LIB_RAND, RAND_R_PERSONALISATION_STRING_TOO_LONG},
++ #else
++ {"PERSONALISATION_STRING_TOO_LONG", 36, 116},
++ #endif
++ #ifdef RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED
++ {"PREDICTION_RESISTANCE_NOT_SUPPORTED", ERR_LIB_RAND, RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED},
++ #else
++ {"PREDICTION_RESISTANCE_NOT_SUPPORTED", 36, 133},
++ #endif
++ #ifdef RAND_R_PRNG_NOT_SEEDED
++ {"PRNG_NOT_SEEDED", ERR_LIB_RAND, RAND_R_PRNG_NOT_SEEDED},
++ #else
++ {"PRNG_NOT_SEEDED", 36, 100},
++ #endif
++ #ifdef RAND_R_RANDOM_POOL_IS_EMPTY
++ {"RANDOM_POOL_IS_EMPTY", ERR_LIB_RAND, RAND_R_RANDOM_POOL_IS_EMPTY},
++ #else
++ {"RANDOM_POOL_IS_EMPTY", 36, 142},
++ #endif
++ #ifdef RAND_R_RANDOM_POOL_OVERFLOW
++ {"RANDOM_POOL_OVERFLOW", ERR_LIB_RAND, RAND_R_RANDOM_POOL_OVERFLOW},
++ #else
++ {"RANDOM_POOL_OVERFLOW", 36, 125},
++ #endif
++ #ifdef RAND_R_RANDOM_POOL_UNDERFLOW
++ {"RANDOM_POOL_UNDERFLOW", ERR_LIB_RAND, RAND_R_RANDOM_POOL_UNDERFLOW},
++ #else
++ {"RANDOM_POOL_UNDERFLOW", 36, 134},
++ #endif
++ #ifdef RAND_R_REQUEST_TOO_LARGE_FOR_DRBG
++ {"REQUEST_TOO_LARGE_FOR_DRBG", ERR_LIB_RAND, RAND_R_REQUEST_TOO_LARGE_FOR_DRBG},
++ #else
++ {"REQUEST_TOO_LARGE_FOR_DRBG", 36, 117},
++ #endif
++ #ifdef RAND_R_RESEED_ERROR
++ {"RESEED_ERROR", ERR_LIB_RAND, RAND_R_RESEED_ERROR},
++ #else
++ {"RESEED_ERROR", 36, 118},
++ #endif
++ #ifdef RAND_R_SELFTEST_FAILURE
++ {"SELFTEST_FAILURE", ERR_LIB_RAND, RAND_R_SELFTEST_FAILURE},
++ #else
++ {"SELFTEST_FAILURE", 36, 119},
++ #endif
++ #ifdef RAND_R_TOO_LITTLE_NONCE_REQUESTED
++ {"TOO_LITTLE_NONCE_REQUESTED", ERR_LIB_RAND, RAND_R_TOO_LITTLE_NONCE_REQUESTED},
++ #else
++ {"TOO_LITTLE_NONCE_REQUESTED", 36, 135},
++ #endif
++ #ifdef RAND_R_TOO_MUCH_NONCE_REQUESTED
++ {"TOO_MUCH_NONCE_REQUESTED", ERR_LIB_RAND, RAND_R_TOO_MUCH_NONCE_REQUESTED},
++ #else
++ {"TOO_MUCH_NONCE_REQUESTED", 36, 136},
++ #endif
++ #ifdef RAND_R_UNABLE_TO_CREATE_DRBG
++ {"UNABLE_TO_CREATE_DRBG", ERR_LIB_RAND, RAND_R_UNABLE_TO_CREATE_DRBG},
++ #else
++ {"UNABLE_TO_CREATE_DRBG", 36, 143},
++ #endif
++ #ifdef RAND_R_UNABLE_TO_FETCH_DRBG
++ {"UNABLE_TO_FETCH_DRBG", ERR_LIB_RAND, RAND_R_UNABLE_TO_FETCH_DRBG},
++ #else
++ {"UNABLE_TO_FETCH_DRBG", 36, 144},
++ #endif
++ #ifdef RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER
++ {"UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER", ERR_LIB_RAND, RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER},
++ #else
++ {"UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER", 36, 141},
++ #endif
++ #ifdef RAND_R_UNABLE_TO_GET_PARENT_STRENGTH
++ {"UNABLE_TO_GET_PARENT_STRENGTH", ERR_LIB_RAND, RAND_R_UNABLE_TO_GET_PARENT_STRENGTH},
++ #else
++ {"UNABLE_TO_GET_PARENT_STRENGTH", 36, 138},
++ #endif
++ #ifdef RAND_R_UNABLE_TO_LOCK_PARENT
++ {"UNABLE_TO_LOCK_PARENT", ERR_LIB_RAND, RAND_R_UNABLE_TO_LOCK_PARENT},
++ #else
++ {"UNABLE_TO_LOCK_PARENT", 36, 140},
++ #endif
++ #ifdef RAND_R_UNSUPPORTED_DRBG_FLAGS
++ {"UNSUPPORTED_DRBG_FLAGS", ERR_LIB_RAND, RAND_R_UNSUPPORTED_DRBG_FLAGS},
++ #else
++ {"UNSUPPORTED_DRBG_FLAGS", 36, 132},
++ #endif
++ #ifdef RAND_R_UNSUPPORTED_DRBG_TYPE
++ {"UNSUPPORTED_DRBG_TYPE", ERR_LIB_RAND, RAND_R_UNSUPPORTED_DRBG_TYPE},
++ #else
++ {"UNSUPPORTED_DRBG_TYPE", 36, 120},
++ #endif
++ #ifdef RSA_R_ALGORITHM_MISMATCH
++ {"ALGORITHM_MISMATCH", ERR_LIB_RSA, RSA_R_ALGORITHM_MISMATCH},
++ #else
++ {"ALGORITHM_MISMATCH", 4, 100},
++ #endif
++ #ifdef RSA_R_BAD_E_VALUE
++ {"BAD_E_VALUE", ERR_LIB_RSA, RSA_R_BAD_E_VALUE},
++ #else
++ {"BAD_E_VALUE", 4, 101},
++ #endif
++ #ifdef RSA_R_BAD_FIXED_HEADER_DECRYPT
++ {"BAD_FIXED_HEADER_DECRYPT", ERR_LIB_RSA, RSA_R_BAD_FIXED_HEADER_DECRYPT},
++ #else
++ {"BAD_FIXED_HEADER_DECRYPT", 4, 102},
++ #endif
++ #ifdef RSA_R_BAD_PAD_BYTE_COUNT
++ {"BAD_PAD_BYTE_COUNT", ERR_LIB_RSA, RSA_R_BAD_PAD_BYTE_COUNT},
++ #else
++ {"BAD_PAD_BYTE_COUNT", 4, 103},
++ #endif
++ #ifdef RSA_R_BAD_SIGNATURE
++ {"BAD_SIGNATURE", ERR_LIB_RSA, RSA_R_BAD_SIGNATURE},
++ #else
++ {"BAD_SIGNATURE", 4, 104},
++ #endif
++ #ifdef RSA_R_BLOCK_TYPE_IS_NOT_01
++ {"BLOCK_TYPE_IS_NOT_01", ERR_LIB_RSA, RSA_R_BLOCK_TYPE_IS_NOT_01},
++ #else
++ {"BLOCK_TYPE_IS_NOT_01", 4, 106},
++ #endif
++ #ifdef RSA_R_BLOCK_TYPE_IS_NOT_02
++ {"BLOCK_TYPE_IS_NOT_02", ERR_LIB_RSA, RSA_R_BLOCK_TYPE_IS_NOT_02},
++ #else
++ {"BLOCK_TYPE_IS_NOT_02", 4, 107},
++ #endif
++ #ifdef RSA_R_DATA_GREATER_THAN_MOD_LEN
++ {"DATA_GREATER_THAN_MOD_LEN", ERR_LIB_RSA, RSA_R_DATA_GREATER_THAN_MOD_LEN},
++ #else
++ {"DATA_GREATER_THAN_MOD_LEN", 4, 108},
++ #endif
++ #ifdef RSA_R_DATA_TOO_LARGE
++ {"DATA_TOO_LARGE", ERR_LIB_RSA, RSA_R_DATA_TOO_LARGE},
++ #else
++ {"DATA_TOO_LARGE", 4, 109},
++ #endif
++ #ifdef RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE
++ {"DATA_TOO_LARGE_FOR_KEY_SIZE", ERR_LIB_RSA, RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE},
++ #else
++ {"DATA_TOO_LARGE_FOR_KEY_SIZE", 4, 110},
++ #endif
++ #ifdef RSA_R_DATA_TOO_LARGE_FOR_MODULUS
++ {"DATA_TOO_LARGE_FOR_MODULUS", ERR_LIB_RSA, RSA_R_DATA_TOO_LARGE_FOR_MODULUS},
++ #else
++ {"DATA_TOO_LARGE_FOR_MODULUS", 4, 132},
++ #endif
++ #ifdef RSA_R_DATA_TOO_SMALL
++ {"DATA_TOO_SMALL", ERR_LIB_RSA, RSA_R_DATA_TOO_SMALL},
++ #else
++ {"DATA_TOO_SMALL", 4, 111},
++ #endif
++ #ifdef RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE
++ {"DATA_TOO_SMALL_FOR_KEY_SIZE", ERR_LIB_RSA, RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE},
++ #else
++ {"DATA_TOO_SMALL_FOR_KEY_SIZE", 4, 122},
++ #endif
++ #ifdef RSA_R_DIGEST_DOES_NOT_MATCH
++ {"DIGEST_DOES_NOT_MATCH", ERR_LIB_RSA, RSA_R_DIGEST_DOES_NOT_MATCH},
++ #else
++ {"DIGEST_DOES_NOT_MATCH", 4, 158},
++ #endif
++ #ifdef RSA_R_DIGEST_NOT_ALLOWED
++ {"DIGEST_NOT_ALLOWED", ERR_LIB_RSA, RSA_R_DIGEST_NOT_ALLOWED},
++ #else
++ {"DIGEST_NOT_ALLOWED", 4, 145},
++ #endif
++ #ifdef RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY
++ {"DIGEST_TOO_BIG_FOR_RSA_KEY", ERR_LIB_RSA, RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY},
++ #else
++ {"DIGEST_TOO_BIG_FOR_RSA_KEY", 4, 112},
++ #endif
++ #ifdef RSA_R_DMP1_NOT_CONGRUENT_TO_D
++ {"DMP1_NOT_CONGRUENT_TO_D", ERR_LIB_RSA, RSA_R_DMP1_NOT_CONGRUENT_TO_D},
++ #else
++ {"DMP1_NOT_CONGRUENT_TO_D", 4, 124},
++ #endif
++ #ifdef RSA_R_DMQ1_NOT_CONGRUENT_TO_D
++ {"DMQ1_NOT_CONGRUENT_TO_D", ERR_LIB_RSA, RSA_R_DMQ1_NOT_CONGRUENT_TO_D},
++ #else
++ {"DMQ1_NOT_CONGRUENT_TO_D", 4, 125},
++ #endif
++ #ifdef RSA_R_D_E_NOT_CONGRUENT_TO_1
++ {"D_E_NOT_CONGRUENT_TO_1", ERR_LIB_RSA, RSA_R_D_E_NOT_CONGRUENT_TO_1},
++ #else
++ {"D_E_NOT_CONGRUENT_TO_1", 4, 123},
++ #endif
++ #ifdef RSA_R_FIRST_OCTET_INVALID
++ {"FIRST_OCTET_INVALID", ERR_LIB_RSA, RSA_R_FIRST_OCTET_INVALID},
++ #else
++ {"FIRST_OCTET_INVALID", 4, 133},
++ #endif
++ #ifdef RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE
++ {"ILLEGAL_OR_UNSUPPORTED_PADDING_MODE", ERR_LIB_RSA, RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE},
++ #else
++ {"ILLEGAL_OR_UNSUPPORTED_PADDING_MODE", 4, 144},
++ #endif
++ #ifdef RSA_R_INVALID_DIGEST
++ {"INVALID_DIGEST", ERR_LIB_RSA, RSA_R_INVALID_DIGEST},
++ #else
++ {"INVALID_DIGEST", 4, 157},
++ #endif
++ #ifdef RSA_R_INVALID_DIGEST_LENGTH
++ {"INVALID_DIGEST_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_DIGEST_LENGTH},
++ #else
++ {"INVALID_DIGEST_LENGTH", 4, 143},
++ #endif
++ #ifdef RSA_R_INVALID_HEADER
++ {"INVALID_HEADER", ERR_LIB_RSA, RSA_R_INVALID_HEADER},
++ #else
++ {"INVALID_HEADER", 4, 137},
++ #endif
++ #ifdef RSA_R_INVALID_KEYPAIR
++ {"INVALID_KEYPAIR", ERR_LIB_RSA, RSA_R_INVALID_KEYPAIR},
++ #else
++ {"INVALID_KEYPAIR", 4, 171},
++ #endif
++ #ifdef RSA_R_INVALID_KEY_LENGTH
++ {"INVALID_KEY_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_KEY_LENGTH},
++ #else
++ {"INVALID_KEY_LENGTH", 4, 173},
++ #endif
++ #ifdef RSA_R_INVALID_LABEL
++ {"INVALID_LABEL", ERR_LIB_RSA, RSA_R_INVALID_LABEL},
++ #else
++ {"INVALID_LABEL", 4, 160},
++ #endif
++ #ifdef RSA_R_INVALID_LENGTH
++ {"INVALID_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_LENGTH},
++ #else
++ {"INVALID_LENGTH", 4, 181},
++ #endif
++ #ifdef RSA_R_INVALID_MESSAGE_LENGTH
++ {"INVALID_MESSAGE_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_MESSAGE_LENGTH},
++ #else
++ {"INVALID_MESSAGE_LENGTH", 4, 131},
++ #endif
++ #ifdef RSA_R_INVALID_MGF1_MD
++ {"INVALID_MGF1_MD", ERR_LIB_RSA, RSA_R_INVALID_MGF1_MD},
++ #else
++ {"INVALID_MGF1_MD", 4, 156},
++ #endif
++ #ifdef RSA_R_INVALID_MODULUS
++ {"INVALID_MODULUS", ERR_LIB_RSA, RSA_R_INVALID_MODULUS},
++ #else
++ {"INVALID_MODULUS", 4, 174},
++ #endif
++ #ifdef RSA_R_INVALID_MULTI_PRIME_KEY
++ {"INVALID_MULTI_PRIME_KEY", ERR_LIB_RSA, RSA_R_INVALID_MULTI_PRIME_KEY},
++ #else
++ {"INVALID_MULTI_PRIME_KEY", 4, 167},
++ #endif
++ #ifdef RSA_R_INVALID_OAEP_PARAMETERS
++ {"INVALID_OAEP_PARAMETERS", ERR_LIB_RSA, RSA_R_INVALID_OAEP_PARAMETERS},
++ #else
++ {"INVALID_OAEP_PARAMETERS", 4, 161},
++ #endif
++ #ifdef RSA_R_INVALID_PADDING
++ {"INVALID_PADDING", ERR_LIB_RSA, RSA_R_INVALID_PADDING},
++ #else
++ {"INVALID_PADDING", 4, 138},
++ #endif
++ #ifdef RSA_R_INVALID_PADDING_MODE
++ {"INVALID_PADDING_MODE", ERR_LIB_RSA, RSA_R_INVALID_PADDING_MODE},
++ #else
++ {"INVALID_PADDING_MODE", 4, 141},
++ #endif
++ #ifdef RSA_R_INVALID_PSS_PARAMETERS
++ {"INVALID_PSS_PARAMETERS", ERR_LIB_RSA, RSA_R_INVALID_PSS_PARAMETERS},
++ #else
++ {"INVALID_PSS_PARAMETERS", 4, 149},
++ #endif
++ #ifdef RSA_R_INVALID_PSS_SALTLEN
++ {"INVALID_PSS_SALTLEN", ERR_LIB_RSA, RSA_R_INVALID_PSS_SALTLEN},
++ #else
++ {"INVALID_PSS_SALTLEN", 4, 146},
++ #endif
++ #ifdef RSA_R_INVALID_REQUEST
++ {"INVALID_REQUEST", ERR_LIB_RSA, RSA_R_INVALID_REQUEST},
++ #else
++ {"INVALID_REQUEST", 4, 175},
++ #endif
++ #ifdef RSA_R_INVALID_SALT_LENGTH
++ {"INVALID_SALT_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_SALT_LENGTH},
++ #else
++ {"INVALID_SALT_LENGTH", 4, 150},
++ #endif
++ #ifdef RSA_R_INVALID_STRENGTH
++ {"INVALID_STRENGTH", ERR_LIB_RSA, RSA_R_INVALID_STRENGTH},
++ #else
++ {"INVALID_STRENGTH", 4, 176},
++ #endif
++ #ifdef RSA_R_INVALID_TRAILER
++ {"INVALID_TRAILER", ERR_LIB_RSA, RSA_R_INVALID_TRAILER},
++ #else
++ {"INVALID_TRAILER", 4, 139},
++ #endif
++ #ifdef RSA_R_INVALID_X931_DIGEST
++ {"INVALID_X931_DIGEST", ERR_LIB_RSA, RSA_R_INVALID_X931_DIGEST},
++ #else
++ {"INVALID_X931_DIGEST", 4, 142},
++ #endif
++ #ifdef RSA_R_IQMP_NOT_INVERSE_OF_Q
++ {"IQMP_NOT_INVERSE_OF_Q", ERR_LIB_RSA, RSA_R_IQMP_NOT_INVERSE_OF_Q},
++ #else
++ {"IQMP_NOT_INVERSE_OF_Q", 4, 126},
++ #endif
++ #ifdef RSA_R_KEY_PRIME_NUM_INVALID
++ {"KEY_PRIME_NUM_INVALID", ERR_LIB_RSA, RSA_R_KEY_PRIME_NUM_INVALID},
++ #else
++ {"KEY_PRIME_NUM_INVALID", 4, 165},
++ #endif
++ #ifdef RSA_R_KEY_SIZE_TOO_SMALL
++ {"KEY_SIZE_TOO_SMALL", ERR_LIB_RSA, RSA_R_KEY_SIZE_TOO_SMALL},
++ #else
++ {"KEY_SIZE_TOO_SMALL", 4, 120},
++ #endif
++ #ifdef RSA_R_LAST_OCTET_INVALID
++ {"LAST_OCTET_INVALID", ERR_LIB_RSA, RSA_R_LAST_OCTET_INVALID},
++ #else
++ {"LAST_OCTET_INVALID", 4, 134},
++ #endif
++ #ifdef RSA_R_MGF1_DIGEST_NOT_ALLOWED
++ {"MGF1_DIGEST_NOT_ALLOWED", ERR_LIB_RSA, RSA_R_MGF1_DIGEST_NOT_ALLOWED},
++ #else
++ {"MGF1_DIGEST_NOT_ALLOWED", 4, 152},
++ #endif
++ #ifdef RSA_R_MISSING_PRIVATE_KEY
++ {"MISSING_PRIVATE_KEY", ERR_LIB_RSA, RSA_R_MISSING_PRIVATE_KEY},
++ #else
++ {"MISSING_PRIVATE_KEY", 4, 179},
++ #endif
++ #ifdef RSA_R_MODULUS_TOO_LARGE
++ {"MODULUS_TOO_LARGE", ERR_LIB_RSA, RSA_R_MODULUS_TOO_LARGE},
++ #else
++ {"MODULUS_TOO_LARGE", 4, 105},
++ #endif
++ #ifdef RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R
++ {"MP_COEFFICIENT_NOT_INVERSE_OF_R", ERR_LIB_RSA, RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R},
++ #else
++ {"MP_COEFFICIENT_NOT_INVERSE_OF_R", 4, 168},
++ #endif
++ #ifdef RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D
++ {"MP_EXPONENT_NOT_CONGRUENT_TO_D", ERR_LIB_RSA, RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D},
++ #else
++ {"MP_EXPONENT_NOT_CONGRUENT_TO_D", 4, 169},
++ #endif
++ #ifdef RSA_R_MP_R_NOT_PRIME
++ {"MP_R_NOT_PRIME", ERR_LIB_RSA, RSA_R_MP_R_NOT_PRIME},
++ #else
++ {"MP_R_NOT_PRIME", 4, 170},
++ #endif
++ #ifdef RSA_R_NO_PUBLIC_EXPONENT
++ {"NO_PUBLIC_EXPONENT", ERR_LIB_RSA, RSA_R_NO_PUBLIC_EXPONENT},
++ #else
++ {"NO_PUBLIC_EXPONENT", 4, 140},
++ #endif
++ #ifdef RSA_R_NULL_BEFORE_BLOCK_MISSING
++ {"NULL_BEFORE_BLOCK_MISSING", ERR_LIB_RSA, RSA_R_NULL_BEFORE_BLOCK_MISSING},
++ #else
++ {"NULL_BEFORE_BLOCK_MISSING", 4, 113},
++ #endif
++ #ifdef RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES
++ {"N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES", ERR_LIB_RSA, RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES},
++ #else
++ {"N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES", 4, 172},
++ #endif
++ #ifdef RSA_R_N_DOES_NOT_EQUAL_P_Q
++ {"N_DOES_NOT_EQUAL_P_Q", ERR_LIB_RSA, RSA_R_N_DOES_NOT_EQUAL_P_Q},
++ #else
++ {"N_DOES_NOT_EQUAL_P_Q", 4, 127},
++ #endif
++ #ifdef RSA_R_OAEP_DECODING_ERROR
++ {"OAEP_DECODING_ERROR", ERR_LIB_RSA, RSA_R_OAEP_DECODING_ERROR},
++ #else
++ {"OAEP_DECODING_ERROR", 4, 121},
++ #endif
++ #ifdef RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE
++ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", ERR_LIB_RSA, RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE},
++ #else
++ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", 4, 148},
++ #endif
++ #ifdef RSA_R_PADDING_CHECK_FAILED
++ {"PADDING_CHECK_FAILED", ERR_LIB_RSA, RSA_R_PADDING_CHECK_FAILED},
++ #else
++ {"PADDING_CHECK_FAILED", 4, 114},
++ #endif
++ #ifdef RSA_R_PAIRWISE_TEST_FAILURE
++ {"PAIRWISE_TEST_FAILURE", ERR_LIB_RSA, RSA_R_PAIRWISE_TEST_FAILURE},
++ #else
++ {"PAIRWISE_TEST_FAILURE", 4, 177},
++ #endif
++ #ifdef RSA_R_PKCS_DECODING_ERROR
++ {"PKCS_DECODING_ERROR", ERR_LIB_RSA, RSA_R_PKCS_DECODING_ERROR},
++ #else
++ {"PKCS_DECODING_ERROR", 4, 159},
++ #endif
++ #ifdef RSA_R_PSS_SALTLEN_TOO_SMALL
++ {"PSS_SALTLEN_TOO_SMALL", ERR_LIB_RSA, RSA_R_PSS_SALTLEN_TOO_SMALL},
++ #else
++ {"PSS_SALTLEN_TOO_SMALL", 4, 164},
++ #endif
++ #ifdef RSA_R_PUB_EXPONENT_OUT_OF_RANGE
++ {"PUB_EXPONENT_OUT_OF_RANGE", ERR_LIB_RSA, RSA_R_PUB_EXPONENT_OUT_OF_RANGE},
++ #else
++ {"PUB_EXPONENT_OUT_OF_RANGE", 4, 178},
++ #endif
++ #ifdef RSA_R_P_NOT_PRIME
++ {"P_NOT_PRIME", ERR_LIB_RSA, RSA_R_P_NOT_PRIME},
++ #else
++ {"P_NOT_PRIME", 4, 128},
++ #endif
++ #ifdef RSA_R_Q_NOT_PRIME
++ {"Q_NOT_PRIME", ERR_LIB_RSA, RSA_R_Q_NOT_PRIME},
++ #else
++ {"Q_NOT_PRIME", 4, 129},
++ #endif
++ #ifdef RSA_R_RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT
++ {"RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT", ERR_LIB_RSA, RSA_R_RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT},
++ #else
++ {"RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT", 4, 180},
++ #endif
++ #ifdef RSA_R_RSA_OPERATIONS_NOT_SUPPORTED
++ {"RSA_OPERATIONS_NOT_SUPPORTED", ERR_LIB_RSA, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED},
++ #else
++ {"RSA_OPERATIONS_NOT_SUPPORTED", 4, 130},
++ #endif
++ #ifdef RSA_R_SLEN_CHECK_FAILED
++ {"SLEN_CHECK_FAILED", ERR_LIB_RSA, RSA_R_SLEN_CHECK_FAILED},
++ #else
++ {"SLEN_CHECK_FAILED", 4, 136},
++ #endif
++ #ifdef RSA_R_SLEN_RECOVERY_FAILED
++ {"SLEN_RECOVERY_FAILED", ERR_LIB_RSA, RSA_R_SLEN_RECOVERY_FAILED},
++ #else
++ {"SLEN_RECOVERY_FAILED", 4, 135},
++ #endif
++ #ifdef RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD
++ {"THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD", ERR_LIB_RSA, RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD},
++ #else
++ {"THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD", 4, 116},
++ #endif
++ #ifdef RSA_R_UNKNOWN_ALGORITHM_TYPE
++ {"UNKNOWN_ALGORITHM_TYPE", ERR_LIB_RSA, RSA_R_UNKNOWN_ALGORITHM_TYPE},
++ #else
++ {"UNKNOWN_ALGORITHM_TYPE", 4, 117},
++ #endif
++ #ifdef RSA_R_UNKNOWN_DIGEST
++ {"UNKNOWN_DIGEST", ERR_LIB_RSA, RSA_R_UNKNOWN_DIGEST},
++ #else
++ {"UNKNOWN_DIGEST", 4, 166},
++ #endif
++ #ifdef RSA_R_UNKNOWN_MASK_DIGEST
++ {"UNKNOWN_MASK_DIGEST", ERR_LIB_RSA, RSA_R_UNKNOWN_MASK_DIGEST},
++ #else
++ {"UNKNOWN_MASK_DIGEST", 4, 151},
++ #endif
++ #ifdef RSA_R_UNKNOWN_PADDING_TYPE
++ {"UNKNOWN_PADDING_TYPE", ERR_LIB_RSA, RSA_R_UNKNOWN_PADDING_TYPE},
++ #else
++ {"UNKNOWN_PADDING_TYPE", 4, 118},
++ #endif
++ #ifdef RSA_R_UNSUPPORTED_ENCRYPTION_TYPE
++ {"UNSUPPORTED_ENCRYPTION_TYPE", ERR_LIB_RSA, RSA_R_UNSUPPORTED_ENCRYPTION_TYPE},
++ #else
++ {"UNSUPPORTED_ENCRYPTION_TYPE", 4, 162},
++ #endif
++ #ifdef RSA_R_UNSUPPORTED_LABEL_SOURCE
++ {"UNSUPPORTED_LABEL_SOURCE", ERR_LIB_RSA, RSA_R_UNSUPPORTED_LABEL_SOURCE},
++ #else
++ {"UNSUPPORTED_LABEL_SOURCE", 4, 163},
++ #endif
++ #ifdef RSA_R_UNSUPPORTED_MASK_ALGORITHM
++ {"UNSUPPORTED_MASK_ALGORITHM", ERR_LIB_RSA, RSA_R_UNSUPPORTED_MASK_ALGORITHM},
++ #else
++ {"UNSUPPORTED_MASK_ALGORITHM", 4, 153},
++ #endif
++ #ifdef RSA_R_UNSUPPORTED_MASK_PARAMETER
++ {"UNSUPPORTED_MASK_PARAMETER", ERR_LIB_RSA, RSA_R_UNSUPPORTED_MASK_PARAMETER},
++ #else
++ {"UNSUPPORTED_MASK_PARAMETER", 4, 154},
++ #endif
++ #ifdef RSA_R_UNSUPPORTED_SIGNATURE_TYPE
++ {"UNSUPPORTED_SIGNATURE_TYPE", ERR_LIB_RSA, RSA_R_UNSUPPORTED_SIGNATURE_TYPE},
++ #else
++ {"UNSUPPORTED_SIGNATURE_TYPE", 4, 155},
++ #endif
++ #ifdef RSA_R_VALUE_MISSING
++ {"VALUE_MISSING", ERR_LIB_RSA, RSA_R_VALUE_MISSING},
++ #else
++ {"VALUE_MISSING", 4, 147},
++ #endif
++ #ifdef RSA_R_WRONG_SIGNATURE_LENGTH
++ {"WRONG_SIGNATURE_LENGTH", ERR_LIB_RSA, RSA_R_WRONG_SIGNATURE_LENGTH},
++ #else
++ {"WRONG_SIGNATURE_LENGTH", 4, 119},
++ #endif
++ #ifdef SM2_R_ASN1_ERROR
++ {"ASN1_ERROR", ERR_LIB_SM2, SM2_R_ASN1_ERROR},
++ #else
++ {"ASN1_ERROR", 53, 100},
++ #endif
++ #ifdef SM2_R_BAD_SIGNATURE
++ {"BAD_SIGNATURE", ERR_LIB_SM2, SM2_R_BAD_SIGNATURE},
++ #else
++ {"BAD_SIGNATURE", 53, 101},
++ #endif
++ #ifdef SM2_R_BUFFER_TOO_SMALL
++ {"BUFFER_TOO_SMALL", ERR_LIB_SM2, SM2_R_BUFFER_TOO_SMALL},
++ #else
++ {"BUFFER_TOO_SMALL", 53, 107},
++ #endif
++ #ifdef SM2_R_DIST_ID_TOO_LARGE
++ {"DIST_ID_TOO_LARGE", ERR_LIB_SM2, SM2_R_DIST_ID_TOO_LARGE},
++ #else
++ {"DIST_ID_TOO_LARGE", 53, 110},
++ #endif
++ #ifdef SM2_R_ID_NOT_SET
++ {"ID_NOT_SET", ERR_LIB_SM2, SM2_R_ID_NOT_SET},
++ #else
++ {"ID_NOT_SET", 53, 112},
++ #endif
++ #ifdef SM2_R_ID_TOO_LARGE
++ {"ID_TOO_LARGE", ERR_LIB_SM2, SM2_R_ID_TOO_LARGE},
++ #else
++ {"ID_TOO_LARGE", 53, 111},
++ #endif
++ #ifdef SM2_R_INVALID_CURVE
++ {"INVALID_CURVE", ERR_LIB_SM2, SM2_R_INVALID_CURVE},
++ #else
++ {"INVALID_CURVE", 53, 108},
++ #endif
++ #ifdef SM2_R_INVALID_DIGEST
++ {"INVALID_DIGEST", ERR_LIB_SM2, SM2_R_INVALID_DIGEST},
++ #else
++ {"INVALID_DIGEST", 53, 102},
++ #endif
++ #ifdef SM2_R_INVALID_DIGEST_TYPE
++ {"INVALID_DIGEST_TYPE", ERR_LIB_SM2, SM2_R_INVALID_DIGEST_TYPE},
++ #else
++ {"INVALID_DIGEST_TYPE", 53, 103},
++ #endif
++ #ifdef SM2_R_INVALID_ENCODING
++ {"INVALID_ENCODING", ERR_LIB_SM2, SM2_R_INVALID_ENCODING},
++ #else
++ {"INVALID_ENCODING", 53, 104},
++ #endif
++ #ifdef SM2_R_INVALID_FIELD
++ {"INVALID_FIELD", ERR_LIB_SM2, SM2_R_INVALID_FIELD},
++ #else
++ {"INVALID_FIELD", 53, 105},
++ #endif
++ #ifdef SM2_R_INVALID_PRIVATE_KEY
++ {"INVALID_PRIVATE_KEY", ERR_LIB_SM2, SM2_R_INVALID_PRIVATE_KEY},
++ #else
++ {"INVALID_PRIVATE_KEY", 53, 113},
++ #endif
++ #ifdef SM2_R_NO_PARAMETERS_SET
++ {"NO_PARAMETERS_SET", ERR_LIB_SM2, SM2_R_NO_PARAMETERS_SET},
++ #else
++ {"NO_PARAMETERS_SET", 53, 109},
++ #endif
++ #ifdef SM2_R_USER_ID_TOO_LARGE
++ {"USER_ID_TOO_LARGE", ERR_LIB_SM2, SM2_R_USER_ID_TOO_LARGE},
++ #else
++ {"USER_ID_TOO_LARGE", 53, 106},
++ #endif
++ #ifdef SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY
++ {"APPLICATION_DATA_AFTER_CLOSE_NOTIFY", ERR_LIB_SSL, SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY},
++ #else
++ {"APPLICATION_DATA_AFTER_CLOSE_NOTIFY", 20, 291},
++ #endif
++ #ifdef SSL_R_APP_DATA_IN_HANDSHAKE
++ {"APP_DATA_IN_HANDSHAKE", ERR_LIB_SSL, SSL_R_APP_DATA_IN_HANDSHAKE},
++ #else
++ {"APP_DATA_IN_HANDSHAKE", 20, 100},
++ #endif
++ #ifdef SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT
++ {"ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT", ERR_LIB_SSL, SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT},
++ #else
++ {"ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT", 20, 272},
++ #endif
++ #ifdef SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE
++ {"AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE", ERR_LIB_SSL, SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE},
++ #else
++ {"AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE", 20, 158},
++ #endif
++ #ifdef SSL_R_BAD_CERTIFICATE
++ {"BAD_CERTIFICATE", ERR_LIB_SSL, SSL_R_BAD_CERTIFICATE},
++ #else
++ {"BAD_CERTIFICATE", 20, 348},
++ #endif
++ #ifdef SSL_R_BAD_CHANGE_CIPHER_SPEC
++ {"BAD_CHANGE_CIPHER_SPEC", ERR_LIB_SSL, SSL_R_BAD_CHANGE_CIPHER_SPEC},
++ #else
++ {"BAD_CHANGE_CIPHER_SPEC", 20, 103},
++ #endif
++ #ifdef SSL_R_BAD_CIPHER
++ {"BAD_CIPHER", ERR_LIB_SSL, SSL_R_BAD_CIPHER},
++ #else
++ {"BAD_CIPHER", 20, 186},
++ #endif
++ #ifdef SSL_R_BAD_COMPRESSION_ALGORITHM
++ {"BAD_COMPRESSION_ALGORITHM", ERR_LIB_SSL, SSL_R_BAD_COMPRESSION_ALGORITHM},
++ #else
++ {"BAD_COMPRESSION_ALGORITHM", 20, 326},
++ #endif
++ #ifdef SSL_R_BAD_DATA
++ {"BAD_DATA", ERR_LIB_SSL, SSL_R_BAD_DATA},
++ #else
++ {"BAD_DATA", 20, 390},
++ #endif
++ #ifdef SSL_R_BAD_DATA_RETURNED_BY_CALLBACK
++ {"BAD_DATA_RETURNED_BY_CALLBACK", ERR_LIB_SSL, SSL_R_BAD_DATA_RETURNED_BY_CALLBACK},
++ #else
++ {"BAD_DATA_RETURNED_BY_CALLBACK", 20, 106},
++ #endif
++ #ifdef SSL_R_BAD_DECOMPRESSION
++ {"BAD_DECOMPRESSION", ERR_LIB_SSL, SSL_R_BAD_DECOMPRESSION},
++ #else
++ {"BAD_DECOMPRESSION", 20, 107},
++ #endif
++ #ifdef SSL_R_BAD_DH_VALUE
++ {"BAD_DH_VALUE", ERR_LIB_SSL, SSL_R_BAD_DH_VALUE},
++ #else
++ {"BAD_DH_VALUE", 20, 102},
++ #endif
++ #ifdef SSL_R_BAD_DIGEST_LENGTH
++ {"BAD_DIGEST_LENGTH", ERR_LIB_SSL, SSL_R_BAD_DIGEST_LENGTH},
++ #else
++ {"BAD_DIGEST_LENGTH", 20, 111},
++ #endif
++ #ifdef SSL_R_BAD_EARLY_DATA
++ {"BAD_EARLY_DATA", ERR_LIB_SSL, SSL_R_BAD_EARLY_DATA},
++ #else
++ {"BAD_EARLY_DATA", 20, 233},
++ #endif
++ #ifdef SSL_R_BAD_ECC_CERT
++ {"BAD_ECC_CERT", ERR_LIB_SSL, SSL_R_BAD_ECC_CERT},
++ #else
++ {"BAD_ECC_CERT", 20, 304},
++ #endif
++ #ifdef SSL_R_BAD_ECHCONFIG_EXTENSION
++ {"BAD_ECHCONFIG_EXTENSION", ERR_LIB_SSL, SSL_R_BAD_ECHCONFIG_EXTENSION},
++ #else
++ {"BAD_ECHCONFIG_EXTENSION", 20, 425},
++ #endif
++ #ifdef SSL_R_BAD_ECPOINT
++ {"BAD_ECPOINT", ERR_LIB_SSL, SSL_R_BAD_ECPOINT},
++ #else
++ {"BAD_ECPOINT", 20, 306},
++ #endif
++ #ifdef SSL_R_BAD_EXTENSION
++ {"BAD_EXTENSION", ERR_LIB_SSL, SSL_R_BAD_EXTENSION},
++ #else
++ {"BAD_EXTENSION", 20, 110},
++ #endif
++ #ifdef SSL_R_BAD_HANDSHAKE_LENGTH
++ {"BAD_HANDSHAKE_LENGTH", ERR_LIB_SSL, SSL_R_BAD_HANDSHAKE_LENGTH},
++ #else
++ {"BAD_HANDSHAKE_LENGTH", 20, 332},
++ #endif
++ #ifdef SSL_R_BAD_HANDSHAKE_STATE
++ {"BAD_HANDSHAKE_STATE", ERR_LIB_SSL, SSL_R_BAD_HANDSHAKE_STATE},
++ #else
++ {"BAD_HANDSHAKE_STATE", 20, 236},
++ #endif
++ #ifdef SSL_R_BAD_HELLO_REQUEST
++ {"BAD_HELLO_REQUEST", ERR_LIB_SSL, SSL_R_BAD_HELLO_REQUEST},
++ #else
++ {"BAD_HELLO_REQUEST", 20, 105},
++ #endif
++ #ifdef SSL_R_BAD_HRR_VERSION
++ {"BAD_HRR_VERSION", ERR_LIB_SSL, SSL_R_BAD_HRR_VERSION},
++ #else
++ {"BAD_HRR_VERSION", 20, 263},
++ #endif
++ #ifdef SSL_R_BAD_KEY_SHARE
++ {"BAD_KEY_SHARE", ERR_LIB_SSL, SSL_R_BAD_KEY_SHARE},
++ #else
++ {"BAD_KEY_SHARE", 20, 108},
++ #endif
++ #ifdef SSL_R_BAD_KEY_UPDATE
++ {"BAD_KEY_UPDATE", ERR_LIB_SSL, SSL_R_BAD_KEY_UPDATE},
++ #else
++ {"BAD_KEY_UPDATE", 20, 122},
++ #endif
++ #ifdef SSL_R_BAD_LEGACY_VERSION
++ {"BAD_LEGACY_VERSION", ERR_LIB_SSL, SSL_R_BAD_LEGACY_VERSION},
++ #else
++ {"BAD_LEGACY_VERSION", 20, 292},
++ #endif
++ #ifdef SSL_R_BAD_LENGTH
++ {"BAD_LENGTH", ERR_LIB_SSL, SSL_R_BAD_LENGTH},
++ #else
++ {"BAD_LENGTH", 20, 271},
++ #endif
++ #ifdef SSL_R_BAD_PACKET
++ {"BAD_PACKET", ERR_LIB_SSL, SSL_R_BAD_PACKET},
++ #else
++ {"BAD_PACKET", 20, 240},
++ #endif
++ #ifdef SSL_R_BAD_PACKET_LENGTH
++ {"BAD_PACKET_LENGTH", ERR_LIB_SSL, SSL_R_BAD_PACKET_LENGTH},
++ #else
++ {"BAD_PACKET_LENGTH", 20, 115},
++ #endif
++ #ifdef SSL_R_BAD_PROTOCOL_VERSION_NUMBER
++ {"BAD_PROTOCOL_VERSION_NUMBER", ERR_LIB_SSL, SSL_R_BAD_PROTOCOL_VERSION_NUMBER},
++ #else
++ {"BAD_PROTOCOL_VERSION_NUMBER", 20, 116},
++ #endif
++ #ifdef SSL_R_BAD_PSK
++ {"BAD_PSK", ERR_LIB_SSL, SSL_R_BAD_PSK},
++ #else
++ {"BAD_PSK", 20, 219},
++ #endif
++ #ifdef SSL_R_BAD_PSK_IDENTITY
++ {"BAD_PSK_IDENTITY", ERR_LIB_SSL, SSL_R_BAD_PSK_IDENTITY},
++ #else
++ {"BAD_PSK_IDENTITY", 20, 114},
++ #endif
++ #ifdef SSL_R_BAD_RECORD_TYPE
++ {"BAD_RECORD_TYPE", ERR_LIB_SSL, SSL_R_BAD_RECORD_TYPE},
++ #else
++ {"BAD_RECORD_TYPE", 20, 443},
++ #endif
++ #ifdef SSL_R_BAD_RSA_ENCRYPT
++ {"BAD_RSA_ENCRYPT", ERR_LIB_SSL, SSL_R_BAD_RSA_ENCRYPT},
++ #else
++ {"BAD_RSA_ENCRYPT", 20, 119},
++ #endif
++ #ifdef SSL_R_BAD_SIGNATURE
++ {"BAD_SIGNATURE", ERR_LIB_SSL, SSL_R_BAD_SIGNATURE},
++ #else
++ {"BAD_SIGNATURE", 20, 123},
++ #endif
++ #ifdef SSL_R_BAD_SRP_A_LENGTH
++ {"BAD_SRP_A_LENGTH", ERR_LIB_SSL, SSL_R_BAD_SRP_A_LENGTH},
++ #else
++ {"BAD_SRP_A_LENGTH", 20, 347},
++ #endif
++ #ifdef SSL_R_BAD_SRP_PARAMETERS
++ {"BAD_SRP_PARAMETERS", ERR_LIB_SSL, SSL_R_BAD_SRP_PARAMETERS},
++ #else
++ {"BAD_SRP_PARAMETERS", 20, 371},
++ #endif
++ #ifdef SSL_R_BAD_SRTP_MKI_VALUE
++ {"BAD_SRTP_MKI_VALUE", ERR_LIB_SSL, SSL_R_BAD_SRTP_MKI_VALUE},
++ #else
++ {"BAD_SRTP_MKI_VALUE", 20, 352},
++ #endif
++ #ifdef SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST
++ {"BAD_SRTP_PROTECTION_PROFILE_LIST", ERR_LIB_SSL, SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST},
++ #else
++ {"BAD_SRTP_PROTECTION_PROFILE_LIST", 20, 353},
++ #endif
++ #ifdef SSL_R_BAD_SSL_FILETYPE
++ {"BAD_SSL_FILETYPE", ERR_LIB_SSL, SSL_R_BAD_SSL_FILETYPE},
++ #else
++ {"BAD_SSL_FILETYPE", 20, 124},
++ #endif
++ #ifdef SSL_R_BAD_VALUE
++ {"BAD_VALUE", ERR_LIB_SSL, SSL_R_BAD_VALUE},
++ #else
++ {"BAD_VALUE", 20, 384},
++ #endif
++ #ifdef SSL_R_BAD_WRITE_RETRY
++ {"BAD_WRITE_RETRY", ERR_LIB_SSL, SSL_R_BAD_WRITE_RETRY},
++ #else
++ {"BAD_WRITE_RETRY", 20, 127},
++ #endif
++ #ifdef SSL_R_BINDER_DOES_NOT_VERIFY
++ {"BINDER_DOES_NOT_VERIFY", ERR_LIB_SSL, SSL_R_BINDER_DOES_NOT_VERIFY},
++ #else
++ {"BINDER_DOES_NOT_VERIFY", 20, 253},
++ #endif
++ #ifdef SSL_R_BIO_NOT_SET
++ {"BIO_NOT_SET", ERR_LIB_SSL, SSL_R_BIO_NOT_SET},
++ #else
++ {"BIO_NOT_SET", 20, 128},
++ #endif
++ #ifdef SSL_R_BLOCK_CIPHER_PAD_IS_WRONG
++ {"BLOCK_CIPHER_PAD_IS_WRONG", ERR_LIB_SSL, SSL_R_BLOCK_CIPHER_PAD_IS_WRONG},
++ #else
++ {"BLOCK_CIPHER_PAD_IS_WRONG", 20, 129},
++ #endif
++ #ifdef SSL_R_BN_LIB
++ {"BN_LIB", ERR_LIB_SSL, SSL_R_BN_LIB},
++ #else
++ {"BN_LIB", 20, 130},
++ #endif
++ #ifdef SSL_R_CALLBACK_FAILED
++ {"CALLBACK_FAILED", ERR_LIB_SSL, SSL_R_CALLBACK_FAILED},
++ #else
++ {"CALLBACK_FAILED", 20, 234},
++ #endif
++ #ifdef SSL_R_CANNOT_CHANGE_CIPHER
++ {"CANNOT_CHANGE_CIPHER", ERR_LIB_SSL, SSL_R_CANNOT_CHANGE_CIPHER},
++ #else
++ {"CANNOT_CHANGE_CIPHER", 20, 109},
++ #endif
++ #ifdef SSL_R_CANNOT_GET_GROUP_NAME
++ {"CANNOT_GET_GROUP_NAME", ERR_LIB_SSL, SSL_R_CANNOT_GET_GROUP_NAME},
++ #else
++ {"CANNOT_GET_GROUP_NAME", 20, 299},
++ #endif
++ #ifdef SSL_R_CA_DN_LENGTH_MISMATCH
++ {"CA_DN_LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_CA_DN_LENGTH_MISMATCH},
++ #else
++ {"CA_DN_LENGTH_MISMATCH", 20, 131},
++ #endif
++ #ifdef SSL_R_CA_KEY_TOO_SMALL
++ {"CA_KEY_TOO_SMALL", ERR_LIB_SSL, SSL_R_CA_KEY_TOO_SMALL},
++ #else
++ {"CA_KEY_TOO_SMALL", 20, 397},
++ #endif
++ #ifdef SSL_R_CA_MD_TOO_WEAK
++ {"CA_MD_TOO_WEAK", ERR_LIB_SSL, SSL_R_CA_MD_TOO_WEAK},
++ #else
++ {"CA_MD_TOO_WEAK", 20, 398},
++ #endif
++ #ifdef SSL_R_CCS_RECEIVED_EARLY
++ {"CCS_RECEIVED_EARLY", ERR_LIB_SSL, SSL_R_CCS_RECEIVED_EARLY},
++ #else
++ {"CCS_RECEIVED_EARLY", 20, 133},
++ #endif
++ #ifdef SSL_R_CERTIFICATE_VERIFY_FAILED
++ {"CERTIFICATE_VERIFY_FAILED", ERR_LIB_SSL, SSL_R_CERTIFICATE_VERIFY_FAILED},
++ #else
++ {"CERTIFICATE_VERIFY_FAILED", 20, 134},
++ #endif
++ #ifdef SSL_R_CERT_CB_ERROR
++ {"CERT_CB_ERROR", ERR_LIB_SSL, SSL_R_CERT_CB_ERROR},
++ #else
++ {"CERT_CB_ERROR", 20, 377},
++ #endif
++ #ifdef SSL_R_CERT_LENGTH_MISMATCH
++ {"CERT_LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_CERT_LENGTH_MISMATCH},
++ #else
++ {"CERT_LENGTH_MISMATCH", 20, 135},
++ #endif
++ #ifdef SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED
++ {"CIPHERSUITE_DIGEST_HAS_CHANGED", ERR_LIB_SSL, SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED},
++ #else
++ {"CIPHERSUITE_DIGEST_HAS_CHANGED", 20, 218},
++ #endif
++ #ifdef SSL_R_CIPHER_CODE_WRONG_LENGTH
++ {"CIPHER_CODE_WRONG_LENGTH", ERR_LIB_SSL, SSL_R_CIPHER_CODE_WRONG_LENGTH},
++ #else
++ {"CIPHER_CODE_WRONG_LENGTH", 20, 137},
++ #endif
++ #ifdef SSL_R_CLIENTHELLO_TLSEXT
++ {"CLIENTHELLO_TLSEXT", ERR_LIB_SSL, SSL_R_CLIENTHELLO_TLSEXT},
++ #else
++ {"CLIENTHELLO_TLSEXT", 20, 226},
++ #endif
++ #ifdef SSL_R_COMPRESSED_LENGTH_TOO_LONG
++ {"COMPRESSED_LENGTH_TOO_LONG", ERR_LIB_SSL, SSL_R_COMPRESSED_LENGTH_TOO_LONG},
++ #else
++ {"COMPRESSED_LENGTH_TOO_LONG", 20, 140},
++ #endif
++ #ifdef SSL_R_COMPRESSION_DISABLED
++ {"COMPRESSION_DISABLED", ERR_LIB_SSL, SSL_R_COMPRESSION_DISABLED},
++ #else
++ {"COMPRESSION_DISABLED", 20, 343},
++ #endif
++ #ifdef SSL_R_COMPRESSION_FAILURE
++ {"COMPRESSION_FAILURE", ERR_LIB_SSL, SSL_R_COMPRESSION_FAILURE},
++ #else
++ {"COMPRESSION_FAILURE", 20, 141},
++ #endif
++ #ifdef SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE
++ {"COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE", ERR_LIB_SSL, SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE},
++ #else
++ {"COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE", 20, 307},
++ #endif
++ #ifdef SSL_R_COMPRESSION_LIBRARY_ERROR
++ {"COMPRESSION_LIBRARY_ERROR", ERR_LIB_SSL, SSL_R_COMPRESSION_LIBRARY_ERROR},
++ #else
++ {"COMPRESSION_LIBRARY_ERROR", 20, 142},
++ #endif
++ #ifdef SSL_R_CONNECTION_TYPE_NOT_SET
++ {"CONNECTION_TYPE_NOT_SET", ERR_LIB_SSL, SSL_R_CONNECTION_TYPE_NOT_SET},
++ #else
++ {"CONNECTION_TYPE_NOT_SET", 20, 144},
++ #endif
++ #ifdef SSL_R_CONN_USE_ONLY
++ {"CONN_USE_ONLY", ERR_LIB_SSL, SSL_R_CONN_USE_ONLY},
++ #else
++ {"CONN_USE_ONLY", 20, 356},
++ #endif
++ #ifdef SSL_R_CONTEXT_NOT_DANE_ENABLED
++ {"CONTEXT_NOT_DANE_ENABLED", ERR_LIB_SSL, SSL_R_CONTEXT_NOT_DANE_ENABLED},
++ #else
++ {"CONTEXT_NOT_DANE_ENABLED", 20, 167},
++ #endif
++ #ifdef SSL_R_COOKIE_GEN_CALLBACK_FAILURE
++ {"COOKIE_GEN_CALLBACK_FAILURE", ERR_LIB_SSL, SSL_R_COOKIE_GEN_CALLBACK_FAILURE},
++ #else
++ {"COOKIE_GEN_CALLBACK_FAILURE", 20, 400},
++ #endif
++ #ifdef SSL_R_COOKIE_MISMATCH
++ {"COOKIE_MISMATCH", ERR_LIB_SSL, SSL_R_COOKIE_MISMATCH},
++ #else
++ {"COOKIE_MISMATCH", 20, 308},
++ #endif
++ #ifdef SSL_R_COPY_PARAMETERS_FAILED
++ {"COPY_PARAMETERS_FAILED", ERR_LIB_SSL, SSL_R_COPY_PARAMETERS_FAILED},
++ #else
++ {"COPY_PARAMETERS_FAILED", 20, 296},
++ #endif
++ #ifdef SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED
++ {"CUSTOM_EXT_HANDLER_ALREADY_INSTALLED", ERR_LIB_SSL, SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED},
++ #else
++ {"CUSTOM_EXT_HANDLER_ALREADY_INSTALLED", 20, 206},
++ #endif
++ #ifdef SSL_R_DANE_ALREADY_ENABLED
++ {"DANE_ALREADY_ENABLED", ERR_LIB_SSL, SSL_R_DANE_ALREADY_ENABLED},
++ #else
++ {"DANE_ALREADY_ENABLED", 20, 172},
++ #endif
++ #ifdef SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL
++ {"DANE_CANNOT_OVERRIDE_MTYPE_FULL", ERR_LIB_SSL, SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL},
++ #else
++ {"DANE_CANNOT_OVERRIDE_MTYPE_FULL", 20, 173},
++ #endif
++ #ifdef SSL_R_DANE_NOT_ENABLED
++ {"DANE_NOT_ENABLED", ERR_LIB_SSL, SSL_R_DANE_NOT_ENABLED},
++ #else
++ {"DANE_NOT_ENABLED", 20, 175},
++ #endif
++ #ifdef SSL_R_DANE_TLSA_BAD_CERTIFICATE
++ {"DANE_TLSA_BAD_CERTIFICATE", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_CERTIFICATE},
++ #else
++ {"DANE_TLSA_BAD_CERTIFICATE", 20, 180},
++ #endif
++ #ifdef SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE
++ {"DANE_TLSA_BAD_CERTIFICATE_USAGE", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE},
++ #else
++ {"DANE_TLSA_BAD_CERTIFICATE_USAGE", 20, 184},
++ #endif
++ #ifdef SSL_R_DANE_TLSA_BAD_DATA_LENGTH
++ {"DANE_TLSA_BAD_DATA_LENGTH", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_DATA_LENGTH},
++ #else
++ {"DANE_TLSA_BAD_DATA_LENGTH", 20, 189},
++ #endif
++ #ifdef SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH
++ {"DANE_TLSA_BAD_DIGEST_LENGTH", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH},
++ #else
++ {"DANE_TLSA_BAD_DIGEST_LENGTH", 20, 192},
++ #endif
++ #ifdef SSL_R_DANE_TLSA_BAD_MATCHING_TYPE
++ {"DANE_TLSA_BAD_MATCHING_TYPE", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_MATCHING_TYPE},
++ #else
++ {"DANE_TLSA_BAD_MATCHING_TYPE", 20, 200},
++ #endif
++ #ifdef SSL_R_DANE_TLSA_BAD_PUBLIC_KEY
++ {"DANE_TLSA_BAD_PUBLIC_KEY", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_PUBLIC_KEY},
++ #else
++ {"DANE_TLSA_BAD_PUBLIC_KEY", 20, 201},
++ #endif
++ #ifdef SSL_R_DANE_TLSA_BAD_SELECTOR
++ {"DANE_TLSA_BAD_SELECTOR", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_SELECTOR},
++ #else
++ {"DANE_TLSA_BAD_SELECTOR", 20, 202},
++ #endif
++ #ifdef SSL_R_DANE_TLSA_NULL_DATA
++ {"DANE_TLSA_NULL_DATA", ERR_LIB_SSL, SSL_R_DANE_TLSA_NULL_DATA},
++ #else
++ {"DANE_TLSA_NULL_DATA", 20, 203},
++ #endif
++ #ifdef SSL_R_DATA_BETWEEN_CCS_AND_FINISHED
++ {"DATA_BETWEEN_CCS_AND_FINISHED", ERR_LIB_SSL, SSL_R_DATA_BETWEEN_CCS_AND_FINISHED},
++ #else
++ {"DATA_BETWEEN_CCS_AND_FINISHED", 20, 145},
++ #endif
++ #ifdef SSL_R_DATA_LENGTH_TOO_LONG
++ {"DATA_LENGTH_TOO_LONG", ERR_LIB_SSL, SSL_R_DATA_LENGTH_TOO_LONG},
++ #else
++ {"DATA_LENGTH_TOO_LONG", 20, 146},
++ #endif
++ #ifdef SSL_R_DECRYPTION_FAILED
++ {"DECRYPTION_FAILED", ERR_LIB_SSL, SSL_R_DECRYPTION_FAILED},
++ #else
++ {"DECRYPTION_FAILED", 20, 147},
++ #endif
++ #ifdef SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC
++ {"DECRYPTION_FAILED_OR_BAD_RECORD_MAC", ERR_LIB_SSL, SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC},
++ #else
++ {"DECRYPTION_FAILED_OR_BAD_RECORD_MAC", 20, 281},
++ #endif
++ #ifdef SSL_R_DH_KEY_TOO_SMALL
++ {"DH_KEY_TOO_SMALL", ERR_LIB_SSL, SSL_R_DH_KEY_TOO_SMALL},
++ #else
++ {"DH_KEY_TOO_SMALL", 20, 394},
++ #endif
++ #ifdef SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG
++ {"DH_PUBLIC_VALUE_LENGTH_IS_WRONG", ERR_LIB_SSL, SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG},
++ #else
++ {"DH_PUBLIC_VALUE_LENGTH_IS_WRONG", 20, 148},
++ #endif
++ #ifdef SSL_R_DIGEST_CHECK_FAILED
++ {"DIGEST_CHECK_FAILED", ERR_LIB_SSL, SSL_R_DIGEST_CHECK_FAILED},
++ #else
++ {"DIGEST_CHECK_FAILED", 20, 149},
++ #endif
++ #ifdef SSL_R_DOMAIN_USE_ONLY
++ {"DOMAIN_USE_ONLY", ERR_LIB_SSL, SSL_R_DOMAIN_USE_ONLY},
++ #else
++ {"DOMAIN_USE_ONLY", 20, 422},
++ #endif
++ #ifdef SSL_R_DTLS_MESSAGE_TOO_BIG
++ {"DTLS_MESSAGE_TOO_BIG", ERR_LIB_SSL, SSL_R_DTLS_MESSAGE_TOO_BIG},
++ #else
++ {"DTLS_MESSAGE_TOO_BIG", 20, 334},
++ #endif
++ #ifdef SSL_R_DUPLICATE_COMPRESSION_ID
++ {"DUPLICATE_COMPRESSION_ID", ERR_LIB_SSL, SSL_R_DUPLICATE_COMPRESSION_ID},
++ #else
++ {"DUPLICATE_COMPRESSION_ID", 20, 309},
++ #endif
++ #ifdef SSL_R_ECC_CERT_NOT_FOR_SIGNING
++ {"ECC_CERT_NOT_FOR_SIGNING", ERR_LIB_SSL, SSL_R_ECC_CERT_NOT_FOR_SIGNING},
++ #else
++ {"ECC_CERT_NOT_FOR_SIGNING", 20, 318},
++ #endif
++ #ifdef SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE
++ {"ECDH_REQUIRED_FOR_SUITEB_MODE", ERR_LIB_SSL, SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE},
++ #else
++ {"ECDH_REQUIRED_FOR_SUITEB_MODE", 20, 374},
++ #endif
++ #ifdef SSL_R_ECH_DECODE_ERROR
++ {"ECH_DECODE_ERROR", ERR_LIB_SSL, SSL_R_ECH_DECODE_ERROR},
++ #else
++ {"ECH_DECODE_ERROR", 20, 426},
++ #endif
++ #ifdef SSL_R_ECH_REQUIRED
++ {"ECH_REQUIRED", ERR_LIB_SSL, SSL_R_ECH_REQUIRED},
++ #else
++ {"ECH_REQUIRED", 20, 424},
++ #endif
++ #ifdef SSL_R_EE_KEY_TOO_SMALL
++ {"EE_KEY_TOO_SMALL", ERR_LIB_SSL, SSL_R_EE_KEY_TOO_SMALL},
++ #else
++ {"EE_KEY_TOO_SMALL", 20, 399},
++ #endif
++ #ifdef SSL_R_EMPTY_RAW_PUBLIC_KEY
++ {"EMPTY_RAW_PUBLIC_KEY", ERR_LIB_SSL, SSL_R_EMPTY_RAW_PUBLIC_KEY},
++ #else
++ {"EMPTY_RAW_PUBLIC_KEY", 20, 349},
++ #endif
++ #ifdef SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST
++ {"EMPTY_SRTP_PROTECTION_PROFILE_LIST", ERR_LIB_SSL, SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST},
++ #else
++ {"EMPTY_SRTP_PROTECTION_PROFILE_LIST", 20, 354},
++ #endif
++ #ifdef SSL_R_ENCRYPTED_LENGTH_TOO_LONG
++ {"ENCRYPTED_LENGTH_TOO_LONG", ERR_LIB_SSL, SSL_R_ENCRYPTED_LENGTH_TOO_LONG},
++ #else
++ {"ENCRYPTED_LENGTH_TOO_LONG", 20, 150},
++ #endif
++ #ifdef SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST
++ {"ERROR_IN_RECEIVED_CIPHER_LIST", ERR_LIB_SSL, SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST},
++ #else
++ {"ERROR_IN_RECEIVED_CIPHER_LIST", 20, 151},
++ #endif
++ #ifdef SSL_R_ERROR_IN_SYSTEM_DEFAULT_CONFIG
++ {"ERROR_IN_SYSTEM_DEFAULT_CONFIG", ERR_LIB_SSL, SSL_R_ERROR_IN_SYSTEM_DEFAULT_CONFIG},
++ #else
++ {"ERROR_IN_SYSTEM_DEFAULT_CONFIG", 20, 419},
++ #endif
++ #ifdef SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN
++ {"ERROR_SETTING_TLSA_BASE_DOMAIN", ERR_LIB_SSL, SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN},
++ #else
++ {"ERROR_SETTING_TLSA_BASE_DOMAIN", 20, 204},
++ #endif
++ #ifdef SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE
++ {"EXCEEDS_MAX_FRAGMENT_SIZE", ERR_LIB_SSL, SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE},
++ #else
++ {"EXCEEDS_MAX_FRAGMENT_SIZE", 20, 194},
++ #endif
++ #ifdef SSL_R_EXCESSIVE_MESSAGE_SIZE
++ {"EXCESSIVE_MESSAGE_SIZE", ERR_LIB_SSL, SSL_R_EXCESSIVE_MESSAGE_SIZE},
++ #else
++ {"EXCESSIVE_MESSAGE_SIZE", 20, 152},
++ #endif
++ #ifdef SSL_R_EXTENSION_NOT_RECEIVED
++ {"EXTENSION_NOT_RECEIVED", ERR_LIB_SSL, SSL_R_EXTENSION_NOT_RECEIVED},
++ #else
++ {"EXTENSION_NOT_RECEIVED", 20, 279},
++ #endif
++ #ifdef SSL_R_EXTRA_DATA_IN_MESSAGE
++ {"EXTRA_DATA_IN_MESSAGE", ERR_LIB_SSL, SSL_R_EXTRA_DATA_IN_MESSAGE},
++ #else
++ {"EXTRA_DATA_IN_MESSAGE", 20, 153},
++ #endif
++ #ifdef SSL_R_EXT_LENGTH_MISMATCH
++ {"EXT_LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_EXT_LENGTH_MISMATCH},
++ #else
++ {"EXT_LENGTH_MISMATCH", 20, 163},
++ #endif
++ #ifdef SSL_R_FAILED_TO_GET_PARAMETER
++ {"FAILED_TO_GET_PARAMETER", ERR_LIB_SSL, SSL_R_FAILED_TO_GET_PARAMETER},
++ #else
++ {"FAILED_TO_GET_PARAMETER", 20, 316},
++ #endif
++ #ifdef SSL_R_FAILED_TO_INIT_ASYNC
++ {"FAILED_TO_INIT_ASYNC", ERR_LIB_SSL, SSL_R_FAILED_TO_INIT_ASYNC},
++ #else
++ {"FAILED_TO_INIT_ASYNC", 20, 405},
++ #endif
++ #ifdef SSL_R_FEATURE_NEGOTIATION_NOT_COMPLETE
++ {"FEATURE_NEGOTIATION_NOT_COMPLETE", ERR_LIB_SSL, SSL_R_FEATURE_NEGOTIATION_NOT_COMPLETE},
++ #else
++ {"FEATURE_NEGOTIATION_NOT_COMPLETE", 20, 417},
++ #endif
++ #ifdef SSL_R_FEATURE_NOT_RENEGOTIABLE
++ {"FEATURE_NOT_RENEGOTIABLE", ERR_LIB_SSL, SSL_R_FEATURE_NOT_RENEGOTIABLE},
++ #else
++ {"FEATURE_NOT_RENEGOTIABLE", 20, 413},
++ #endif
++ #ifdef SSL_R_FRAGMENTED_CLIENT_HELLO
++ {"FRAGMENTED_CLIENT_HELLO", ERR_LIB_SSL, SSL_R_FRAGMENTED_CLIENT_HELLO},
++ #else
++ {"FRAGMENTED_CLIENT_HELLO", 20, 401},
++ #endif
++ #ifdef SSL_R_GOT_A_FIN_BEFORE_A_CCS
++ {"GOT_A_FIN_BEFORE_A_CCS", ERR_LIB_SSL, SSL_R_GOT_A_FIN_BEFORE_A_CCS},
++ #else
++ {"GOT_A_FIN_BEFORE_A_CCS", 20, 154},
++ #endif
++ #ifdef SSL_R_HTTPS_PROXY_REQUEST
++ {"HTTPS_PROXY_REQUEST", ERR_LIB_SSL, SSL_R_HTTPS_PROXY_REQUEST},
++ #else
++ {"HTTPS_PROXY_REQUEST", 20, 155},
++ #endif
++ #ifdef SSL_R_HTTP_REQUEST
++ {"HTTP_REQUEST", ERR_LIB_SSL, SSL_R_HTTP_REQUEST},
++ #else
++ {"HTTP_REQUEST", 20, 156},
++ #endif
++ #ifdef SSL_R_ILLEGAL_POINT_COMPRESSION
++ {"ILLEGAL_POINT_COMPRESSION", ERR_LIB_SSL, SSL_R_ILLEGAL_POINT_COMPRESSION},
++ #else
++ {"ILLEGAL_POINT_COMPRESSION", 20, 162},
++ #endif
++ #ifdef SSL_R_ILLEGAL_SUITEB_DIGEST
++ {"ILLEGAL_SUITEB_DIGEST", ERR_LIB_SSL, SSL_R_ILLEGAL_SUITEB_DIGEST},
++ #else
++ {"ILLEGAL_SUITEB_DIGEST", 20, 380},
++ #endif
++ #ifdef SSL_R_INAPPROPRIATE_FALLBACK
++ {"INAPPROPRIATE_FALLBACK", ERR_LIB_SSL, SSL_R_INAPPROPRIATE_FALLBACK},
++ #else
++ {"INAPPROPRIATE_FALLBACK", 20, 373},
++ #endif
++ #ifdef SSL_R_INCONSISTENT_COMPRESSION
++ {"INCONSISTENT_COMPRESSION", ERR_LIB_SSL, SSL_R_INCONSISTENT_COMPRESSION},
++ #else
++ {"INCONSISTENT_COMPRESSION", 20, 340},
++ #endif
++ #ifdef SSL_R_INCONSISTENT_EARLY_DATA_ALPN
++ {"INCONSISTENT_EARLY_DATA_ALPN", ERR_LIB_SSL, SSL_R_INCONSISTENT_EARLY_DATA_ALPN},
++ #else
++ {"INCONSISTENT_EARLY_DATA_ALPN", 20, 222},
++ #endif
++ #ifdef SSL_R_INCONSISTENT_EARLY_DATA_SNI
++ {"INCONSISTENT_EARLY_DATA_SNI", ERR_LIB_SSL, SSL_R_INCONSISTENT_EARLY_DATA_SNI},
++ #else
++ {"INCONSISTENT_EARLY_DATA_SNI", 20, 231},
++ #endif
++ #ifdef SSL_R_INCONSISTENT_EXTMS
++ {"INCONSISTENT_EXTMS", ERR_LIB_SSL, SSL_R_INCONSISTENT_EXTMS},
++ #else
++ {"INCONSISTENT_EXTMS", 20, 104},
++ #endif
++ #ifdef SSL_R_INSUFFICIENT_SECURITY
++ {"INSUFFICIENT_SECURITY", ERR_LIB_SSL, SSL_R_INSUFFICIENT_SECURITY},
++ #else
++ {"INSUFFICIENT_SECURITY", 20, 241},
++ #endif
++ #ifdef SSL_R_INVALID_ALERT
++ {"INVALID_ALERT", ERR_LIB_SSL, SSL_R_INVALID_ALERT},
++ #else
++ {"INVALID_ALERT", 20, 205},
++ #endif
++ #ifdef SSL_R_INVALID_CCS_MESSAGE
++ {"INVALID_CCS_MESSAGE", ERR_LIB_SSL, SSL_R_INVALID_CCS_MESSAGE},
++ #else
++ {"INVALID_CCS_MESSAGE", 20, 260},
++ #endif
++ #ifdef SSL_R_INVALID_CERTIFICATE_OR_ALG
++ {"INVALID_CERTIFICATE_OR_ALG", ERR_LIB_SSL, SSL_R_INVALID_CERTIFICATE_OR_ALG},
++ #else
++ {"INVALID_CERTIFICATE_OR_ALG", 20, 238},
++ #endif
++ #ifdef SSL_R_INVALID_COMMAND
++ {"INVALID_COMMAND", ERR_LIB_SSL, SSL_R_INVALID_COMMAND},
++ #else
++ {"INVALID_COMMAND", 20, 280},
++ #endif
++ #ifdef SSL_R_INVALID_COMPRESSION_ALGORITHM
++ {"INVALID_COMPRESSION_ALGORITHM", ERR_LIB_SSL, SSL_R_INVALID_COMPRESSION_ALGORITHM},
++ #else
++ {"INVALID_COMPRESSION_ALGORITHM", 20, 341},
++ #endif
++ #ifdef SSL_R_INVALID_CONFIG
++ {"INVALID_CONFIG", ERR_LIB_SSL, SSL_R_INVALID_CONFIG},
++ #else
++ {"INVALID_CONFIG", 20, 283},
++ #endif
++ #ifdef SSL_R_INVALID_CONFIGURATION_NAME
++ {"INVALID_CONFIGURATION_NAME", ERR_LIB_SSL, SSL_R_INVALID_CONFIGURATION_NAME},
++ #else
++ {"INVALID_CONFIGURATION_NAME", 20, 113},
++ #endif
++ #ifdef SSL_R_INVALID_CONTEXT
++ {"INVALID_CONTEXT", ERR_LIB_SSL, SSL_R_INVALID_CONTEXT},
++ #else
++ {"INVALID_CONTEXT", 20, 282},
++ #endif
++ #ifdef SSL_R_INVALID_CT_VALIDATION_TYPE
++ {"INVALID_CT_VALIDATION_TYPE", ERR_LIB_SSL, SSL_R_INVALID_CT_VALIDATION_TYPE},
++ #else
++ {"INVALID_CT_VALIDATION_TYPE", 20, 212},
++ #endif
++ #ifdef SSL_R_INVALID_KEY_UPDATE_TYPE
++ {"INVALID_KEY_UPDATE_TYPE", ERR_LIB_SSL, SSL_R_INVALID_KEY_UPDATE_TYPE},
++ #else
++ {"INVALID_KEY_UPDATE_TYPE", 20, 120},
++ #endif
++ #ifdef SSL_R_INVALID_MAX_EARLY_DATA
++ {"INVALID_MAX_EARLY_DATA", ERR_LIB_SSL, SSL_R_INVALID_MAX_EARLY_DATA},
++ #else
++ {"INVALID_MAX_EARLY_DATA", 20, 174},
++ #endif
++ #ifdef SSL_R_INVALID_NULL_CMD_NAME
++ {"INVALID_NULL_CMD_NAME", ERR_LIB_SSL, SSL_R_INVALID_NULL_CMD_NAME},
++ #else
++ {"INVALID_NULL_CMD_NAME", 20, 385},
++ #endif
++ #ifdef SSL_R_INVALID_RAW_PUBLIC_KEY
++ {"INVALID_RAW_PUBLIC_KEY", ERR_LIB_SSL, SSL_R_INVALID_RAW_PUBLIC_KEY},
++ #else
++ {"INVALID_RAW_PUBLIC_KEY", 20, 350},
++ #endif
++ #ifdef SSL_R_INVALID_RECORD
++ {"INVALID_RECORD", ERR_LIB_SSL, SSL_R_INVALID_RECORD},
++ #else
++ {"INVALID_RECORD", 20, 317},
++ #endif
++ #ifdef SSL_R_INVALID_SEQUENCE_NUMBER
++ {"INVALID_SEQUENCE_NUMBER", ERR_LIB_SSL, SSL_R_INVALID_SEQUENCE_NUMBER},
++ #else
++ {"INVALID_SEQUENCE_NUMBER", 20, 402},
++ #endif
++ #ifdef SSL_R_INVALID_SERVERINFO_DATA
++ {"INVALID_SERVERINFO_DATA", ERR_LIB_SSL, SSL_R_INVALID_SERVERINFO_DATA},
++ #else
++ {"INVALID_SERVERINFO_DATA", 20, 388},
++ #endif
++ #ifdef SSL_R_INVALID_SESSION_ID
++ {"INVALID_SESSION_ID", ERR_LIB_SSL, SSL_R_INVALID_SESSION_ID},
++ #else
++ {"INVALID_SESSION_ID", 20, 999},
++ #endif
++ #ifdef SSL_R_INVALID_SRP_USERNAME
++ {"INVALID_SRP_USERNAME", ERR_LIB_SSL, SSL_R_INVALID_SRP_USERNAME},
++ #else
++ {"INVALID_SRP_USERNAME", 20, 357},
++ #endif
++ #ifdef SSL_R_INVALID_STATUS_RESPONSE
++ {"INVALID_STATUS_RESPONSE", ERR_LIB_SSL, SSL_R_INVALID_STATUS_RESPONSE},
++ #else
++ {"INVALID_STATUS_RESPONSE", 20, 328},
++ #endif
++ #ifdef SSL_R_INVALID_TICKET_KEYS_LENGTH
++ {"INVALID_TICKET_KEYS_LENGTH", ERR_LIB_SSL, SSL_R_INVALID_TICKET_KEYS_LENGTH},
++ #else
++ {"INVALID_TICKET_KEYS_LENGTH", 20, 325},
++ #endif
++ #ifdef SSL_R_LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED
++ {"LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED", ERR_LIB_SSL, SSL_R_LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED},
++ #else
++ {"LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED", 20, 333},
++ #endif
++ #ifdef SSL_R_LENGTH_MISMATCH
++ {"LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_LENGTH_MISMATCH},
++ #else
++ {"LENGTH_MISMATCH", 20, 159},
++ #endif
++ #ifdef SSL_R_LENGTH_TOO_LONG
++ {"LENGTH_TOO_LONG", ERR_LIB_SSL, SSL_R_LENGTH_TOO_LONG},
++ #else
++ {"LENGTH_TOO_LONG", 20, 404},
++ #endif
++ #ifdef SSL_R_LENGTH_TOO_SHORT
++ {"LENGTH_TOO_SHORT", ERR_LIB_SSL, SSL_R_LENGTH_TOO_SHORT},
++ #else
++ {"LENGTH_TOO_SHORT", 20, 160},
++ #endif
++ #ifdef SSL_R_LIBRARY_BUG
++ {"LIBRARY_BUG", ERR_LIB_SSL, SSL_R_LIBRARY_BUG},
++ #else
++ {"LIBRARY_BUG", 20, 274},
++ #endif
++ #ifdef SSL_R_LIBRARY_HAS_NO_CIPHERS
++ {"LIBRARY_HAS_NO_CIPHERS", ERR_LIB_SSL, SSL_R_LIBRARY_HAS_NO_CIPHERS},
++ #else
++ {"LIBRARY_HAS_NO_CIPHERS", 20, 161},
++ #endif
++ #ifdef SSL_R_LISTENER_USE_ONLY
++ {"LISTENER_USE_ONLY", ERR_LIB_SSL, SSL_R_LISTENER_USE_ONLY},
++ #else
++ {"LISTENER_USE_ONLY", 20, 421},
++ #endif
++ #ifdef SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED
++ {"MAXIMUM_ENCRYPTED_PKTS_REACHED", ERR_LIB_SSL, SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED},
++ #else
++ {"MAXIMUM_ENCRYPTED_PKTS_REACHED", 20, 395},
++ #endif
++ #ifdef SSL_R_MISSING_DSA_SIGNING_CERT
++ {"MISSING_DSA_SIGNING_CERT", ERR_LIB_SSL, SSL_R_MISSING_DSA_SIGNING_CERT},
++ #else
++ {"MISSING_DSA_SIGNING_CERT", 20, 165},
++ #endif
++ #ifdef SSL_R_MISSING_ECDSA_SIGNING_CERT
++ {"MISSING_ECDSA_SIGNING_CERT", ERR_LIB_SSL, SSL_R_MISSING_ECDSA_SIGNING_CERT},
++ #else
++ {"MISSING_ECDSA_SIGNING_CERT", 20, 381},
++ #endif
++ #ifdef SSL_R_MISSING_FATAL
++ {"MISSING_FATAL", ERR_LIB_SSL, SSL_R_MISSING_FATAL},
++ #else
++ {"MISSING_FATAL", 20, 256},
++ #endif
++ #ifdef SSL_R_MISSING_PARAMETERS
++ {"MISSING_PARAMETERS", ERR_LIB_SSL, SSL_R_MISSING_PARAMETERS},
++ #else
++ {"MISSING_PARAMETERS", 20, 290},
++ #endif
++ #ifdef SSL_R_MISSING_PSK_KEX_MODES_EXTENSION
++ {"MISSING_PSK_KEX_MODES_EXTENSION", ERR_LIB_SSL, SSL_R_MISSING_PSK_KEX_MODES_EXTENSION},
++ #else
++ {"MISSING_PSK_KEX_MODES_EXTENSION", 20, 310},
++ #endif
++ #ifdef SSL_R_MISSING_QUIC_TLS_FUNCTIONS
++ {"MISSING_QUIC_TLS_FUNCTIONS", ERR_LIB_SSL, SSL_R_MISSING_QUIC_TLS_FUNCTIONS},
++ #else
++ {"MISSING_QUIC_TLS_FUNCTIONS", 20, 423},
++ #endif
++ #ifdef SSL_R_MISSING_RSA_CERTIFICATE
++ {"MISSING_RSA_CERTIFICATE", ERR_LIB_SSL, SSL_R_MISSING_RSA_CERTIFICATE},
++ #else
++ {"MISSING_RSA_CERTIFICATE", 20, 168},
++ #endif
++ #ifdef SSL_R_MISSING_RSA_ENCRYPTING_CERT
++ {"MISSING_RSA_ENCRYPTING_CERT", ERR_LIB_SSL, SSL_R_MISSING_RSA_ENCRYPTING_CERT},
++ #else
++ {"MISSING_RSA_ENCRYPTING_CERT", 20, 169},
++ #endif
++ #ifdef SSL_R_MISSING_RSA_SIGNING_CERT
++ {"MISSING_RSA_SIGNING_CERT", ERR_LIB_SSL, SSL_R_MISSING_RSA_SIGNING_CERT},
++ #else
++ {"MISSING_RSA_SIGNING_CERT", 20, 170},
++ #endif
++ #ifdef SSL_R_MISSING_SIGALGS_EXTENSION
++ {"MISSING_SIGALGS_EXTENSION", ERR_LIB_SSL, SSL_R_MISSING_SIGALGS_EXTENSION},
++ #else
++ {"MISSING_SIGALGS_EXTENSION", 20, 112},
++ #endif
++ #ifdef SSL_R_MISSING_SIGNING_CERT
++ {"MISSING_SIGNING_CERT", ERR_LIB_SSL, SSL_R_MISSING_SIGNING_CERT},
++ #else
++ {"MISSING_SIGNING_CERT", 20, 221},
++ #endif
++ #ifdef SSL_R_MISSING_SRP_PARAM
++ {"MISSING_SRP_PARAM", ERR_LIB_SSL, SSL_R_MISSING_SRP_PARAM},
++ #else
++ {"MISSING_SRP_PARAM", 20, 358},
++ #endif
++ #ifdef SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION
++ {"MISSING_SUPPORTED_GROUPS_EXTENSION", ERR_LIB_SSL, SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION},
++ #else
++ {"MISSING_SUPPORTED_GROUPS_EXTENSION", 20, 209},
++ #endif
++ #ifdef SSL_R_MISSING_SUPPORTED_VERSIONS_EXTENSION
++ {"MISSING_SUPPORTED_VERSIONS_EXTENSION", ERR_LIB_SSL, SSL_R_MISSING_SUPPORTED_VERSIONS_EXTENSION},
++ #else
++ {"MISSING_SUPPORTED_VERSIONS_EXTENSION", 20, 420},
++ #endif
++ #ifdef SSL_R_MISSING_TMP_DH_KEY
++ {"MISSING_TMP_DH_KEY", ERR_LIB_SSL, SSL_R_MISSING_TMP_DH_KEY},
++ #else
++ {"MISSING_TMP_DH_KEY", 20, 171},
++ #endif
++ #ifdef SSL_R_MISSING_TMP_ECDH_KEY
++ {"MISSING_TMP_ECDH_KEY", ERR_LIB_SSL, SSL_R_MISSING_TMP_ECDH_KEY},
++ #else
++ {"MISSING_TMP_ECDH_KEY", 20, 311},
++ #endif
++ #ifdef SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA
++ {"MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA", ERR_LIB_SSL, SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA},
++ #else
++ {"MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA", 20, 293},
++ #endif
++ #ifdef SSL_R_NOT_ON_RECORD_BOUNDARY
++ {"NOT_ON_RECORD_BOUNDARY", ERR_LIB_SSL, SSL_R_NOT_ON_RECORD_BOUNDARY},
++ #else
++ {"NOT_ON_RECORD_BOUNDARY", 20, 182},
++ #endif
++ #ifdef SSL_R_NOT_REPLACING_CERTIFICATE
++ {"NOT_REPLACING_CERTIFICATE", ERR_LIB_SSL, SSL_R_NOT_REPLACING_CERTIFICATE},
++ #else
++ {"NOT_REPLACING_CERTIFICATE", 20, 289},
++ #endif
++ #ifdef SSL_R_NOT_SERVER
++ {"NOT_SERVER", ERR_LIB_SSL, SSL_R_NOT_SERVER},
++ #else
++ {"NOT_SERVER", 20, 284},
++ #endif
++ #ifdef SSL_R_NO_APPLICATION_PROTOCOL
++ {"NO_APPLICATION_PROTOCOL", ERR_LIB_SSL, SSL_R_NO_APPLICATION_PROTOCOL},
++ #else
++ {"NO_APPLICATION_PROTOCOL", 20, 235},
++ #endif
++ #ifdef SSL_R_NO_CERTIFICATES_RETURNED
++ {"NO_CERTIFICATES_RETURNED", ERR_LIB_SSL, SSL_R_NO_CERTIFICATES_RETURNED},
++ #else
++ {"NO_CERTIFICATES_RETURNED", 20, 176},
++ #endif
++ #ifdef SSL_R_NO_CERTIFICATE_ASSIGNED
++ {"NO_CERTIFICATE_ASSIGNED", ERR_LIB_SSL, SSL_R_NO_CERTIFICATE_ASSIGNED},
++ #else
++ {"NO_CERTIFICATE_ASSIGNED", 20, 177},
++ #endif
++ #ifdef SSL_R_NO_CERTIFICATE_SET
++ {"NO_CERTIFICATE_SET", ERR_LIB_SSL, SSL_R_NO_CERTIFICATE_SET},
++ #else
++ {"NO_CERTIFICATE_SET", 20, 179},
++ #endif
++ #ifdef SSL_R_NO_CHANGE_FOLLOWING_HRR
++ {"NO_CHANGE_FOLLOWING_HRR", ERR_LIB_SSL, SSL_R_NO_CHANGE_FOLLOWING_HRR},
++ #else
++ {"NO_CHANGE_FOLLOWING_HRR", 20, 214},
++ #endif
++ #ifdef SSL_R_NO_CIPHERS_AVAILABLE
++ {"NO_CIPHERS_AVAILABLE", ERR_LIB_SSL, SSL_R_NO_CIPHERS_AVAILABLE},
++ #else
++ {"NO_CIPHERS_AVAILABLE", 20, 181},
++ #endif
++ #ifdef SSL_R_NO_CIPHERS_SPECIFIED
++ {"NO_CIPHERS_SPECIFIED", ERR_LIB_SSL, SSL_R_NO_CIPHERS_SPECIFIED},
++ #else
++ {"NO_CIPHERS_SPECIFIED", 20, 183},
++ #endif
++ #ifdef SSL_R_NO_CIPHER_MATCH
++ {"NO_CIPHER_MATCH", ERR_LIB_SSL, SSL_R_NO_CIPHER_MATCH},
++ #else
++ {"NO_CIPHER_MATCH", 20, 185},
++ #endif
++ #ifdef SSL_R_NO_CLIENT_CERT_METHOD
++ {"NO_CLIENT_CERT_METHOD", ERR_LIB_SSL, SSL_R_NO_CLIENT_CERT_METHOD},
++ #else
++ {"NO_CLIENT_CERT_METHOD", 20, 331},
++ #endif
++ #ifdef SSL_R_NO_COMPRESSION_SPECIFIED
++ {"NO_COMPRESSION_SPECIFIED", ERR_LIB_SSL, SSL_R_NO_COMPRESSION_SPECIFIED},
++ #else
++ {"NO_COMPRESSION_SPECIFIED", 20, 187},
++ #endif
++ #ifdef SSL_R_NO_COOKIE_CALLBACK_SET
++ {"NO_COOKIE_CALLBACK_SET", ERR_LIB_SSL, SSL_R_NO_COOKIE_CALLBACK_SET},
++ #else
++ {"NO_COOKIE_CALLBACK_SET", 20, 287},
++ #endif
++ #ifdef SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER
++ {"NO_GOST_CERTIFICATE_SENT_BY_PEER", ERR_LIB_SSL, SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER},
++ #else
++ {"NO_GOST_CERTIFICATE_SENT_BY_PEER", 20, 330},
++ #endif
++ #ifdef SSL_R_NO_METHOD_SPECIFIED
++ {"NO_METHOD_SPECIFIED", ERR_LIB_SSL, SSL_R_NO_METHOD_SPECIFIED},
++ #else
++ {"NO_METHOD_SPECIFIED", 20, 188},
++ #endif
++ #ifdef SSL_R_NO_PEM_EXTENSIONS
++ {"NO_PEM_EXTENSIONS", ERR_LIB_SSL, SSL_R_NO_PEM_EXTENSIONS},
++ #else
++ {"NO_PEM_EXTENSIONS", 20, 389},
++ #endif
++ #ifdef SSL_R_NO_PRIVATE_KEY_ASSIGNED
++ {"NO_PRIVATE_KEY_ASSIGNED", ERR_LIB_SSL, SSL_R_NO_PRIVATE_KEY_ASSIGNED},
++ #else
++ {"NO_PRIVATE_KEY_ASSIGNED", 20, 190},
++ #endif
++ #ifdef SSL_R_NO_PROTOCOLS_AVAILABLE
++ {"NO_PROTOCOLS_AVAILABLE", ERR_LIB_SSL, SSL_R_NO_PROTOCOLS_AVAILABLE},
++ #else
++ {"NO_PROTOCOLS_AVAILABLE", 20, 191},
++ #endif
++ #ifdef SSL_R_NO_RENEGOTIATION
++ {"NO_RENEGOTIATION", ERR_LIB_SSL, SSL_R_NO_RENEGOTIATION},
++ #else
++ {"NO_RENEGOTIATION", 20, 339},
++ #endif
++ #ifdef SSL_R_NO_REQUIRED_DIGEST
++ {"NO_REQUIRED_DIGEST", ERR_LIB_SSL, SSL_R_NO_REQUIRED_DIGEST},
++ #else
++ {"NO_REQUIRED_DIGEST", 20, 324},
++ #endif
++ #ifdef SSL_R_NO_SHARED_CIPHER
++ {"NO_SHARED_CIPHER", ERR_LIB_SSL, SSL_R_NO_SHARED_CIPHER},
++ #else
++ {"NO_SHARED_CIPHER", 20, 193},
++ #endif
++ #ifdef SSL_R_NO_SHARED_GROUPS
++ {"NO_SHARED_GROUPS", ERR_LIB_SSL, SSL_R_NO_SHARED_GROUPS},
++ #else
++ {"NO_SHARED_GROUPS", 20, 410},
++ #endif
++ #ifdef SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS
++ {"NO_SHARED_SIGNATURE_ALGORITHMS", ERR_LIB_SSL, SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS},
++ #else
++ {"NO_SHARED_SIGNATURE_ALGORITHMS", 20, 376},
++ #endif
++ #ifdef SSL_R_NO_SRTP_PROFILES
++ {"NO_SRTP_PROFILES", ERR_LIB_SSL, SSL_R_NO_SRTP_PROFILES},
++ #else
++ {"NO_SRTP_PROFILES", 20, 359},
++ #endif
++ #ifdef SSL_R_NO_STREAM
++ {"NO_STREAM", ERR_LIB_SSL, SSL_R_NO_STREAM},
++ #else
++ {"NO_STREAM", 20, 355},
++ #endif
++ #ifdef SSL_R_NO_SUITABLE_DIGEST_ALGORITHM
++ {"NO_SUITABLE_DIGEST_ALGORITHM", ERR_LIB_SSL, SSL_R_NO_SUITABLE_DIGEST_ALGORITHM},
++ #else
++ {"NO_SUITABLE_DIGEST_ALGORITHM", 20, 297},
++ #endif
++ #ifdef SSL_R_NO_SUITABLE_GROUPS
++ {"NO_SUITABLE_GROUPS", ERR_LIB_SSL, SSL_R_NO_SUITABLE_GROUPS},
++ #else
++ {"NO_SUITABLE_GROUPS", 20, 295},
++ #endif
++ #ifdef SSL_R_NO_SUITABLE_KEY_SHARE
++ {"NO_SUITABLE_KEY_SHARE", ERR_LIB_SSL, SSL_R_NO_SUITABLE_KEY_SHARE},
++ #else
++ {"NO_SUITABLE_KEY_SHARE", 20, 101},
++ #endif
++ #ifdef SSL_R_NO_SUITABLE_RECORD_LAYER
++ {"NO_SUITABLE_RECORD_LAYER", ERR_LIB_SSL, SSL_R_NO_SUITABLE_RECORD_LAYER},
++ #else
++ {"NO_SUITABLE_RECORD_LAYER", 20, 322},
++ #endif
++ #ifdef SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM
++ {"NO_SUITABLE_SIGNATURE_ALGORITHM", ERR_LIB_SSL, SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM},
++ #else
++ {"NO_SUITABLE_SIGNATURE_ALGORITHM", 20, 118},
++ #endif
++ #ifdef SSL_R_NO_VALID_SCTS
++ {"NO_VALID_SCTS", ERR_LIB_SSL, SSL_R_NO_VALID_SCTS},
++ #else
++ {"NO_VALID_SCTS", 20, 216},
++ #endif
++ #ifdef SSL_R_NO_VERIFY_COOKIE_CALLBACK
++ {"NO_VERIFY_COOKIE_CALLBACK", ERR_LIB_SSL, SSL_R_NO_VERIFY_COOKIE_CALLBACK},
++ #else
++ {"NO_VERIFY_COOKIE_CALLBACK", 20, 403},
++ #endif
++ #ifdef SSL_R_NULL_SSL_CTX
++ {"NULL_SSL_CTX", ERR_LIB_SSL, SSL_R_NULL_SSL_CTX},
++ #else
++ {"NULL_SSL_CTX", 20, 195},
++ #endif
++ #ifdef SSL_R_NULL_SSL_METHOD_PASSED
++ {"NULL_SSL_METHOD_PASSED", ERR_LIB_SSL, SSL_R_NULL_SSL_METHOD_PASSED},
++ #else
++ {"NULL_SSL_METHOD_PASSED", 20, 196},
++ #endif
++ #ifdef SSL_R_OCSP_CALLBACK_FAILURE
++ {"OCSP_CALLBACK_FAILURE", ERR_LIB_SSL, SSL_R_OCSP_CALLBACK_FAILURE},
++ #else
++ {"OCSP_CALLBACK_FAILURE", 20, 305},
++ #endif
++ #ifdef SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED
++ {"OLD_SESSION_CIPHER_NOT_RETURNED", ERR_LIB_SSL, SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED},
++ #else
++ {"OLD_SESSION_CIPHER_NOT_RETURNED", 20, 197},
++ #endif
++ #ifdef SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED
++ {"OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED", ERR_LIB_SSL, SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED},
++ #else
++ {"OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED", 20, 344},
++ #endif
++ #ifdef SSL_R_OVERFLOW_ERROR
++ {"OVERFLOW_ERROR", ERR_LIB_SSL, SSL_R_OVERFLOW_ERROR},
++ #else
++ {"OVERFLOW_ERROR", 20, 237},
++ #endif
++ #ifdef SSL_R_PACKET_LENGTH_TOO_LONG
++ {"PACKET_LENGTH_TOO_LONG", ERR_LIB_SSL, SSL_R_PACKET_LENGTH_TOO_LONG},
++ #else
++ {"PACKET_LENGTH_TOO_LONG", 20, 198},
++ #endif
++ #ifdef SSL_R_PARSE_TLSEXT
++ {"PARSE_TLSEXT", ERR_LIB_SSL, SSL_R_PARSE_TLSEXT},
++ #else
++ {"PARSE_TLSEXT", 20, 227},
++ #endif
++ #ifdef SSL_R_PATH_TOO_LONG
++ {"PATH_TOO_LONG", ERR_LIB_SSL, SSL_R_PATH_TOO_LONG},
++ #else
++ {"PATH_TOO_LONG", 20, 270},
++ #endif
++ #ifdef SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE
++ {"PEER_DID_NOT_RETURN_A_CERTIFICATE", ERR_LIB_SSL, SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE},
++ #else
++ {"PEER_DID_NOT_RETURN_A_CERTIFICATE", 20, 199},
++ #endif
++ #ifdef SSL_R_PEM_NAME_BAD_PREFIX
++ {"PEM_NAME_BAD_PREFIX", ERR_LIB_SSL, SSL_R_PEM_NAME_BAD_PREFIX},
++ #else
++ {"PEM_NAME_BAD_PREFIX", 20, 391},
++ #endif
++ #ifdef SSL_R_PEM_NAME_TOO_SHORT
++ {"PEM_NAME_TOO_SHORT", ERR_LIB_SSL, SSL_R_PEM_NAME_TOO_SHORT},
++ #else
++ {"PEM_NAME_TOO_SHORT", 20, 392},
++ #endif
++ #ifdef SSL_R_PIPELINE_FAILURE
++ {"PIPELINE_FAILURE", ERR_LIB_SSL, SSL_R_PIPELINE_FAILURE},
++ #else
++ {"PIPELINE_FAILURE", 20, 406},
++ #endif
++ #ifdef SSL_R_POLL_REQUEST_NOT_SUPPORTED
++ {"POLL_REQUEST_NOT_SUPPORTED", ERR_LIB_SSL, SSL_R_POLL_REQUEST_NOT_SUPPORTED},
++ #else
++ {"POLL_REQUEST_NOT_SUPPORTED", 20, 418},
++ #endif
++ #ifdef SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR
++ {"POST_HANDSHAKE_AUTH_ENCODING_ERR", ERR_LIB_SSL, SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR},
++ #else
++ {"POST_HANDSHAKE_AUTH_ENCODING_ERR", 20, 278},
++ #endif
++ #ifdef SSL_R_PRIVATE_KEY_MISMATCH
++ {"PRIVATE_KEY_MISMATCH", ERR_LIB_SSL, SSL_R_PRIVATE_KEY_MISMATCH},
++ #else
++ {"PRIVATE_KEY_MISMATCH", 20, 288},
++ #endif
++ #ifdef SSL_R_PROTOCOL_IS_SHUTDOWN
++ {"PROTOCOL_IS_SHUTDOWN", ERR_LIB_SSL, SSL_R_PROTOCOL_IS_SHUTDOWN},
++ #else
++ {"PROTOCOL_IS_SHUTDOWN", 20, 207},
++ #endif
++ #ifdef SSL_R_PSK_IDENTITY_NOT_FOUND
++ {"PSK_IDENTITY_NOT_FOUND", ERR_LIB_SSL, SSL_R_PSK_IDENTITY_NOT_FOUND},
++ #else
++ {"PSK_IDENTITY_NOT_FOUND", 20, 223},
++ #endif
++ #ifdef SSL_R_PSK_NO_CLIENT_CB
++ {"PSK_NO_CLIENT_CB", ERR_LIB_SSL, SSL_R_PSK_NO_CLIENT_CB},
++ #else
++ {"PSK_NO_CLIENT_CB", 20, 224},
++ #endif
++ #ifdef SSL_R_PSK_NO_SERVER_CB
++ {"PSK_NO_SERVER_CB", ERR_LIB_SSL, SSL_R_PSK_NO_SERVER_CB},
++ #else
++ {"PSK_NO_SERVER_CB", 20, 225},
++ #endif
++ #ifdef SSL_R_QUIC_HANDSHAKE_LAYER_ERROR
++ {"QUIC_HANDSHAKE_LAYER_ERROR", ERR_LIB_SSL, SSL_R_QUIC_HANDSHAKE_LAYER_ERROR},
++ #else
++ {"QUIC_HANDSHAKE_LAYER_ERROR", 20, 393},
++ #endif
++ #ifdef SSL_R_QUIC_NETWORK_ERROR
++ {"QUIC_NETWORK_ERROR", ERR_LIB_SSL, SSL_R_QUIC_NETWORK_ERROR},
++ #else
++ {"QUIC_NETWORK_ERROR", 20, 387},
++ #endif
++ #ifdef SSL_R_QUIC_PROTOCOL_ERROR
++ {"QUIC_PROTOCOL_ERROR", ERR_LIB_SSL, SSL_R_QUIC_PROTOCOL_ERROR},
++ #else
++ {"QUIC_PROTOCOL_ERROR", 20, 382},
++ #endif
++ #ifdef SSL_R_READ_BIO_NOT_SET
++ {"READ_BIO_NOT_SET", ERR_LIB_SSL, SSL_R_READ_BIO_NOT_SET},
++ #else
++ {"READ_BIO_NOT_SET", 20, 211},
++ #endif
++ #ifdef SSL_R_READ_TIMEOUT_EXPIRED
++ {"READ_TIMEOUT_EXPIRED", ERR_LIB_SSL, SSL_R_READ_TIMEOUT_EXPIRED},
++ #else
++ {"READ_TIMEOUT_EXPIRED", 20, 312},
++ #endif
++ #ifdef SSL_R_RECORDS_NOT_RELEASED
++ {"RECORDS_NOT_RELEASED", ERR_LIB_SSL, SSL_R_RECORDS_NOT_RELEASED},
++ #else
++ {"RECORDS_NOT_RELEASED", 20, 321},
++ #endif
++ #ifdef SSL_R_RECORD_LAYER_FAILURE
++ {"RECORD_LAYER_FAILURE", ERR_LIB_SSL, SSL_R_RECORD_LAYER_FAILURE},
++ #else
++ {"RECORD_LAYER_FAILURE", 20, 313},
++ #endif
++ #ifdef SSL_R_RECORD_LENGTH_MISMATCH
++ {"RECORD_LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_RECORD_LENGTH_MISMATCH},
++ #else
++ {"RECORD_LENGTH_MISMATCH", 20, 213},
++ #endif
++ #ifdef SSL_R_RECORD_TOO_SMALL
++ {"RECORD_TOO_SMALL", ERR_LIB_SSL, SSL_R_RECORD_TOO_SMALL},
++ #else
++ {"RECORD_TOO_SMALL", 20, 298},
++ #endif
++ #ifdef SSL_R_REMOTE_PEER_ADDRESS_NOT_SET
++ {"REMOTE_PEER_ADDRESS_NOT_SET", ERR_LIB_SSL, SSL_R_REMOTE_PEER_ADDRESS_NOT_SET},
++ #else
++ {"REMOTE_PEER_ADDRESS_NOT_SET", 20, 346},
++ #endif
++ #ifdef SSL_R_RENEGOTIATE_EXT_TOO_LONG
++ {"RENEGOTIATE_EXT_TOO_LONG", ERR_LIB_SSL, SSL_R_RENEGOTIATE_EXT_TOO_LONG},
++ #else
++ {"RENEGOTIATE_EXT_TOO_LONG", 20, 335},
++ #endif
++ #ifdef SSL_R_RENEGOTIATION_ENCODING_ERR
++ {"RENEGOTIATION_ENCODING_ERR", ERR_LIB_SSL, SSL_R_RENEGOTIATION_ENCODING_ERR},
++ #else
++ {"RENEGOTIATION_ENCODING_ERR", 20, 336},
++ #endif
++ #ifdef SSL_R_RENEGOTIATION_MISMATCH
++ {"RENEGOTIATION_MISMATCH", ERR_LIB_SSL, SSL_R_RENEGOTIATION_MISMATCH},
++ #else
++ {"RENEGOTIATION_MISMATCH", 20, 337},
++ #endif
++ #ifdef SSL_R_REQUEST_PENDING
++ {"REQUEST_PENDING", ERR_LIB_SSL, SSL_R_REQUEST_PENDING},
++ #else
++ {"REQUEST_PENDING", 20, 285},
++ #endif
++ #ifdef SSL_R_REQUEST_SENT
++ {"REQUEST_SENT", ERR_LIB_SSL, SSL_R_REQUEST_SENT},
++ #else
++ {"REQUEST_SENT", 20, 286},
++ #endif
++ #ifdef SSL_R_REQUIRED_CIPHER_MISSING
++ {"REQUIRED_CIPHER_MISSING", ERR_LIB_SSL, SSL_R_REQUIRED_CIPHER_MISSING},
++ #else
++ {"REQUIRED_CIPHER_MISSING", 20, 215},
++ #endif
++ #ifdef SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING
++ {"REQUIRED_COMPRESSION_ALGORITHM_MISSING", ERR_LIB_SSL, SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING},
++ #else
++ {"REQUIRED_COMPRESSION_ALGORITHM_MISSING", 20, 342},
++ #endif
++ #ifdef SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING
++ {"SCSV_RECEIVED_WHEN_RENEGOTIATING", ERR_LIB_SSL, SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING},
++ #else
++ {"SCSV_RECEIVED_WHEN_RENEGOTIATING", 20, 345},
++ #endif
++ #ifdef SSL_R_SCT_VERIFICATION_FAILED
++ {"SCT_VERIFICATION_FAILED", ERR_LIB_SSL, SSL_R_SCT_VERIFICATION_FAILED},
++ #else
++ {"SCT_VERIFICATION_FAILED", 20, 208},
++ #endif
++ #ifdef SSL_R_SEQUENCE_CTR_WRAPPED
++ {"SEQUENCE_CTR_WRAPPED", ERR_LIB_SSL, SSL_R_SEQUENCE_CTR_WRAPPED},
++ #else
++ {"SEQUENCE_CTR_WRAPPED", 20, 327},
++ #endif
++ #ifdef SSL_R_SERVERHELLO_TLSEXT
++ {"SERVERHELLO_TLSEXT", ERR_LIB_SSL, SSL_R_SERVERHELLO_TLSEXT},
++ #else
++ {"SERVERHELLO_TLSEXT", 20, 275},
++ #endif
++ #ifdef SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED
++ {"SESSION_ID_CONTEXT_UNINITIALIZED", ERR_LIB_SSL, SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED},
++ #else
++ {"SESSION_ID_CONTEXT_UNINITIALIZED", 20, 277},
++ #endif
++ #ifdef SSL_R_SHUTDOWN_WHILE_IN_INIT
++ {"SHUTDOWN_WHILE_IN_INIT", ERR_LIB_SSL, SSL_R_SHUTDOWN_WHILE_IN_INIT},
++ #else
++ {"SHUTDOWN_WHILE_IN_INIT", 20, 407},
++ #endif
++ #ifdef SSL_R_SIGNATURE_ALGORITHMS_ERROR
++ {"SIGNATURE_ALGORITHMS_ERROR", ERR_LIB_SSL, SSL_R_SIGNATURE_ALGORITHMS_ERROR},
++ #else
++ {"SIGNATURE_ALGORITHMS_ERROR", 20, 360},
++ #endif
++ #ifdef SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE
++ {"SIGNATURE_FOR_NON_SIGNING_CERTIFICATE", ERR_LIB_SSL, SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE},
++ #else
++ {"SIGNATURE_FOR_NON_SIGNING_CERTIFICATE", 20, 220},
++ #endif
++ #ifdef SSL_R_SRP_A_CALC
++ {"SRP_A_CALC", ERR_LIB_SSL, SSL_R_SRP_A_CALC},
++ #else
++ {"SRP_A_CALC", 20, 361},
++ #endif
++ #ifdef SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES
++ {"SRTP_COULD_NOT_ALLOCATE_PROFILES", ERR_LIB_SSL, SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES},
++ #else
++ {"SRTP_COULD_NOT_ALLOCATE_PROFILES", 20, 362},
++ #endif
++ #ifdef SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG
++ {"SRTP_PROTECTION_PROFILE_LIST_TOO_LONG", ERR_LIB_SSL, SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG},
++ #else
++ {"SRTP_PROTECTION_PROFILE_LIST_TOO_LONG", 20, 363},
++ #endif
++ #ifdef SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE
++ {"SRTP_UNKNOWN_PROTECTION_PROFILE", ERR_LIB_SSL, SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE},
++ #else
++ {"SRTP_UNKNOWN_PROTECTION_PROFILE", 20, 364},
++ #endif
++ #ifdef SSL_R_SSL_COMMAND_SECTION_EMPTY
++ {"SSL_COMMAND_SECTION_EMPTY", ERR_LIB_SSL, SSL_R_SSL_COMMAND_SECTION_EMPTY},
++ #else
++ {"SSL_COMMAND_SECTION_EMPTY", 20, 117},
++ #endif
++ #ifdef SSL_R_SSL_COMMAND_SECTION_NOT_FOUND
++ {"SSL_COMMAND_SECTION_NOT_FOUND", ERR_LIB_SSL, SSL_R_SSL_COMMAND_SECTION_NOT_FOUND},
++ #else
++ {"SSL_COMMAND_SECTION_NOT_FOUND", 20, 125},
++ #endif
++ #ifdef SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION
++ {"SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION", ERR_LIB_SSL, SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION},
++ #else
++ {"SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION", 20, 228},
++ #endif
++ #ifdef SSL_R_SSL_HANDSHAKE_FAILURE
++ {"SSL_HANDSHAKE_FAILURE", ERR_LIB_SSL, SSL_R_SSL_HANDSHAKE_FAILURE},
++ #else
++ {"SSL_HANDSHAKE_FAILURE", 20, 229},
++ #endif
++ #ifdef SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS
++ {"SSL_LIBRARY_HAS_NO_CIPHERS", ERR_LIB_SSL, SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS},
++ #else
++ {"SSL_LIBRARY_HAS_NO_CIPHERS", 20, 230},
++ #endif
++ #ifdef SSL_R_SSL_NEGATIVE_LENGTH
++ {"SSL_NEGATIVE_LENGTH", ERR_LIB_SSL, SSL_R_SSL_NEGATIVE_LENGTH},
++ #else
++ {"SSL_NEGATIVE_LENGTH", 20, 372},
++ #endif
++ #ifdef SSL_R_SSL_SECTION_EMPTY
++ {"SSL_SECTION_EMPTY", ERR_LIB_SSL, SSL_R_SSL_SECTION_EMPTY},
++ #else
++ {"SSL_SECTION_EMPTY", 20, 126},
++ #endif
++ #ifdef SSL_R_SSL_SECTION_NOT_FOUND
++ {"SSL_SECTION_NOT_FOUND", ERR_LIB_SSL, SSL_R_SSL_SECTION_NOT_FOUND},
++ #else
++ {"SSL_SECTION_NOT_FOUND", 20, 136},
++ #endif
++ #ifdef SSL_R_SSL_SESSION_ID_CALLBACK_FAILED
++ {"SSL_SESSION_ID_CALLBACK_FAILED", ERR_LIB_SSL, SSL_R_SSL_SESSION_ID_CALLBACK_FAILED},
++ #else
++ {"SSL_SESSION_ID_CALLBACK_FAILED", 20, 301},
++ #endif
++ #ifdef SSL_R_SSL_SESSION_ID_CONFLICT
++ {"SSL_SESSION_ID_CONFLICT", ERR_LIB_SSL, SSL_R_SSL_SESSION_ID_CONFLICT},
++ #else
++ {"SSL_SESSION_ID_CONFLICT", 20, 302},
++ #endif
++ #ifdef SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG
++ {"SSL_SESSION_ID_CONTEXT_TOO_LONG", ERR_LIB_SSL, SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG},
++ #else
++ {"SSL_SESSION_ID_CONTEXT_TOO_LONG", 20, 273},
++ #endif
++ #ifdef SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH
++ {"SSL_SESSION_ID_HAS_BAD_LENGTH", ERR_LIB_SSL, SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH},
++ #else
++ {"SSL_SESSION_ID_HAS_BAD_LENGTH", 20, 303},
++ #endif
++ #ifdef SSL_R_SSL_SESSION_ID_TOO_LONG
++ {"SSL_SESSION_ID_TOO_LONG", ERR_LIB_SSL, SSL_R_SSL_SESSION_ID_TOO_LONG},
++ #else
++ {"SSL_SESSION_ID_TOO_LONG", 20, 408},
++ #endif
++ #ifdef SSL_R_SSL_SESSION_VERSION_MISMATCH
++ {"SSL_SESSION_VERSION_MISMATCH", ERR_LIB_SSL, SSL_R_SSL_SESSION_VERSION_MISMATCH},
++ #else
++ {"SSL_SESSION_VERSION_MISMATCH", 20, 210},
++ #endif
++ #ifdef SSL_R_STILL_IN_INIT
++ {"STILL_IN_INIT", ERR_LIB_SSL, SSL_R_STILL_IN_INIT},
++ #else
++ {"STILL_IN_INIT", 20, 121},
++ #endif
++ #ifdef SSL_R_STREAM_COUNT_LIMITED
++ {"STREAM_COUNT_LIMITED", ERR_LIB_SSL, SSL_R_STREAM_COUNT_LIMITED},
++ #else
++ {"STREAM_COUNT_LIMITED", 20, 411},
++ #endif
++ #ifdef SSL_R_STREAM_FINISHED
++ {"STREAM_FINISHED", ERR_LIB_SSL, SSL_R_STREAM_FINISHED},
++ #else
++ {"STREAM_FINISHED", 20, 365},
++ #endif
++ #ifdef SSL_R_STREAM_RECV_ONLY
++ {"STREAM_RECV_ONLY", ERR_LIB_SSL, SSL_R_STREAM_RECV_ONLY},
++ #else
++ {"STREAM_RECV_ONLY", 20, 366},
++ #endif
++ #ifdef SSL_R_STREAM_RESET
++ {"STREAM_RESET", ERR_LIB_SSL, SSL_R_STREAM_RESET},
++ #else
++ {"STREAM_RESET", 20, 375},
++ #endif
++ #ifdef SSL_R_STREAM_SEND_ONLY
++ {"STREAM_SEND_ONLY", ERR_LIB_SSL, SSL_R_STREAM_SEND_ONLY},
++ #else
++ {"STREAM_SEND_ONLY", 20, 379},
++ #endif
++ #ifdef SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED
++ {"TLSV13_ALERT_CERTIFICATE_REQUIRED", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED},
++ #else
++ {"TLSV13_ALERT_CERTIFICATE_REQUIRED", 20, 1116},
++ #endif
++ #ifdef SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED
++ {"TLSV13_ALERT_CERTIFICATE_REQUIRED", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED},
++ #else
++ {"TLSV13_ALERT_CERTIFICATE_REQUIRED", 20, 1116},
++ #endif
++ #ifdef SSL_R_TLSV13_ALERT_MISSING_EXTENSION
++ {"TLSV13_ALERT_MISSING_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_MISSING_EXTENSION},
++ #else
++ {"TLSV13_ALERT_MISSING_EXTENSION", 20, 1109},
++ #endif
++ #ifdef SSL_R_TLSV13_ALERT_MISSING_EXTENSION
++ {"TLSV13_ALERT_MISSING_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_MISSING_EXTENSION},
++ #else
++ {"TLSV13_ALERT_MISSING_EXTENSION", 20, 1109},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_ACCESS_DENIED
++ {"TLSV1_ALERT_ACCESS_DENIED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_ACCESS_DENIED},
++ #else
++ {"TLSV1_ALERT_ACCESS_DENIED", 20, 1049},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_ACCESS_DENIED
++ {"TLSV1_ALERT_ACCESS_DENIED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_ACCESS_DENIED},
++ #else
++ {"TLSV1_ALERT_ACCESS_DENIED", 20, 1049},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_DECODE_ERROR
++ {"TLSV1_ALERT_DECODE_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECODE_ERROR},
++ #else
++ {"TLSV1_ALERT_DECODE_ERROR", 20, 1050},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_DECODE_ERROR
++ {"TLSV1_ALERT_DECODE_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECODE_ERROR},
++ #else
++ {"TLSV1_ALERT_DECODE_ERROR", 20, 1050},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_DECRYPTION_FAILED
++ {"TLSV1_ALERT_DECRYPTION_FAILED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPTION_FAILED},
++ #else
++ {"TLSV1_ALERT_DECRYPTION_FAILED", 20, 1021},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_DECRYPTION_FAILED
++ {"TLSV1_ALERT_DECRYPTION_FAILED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPTION_FAILED},
++ #else
++ {"TLSV1_ALERT_DECRYPTION_FAILED", 20, 1021},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_DECRYPT_ERROR
++ {"TLSV1_ALERT_DECRYPT_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPT_ERROR},
++ #else
++ {"TLSV1_ALERT_DECRYPT_ERROR", 20, 1051},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_DECRYPT_ERROR
++ {"TLSV1_ALERT_DECRYPT_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPT_ERROR},
++ #else
++ {"TLSV1_ALERT_DECRYPT_ERROR", 20, 1051},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION
++ {"TLSV1_ALERT_EXPORT_RESTRICTION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION},
++ #else
++ {"TLSV1_ALERT_EXPORT_RESTRICTION", 20, 1060},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION
++ {"TLSV1_ALERT_EXPORT_RESTRICTION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION},
++ #else
++ {"TLSV1_ALERT_EXPORT_RESTRICTION", 20, 1060},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK
++ {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK},
++ #else
++ {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", 20, 1086},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK
++ {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK},
++ #else
++ {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", 20, 1086},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY
++ {"TLSV1_ALERT_INSUFFICIENT_SECURITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY},
++ #else
++ {"TLSV1_ALERT_INSUFFICIENT_SECURITY", 20, 1071},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY
++ {"TLSV1_ALERT_INSUFFICIENT_SECURITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY},
++ #else
++ {"TLSV1_ALERT_INSUFFICIENT_SECURITY", 20, 1071},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_INTERNAL_ERROR
++ {"TLSV1_ALERT_INTERNAL_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INTERNAL_ERROR},
++ #else
++ {"TLSV1_ALERT_INTERNAL_ERROR", 20, 1080},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_INTERNAL_ERROR
++ {"TLSV1_ALERT_INTERNAL_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INTERNAL_ERROR},
++ #else
++ {"TLSV1_ALERT_INTERNAL_ERROR", 20, 1080},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL
++ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL},
++ #else
++ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", 20, 1120},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL
++ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL},
++ #else
++ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", 20, 1120},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_NO_RENEGOTIATION
++ {"TLSV1_ALERT_NO_RENEGOTIATION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_RENEGOTIATION},
++ #else
++ {"TLSV1_ALERT_NO_RENEGOTIATION", 20, 1100},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_NO_RENEGOTIATION
++ {"TLSV1_ALERT_NO_RENEGOTIATION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_RENEGOTIATION},
++ #else
++ {"TLSV1_ALERT_NO_RENEGOTIATION", 20, 1100},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_PROTOCOL_VERSION
++ {"TLSV1_ALERT_PROTOCOL_VERSION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_PROTOCOL_VERSION},
++ #else
++ {"TLSV1_ALERT_PROTOCOL_VERSION", 20, 1070},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_PROTOCOL_VERSION
++ {"TLSV1_ALERT_PROTOCOL_VERSION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_PROTOCOL_VERSION},
++ #else
++ {"TLSV1_ALERT_PROTOCOL_VERSION", 20, 1070},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_RECORD_OVERFLOW
++ {"TLSV1_ALERT_RECORD_OVERFLOW", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_RECORD_OVERFLOW},
++ #else
++ {"TLSV1_ALERT_RECORD_OVERFLOW", 20, 1022},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_RECORD_OVERFLOW
++ {"TLSV1_ALERT_RECORD_OVERFLOW", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_RECORD_OVERFLOW},
++ #else
++ {"TLSV1_ALERT_RECORD_OVERFLOW", 20, 1022},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_CA
++ {"TLSV1_ALERT_UNKNOWN_CA", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_CA},
++ #else
++ {"TLSV1_ALERT_UNKNOWN_CA", 20, 1048},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_CA
++ {"TLSV1_ALERT_UNKNOWN_CA", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_CA},
++ #else
++ {"TLSV1_ALERT_UNKNOWN_CA", 20, 1048},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY
++ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY},
++ #else
++ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", 20, 1115},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY
++ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY},
++ #else
++ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", 20, 1115},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_USER_CANCELLED
++ {"TLSV1_ALERT_USER_CANCELLED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_USER_CANCELLED},
++ #else
++ {"TLSV1_ALERT_USER_CANCELLED", 20, 1090},
++ #endif
++ #ifdef SSL_R_TLSV1_ALERT_USER_CANCELLED
++ {"TLSV1_ALERT_USER_CANCELLED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_USER_CANCELLED},
++ #else
++ {"TLSV1_ALERT_USER_CANCELLED", 20, 1090},
++ #endif
++ #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE
++ {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE},
++ #else
++ {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", 20, 1114},
++ #endif
++ #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE
++ {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE},
++ #else
++ {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", 20, 1114},
++ #endif
++ #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE
++ {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE},
++ #else
++ {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", 20, 1113},
++ #endif
++ #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE
++ {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE},
++ #else
++ {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", 20, 1113},
++ #endif
++ #ifdef SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE
++ {"TLSV1_CERTIFICATE_UNOBTAINABLE", ERR_LIB_SSL, SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE},
++ #else
++ {"TLSV1_CERTIFICATE_UNOBTAINABLE", 20, 1111},
++ #endif
++ #ifdef SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE
++ {"TLSV1_CERTIFICATE_UNOBTAINABLE", ERR_LIB_SSL, SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE},
++ #else
++ {"TLSV1_CERTIFICATE_UNOBTAINABLE", 20, 1111},
++ #endif
++ #ifdef SSL_R_TLSV1_UNRECOGNIZED_NAME
++ {"TLSV1_UNRECOGNIZED_NAME", ERR_LIB_SSL, SSL_R_TLSV1_UNRECOGNIZED_NAME},
++ #else
++ {"TLSV1_UNRECOGNIZED_NAME", 20, 1112},
++ #endif
++ #ifdef SSL_R_TLSV1_UNRECOGNIZED_NAME
++ {"TLSV1_UNRECOGNIZED_NAME", ERR_LIB_SSL, SSL_R_TLSV1_UNRECOGNIZED_NAME},
++ #else
++ {"TLSV1_UNRECOGNIZED_NAME", 20, 1112},
++ #endif
++ #ifdef SSL_R_TLSV1_UNSUPPORTED_EXTENSION
++ {"TLSV1_UNSUPPORTED_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV1_UNSUPPORTED_EXTENSION},
++ #else
++ {"TLSV1_UNSUPPORTED_EXTENSION", 20, 1110},
++ #endif
++ #ifdef SSL_R_TLSV1_UNSUPPORTED_EXTENSION
++ {"TLSV1_UNSUPPORTED_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV1_UNSUPPORTED_EXTENSION},
++ #else
++ {"TLSV1_UNSUPPORTED_EXTENSION", 20, 1110},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_BAD_CERTIFICATE
++ {"TLS_ALERT_BAD_CERTIFICATE", ERR_LIB_SSL, SSL_R_TLS_ALERT_BAD_CERTIFICATE},
++ #else
++ {"TLS_ALERT_BAD_CERTIFICATE", 20, 1042},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_BAD_CERTIFICATE
++ {"TLS_ALERT_BAD_CERTIFICATE", ERR_LIB_SSL, SSL_R_TLS_ALERT_BAD_CERTIFICATE},
++ #else
++ {"TLS_ALERT_BAD_CERTIFICATE", 20, 1042},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_BAD_RECORD_MAC
++ {"TLS_ALERT_BAD_RECORD_MAC", ERR_LIB_SSL, SSL_R_TLS_ALERT_BAD_RECORD_MAC},
++ #else
++ {"TLS_ALERT_BAD_RECORD_MAC", 20, 1020},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_BAD_RECORD_MAC
++ {"TLS_ALERT_BAD_RECORD_MAC", ERR_LIB_SSL, SSL_R_TLS_ALERT_BAD_RECORD_MAC},
++ #else
++ {"TLS_ALERT_BAD_RECORD_MAC", 20, 1020},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_CERTIFICATE_EXPIRED
++ {"TLS_ALERT_CERTIFICATE_EXPIRED", ERR_LIB_SSL, SSL_R_TLS_ALERT_CERTIFICATE_EXPIRED},
++ #else
++ {"TLS_ALERT_CERTIFICATE_EXPIRED", 20, 1045},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_CERTIFICATE_EXPIRED
++ {"TLS_ALERT_CERTIFICATE_EXPIRED", ERR_LIB_SSL, SSL_R_TLS_ALERT_CERTIFICATE_EXPIRED},
++ #else
++ {"TLS_ALERT_CERTIFICATE_EXPIRED", 20, 1045},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_CERTIFICATE_REVOKED
++ {"TLS_ALERT_CERTIFICATE_REVOKED", ERR_LIB_SSL, SSL_R_TLS_ALERT_CERTIFICATE_REVOKED},
++ #else
++ {"TLS_ALERT_CERTIFICATE_REVOKED", 20, 1044},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_CERTIFICATE_REVOKED
++ {"TLS_ALERT_CERTIFICATE_REVOKED", ERR_LIB_SSL, SSL_R_TLS_ALERT_CERTIFICATE_REVOKED},
++ #else
++ {"TLS_ALERT_CERTIFICATE_REVOKED", 20, 1044},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_CERTIFICATE_UNKNOWN
++ {"TLS_ALERT_CERTIFICATE_UNKNOWN", ERR_LIB_SSL, SSL_R_TLS_ALERT_CERTIFICATE_UNKNOWN},
++ #else
++ {"TLS_ALERT_CERTIFICATE_UNKNOWN", 20, 1046},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_CERTIFICATE_UNKNOWN
++ {"TLS_ALERT_CERTIFICATE_UNKNOWN", ERR_LIB_SSL, SSL_R_TLS_ALERT_CERTIFICATE_UNKNOWN},
++ #else
++ {"TLS_ALERT_CERTIFICATE_UNKNOWN", 20, 1046},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_DECOMPRESSION_FAILURE
++ {"TLS_ALERT_DECOMPRESSION_FAILURE", ERR_LIB_SSL, SSL_R_TLS_ALERT_DECOMPRESSION_FAILURE},
++ #else
++ {"TLS_ALERT_DECOMPRESSION_FAILURE", 20, 1030},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_DECOMPRESSION_FAILURE
++ {"TLS_ALERT_DECOMPRESSION_FAILURE", ERR_LIB_SSL, SSL_R_TLS_ALERT_DECOMPRESSION_FAILURE},
++ #else
++ {"TLS_ALERT_DECOMPRESSION_FAILURE", 20, 1030},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_HANDSHAKE_FAILURE
++ {"TLS_ALERT_HANDSHAKE_FAILURE", ERR_LIB_SSL, SSL_R_TLS_ALERT_HANDSHAKE_FAILURE},
++ #else
++ {"TLS_ALERT_HANDSHAKE_FAILURE", 20, 1040},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_HANDSHAKE_FAILURE
++ {"TLS_ALERT_HANDSHAKE_FAILURE", ERR_LIB_SSL, SSL_R_TLS_ALERT_HANDSHAKE_FAILURE},
++ #else
++ {"TLS_ALERT_HANDSHAKE_FAILURE", 20, 1040},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_ILLEGAL_PARAMETER
++ {"TLS_ALERT_ILLEGAL_PARAMETER", ERR_LIB_SSL, SSL_R_TLS_ALERT_ILLEGAL_PARAMETER},
++ #else
++ {"TLS_ALERT_ILLEGAL_PARAMETER", 20, 1047},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_ILLEGAL_PARAMETER
++ {"TLS_ALERT_ILLEGAL_PARAMETER", ERR_LIB_SSL, SSL_R_TLS_ALERT_ILLEGAL_PARAMETER},
++ #else
++ {"TLS_ALERT_ILLEGAL_PARAMETER", 20, 1047},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_NO_CERTIFICATE
++ {"TLS_ALERT_NO_CERTIFICATE", ERR_LIB_SSL, SSL_R_TLS_ALERT_NO_CERTIFICATE},
++ #else
++ {"TLS_ALERT_NO_CERTIFICATE", 20, 1041},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_NO_CERTIFICATE
++ {"TLS_ALERT_NO_CERTIFICATE", ERR_LIB_SSL, SSL_R_TLS_ALERT_NO_CERTIFICATE},
++ #else
++ {"TLS_ALERT_NO_CERTIFICATE", 20, 1041},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_UNEXPECTED_MESSAGE
++ {"TLS_ALERT_UNEXPECTED_MESSAGE", ERR_LIB_SSL, SSL_R_TLS_ALERT_UNEXPECTED_MESSAGE},
++ #else
++ {"TLS_ALERT_UNEXPECTED_MESSAGE", 20, 1010},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_UNEXPECTED_MESSAGE
++ {"TLS_ALERT_UNEXPECTED_MESSAGE", ERR_LIB_SSL, SSL_R_TLS_ALERT_UNEXPECTED_MESSAGE},
++ #else
++ {"TLS_ALERT_UNEXPECTED_MESSAGE", 20, 1010},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_UNSUPPORTED_CERTIFICATE
++ {"TLS_ALERT_UNSUPPORTED_CERTIFICATE", ERR_LIB_SSL, SSL_R_TLS_ALERT_UNSUPPORTED_CERTIFICATE},
++ #else
++ {"TLS_ALERT_UNSUPPORTED_CERTIFICATE", 20, 1043},
++ #endif
++ #ifdef SSL_R_TLS_ALERT_UNSUPPORTED_CERTIFICATE
++ {"TLS_ALERT_UNSUPPORTED_CERTIFICATE", ERR_LIB_SSL, SSL_R_TLS_ALERT_UNSUPPORTED_CERTIFICATE},
++ #else
++ {"TLS_ALERT_UNSUPPORTED_CERTIFICATE", 20, 1043},
++ #endif
++ #ifdef SSL_R_TLS_EXT_INVALID_MAX_FRAGMENT_LENGTH
++ {"TLS_EXT_INVALID_MAX_FRAGMENT_LENGTH", ERR_LIB_SSL, SSL_R_TLS_EXT_INVALID_MAX_FRAGMENT_LENGTH},
++ #else
++ {"TLS_EXT_INVALID_MAX_FRAGMENT_LENGTH", 20, 232},
++ #endif
++ #ifdef SSL_R_TLS_EXT_INVALID_SERVERNAME
++ {"TLS_EXT_INVALID_SERVERNAME", ERR_LIB_SSL, SSL_R_TLS_EXT_INVALID_SERVERNAME},
++ #else
++ {"TLS_EXT_INVALID_SERVERNAME", 20, 319},
++ #endif
++ #ifdef SSL_R_TLS_EXT_INVALID_SERVERNAME_TYPE
++ {"TLS_EXT_INVALID_SERVERNAME_TYPE", ERR_LIB_SSL, SSL_R_TLS_EXT_INVALID_SERVERNAME_TYPE},
++ #else
++ {"TLS_EXT_INVALID_SERVERNAME_TYPE", 20, 320},
++ #endif
++ #ifdef SSL_R_TLS_ILLEGAL_EXPORTER_LABEL
++ {"TLS_ILLEGAL_EXPORTER_LABEL", ERR_LIB_SSL, SSL_R_TLS_ILLEGAL_EXPORTER_LABEL},
++ #else
++ {"TLS_ILLEGAL_EXPORTER_LABEL", 20, 367},
++ #endif
++ #ifdef SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST
++ {"TLS_INVALID_ECPOINTFORMAT_LIST", ERR_LIB_SSL, SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST},
++ #else
++ {"TLS_INVALID_ECPOINTFORMAT_LIST", 20, 157},
++ #endif
++ #ifdef SSL_R_TLS_SESSION_ID_TOO_LONG
++ {"TLS_SESSION_ID_TOO_LONG", ERR_LIB_SSL, SSL_R_TLS_SESSION_ID_TOO_LONG},
++ #else
++ {"TLS_SESSION_ID_TOO_LONG", 20, 300},
++ #endif
++ #ifdef SSL_R_TOO_MANY_KEY_UPDATES
++ {"TOO_MANY_KEY_UPDATES", ERR_LIB_SSL, SSL_R_TOO_MANY_KEY_UPDATES},
++ #else
++ {"TOO_MANY_KEY_UPDATES", 20, 132},
++ #endif
++ #ifdef SSL_R_TOO_MANY_WARN_ALERTS
++ {"TOO_MANY_WARN_ALERTS", ERR_LIB_SSL, SSL_R_TOO_MANY_WARN_ALERTS},
++ #else
++ {"TOO_MANY_WARN_ALERTS", 20, 409},
++ #endif
++ #ifdef SSL_R_TOO_MUCH_EARLY_DATA
++ {"TOO_MUCH_EARLY_DATA", ERR_LIB_SSL, SSL_R_TOO_MUCH_EARLY_DATA},
++ #else
++ {"TOO_MUCH_EARLY_DATA", 20, 164},
++ #endif
++ #ifdef SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS
++ {"UNABLE_TO_FIND_ECDH_PARAMETERS", ERR_LIB_SSL, SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS},
++ #else
++ {"UNABLE_TO_FIND_ECDH_PARAMETERS", 20, 314},
++ #endif
++ #ifdef SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS
++ {"UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS", ERR_LIB_SSL, SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS},
++ #else
++ {"UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS", 20, 239},
++ #endif
++ #ifdef SSL_R_UNEXPECTED_CCS_MESSAGE
++ {"UNEXPECTED_CCS_MESSAGE", ERR_LIB_SSL, SSL_R_UNEXPECTED_CCS_MESSAGE},
++ #else
++ {"UNEXPECTED_CCS_MESSAGE", 20, 262},
++ #endif
++ #ifdef SSL_R_UNEXPECTED_END_OF_EARLY_DATA
++ {"UNEXPECTED_END_OF_EARLY_DATA", ERR_LIB_SSL, SSL_R_UNEXPECTED_END_OF_EARLY_DATA},
++ #else
++ {"UNEXPECTED_END_OF_EARLY_DATA", 20, 178},
++ #endif
++ #ifdef SSL_R_UNEXPECTED_EOF_WHILE_READING
++ {"UNEXPECTED_EOF_WHILE_READING", ERR_LIB_SSL, SSL_R_UNEXPECTED_EOF_WHILE_READING},
++ #else
++ {"UNEXPECTED_EOF_WHILE_READING", 20, 294},
++ #endif
++ #ifdef SSL_R_UNEXPECTED_MESSAGE
++ {"UNEXPECTED_MESSAGE", ERR_LIB_SSL, SSL_R_UNEXPECTED_MESSAGE},
++ #else
++ {"UNEXPECTED_MESSAGE", 20, 244},
++ #endif
++ #ifdef SSL_R_UNEXPECTED_RECORD
++ {"UNEXPECTED_RECORD", ERR_LIB_SSL, SSL_R_UNEXPECTED_RECORD},
++ #else
++ {"UNEXPECTED_RECORD", 20, 245},
++ #endif
++ #ifdef SSL_R_UNINITIALIZED
++ {"UNINITIALIZED", ERR_LIB_SSL, SSL_R_UNINITIALIZED},
++ #else
++ {"UNINITIALIZED", 20, 276},
++ #endif
++ #ifdef SSL_R_UNKNOWN_ALERT_TYPE
++ {"UNKNOWN_ALERT_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_ALERT_TYPE},
++ #else
++ {"UNKNOWN_ALERT_TYPE", 20, 246},
++ #endif
++ #ifdef SSL_R_UNKNOWN_CERTIFICATE_TYPE
++ {"UNKNOWN_CERTIFICATE_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_CERTIFICATE_TYPE},
++ #else
++ {"UNKNOWN_CERTIFICATE_TYPE", 20, 247},
++ #endif
++ #ifdef SSL_R_UNKNOWN_CIPHER_RETURNED
++ {"UNKNOWN_CIPHER_RETURNED", ERR_LIB_SSL, SSL_R_UNKNOWN_CIPHER_RETURNED},
++ #else
++ {"UNKNOWN_CIPHER_RETURNED", 20, 248},
++ #endif
++ #ifdef SSL_R_UNKNOWN_CIPHER_TYPE
++ {"UNKNOWN_CIPHER_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_CIPHER_TYPE},
++ #else
++ {"UNKNOWN_CIPHER_TYPE", 20, 249},
++ #endif
++ #ifdef SSL_R_UNKNOWN_CMD_NAME
++ {"UNKNOWN_CMD_NAME", ERR_LIB_SSL, SSL_R_UNKNOWN_CMD_NAME},
++ #else
++ {"UNKNOWN_CMD_NAME", 20, 386},
++ #endif
++ #ifdef SSL_R_UNKNOWN_COMMAND
++ {"UNKNOWN_COMMAND", ERR_LIB_SSL, SSL_R_UNKNOWN_COMMAND},
++ #else
++ {"UNKNOWN_COMMAND", 20, 139},
++ #endif
++ #ifdef SSL_R_UNKNOWN_DIGEST
++ {"UNKNOWN_DIGEST", ERR_LIB_SSL, SSL_R_UNKNOWN_DIGEST},
++ #else
++ {"UNKNOWN_DIGEST", 20, 368},
++ #endif
++ #ifdef SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE
++ {"UNKNOWN_KEY_EXCHANGE_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE},
++ #else
++ {"UNKNOWN_KEY_EXCHANGE_TYPE", 20, 250},
++ #endif
++ #ifdef SSL_R_UNKNOWN_MANDATORY_PARAMETER
++ {"UNKNOWN_MANDATORY_PARAMETER", ERR_LIB_SSL, SSL_R_UNKNOWN_MANDATORY_PARAMETER},
++ #else
++ {"UNKNOWN_MANDATORY_PARAMETER", 20, 323},
++ #endif
++ #ifdef SSL_R_UNKNOWN_PKEY_TYPE
++ {"UNKNOWN_PKEY_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_PKEY_TYPE},
++ #else
++ {"UNKNOWN_PKEY_TYPE", 20, 251},
++ #endif
++ #ifdef SSL_R_UNKNOWN_PROTOCOL
++ {"UNKNOWN_PROTOCOL", ERR_LIB_SSL, SSL_R_UNKNOWN_PROTOCOL},
++ #else
++ {"UNKNOWN_PROTOCOL", 20, 252},
++ #endif
++ #ifdef SSL_R_UNKNOWN_SSL_VERSION
++ {"UNKNOWN_SSL_VERSION", ERR_LIB_SSL, SSL_R_UNKNOWN_SSL_VERSION},
++ #else
++ {"UNKNOWN_SSL_VERSION", 20, 254},
++ #endif
++ #ifdef SSL_R_UNKNOWN_STATE
++ {"UNKNOWN_STATE", ERR_LIB_SSL, SSL_R_UNKNOWN_STATE},
++ #else
++ {"UNKNOWN_STATE", 20, 255},
++ #endif
++ #ifdef SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED
++ {"UNSAFE_LEGACY_RENEGOTIATION_DISABLED", ERR_LIB_SSL, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED},
++ #else
++ {"UNSAFE_LEGACY_RENEGOTIATION_DISABLED", 20, 338},
++ #endif
++ #ifdef SSL_R_UNSOLICITED_EXTENSION
++ {"UNSOLICITED_EXTENSION", ERR_LIB_SSL, SSL_R_UNSOLICITED_EXTENSION},
++ #else
++ {"UNSOLICITED_EXTENSION", 20, 217},
++ #endif
++ #ifdef SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM
++ {"UNSUPPORTED_COMPRESSION_ALGORITHM", ERR_LIB_SSL, SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM},
++ #else
++ {"UNSUPPORTED_COMPRESSION_ALGORITHM", 20, 257},
++ #endif
++ #ifdef SSL_R_UNSUPPORTED_CONFIG_VALUE
++ {"UNSUPPORTED_CONFIG_VALUE", ERR_LIB_SSL, SSL_R_UNSUPPORTED_CONFIG_VALUE},
++ #else
++ {"UNSUPPORTED_CONFIG_VALUE", 20, 414},
++ #endif
++ #ifdef SSL_R_UNSUPPORTED_CONFIG_VALUE_CLASS
++ {"UNSUPPORTED_CONFIG_VALUE_CLASS", ERR_LIB_SSL, SSL_R_UNSUPPORTED_CONFIG_VALUE_CLASS},
++ #else
++ {"UNSUPPORTED_CONFIG_VALUE_CLASS", 20, 415},
++ #endif
++ #ifdef SSL_R_UNSUPPORTED_CONFIG_VALUE_OP
++ {"UNSUPPORTED_CONFIG_VALUE_OP", ERR_LIB_SSL, SSL_R_UNSUPPORTED_CONFIG_VALUE_OP},
++ #else
++ {"UNSUPPORTED_CONFIG_VALUE_OP", 20, 416},
++ #endif
++ #ifdef SSL_R_UNSUPPORTED_ELLIPTIC_CURVE
++ {"UNSUPPORTED_ELLIPTIC_CURVE", ERR_LIB_SSL, SSL_R_UNSUPPORTED_ELLIPTIC_CURVE},
++ #else
++ {"UNSUPPORTED_ELLIPTIC_CURVE", 20, 315},
++ #endif
++ #ifdef SSL_R_UNSUPPORTED_PROTOCOL
++ {"UNSUPPORTED_PROTOCOL", ERR_LIB_SSL, SSL_R_UNSUPPORTED_PROTOCOL},
++ #else
++ {"UNSUPPORTED_PROTOCOL", 20, 258},
++ #endif
++ #ifdef SSL_R_UNSUPPORTED_SSL_VERSION
++ {"UNSUPPORTED_SSL_VERSION", ERR_LIB_SSL, SSL_R_UNSUPPORTED_SSL_VERSION},
++ #else
++ {"UNSUPPORTED_SSL_VERSION", 20, 259},
++ #endif
++ #ifdef SSL_R_UNSUPPORTED_STATUS_TYPE
++ {"UNSUPPORTED_STATUS_TYPE", ERR_LIB_SSL, SSL_R_UNSUPPORTED_STATUS_TYPE},
++ #else
++ {"UNSUPPORTED_STATUS_TYPE", 20, 329},
++ #endif
++ #ifdef SSL_R_UNSUPPORTED_WRITE_FLAG
++ {"UNSUPPORTED_WRITE_FLAG", ERR_LIB_SSL, SSL_R_UNSUPPORTED_WRITE_FLAG},
++ #else
++ {"UNSUPPORTED_WRITE_FLAG", 20, 412},
++ #endif
++ #ifdef SSL_R_USE_SRTP_NOT_NEGOTIATED
++ {"USE_SRTP_NOT_NEGOTIATED", ERR_LIB_SSL, SSL_R_USE_SRTP_NOT_NEGOTIATED},
++ #else
++ {"USE_SRTP_NOT_NEGOTIATED", 20, 369},
++ #endif
++ #ifdef SSL_R_VERSION_TOO_HIGH
++ {"VERSION_TOO_HIGH", ERR_LIB_SSL, SSL_R_VERSION_TOO_HIGH},
++ #else
++ {"VERSION_TOO_HIGH", 20, 166},
++ #endif
++ #ifdef SSL_R_VERSION_TOO_LOW
++ {"VERSION_TOO_LOW", ERR_LIB_SSL, SSL_R_VERSION_TOO_LOW},
++ #else
++ {"VERSION_TOO_LOW", 20, 396},
++ #endif
++ #ifdef SSL_R_WRONG_CERTIFICATE_TYPE
++ {"WRONG_CERTIFICATE_TYPE", ERR_LIB_SSL, SSL_R_WRONG_CERTIFICATE_TYPE},
++ #else
++ {"WRONG_CERTIFICATE_TYPE", 20, 383},
++ #endif
++ #ifdef SSL_R_WRONG_CIPHER_RETURNED
++ {"WRONG_CIPHER_RETURNED", ERR_LIB_SSL, SSL_R_WRONG_CIPHER_RETURNED},
++ #else
++ {"WRONG_CIPHER_RETURNED", 20, 261},
++ #endif
++ #ifdef SSL_R_WRONG_CURVE
++ {"WRONG_CURVE", ERR_LIB_SSL, SSL_R_WRONG_CURVE},
++ #else
++ {"WRONG_CURVE", 20, 378},
++ #endif
++ #ifdef SSL_R_WRONG_RPK_TYPE
++ {"WRONG_RPK_TYPE", ERR_LIB_SSL, SSL_R_WRONG_RPK_TYPE},
++ #else
++ {"WRONG_RPK_TYPE", 20, 351},
++ #endif
++ #ifdef SSL_R_WRONG_SIGNATURE_LENGTH
++ {"WRONG_SIGNATURE_LENGTH", ERR_LIB_SSL, SSL_R_WRONG_SIGNATURE_LENGTH},
++ #else
++ {"WRONG_SIGNATURE_LENGTH", 20, 264},
++ #endif
++ #ifdef SSL_R_WRONG_SIGNATURE_SIZE
++ {"WRONG_SIGNATURE_SIZE", ERR_LIB_SSL, SSL_R_WRONG_SIGNATURE_SIZE},
++ #else
++ {"WRONG_SIGNATURE_SIZE", 20, 265},
++ #endif
++ #ifdef SSL_R_WRONG_SIGNATURE_TYPE
++ {"WRONG_SIGNATURE_TYPE", ERR_LIB_SSL, SSL_R_WRONG_SIGNATURE_TYPE},
++ #else
++ {"WRONG_SIGNATURE_TYPE", 20, 370},
++ #endif
++ #ifdef SSL_R_WRONG_SSL_VERSION
++ {"WRONG_SSL_VERSION", ERR_LIB_SSL, SSL_R_WRONG_SSL_VERSION},
++ #else
++ {"WRONG_SSL_VERSION", 20, 266},
++ #endif
++ #ifdef SSL_R_WRONG_VERSION_NUMBER
++ {"WRONG_VERSION_NUMBER", ERR_LIB_SSL, SSL_R_WRONG_VERSION_NUMBER},
++ #else
++ {"WRONG_VERSION_NUMBER", 20, 267},
++ #endif
++ #ifdef SSL_R_X509_LIB
++ {"X509_LIB", ERR_LIB_SSL, SSL_R_X509_LIB},
++ #else
++ {"X509_LIB", 20, 268},
++ #endif
++ #ifdef SSL_R_X509_VERIFICATION_SETUP_PROBLEMS
++ {"X509_VERIFICATION_SETUP_PROBLEMS", ERR_LIB_SSL, SSL_R_X509_VERIFICATION_SETUP_PROBLEMS},
++ #else
++ {"X509_VERIFICATION_SETUP_PROBLEMS", 20, 269},
++ #endif
++ #ifdef TS_R_BAD_PKCS7_TYPE
++ {"BAD_PKCS7_TYPE", ERR_LIB_TS, TS_R_BAD_PKCS7_TYPE},
++ #else
++ {"BAD_PKCS7_TYPE", 47, 132},
++ #endif
++ #ifdef TS_R_BAD_TYPE
++ {"BAD_TYPE", ERR_LIB_TS, TS_R_BAD_TYPE},
++ #else
++ {"BAD_TYPE", 47, 133},
++ #endif
++ #ifdef TS_R_CANNOT_LOAD_CERT
++ {"CANNOT_LOAD_CERT", ERR_LIB_TS, TS_R_CANNOT_LOAD_CERT},
++ #else
++ {"CANNOT_LOAD_CERT", 47, 137},
++ #endif
++ #ifdef TS_R_CANNOT_LOAD_KEY
++ {"CANNOT_LOAD_KEY", ERR_LIB_TS, TS_R_CANNOT_LOAD_KEY},
++ #else
++ {"CANNOT_LOAD_KEY", 47, 138},
++ #endif
++ #ifdef TS_R_CERTIFICATE_VERIFY_ERROR
++ {"CERTIFICATE_VERIFY_ERROR", ERR_LIB_TS, TS_R_CERTIFICATE_VERIFY_ERROR},
++ #else
++ {"CERTIFICATE_VERIFY_ERROR", 47, 100},
++ #endif
++ #ifdef TS_R_COULD_NOT_SET_ENGINE
++ {"COULD_NOT_SET_ENGINE", ERR_LIB_TS, TS_R_COULD_NOT_SET_ENGINE},
++ #else
++ {"COULD_NOT_SET_ENGINE", 47, 127},
++ #endif
++ #ifdef TS_R_COULD_NOT_SET_TIME
++ {"COULD_NOT_SET_TIME", ERR_LIB_TS, TS_R_COULD_NOT_SET_TIME},
++ #else
++ {"COULD_NOT_SET_TIME", 47, 115},
++ #endif
++ #ifdef TS_R_DETACHED_CONTENT
++ {"DETACHED_CONTENT", ERR_LIB_TS, TS_R_DETACHED_CONTENT},
++ #else
++ {"DETACHED_CONTENT", 47, 134},
++ #endif
++ #ifdef TS_R_ESS_ADD_SIGNING_CERT_ERROR
++ {"ESS_ADD_SIGNING_CERT_ERROR", ERR_LIB_TS, TS_R_ESS_ADD_SIGNING_CERT_ERROR},
++ #else
++ {"ESS_ADD_SIGNING_CERT_ERROR", 47, 116},
++ #endif
++ #ifdef TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR
++ {"ESS_ADD_SIGNING_CERT_V2_ERROR", ERR_LIB_TS, TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR},
++ #else
++ {"ESS_ADD_SIGNING_CERT_V2_ERROR", 47, 139},
++ #endif
++ #ifdef TS_R_ESS_SIGNING_CERTIFICATE_ERROR
++ {"ESS_SIGNING_CERTIFICATE_ERROR", ERR_LIB_TS, TS_R_ESS_SIGNING_CERTIFICATE_ERROR},
++ #else
++ {"ESS_SIGNING_CERTIFICATE_ERROR", 47, 101},
++ #endif
++ #ifdef TS_R_INVALID_NULL_POINTER
++ {"INVALID_NULL_POINTER", ERR_LIB_TS, TS_R_INVALID_NULL_POINTER},
++ #else
++ {"INVALID_NULL_POINTER", 47, 102},
++ #endif
++ #ifdef TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE
++ {"INVALID_SIGNER_CERTIFICATE_PURPOSE", ERR_LIB_TS, TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE},
++ #else
++ {"INVALID_SIGNER_CERTIFICATE_PURPOSE", 47, 117},
++ #endif
++ #ifdef TS_R_MESSAGE_IMPRINT_MISMATCH
++ {"MESSAGE_IMPRINT_MISMATCH", ERR_LIB_TS, TS_R_MESSAGE_IMPRINT_MISMATCH},
++ #else
++ {"MESSAGE_IMPRINT_MISMATCH", 47, 103},
++ #endif
++ #ifdef TS_R_NONCE_MISMATCH
++ {"NONCE_MISMATCH", ERR_LIB_TS, TS_R_NONCE_MISMATCH},
++ #else
++ {"NONCE_MISMATCH", 47, 104},
++ #endif
++ #ifdef TS_R_NONCE_NOT_RETURNED
++ {"NONCE_NOT_RETURNED", ERR_LIB_TS, TS_R_NONCE_NOT_RETURNED},
++ #else
++ {"NONCE_NOT_RETURNED", 47, 105},
++ #endif
++ #ifdef TS_R_NO_CONTENT
++ {"NO_CONTENT", ERR_LIB_TS, TS_R_NO_CONTENT},
++ #else
++ {"NO_CONTENT", 47, 106},
++ #endif
++ #ifdef TS_R_NO_TIME_STAMP_TOKEN
++ {"NO_TIME_STAMP_TOKEN", ERR_LIB_TS, TS_R_NO_TIME_STAMP_TOKEN},
++ #else
++ {"NO_TIME_STAMP_TOKEN", 47, 107},
++ #endif
++ #ifdef TS_R_PKCS7_ADD_SIGNATURE_ERROR
++ {"PKCS7_ADD_SIGNATURE_ERROR", ERR_LIB_TS, TS_R_PKCS7_ADD_SIGNATURE_ERROR},
++ #else
++ {"PKCS7_ADD_SIGNATURE_ERROR", 47, 118},
++ #endif
++ #ifdef TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR
++ {"PKCS7_ADD_SIGNED_ATTR_ERROR", ERR_LIB_TS, TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR},
++ #else
++ {"PKCS7_ADD_SIGNED_ATTR_ERROR", 47, 119},
++ #endif
++ #ifdef TS_R_PKCS7_TO_TS_TST_INFO_FAILED
++ {"PKCS7_TO_TS_TST_INFO_FAILED", ERR_LIB_TS, TS_R_PKCS7_TO_TS_TST_INFO_FAILED},
++ #else
++ {"PKCS7_TO_TS_TST_INFO_FAILED", 47, 129},
++ #endif
++ #ifdef TS_R_POLICY_MISMATCH
++ {"POLICY_MISMATCH", ERR_LIB_TS, TS_R_POLICY_MISMATCH},
++ #else
++ {"POLICY_MISMATCH", 47, 108},
++ #endif
++ #ifdef TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE
++ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", ERR_LIB_TS, TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE},
++ #else
++ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", 47, 120},
++ #endif
++ #ifdef TS_R_RESPONSE_SETUP_ERROR
++ {"RESPONSE_SETUP_ERROR", ERR_LIB_TS, TS_R_RESPONSE_SETUP_ERROR},
++ #else
++ {"RESPONSE_SETUP_ERROR", 47, 121},
++ #endif
++ #ifdef TS_R_SIGNATURE_FAILURE
++ {"SIGNATURE_FAILURE", ERR_LIB_TS, TS_R_SIGNATURE_FAILURE},
++ #else
++ {"SIGNATURE_FAILURE", 47, 109},
++ #endif
++ #ifdef TS_R_THERE_MUST_BE_ONE_SIGNER
++ {"THERE_MUST_BE_ONE_SIGNER", ERR_LIB_TS, TS_R_THERE_MUST_BE_ONE_SIGNER},
++ #else
++ {"THERE_MUST_BE_ONE_SIGNER", 47, 110},
++ #endif
++ #ifdef TS_R_TIME_SYSCALL_ERROR
++ {"TIME_SYSCALL_ERROR", ERR_LIB_TS, TS_R_TIME_SYSCALL_ERROR},
++ #else
++ {"TIME_SYSCALL_ERROR", 47, 122},
++ #endif
++ #ifdef TS_R_TOKEN_NOT_PRESENT
++ {"TOKEN_NOT_PRESENT", ERR_LIB_TS, TS_R_TOKEN_NOT_PRESENT},
++ #else
++ {"TOKEN_NOT_PRESENT", 47, 130},
++ #endif
++ #ifdef TS_R_TOKEN_PRESENT
++ {"TOKEN_PRESENT", ERR_LIB_TS, TS_R_TOKEN_PRESENT},
++ #else
++ {"TOKEN_PRESENT", 47, 131},
++ #endif
++ #ifdef TS_R_TSA_NAME_MISMATCH
++ {"TSA_NAME_MISMATCH", ERR_LIB_TS, TS_R_TSA_NAME_MISMATCH},
++ #else
++ {"TSA_NAME_MISMATCH", 47, 111},
++ #endif
++ #ifdef TS_R_TSA_UNTRUSTED
++ {"TSA_UNTRUSTED", ERR_LIB_TS, TS_R_TSA_UNTRUSTED},
++ #else
++ {"TSA_UNTRUSTED", 47, 112},
++ #endif
++ #ifdef TS_R_TST_INFO_SETUP_ERROR
++ {"TST_INFO_SETUP_ERROR", ERR_LIB_TS, TS_R_TST_INFO_SETUP_ERROR},
++ #else
++ {"TST_INFO_SETUP_ERROR", 47, 123},
++ #endif
++ #ifdef TS_R_TS_DATASIGN
++ {"TS_DATASIGN", ERR_LIB_TS, TS_R_TS_DATASIGN},
++ #else
++ {"TS_DATASIGN", 47, 124},
++ #endif
++ #ifdef TS_R_UNACCEPTABLE_POLICY
++ {"UNACCEPTABLE_POLICY", ERR_LIB_TS, TS_R_UNACCEPTABLE_POLICY},
++ #else
++ {"UNACCEPTABLE_POLICY", 47, 125},
++ #endif
++ #ifdef TS_R_UNSUPPORTED_MD_ALGORITHM
++ {"UNSUPPORTED_MD_ALGORITHM", ERR_LIB_TS, TS_R_UNSUPPORTED_MD_ALGORITHM},
++ #else
++ {"UNSUPPORTED_MD_ALGORITHM", 47, 126},
++ #endif
++ #ifdef TS_R_UNSUPPORTED_VERSION
++ {"UNSUPPORTED_VERSION", ERR_LIB_TS, TS_R_UNSUPPORTED_VERSION},
++ #else
++ {"UNSUPPORTED_VERSION", 47, 113},
++ #endif
++ #ifdef TS_R_VAR_BAD_VALUE
++ {"VAR_BAD_VALUE", ERR_LIB_TS, TS_R_VAR_BAD_VALUE},
++ #else
++ {"VAR_BAD_VALUE", 47, 135},
++ #endif
++ #ifdef TS_R_VAR_LOOKUP_FAILURE
++ {"VAR_LOOKUP_FAILURE", ERR_LIB_TS, TS_R_VAR_LOOKUP_FAILURE},
++ #else
++ {"VAR_LOOKUP_FAILURE", 47, 136},
++ #endif
++ #ifdef TS_R_WRONG_CONTENT_TYPE
++ {"WRONG_CONTENT_TYPE", ERR_LIB_TS, TS_R_WRONG_CONTENT_TYPE},
++ #else
++ {"WRONG_CONTENT_TYPE", 47, 114},
++ #endif
++ #ifdef UI_R_COMMON_OK_AND_CANCEL_CHARACTERS
++ {"COMMON_OK_AND_CANCEL_CHARACTERS", ERR_LIB_UI, UI_R_COMMON_OK_AND_CANCEL_CHARACTERS},
++ #else
++ {"COMMON_OK_AND_CANCEL_CHARACTERS", 40, 104},
++ #endif
++ #ifdef UI_R_INDEX_TOO_LARGE
++ {"INDEX_TOO_LARGE", ERR_LIB_UI, UI_R_INDEX_TOO_LARGE},
++ #else
++ {"INDEX_TOO_LARGE", 40, 102},
++ #endif
++ #ifdef UI_R_INDEX_TOO_SMALL
++ {"INDEX_TOO_SMALL", ERR_LIB_UI, UI_R_INDEX_TOO_SMALL},
++ #else
++ {"INDEX_TOO_SMALL", 40, 103},
++ #endif
++ #ifdef UI_R_NO_RESULT_BUFFER
++ {"NO_RESULT_BUFFER", ERR_LIB_UI, UI_R_NO_RESULT_BUFFER},
++ #else
++ {"NO_RESULT_BUFFER", 40, 105},
++ #endif
++ #ifdef UI_R_PROCESSING_ERROR
++ {"PROCESSING_ERROR", ERR_LIB_UI, UI_R_PROCESSING_ERROR},
++ #else
++ {"PROCESSING_ERROR", 40, 107},
++ #endif
++ #ifdef UI_R_RESULT_TOO_LARGE
++ {"RESULT_TOO_LARGE", ERR_LIB_UI, UI_R_RESULT_TOO_LARGE},
++ #else
++ {"RESULT_TOO_LARGE", 40, 100},
++ #endif
++ #ifdef UI_R_RESULT_TOO_SMALL
++ {"RESULT_TOO_SMALL", ERR_LIB_UI, UI_R_RESULT_TOO_SMALL},
++ #else
++ {"RESULT_TOO_SMALL", 40, 101},
++ #endif
++ #ifdef UI_R_SYSASSIGN_ERROR
++ {"SYSASSIGN_ERROR", ERR_LIB_UI, UI_R_SYSASSIGN_ERROR},
++ #else
++ {"SYSASSIGN_ERROR", 40, 109},
++ #endif
++ #ifdef UI_R_SYSDASSGN_ERROR
++ {"SYSDASSGN_ERROR", ERR_LIB_UI, UI_R_SYSDASSGN_ERROR},
++ #else
++ {"SYSDASSGN_ERROR", 40, 110},
++ #endif
++ #ifdef UI_R_SYSQIOW_ERROR
++ {"SYSQIOW_ERROR", ERR_LIB_UI, UI_R_SYSQIOW_ERROR},
++ #else
++ {"SYSQIOW_ERROR", 40, 111},
++ #endif
++ #ifdef UI_R_UNKNOWN_CONTROL_COMMAND
++ {"UNKNOWN_CONTROL_COMMAND", ERR_LIB_UI, UI_R_UNKNOWN_CONTROL_COMMAND},
++ #else
++ {"UNKNOWN_CONTROL_COMMAND", 40, 106},
++ #endif
++ #ifdef UI_R_UNKNOWN_TTYGET_ERRNO_VALUE
++ {"UNKNOWN_TTYGET_ERRNO_VALUE", ERR_LIB_UI, UI_R_UNKNOWN_TTYGET_ERRNO_VALUE},
++ #else
++ {"UNKNOWN_TTYGET_ERRNO_VALUE", 40, 108},
++ #endif
++ #ifdef UI_R_USER_DATA_DUPLICATION_UNSUPPORTED
++ {"USER_DATA_DUPLICATION_UNSUPPORTED", ERR_LIB_UI, UI_R_USER_DATA_DUPLICATION_UNSUPPORTED},
++ #else
++ {"USER_DATA_DUPLICATION_UNSUPPORTED", 40, 112},
++ #endif
++ #ifdef X509V3_R_BAD_IP_ADDRESS
++ {"BAD_IP_ADDRESS", ERR_LIB_X509V3, X509V3_R_BAD_IP_ADDRESS},
++ #else
++ {"BAD_IP_ADDRESS", 34, 118},
++ #endif
++ #ifdef X509V3_R_BAD_OBJECT
++ {"BAD_OBJECT", ERR_LIB_X509V3, X509V3_R_BAD_OBJECT},
++ #else
++ {"BAD_OBJECT", 34, 119},
++ #endif
++ #ifdef X509V3_R_BAD_OPTION
++ {"BAD_OPTION", ERR_LIB_X509V3, X509V3_R_BAD_OPTION},
++ #else
++ {"BAD_OPTION", 34, 170},
++ #endif
++ #ifdef X509V3_R_BAD_VALUE
++ {"BAD_VALUE", ERR_LIB_X509V3, X509V3_R_BAD_VALUE},
++ #else
++ {"BAD_VALUE", 34, 171},
++ #endif
++ #ifdef X509V3_R_BN_DEC2BN_ERROR
++ {"BN_DEC2BN_ERROR", ERR_LIB_X509V3, X509V3_R_BN_DEC2BN_ERROR},
++ #else
++ {"BN_DEC2BN_ERROR", 34, 100},
++ #endif
++ #ifdef X509V3_R_BN_TO_ASN1_INTEGER_ERROR
++ {"BN_TO_ASN1_INTEGER_ERROR", ERR_LIB_X509V3, X509V3_R_BN_TO_ASN1_INTEGER_ERROR},
++ #else
++ {"BN_TO_ASN1_INTEGER_ERROR", 34, 101},
++ #endif
++ #ifdef X509V3_R_DIRNAME_ERROR
++ {"DIRNAME_ERROR", ERR_LIB_X509V3, X509V3_R_DIRNAME_ERROR},
++ #else
++ {"DIRNAME_ERROR", 34, 149},
++ #endif
++ #ifdef X509V3_R_DISTPOINT_ALREADY_SET
++ {"DISTPOINT_ALREADY_SET", ERR_LIB_X509V3, X509V3_R_DISTPOINT_ALREADY_SET},
++ #else
++ {"DISTPOINT_ALREADY_SET", 34, 160},
++ #endif
++ #ifdef X509V3_R_DUPLICATE_ZONE_ID
++ {"DUPLICATE_ZONE_ID", ERR_LIB_X509V3, X509V3_R_DUPLICATE_ZONE_ID},
++ #else
++ {"DUPLICATE_ZONE_ID", 34, 133},
++ #endif
++ #ifdef X509V3_R_EMPTY_KEY_USAGE
++ {"EMPTY_KEY_USAGE", ERR_LIB_X509V3, X509V3_R_EMPTY_KEY_USAGE},
++ #else
++ {"EMPTY_KEY_USAGE", 34, 169},
++ #endif
++ #ifdef X509V3_R_ERROR_CONVERTING_ZONE
++ {"ERROR_CONVERTING_ZONE", ERR_LIB_X509V3, X509V3_R_ERROR_CONVERTING_ZONE},
++ #else
++ {"ERROR_CONVERTING_ZONE", 34, 131},
++ #endif
++ #ifdef X509V3_R_ERROR_CREATING_EXTENSION
++ {"ERROR_CREATING_EXTENSION", ERR_LIB_X509V3, X509V3_R_ERROR_CREATING_EXTENSION},
++ #else
++ {"ERROR_CREATING_EXTENSION", 34, 144},
++ #endif
++ #ifdef X509V3_R_ERROR_IN_EXTENSION
++ {"ERROR_IN_EXTENSION", ERR_LIB_X509V3, X509V3_R_ERROR_IN_EXTENSION},
++ #else
++ {"ERROR_IN_EXTENSION", 34, 128},
++ #endif
++ #ifdef X509V3_R_EXPECTED_A_SECTION_NAME
++ {"EXPECTED_A_SECTION_NAME", ERR_LIB_X509V3, X509V3_R_EXPECTED_A_SECTION_NAME},
++ #else
++ {"EXPECTED_A_SECTION_NAME", 34, 137},
++ #endif
++ #ifdef X509V3_R_EXTENSION_EXISTS
++ {"EXTENSION_EXISTS", ERR_LIB_X509V3, X509V3_R_EXTENSION_EXISTS},
++ #else
++ {"EXTENSION_EXISTS", 34, 145},
++ #endif
++ #ifdef X509V3_R_EXTENSION_NAME_ERROR
++ {"EXTENSION_NAME_ERROR", ERR_LIB_X509V3, X509V3_R_EXTENSION_NAME_ERROR},
++ #else
++ {"EXTENSION_NAME_ERROR", 34, 115},
++ #endif
++ #ifdef X509V3_R_EXTENSION_NOT_FOUND
++ {"EXTENSION_NOT_FOUND", ERR_LIB_X509V3, X509V3_R_EXTENSION_NOT_FOUND},
++ #else
++ {"EXTENSION_NOT_FOUND", 34, 102},
++ #endif
++ #ifdef X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED
++ {"EXTENSION_SETTING_NOT_SUPPORTED", ERR_LIB_X509V3, X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED},
++ #else
++ {"EXTENSION_SETTING_NOT_SUPPORTED", 34, 103},
++ #endif
++ #ifdef X509V3_R_EXTENSION_VALUE_ERROR
++ {"EXTENSION_VALUE_ERROR", ERR_LIB_X509V3, X509V3_R_EXTENSION_VALUE_ERROR},
++ #else
++ {"EXTENSION_VALUE_ERROR", 34, 116},
++ #endif
++ #ifdef X509V3_R_ILLEGAL_EMPTY_EXTENSION
++ {"ILLEGAL_EMPTY_EXTENSION", ERR_LIB_X509V3, X509V3_R_ILLEGAL_EMPTY_EXTENSION},
++ #else
++ {"ILLEGAL_EMPTY_EXTENSION", 34, 151},
++ #endif
++ #ifdef X509V3_R_INCORRECT_POLICY_SYNTAX_TAG
++ {"INCORRECT_POLICY_SYNTAX_TAG", ERR_LIB_X509V3, X509V3_R_INCORRECT_POLICY_SYNTAX_TAG},
++ #else
++ {"INCORRECT_POLICY_SYNTAX_TAG", 34, 152},
++ #endif
++ #ifdef X509V3_R_INVALID_ASNUMBER
++ {"INVALID_ASNUMBER", ERR_LIB_X509V3, X509V3_R_INVALID_ASNUMBER},
++ #else
++ {"INVALID_ASNUMBER", 34, 162},
++ #endif
++ #ifdef X509V3_R_INVALID_ASRANGE
++ {"INVALID_ASRANGE", ERR_LIB_X509V3, X509V3_R_INVALID_ASRANGE},
++ #else
++ {"INVALID_ASRANGE", 34, 163},
++ #endif
++ #ifdef X509V3_R_INVALID_BOOLEAN_STRING
++ {"INVALID_BOOLEAN_STRING", ERR_LIB_X509V3, X509V3_R_INVALID_BOOLEAN_STRING},
++ #else
++ {"INVALID_BOOLEAN_STRING", 34, 104},
++ #endif
++ #ifdef X509V3_R_INVALID_CERTIFICATE
++ {"INVALID_CERTIFICATE", ERR_LIB_X509V3, X509V3_R_INVALID_CERTIFICATE},
++ #else
++ {"INVALID_CERTIFICATE", 34, 158},
++ #endif
++ #ifdef X509V3_R_INVALID_EMPTY_NAME
++ {"INVALID_EMPTY_NAME", ERR_LIB_X509V3, X509V3_R_INVALID_EMPTY_NAME},
++ #else
++ {"INVALID_EMPTY_NAME", 34, 108},
++ #endif
++ #ifdef X509V3_R_INVALID_EXTENSION_STRING
++ {"INVALID_EXTENSION_STRING", ERR_LIB_X509V3, X509V3_R_INVALID_EXTENSION_STRING},
++ #else
++ {"INVALID_EXTENSION_STRING", 34, 105},
++ #endif
++ #ifdef X509V3_R_INVALID_INHERITANCE
++ {"INVALID_INHERITANCE", ERR_LIB_X509V3, X509V3_R_INVALID_INHERITANCE},
++ #else
++ {"INVALID_INHERITANCE", 34, 165},
++ #endif
++ #ifdef X509V3_R_INVALID_IPADDRESS
++ {"INVALID_IPADDRESS", ERR_LIB_X509V3, X509V3_R_INVALID_IPADDRESS},
++ #else
++ {"INVALID_IPADDRESS", 34, 166},
++ #endif
++ #ifdef X509V3_R_INVALID_MULTIPLE_RDNS
++ {"INVALID_MULTIPLE_RDNS", ERR_LIB_X509V3, X509V3_R_INVALID_MULTIPLE_RDNS},
++ #else
++ {"INVALID_MULTIPLE_RDNS", 34, 161},
++ #endif
++ #ifdef X509V3_R_INVALID_NAME
++ {"INVALID_NAME", ERR_LIB_X509V3, X509V3_R_INVALID_NAME},
++ #else
++ {"INVALID_NAME", 34, 106},
++ #endif
++ #ifdef X509V3_R_INVALID_NULL_ARGUMENT
++ {"INVALID_NULL_ARGUMENT", ERR_LIB_X509V3, X509V3_R_INVALID_NULL_ARGUMENT},
++ #else
++ {"INVALID_NULL_ARGUMENT", 34, 107},
++ #endif
++ #ifdef X509V3_R_INVALID_NULL_VALUE
++ {"INVALID_NULL_VALUE", ERR_LIB_X509V3, X509V3_R_INVALID_NULL_VALUE},
++ #else
++ {"INVALID_NULL_VALUE", 34, 109},
++ #endif
++ #ifdef X509V3_R_INVALID_NUMBER
++ {"INVALID_NUMBER", ERR_LIB_X509V3, X509V3_R_INVALID_NUMBER},
++ #else
++ {"INVALID_NUMBER", 34, 140},
++ #endif
++ #ifdef X509V3_R_INVALID_NUMBERS
++ {"INVALID_NUMBERS", ERR_LIB_X509V3, X509V3_R_INVALID_NUMBERS},
++ #else
++ {"INVALID_NUMBERS", 34, 141},
++ #endif
++ #ifdef X509V3_R_INVALID_OBJECT_IDENTIFIER
++ {"INVALID_OBJECT_IDENTIFIER", ERR_LIB_X509V3, X509V3_R_INVALID_OBJECT_IDENTIFIER},
++ #else
++ {"INVALID_OBJECT_IDENTIFIER", 34, 110},
++ #endif
++ #ifdef X509V3_R_INVALID_OPTION
++ {"INVALID_OPTION", ERR_LIB_X509V3, X509V3_R_INVALID_OPTION},
++ #else
++ {"INVALID_OPTION", 34, 138},
++ #endif
++ #ifdef X509V3_R_INVALID_POLICY_IDENTIFIER
++ {"INVALID_POLICY_IDENTIFIER", ERR_LIB_X509V3, X509V3_R_INVALID_POLICY_IDENTIFIER},
++ #else
++ {"INVALID_POLICY_IDENTIFIER", 34, 134},
++ #endif
++ #ifdef X509V3_R_INVALID_PROXY_POLICY_SETTING
++ {"INVALID_PROXY_POLICY_SETTING", ERR_LIB_X509V3, X509V3_R_INVALID_PROXY_POLICY_SETTING},
++ #else
++ {"INVALID_PROXY_POLICY_SETTING", 34, 153},
++ #endif
++ #ifdef X509V3_R_INVALID_PURPOSE
++ {"INVALID_PURPOSE", ERR_LIB_X509V3, X509V3_R_INVALID_PURPOSE},
++ #else
++ {"INVALID_PURPOSE", 34, 146},
++ #endif
++ #ifdef X509V3_R_INVALID_SAFI
++ {"INVALID_SAFI", ERR_LIB_X509V3, X509V3_R_INVALID_SAFI},
++ #else
++ {"INVALID_SAFI", 34, 164},
++ #endif
++ #ifdef X509V3_R_INVALID_SECTION
++ {"INVALID_SECTION", ERR_LIB_X509V3, X509V3_R_INVALID_SECTION},
++ #else
++ {"INVALID_SECTION", 34, 135},
++ #endif
++ #ifdef X509V3_R_INVALID_SYNTAX
++ {"INVALID_SYNTAX", ERR_LIB_X509V3, X509V3_R_INVALID_SYNTAX},
++ #else
++ {"INVALID_SYNTAX", 34, 143},
++ #endif
++ #ifdef X509V3_R_ISSUER_DECODE_ERROR
++ {"ISSUER_DECODE_ERROR", ERR_LIB_X509V3, X509V3_R_ISSUER_DECODE_ERROR},
++ #else
++ {"ISSUER_DECODE_ERROR", 34, 126},
++ #endif
++ #ifdef X509V3_R_MISSING_VALUE
++ {"MISSING_VALUE", ERR_LIB_X509V3, X509V3_R_MISSING_VALUE},
++ #else
++ {"MISSING_VALUE", 34, 124},
++ #endif
++ #ifdef X509V3_R_NEED_ORGANIZATION_AND_NUMBERS
++ {"NEED_ORGANIZATION_AND_NUMBERS", ERR_LIB_X509V3, X509V3_R_NEED_ORGANIZATION_AND_NUMBERS},
++ #else
++ {"NEED_ORGANIZATION_AND_NUMBERS", 34, 142},
++ #endif
++ #ifdef X509V3_R_NEGATIVE_PATHLEN
++ {"NEGATIVE_PATHLEN", ERR_LIB_X509V3, X509V3_R_NEGATIVE_PATHLEN},
++ #else
++ {"NEGATIVE_PATHLEN", 34, 168},
++ #endif
++ #ifdef X509V3_R_NO_CONFIG_DATABASE
++ {"NO_CONFIG_DATABASE", ERR_LIB_X509V3, X509V3_R_NO_CONFIG_DATABASE},
++ #else
++ {"NO_CONFIG_DATABASE", 34, 136},
++ #endif
++ #ifdef X509V3_R_NO_ISSUER_CERTIFICATE
++ {"NO_ISSUER_CERTIFICATE", ERR_LIB_X509V3, X509V3_R_NO_ISSUER_CERTIFICATE},
++ #else
++ {"NO_ISSUER_CERTIFICATE", 34, 121},
++ #endif
++ #ifdef X509V3_R_NO_ISSUER_DETAILS
++ {"NO_ISSUER_DETAILS", ERR_LIB_X509V3, X509V3_R_NO_ISSUER_DETAILS},
++ #else
++ {"NO_ISSUER_DETAILS", 34, 127},
++ #endif
++ #ifdef X509V3_R_NO_POLICY_IDENTIFIER
++ {"NO_POLICY_IDENTIFIER", ERR_LIB_X509V3, X509V3_R_NO_POLICY_IDENTIFIER},
++ #else
++ {"NO_POLICY_IDENTIFIER", 34, 139},
++ #endif
++ #ifdef X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED
++ {"NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED", ERR_LIB_X509V3, X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED},
++ #else
++ {"NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED", 34, 154},
++ #endif
++ #ifdef X509V3_R_NO_PUBLIC_KEY
++ {"NO_PUBLIC_KEY", ERR_LIB_X509V3, X509V3_R_NO_PUBLIC_KEY},
++ #else
++ {"NO_PUBLIC_KEY", 34, 114},
++ #endif
++ #ifdef X509V3_R_NO_SUBJECT_DETAILS
++ {"NO_SUBJECT_DETAILS", ERR_LIB_X509V3, X509V3_R_NO_SUBJECT_DETAILS},
++ #else
++ {"NO_SUBJECT_DETAILS", 34, 125},
++ #endif
++ #ifdef X509V3_R_OPERATION_NOT_DEFINED
++ {"OPERATION_NOT_DEFINED", ERR_LIB_X509V3, X509V3_R_OPERATION_NOT_DEFINED},
++ #else
++ {"OPERATION_NOT_DEFINED", 34, 148},
++ #endif
++ #ifdef X509V3_R_OTHERNAME_ERROR
++ {"OTHERNAME_ERROR", ERR_LIB_X509V3, X509V3_R_OTHERNAME_ERROR},
++ #else
++ {"OTHERNAME_ERROR", 34, 147},
++ #endif
++ #ifdef X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED
++ {"POLICY_LANGUAGE_ALREADY_DEFINED", ERR_LIB_X509V3, X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED},
++ #else
++ {"POLICY_LANGUAGE_ALREADY_DEFINED", 34, 155},
++ #endif
++ #ifdef X509V3_R_POLICY_PATH_LENGTH
++ {"POLICY_PATH_LENGTH", ERR_LIB_X509V3, X509V3_R_POLICY_PATH_LENGTH},
++ #else
++ {"POLICY_PATH_LENGTH", 34, 156},
++ #endif
++ #ifdef X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED
++ {"POLICY_PATH_LENGTH_ALREADY_DEFINED", ERR_LIB_X509V3, X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED},
++ #else
++ {"POLICY_PATH_LENGTH_ALREADY_DEFINED", 34, 157},
++ #endif
++ #ifdef X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY
++ {"POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY", ERR_LIB_X509V3, X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY},
++ #else
++ {"POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY", 34, 159},
++ #endif
++ #ifdef X509V3_R_PURPOSE_NOT_UNIQUE
++ {"PURPOSE_NOT_UNIQUE", ERR_LIB_X509V3, X509V3_R_PURPOSE_NOT_UNIQUE},
++ #else
++ {"PURPOSE_NOT_UNIQUE", 34, 173},
++ #endif
++ #ifdef X509V3_R_SECTION_NOT_FOUND
++ {"SECTION_NOT_FOUND", ERR_LIB_X509V3, X509V3_R_SECTION_NOT_FOUND},
++ #else
++ {"SECTION_NOT_FOUND", 34, 150},
++ #endif
++ #ifdef X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS
++ {"UNABLE_TO_GET_ISSUER_DETAILS", ERR_LIB_X509V3, X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS},
++ #else
++ {"UNABLE_TO_GET_ISSUER_DETAILS", 34, 122},
++ #endif
++ #ifdef X509V3_R_UNABLE_TO_GET_ISSUER_KEYID
++ {"UNABLE_TO_GET_ISSUER_KEYID", ERR_LIB_X509V3, X509V3_R_UNABLE_TO_GET_ISSUER_KEYID},
++ #else
++ {"UNABLE_TO_GET_ISSUER_KEYID", 34, 123},
++ #endif
++ #ifdef X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT
++ {"UNKNOWN_BIT_STRING_ARGUMENT", ERR_LIB_X509V3, X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT},
++ #else
++ {"UNKNOWN_BIT_STRING_ARGUMENT", 34, 111},
++ #endif
++ #ifdef X509V3_R_UNKNOWN_EXTENSION
++ {"UNKNOWN_EXTENSION", ERR_LIB_X509V3, X509V3_R_UNKNOWN_EXTENSION},
++ #else
++ {"UNKNOWN_EXTENSION", 34, 129},
++ #endif
++ #ifdef X509V3_R_UNKNOWN_EXTENSION_NAME
++ {"UNKNOWN_EXTENSION_NAME", ERR_LIB_X509V3, X509V3_R_UNKNOWN_EXTENSION_NAME},
++ #else
++ {"UNKNOWN_EXTENSION_NAME", 34, 130},
++ #endif
++ #ifdef X509V3_R_UNKNOWN_OPTION
++ {"UNKNOWN_OPTION", ERR_LIB_X509V3, X509V3_R_UNKNOWN_OPTION},
++ #else
++ {"UNKNOWN_OPTION", 34, 120},
++ #endif
++ #ifdef X509V3_R_UNKNOWN_VALUE
++ {"UNKNOWN_VALUE", ERR_LIB_X509V3, X509V3_R_UNKNOWN_VALUE},
++ #else
++ {"UNKNOWN_VALUE", 34, 172},
++ #endif
++ #ifdef X509V3_R_UNSUPPORTED_OPTION
++ {"UNSUPPORTED_OPTION", ERR_LIB_X509V3, X509V3_R_UNSUPPORTED_OPTION},
++ #else
++ {"UNSUPPORTED_OPTION", 34, 117},
++ #endif
++ #ifdef X509V3_R_UNSUPPORTED_TYPE
++ {"UNSUPPORTED_TYPE", ERR_LIB_X509V3, X509V3_R_UNSUPPORTED_TYPE},
++ #else
++ {"UNSUPPORTED_TYPE", 34, 167},
++ #endif
++ #ifdef X509V3_R_USER_TOO_LONG
++ {"USER_TOO_LONG", ERR_LIB_X509V3, X509V3_R_USER_TOO_LONG},
++ #else
++ {"USER_TOO_LONG", 34, 132},
++ #endif
++ #ifdef X509_R_AKID_MISMATCH
++ {"AKID_MISMATCH", ERR_LIB_X509, X509_R_AKID_MISMATCH},
++ #else
++ {"AKID_MISMATCH", 11, 110},
++ #endif
++ #ifdef X509_R_BAD_SELECTOR
++ {"BAD_SELECTOR", ERR_LIB_X509, X509_R_BAD_SELECTOR},
++ #else
++ {"BAD_SELECTOR", 11, 133},
++ #endif
++ #ifdef X509_R_BAD_X509_FILETYPE
++ {"BAD_X509_FILETYPE", ERR_LIB_X509, X509_R_BAD_X509_FILETYPE},
++ #else
++ {"BAD_X509_FILETYPE", 11, 100},
++ #endif
++ #ifdef X509_R_BASE64_DECODE_ERROR
++ {"BASE64_DECODE_ERROR", ERR_LIB_X509, X509_R_BASE64_DECODE_ERROR},
++ #else
++ {"BASE64_DECODE_ERROR", 11, 118},
++ #endif
++ #ifdef X509_R_CANT_CHECK_DH_KEY
++ {"CANT_CHECK_DH_KEY", ERR_LIB_X509, X509_R_CANT_CHECK_DH_KEY},
++ #else
++ {"CANT_CHECK_DH_KEY", 11, 114},
++ #endif
++ #ifdef X509_R_CERTIFICATE_VERIFICATION_FAILED
++ {"CERTIFICATE_VERIFICATION_FAILED", ERR_LIB_X509, X509_R_CERTIFICATE_VERIFICATION_FAILED},
++ #else
++ {"CERTIFICATE_VERIFICATION_FAILED", 11, 139},
++ #endif
++ #ifdef X509_R_CERT_ALREADY_IN_HASH_TABLE
++ {"CERT_ALREADY_IN_HASH_TABLE", ERR_LIB_X509, X509_R_CERT_ALREADY_IN_HASH_TABLE},
++ #else
++ {"CERT_ALREADY_IN_HASH_TABLE", 11, 101},
++ #endif
++ #ifdef X509_R_CRL_ALREADY_DELTA
++ {"CRL_ALREADY_DELTA", ERR_LIB_X509, X509_R_CRL_ALREADY_DELTA},
++ #else
++ {"CRL_ALREADY_DELTA", 11, 127},
++ #endif
++ #ifdef X509_R_CRL_VERIFY_FAILURE
++ {"CRL_VERIFY_FAILURE", ERR_LIB_X509, X509_R_CRL_VERIFY_FAILURE},
++ #else
++ {"CRL_VERIFY_FAILURE", 11, 131},
++ #endif
++ #ifdef X509_R_DUPLICATE_ATTRIBUTE
++ {"DUPLICATE_ATTRIBUTE", ERR_LIB_X509, X509_R_DUPLICATE_ATTRIBUTE},
++ #else
++ {"DUPLICATE_ATTRIBUTE", 11, 140},
++ #endif
++ #ifdef X509_R_ERROR_GETTING_MD_BY_NID
++ {"ERROR_GETTING_MD_BY_NID", ERR_LIB_X509, X509_R_ERROR_GETTING_MD_BY_NID},
++ #else
++ {"ERROR_GETTING_MD_BY_NID", 11, 141},
++ #endif
++ #ifdef X509_R_ERROR_USING_SIGINF_SET
++ {"ERROR_USING_SIGINF_SET", ERR_LIB_X509, X509_R_ERROR_USING_SIGINF_SET},
++ #else
++ {"ERROR_USING_SIGINF_SET", 11, 142},
++ #endif
++ #ifdef X509_R_IDP_MISMATCH
++ {"IDP_MISMATCH", ERR_LIB_X509, X509_R_IDP_MISMATCH},
++ #else
++ {"IDP_MISMATCH", 11, 128},
++ #endif
++ #ifdef X509_R_INVALID_ATTRIBUTES
++ {"INVALID_ATTRIBUTES", ERR_LIB_X509, X509_R_INVALID_ATTRIBUTES},
++ #else
++ {"INVALID_ATTRIBUTES", 11, 138},
++ #endif
++ #ifdef X509_R_INVALID_DIRECTORY
++ {"INVALID_DIRECTORY", ERR_LIB_X509, X509_R_INVALID_DIRECTORY},
++ #else
++ {"INVALID_DIRECTORY", 11, 113},
++ #endif
++ #ifdef X509_R_INVALID_DISTPOINT
++ {"INVALID_DISTPOINT", ERR_LIB_X509, X509_R_INVALID_DISTPOINT},
++ #else
++ {"INVALID_DISTPOINT", 11, 143},
++ #endif
++ #ifdef X509_R_INVALID_EXTENSION
++ {"INVALID_EXTENSION", ERR_LIB_X509, X509_R_INVALID_EXTENSION},
++ #else
++ {"INVALID_EXTENSION", 11, 146},
++ #endif
++ #ifdef X509_R_INVALID_FIELD_NAME
++ {"INVALID_FIELD_NAME", ERR_LIB_X509, X509_R_INVALID_FIELD_NAME},
++ #else
++ {"INVALID_FIELD_NAME", 11, 119},
++ #endif
++ #ifdef X509_R_INVALID_TRUST
++ {"INVALID_TRUST", ERR_LIB_X509, X509_R_INVALID_TRUST},
++ #else
++ {"INVALID_TRUST", 11, 123},
++ #endif
++ #ifdef X509_R_ISSUER_MISMATCH
++ {"ISSUER_MISMATCH", ERR_LIB_X509, X509_R_ISSUER_MISMATCH},
++ #else
++ {"ISSUER_MISMATCH", 11, 129},
++ #endif
++ #ifdef X509_R_KEY_TYPE_MISMATCH
++ {"KEY_TYPE_MISMATCH", ERR_LIB_X509, X509_R_KEY_TYPE_MISMATCH},
++ #else
++ {"KEY_TYPE_MISMATCH", 11, 115},
++ #endif
++ #ifdef X509_R_KEY_VALUES_MISMATCH
++ {"KEY_VALUES_MISMATCH", ERR_LIB_X509, X509_R_KEY_VALUES_MISMATCH},
++ #else
++ {"KEY_VALUES_MISMATCH", 11, 116},
++ #endif
++ #ifdef X509_R_LOADING_CERT_DIR
++ {"LOADING_CERT_DIR", ERR_LIB_X509, X509_R_LOADING_CERT_DIR},
++ #else
++ {"LOADING_CERT_DIR", 11, 103},
++ #endif
++ #ifdef X509_R_LOADING_DEFAULTS
++ {"LOADING_DEFAULTS", ERR_LIB_X509, X509_R_LOADING_DEFAULTS},
++ #else
++ {"LOADING_DEFAULTS", 11, 104},
++ #endif
++ #ifdef X509_R_METHOD_NOT_SUPPORTED
++ {"METHOD_NOT_SUPPORTED", ERR_LIB_X509, X509_R_METHOD_NOT_SUPPORTED},
++ #else
++ {"METHOD_NOT_SUPPORTED", 11, 124},
++ #endif
++ #ifdef X509_R_NAME_TOO_LONG
++ {"NAME_TOO_LONG", ERR_LIB_X509, X509_R_NAME_TOO_LONG},
++ #else
++ {"NAME_TOO_LONG", 11, 134},
++ #endif
++ #ifdef X509_R_NEWER_CRL_NOT_NEWER
++ {"NEWER_CRL_NOT_NEWER", ERR_LIB_X509, X509_R_NEWER_CRL_NOT_NEWER},
++ #else
++ {"NEWER_CRL_NOT_NEWER", 11, 132},
++ #endif
++ #ifdef X509_R_NO_CERTIFICATE_FOUND
++ {"NO_CERTIFICATE_FOUND", ERR_LIB_X509, X509_R_NO_CERTIFICATE_FOUND},
++ #else
++ {"NO_CERTIFICATE_FOUND", 11, 135},
++ #endif
++ #ifdef X509_R_NO_CERTIFICATE_OR_CRL_FOUND
++ {"NO_CERTIFICATE_OR_CRL_FOUND", ERR_LIB_X509, X509_R_NO_CERTIFICATE_OR_CRL_FOUND},
++ #else
++ {"NO_CERTIFICATE_OR_CRL_FOUND", 11, 136},
++ #endif
++ #ifdef X509_R_NO_CERT_SET_FOR_US_TO_VERIFY
++ {"NO_CERT_SET_FOR_US_TO_VERIFY", ERR_LIB_X509, X509_R_NO_CERT_SET_FOR_US_TO_VERIFY},
++ #else
++ {"NO_CERT_SET_FOR_US_TO_VERIFY", 11, 105},
++ #endif
++ #ifdef X509_R_NO_CRL_FOUND
++ {"NO_CRL_FOUND", ERR_LIB_X509, X509_R_NO_CRL_FOUND},
++ #else
++ {"NO_CRL_FOUND", 11, 137},
++ #endif
++ #ifdef X509_R_NO_CRL_NUMBER
++ {"NO_CRL_NUMBER", ERR_LIB_X509, X509_R_NO_CRL_NUMBER},
++ #else
++ {"NO_CRL_NUMBER", 11, 130},
++ #endif
++ #ifdef X509_R_PUBLIC_KEY_DECODE_ERROR
++ {"PUBLIC_KEY_DECODE_ERROR", ERR_LIB_X509, X509_R_PUBLIC_KEY_DECODE_ERROR},
++ #else
++ {"PUBLIC_KEY_DECODE_ERROR", 11, 125},
++ #endif
++ #ifdef X509_R_PUBLIC_KEY_ENCODE_ERROR
++ {"PUBLIC_KEY_ENCODE_ERROR", ERR_LIB_X509, X509_R_PUBLIC_KEY_ENCODE_ERROR},
++ #else
++ {"PUBLIC_KEY_ENCODE_ERROR", 11, 126},
++ #endif
++ #ifdef X509_R_SHOULD_RETRY
++ {"SHOULD_RETRY", ERR_LIB_X509, X509_R_SHOULD_RETRY},
++ #else
++ {"SHOULD_RETRY", 11, 106},
++ #endif
++ #ifdef X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN
++ {"UNABLE_TO_FIND_PARAMETERS_IN_CHAIN", ERR_LIB_X509, X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN},
++ #else
++ {"UNABLE_TO_FIND_PARAMETERS_IN_CHAIN", 11, 107},
++ #endif
++ #ifdef X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY
++ {"UNABLE_TO_GET_CERTS_PUBLIC_KEY", ERR_LIB_X509, X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY},
++ #else
++ {"UNABLE_TO_GET_CERTS_PUBLIC_KEY", 11, 108},
++ #endif
++ #ifdef X509_R_UNKNOWN_KEY_TYPE
++ {"UNKNOWN_KEY_TYPE", ERR_LIB_X509, X509_R_UNKNOWN_KEY_TYPE},
++ #else
++ {"UNKNOWN_KEY_TYPE", 11, 117},
++ #endif
++ #ifdef X509_R_UNKNOWN_NID
++ {"UNKNOWN_NID", ERR_LIB_X509, X509_R_UNKNOWN_NID},
++ #else
++ {"UNKNOWN_NID", 11, 109},
++ #endif
++ #ifdef X509_R_UNKNOWN_PURPOSE_ID
++ {"UNKNOWN_PURPOSE_ID", ERR_LIB_X509, X509_R_UNKNOWN_PURPOSE_ID},
++ #else
++ {"UNKNOWN_PURPOSE_ID", 11, 121},
++ #endif
++ #ifdef X509_R_UNKNOWN_SIGID_ALGS
++ {"UNKNOWN_SIGID_ALGS", ERR_LIB_X509, X509_R_UNKNOWN_SIGID_ALGS},
++ #else
++ {"UNKNOWN_SIGID_ALGS", 11, 144},
++ #endif
++ #ifdef X509_R_UNKNOWN_TRUST_ID
++ {"UNKNOWN_TRUST_ID", ERR_LIB_X509, X509_R_UNKNOWN_TRUST_ID},
++ #else
++ {"UNKNOWN_TRUST_ID", 11, 120},
++ #endif
++ #ifdef X509_R_UNSUPPORTED_ALGORITHM
++ {"UNSUPPORTED_ALGORITHM", ERR_LIB_X509, X509_R_UNSUPPORTED_ALGORITHM},
++ #else
++ {"UNSUPPORTED_ALGORITHM", 11, 111},
++ #endif
++ #ifdef X509_R_UNSUPPORTED_VERSION
++ {"UNSUPPORTED_VERSION", ERR_LIB_X509, X509_R_UNSUPPORTED_VERSION},
++ #else
++ {"UNSUPPORTED_VERSION", 11, 145},
++ #endif
++ #ifdef X509_R_WRONG_LOOKUP_TYPE
++ {"WRONG_LOOKUP_TYPE", ERR_LIB_X509, X509_R_WRONG_LOOKUP_TYPE},
++ #else
++ {"WRONG_LOOKUP_TYPE", 11, 112},
++ #endif
++ #ifdef X509_R_WRONG_TYPE
++ {"WRONG_TYPE", ERR_LIB_X509, X509_R_WRONG_TYPE},
++ #else
++ {"WRONG_TYPE", 11, 122},
++ #endif
++ {NULL, 0, 0} /* sentinel */
++};
+--- a/Tools/ssl/multissltests.py
++++ b/Tools/ssl/multissltests.py
+@@ -54,6 +54,7 @@
+ "3.4.6",
+ "3.5.7",
+ "3.6.3",
++ "4.0.1",
+ # See make_ssl_data.py for notes on adding a new version.
+ ]
+
+@@ -422,9 +423,11 @@
+ def _post_install(self):
+ if self.version.startswith("3."):
+ self._post_install_3xx()
++ elif self.version.startswith("4."):
++ self._post_install_4xx()
+
+ def _build_src(self, config_args=()):
+- if self.version.startswith("3."):
++ if self.version.startswith(("3.", "4.")):
+ config_args += ("enable-fips",)
+ super()._build_src(config_args)
+
+@@ -440,6 +443,9 @@
+ lib64 = self.lib_dir + "64"
+ os.symlink(lib64, self.lib_dir)
+
++ def _post_install_4xx(self):
++ self._post_install_3xx()
++
+ @property
+ def short_version(self):
+ """Short version for OpenSSL download URL"""
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 49/66] package/qpid-proton: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (47 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 48/66] package/python3: " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 50/66] package/qt5/qt5base: Add support for " Bernd Kuhls
` (16 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Luca Ceresoli
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
...1-PROTON-2937-Add-OpenSSL-4.x-compat.patch | 80 +++++++++++++++++++
1 file changed, 80 insertions(+)
create mode 100644 package/qpid-proton/0001-PROTON-2937-Add-OpenSSL-4.x-compat.patch
diff --git a/package/qpid-proton/0001-PROTON-2937-Add-OpenSSL-4.x-compat.patch b/package/qpid-proton/0001-PROTON-2937-Add-OpenSSL-4.x-compat.patch
new file mode 100644
index 0000000000..96ae892716
--- /dev/null
+++ b/package/qpid-proton/0001-PROTON-2937-Add-OpenSSL-4.x-compat.patch
@@ -0,0 +1,80 @@
+From 7be093d8d96104caab3fa858ab9886f23d62ee04 Mon Sep 17 00:00:00 2001
+From: Thomas Goirand <zigo@debian.org>
+Date: Wed, 17 Jun 2026 15:31:31 +0200
+Subject: [PATCH] PROTON-2937: Add OpenSSL 4.x compat
+
+Fixes this Debian bug: https://bugs.debian.org/1138394
+
+It retains compatibility with OpenSSL 3
+
+Closes #447
+
+Upstream: https://github.com/apache/qpid-proton/commit/7be093d8d96104caab3fa858ab9886f23d62ee04
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ c/src/ssl/openssl.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/c/src/ssl/openssl.c b/c/src/ssl/openssl.c
+index 62d4b40a..4c3a76c5 100644
+--- a/c/src/ssl/openssl.c
++++ b/c/src/ssl/openssl.c
+@@ -339,7 +339,7 @@ static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx)
+ GENERAL_NAME *name = sk_GENERAL_NAME_value( sans, i );
+ if (name->type == GEN_DNS) {
+ ASN1_STRING *asn1 = name->d.dNSName;
+- if (asn1 && asn1->data && asn1->length) {
++ if (asn1 && ASN1_STRING_get0_data(asn1) && ASN1_STRING_length(asn1) > 0){
+ unsigned char *str;
+ int len = ASN1_STRING_to_UTF8( &str, asn1 );
+ if (len >= 0) {
+@@ -354,11 +354,11 @@ static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx)
+ }
+
+ /* if no general names match, try the CommonName from the subject */
+- X509_NAME *name = X509_get_subject_name(cert);
++ const X509_NAME *name = X509_get_subject_name(cert);
+ int i = -1;
+ while (!matched && (i = X509_NAME_get_index_by_NID(name, NID_commonName, i)) >= 0) {
+- X509_NAME_ENTRY *ne = X509_NAME_get_entry(name, i);
+- ASN1_STRING *name_asn1 = X509_NAME_ENTRY_get_data(ne);
++ const X509_NAME_ENTRY *ne = X509_NAME_get_entry(name, i);
++ const ASN1_STRING *name_asn1 = X509_NAME_ENTRY_get_data(ne);
+ if (name_asn1) {
+ unsigned char *str;
+ int len = ASN1_STRING_to_UTF8( &str, name_asn1);
+@@ -1558,7 +1558,7 @@ const char* pn_ssl_get_remote_subject(pn_ssl_t *ssl0)
+ if (!ssl->subject) {
+ X509 *cert = get_peer_certificate(ssl);
+ if (!cert) return NULL;
+- X509_NAME *subject = X509_get_subject_name(cert);
++ const X509_NAME *subject = X509_get_subject_name(cert);
+ if (!subject) return NULL;
+
+ BIO *out = BIO_new(BIO_s_mem());
+@@ -1677,17 +1677,17 @@ const char* pn_ssl_get_remote_subject_subfield(pn_ssl_t *ssl0, pn_ssl_cert_subje
+ X509 *cert = get_peer_certificate(ssl);
+ if (!cert) return NULL;
+
+- X509_NAME *subject_name = X509_get_subject_name(cert);
++ const X509_NAME *subject_name = X509_get_subject_name(cert);
+
+ // TODO (gmurthy) - A server side cert subject field can have more than one common name like this - Subject: CN=www.domain1.com, CN=www.domain2.com, see https://bugzilla.mozilla.org/show_bug.cgi?id=380656
+ // For now, we will only return the first common name if there is more than one common name in the cert
+ int index = X509_NAME_get_index_by_NID(subject_name, openssl_field, -1);
+
+ if (index > -1) {
+- X509_NAME_ENTRY *ne = X509_NAME_get_entry(subject_name, index);
++ const X509_NAME_ENTRY *ne = X509_NAME_get_entry(subject_name, index);
+ if(ne) {
+- ASN1_STRING *name_asn1 = X509_NAME_ENTRY_get_data(ne);
+- return (char *) name_asn1->data;
++ const ASN1_STRING *name_asn1 = X509_NAME_ENTRY_get_data(ne);
++ return (const char *)ASN1_STRING_get0_data(name_asn1);
+ }
+ }
+
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 50/66] package/qt5/qt5base: Add support for OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (48 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 49/66] package/qpid-proton: Fix build with " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 51/66] package/rauc: Fix build with " Bernd Kuhls
` (15 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Giulio Benetti
Support for OpenSSL 4 was added to the Qt 6.x OpenSSL plugin by commit
https://invent.kde.org/qt/qt/qtbase/-/commit/e806630e694d89f567cffa9c982d1f471089ecd8
contained in the 6.12 branch.
OpenSSL support in Qt 5.x is not plugin-based, the move occured in
version 6.2.0:
https://invent.kde.org/qt/qt/qtbase/-/commit/d385158d5213ef568b7629e2aa4a818016bbffac
The upstream repo is not updated anymore:
https://community.kde.org/Qt5PatchCollection
https://mail.kde.org/pipermail/distributions/2026-May/001690.html
To enable support for OpenSSL 4 in qt5base we add a patch set mentioned
in the OpenSSL issue https://github.com/openssl/openssl/issues/29117
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Giulio Benetti <giulio.benetti@benettiengineering.com>
---
package/qt5/qt5base/0009-openssl4.patch | 52 +++++++++
package/qt5/qt5base/0010-openssl4.patch | 139 ++++++++++++++++++++++++
package/qt5/qt5base/0011-openssl4.patch | 89 +++++++++++++++
3 files changed, 280 insertions(+)
create mode 100644 package/qt5/qt5base/0009-openssl4.patch
create mode 100644 package/qt5/qt5base/0010-openssl4.patch
create mode 100644 package/qt5/qt5base/0011-openssl4.patch
diff --git a/package/qt5/qt5base/0009-openssl4.patch b/package/qt5/qt5base/0009-openssl4.patch
new file mode 100644
index 0000000000..19e70e876b
--- /dev/null
+++ b/package/qt5/qt5base/0009-openssl4.patch
@@ -0,0 +1,52 @@
+Fix build with OpenSSL 4.x
+
+Downloaded from
+https://github.com/botovq/ports/commit/bb50119f0a15fdda547ffbf1e8d947d92470ed4e
+
+Upstream: n/a (QT 5.x is not updated anymore)
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+
+Index: src/network/ssl/qsslcertificate_openssl.cpp
+--- a/src/network/ssl/qsslcertificate_openssl.cpp.orig
++++ b/src/network/ssl/qsslcertificate_openssl.cpp
+@@ -123,11 +123,11 @@ QByteArray QSslCertificate::serialNumber() const
+ QMutexLocker lock(QMutexPool::globalInstanceGet(d.data()));
+ #endif
+ if (d->serialNumberString.isEmpty() && d->x509) {
+- ASN1_INTEGER *serialNumber = q_X509_get_serialNumber(d->x509);
++ const ASN1_INTEGER *serialNumber = q_X509_get_serialNumber(d->x509);
+ QByteArray hexString;
+- hexString.reserve(serialNumber->length * 3);
+- for (int a = 0; a < serialNumber->length; ++a) {
+- hexString += QByteArray::number(serialNumber->data[a], 16).rightJustified(2, '0');
++ hexString.reserve(q_ASN1_STRING_length(serialNumber) * 3);
++ for (int a = 0; a < q_ASN1_STRING_length(serialNumber); ++a) {
++ hexString += QByteArray::number(q_ASN1_STRING_get0_data(serialNumber)[a], 16).rightJustified(2, '0');
+ hexString += ':';
+ }
+ hexString.chop(1);
+@@ -251,10 +251,10 @@ QMultiMap<QSsl::AlternativeNameEntryType, QString> QSs
+ QHostAddress ipAddress;
+ switch (len) {
+ case 4: // IPv4
+- ipAddress = QHostAddress(qFromBigEndian(*reinterpret_cast<quint32 *>(genName->d.iPAddress->data)));
++ ipAddress = QHostAddress(qFromBigEndian(*reinterpret_cast<const quint32 *>(q_ASN1_STRING_get0_data(genName->d.iPAddress))));
+ break;
+ case 16: // IPv6
+- ipAddress = QHostAddress(reinterpret_cast<quint8 *>(genName->d.iPAddress->data));
++ ipAddress = QHostAddress(reinterpret_cast<const quint8 *>(q_ASN1_STRING_get0_data(genName->d.iPAddress)));
+ break;
+ default: // Unknown IP address format
+ break;
+@@ -511,8 +511,8 @@ static QVariant x509ExtensionToValue(X509_EXTENSION *e
+
+ // keyid
+ if (auth_key->keyid) {
+- QByteArray keyid(reinterpret_cast<const char *>(auth_key->keyid->data),
+- auth_key->keyid->length);
++ QByteArray keyid(reinterpret_cast<const char *>(q_ASN1_STRING_get0_data(auth_key->keyid)),
++ q_ASN1_STRING_length(auth_key->keyid));
+ result[QLatin1String("keyid")] = keyid.toHex();
+ }
+
diff --git a/package/qt5/qt5base/0010-openssl4.patch b/package/qt5/qt5base/0010-openssl4.patch
new file mode 100644
index 0000000000..8bcd5b1664
--- /dev/null
+++ b/package/qt5/qt5base/0010-openssl4.patch
@@ -0,0 +1,139 @@
+Fix build with OpenSSL 4.x
+
+Downloaded from
+https://github.com/botovq/ports/commit/bb50119f0a15fdda547ffbf1e8d947d92470ed4e
+
+Upstream: n/a (QT 5.x is not updated anymore)
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+
+disable EVP_PKEY_param_check(),
+use the old versions of sk_new(), ..., sk_value()
+disable SSL_CONF_CTX
+
+Index: src/network/ssl/qsslsocket_openssl_symbols.cpp
+--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp.orig
++++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+@@ -146,16 +146,27 @@ DEFINEFUNC2(int, BN_is_word, BIGNUM *a, a, BN_ULONG w,
+ DEFINEFUNC(int, EVP_CIPHER_CTX_reset, EVP_CIPHER_CTX *c, c, return 0, return)
+ DEFINEFUNC(int, EVP_PKEY_up_ref, EVP_PKEY *a, a, return 0, return)
+ DEFINEFUNC2(EVP_PKEY_CTX *, EVP_PKEY_CTX_new, EVP_PKEY *pkey, pkey, ENGINE *e, e, return nullptr, return)
++#ifndef LIBRESSL_VERSION_NUMBER
+ DEFINEFUNC(int, EVP_PKEY_param_check, EVP_PKEY_CTX *ctx, ctx, return 0, return)
++#endif
+ DEFINEFUNC(void, EVP_PKEY_CTX_free, EVP_PKEY_CTX *ctx, ctx, return, return)
+ DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return)
+ DEFINEFUNC(int, DSA_bits, DSA *a, a, return 0, return)
++#ifndef LIBRESSL_VERSION_NUMBER
+ DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return)
+ DEFINEFUNC2(void, OPENSSL_sk_pop_free, OPENSSL_STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
+ DEFINEFUNC(OPENSSL_STACK *, OPENSSL_sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return)
+ DEFINEFUNC2(void, OPENSSL_sk_push, OPENSSL_STACK *a, a, void *b, b, return, DUMMYARG)
+ DEFINEFUNC(void, OPENSSL_sk_free, OPENSSL_STACK *a, a, return, DUMMYARG)
+ DEFINEFUNC2(void *, OPENSSL_sk_value, OPENSSL_STACK *a, a, int b, b, return nullptr, return)
++#else
++DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return)
++DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
++DEFINEFUNC(_STACK *, sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return)
++DEFINEFUNC2(void, sk_push, _STACK *a, a, void *b, b, return, DUMMYARG)
++DEFINEFUNC(void, sk_free, _STACK *a, a, return, DUMMYARG)
++DEFINEFUNC2(void *, sk_value, STACK *a, a, int b, b, return nullptr, return)
++#endif // LIBRESSL_VERSION_NUMBER
+ DEFINEFUNC(int, SSL_session_reused, SSL *a, a, return 0, return)
+ DEFINEFUNC2(qssloptions, SSL_CTX_set_options, SSL_CTX *ctx, ctx, qssloptions op, op, return 0, return)
+ DEFINEFUNC(int, SSL_CTX_get_security_level, const SSL_CTX *ctx, ctx, return -1, return)
+@@ -244,7 +255,8 @@ DEFINEFUNC2(void, BIO_set_shutdown, BIO *a, a, int shu
+
+ DEFINEFUNC(long, ASN1_INTEGER_get, ASN1_INTEGER *a, a, return 0, return)
+ DEFINEFUNC2(int, ASN1_INTEGER_cmp, const ASN1_INTEGER *a, a, const ASN1_INTEGER *b, b, return 1, return)
+-DEFINEFUNC(int, ASN1_STRING_length, ASN1_STRING *a, a, return 0, return)
++DEFINEFUNC(int, ASN1_STRING_length, const ASN1_STRING *a, a, return 0, return)
++DEFINEFUNC(int, ASN1_STRING_type, const ASN1_STRING *a, a, return 0, return)
+ DEFINEFUNC2(int, ASN1_STRING_to_UTF8, unsigned char **a, a, ASN1_STRING *b, b, return 0, return)
+ DEFINEFUNC4(long, BIO_ctrl, BIO *a, a, int b, b, long c, c, void *d, d, return -1, return)
+ DEFINEFUNC(int, BIO_free, BIO *a, a, return 0, return)
+@@ -358,12 +370,14 @@ DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a
+ DEFINEFUNC2(int, SSL_CTX_use_RSAPrivateKey, SSL_CTX *a, a, RSA *b, b, return -1, return)
+ DEFINEFUNC3(int, SSL_CTX_use_PrivateKey_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return)
+ DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *a, a, return nullptr, return)
++#ifndef LIBRESSL_VERSION_NUMBER
+ DEFINEFUNC(SSL_CONF_CTX *, SSL_CONF_CTX_new, DUMMYARG, DUMMYARG, return nullptr, return);
+ DEFINEFUNC(void, SSL_CONF_CTX_free, SSL_CONF_CTX *a, a, return ,return);
+ DEFINEFUNC2(void, SSL_CONF_CTX_set_ssl_ctx, SSL_CONF_CTX *a, a, SSL_CTX *b, b, return, return);
+ DEFINEFUNC2(unsigned int, SSL_CONF_CTX_set_flags, SSL_CONF_CTX *a, a, unsigned int b, b, return 0, return);
+ DEFINEFUNC(int, SSL_CONF_CTX_finish, SSL_CONF_CTX *a, a, return 0, return);
+ DEFINEFUNC3(int, SSL_CONF_cmd, SSL_CONF_CTX *a, a, const char *b, b, const char *c, c, return 0, return);
++#endif
+ DEFINEFUNC(void, SSL_free, SSL *a, a, return, DUMMYARG)
+ DEFINEFUNC(STACK_OF(SSL_CIPHER) *, SSL_get_ciphers, const SSL *a, a, return nullptr, return)
+ DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr, return)
+@@ -871,15 +885,20 @@ bool q_resolveOpenSslSymbols()
+ RESOLVEFUNC(AUTHORITY_INFO_ACCESS_free)
+ RESOLVEFUNC(EVP_PKEY_up_ref)
+ RESOLVEFUNC(EVP_PKEY_CTX_new)
++#ifdef LIBRESSL_VERSION_NUMBER
+ RESOLVEFUNC(EVP_PKEY_param_check)
++#endif
+ RESOLVEFUNC(EVP_PKEY_CTX_free)
+ RESOLVEFUNC(RSA_bits)
++
++#ifndef LIBRESSL_VERSION_NUMBER
+ RESOLVEFUNC(OPENSSL_sk_new_null)
+ RESOLVEFUNC(OPENSSL_sk_push)
+ RESOLVEFUNC(OPENSSL_sk_free)
+ RESOLVEFUNC(OPENSSL_sk_num)
+ RESOLVEFUNC(OPENSSL_sk_pop_free)
+ RESOLVEFUNC(OPENSSL_sk_value)
++#endif
+ RESOLVEFUNC(DH_get0_pqg)
+ RESOLVEFUNC(SSL_CTX_set_options)
+ RESOLVEFUNC(SSL_CTX_get_security_level)
+@@ -985,6 +1004,7 @@ bool q_resolveOpenSslSymbols()
+ RESOLVEFUNC(ASN1_INTEGER_get)
+ RESOLVEFUNC(ASN1_INTEGER_cmp)
+ RESOLVEFUNC(ASN1_STRING_length)
++ RESOLVEFUNC(ASN1_STRING_type)
+ RESOLVEFUNC(ASN1_STRING_to_UTF8)
+ RESOLVEFUNC(BIO_ctrl)
+ RESOLVEFUNC(BIO_free)
+@@ -1096,12 +1116,14 @@ bool q_resolveOpenSslSymbols()
+ RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
+ RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
+ RESOLVEFUNC(SSL_CTX_get_cert_store);
++#ifndef LIBRESSL_VERSION_NUMBER
+ RESOLVEFUNC(SSL_CONF_CTX_new);
+ RESOLVEFUNC(SSL_CONF_CTX_free);
+ RESOLVEFUNC(SSL_CONF_CTX_set_ssl_ctx);
+ RESOLVEFUNC(SSL_CONF_CTX_set_flags);
+ RESOLVEFUNC(SSL_CONF_CTX_finish);
+ RESOLVEFUNC(SSL_CONF_cmd);
++#endif
+ RESOLVEFUNC(SSL_accept)
+ RESOLVEFUNC(SSL_clear)
+ RESOLVEFUNC(SSL_connect)
+@@ -1254,13 +1276,13 @@ bool q_resolveOpenSslSymbols()
+ //==============================================================================
+ QDateTime q_getTimeFromASN1(const ASN1_TIME *aTime)
+ {
+- size_t lTimeLength = aTime->length;
+- char *pString = (char *) aTime->data;
++ size_t lTimeLength = q_ASN1_STRING_length(aTime);
++ const char *pString = (const char *) q_ASN1_STRING_get0_data(aTime);
+ auto isValidPointer = [pString, lTimeLength](const char *const probe){
+ return size_t(probe - pString) < lTimeLength;
+ };
+
+- if (aTime->type == V_ASN1_UTCTIME) {
++ if (q_ASN1_STRING_type(aTime) == V_ASN1_UTCTIME) {
+
+ char lBuffer[24];
+ char *pBuffer = lBuffer;
+@@ -1333,7 +1355,7 @@ QDateTime q_getTimeFromASN1(const ASN1_TIME *aTime)
+ result = result.addSecs(lSecondsFromUCT);
+ return result;
+
+- } else if (aTime->type == V_ASN1_GENERALIZEDTIME) {
++ } else if (q_ASN1_STRING_type(aTime) == V_ASN1_GENERALIZEDTIME) {
+
+ if (lTimeLength < 15)
+ return QDateTime(); // hopefully never triggered
diff --git a/package/qt5/qt5base/0011-openssl4.patch b/package/qt5/qt5base/0011-openssl4.patch
new file mode 100644
index 0000000000..23451b2912
--- /dev/null
+++ b/package/qt5/qt5base/0011-openssl4.patch
@@ -0,0 +1,89 @@
+Fix build with OpenSSL 4.x
+
+Downloaded from
+https://github.com/botovq/ports/commit/bb50119f0a15fdda547ffbf1e8d947d92470ed4e
+
+Upstream: n/a (QT 5.x is not updated anymore)
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+
+use compat defines for STACK and INIT_SETTINGS
+disable EVP_PKEY_param_check
+map q_OPENSSL_sk_*() to q_sk_*()
+disable SSL_CONF_CTX
+use old signature of CRYPTO_free()
+
+Index: src/network/ssl/qsslsocket_openssl_symbols_p.h
+--- a/src/network/ssl/qsslsocket_openssl_symbols_p.h.orig
++++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h
+@@ -80,6 +80,13 @@ QT_BEGIN_NAMESPACE
+
+ #define DUMMYARG
+
++#ifdef LIBRESSL_VERSION_NUMBER
++typedef _STACK STACK;
++typedef STACK OPENSSL_STACK;
++typedef void OPENSSL_INIT_SETTINGS;
++#endif
++
++
+ #if !defined QT_LINKED_OPENSSL
+ // **************** Shared declarations ******************
+ // ret func(arg)
+@@ -236,14 +243,31 @@ int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
+ Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a);
+ EVP_PKEY_CTX *q_EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
+ void q_EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
++#ifndef LIBRESSL_VERSION_NUMBER
+ int q_EVP_PKEY_param_check(EVP_PKEY_CTX *ctx);
++#endif
+ int q_RSA_bits(RSA *a);
++#ifndef LIBRESSL_VERSION_NUMBER
+ Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a);
+ Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
+ Q_AUTOTEST_EXPORT OPENSSL_STACK *q_OPENSSL_sk_new_null();
+ Q_AUTOTEST_EXPORT void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
+ Q_AUTOTEST_EXPORT void q_OPENSSL_sk_free(OPENSSL_STACK *a);
+ Q_AUTOTEST_EXPORT void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
++#else // LIBRESSL_VERSION_NUMBER
++int q_sk_num(STACK *a);
++#define q_OPENSSL_sk_num(a) q_sk_num(a)
++void q_sk_pop_free(STACK *a, void (*b)(void *));
++#define q_OPENSSL_sk_pop_free(a, b) q_sk_pop_free(a, b)
++STACK *q_sk_new_null();
++#define q_OPENSSL_sk_new_null() q_sk_new_null()
++void q_sk_push(STACK *st, void *data);
++#define q_OPENSSL_sk_push(st, data) q_sk_push(st, data)
++void q_sk_free(STACK *a);
++#define q_OPENSSL_sk_free q_sk_free
++void *q_sk_value(STACK *a, int b);
++#define q_OPENSSL_sk_value(a, b) q_sk_value(a, b)
++#endif // LIBRESSL_VERSION_NUMBER
+ int q_SSL_session_reused(SSL *a);
+
+ #if OPENSSL_VERSION_MAJOR < 3
+@@ -373,7 +397,8 @@ void q_SSL_set_psk_use_session_callback(SSL *s, q_SSL_
+ bool q_resolveOpenSslSymbols();
+ long q_ASN1_INTEGER_get(ASN1_INTEGER *a);
+ int q_ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y);
+-int q_ASN1_STRING_length(ASN1_STRING *a);
++int q_ASN1_STRING_length(const ASN1_STRING *a);
++int q_ASN1_STRING_type(const ASN1_STRING *a);
+ int q_ASN1_STRING_to_UTF8(unsigned char **a, ASN1_STRING *b);
+ long q_BIO_ctrl(BIO *a, int b, long c, void *d);
+ Q_AUTOTEST_EXPORT int q_BIO_free(BIO *a);
+@@ -515,12 +540,14 @@ int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b);
+ int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b);
+ int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c);
+ X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a);
++#ifndef LIBRESSL_VERSION_NUMBER
+ SSL_CONF_CTX *q_SSL_CONF_CTX_new();
+ void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a);
+ void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
+ unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
+ int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a);
+ int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
++#endif
+ void q_SSL_free(SSL *a);
+ STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(const SSL *a);
+ const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a);
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 51/66] package/rauc: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (49 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 50/66] package/qt5/qt5base: Add support for " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 52/66] package/redis: " Bernd Kuhls
` (14 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Andrey Yurovsky, Heiko Thiery
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Andrey Yurovsky <yurovsky@gmail.com>
Cc: Heiko Thiery <heiko.thiery@gmail.com>
---
...N1_STRING_get0_data-and-ASN1_STRING_.patch | 48 +++++++++++++++++++
1 file changed, 48 insertions(+)
create mode 100644 package/rauc/0001-signature-use-ASN1_STRING_get0_data-and-ASN1_STRING_.patch
diff --git a/package/rauc/0001-signature-use-ASN1_STRING_get0_data-and-ASN1_STRING_.patch b/package/rauc/0001-signature-use-ASN1_STRING_get0_data-and-ASN1_STRING_.patch
new file mode 100644
index 0000000000..ba8032c6e7
--- /dev/null
+++ b/package/rauc/0001-signature-use-ASN1_STRING_get0_data-and-ASN1_STRING_.patch
@@ -0,0 +1,48 @@
+From 101aacaf82d250bfb8e581e002b2c380869080ef Mon Sep 17 00:00:00 2001
+From: Bruno Thomsen <bruno.thomsen@gmail.com>
+Date: Sat, 11 Apr 2026 17:06:10 +0200
+Subject: [PATCH] signature: use ASN1_STRING_get0_data and ASN1_STRING_length
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Use ASN1_STRING_get0_data() and ASN1_STRING_length() functions
+allow an ASN1_STRING structure to be manipulated. Avoid errors
+like this when compiling against OpenSSL 4.0:
+
+error: invalid use of incomplete typedef ‘ASN1_OCTET_STRING’ {aka ‘struct asn1_string_st’}
+
+Signed-off-by: Bruno Thomsen <bruno.thomsen@gmail.com>
+
+Upstream: https://github.com/rauc/rauc/commit/101aacaf82d250bfb8e581e002b2c380869080ef
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/signature.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/signature.c b/src/signature.c
+index d2acac6b..91be7bb7 100644
+--- a/src/signature.c
++++ b/src/signature.c
+@@ -1344,7 +1344,7 @@ gboolean cms_get_unverified_manifest(GBytes *sig, GBytes **manifest, GError **er
+ "missing manifest in inline signature");
+ goto out;
+ }
+- if (!(*content)->data || ((*content)->length <= 0)) {
++ if ((ASN1_STRING_get0_data(*content) == NULL) || (ASN1_STRING_length(*content) <= 0)) {
+ g_set_error(
+ error,
+ R_SIGNATURE_ERROR,
+@@ -1353,7 +1353,7 @@ gboolean cms_get_unverified_manifest(GBytes *sig, GBytes **manifest, GError **er
+ goto out;
+ }
+
+- tmp = g_bytes_new((*content)->data, (*content)->length);
++ tmp = g_bytes_new(ASN1_STRING_get0_data(*content), ASN1_STRING_length(*content));
+ if (!tmp) {
+ g_set_error_literal(
+ error,
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 52/66] package/redis: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (50 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 51/66] package/rauc: Fix build with " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 53/66] package/socat: Add support for " Bernd Kuhls
` (13 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Daniel Price, Titouan Christophe
tls.c:676:5: error: 'X509_NAME_get_text_by_NID' is deprecated: Since OpenSSL 4.0 [-Werror=deprecated-declarations]
676 | int len = X509_NAME_get_text_by_NID(subject, nid, buf, sizeof(buf));
| ^~~
In file included from ../../../per-package/redis/host/x86_64-buildroot-linux-gnu/sysroot/usr/include/openssl/ssl.h:34,
from tls.c:22:
../../../per-package/redis/host/x86_64-buildroot-linux-gnu/sysroot/usr/include/openssl/x509.h:1041:27: note: declared here
1041 | OSSL_DEPRECATEDIN_4_0 int X509_NAME_get_text_by_NID(const X509_NAME *name,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
Upstream PR exists to fix the build problem:
https://github.com/redis/redis/pull/15227
Added buildroot-specific patch to remove -Werror=deprecated-declarations
from CFLAGS to not block the bump of OpenSSL to 4.0.3.
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Daniel Price <daniel.price@gmail.com>
Cc: Titouan Christophe <titouan.christophe@mind.be>
---
...emove-Werror-deprecated-declarations.patch | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 package/redis/0004-Remove-Werror-deprecated-declarations.patch
diff --git a/package/redis/0004-Remove-Werror-deprecated-declarations.patch b/package/redis/0004-Remove-Werror-deprecated-declarations.patch
new file mode 100644
index 0000000000..3c33456d52
--- /dev/null
+++ b/package/redis/0004-Remove-Werror-deprecated-declarations.patch
@@ -0,0 +1,28 @@
+From b42c0326b542b0e5d29cbfef2ab08d0d36430803 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Thu, 17 Sep 2026 23:58:19 +0200
+Subject: [PATCH] Remove -Werror=deprecated-declarations
+
+Upstream: not applicable
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 205508596..4f31a3af0 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -52,7 +52,7 @@ ifneq (,$(findstring FreeBSD,$(uname_S)))
+ STD+=-Wno-c11-extensions
+ endif
+ endif
+-WARN=-Wall -W -Wno-missing-field-initializers -Werror=deprecated-declarations -Wstrict-prototypes
++WARN=-Wall -W -Wno-missing-field-initializers -Wstrict-prototypes
+ OPT=$(OPTIMIZATION)
+
+ SKIP_VEC_SETS?=no
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 53/66] package/socat: Add support for OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (51 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 52/66] package/redis: " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 54/66] package/sofia-sip: Fix build with " Bernd Kuhls
` (12 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Baruch Siach <baruch@tkos.co.il>
---
...penSSL-4.0-use-ASN1_STRING-accessors.patch | 35 +++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 package/socat/0002-Fix-build-with-OpenSSL-4.0-use-ASN1_STRING-accessors.patch
diff --git a/package/socat/0002-Fix-build-with-OpenSSL-4.0-use-ASN1_STRING-accessors.patch b/package/socat/0002-Fix-build-with-OpenSSL-4.0-use-ASN1_STRING-accessors.patch
new file mode 100644
index 0000000000..6c53500d02
--- /dev/null
+++ b/package/socat/0002-Fix-build-with-OpenSSL-4.0-use-ASN1_STRING-accessors.patch
@@ -0,0 +1,35 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
+Date: Thu, 13 Aug 2026 07:00:00 +0000
+Subject: [PATCH] Fix build with OpenSSL 4.0: use ASN1_STRING accessors
+
+OpenSSL 4.0 made ASN1_STRING opaque. Direct access to struct members
+(->data, ->length) is no longer possible. Use the accessor functions
+ASN1_STRING_get0_data() and ASN1_STRING_length() instead.
+
+These accessors have been available since OpenSSL 1.1.0, so this change
+is backward compatible.
+
+Upstream: Submitted [socat@dest-unreach.org]
+Signed-off-by: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
+
+Downloaded from https://github.com/openembedded/openembedded-core/commit/aa435ebaaf7446ec07a88586f2de4109e02a2d38
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ xio-openssl.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/xio-openssl.c
++++ b/xio-openssl.c
+@@ -1898,8 +1898,8 @@
+ case GEN_IPADD:
+ {
+ /* binary address format */
+- const unsigned char *data = pName->d.iPAddress->data;
+- size_t len = pName->d.iPAddress->length;
++ const unsigned char *data = ASN1_STRING_get0_data(pName->d.iPAddress);
++ size_t len = ASN1_STRING_length(pName->d.iPAddress);
+ char aBuffer[INET6_ADDRSTRLEN]; /* canonical peername */
+ struct in6_addr ip6bin;
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 54/66] package/sofia-sip: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (52 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 53/66] package/socat: Add support for " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 55/66] package/softhsm2: " Bernd Kuhls
` (11 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Gregory Dymarek
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Gregory Dymarek <gregd72002@gmail.com>
---
...001-Fix-build-error-with-OpenSSL-4.0.patch | 42 +++++++++++++++++++
1 file changed, 42 insertions(+)
create mode 100644 package/sofia-sip/0001-Fix-build-error-with-OpenSSL-4.0.patch
diff --git a/package/sofia-sip/0001-Fix-build-error-with-OpenSSL-4.0.patch b/package/sofia-sip/0001-Fix-build-error-with-OpenSSL-4.0.patch
new file mode 100644
index 0000000000..4e1b2ad87d
--- /dev/null
+++ b/package/sofia-sip/0001-Fix-build-error-with-OpenSSL-4.0.patch
@@ -0,0 +1,42 @@
+From b21b4cc7d0dd4c3eae1a98a3fa38f4cdb2e5a385 Mon Sep 17 00:00:00 2001
+From: Ravi Kant Sharma <ravi.kant.sharma@canonical.com>
+Date: Fri, 17 Jul 2026 16:41:11 +0200
+Subject: [PATCH] Fix build error with OpenSSL 4.0
+
+Upstream: https://github.com/freeswitch/sofia-sip/pull/337
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ libsofia-sip-ua/stun/stun.c | 2 +-
+ m4/sac-openssl.m4 | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libsofia-sip-ua/stun/stun.c b/libsofia-sip-ua/stun/stun.c
+index 22ca7c7..aa4b574 100644
+--- a/libsofia-sip-ua/stun/stun.c
++++ b/libsofia-sip-ua/stun/stun.c
+@@ -1368,7 +1368,7 @@ int stun_tls_callback(su_root_magic_t *m, su_wait_t *w, su_wakeup_arg_t *arg)
+ /* openssl initiation */
+ SSLeay_add_ssl_algorithms();
+ SSL_load_error_strings();
+- ctx = SSL_CTX_new(TLSv1_client_method());
++ ctx = SSL_CTX_new(TLS_client_method());
+ self->sh_ctx = ctx;
+
+ if (ctx == NULL) {
+diff --git a/m4/sac-openssl.m4 b/m4/sac-openssl.m4
+index 289d3e1..76ba9f2 100644
+--- a/m4/sac-openssl.m4
++++ b/m4/sac-openssl.m4
+@@ -30,7 +30,7 @@ else
+ HAVE_OPENSSL=0
+ AC_MSG_WARN(OpenSSL crypto library was not found))
+
+- AC_CHECK_LIB(ssl, TLSv1_method,,
++ AC_CHECK_LIB(ssl, TLS_method,,
+ HAVE_TLS=0
+ AC_MSG_WARN(OpenSSL protocol library was not found))
+ ],[AC_MSG_WARN(OpenSSL include files were not found)],[#include <openssl/safestack.h>])
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 55/66] package/softhsm2: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (53 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 54/66] package/sofia-sip: Fix build with " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 56/66] package/squid: " Bernd Kuhls
` (10 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...mory-leak-in-OSSL-byteString2oid-863.patch | 49 ++++++++++
...in-EdDSA-PrintableString-handling-85.patch | 98 +++++++++++++++++++
2 files changed, 147 insertions(+)
create mode 100644 package/softhsm2/0001-Fix-the-memory-leak-in-OSSL-byteString2oid-863.patch
create mode 100644 package/softhsm2/0002-Fix-memory-leak-in-EdDSA-PrintableString-handling-85.patch
diff --git a/package/softhsm2/0001-Fix-the-memory-leak-in-OSSL-byteString2oid-863.patch b/package/softhsm2/0001-Fix-the-memory-leak-in-OSSL-byteString2oid-863.patch
new file mode 100644
index 0000000000..2defeda775
--- /dev/null
+++ b/package/softhsm2/0001-Fix-the-memory-leak-in-OSSL-byteString2oid-863.patch
@@ -0,0 +1,49 @@
+From 1b72640ceccaa8fdd775f224c26a53fdaf189da6 Mon Sep 17 00:00:00 2001
+From: Shawn C <citypw@hardenedlinux.org>
+Date: Sat, 25 Apr 2026 20:05:34 +0800
+Subject: [PATCH] Fix the memory leak in OSSL::byteString2oid (#863)
+
+The function `OSSL::byteString2oid` in `SoftHSM2` (OpenSSL backend)
+leaks memory when decoding PKCS#11 attribute values as ASN.1 objects
+or strings. It calls `d2i_ASN1_OBJECT` and `d2i_ASN1_PRINTABLESTRING`
+which allocate new OpenSSL objects, but these objects are never
+freed after their NIDs are extracted.
+
+Signed-off-by: Shawn C <citypw@hardenedlinux.org>
+
+Upstream: https://github.com/softhsm/SoftHSMv2/commit/57e10cbbe75069be92c7e9720c180a05833481fc
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/lib/crypto/OSSLUtil.cpp | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/lib/crypto/OSSLUtil.cpp b/src/lib/crypto/OSSLUtil.cpp
+index 794f80e..d238eca 100644
+--- a/src/lib/crypto/OSSLUtil.cpp
++++ b/src/lib/crypto/OSSLUtil.cpp
+@@ -177,8 +177,10 @@ int OSSL::byteString2oid(const ByteString& byteString)
+ {
+ return NID_undef;
+ }
+-
+- return OBJ_obj2nid(oid);
++
++ int nid = OBJ_obj2nid(oid);
++ ASN1_OBJECT_free(oid);
++ return nid;
+ }
+ else if (pclass == V_ASN1_UNIVERSAL && tag == V_ASN1_PRINTABLESTRING)
+ {
+@@ -204,6 +206,8 @@ int OSSL::byteString2oid(const ByteString& byteString)
+ {
+ return EVP_PKEY_X448;
+ }
++
++ ASN1_STRING_free(curve_name);
+ }
+
+ return NID_undef;
+--
+2.47.3
+
diff --git a/package/softhsm2/0002-Fix-memory-leak-in-EdDSA-PrintableString-handling-85.patch b/package/softhsm2/0002-Fix-memory-leak-in-EdDSA-PrintableString-handling-85.patch
new file mode 100644
index 0000000000..f6b9000b13
--- /dev/null
+++ b/package/softhsm2/0002-Fix-memory-leak-in-EdDSA-PrintableString-handling-85.patch
@@ -0,0 +1,98 @@
+From c7e930156054e901e27149117494d53e9945f734 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ma=C5=82gorzata=20Olsz=C3=B3wka?=
+ <Malgorzata.Olszowka@stunnel.org>
+Date: Sun, 3 May 2026 13:00:07 +0200
+Subject: [PATCH] Fix memory leak in EdDSA PrintableString handling (#858)
+
+Upstream: https://github.com/softhsm/SoftHSMv2/commit/d23ea09d318c03c033420d065f1c64b019cc94ed
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/lib/crypto/OSSLUtil.cpp | 37 +++++++++++++++++++++++++------------
+ 1 file changed, 25 insertions(+), 12 deletions(-)
+
+diff --git a/src/lib/crypto/OSSLUtil.cpp b/src/lib/crypto/OSSLUtil.cpp
+index d238eca..7763799 100644
+--- a/src/lib/crypto/OSSLUtil.cpp
++++ b/src/lib/crypto/OSSLUtil.cpp
+@@ -160,12 +160,14 @@ ByteString OSSL::oid2ByteString(int nid)
+ // Convert a ByteString to an OpenSSL EVP_PKEY id
+ int OSSL::byteString2oid(const ByteString& byteString)
+ {
+- ASN1_OBJECT *oid = NULL;
+- ASN1_PRINTABLESTRING *curve_name = NULL;
++ ASN1_OBJECT *oid;
++ ASN1_PRINTABLESTRING *curve_name;
+ const unsigned char *p = byteString.const_byte_str();
+ const unsigned char *pp = p;
++ const unsigned char *data;
+ long length;
+- int tag, pclass;
++ int tag, pclass, data_len;
++ int nid = NID_undef;
+
+ ASN1_get_object(&pp, &length, &tag, &pclass, byteString.size());
+ if (pclass == V_ASN1_UNIVERSAL && tag == V_ASN1_OBJECT)
+@@ -177,39 +179,50 @@ int OSSL::byteString2oid(const ByteString& byteString)
+ {
+ return NID_undef;
+ }
+-
+- int nid = OBJ_obj2nid(oid);
++
++ nid = OBJ_obj2nid(oid);
+ ASN1_OBJECT_free(oid);
+- return nid;
+ }
+ else if (pclass == V_ASN1_UNIVERSAL && tag == V_ASN1_PRINTABLESTRING)
+ {
+ /* The final PKCS#11 3.0 expects curve name encoded as PrintableString */
+ curve_name = d2i_ASN1_PRINTABLESTRING(NULL, &p, byteString.size());
+
+- if (strcmp((char *)curve_name->data, "edwards25519") == 0)
++ if (curve_name == NULL)
++ {
++ return NID_undef;
++ }
++
++ data = ASN1_STRING_get0_data(curve_name);
++ data_len = ASN1_STRING_length(curve_name);
++
++ if (data_len == 12 && memcmp(data, "edwards25519", data_len) == 0)
+ {
++ ASN1_PRINTABLESTRING_free(curve_name);
+ return EVP_PKEY_ED25519;
+ }
+
+- if (strcmp((char *)curve_name->data, "curve25519") == 0)
++ if (data_len == 10 && memcmp(data, "curve25519", 10) == 0)
+ {
++ ASN1_PRINTABLESTRING_free(curve_name);
+ return EVP_PKEY_X25519;
+ }
+
+- if (strcmp((char *)curve_name->data, "edwards448") == 0)
++ if (data_len == 10 && memcmp(data, "edwards448", 10) == 0)
+ {
++ ASN1_PRINTABLESTRING_free(curve_name);
+ return EVP_PKEY_ED448;
+ }
+
+- if (strcmp((char *)curve_name->data, "curve448") == 0)
++ if (data_len == 8 && memcmp(data, "curve448", 8) == 0)
+ {
++ ASN1_PRINTABLESTRING_free(curve_name);
+ return EVP_PKEY_X448;
+ }
+
+- ASN1_STRING_free(curve_name);
++ ASN1_PRINTABLESTRING_free(curve_name);
+ }
+
+- return NID_undef;
++ return nid;
+ }
+ #endif
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 56/66] package/squid: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (54 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 55/66] package/softhsm2: " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 57/66] package/sudo: Add support for " Bernd Kuhls
` (9 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
.../0001-Fix-OpenSSL-4.0-compatibility.patch | 368 ++++++++++++++++++
1 file changed, 368 insertions(+)
create mode 100644 package/squid/0001-Fix-OpenSSL-4.0-compatibility.patch
diff --git a/package/squid/0001-Fix-OpenSSL-4.0-compatibility.patch b/package/squid/0001-Fix-OpenSSL-4.0-compatibility.patch
new file mode 100644
index 0000000000..a0c3abff4f
--- /dev/null
+++ b/package/squid/0001-Fix-OpenSSL-4.0-compatibility.patch
@@ -0,0 +1,368 @@
+From 144a59fec3d7a4bd7f0c3e71934156e1a56ebabc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Pavol=20=C5=BD=C3=A1=C4=8Dik?= <pzacik@redhat.com>
+Date: Wed, 6 May 2026 17:18:58 +0200
+Subject: [PATCH] Fix OpenSSL 4.0 compatibility
+
+Replace direct ASN1 structure field access with accessor functions.
+and use ASN1_STRING_set() instead of direct field assignment.
+
+Fix issues caused by X509* API constness changes; in some cases,
+casting the const away is necessary to keep compatibility with
+OpenSSL 3.
+
+Downloaded from Fedora:
+https://src.fedoraproject.org/rpms/squid/blob/rawhide/f/squid-7.5-openssl4.patch
+
+Upstream: https://github.com/squid-cache/squid/pull/2501
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ .../cert_generators/file/certificate_db.cc | 2 +-
+ src/ssl/gadgets.cc | 92 +++++++++++--------
+ src/ssl/gadgets.h | 4 +-
+ src/ssl/support.cc | 18 ++--
+ 4 files changed, 66 insertions(+), 50 deletions(-)
+
+diff --git a/src/security/cert_generators/file/certificate_db.cc b/src/security/cert_generators/file/certificate_db.cc
+index 4b729b316..35849aa63 100644
+--- a/src/security/cert_generators/file/certificate_db.cc
++++ b/src/security/cert_generators/file/certificate_db.cc
+@@ -335,7 +335,7 @@ Ssl::CertificateDb::addCertAndPrivateKey(std::string const &useKey, const Securi
+ }
+
+ const auto tm = X509_getm_notAfter(cert.get());
+- row.setValue(cnlExp_date, std::string(reinterpret_cast<char *>(tm->data), tm->length).c_str());
++ row.setValue(cnlExp_date, std::string(reinterpret_cast<const char *>(ASN1_STRING_get0_data(tm)), ASN1_STRING_length(tm)).c_str());
+ const auto subject = OneLineSummary(*X509_get_subject_name(cert.get()));
+ row.setValue(cnlName, subject.get());
+ row.setValue(cnlKey, useKey.c_str());
+diff --git a/src/ssl/gadgets.cc b/src/ssl/gadgets.cc
+index 06b8b79dd..100ee6a46 100644
+--- a/src/ssl/gadgets.cc
++++ b/src/ssl/gadgets.cc
+@@ -259,20 +259,31 @@ static bool replaceCommonName(Security::CertPointer & cert, std::string const &r
+ if (cn.length() > 2 && *cn.begin() == '[' && *cn.rbegin() == ']')
+ cn = cn.substr(1, cn.size()-2);
+
+- X509_NAME *name = X509_get_subject_name(cert.get());
++ const X509_NAME *subject = X509_get_subject_name(cert.get());
++ if (!subject)
++ return false;
++
++ X509_NAME *name = X509_NAME_dup(subject);
+ if (!name)
+ return false;
++
+ // Remove the CN part:
+ int loc = X509_NAME_get_index_by_NID(name, NID_commonName, -1);
+- if (loc >=0) {
+- X509_NAME_ENTRY *tmp = X509_NAME_get_entry(name, loc);
+- X509_NAME_delete_entry(name, loc);
++ if (loc >= 0) {
++ X509_NAME_ENTRY *tmp = X509_NAME_delete_entry(name, loc);
+ X509_NAME_ENTRY_free(tmp);
+ }
+
+ // Add a new CN
+- return X509_NAME_add_entry_by_NID(name, NID_commonName, MBSTRING_ASC,
+- (unsigned char *)(cn.c_str()), -1, -1, 0);
++ if (!X509_NAME_add_entry_by_NID(name, NID_commonName, MBSTRING_ASC,
++ (unsigned char *)(cn.c_str()), -1, -1, 0)) {
++ X509_NAME_free(name);
++ return false;
++ }
++
++ int ret = X509_set_subject_name(cert.get(), name);
++ X509_NAME_free(name);
++ return ret;
+ }
+
+ const char *Ssl::CertSignAlgorithmStr[] = {
+@@ -301,9 +312,9 @@ static void
+ printX509Signature(const Security::CertPointer &cert, std::string &out)
+ {
+ const ASN1_BIT_STRING *sig = Ssl::X509_get_signature(cert);
+- if (sig && sig->data) {
+- const unsigned char *s = sig->data;
+- for (int i = 0; i < sig->length; ++i) {
++ if (sig && ASN1_STRING_get0_data(sig)) {
++ const unsigned char *s = ASN1_STRING_get0_data(sig);
++ for (int i = 0; i < ASN1_STRING_length(sig); ++i) {
+ char hex[3];
+ snprintf(hex, sizeof(hex), "%02x", s[i]);
+ out.append(hex);
+@@ -377,7 +388,7 @@ mimicAuthorityKeyId(Security::CertPointer &cert, Security::CertPointer const &mi
+ X509_EXTENSION *ext;
+ // Check if the issuer has the Subject Key Identifier extension
+ const int indx = X509_get_ext_by_NID(issuerCert.get(), NID_subject_key_identifier, -1);
+- if (indx >= 0 && (ext = X509_get_ext(issuerCert.get(), indx))) {
++ if (indx >= 0 && (ext = const_cast<X509_EXTENSION *>(X509_get_ext(issuerCert.get(), indx)))) {
+ issuerKeyId.reset((ASN1_OCTET_STRING *)X509V3_EXT_d2i(ext));
+ }
+ }
+@@ -418,8 +429,7 @@ mimicAuthorityKeyId(Security::CertPointer &cert, Security::CertPointer const &mi
+ unsigned char *ext_der = nullptr;
+ int ext_len = ASN1_item_i2d((ASN1_VALUE *)theAuthKeyId.get(), &ext_der, ASN1_ITEM_ptr(method->it));
+ Ssl::ASN1_OCTET_STRING_Pointer extOct(ASN1_OCTET_STRING_new());
+- extOct.get()->data = ext_der;
+- extOct.get()->length = ext_len;
++ ASN1_STRING_set(extOct.get(), ext_der, ext_len);
+ Ssl::X509_EXTENSION_Pointer extAuthKeyId(X509_EXTENSION_create_by_NID(nullptr, NID_authority_key_identifier, 0, extOct.get()));
+ if (!extAuthKeyId.get())
+ return false;
+@@ -471,7 +481,7 @@ mimicExtensions(Security::CertPointer & cert, Security::CertPointer const &mimic
+ int nid;
+ for (int i = 0; (nid = extensions[i]) != 0; ++i) {
+ const int pos = X509_get_ext_by_NID(mimicCert.get(), nid, -1);
+- if (X509_EXTENSION *ext = X509_get_ext(mimicCert.get(), pos)) {
++ if (X509_EXTENSION *ext = const_cast<X509_EXTENSION *>(X509_get_ext(mimicCert.get(), pos))) {
+ // Mimic extension exactly.
+ if (X509_add_ext(cert.get(), ext, -1))
+ ++added;
+@@ -482,7 +492,7 @@ mimicExtensions(Security::CertPointer & cert, Security::CertPointer const &mimic
+ // that the more stringent requirements are met.
+
+ const int p = X509_get_ext_by_NID(cert.get(), NID_key_usage, -1);
+- if ((ext = X509_get_ext(cert.get(), p)) != nullptr) {
++ if ((ext = const_cast<X509_EXTENSION *>(X509_get_ext(cert.get(), p))) != nullptr) {
+ ASN1_BIT_STRING *keyusage = (ASN1_BIT_STRING *)X509V3_EXT_d2i(ext);
+ ASN1_BIT_STRING_set_bit(keyusage, KeyEncipherment, 1);
+
+@@ -495,8 +505,7 @@ mimicExtensions(Security::CertPointer & cert, Security::CertPointer const &mimic
+ (const ASN1_ITEM *)ASN1_ITEM_ptr(method->it));
+
+ ASN1_OCTET_STRING *ext_oct = ASN1_OCTET_STRING_new();
+- ext_oct->data = ext_der;
+- ext_oct->length = ext_len;
++ ASN1_STRING_set(ext_oct, ext_der, ext_len);
+ X509_EXTENSION_set_data(ext, ext_oct);
+
+ ASN1_OCTET_STRING_free(ext_oct);
+@@ -518,7 +527,7 @@ mimicExtensions(Security::CertPointer & cert, Security::CertPointer const &mimic
+ SBuf
+ Ssl::AsnToSBuf(const ASN1_STRING &buffer)
+ {
+- return SBuf(reinterpret_cast<const char *>(buffer.data), buffer.length);
++ return SBuf(reinterpret_cast<const char *>(ASN1_STRING_get0_data(&buffer)), ASN1_STRING_length(&buffer));
+ }
+
+ /// OpenSSL ASN1_STRING_to_UTF8() wrapper
+@@ -547,7 +556,7 @@ Ssl::ParseAsSimpleDomainNameOrIp(const SBuf &text)
+ }
+
+ std::optional<AnyP::Host>
+-Ssl::ParseCommonNameAt(X509_NAME &name, const int cnIndex)
++Ssl::ParseCommonNameAt(const X509_NAME &name, const int cnIndex)
+ {
+ const auto cn = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(&name, cnIndex));
+ if (!cn) {
+@@ -576,7 +585,7 @@ Ssl::ParseCommonNameAt(X509_NAME &name, const int cnIndex)
+ static bool
+ addAltNameWithSubjectCn(Security::CertPointer &cert)
+ {
+- X509_NAME *name = X509_get_subject_name(cert.get());
++ const X509_NAME *name = X509_get_subject_name(cert.get());
+ if (!name)
+ return false;
+
+@@ -610,7 +619,7 @@ static bool buildCertificate(Security::CertPointer & cert, Ssl::CertificatePrope
+ // returns a pointer to the existing subject name. Nothing to clean here.
+ if (properties.mimicCert.get()) {
+ // Leave subject empty if we cannot extract it from true cert.
+- if (X509_NAME *name = X509_get_subject_name(properties.mimicCert.get())) {
++ if (const X509_NAME *name = X509_get_subject_name(properties.mimicCert.get())) {
+ // X509_set_subject_name will call X509_dup for name
+ X509_set_subject_name(cert.get(), name);
+ }
+@@ -656,7 +665,7 @@ static bool buildCertificate(Security::CertPointer & cert, Ssl::CertificatePrope
+ bool useCommonNameAsAltName = true;
+ // mimic the alias and possibly subjectAltName
+ if (properties.mimicCert.get()) {
+- unsigned char *alStr;
++ const unsigned char *alStr;
+ int alLen;
+ alStr = X509_alias_get0(properties.mimicCert.get(), &alLen);
+ if (alStr) {
+@@ -667,7 +676,7 @@ static bool buildCertificate(Security::CertPointer & cert, Ssl::CertificatePrope
+ // certificates with CN unrelated to subjectAltNames.
+ if (!properties.setCommonName) {
+ int pos = X509_get_ext_by_NID(properties.mimicCert.get(), NID_subject_alt_name, -1);
+- X509_EXTENSION *ext=X509_get_ext(properties.mimicCert.get(), pos);
++ X509_EXTENSION *ext = const_cast<X509_EXTENSION *>(X509_get_ext(properties.mimicCert.get(), pos));
+ if (ext) {
+ if (X509_add_ext(cert.get(), ext, -1))
+ ++addedExtensions;
+@@ -922,20 +931,23 @@ Ssl::WritePrivateKey(Ssl::BIO_Pointer &bio, const Security::PrivateKeyPointer &p
+ }
+
+ Ssl::UniqueCString
+-Ssl::OneLineSummary(X509_NAME &name)
++Ssl::OneLineSummary(const X509_NAME &name)
+ {
+ return Ssl::UniqueCString(X509_NAME_oneline(&name, nullptr, 0));
+ }
+
+ bool Ssl::sslDateIsInTheFuture(char const * date)
+ {
+- ASN1_UTCTIME tm;
+- tm.flags = 0;
+- tm.type = 23;
+- tm.data = (unsigned char *)date;
+- tm.length = strlen(date);
+-
+- return (X509_cmp_current_time(&tm) > 0);
++ ASN1_UTCTIME *tm = ASN1_UTCTIME_new();
++ if (!tm)
++ return false;
++ if (!ASN1_UTCTIME_set_string(tm, date)) {
++ ASN1_UTCTIME_free(tm);
++ return false;
++ }
++ int result = X509_cmp_current_time(tm);
++ ASN1_UTCTIME_free(tm);
++ return (result > 0);
+ }
+
+ /// Print the time represented by a ASN1_TIME struct to a string using GeneralizedTime format
+@@ -945,14 +957,18 @@ static bool asn1timeToGeneralizedTimeStr(ASN1_TIME *aTime, char *buf, int bufLen
+ // UTCTime has the form YYMMDDHHMMSS[Z | [+|-]offset]
+ // GeneralizedTime has the form YYYYMMDDHHMMSS[Z | [+|-] offset]
+
++ const unsigned char *data = ASN1_STRING_get0_data(aTime);
++ int length = ASN1_STRING_length(aTime);
++ int type = ASN1_STRING_type(aTime);
++
+ // length should have space for data plus 2 extra bytes for the two extra year fields
+ // plus the '\0' char.
+- if ((aTime->length + 3) > bufLen)
++ if ((length + 3) > bufLen)
+ return false;
+
+ char *str;
+- if (aTime->type == V_ASN1_UTCTIME) {
+- if (aTime->data[0] > '5') { // RFC 2459, section 4.1.2.5.1
++ if (type == V_ASN1_UTCTIME) {
++ if (data[0] > '5') { // RFC 2459, section 4.1.2.5.1
+ buf[0] = '1';
+ buf[1] = '9';
+ } else {
+@@ -960,11 +976,11 @@ static bool asn1timeToGeneralizedTimeStr(ASN1_TIME *aTime, char *buf, int bufLen
+ buf[1] = '0';
+ }
+ str = buf +2;
+- } else // if (aTime->type == V_ASN1_GENERALIZEDTIME)
++ } else // if (type == V_ASN1_GENERALIZEDTIME)
+ str = buf;
+
+- memcpy(str, aTime->data, aTime->length);
+- str[aTime->length] = '\0';
++ memcpy(str, data, length);
++ str[length] = '\0';
+ return true;
+ }
+
+@@ -996,8 +1012,8 @@ bool Ssl::certificateMatchesProperties(X509 *cert, CertificateProperties const &
+ return true;
+
+ if (!properties.setCommonName) {
+- X509_NAME *cert1_name = X509_get_subject_name(cert);
+- X509_NAME *cert2_name = X509_get_subject_name(cert2);
++ const X509_NAME *cert1_name = X509_get_subject_name(cert);
++ const X509_NAME *cert2_name = X509_get_subject_name(cert2);
+ if (X509_NAME_cmp(cert1_name, cert2_name) != 0)
+ return false;
+ } else if (properties.commonName != CommonHostName(cert))
+diff --git a/src/ssl/gadgets.h b/src/ssl/gadgets.h
+index e0c60c3a3..4c487596b 100644
+--- a/src/ssl/gadgets.h
++++ b/src/ssl/gadgets.h
+@@ -160,7 +160,7 @@ bool WriteX509Certificate(BIO_Pointer &bio, const Security::CertPointer & cert);
+ bool WritePrivateKey(BIO_Pointer &bio, const Security::PrivateKeyPointer &pkey);
+
+ /// a RAII wrapper for the memory-allocating flavor of X509_NAME_oneline()
+-UniqueCString OneLineSummary(X509_NAME &);
++UniqueCString OneLineSummary(const X509_NAME &);
+
+ /**
+ \ingroup SslCrtdSslAPI
+@@ -285,7 +285,7 @@ const char *CommonHostName(X509 *x509);
+ SBuf AsnToSBuf(const ASN1_STRING &);
+
+ /// interprets X.509 Subject or Issuer name entry (at the given position) as CN
+-std::optional<AnyP::Host> ParseCommonNameAt(X509_NAME &, int);
++std::optional<AnyP::Host> ParseCommonNameAt(const X509_NAME &, int);
+
+ /// interprets the given buffer as either a textual representation of an IP
+ /// address (if possible) or a domain name without wildcard support (otherwise)
+diff --git a/src/ssl/support.cc b/src/ssl/support.cc
+index e7872035c..09f268a7e 100644
+--- a/src/ssl/support.cc
++++ b/src/ssl/support.cc
+@@ -272,23 +272,23 @@ ParseSubjectAltName(const GENERAL_NAME &san)
+
+ // RFC 5280 section 4.2.1.6 signals IPv4/IPv6 address family using data length
+
+- if (san.d.iPAddress->length == 4) {
++ if (ASN1_STRING_length(san.d.iPAddress) == 4) {
+ struct in_addr addr;
+ static_assert(sizeof(addr.s_addr) == 4);
+- memcpy(&addr.s_addr, san.d.iPAddress->data, sizeof(addr.s_addr));
++ memcpy(&addr.s_addr, ASN1_STRING_get0_data(san.d.iPAddress), sizeof(addr.s_addr));
+ const Ip::Address ip(addr);
+ return AnyP::Host::ParseIp(ip);
+ }
+
+- if (san.d.iPAddress->length == 16) {
++ if (ASN1_STRING_length(san.d.iPAddress) == 16) {
+ struct in6_addr addr;
+ static_assert(sizeof(addr.s6_addr) == 16);
+- memcpy(&addr.s6_addr, san.d.iPAddress->data, sizeof(addr.s6_addr));
++ memcpy(&addr.s6_addr, ASN1_STRING_get0_data(san.d.iPAddress), sizeof(addr.s6_addr));
+ const Ip::Address ip(addr);
+ return AnyP::Host::ParseIp(ip);
+ }
+
+- debugs(83, 3, "unexpected length of an IP address SAN: " << san.d.iPAddress->length);
++ debugs(83, 3, "unexpected length of an IP address SAN: " << ASN1_STRING_length(san.d.iPAddress));
+ return std::nullopt;
+ }
+
+@@ -856,7 +856,7 @@ Ssl::InitClientContext(Security::ContextPointer &ctx, Security::PeerOptions &pee
+
+ /// \ingroup ServerProtocolSSLInternal
+ static const char *
+-ssl_get_attribute(X509_NAME * name, const char *attribute_name)
++ssl_get_attribute(const X509_NAME * name, const char *attribute_name)
+ {
+ static char buffer[1024];
+ buffer[0] = '\0';
+@@ -879,7 +879,7 @@ ssl_get_attribute(X509_NAME * name, const char *attribute_name)
+ const char *
+ Ssl::GetX509UserAttribute(X509 * cert, const char *attribute_name)
+ {
+- X509_NAME *name;
++ const X509_NAME *name;
+ const char *ret;
+
+ if (!cert)
+@@ -933,7 +933,7 @@ const char *
+ Ssl::GetX509CAAttribute(X509 * cert, const char *attribute_name)
+ {
+
+- X509_NAME *name;
++ const X509_NAME *name;
+ const char *ret;
+
+ if (!cert)
+@@ -1484,7 +1484,7 @@ void Ssl::InRamCertificateDbKey(const Ssl::CertificateProperties &certProperties
+ if (certProperties.mimicCert) {
+ if (auto *sig = Ssl::X509_get_signature(certProperties.mimicCert)) {
+ origSignatureAsKey = true;
+- key.append((const char *)sig->data, sig->length);
++ key.append((const char *)ASN1_STRING_get0_data(sig), ASN1_STRING_length(sig));
+ }
+ }
+
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 57/66] package/sudo: Add support for OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (55 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 56/66] package/squid: " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 58/66] package/systemd: Fix build with " Bernd Kuhls
` (8 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...-for-getting-an-ASN1_STRING-s-length.patch | 46 +++++++++++++++++++
1 file changed, 46 insertions(+)
create mode 100644 package/sudo/0002-Use-accessor-for-getting-an-ASN1_STRING-s-length.patch
diff --git a/package/sudo/0002-Use-accessor-for-getting-an-ASN1_STRING-s-length.patch b/package/sudo/0002-Use-accessor-for-getting-an-ASN1_STRING-s-length.patch
new file mode 100644
index 0000000000..eec375f70c
--- /dev/null
+++ b/package/sudo/0002-Use-accessor-for-getting-an-ASN1_STRING-s-length.patch
@@ -0,0 +1,46 @@
+From f97a34bc7b390f185d544e21b0ef75db1275953e Mon Sep 17 00:00:00 2001
+From: Theo Buehler <tb@openbsd.org>
+Date: Sat, 22 Nov 2025 12:28:50 +0100
+Subject: [PATCH] Use accessor for getting an ASN1_STRING's length
+
+OpensSSL 4 has plans to make ASN1_STRING opaque [1]. hostcheck.c's code
+mostly treats it as opaque, but accesses two lengths. This is API added
+in OpenSSL 0.9.0, so I'm not sure we need a configure check.
+
+WolfSSL only recently const corrected ASN1_STRING_length(), so maybe
+there will be a need to cast away const.
+
+[1]: https://github.com/openssl/openssl/issues/29117
+
+Upstream: https://github.com/sudo-project/sudo/commit/f97a34bc7b390f185d544e21b0ef75db1275953e
+
+[Bernd: backported to 1.9.17p2]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ lib/iolog/hostcheck.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/iolog/hostcheck.c b/lib/iolog/hostcheck.c
+index dbb900e71..8383d2c49 100644
+--- a/lib/iolog/hostcheck.c
++++ b/lib/iolog/hostcheck.c
+@@ -323,14 +323,14 @@ matches_subject_alternative_name(const char *hostname,
+ #endif
+
+ /* IPV4 address */
+- if(current_name->d.iPAddress->length == 4) {
++ if(ASN1_STRING_length(current_name->d.iPAddress) == 4) {
+ if (inet_ntop(AF_INET, san_ip, san_ip_str, INET_ADDRSTRLEN) == NULL) {
+ result = MalformedCertificate;
+ break;
+ }
+ #if defined(HAVE_STRUCT_IN6_ADDR)
+ /* IPV6 address */
+- } else if (current_name->d.iPAddress->length == 16) {
++ } else if (ASN1_STRING_length(current_name->d.iPAddress) == 16) {
+ if (inet_ntop(AF_INET6, san_ip, san_ip_str, INET6_ADDRSTRLEN) == NULL) {
+ result = MalformedCertificate;
+ break;
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 58/66] package/systemd: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (56 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 57/66] package/sudo: Add support for " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 59/66] package/thrift: Fix build with LibreSSL and OpenSSL 4.x Bernd Kuhls
` (7 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot; +Cc: Norbert Lange, Sen Hastings
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Norbert Lange <nolange79@gmail.com>
Cc: Sen Hastings <sen@hastings.org>
---
...compilation-with-openssl-4.0.0-beta1.patch | 86 +++++++++++++++++++
1 file changed, 86 insertions(+)
create mode 100644 package/systemd/0001-various-fix-compilation-with-openssl-4.0.0-beta1.patch
diff --git a/package/systemd/0001-various-fix-compilation-with-openssl-4.0.0-beta1.patch b/package/systemd/0001-various-fix-compilation-with-openssl-4.0.0-beta1.patch
new file mode 100644
index 0000000000..d38be8d51b
--- /dev/null
+++ b/package/systemd/0001-various-fix-compilation-with-openssl-4.0.0-beta1.patch
@@ -0,0 +1,86 @@
+From 693ecaac7e12c120d1323478b2433d77367aa0c9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@amutable.com>
+Date: Tue, 14 Apr 2026 18:59:07 +0200
+Subject: [PATCH] various: fix compilation with openssl-4.0.0-beta1
+
+Various types have been made opaque, so we need to use some accessor
+functions.
+
+Upstream: https://github.com/systemd/systemd/commit/693ecaac7e12c120d1323478b2433d77367aa0c9
+
+[Bernd: rebased for 258.7]
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/sbsign/sbsign.c | 5 +++--
+ src/shared/pkcs11-util.c | 15 ++++++++-------
+ 2 files changed, 11 insertions(+), 9 deletions(-)
+
+diff --git a/src/sbsign/sbsign.c b/src/sbsign/sbsign.c
+index ee1c0f77ab..f54dacf65a 100644
+--- a/src/sbsign/sbsign.c
++++ b/src/sbsign/sbsign.c
+@@ -262,8 +262,9 @@ static int spc_indirect_data_content_new(const void *digest, size_t digestsz, ui
+ return log_error_errno(SYNTHETIC_ERRNO(EIO), "Failed to get SpcPeImageData object: %s",
+ ERR_error_string(ERR_get_error(), NULL));
+
+- idc->data->value->value.sequence->data = TAKE_PTR(peidraw);
+- idc->data->value->value.sequence->length = peidrawsz;
++ if (!ASN1_STRING_set(idc->data->value->value.sequence, peidraw, peidrawsz))
++ return log_error_errno(SYNTHETIC_ERRNO(EIO), "Failed to set ASN1_STRING data.");
++
+ idc->messageDigest->digestAlgorithm->algorithm = OBJ_nid2obj(NID_sha256);
+ if (!idc->messageDigest->digestAlgorithm->algorithm)
+ return log_error_errno(SYNTHETIC_ERRNO(EIO), "Failed to get SHA256 object: %s",
+diff --git a/src/shared/pkcs11-util.c b/src/shared/pkcs11-util.c
+index 165fefbea1..96b25c4ac3 100644
+--- a/src/shared/pkcs11-util.c
++++ b/src/shared/pkcs11-util.c
+@@ -555,7 +555,11 @@ int pkcs11_token_read_public_key(
+ return log_debug_errno(SYNTHETIC_ERRNO(EIO), "Failed to init an EVP_PKEY_CTX for EC.");
+
+ OSSL_PARAM ec_params[8] = {
+- OSSL_PARAM_octet_string(OSSL_PKEY_PARAM_PUB_KEY, os->data, os->length)
++ /* We need to drop the const from the data param, because ec_params is
++ * modified below. But we'll not modify ec_params[0]. */
++ OSSL_PARAM_octet_string(OSSL_PKEY_PARAM_PUB_KEY,
++ (unsigned char *) ASN1_STRING_get0_data(os),
++ ASN1_STRING_length(os)),
+ };
+
+ _cleanup_free_ void *order = NULL, *p = NULL, *a = NULL, *b = NULL, *generator = NULL;
+@@ -683,13 +687,10 @@ int pkcs11_token_read_x509_certificate(
+ CK_OBJECT_HANDLE object,
+ X509 **ret_cert) {
+
+- _cleanup_free_ char *t = NULL;
+ CK_ATTRIBUTE attribute = {
+ .type = CKA_VALUE
+ };
+ CK_RV rv;
+- _cleanup_(X509_freep) X509 *x509 = NULL;
+- X509_NAME *name = NULL;
+ int r;
+
+ r = dlopen_p11kit();
+@@ -713,15 +714,15 @@ int pkcs11_token_read_x509_certificate(
+ "Failed to read X.509 certificate data off token: %s", sym_p11_kit_strerror(rv));
+
+ const unsigned char *p = attribute.pValue;
+- x509 = d2i_X509(NULL, &p, attribute.ulValueLen);
++ _cleanup_(X509_freep) X509 *x509 = d2i_X509(NULL, &p, attribute.ulValueLen);
+ if (!x509)
+ return log_debug_errno(SYNTHETIC_ERRNO(EBADMSG), "Failed to parse X.509 certificate.");
+
+- name = X509_get_subject_name(x509);
++ const X509_NAME *name = X509_get_subject_name(x509);
+ if (!name)
+ return log_debug_errno(SYNTHETIC_ERRNO(EBADMSG), "Failed to acquire X.509 subject name.");
+
+- t = X509_NAME_oneline(name, NULL, 0);
++ _cleanup_free_ char *t = X509_NAME_oneline(name, NULL, 0);
+ if (!t)
+ return log_debug_errno(SYNTHETIC_ERRNO(EIO), "Failed to format X.509 subject name as string.");
+
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 59/66] package/thrift: Fix build with LibreSSL and OpenSSL 4.x
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (57 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 58/66] package/systemd: Fix build with " Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 60/66] package/thrift: Fix build with OpenSSL 4.0.0 Bernd Kuhls
` (6 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Buildroot commit cf2471a9d958b0eaa2db3508e96b465eaa481f3e bumped the
package from 0.14.1 to 0.22.0 which includes upstream commit
https://github.com/apache/thrift/commit/98be76fc033f1d66bcfd09d4a22b86e8061e89c2
This commit added OPENSSL_thread_stop() which is not provided by
LibreSSL causing a build error.
To fix the problem we add an upstream patch which is a merged version
of LibreSSL fixes[1] and fixes for the upcoming OpenSSL bump to 4.0.0.
Fixes:
https://autobuild.buildroot.net/results/242/242ea99f1c1c29fcc364d59a6a7efc8f11bcf76e/
[1] https://github.com/apache/thrift/pull/3736
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...sport-Make-it-compatible-with-OpenSS.patch | 193 ++++++++++++++++++
1 file changed, 193 insertions(+)
create mode 100644 package/thrift/0002-THRIFT-6170-transport-Make-it-compatible-with-OpenSS.patch
diff --git a/package/thrift/0002-THRIFT-6170-transport-Make-it-compatible-with-OpenSS.patch b/package/thrift/0002-THRIFT-6170-transport-Make-it-compatible-with-OpenSS.patch
new file mode 100644
index 0000000000..7a5cfc5ce1
--- /dev/null
+++ b/package/thrift/0002-THRIFT-6170-transport-Make-it-compatible-with-OpenSS.patch
@@ -0,0 +1,193 @@
+From e460f4277fabede007c751969ab8fc161eadaa16 Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+Date: Sun, 30 Aug 2026 10:19:00 +0200
+Subject: [PATCH] THRIFT-6170: transport: Make it compatible with OpenSSL 4.0
+
+Make it compatible with OpenSSL 4.0:
+- Don't use ERR_remove_state(). It has been an empty stub since OpenSSL
+ 1.1.0 and got finally removed in 4.0-
+
+- SSLv3_method(), TLSv1_method(), TLSv1_1_method() and TLSv1_2_method()
+ have been removed. The recommendation is to use TLS_method() instead.
+ LATEST points to TLSv1_2_method which is not going to work.
+ Make SSLTLS and LATEST point to TLS_method() for newer OpenSSL which
+ uses the highest supported protocol version.
+ Adjust the testsuite to only test those two.
+
+- The return value of a few functions such as X509_get_subject_name()
+ has been made const. Use the const pointer only for newer OpenSSL.
+
+- While at it, pull the libressl related change from #3736
+
+Client: cpp,c_glib.
+
+Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+
+Upstream: https://github.com/apache/thrift/pull/3761
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ .../c_glib/transport/thrift_ssl_socket.c | 11 ++++++++++
+ lib/cpp/src/thrift/transport/TSSLSocket.cpp | 20 +++++++++++++++----
+ lib/cpp/test/SecurityFromBufferTest.cpp | 10 ++++++++++
+ lib/cpp/test/SecurityTest.cpp | 10 ++++++++++
+ 4 files changed, 47 insertions(+), 4 deletions(-)
+
+diff --git a/lib/c_glib/src/thrift/c_glib/transport/thrift_ssl_socket.c b/lib/c_glib/src/thrift/c_glib/transport/thrift_ssl_socket.c
+index d6c7bb2ba..0681831cb 100644
+--- a/lib/c_glib/src/thrift/c_glib/transport/thrift_ssl_socket.c
++++ b/lib/c_glib/src/thrift/c_glib/transport/thrift_ssl_socket.c
+@@ -285,7 +285,9 @@ thrift_ssl_socket_close (ThriftTransport *transport, GError **error)
+ SSL_shutdown(ssl_socket->ssl);
+ SSL_free(ssl_socket->ssl);
+ ssl_socket->ssl = NULL;
++#if OPENSSL_VERSION_NUMBER < 0x40000000L
+ ERR_remove_state(0);
++#endif
+ }
+ return thrift_socket_close(transport, error);
+ }
+@@ -710,7 +712,9 @@ void thrift_ssl_socket_finalize_openssl(void)
+ ERR_free_strings();
+ EVP_cleanup();
+ CRYPTO_cleanup_all_ex_data();
++#if OPENSSL_VERSION_NUMBER < 0x40000000L
+ ERR_remove_state(0);
++#endif
+ }
+
+
+@@ -832,6 +836,12 @@ thrift_ssl_socket_context_initialize(ThriftSSLSocketProtocol ssl_protocol, GErro
+ {
+ SSL_CTX* context = NULL;
+ switch(ssl_protocol){
++#if OPENSSL_VERSION_NUMBER >= 0x40000000L
++ case SSLTLS:
++ case LATEST:
++ context = SSL_CTX_new(TLS_method());
++ break;
++#else
+ case SSLTLS:
+ context = SSL_CTX_new(SSLv23_method());
+ break;
+@@ -849,6 +859,7 @@ thrift_ssl_socket_context_initialize(ThriftSSLSocketProtocol ssl_protocol, GErro
+ case TLSv1_2:
+ context = SSL_CTX_new(TLSv1_2_method());
+ break;
++#endif
+ default:
+ g_set_error (error, THRIFT_TRANSPORT_ERROR,
+ THRIFT_SSL_SOCKET_ERROR_CIPHER_NOT_AVAILABLE,
+diff --git a/lib/cpp/src/thrift/transport/TSSLSocket.cpp b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
+index 48b96ebf7..e8d69a329 100644
+--- a/lib/cpp/src/thrift/transport/TSSLSocket.cpp
++++ b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
+@@ -157,7 +157,7 @@ void cleanupOpenSSL() {
+ #endif
+ EVP_cleanup();
+ CRYPTO_cleanup_all_ex_data();
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000
++#if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
+ // Do nothing unless an openssl derivative is detected
+ # if !defined(OPENSSL_IS_BORINGSSL) && !defined(OPENSSL_IS_AWSLC)
+ // https://www.openssl.org/docs/man1.1.1/man3/OPENSSL_thread_stop.html
+@@ -180,6 +180,10 @@ static char uppercase(char c);
+
+ // SSLContext implementation
+ SSLContext::SSLContext(const SSLProtocol& protocol) {
++#if OPENSSL_VERSION_NUMBER >= 0x40000000L
++ if (protocol == SSLTLS || protocol == LATEST) {
++ ctx_ = SSL_CTX_new(TLS_method());
++#else
+ if (protocol == SSLTLS) {
+ ctx_ = SSL_CTX_new(SSLv23_method());
+ #ifndef OPENSSL_NO_SSL3
+@@ -192,6 +196,7 @@ SSLContext::SSLContext(const SSLProtocol& protocol) {
+ ctx_ = SSL_CTX_new(TLSv1_1_method());
+ } else if (protocol == TLSv1_2) {
+ ctx_ = SSL_CTX_new(TLSv1_2_method());
++#endif
+ } else {
+ /// UNKNOWN PROTOCOL!
+ throw TSSLException("SSL_CTX_new: Unknown protocol");
+@@ -405,7 +410,7 @@ void TSSLSocket::close() {
+ SSL_free(ssl_);
+ ssl_ = nullptr;
+ handshakeCompleted_ = false;
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000
++#if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
+ // Do nothing unless an openssl derivative is detected
+ # if !defined(OPENSSL_IS_BORINGSSL) && !defined(OPENSSL_IS_AWSLC)
+ // https://www.openssl.org/docs/man1.1.1/man3/OPENSSL_thread_stop.html
+@@ -800,9 +805,16 @@ void TSSLSocket::authorize() {
+ }
+
+ // extract commonName
++#if OPENSSL_VERSION_NUMBER >= 0x40000000L
++ const X509_NAME* name = X509_get_subject_name(cert);
++ const X509_NAME_ENTRY* entry;
++ const ASN1_STRING* common;
++#else
+ X509_NAME* name = X509_get_subject_name(cert);
++ X509_NAME_ENTRY* entry;
++ ASN1_STRING* common;
++#endif
+ if (name != nullptr) {
+- X509_NAME_ENTRY* entry;
+ unsigned char* utf8;
+ int last = -1;
+ while (decision == AccessManager::SKIP) {
+@@ -812,7 +824,7 @@ void TSSLSocket::authorize() {
+ entry = X509_NAME_get_entry(name, last);
+ if (entry == nullptr)
+ continue;
+- ASN1_STRING* common = X509_NAME_ENTRY_get_data(entry);
++ common = X509_NAME_ENTRY_get_data(entry);
+ int size = ASN1_STRING_to_UTF8(&utf8, common);
+ if (host.empty()) {
+ host = (server() ? getPeerHost() : getHost());
+diff --git a/lib/cpp/test/SecurityFromBufferTest.cpp b/lib/cpp/test/SecurityFromBufferTest.cpp
+index 08f76b3f2..1ff64087a 100644
+--- a/lib/cpp/test/SecurityFromBufferTest.cpp
++++ b/lib/cpp/test/SecurityFromBufferTest.cpp
+@@ -235,6 +235,16 @@ BOOST_AUTO_TEST_CASE(ssl_security_matrix) {
+ continue;
+ }
+ #endif
++#if OPENSSL_VERSION_NUMBER >= 0x40000000L
++ if (!(si == apache::thrift::transport::SSLTLS ||
++ si == apache::thrift::transport::LATEST) ||
++ !(ci == apache::thrift::transport::SSLTLS ||
++ ci == apache::thrift::transport::LATEST))
++ {
++ // Only SSLTLS / LATEST is supported.
++ continue;
++ }
++#endif
+
+ boost::mutex::scoped_lock lock(mMutex);
+
+diff --git a/lib/cpp/test/SecurityTest.cpp b/lib/cpp/test/SecurityTest.cpp
+index 86640bd68..44815dfc7 100644
+--- a/lib/cpp/test/SecurityTest.cpp
++++ b/lib/cpp/test/SecurityTest.cpp
+@@ -364,6 +364,16 @@ BOOST_AUTO_TEST_CASE(ssl_security_matrix)
+ continue;
+ }
+ #endif
++#if OPENSSL_VERSION_NUMBER >= 0x40000000L
++ if (!(si == apache::thrift::transport::SSLTLS ||
++ si == apache::thrift::transport::LATEST) ||
++ !(ci == apache::thrift::transport::SSLTLS ||
++ ci == apache::thrift::transport::LATEST))
++ {
++ // Only SSLTLS / LATEST is supported.
++ continue;
++ }
++#endif
+
+ boost::mutex::scoped_lock lock(mMutex);
+
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 60/66] package/thrift: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (58 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 59/66] package/thrift: Fix build with LibreSSL and OpenSSL 4.x Bernd Kuhls
@ 2026-09-29 18:35 ` Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 61/66] package/tpm2-openssl: " Bernd Kuhls
` (5 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:35 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...recated-OpenSSL-API-ASN1_STRING_data.patch | 35 +++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 package/thrift/0003-Replace-deprecated-OpenSSL-API-ASN1_STRING_data.patch
diff --git a/package/thrift/0003-Replace-deprecated-OpenSSL-API-ASN1_STRING_data.patch b/package/thrift/0003-Replace-deprecated-OpenSSL-API-ASN1_STRING_data.patch
new file mode 100644
index 0000000000..279daef4e2
--- /dev/null
+++ b/package/thrift/0003-Replace-deprecated-OpenSSL-API-ASN1_STRING_data.patch
@@ -0,0 +1,35 @@
+From d586077a37e14446cf385893608ea9e60a59d083 Mon Sep 17 00:00:00 2001
+From: Brad Smith <brad@comstyle.com>
+Date: Sun, 23 Aug 2026 01:26:50 -0400
+Subject: [PATCH] Replace deprecated OpenSSL API ASN1_STRING_data()
+
+ASN1_STRING_data() has been deprecated since OpenSSL 1.1.0. Replace
+with ASN1_STRING_get0_data(). ASN1_STRING_data() has been removed
+with OpenSSL 4.
+
+Upstream: https://github.com/apache/thrift/commit/d586077a37e14446cf385893608ea9e60a59d083
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ lib/cpp/src/thrift/transport/TSSLSocket.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/lib/cpp/src/thrift/transport/TSSLSocket.cpp b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
+index bb8dfd13f..48b96ebf7 100644
+--- a/lib/cpp/src/thrift/transport/TSSLSocket.cpp
++++ b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
+@@ -770,7 +770,11 @@ void TSSLSocket::authorize() {
+ if (name == nullptr) {
+ continue;
+ }
++#if OPENSSL_VERSION_NUMBER >= 0x10100000
++ const char* data = (const char*)ASN1_STRING_get0_data(name->d.ia5);
++#else
+ char* data = (char*)ASN1_STRING_data(name->d.ia5);
++#endif
+ int length = ASN1_STRING_length(name->d.ia5);
+ switch (name->type) {
+ case GEN_DNS:
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 61/66] package/tpm2-openssl: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (59 preceding siblings ...)
2026-09-29 18:35 ` [Buildroot] [PATCH v7 60/66] package/thrift: Fix build with OpenSSL 4.0.0 Bernd Kuhls
@ 2026-09-29 18:36 ` Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 62/66] package/trousers: " Bernd Kuhls
` (4 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:36 UTC (permalink / raw)
To: buildroot; +Cc: Romain Naour
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Romain Naour <romain.naour@gmail.com>
---
...TRING-and-X509_NAME-access-for-OpenS.patch | 87 +++++++++++++++++++
1 file changed, 87 insertions(+)
create mode 100644 package/tpm2-openssl/0001-Fix-ASN1_OCTET_STRING-and-X509_NAME-access-for-OpenS.patch
diff --git a/package/tpm2-openssl/0001-Fix-ASN1_OCTET_STRING-and-X509_NAME-access-for-OpenS.patch b/package/tpm2-openssl/0001-Fix-ASN1_OCTET_STRING-and-X509_NAME-access-for-OpenS.patch
new file mode 100644
index 0000000000..85393734f0
--- /dev/null
+++ b/package/tpm2-openssl/0001-Fix-ASN1_OCTET_STRING-and-X509_NAME-access-for-OpenS.patch
@@ -0,0 +1,87 @@
+From 6dcc3b2984e3f4dc1849c79d89c6ce736a8435b3 Mon Sep 17 00:00:00 2001
+From: Petr Gotthard <petr.gotthard@advantech.cz>
+Date: Sat, 7 Mar 2026 15:51:12 +0100
+Subject: [PATCH] Fix ASN1_OCTET_STRING and X509_NAME access for OpenSSL 4.0
+ compatibility
+
+Fixes: #166
+
+Upstream: https://github.com/tpm2-software/tpm2-openssl/commit/6dcc3b2984e3f4dc1849c79d89c6ce736a8435b3
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/tpm2-provider-pkey.c | 8 ++++----
+ test/ec_genpkey_x509_csr.c | 10 ++++++----
+ test/rsa_pki/etc/email.conf | 2 +-
+ 3 files changed, 11 insertions(+), 9 deletions(-)
+
+diff --git a/src/tpm2-provider-pkey.c b/src/tpm2-provider-pkey.c
+index 38f748e..80213af 100644
+--- a/src/tpm2-provider-pkey.c
++++ b/src/tpm2-provider-pkey.c
+@@ -149,13 +149,13 @@ tpm2_keydata_read(BIO *bin, TPM2_KEYDATA *keydata, TPM2_PKEY_FORMAT format)
+ strcmp(type_oid, OID_loadableKey))
+ goto error;
+
+- if (Tss2_MU_TPM2B_PRIVATE_Unmarshal(tpk->privkey->data,
+- tpk->privkey->length, NULL,
++ if (Tss2_MU_TPM2B_PRIVATE_Unmarshal(ASN1_STRING_get0_data(tpk->privkey),
++ ASN1_STRING_length(tpk->privkey), NULL,
+ &keydata->priv))
+ goto error;
+
+- if (Tss2_MU_TPM2B_PUBLIC_Unmarshal(tpk->pubkey->data,
+- tpk->pubkey->length, NULL,
++ if (Tss2_MU_TPM2B_PUBLIC_Unmarshal(ASN1_STRING_get0_data(tpk->pubkey),
++ ASN1_STRING_length(tpk->pubkey), NULL,
+ &keydata->pub))
+ goto error;
+
+diff --git a/test/ec_genpkey_x509_csr.c b/test/ec_genpkey_x509_csr.c
+index e3523ec..5c9790a 100644
+--- a/test/ec_genpkey_x509_csr.c
++++ b/test/ec_genpkey_x509_csr.c
+@@ -15,7 +15,7 @@ int generate_csr(const char *password, const char *filename)
+ EVP_PKEY_CTX *pctx = NULL;
+ EVP_PKEY *pkey = NULL;
+ X509_REQ *x509 = NULL;
+- X509_NAME *name;
++ X509_NAME *name = NULL;
+ STACK_OF(X509_EXTENSION) *exts = NULL;
+ X509_EXTENSION *ex;
+ FILE *csr_file = NULL;
+@@ -40,9 +40,10 @@ int generate_csr(const char *password, const char *filename)
+ || X509_REQ_set_pubkey(x509, pkey) != 1)
+ goto error1;
+
+- name = X509_REQ_get_subject_name(x509);
+- if (!X509_NAME_add_entry_by_NID(name, NID_countryName, MBSTRING_ASC, (unsigned char *)"CZ", -1, -1, 0)
+- || !X509_NAME_add_entry_by_NID(name, NID_commonName, MBSTRING_ASC, (const unsigned char *)"www.example.com", -1, -1, 0))
++ if (!(name = X509_NAME_new())
++ || !X509_NAME_add_entry_by_NID(name, NID_countryName, MBSTRING_ASC, (unsigned char *)"CZ", -1, -1, 0)
++ || !X509_NAME_add_entry_by_NID(name, NID_commonName, MBSTRING_ASC, (const unsigned char *)"www.example.com", -1, -1, 0)
++ || X509_REQ_set_subject_name(x509, name) != 1)
+ goto error1;
+
+ // set requested extensions
+@@ -75,6 +76,7 @@ error2:
+ fclose(csr_file);
+ error1:
+ sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free);
++ X509_NAME_free(name);
+ X509_REQ_free(x509);
+ EVP_PKEY_free(pkey);
+ EVP_PKEY_CTX_free(pctx);
+diff --git a/test/rsa_pki/etc/email.conf b/test/rsa_pki/etc/email.conf
+index 7606c38..73c06d2 100644
+--- a/test/rsa_pki/etc/email.conf
++++ b/test/rsa_pki/etc/email.conf
+@@ -24,4 +24,4 @@ emailAddress = "fred@simple.org"
+ keyUsage = critical,digitalSignature,keyEncipherment
+ extendedKeyUsage = emailProtection,clientAuth
+ subjectKeyIdentifier = hash
+-subjectAltName = email:move
++subjectAltName = email:copy
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 62/66] package/trousers: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (60 preceding siblings ...)
2026-09-29 18:36 ` [Buildroot] [PATCH v7 61/66] package/tpm2-openssl: " Bernd Kuhls
@ 2026-09-29 18:36 ` Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 63/66] package/uboot-tools: " Bernd Kuhls
` (3 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:36 UTC (permalink / raw)
To: buildroot; +Cc: Noé Rubinstein
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Noé Rubinstein <noe.rubinstein@gmail.com>
---
package/trousers/0004-openssl4.patch | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 package/trousers/0004-openssl4.patch
diff --git a/package/trousers/0004-openssl4.patch b/package/trousers/0004-openssl4.patch
new file mode 100644
index 0000000000..5ef6cb19b0
--- /dev/null
+++ b/package/trousers/0004-openssl4.patch
@@ -0,0 +1,26 @@
+Description: Fix for OpenSSL4 compatibility
+ Replace direct access to opaque ASN1_OCTET_STRING->data field with
+ ASN1_STRING_get0_data() accessor. ASN1_STRING is fully opaque in OpenSSL 4.0.
+Author: Ravi Kant Sharma <ravi.kant.sharma@canonical.com>
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/2155003
+Bug-Debian: https://bugs.debian.org/1138451
+Forwarded: no
+
+Patch downloaded from Debian:
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1138451#12
+
+Upstream: https://sourceforge.net/p/trousers/bugs/240/
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+
+--- a/src/tspi/tspi_asn1.c
++++ b/src/tspi/tspi_asn1.c
+@@ -237,7 +237,7 @@
+
+ if (*rawBlobSize != 0) {
+ if (decBlobSize <= *rawBlobSize) {
+- memcpy(rawBlob, tssBlob->blob->data, decBlobSize);
++ memcpy(rawBlob, ASN1_STRING_get0_data(tssBlob->blob), decBlobSize);
+ }
+ else {
+ TSS_BLOB_free(tssBlob);
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 63/66] package/uboot-tools: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (61 preceding siblings ...)
2026-09-29 18:36 ` [Buildroot] [PATCH v7 62/66] package/trousers: " Bernd Kuhls
@ 2026-09-29 18:36 ` Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 64/66] package/xmrig: Add support for " Bernd Kuhls
` (2 subsequent siblings)
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:36 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
...Add-support-for-OpenSSL-Provider-API.patch | 304 ++++++++++++++++++
1 file changed, 304 insertions(+)
create mode 100644 package/uboot-tools/0003-Add-support-for-OpenSSL-Provider-API.patch
diff --git a/package/uboot-tools/0003-Add-support-for-OpenSSL-Provider-API.patch b/package/uboot-tools/0003-Add-support-for-OpenSSL-Provider-API.patch
new file mode 100644
index 0000000000..9a5071cae3
--- /dev/null
+++ b/package/uboot-tools/0003-Add-support-for-OpenSSL-Provider-API.patch
@@ -0,0 +1,304 @@
+From 9f78e701fa5a4faf69119d9fe1e485e76de2fe3b Mon Sep 17 00:00:00 2001
+From: Eddie Kovsky <ewk@edkovsky.org>
+Date: Mon, 23 Feb 2026 09:43:22 -0700
+Subject: [PATCH] Add support for OpenSSL Provider API
+
+The Engine API has been deprecated since the release of OpenSSL 3.0. End
+users have been advised to migrate to the new Provider interface.
+Several distributions have already removed support for engines, which is
+preventing U-Boot from being compiled in those environments.
+
+Add support for the Provider API while continuing to support the existing
+Engine API on distros shipping older releases of OpenSSL.
+
+This is based on similar work contributed by Jan Stancek updating Linux
+to use the Provider interface.
+
+ commit 558bdc45dfb2669e1741384a0c80be9c82fa052c
+ Author: Jan Stancek <jstancek@redhat.com>
+ Date: Fri Sep 20 19:52:48 2024 +0300
+
+ sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
+
+The changes have been tested with the FIT signature verification vboot
+tests on Fedora 42 and Debian 13. All 30 tests pass with both the legacy
+Engine library installed and with the Provider API.
+
+Signed-off-by: Eddie Kovsky <ewk@edkovsky.org>
+
+Upstream: https://github.com/u-boot/u-boot/pull/918
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ lib/aes/aes-encrypt.c | 4 +-
+ lib/rsa/rsa-sign.c | 102 +++++++++++++++++++++++++++++++++++++++---
+ 2 files changed, 100 insertions(+), 6 deletions(-)
+
+diff --git a/lib/aes/aes-encrypt.c b/lib/aes/aes-encrypt.c
+index 90e1407b4f0..4fc4ce23247 100644
+--- a/lib/aes/aes-encrypt.c
++++ b/lib/aes/aes-encrypt.c
+@@ -16,7 +16,9 @@
+ #include <openssl/err.h>
+ #include <openssl/ssl.h>
+ #include <openssl/evp.h>
+-#include <openssl/engine.h>
++#if !defined(OPENSSL_NO_ENGINE) && !defined(OPENSSL_NO_DEPRECATED_3_0)
++# include <openssl/engine.h>
++#endif
+ #include <uboot_aes.h>
+
+ #if OPENSSL_VERSION_NUMBER >= 0x10000000L
+diff --git a/lib/rsa/rsa-sign.c b/lib/rsa/rsa-sign.c
+index 0e38c9e802f..f456f3c58e6 100644
+--- a/lib/rsa/rsa-sign.c
++++ b/lib/rsa/rsa-sign.c
+@@ -19,7 +19,47 @@
+ #include <openssl/err.h>
+ #include <openssl/ssl.h>
+ #include <openssl/evp.h>
+-#include <openssl/engine.h>
++#if OPENSSL_VERSION_MAJOR >= 3
++# define USE_PKCS11_PROVIDER
++# include <err.h>
++# include <openssl/provider.h>
++# include <openssl/store.h>
++#else
++# if !defined(OPENSSL_NO_ENGINE) && !defined(OPENSSL_NO_DEPRECATED_3_0)
++# define USE_PKCS11_ENGINE
++# include <openssl/engine.h>
++# endif
++#endif
++
++#ifdef USE_PKCS11_PROVIDER
++#define ERR(cond, fmt, ...) \
++ do { \
++ bool __cond = (cond); \
++ drain_openssl_errors(__LINE__, 0); \
++ if (__cond) { \
++ errx(1, fmt, ## __VA_ARGS__); \
++ } \
++ } while (0)
++
++static void drain_openssl_errors(int l, int silent)
++{
++ const char *file;
++ char buf[120];
++ int e, line;
++
++ if (ERR_peek_error() == 0)
++ return;
++ if (!silent)
++ fprintf(stderr, "At main.c:%d:\n", l);
++
++ while ((e = ERR_peek_error_line(&file, &line))) {
++ ERR_error_string(e, buf);
++ if (!silent)
++ fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
++ ERR_get_error();
++ }
++}
++#endif
+
+ static int rsa_err(const char *msg)
+ {
+@@ -94,10 +134,11 @@ err_cert:
+ *
+ * @keydir: Key prefix
+ * @name Name of key
+- * @engine Engine to use
++ * @engine Engine to use or NULL when using pkcs11 provider
+ * @evpp Returns EVP_PKEY object, or NULL on failure
+ * Return: 0 if ok, -ve on error (in which case *evpp will be set to NULL)
+ */
++#ifdef USE_PKCS11_ENGINE
+ static int rsa_engine_get_pub_key(const char *keydir, const char *name,
+ ENGINE *engine, EVP_PKEY **evpp)
+ {
+@@ -157,21 +198,24 @@ static int rsa_engine_get_pub_key(const char *keydir, const char *name,
+
+ return 0;
+ }
++#endif
+
+ /**
+ * rsa_get_pub_key() - read a public key
+ *
+ * @keydir: Directory containing the key (PEM file) or key prefix (engine)
+ * @name Name of key file (will have a .crt extension)
+- * @engine Engine to use
++ * @engine Engine to use or NULL when using pkcs11 provider
+ * @evpp Returns EVP_PKEY object, or NULL on failure
+ * Return: 0 if ok, -ve on error (in which case *evpp will be set to NULL)
+ */
+ static int rsa_get_pub_key(const char *keydir, const char *name,
+ ENGINE *engine, EVP_PKEY **evpp)
+ {
++#ifdef USE_PKCS11_ENGINE
+ if (engine)
+ return rsa_engine_get_pub_key(keydir, name, engine, evpp);
++#endif
+ return rsa_pem_get_pub_key(keydir, name, evpp);
+ }
+
+@@ -207,13 +251,44 @@ static int rsa_pem_get_priv_key(const char *keydir, const char *name,
+ return -ENOENT;
+ }
+
++#ifdef USE_PKCS11_PROVIDER
++ EVP_PKEY *private_key = NULL;
++ OSSL_STORE_CTX *store;
++
++ if (!OSSL_PROVIDER_try_load(NULL, "pkcs11", true))
++ ERR(1, "OSSL_PROVIDER_try_load(pkcs11)");
++ if (!OSSL_PROVIDER_try_load(NULL, "default", true))
++ ERR(1, "OSSL_PROVIDER_try_load(default)");
++
++ store = OSSL_STORE_open(path, NULL, NULL, NULL, NULL);
++ ERR(!store, "OSSL_STORE_open");
++
++ while (!OSSL_STORE_eof(store)) {
++ OSSL_STORE_INFO *info = OSSL_STORE_load(store);
++
++ if (!info) {
++ drain_openssl_errors(__LINE__, 0);
++ continue;
++ }
++ if (OSSL_STORE_INFO_get_type(info) == OSSL_STORE_INFO_PKEY) {
++ private_key = OSSL_STORE_INFO_get1_PKEY(info);
++ ERR(!private_key, "OSSL_STORE_INFO_get1_PKEY");
++ }
++ OSSL_STORE_INFO_free(info);
++ if (private_key)
++ break;
++ }
++ OSSL_STORE_close(store);
++
++ *evpp = private_key;
++#else
+ if (!PEM_read_PrivateKey(f, evpp, NULL, path)) {
+ rsa_err("Failure reading private key");
+ fclose(f);
+ return -EPROTO;
+ }
+ fclose(f);
+-
++#endif
+ return 0;
+ }
+
+@@ -226,6 +301,7 @@ static int rsa_pem_get_priv_key(const char *keydir, const char *name,
+ * @evpp Returns EVP_PKEY object, or NULL on failure
+ * Return: 0 if ok, -ve on error (in which case *evpp will be set to NULL)
+ */
++#ifdef USE_PKCS11_ENGINE
+ static int rsa_engine_get_priv_key(const char *keydir, const char *name,
+ const char *keyfile,
+ ENGINE *engine, EVP_PKEY **evpp)
+@@ -293,22 +369,25 @@ static int rsa_engine_get_priv_key(const char *keydir, const char *name,
+
+ return 0;
+ }
++#endif
+
+ /**
+ * rsa_get_priv_key() - read a private key
+ *
+ * @keydir: Directory containing the key (PEM file) or key prefix (engine)
+ * @name Name of key
+- * @engine Engine to use for signing
++ * @engine Engine to use or NULL when using pkcs11 provider
+ * @evpp Returns EVP_PKEY object, or NULL on failure
+ * Return: 0 if ok, -ve on error (in which case *evpp will be set to NULL)
+ */
+ static int rsa_get_priv_key(const char *keydir, const char *name,
+ const char *keyfile, ENGINE *engine, EVP_PKEY **evpp)
+ {
++#ifdef USE_PKCS11_ENGINE
+ if (engine)
+ return rsa_engine_get_priv_key(keydir, name, keyfile, engine,
+ evpp);
++#endif
+ return rsa_pem_get_priv_key(keydir, name, keyfile, evpp);
+ }
+
+@@ -325,6 +404,7 @@ static int rsa_init(void)
+ return 0;
+ }
+
++#ifdef USE_PKCS11_ENGINE
+ static int rsa_engine_init(const char *engine_id, ENGINE **pe)
+ {
+ const char *key_pass;
+@@ -380,6 +460,7 @@ static void rsa_engine_remove(ENGINE *e)
+ ENGINE_free(e);
+ }
+ }
++#endif
+
+ static int rsa_sign_with_key(EVP_PKEY *pkey, struct padding_algo *padding_algo,
+ struct checksum_algo *checksum_algo,
+@@ -480,11 +561,13 @@ int rsa_sign(struct image_sign_info *info,
+ if (ret)
+ return ret;
+
++#ifdef USE_PKCS11_ENGINE
+ if (info->engine_id) {
+ ret = rsa_engine_init(info->engine_id, &e);
+ if (ret)
+ return ret;
+ }
++#endif
+
+ ret = rsa_get_priv_key(info->keydir, info->keyname, info->keyfile,
+ e, &pkey);
+@@ -496,16 +579,21 @@ int rsa_sign(struct image_sign_info *info,
+ goto err_sign;
+
+ EVP_PKEY_free(pkey);
++
++#ifdef USE_PKCS11_ENGINE
+ if (info->engine_id)
+ rsa_engine_remove(e);
++#endif
+
+ return ret;
+
+ err_sign:
+ EVP_PKEY_free(pkey);
+ err_priv:
++#ifdef USE_PKCS11_ENGINE
+ if (info->engine_id)
+ rsa_engine_remove(e);
++#endif
+ return ret;
+ }
+
+@@ -645,11 +733,13 @@ int rsa_add_verify_data(struct image_sign_info *info, void *keydest)
+ ENGINE *e = NULL;
+
+ debug("%s: Getting verification data\n", __func__);
++#ifdef USE_PKCS11_ENGINE
+ if (info->engine_id) {
+ ret = rsa_engine_init(info->engine_id, &e);
+ if (ret)
+ return ret;
+ }
++#endif
+ ret = rsa_get_pub_key(info->keydir, info->keyname, e, &pkey);
+ if (ret)
+ goto err_get_pub_key;
+@@ -726,8 +816,10 @@ done:
+ err_get_params:
+ EVP_PKEY_free(pkey);
+ err_get_pub_key:
++#ifdef USE_PKCS11_ENGINE
+ if (info->engine_id)
+ rsa_engine_remove(e);
++#endif
+
+ if (ret)
+ return ret;
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 64/66] package/xmrig: Add support for OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (62 preceding siblings ...)
2026-09-29 18:36 ` [Buildroot] [PATCH v7 63/66] package/uboot-tools: " Bernd Kuhls
@ 2026-09-29 18:36 ` Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 65/66] package/znc: Fix build with " Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 66/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:36 UTC (permalink / raw)
To: buildroot
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
.../0001-Fix-build-with-OpenSSL-4.0.0.patch | 40 +++++++++++++++++++
1 file changed, 40 insertions(+)
create mode 100644 package/xmrig/0001-Fix-build-with-OpenSSL-4.0.0.patch
diff --git a/package/xmrig/0001-Fix-build-with-OpenSSL-4.0.0.patch b/package/xmrig/0001-Fix-build-with-OpenSSL-4.0.0.patch
new file mode 100644
index 0000000000..966744abbd
--- /dev/null
+++ b/package/xmrig/0001-Fix-build-with-OpenSSL-4.0.0.patch
@@ -0,0 +1,40 @@
+From 357fab10b79e49dc9b8f42dc6cf425a8124a3f40 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Sat, 2 May 2026 16:45:38 +0200
+Subject: [PATCH] Fix build with OpenSSL 4.0.0
+
+src/base/net/tls/TlsGen.cpp: In member function 'bool
+ xmrig::TlsGen::generate_x509(const char*)':
+src/base/net/tls/TlsGen.cpp:118:32: error: invalid conversion from
+ 'const X509_name_st*' to 'X509_NAME*' {aka 'X509_name_st*'}
+ [-fpermissive]
+ 118 | X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_ASC, reinterpret_cast<const uint8_t *>(commonName), -1, -1, 0);
+ | ^~~~
+ | |
+ | const X509_name_st*
+
+https://github.com/openssl/openssl/issues/29117
+
+Upstream: https://github.com/xmrig/xmrig/pull/3808
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/base/net/tls/TlsGen.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/base/net/tls/TlsGen.cpp b/src/base/net/tls/TlsGen.cpp
+index ad2e648b..59e4f0c9 100644
+--- a/src/base/net/tls/TlsGen.cpp
++++ b/src/base/net/tls/TlsGen.cpp
+@@ -115,7 +115,7 @@ bool xmrig::TlsGen::generate_x509(const char *commonName)
+ X509_gmtime_adj(X509_get_notAfter(m_x509), 315360000L);
+
+ auto name = X509_get_subject_name(m_x509);
+- X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_ASC, reinterpret_cast<const uint8_t *>(commonName), -1, -1, 0);
++ X509_NAME_add_entry_by_txt((X509_NAME *) name, "CN", MBSTRING_ASC, reinterpret_cast<const uint8_t *>(commonName), -1, -1, 0);
+
+ X509_set_issuer_name(m_x509, name);
+
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 65/66] package/znc: Fix build with OpenSSL 4.0.0
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (63 preceding siblings ...)
2026-09-29 18:36 ` [Buildroot] [PATCH v7 64/66] package/xmrig: Add support for " Bernd Kuhls
@ 2026-09-29 18:36 ` Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 66/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:36 UTC (permalink / raw)
To: buildroot; +Cc: Cédric Chépied
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Cédric Chépied <cedric.chepied@gmail.com>
---
...-Fix-build-error-with-OpenSSL-4-2024.patch | 57 +++++++++++++++++++
1 file changed, 57 insertions(+)
create mode 100644 package/znc/0001-Fix-build-error-with-OpenSSL-4-2024.patch
diff --git a/package/znc/0001-Fix-build-error-with-OpenSSL-4-2024.patch b/package/znc/0001-Fix-build-error-with-OpenSSL-4-2024.patch
new file mode 100644
index 0000000000..1dc7eb28fb
--- /dev/null
+++ b/package/znc/0001-Fix-build-error-with-OpenSSL-4-2024.patch
@@ -0,0 +1,57 @@
+From 94bcf919e1163564e637df8d437585bc7b55e7aa Mon Sep 17 00:00:00 2001
+From: Ravi Kant Sharma <rks1986@gmail.com>
+Date: Mon, 29 Jun 2026 20:03:27 +0200
+Subject: [PATCH] Fix build error with OpenSSL 4 (#2024)
+
+More details here https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1138356
+
+Upstream: https://github.com/znc/znc/commit/94bcf919e1163564e637df8d437585bc7b55e7aa
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ src/SSLVerifyHost.cpp | 4 ++--
+ src/Utils.cpp | 5 ++++-
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/SSLVerifyHost.cpp b/src/SSLVerifyHost.cpp
+index ccc20898..99b215bc 100644
+--- a/src/SSLVerifyHost.cpp
++++ b/src/SSLVerifyHost.cpp
+@@ -306,8 +306,8 @@ typedef enum {
+ static HostnameValidationResult matches_common_name(const char* hostname,
+ const X509* server_cert) {
+ int common_name_loc = -1;
+- X509_NAME_ENTRY* common_name_entry = nullptr;
+- ASN1_STRING* common_name_asn1 = nullptr;
++ const X509_NAME_ENTRY* common_name_entry = nullptr;
++ const ASN1_STRING* common_name_asn1 = nullptr;
+ CONST_ASN1_STRING_DATA char* common_name_str = nullptr;
+
+ // Find the position of the CN field in the Subject field of the certificate
+diff --git a/src/Utils.cpp b/src/Utils.cpp
+index ed2c9c83..744f61d1 100644
+--- a/src/Utils.cpp
++++ b/src/Utils.cpp
+@@ -129,7 +129,8 @@ void CUtils::GenerateCert(FILE* pOut) {
+ sEmailAddr += "@";
+ sEmailAddr += sHostName;
+
+- X509_NAME* pName = X509_get_subject_name(pCert.get());
++ X509_NAME* pName = X509_NAME_new();
++ if (!pName) return;
+ X509_NAME_add_entry_by_txt(pName, "OU", MBSTRING_ASC,
+ (unsigned char*)pLogName, -1, -1, 0);
+ X509_NAME_add_entry_by_txt(pName, "CN", MBSTRING_ASC,
+@@ -137,7 +138,9 @@ void CUtils::GenerateCert(FILE* pOut) {
+ X509_NAME_add_entry_by_txt(pName, "emailAddress", MBSTRING_ASC,
+ (unsigned char*)sEmailAddr.c_str(), -1, -1, 0);
+
++ X509_set_subject_name(pCert.get(), pName);
+ X509_set_issuer_name(pCert.get(), pName);
++ X509_NAME_free(pName);
+
+ if (!X509_sign(pCert.get(), pKey.get(), EVP_sha256())) return;
+
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* [Buildroot] [PATCH v7 66/66] package/libopenssl: bump version to 4.0.3
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
` (64 preceding siblings ...)
2026-09-29 18:36 ` [Buildroot] [PATCH v7 65/66] package/znc: Fix build with " Bernd Kuhls
@ 2026-09-29 18:36 ` Bernd Kuhls
65 siblings, 0 replies; 73+ messages in thread
From: Bernd Kuhls @ 2026-09-29 18:36 UTC (permalink / raw)
To: buildroot
Cc: Andrey Yurovsky, Angelo Compagnucci, Brandon Maier, David GOUARIN,
Heiko Thiery, Joris Lijssens, Stefan Ott, Thomas Devoogdt
https://openssl-library.org/post/2026-04-14-openssl-40-final-release/
https://github.com/openssl/openssl/blob/openssl-4.0.3/CHANGES.md#openssl-40
The following section results in updates to many packages:
" * `ASN1_STRING` has been made opaque.
* Signatures of numerous API functions, including those that are related
to X509 processing, are changed to include `const` qualifiers for argument
and return types, where suitable."
More infos can be found here:
https://openssl-library.org/post/2026-04-13-asn1_string/
The following section resulted in new legacy options and changes to
many packages to maintain bisectability:
" * Removed support for SSLv3. SSLv3 has been deprecated since 2015,
and OpenSSL had it disabled by default since version 1.1.0 (2016).
* Removed support for engines. The `no-engine` build option
and the `OPENSSL_NO_ENGINE` macro are always present."
More infos can be found here:
https://openssl-library.org/post/2026-04-07-ssl3/index.html
https://openssl-library.org/post/2025-12-18-remove-engines/index.html
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Cc: Andrey Yurovsky <yurovsky@gmail.com>
Cc: Angelo Compagnucci <angelo.compagnucci@gmail.com>
Cc: Brandon Maier <brandon.maier@collins.com>
Cc: David GOUARIN <dgouarin@gmail.com>
Cc: Heiko Thiery <heiko.thiery@gmail.com>
Cc: Joris Lijssens <joris.lijssens@gmail.com>
Cc: Stefan Ott <stefan@ott.net>
Cc: Thomas Devoogdt <thomas@devoogdt.com>
---
Config.in.legacy | 36 ++++++++++++++++++++++++++++++
package/apr-util/Config.in | 1 -
package/dovecot/Config.in | 1 -
package/fluent-bit/Config.in | 1 -
package/libcoap/Config.in | 1 -
package/libks/Config.in | 1 -
package/libldns/libldns.mk | 8 +------
package/libopenssl/Config.in | 34 ----------------------------
package/libopenssl/libopenssl.hash | 4 ++--
package/libopenssl/libopenssl.mk | 18 +--------------
package/libp11/Config.in | 1 -
package/libp11/libp11.mk | 3 +--
package/librelp/Config.in | 1 -
package/libssh/Config.in | 1 -
package/luvi/Config.in | 1 -
package/mender/Config.in | 1 -
package/mtd/Config.in | 1 -
package/openssh/openssh.mk | 8 +------
package/rauc/Config.in | 2 --
package/rauc/rauc.mk | 3 ++-
package/softhsm2/Config.in | 1 -
package/unbound/Config.in | 1 -
package/unbound/unbound.mk | 1 +
23 files changed, 45 insertions(+), 85 deletions(-)
diff --git a/Config.in.legacy b/Config.in.legacy
index a6f97db08c..77eae31330 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -146,6 +146,42 @@ endif
comment "Legacy options removed in 2026.11"
+config BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL
+ bool "OpenSSL SSL support has been removed"
+ select BR2_LEGACY
+ help
+ OpenSSL 4.x removed SSL support
+
+config BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3
+ bool "OpenSSL SSL3 support has been removed"
+ select BR2_LEGACY
+ help
+ OpenSSL 4.x removed SSL3 support
+
+config BR2_PACKAGE_LIBOPENSSL_ENGINES
+ bool "OpenSSL additional engines has been removed"
+ select BR2_LEGACY
+ help
+ OpenSSL 4.x removed engines support
+
+config BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE
+ bool "OpenSSL dynamic engine has been removed"
+ select BR2_LEGACY
+ help
+ OpenSSL 4.x removed engines support
+
+config BR2_PACKAGE_LIBOPENSSL_ENABLE_LOADER_ENGINE
+ bool "OpenSSL 'loader_attic' engine has been removed"
+ select BR2_LEGACY
+ help
+ OpenSSL 4.x removed engines support
+
+config BR2_PACKAGE_LIBOPENSSL_ENABLE_PADLOCK_ENGINE
+ bool "OpenSSL padlock engine has been removed"
+ select BR2_LEGACY
+ help
+ OpenSSL 4.x removed engines support
+
config BR2_PACKAGE_QT6OPCUA
bool "qt6opcua has been removed"
select BR2_LEGACY
diff --git a/package/apr-util/Config.in b/package/apr-util/Config.in
index 06b6c2684c..2a28d5f5aa 100644
--- a/package/apr-util/Config.in
+++ b/package/apr-util/Config.in
@@ -6,7 +6,6 @@ config BR2_PACKAGE_APR_UTIL
select BR2_PACKAGE_APR
select BR2_PACKAGE_EXPAT
select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL
help
The utility library for the apache runtime project
diff --git a/package/dovecot/Config.in b/package/dovecot/Config.in
index 6753160c27..e6c1f92d07 100644
--- a/package/dovecot/Config.in
+++ b/package/dovecot/Config.in
@@ -3,7 +3,6 @@ config BR2_PACKAGE_DOVECOT
depends on !BR2_STATIC_LIBS
depends on BR2_USE_MMU # fork()
select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
- select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL
select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC
select BR2_PACKAGE_PCRE2_32 if BR2_PACKAGE_PCRE2
select BR2_PACKAGE_OPENSSL
diff --git a/package/fluent-bit/Config.in b/package/fluent-bit/Config.in
index 2af6279744..51655f9a2f 100644
--- a/package/fluent-bit/Config.in
+++ b/package/fluent-bit/Config.in
@@ -4,7 +4,6 @@ config BR2_PACKAGE_FLUENT_BIT
depends on BR2_TOOLCHAIN_HAS_SYNC_4
depends on !BR2_STATIC_LIBS # dlfcn.h
select BR2_PACKAGE_C_ARES
- select BR2_PACKAGE_LIBOPENSSL_ENGINES # needed by bundled librdkafka
select BR2_PACKAGE_LIBYAML
select BR2_PACKAGE_MSGPACK_C
select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC
diff --git a/package/libcoap/Config.in b/package/libcoap/Config.in
index 2bd6b742e9..7fb6ad8533 100644
--- a/package/libcoap/Config.in
+++ b/package/libcoap/Config.in
@@ -1,7 +1,6 @@
config BR2_PACKAGE_LIBCOAP
bool "libcoap"
select BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK if BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL
help
libcoap is a C implementation of a lightweight
application-protocol for devices that are constrained their
diff --git a/package/libks/Config.in b/package/libks/Config.in
index 17a008d7a0..4781d188bf 100644
--- a/package/libks/Config.in
+++ b/package/libks/Config.in
@@ -4,7 +4,6 @@ config BR2_PACKAGE_LIBKS
depends on !BR2_STATIC_LIBS # dlfcn.h
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_setname_np()
select BR2_PACKAGE_OPENSSL
- select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL
select BR2_PACKAGE_UTIL_LINUX
select BR2_PACKAGE_UTIL_LINUX_LIBUUID
help
diff --git a/package/libldns/libldns.mk b/package/libldns/libldns.mk
index 13fe854460..49cb44d51c 100644
--- a/package/libldns/libldns.mk
+++ b/package/libldns/libldns.mk
@@ -24,17 +24,11 @@ LIBLDNS_CONF_OPTS = \
--without-pyldnsx
ifeq ($(BR2_PACKAGE_LIBOPENSSL),y)
-LIBLDNS_CONF_OPTS += --enable-dane-verify
+LIBLDNS_CONF_OPTS += --enable-dane-verify --disable-gost
else
LIBLDNS_CONF_OPTS += --disable-dane-verify
endif
-ifeq ($(BR2_PACKAGE_LIBOPENSSL_ENGINES),y)
-LIBLDNS_CONF_OPTS += --enable-gost
-else
-LIBLDNS_CONF_OPTS += --disable-gost
-endif
-
ifeq ($(BR2_STATIC_LIBS),y)
LIBLDNS_DEPENDENCIES += host-pkgconf
# missing -lz breaks configure, add it using pkgconf
diff --git a/package/libopenssl/Config.in b/package/libopenssl/Config.in
index 03d3def802..69ad0b9875 100644
--- a/package/libopenssl/Config.in
+++ b/package/libopenssl/Config.in
@@ -40,11 +40,6 @@ config BR2_PACKAGE_LIBOPENSSL_BIN
to the target file system. This is a command line tool for
doing various cryptographic stuff.
-config BR2_PACKAGE_LIBOPENSSL_ENGINES
- bool "openssl additional engines"
- help
- Install additional encryption engine libraries.
-
config BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA
bool "enable CHACHA"
default y
@@ -98,14 +93,6 @@ config BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH
bool "enable BLOWFISH"
default y
-config BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL
- bool "enable SSL"
- default y
-
-config BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3
- bool "enable SSL3"
- default y
-
config BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL
bool "enable WEAK_SSL"
default y
@@ -125,10 +112,6 @@ config BR2_PACKAGE_LIBOPENSSL_UNSECURE
Enable unit-test crypto-mdebug-backtrace
crypto-mdebug autoerrinit mode.
-config BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE
- bool "enable dynamic engine"
- default y
-
config BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP
bool "enable compression"
default y
@@ -173,23 +156,6 @@ config BR2_PACKAGE_LIBOPENSSL_ENABLE_ECX
Build with ECX support. Disabling this option can be used
to disable support for X25519, X448, and EdDSA.
-config BR2_PACKAGE_LIBOPENSSL_ENABLE_LOADER_ENGINE
- bool "enable 'loader_attic' engine"
- default y
- depends on BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE
- help
- Build with 'loader_attic' engine support, which is meant
- just for internal OpenSSL testing purposes and supports
- loading keys, parameters, certificates, and CRLs from files.
- When this engine is used, files with such credentials are
- read via this engine.
-
-config BR2_PACKAGE_LIBOPENSSL_ENABLE_PADLOCK_ENGINE
- bool "enable padlock engine"
- default y
- help
- Build the padlock engine.
-
config BR2_PACKAGE_LIBOPENSSL_ENABLE_MODULE
bool "enable modules"
default y
diff --git a/package/libopenssl/libopenssl.hash b/package/libopenssl/libopenssl.hash
index b7083cc3d7..bafce77d80 100644
--- a/package/libopenssl/libopenssl.hash
+++ b/package/libopenssl/libopenssl.hash
@@ -1,5 +1,5 @@
-# From https://github.com/openssl/openssl/releases/download/openssl-3.6.5/openssl-3.6.5.tar.gz.sha256
-sha256 a2157c2830efdec3788939b00c9b0638306d3f0bbb76dc4832ee503bb397df98 openssl-3.6.5.tar.gz
+# From https://github.com/openssl/openssl/releases/download/openssl-4.0.3/openssl-4.0.3.tar.gz.sha256
+sha256 325b5c806167c13b40b1ffeadfe0248197c00eccc4cf123ec1e28d2d2fd216d9 openssl-4.0.3.tar.gz
# License files
sha256 7d5450cb2d142651b8afa315b5f238efc805dad827d91ba367d8516bc9d49e7a LICENSE.txt
diff --git a/package/libopenssl/libopenssl.mk b/package/libopenssl/libopenssl.mk
index 4aad749eec..7c22d2b41c 100644
--- a/package/libopenssl/libopenssl.mk
+++ b/package/libopenssl/libopenssl.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LIBOPENSSL_VERSION = 3.6.5
+LIBOPENSSL_VERSION = 4.0.3
LIBOPENSSL_SITE = https://github.com/openssl/openssl/releases/download/openssl-$(LIBOPENSSL_VERSION)
LIBOPENSSL_SOURCE = openssl-$(LIBOPENSSL_VERSION).tar.gz
LIBOPENSSL_LICENSE = Apache-2.0
@@ -80,16 +80,13 @@ define LIBOPENSSL_CONFIGURE_CMDS
--openssldir=/etc/ssl \
$(if $(BR2_TOOLCHAIN_HAS_THREADS),threads,no-threads) \
$(if $(BR2_STATIC_LIBS),no-shared,shared) \
- $(if $(BR2_PACKAGE_CRYPTODEV_LINUX),enable-devcryptoeng) \
no-rc5 \
enable-camellia \
no-docs \
no-tests \
no-fuzz-libfuzzer \
no-fuzz-afl \
- no-afalgeng \
$(if $(BR2_PACKAGE_LIBOPENSSL_BIN),,no-apps) \
- $(if $(BR2_PACKAGE_LIBOPENSSL_ENGINES),,no-engine) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA),,no-chacha) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2),,no-rc2) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4),,no-rc4) \
@@ -103,21 +100,16 @@ define LIBOPENSSL_CONFIGURE_CMDS
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160),,no-rmd160) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL),,no-whirlpool) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH),,no-bf) \
- $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL),,no-ssl) \
- $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3),,no-ssl3) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL),,no-weak-ssl-ciphers) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK),,no-psk) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST),,no-cast) \
$(if $(BR2_PACKAGE_LIBOPENSSL_UNSECURE),,no-unit-test no-crypto-mdebug no-autoerrinit) \
- $(if $(BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE),,no-dynamic-engine ) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP),,no-comp) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_ARGON2),,no-argon2) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CACHED_FETCH),,no-cached-fetch) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CMP),,no-cmp) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_THREAD_POOL),,no-thread-pool no-default-thread-pool) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_ECX),,no-ecx) \
- $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_LOADER_ENGINE),,no-loadereng) \
- $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_PADLOCK_ENGINE),,no-padlockeng) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MODULE),,no-module) \
$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_QUIC),,no-quic) \
$(if $(BR2_PACKAGE_LIBOPENSSL_SECURE_MEMORY),,no-secure-memory) \
@@ -155,7 +147,6 @@ endef
define LIBOPENSSL_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
$(RM) -rf $(TARGET_DIR)/usr/lib/ssl
- $(RM) -f $(TARGET_DIR)/usr/bin/c_rehash
endef
# libdl has no business in a static build
@@ -175,12 +166,5 @@ endef
LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_PERL_SCRIPTS
endif
-ifeq ($(BR2_PACKAGE_LIBOPENSSL_ENGINES),)
-define LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES
- $(RM) -rf $(TARGET_DIR)/usr/lib/engines-3
-endef
-LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES
-endif
-
$(eval $(generic-package))
$(eval $(host-generic-package))
diff --git a/package/libp11/Config.in b/package/libp11/Config.in
index 3bf13a6051..3c7ccdee27 100644
--- a/package/libp11/Config.in
+++ b/package/libp11/Config.in
@@ -2,7 +2,6 @@ config BR2_PACKAGE_LIBP11
bool "libp11"
depends on !BR2_STATIC_LIBS # dlopen
depends on BR2_TOOLCHAIN_HAS_THREADS
- select BR2_PACKAGE_LIBOPENSSL_ENGINES
select BR2_PACKAGE_OPENSSL
select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
help
diff --git a/package/libp11/libp11.mk b/package/libp11/libp11.mk
index 38cc1c2e6d..e8c56b9db5 100644
--- a/package/libp11/libp11.mk
+++ b/package/libp11/libp11.mk
@@ -11,10 +11,9 @@ LIBP11_INSTALL_STAGING = YES
LIBP11_LICENSE = LGPL-2.1+
LIBP11_LICENSE_FILES = COPYING
-# pkg-config returns a libcrypto enginesdir prefixed with the sysroot,
+# pkg-config returns a libcrypto modulesdir prefixed with the sysroot,
# so let's rip it out.
LIBP11_CONF_OPTS = \
- --with-enginesdir=`$(PKG_CONFIG_HOST_BINARY) --variable enginesdir libcrypto | xargs readlink -f | sed 's%^$(STAGING_DIR)%%'` \
--with-modulesdir=`$(PKG_CONFIG_HOST_BINARY) --variable modulesdir libcrypto | xargs readlink -f | sed 's%^$(STAGING_DIR)%%'`
ifeq ($(BR2_PACKAGE_P11_KIT),y)
diff --git a/package/librelp/Config.in b/package/librelp/Config.in
index f1744bb60c..c0ae5fbe89 100644
--- a/package/librelp/Config.in
+++ b/package/librelp/Config.in
@@ -1,7 +1,6 @@
config BR2_PACKAGE_LIBRELP
bool "librelp"
depends on BR2_TOOLCHAIN_HAS_THREADS
- select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL
help
Reliable Event Logging Protocol library
diff --git a/package/libssh/Config.in b/package/libssh/Config.in
index bc9a02d9b0..1f271a692e 100644
--- a/package/libssh/Config.in
+++ b/package/libssh/Config.in
@@ -36,7 +36,6 @@ config BR2_PACKAGE_LIBSSH_LIBGCRYPT
config BR2_PACKAGE_LIBSSH_OPENSSL
bool "openssl"
depends on BR2_PACKAGE_OPENSSL
- select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL
endchoice
diff --git a/package/luvi/Config.in b/package/luvi/Config.in
index 04163141b0..bf366f020d 100644
--- a/package/luvi/Config.in
+++ b/package/luvi/Config.in
@@ -9,7 +9,6 @@ config BR2_PACKAGE_LUVI
select BR2_PACKAGE_LIBUV
select BR2_PACKAGE_LUV
select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL
help
A project in-between luv and luvit. The goal of this is to
make building luvit and derivatives much easier.
diff --git a/package/mender/Config.in b/package/mender/Config.in
index c9b9d0b757..4831548f76 100644
--- a/package/mender/Config.in
+++ b/package/mender/Config.in
@@ -6,7 +6,6 @@ config BR2_PACKAGE_MENDER
select BR2_PACKAGE_HOST_GO
select BR2_PACKAGE_OPENSSL
select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
- select BR2_PACKAGE_LIBOPENSSL_ENGINES
select BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4
select BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160
help
diff --git a/package/mtd/Config.in b/package/mtd/Config.in
index 1054106f81..f8a9badaf6 100644
--- a/package/mtd/Config.in
+++ b/package/mtd/Config.in
@@ -15,7 +15,6 @@ config BR2_PACKAGE_MTD_JFFS_UTILS
config BR2_PACKAGE_MTD_UBIFS_UTILS
bool
- select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL
select BR2_PACKAGE_UTIL_LINUX
select BR2_PACKAGE_UTIL_LINUX_LIBUUID
diff --git a/package/openssh/openssh.mk b/package/openssh/openssh.mk
index f2e1f235c0..651d6d46ee 100644
--- a/package/openssh/openssh.mk
+++ b/package/openssh/openssh.mk
@@ -23,6 +23,7 @@ OPENSSH_CONF_OPTS = \
--with-pid-dir=/var/run \
--with-default-path=$(BR2_SYSTEM_DEFAULT_PATH) \
$(if $(BR2_PACKAGE_OPENSSH_SANDBOX),--with-sandbox,--without-sandbox) \
+ --without-ssl-engine \
--disable-lastlog \
--disable-utmp \
--disable-utmpx \
@@ -55,13 +56,6 @@ ifeq ($(BR2_PACKAGE_LIBXCRYPT),y)
OPENSSH_DEPENDENCIES += libxcrypt
endif
-ifeq ($(BR2_PACKAGE_CRYPTODEV_LINUX),y)
-OPENSSH_DEPENDENCIES += cryptodev-linux
-OPENSSH_CONF_OPTS += --with-ssl-engine
-else
-OPENSSH_CONF_OPTS += --without-ssl-engine
-endif
-
ifeq ($(BR2_PACKAGE_AUDIT),y)
OPENSSH_DEPENDENCIES += audit
OPENSSH_CONF_OPTS += --with-audit=linux
diff --git a/package/rauc/Config.in b/package/rauc/Config.in
index 9a910963a3..76e9e8a651 100644
--- a/package/rauc/Config.in
+++ b/package/rauc/Config.in
@@ -6,8 +6,6 @@ config BR2_PACKAGE_RAUC
select BR2_PACKAGE_LIBGLIB2
select BR2_PACKAGE_OPENSSL
select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL # uses X509_PURPOSE_get_by_id
- # uses ENGINE_* API
- select BR2_PACKAGE_LIBOPENSSL_ENGINES
select BR2_PACKAGE_SQUASHFS # run-time dependency
help
RAUC is the Robust Auto-Update Controller developed by
diff --git a/package/rauc/rauc.mk b/package/rauc/rauc.mk
index 54974abc09..748da90f38 100644
--- a/package/rauc/rauc.mk
+++ b/package/rauc/rauc.mk
@@ -11,7 +11,7 @@ RAUC_LICENSE = LGPL-2.1
RAUC_LICENSE_FILES = COPYING
RAUC_CPE_ID_VENDOR = pengutronix
RAUC_DEPENDENCIES = host-pkgconf openssl libglib2
-RAUC_CONF_OPTS += -Dtests=false
+RAUC_CONF_OPTS += -Dtests=false -Dpkcs11_engine=false
ifeq ($(BR2_PACKAGE_RAUC_DBUS),y)
RAUC_CONF_OPTS += -Dservice=true
@@ -71,6 +71,7 @@ HOST_RAUC_DEPENDENCIES = \
HOST_RAUC_CONF_OPTS += \
-Djson=enabled \
-Dnetwork=false \
+ -Dpkcs11_engine=false \
-Dstreaming=false \
-Dservice=false \
-Dtests=false
diff --git a/package/softhsm2/Config.in b/package/softhsm2/Config.in
index c790e7a2b0..c22a371cba 100644
--- a/package/softhsm2/Config.in
+++ b/package/softhsm2/Config.in
@@ -7,7 +7,6 @@ config BR2_PACKAGE_SOFTHSM2
select BR2_PACKAGE_OPENSSL
select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
select BR2_PACKAGE_LIBOPENSSL_ENABLE_DES
- select BR2_PACKAGE_LIBOPENSSL_ENGINES
help
SoftHSM is an implementation of a cryptographic store
accessible through a PKCS#11 interface. You can use it
diff --git a/package/unbound/Config.in b/package/unbound/Config.in
index c8d697113c..ae2ebfd975 100644
--- a/package/unbound/Config.in
+++ b/package/unbound/Config.in
@@ -3,7 +3,6 @@ config BR2_PACKAGE_UNBOUND
depends on !BR2_STATIC_LIBS
select BR2_PACKAGE_EXPAT
select BR2_PACKAGE_LIBEVENT
- select BR2_PACKAGE_LIBOPENSSL_ENGINES if BR2_PACKAGE_LIBOPENSSL
select BR2_PACKAGE_OPENSSL
help
Unbound is a validating, recursive, and caching DNS resolver.
diff --git a/package/unbound/unbound.mk b/package/unbound/unbound.mk
index d6886d4a5d..938f656e94 100644
--- a/package/unbound/unbound.mk
+++ b/package/unbound/unbound.mk
@@ -12,6 +12,7 @@ UNBOUND_LICENSE = BSD-3-Clause
UNBOUND_LICENSE_FILES = LICENSE
UNBOUND_CPE_ID_VENDOR = nlnetlabs
UNBOUND_CONF_OPTS = \
+ --disable-gost \
--disable-rpath \
--disable-debug \
--with-conf-file=/etc/unbound/unbound.conf \
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 73+ messages in thread
* Re: [Buildroot] [PATCH v7 23/66] package/nmap: bump version to 7.991
2026-09-29 18:35 ` [Buildroot] [PATCH v7 23/66] package/nmap: bump version to 7.991 Bernd Kuhls
@ 2026-10-02 20:17 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 73+ messages in thread
From: Thomas Petazzoni via buildroot @ 2026-10-02 20:17 UTC (permalink / raw)
To: Bernd Kuhls; +Cc: buildroot
On Tue, Sep 29, 2026 at 08:35:22PM +0200, Bernd Kuhls wrote:
> Added patch to fix build error introduced by upstream commit
> https://github.com/nmap/nmap/commit/a24082eee41fcabf7fa180020e1771af3226b358
> which was first added to this release.
>
> Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Applied to master, thanks!
Best regards,
Thomas Petazzoni
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 73+ messages in thread
* Re: [Buildroot] [PATCH v7 34/66] package/ca-certificates: Replace c_rehash with openssl rehash
2026-09-29 18:35 ` [Buildroot] [PATCH v7 34/66] package/ca-certificates: Replace c_rehash with openssl rehash Bernd Kuhls
@ 2026-10-02 21:40 ` Fiona Klute via buildroot
2026-10-10 9:23 ` Thomas Perale via buildroot
1 sibling, 0 replies; 73+ messages in thread
From: Fiona Klute via buildroot @ 2026-10-02 21:40 UTC (permalink / raw)
To: Bernd Kuhls, buildroot; +Cc: Martin Bark
Am 29.09.26 um 20:35 schrieb Bernd Kuhls:
> The upcoming bump of libopenssl to 4.0.2 removes the c_rehash script:
>
> https://openssl-library.org/post/2026-04-14-openssl-40-final-release/
> https://github.com/openssl/openssl/blob/openssl-4.0.2/CHANGES.md#openssl-40
>
> "* Removed `c_rehash` script tool. Use `openssl rehash` instead."
>
> Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> Cc: Martin Bark <martin@barkynet.com>
Applied to master, thank you. I've extended the commit message to
mention how long c_rehash has been considered obsolete.
Best regards,
Fiona
> ---
> package/ca-certificates/ca-certificates.mk | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/package/ca-certificates/ca-certificates.mk b/package/ca-certificates/ca-certificates.mk
> index f5675b754d..0f88df3eec 100644
> --- a/package/ca-certificates/ca-certificates.mk
> +++ b/package/ca-certificates/ca-certificates.mk
> @@ -36,7 +36,7 @@ define CA_CERTIFICATES_GEN_BUNDLE
> done >$(BUILD_DIR)/ca-certificates.crt
>
> # Create symlinks to the certificates by their hash values
> - $(HOST_DIR)/bin/c_rehash $(TARGET_DIR)/etc/ssl/certs
> + $(HOST_DIR)/bin/openssl rehash $(TARGET_DIR)/etc/ssl/certs
>
> # Install the certificates bundle
> $(INSTALL) -D -m 644 $(BUILD_DIR)/ca-certificates.crt \
> @@ -65,7 +65,7 @@ define HOST_CA_CERTIFICATES_INSTALL_CMDS
> done >$(BUILD_DIR)/ca-certificates.crt
>
> # Create symlinks to the certificates by their hash values
> - $(HOST_DIR)/bin/c_rehash $(HOST_DIR)/etc/ssl/certs
> + $(HOST_DIR)/bin/openssl rehash $(HOST_DIR)/etc/ssl/certs
>
> # Install the certificates bundle
> $(INSTALL) -D -m 644 $(BUILD_DIR)/ca-certificates.crt \
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 73+ messages in thread
* Re: [Buildroot] [PATCH v7 22/66] package/dovecot{-pigeonhole}: security bump version to 2.4.5
2026-09-29 18:35 ` [Buildroot] [PATCH v7 22/66] package/dovecot{-pigeonhole}: security bump version to 2.4.5 Bernd Kuhls
@ 2026-10-03 13:14 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 73+ messages in thread
From: Thomas Petazzoni via buildroot @ 2026-10-03 13:14 UTC (permalink / raw)
To: Bernd Kuhls; +Cc: buildroot
On Tue, Sep 29, 2026 at 08:35:21PM +0200, Bernd Kuhls wrote:
> 2.4.0:
> https://dovecot.org/mailman3/archives/list/dovecot-news@dovecot.org/thread/UYNR6GBP25XEGFCS633SWPR4HXV3NSS3/
> "Pigeonhole versioning has been changed to match Dovecot versioning."
>
> "New 2.4 packages are not compatible with old 2.3 configuration, please
> carefully review https://doc.dovecot.org/2.4.0/installation/upgrade/2.3-to-2.4.html
> before installing the new packages."
[...]
Thanks, I've applied. To be honest, I'm still not entirely happy with
the patch marked:
> +Upstream: n/a (buildroot specific)
as I believe if there's an issue affecting us, it should be reported
upstream and discussed. Nevertheless, OK it's a one-liner, so let's
move on with your patch series, but it'd be good if you can bring it
up with upstream.
Thanks!
Thomas Petazzoni
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 73+ messages in thread
* Re: [Buildroot] [PATCH v7 26/66] package/resiprocate: security bump version to 1.14.0
2026-09-29 18:35 ` [Buildroot] [PATCH v7 26/66] package/resiprocate: security bump version to 1.14.0 Bernd Kuhls
@ 2026-10-03 13:41 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 73+ messages in thread
From: Thomas Petazzoni via buildroot @ 2026-10-03 13:41 UTC (permalink / raw)
To: Bernd Kuhls; +Cc: buildroot
On Tue, Sep 29, 2026 at 08:35:25PM +0200, Bernd Kuhls wrote:
> https://github.com/resiprocate/resiprocate/releases/tag/resiprocate-1.14.0
>
> Fixes the following security problems:
>
> Use CSPRNG for security-sensitive SIP/STUN/TURN tokens (CWE-338)
> Use crypto RNG when generating certificates and nonce
> Use crypto RNG to generate various IDs that are supposed to be unique
> Improve transaction ID uniqueness
> Authenticate STUN Binding responses (CWE-345)
> Add Digest Authentication Support for SHA256 and SHA512/256 algorithms
> Add new DigestStream class, capable of MD5, SHA1, SHA256, SHA512 and SHA512/256 hash algorithms
> TLS handshake fixes
> Avoid using undefined client verification mode in TLS connection
> Disable TLS compression by default
> Correct TLS logging
> Allow applications to get TLS connection/handshake errors
> Propagate SSL Certificate Validation errors to ConnectionTerminated event/message
> Cleanup SecurityAttributes
> WinSecurity: expand constructors to allow setting of defaultPrivateKeyPassPhrase and DHParamsFilename
> WinSecurity: perform normal preload process so that domain certificates can be loaded
>
> Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
I've applied... but in fact it breaks the build:
CMake Error at media/samples/CMakeLists.txt:9 (message):
The sox utility cannot be found.
Call Stack (most recent call first):
media/samples/CMakeLists.txt:23 (wav_to_header)
Build:
BR2_aarch64=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y
BR2_FORCE_HOST_BUILD=y
BR2_INIT_NONE=y
BR2_SYSTEM_BIN_SH_NONE=y
# BR2_PACKAGE_BUSYBOX is not set
BR2_PACKAGE_RESIPROCATE=y
# BR2_TARGET_ROOTFS_TAR is not set
in our Docker container.
Also, not related to the bump, but the CMake in our Docker container
by default segfaults at the build step on resiprocate (reproducible
before/after the version bump).
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 73+ messages in thread
* Re: [Buildroot] [PATCH v7 27/66] package/resiprocate: Fix build with OpenSSL 4.0.0
2026-09-29 18:35 ` [Buildroot] [PATCH v7 27/66] package/resiprocate: Fix build with OpenSSL 4.0.0 Bernd Kuhls
@ 2026-10-03 13:42 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 73+ messages in thread
From: Thomas Petazzoni via buildroot @ 2026-10-03 13:42 UTC (permalink / raw)
To: Bernd Kuhls; +Cc: buildroot
On Tue, Sep 29, 2026 at 08:35:26PM +0200, Bernd Kuhls wrote:
> Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> ---
> ...precated-OpenSSL-calls-fix-upcoming-.patch | 597 ++++++++++++++++++
> ...aining-build-errors-with-OpenSSL-4.x.patch | 47 ++
> 2 files changed, 644 insertions(+)
> create mode 100644 package/resiprocate/0001-ssl-modernize-deprecated-OpenSSL-calls-fix-upcoming-.patch
> create mode 100644 package/resiprocate/0002-ssl-Fix-remaining-build-errors-with-OpenSSL-4.x.patch
Applied. In patch 0002, I've updated the Upstream: tag to point to the
final commit that was merged.
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 73+ messages in thread
* Re: [Buildroot] [PATCH v7 34/66] package/ca-certificates: Replace c_rehash with openssl rehash
2026-09-29 18:35 ` [Buildroot] [PATCH v7 34/66] package/ca-certificates: Replace c_rehash with openssl rehash Bernd Kuhls
2026-10-02 21:40 ` Fiona Klute via buildroot
@ 2026-10-10 9:23 ` Thomas Perale via buildroot
1 sibling, 0 replies; 73+ messages in thread
From: Thomas Perale via buildroot @ 2026-10-10 9:23 UTC (permalink / raw)
To: Bernd Kuhls; +Cc: Thomas Perale, buildroot
In reply of:
> The upcoming bump of libopenssl to 4.0.2 removes the c_rehash script:
>
> https://openssl-library.org/post/2026-04-14-openssl-40-final-release/
> https://github.com/openssl/openssl/blob/openssl-4.0.2/CHANGES.md#openssl-40
>
> "* Removed `c_rehash` script tool. Use `openssl rehash` instead."
>
> Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> Cc: Martin Bark <martin@barkynet.com>
Applied to 2025.02.x & 2026.08.x. Thanks
> ---
> package/ca-certificates/ca-certificates.mk | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/package/ca-certificates/ca-certificates.mk b/package/ca-certificates/ca-certificates.mk
> index f5675b754d..0f88df3eec 100644
> --- a/package/ca-certificates/ca-certificates.mk
> +++ b/package/ca-certificates/ca-certificates.mk
> @@ -36,7 +36,7 @@ define CA_CERTIFICATES_GEN_BUNDLE
> done >$(BUILD_DIR)/ca-certificates.crt
>
> # Create symlinks to the certificates by their hash values
> - $(HOST_DIR)/bin/c_rehash $(TARGET_DIR)/etc/ssl/certs
> + $(HOST_DIR)/bin/openssl rehash $(TARGET_DIR)/etc/ssl/certs
>
> # Install the certificates bundle
> $(INSTALL) -D -m 644 $(BUILD_DIR)/ca-certificates.crt \
> @@ -65,7 +65,7 @@ define HOST_CA_CERTIFICATES_INSTALL_CMDS
> done >$(BUILD_DIR)/ca-certificates.crt
>
> # Create symlinks to the certificates by their hash values
> - $(HOST_DIR)/bin/c_rehash $(HOST_DIR)/etc/ssl/certs
> + $(HOST_DIR)/bin/openssl rehash $(HOST_DIR)/etc/ssl/certs
>
> # Install the certificates bundle
> $(INSTALL) -D -m 644 $(BUILD_DIR)/ca-certificates.crt \
> --
> 2.47.3
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 73+ messages in thread
end of thread, other threads:[~2026-10-10 9:23 UTC | newest]
Thread overview: 73+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-29 18:34 [Buildroot] [PATCH v7 00/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 01/66] package/qt5/qt5knx: remove package Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 02/66] package/qt5/qt5opcua: " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 03/66] package/qt6/qt6opcua: " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 04/66] package/domoticz: bump version to 2026.3 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 05/66] package/libtorrent-rasterbar: bump version to 2.1.1 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 06/66] package/boost: bump version to 1.92.0 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 07/66] package/boost: add new charconv and cobalt library Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 08/66] package/boost: add switch for boost-process Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 09/66] package/boost: program_options needs container Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 10/66] package/boost: thread needs more dependencies Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 11/66] package/boost: contract needs thread Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 12/66] package/boost: fix coroutine dependencies Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 13/66] package/boost: fiber needs exception Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 14/66] package/boost: update graph dependencies Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 15/66] package/boost: math needs container Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 16/66] package/boost: log needs serialization Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 17/66] package/boost: test needs exception Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 18/66] package/boost: wave needs thread Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 19/66] package/boost: update locale dependencies Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 20/66] package/boost: update C++ version dependencies Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 21/66] package/boost: system: update description Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 22/66] package/dovecot{-pigeonhole}: security bump version to 2.4.5 Bernd Kuhls
2026-10-03 13:14 ` Thomas Petazzoni via buildroot
2026-09-29 18:35 ` [Buildroot] [PATCH v7 23/66] package/nmap: bump version to 7.991 Bernd Kuhls
2026-10-02 20:17 ` Thomas Petazzoni via buildroot
2026-09-29 18:35 ` [Buildroot] [PATCH v7 24/66] package/openvmtools: bump version to 13.1.0 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 25/66] package/poco: bump version to 1.15.3 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 26/66] package/resiprocate: security bump version to 1.14.0 Bernd Kuhls
2026-10-03 13:41 ` Thomas Petazzoni via buildroot
2026-09-29 18:35 ` [Buildroot] [PATCH v7 27/66] package/resiprocate: Fix build with OpenSSL 4.0.0 Bernd Kuhls
2026-10-03 13:42 ` Thomas Petazzoni via buildroot
2026-09-29 18:35 ` [Buildroot] [PATCH v7 28/66] package/snort3: fix build error with numa support Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 29/66] package/snort3: Fix build with OpenSSL 4.0.0 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 30/66] package/xtables-addons: use kernel-module infra Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 31/66] package/xtables-addons: bump version to 3.31 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 32/66] package/apache: Add support for OpenSSL 4.0.0 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 33/66] package/boinc: Fix build with " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 34/66] package/ca-certificates: Replace c_rehash with openssl rehash Bernd Kuhls
2026-10-02 21:40 ` Fiona Klute via buildroot
2026-10-10 9:23 ` Thomas Perale via buildroot
2026-09-29 18:35 ` [Buildroot] [PATCH v7 35/66] package/clamav: Fix build with OpenSSL 4.0.0 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 36/66] package/freeradius-server: Add support for " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 37/66] package/freeswitch: " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 38/66] package/ibm-sw-tpm2: Fix build with OpenSSL 4.{0, 1} Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 39/66] package/ibrdtnd: Fix build with OpenSSL 4.0.0 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 40/66] package/lftp: Add support for " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 41/66] package/libesmtp: Fix build with " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 42/66] package/libkrb5: Add support for " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 43/66] package/luvi: fix build without c++ Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 44/66] package/luvi: bump version to 102-g9fa6c141a Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 45/66] package/luvi: Fix build with OpenSSL 4.0.0 Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 46/66] package/mender-artifact: " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 47/66] package/perl-net-ssleay: Add support for " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 48/66] package/python3: " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 49/66] package/qpid-proton: Fix build with " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 50/66] package/qt5/qt5base: Add support for " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 51/66] package/rauc: Fix build with " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 52/66] package/redis: " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 53/66] package/socat: Add support for " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 54/66] package/sofia-sip: Fix build with " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 55/66] package/softhsm2: " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 56/66] package/squid: " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 57/66] package/sudo: Add support for " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 58/66] package/systemd: Fix build with " Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 59/66] package/thrift: Fix build with LibreSSL and OpenSSL 4.x Bernd Kuhls
2026-09-29 18:35 ` [Buildroot] [PATCH v7 60/66] package/thrift: Fix build with OpenSSL 4.0.0 Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 61/66] package/tpm2-openssl: " Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 62/66] package/trousers: " Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 63/66] package/uboot-tools: " Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 64/66] package/xmrig: Add support for " Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 65/66] package/znc: Fix build with " Bernd Kuhls
2026-09-29 18:36 ` [Buildroot] [PATCH v7 66/66] package/libopenssl: bump version to 4.0.3 Bernd Kuhls
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.