This is caused by following swig bug: https://github.com/swiftlang/swift/issues/69311 This comment has a minimal reproducer: https://github.com/swiftlang/swift/issues/69311#issuecomment-1851233912 Based on that I found following openssl commit: https://github.com/openssl/openssl/commit/8cf9ac9c2034eb383b72bb7a849b5db96ff593f6 And tested that python3-m2crypto compiles fine when I remove it.
However I have no idea how to fix this swig problem. (other than patching this openssl header in python3-m2crypto do_configure) Note: the same error on buildroot: http://autobuild.buildroot.net/results/1d9/1d988b9463fbf52c09c60415d7c77074947650d4/build-end.log Does someone here know buildroot to check how they fixed this? Peter > -----Original Message----- > From: Khem Raj <[email protected]> > Sent: Saturday, November 30, 2024 20:02 > To: Marko, Peter (FT D EU SK BFS1) <[email protected]> > Cc: [email protected] > Subject: Re: [OE-core][PATCH] python: backport patches to support openssl > 3.4.0 > > I think this along with openssl 3.4 upgrade is causing > python3-m2crypto to break see > > https://valkyrie.yoctoproject.org/#/builders/81/builds/180/steps/14/logs/stdio > > On Fri, Nov 29, 2024 at 10:28 AM Peter Marko via > lists.openembedded.org > <[email protected]> wrote: > > > > From: Peter Marko <[email protected]> > > > > https://github.com/python/cpython/pull/127331 > > https://github.com/python/cpython/pull/127361 > > > > Signed-off-by: Peter Marko <[email protected]> > > --- > > ...r-OpenSSL-3.4-and-add-it-to-multissl.patch | 1452 +++++++++++++++++ > > ...01-ssl-Raise-OSError-for-ERR_LIB_SYS.patch | 51 + > > .../recipes-devtools/python/python3_3.13.0.bb | 2 + > > 3 files changed, 1505 insertions(+) > > create mode 100644 meta/recipes-devtools/python/python3/0001-Generate- > data-for-OpenSSL-3.4-and-add-it-to-multissl.patch > > create mode 100644 meta/recipes-devtools/python/python3/0001-ssl-Raise- > OSError-for-ERR_LIB_SYS.patch > > > > diff --git a/meta/recipes-devtools/python/python3/0001-Generate-data-for- > OpenSSL-3.4-and-add-it-to-multissl.patch b/meta/recipes- > devtools/python/python3/0001-Generate-data-for-OpenSSL-3.4-and-add-it-to- > multissl.patch > > new file mode 100644 > > index 0000000000..d8ad803d50 > > --- /dev/null > > +++ b/meta/recipes-devtools/python/python3/0001-Generate-data-for- > OpenSSL-3.4-and-add-it-to-multissl.patch > > @@ -0,0 +1,1452 @@ > > +From db5c5763f3e3172f1dd011355b41469770dafc0f Mon Sep 17 00:00:00 > 2001 > > +From: Petr Viktorin <[email protected]> > > +Date: Thu, 28 Nov 2024 13:29:27 +0100 > > +Subject: [PATCH] gh-127330: Update for OpenSSL 3.4 & document+improve > the > > + update process (GH-127331) > > + > > +- Add `git describe` output to headers generated by `make_ssl_data.py` > > + > > + This info is more important than the date when the file was generated. > > + It does mean that the tool now requires a Git checkout of OpenSSL, > > + not for example a release tarball. > > + > > +- Regenerate the older file to add the info. > > + To the other older file, add a note about manual edits. > > + > > +- Add notes on how to add a new OpenSSL version > > + > > +- Add 3.4 error messages and multissl tests > > + > > +Upstream-Status: Submitted > [https://github.com/python/cpython/commit/db5c5763f3e3172f1dd011355b414 > 69770dafc0f] > > +Signed-off-by: Peter Marko <[email protected]> > > +--- > > + Modules/_ssl.c | 2 +- > > + Modules/_ssl_data_111.h | 4 +- > > + Modules/_ssl_data_300.h | 5 +- > > + Modules/{_ssl_data_31.h => _ssl_data_34.h} | 674 ++++++++++++++++++++- > > + Tools/c-analyzer/cpython/_parser.py | 4 +- > > + Tools/ssl/make_ssl_data.py | 34 +- > > + Tools/ssl/multissltests.py | 1 + > > + 7 files changed, 714 insertions(+), 10 deletions(-) > > + rename Modules/{_ssl_data_31.h => _ssl_data_34.h} (92%) > > + > > +diff --git a/Modules/_ssl.c b/Modules/_ssl.c > > +index b6b5ebf094c..e5b8bf21002 100644 > > +--- a/Modules/_ssl.c > > ++++ b/Modules/_ssl.c > > +@@ -122,7 +122,7 @@ static void _PySSLFixErrno(void) { > > + > > + /* Include generated data (error codes) */ > > + #if (OPENSSL_VERSION_NUMBER >= 0x30100000L) > > +-#include "_ssl_data_31.h" > > ++#include "_ssl_data_34.h" > > + #elif (OPENSSL_VERSION_NUMBER >= 0x30000000L) > > + #include "_ssl_data_300.h" > > + #elif (OPENSSL_VERSION_NUMBER >= 0x10101000L) > > +diff --git a/Modules/_ssl_data_111.h b/Modules/_ssl_data_111.h > > +index 093c786e6a2..061fac2bd58 100644 > > +--- a/Modules/_ssl_data_111.h > > ++++ b/Modules/_ssl_data_111.h > > +@@ -1,4 +1,6 @@ > > +-/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06- > 01T02:58:04.081473 */ > > ++/* File generated by Tools/ssl/make_ssl_data.py */ > > ++/* Generated on 2024-11-27T12:48:46.194048+00:00 */ > > ++/* Generated from Git commit OpenSSL_1_1_1w-0-ge04bd3433f */ > > + static struct py_ssl_library_code library_codes[] = { > > + #ifdef ERR_LIB_ASN1 > > + {"ASN1", ERR_LIB_ASN1}, > > +diff --git a/Modules/_ssl_data_300.h b/Modules/_ssl_data_300.h > > +index dc66731f6b6..b687ce43c77 100644 > > +--- a/Modules/_ssl_data_300.h > > ++++ b/Modules/_ssl_data_300.h > > +@@ -1,4 +1,7 @@ > > +-/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06- > 01T03:03:52.163218 */ > > ++/* File generated by Tools/ssl/make_ssl_data.py */ > > ++/* Generated on 2023-06-01T03:03:52.163218 */ > > ++/* Manually edited to add definitions from 1.1.1 (GH-105174) */ > > ++ > > + static struct py_ssl_library_code library_codes[] = { > > + #ifdef ERR_LIB_ASN1 > > + {"ASN1", ERR_LIB_ASN1}, > > +diff --git a/Modules/_ssl_data_31.h b/Modules/_ssl_data_34.h > > +similarity index 92% > > +rename from Modules/_ssl_data_31.h > > +rename to Modules/_ssl_data_34.h > > +index c589c501f4e..d4af3e1c1fa 100644 > > +--- a/Modules/_ssl_data_31.h > > ++++ b/Modules/_ssl_data_34.h > > +@@ -1,4 +1,6 @@ > > +-/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06- > 01T03:04:00.275280 */ > > ++/* File generated by Tools/ssl/make_ssl_data.py */ > > ++/* Generated on 2024-11-27T12:35:52.276767+00:00 */ > > ++/* Generated from Git commit openssl-3.4.0-0-g98acb6b028 */ > > + static struct py_ssl_library_code library_codes[] = { > > + #ifdef ERR_LIB_ASN1 > > + {"ASN1", ERR_LIB_ASN1}, > > +@@ -300,6 +302,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -730,6 +737,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -845,6 +857,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -860,6 +877,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -880,6 +902,26 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -920,6 +962,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -1230,6 +1277,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -1250,16 +1302,51 @@ static struct py_ssl_error_code error_codes[] = { > > + #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_CERTID > > + {"MISSING_CERTID", ERR_LIB_CMP, CMP_R_MISSING_CERTID}, > > + #else > > +@@ -1425,6 +1512,21 @@ static struct py_ssl_error_code error_codes[] = { > > + #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_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 > > +@@ -1435,11 +1537,21 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -1450,6 +1562,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -1465,6 +1582,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -1825,6 +1947,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -1960,6 +2087,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -1985,6 +2117,31 @@ static struct py_ssl_error_code error_codes[] = { > > + #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_DEFLATE_ERROR > > ++ {"BROTLI_DEFLATE_ERROR", ERR_LIB_COMP, > COMP_R_BROTLI_DEFLATE_ERROR}, > > ++ #else > > ++ {"BROTLI_DEFLATE_ERROR", 41, 103}, > > ++ #endif > > ++ #ifdef COMP_R_BROTLI_ENCODE_ERROR > > ++ {"BROTLI_ENCODE_ERROR", ERR_LIB_COMP, > COMP_R_BROTLI_ENCODE_ERROR}, > > ++ #else > > ++ {"BROTLI_ENCODE_ERROR", 41, 106}, > > ++ #endif > > ++ #ifdef COMP_R_BROTLI_INFLATE_ERROR > > ++ {"BROTLI_INFLATE_ERROR", ERR_LIB_COMP, > COMP_R_BROTLI_INFLATE_ERROR}, > > ++ #else > > ++ {"BROTLI_INFLATE_ERROR", 41, 104}, > > ++ #endif > > ++ #ifdef COMP_R_BROTLI_NOT_SUPPORTED > > ++ {"BROTLI_NOT_SUPPORTED", ERR_LIB_COMP, > COMP_R_BROTLI_NOT_SUPPORTED}, > > ++ #else > > ++ {"BROTLI_NOT_SUPPORTED", 41, 105}, > > ++ #endif > > + #ifdef COMP_R_ZLIB_DEFLATE_ERROR > > + {"ZLIB_DEFLATE_ERROR", ERR_LIB_COMP, > COMP_R_ZLIB_DEFLATE_ERROR}, > > + #else > > +@@ -2000,6 +2157,26 @@ static struct py_ssl_error_code error_codes[] = { > > + #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, 107}, > > ++ #endif > > ++ #ifdef COMP_R_ZSTD_DECODE_ERROR > > ++ {"ZSTD_DECODE_ERROR", ERR_LIB_COMP, > COMP_R_ZSTD_DECODE_ERROR}, > > ++ #else > > ++ {"ZSTD_DECODE_ERROR", 41, 108}, > > ++ #endif > > ++ #ifdef COMP_R_ZSTD_DECOMPRESS_ERROR > > ++ {"ZSTD_DECOMPRESS_ERROR", ERR_LIB_COMP, > COMP_R_ZSTD_DECOMPRESS_ERROR}, > > ++ #else > > ++ {"ZSTD_DECOMPRESS_ERROR", 41, 109}, > > ++ #endif > > ++ #ifdef COMP_R_ZSTD_NOT_SUPPORTED > > ++ {"ZSTD_NOT_SUPPORTED", ERR_LIB_COMP, > COMP_R_ZSTD_NOT_SUPPORTED}, > > ++ #else > > ++ {"ZSTD_NOT_SUPPORTED", 41, 110}, > > ++ #endif > > + #ifdef CONF_R_ERROR_LOADING_DSO > > + {"ERROR_LOADING_DSO", ERR_LIB_CONF, > CONF_R_ERROR_LOADING_DSO}, > > + #else > > +@@ -2085,6 +2262,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -2370,6 +2552,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -2560,6 +2747,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -2610,6 +2802,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -3545,6 +3742,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -3745,6 +3947,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -3795,6 +4002,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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_RECORDS > > + {"TOO_MANY_RECORDS", ERR_LIB_EVP, EVP_R_TOO_MANY_RECORDS}, > > + #else > > +@@ -3825,6 +4037,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -3840,6 +4057,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -3850,6 +4072,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -4040,6 +4267,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -4530,6 +4762,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #else > > + {"UNSUPPORTED_PUBLIC_KEY_TYPE", 9, 110}, > > + #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 > > +@@ -4920,6 +5157,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -4935,6 +5177,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -4990,6 +5237,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -5020,6 +5272,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -5030,6 +5287,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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_CONFIG_DATA > > + {"INVALID_CONFIG_DATA", ERR_LIB_PROV, > PROV_R_INVALID_CONFIG_DATA}, > > + #else > > +@@ -5070,6 +5332,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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_INPUT_LENGTH > > + {"INVALID_INPUT_LENGTH", ERR_LIB_PROV, > PROV_R_INVALID_INPUT_LENGTH}, > > + #else > > +@@ -5085,6 +5352,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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_KEY > > + {"INVALID_KEY", ERR_LIB_PROV, PROV_R_INVALID_KEY}, > > + #else > > +@@ -5100,6 +5372,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -5120,6 +5397,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -5155,6 +5437,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -5300,6 +5587,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -5310,6 +5602,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #else > > + {"NO_PARAMETERS_SET", 57, 177}, > > + #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 > > +@@ -5460,6 +5757,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #else > > + {"UNSUPPORTED_NUMBER_OF_ROUNDS", 57, 152}, > > + #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 > > +@@ -5595,6 +5897,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -6210,6 +6517,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -6220,6 +6532,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -6495,6 +6812,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -6635,6 +6957,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -6650,6 +6977,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -6680,11 +7012,26 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -6805,6 +7152,16 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -6865,6 +7222,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #else > > + {"LIBRARY_HAS_NO_CIPHERS", 20, 161}, > > + #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 > > +@@ -6925,6 +7287,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7065,6 +7432,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7080,6 +7452,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7160,6 +7537,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7190,6 +7572,21 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7200,6 +7597,16 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7210,6 +7617,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7255,6 +7667,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7325,6 +7742,16 @@ static struct py_ssl_error_code error_codes[] = { > > + #else > > + {"SSLV3_ALERT_BAD_CERTIFICATE", 20, 1042}, > > + #endif > > ++ #ifdef SSL_R_SSLV3_ALERT_BAD_CERTIFICATE > > ++ {"SSLV3_ALERT_BAD_CERTIFICATE", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_BAD_CERTIFICATE}, > > ++ #else > > ++ {"SSLV3_ALERT_BAD_CERTIFICATE", 20, 1042}, > > ++ #endif > > ++ #ifdef SSL_R_SSLV3_ALERT_BAD_RECORD_MAC > > ++ {"SSLV3_ALERT_BAD_RECORD_MAC", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_BAD_RECORD_MAC}, > > ++ #else > > ++ {"SSLV3_ALERT_BAD_RECORD_MAC", 20, 1020}, > > ++ #endif > > + #ifdef SSL_R_SSLV3_ALERT_BAD_RECORD_MAC > > + {"SSLV3_ALERT_BAD_RECORD_MAC", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_BAD_RECORD_MAC}, > > + #else > > +@@ -7335,11 +7762,26 @@ static struct py_ssl_error_code error_codes[] = { > > + #else > > + {"SSLV3_ALERT_CERTIFICATE_EXPIRED", 20, 1045}, > > + #endif > > ++ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED > > ++ {"SSLV3_ALERT_CERTIFICATE_EXPIRED", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED}, > > ++ #else > > ++ {"SSLV3_ALERT_CERTIFICATE_EXPIRED", 20, 1045}, > > ++ #endif > > + #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED > > + {"SSLV3_ALERT_CERTIFICATE_REVOKED", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED}, > > + #else > > + {"SSLV3_ALERT_CERTIFICATE_REVOKED", 20, 1044}, > > + #endif > > ++ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED > > ++ {"SSLV3_ALERT_CERTIFICATE_REVOKED", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED}, > > ++ #else > > ++ {"SSLV3_ALERT_CERTIFICATE_REVOKED", 20, 1044}, > > ++ #endif > > ++ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN > > ++ {"SSLV3_ALERT_CERTIFICATE_UNKNOWN", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN}, > > ++ #else > > ++ {"SSLV3_ALERT_CERTIFICATE_UNKNOWN", 20, 1046}, > > ++ #endif > > + #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN > > + {"SSLV3_ALERT_CERTIFICATE_UNKNOWN", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN}, > > + #else > > +@@ -7350,6 +7792,16 @@ static struct py_ssl_error_code error_codes[] = { > > + #else > > + {"SSLV3_ALERT_DECOMPRESSION_FAILURE", 20, 1030}, > > + #endif > > ++ #ifdef SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE > > ++ {"SSLV3_ALERT_DECOMPRESSION_FAILURE", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE}, > > ++ #else > > ++ {"SSLV3_ALERT_DECOMPRESSION_FAILURE", 20, 1030}, > > ++ #endif > > ++ #ifdef SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE > > ++ {"SSLV3_ALERT_HANDSHAKE_FAILURE", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE}, > > ++ #else > > ++ {"SSLV3_ALERT_HANDSHAKE_FAILURE", 20, 1040}, > > ++ #endif > > + #ifdef SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE > > + {"SSLV3_ALERT_HANDSHAKE_FAILURE", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE}, > > + #else > > +@@ -7360,11 +7812,26 @@ static struct py_ssl_error_code error_codes[] = { > > + #else > > + {"SSLV3_ALERT_ILLEGAL_PARAMETER", 20, 1047}, > > + #endif > > ++ #ifdef SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER > > ++ {"SSLV3_ALERT_ILLEGAL_PARAMETER", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER}, > > ++ #else > > ++ {"SSLV3_ALERT_ILLEGAL_PARAMETER", 20, 1047}, > > ++ #endif > > + #ifdef SSL_R_SSLV3_ALERT_NO_CERTIFICATE > > + {"SSLV3_ALERT_NO_CERTIFICATE", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_NO_CERTIFICATE}, > > + #else > > + {"SSLV3_ALERT_NO_CERTIFICATE", 20, 1041}, > > + #endif > > ++ #ifdef SSL_R_SSLV3_ALERT_NO_CERTIFICATE > > ++ {"SSLV3_ALERT_NO_CERTIFICATE", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_NO_CERTIFICATE}, > > ++ #else > > ++ {"SSLV3_ALERT_NO_CERTIFICATE", 20, 1041}, > > ++ #endif > > ++ #ifdef SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE > > ++ {"SSLV3_ALERT_UNEXPECTED_MESSAGE", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE}, > > ++ #else > > ++ {"SSLV3_ALERT_UNEXPECTED_MESSAGE", 20, 1010}, > > ++ #endif > > + #ifdef SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE > > + {"SSLV3_ALERT_UNEXPECTED_MESSAGE", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE}, > > + #else > > +@@ -7375,6 +7842,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #else > > + {"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE", 20, 1043}, > > + #endif > > ++ #ifdef SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE > > ++ {"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE", ERR_LIB_SSL, > SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE}, > > ++ #else > > ++ {"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE", 20, 1043}, > > ++ #endif > > + #ifdef SSL_R_SSL_COMMAND_SECTION_EMPTY > > + {"SSL_COMMAND_SECTION_EMPTY", ERR_LIB_SSL, > SSL_R_SSL_COMMAND_SECTION_EMPTY}, > > + #else > > +@@ -7450,6 +7922,36 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7460,6 +7962,16 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7470,6 +7982,16 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7480,6 +8002,16 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7490,6 +8022,16 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7500,6 +8042,26 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7510,21 +8072,56 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7535,6 +8132,16 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7545,6 +8152,16 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7665,6 +8282,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7700,6 +8322,21 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7720,6 +8357,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -7750,6 +8392,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -8055,6 +8702,16 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -8370,6 +9027,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -8430,6 +9092,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +@@ -8590,6 +9257,11 @@ static struct py_ssl_error_code error_codes[] = { > > + #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 > > +diff --git a/Tools/c-analyzer/cpython/_parser.py b/Tools/c- > analyzer/cpython/_parser.py > > +index 21be53e7884..a08b32fa45d 100644 > > +--- a/Tools/c-analyzer/cpython/_parser.py > > ++++ b/Tools/c-analyzer/cpython/_parser.py > > +@@ -70,9 +70,7 @@ Python/thread_pthread.h > > + Python/thread_pthread_stubs.h > > + > > + # only huge constants (safe but parsing is slow) > > +-Modules/_ssl_data_31.h > > +-Modules/_ssl_data_300.h > > +-Modules/_ssl_data_111.h > > ++Modules/_ssl_data_*.h > > + Modules/cjkcodecs/mappings_*.h > > + Modules/unicodedata_db.h > > + Modules/unicodename_db.h > > +diff --git a/Tools/ssl/make_ssl_data.py b/Tools/ssl/make_ssl_data.py > > +index 9860871..0cd05c7 100755 > > +--- a/Tools/ssl/make_ssl_data.py > > ++++ b/Tools/ssl/make_ssl_data.py > > +@@ -5,9 +5,28 @@ This script should be called *manually* when we want to > upgrade SSLError > > + `library` and `reason` mnemonics to a more recent OpenSSL version. > > + > > + It takes two arguments: > > +-- the path to the OpenSSL source tree (e.g. git checkout) > > ++- the path to the OpenSSL git checkout > > + - the path to the header file to be generated > > Modules/_ssl_data_{version}.h > > + - error codes are version specific > > ++ > > ++The OpenSSL git checkout should be at a specific tag, using commands like: > > ++ git tag --list 'openssl-*' > > ++ git switch --detach openssl-3.4.0 > > ++ > > ++ > > ++After generating the definitions, compare the result with newest > > pre-existing > file. > > ++You can use a command like: > > ++ > > ++ git diff --no-index Modules/_ssl_data_31.h Modules/_ssl_data_34.h > > ++ > > ++- If the new version *only* adds new definitions, remove the pre-existing > > file > > ++ and adjust the #include in _ssl.c to point to the new version. > > ++- If the new version removes or renumbers some definitions, keep both > > files > and > > ++ add a new #include in _ssl.c. > > ++ > > ++A newly supported OpenSSL version should also be added to: > > ++- Tools/ssl/multissltests.py > > ++- .github/workflows/build.yml > > + """ > > + > > + import argparse > > +@@ -16,6 +35,7 @@ import operator > > + import os > > + import re > > + import sys > > ++import subprocess > > + > > + > > + parser = argparse.ArgumentParser( > > +@@ -118,9 +138,17 @@ def main(): > > + # sort by libname, numeric error code > > + args.reasons = sorted(reasons, key=operator.itemgetter(0, 3)) > > + > > ++ git_describe = subprocess.run( > > ++ ['git', 'describe', '--long', '--dirty'], > > ++ cwd=args.srcdir, > > ++ capture_output=True, > > ++ encoding='utf-8', > > ++ check=True, > > ++ ) > > + lines = [ > > +- "/* File generated by Tools/ssl/make_ssl_data.py */" > > +- f"/* Generated on {datetime.datetime.utcnow().isoformat()} */" > > ++ "/* File generated by Tools/ssl/make_ssl_data.py */", > > ++ f"/* Generated on > > {datetime.datetime.now(datetime.UTC).isoformat()} > */", > > ++ f"/* Generated from Git commit {git_describe.stdout.strip()} */", > > + ] > > + lines.extend(gen_library_codes(args)) > > + lines.append("") > > +diff --git a/Tools/ssl/multissltests.py b/Tools/ssl/multissltests.py > > +index eae0e0c..fb06f63 100755 > > +--- a/Tools/ssl/multissltests.py > > ++++ b/Tools/ssl/multissltests.py > > +@@ -51,6 +51,7 @@ OPENSSL_RECENT_VERSIONS = [ > > + "3.1.7", > > + "3.2.3", > > + "3.3.2", > > ++ "3.4.0", > > + ] > > + > > + LIBRESSL_OLD_VERSIONS = [ > > +-- > > +2.30.2 > > + > > diff --git > > a/meta/recipes-devtools/python/python3/0001-ssl-Raise-OSError-for- > ERR_LIB_SYS.patch b/meta/recipes-devtools/python/python3/0001-ssl-Raise- > OSError-for-ERR_LIB_SYS.patch > > new file mode 100644 > > index 0000000000..18e0f208c7 > > --- /dev/null > > +++ b/meta/recipes-devtools/python/python3/0001-ssl-Raise-OSError-for- > ERR_LIB_SYS.patch > > @@ -0,0 +1,51 @@ > > +From 11e0523eb363b7def4bc64d24a04e88d8670a691 Mon Sep 17 00:00:00 > 2001 > > +From: Petr Viktorin <[email protected]> > > +Date: Thu, 28 Nov 2024 13:32:30 +0100 > > +Subject: [PATCH] ssl: Raise OSError for ERR_LIB_SYS > > + > > +From the ERR_raise manpage: > > + > > + ERR_LIB_SYS > > + > > + This "library code" indicates that a system error is > > + being reported. In this case, the reason code given > > + to `ERR_raise()` and `ERR_raise_data()` *must* be > > + `errno(3)`. > > + > > +Upstream-Status: Submitted > [https://github.com/python/cpython/pull/127361] > > +Signed-off-by: Peter Marko <[email protected]> > > +--- > > + Modules/_ssl.c | 10 ++++++++++ > > + 1 file changed, 10 insertions(+) > > + > > +diff --git a/Modules/_ssl.c b/Modules/_ssl.c > > +index e5b8bf21002..a243ba4b9bc 100644 > > +--- a/Modules/_ssl.c > > ++++ b/Modules/_ssl.c > > +@@ -667,6 +667,11 @@ PySSL_SetError(PySSLSocket *sslsock, const char > *filename, int lineno) > > + ERR_GET_REASON(e) == > > SSL_R_CERTIFICATE_VERIFY_FAILED) { > > + type = state->PySSLCertVerificationErrorObject; > > + } > > ++ if (ERR_GET_LIB(e) == ERR_LIB_SYS) { > > ++ // A system error is being reported; reason is set to > > errno > > ++ errno = ERR_GET_REASON(e); > > ++ return PyErr_SetFromErrno(PyExc_OSError); > > ++ } > > + p = PY_SSL_ERROR_SYSCALL; > > + } > > + break; > > +@@ -692,6 +697,11 @@ PySSL_SetError(PySSLSocket *sslsock, const char > *filename, int lineno) > > + errstr = "EOF occurred in violation of protocol"; > > + } > > + #endif > > ++ if (ERR_GET_LIB(e) == ERR_LIB_SYS) { > > ++ // A system error is being reported; reason is set to > > errno > > ++ errno = ERR_GET_REASON(e); > > ++ return PyErr_SetFromErrno(PyExc_OSError); > > ++ } > > + break; > > + } > > + default: > > +-- > > +2.30.2 > > + > > diff --git a/meta/recipes-devtools/python/python3_3.13.0.bb b/meta/recipes- > devtools/python/python3_3.13.0.bb > > index a393b5e4a0..b3170879b9 100644 > > --- a/meta/recipes-devtools/python/python3_3.13.0.bb > > +++ b/meta/recipes-devtools/python/python3_3.13.0.bb > > @@ -31,6 +31,8 @@ SRC_URI = > "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \ > > file://0001-test_active_children-skip-problematic-test.patch \ > > file://0001-test_readline-skip-limited-history-test.patch \ > > file://fix-armv5.patch \ > > + > > file://0001-Generate-data-for-OpenSSL-3.4-and-add-it-to-multissl.patch > \ > > + file://0001-ssl-Raise-OSError-for-ERR_LIB_SYS.patch \ > > " > > > > SRC_URI:append:class-native = " \ > > -- > > 2.30.2 > > > > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#208049): https://lists.openembedded.org/g/openembedded-core/message/208049 Mute This Topic: https://lists.openembedded.org/mt/109838102/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
