Skip to content

Commit d8f4d56

Browse files
authored
[3.14] pythongh-132339: Add support for OpenSSL 3.5 (pythonGH-137720) (python#137747)
* Add OpenSSL 3.5.2 definitions to Modules/_ssl_data_35.h (moved from Modules/_ssl_data_34.h) * Demote OpenSSL 3.1 to "old", remove it from CI * Update all OpenSSL versions to latest patchlevel in CI config and multissltests defaults * Add OpenSSL 3.5.2 to CI configuration and multissltests default list * Fix a typo in the argument parser description of multissltests.py (cherry picked from commit 7a703c8)
1 parent 902de28 commit d8f4d56

File tree

5 files changed

+167
-11
lines changed

5 files changed

+167
-11
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ jobs:
317317
fail-fast: false
318318
matrix:
319319
os: [ubuntu-24.04]
320-
openssl_ver: [3.0.16, 3.1.8, 3.2.4, 3.3.3, 3.4.1]
320+
openssl_ver: [3.0.17, 3.2.5, 3.3.4, 3.4.2, 3.5.2]
321321
# See Tools/ssl/make_ssl_data.py for notes on adding a new version
322322
env:
323323
OPENSSL_VER: ${{ matrix.openssl_ver }}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add support for OpenSSL 3.5.

Modules/_ssl.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ static void _PySSLFixErrno(void) {
123123
/* Include generated data (error codes) */
124124
/* See make_ssl_data.h for notes on adding a new version. */
125125
#if (OPENSSL_VERSION_NUMBER >= 0x30401000L)
126-
#include "_ssl_data_34.h"
126+
#include "_ssl_data_35.h"
127127
#elif (OPENSSL_VERSION_NUMBER >= 0x30100000L)
128128
#include "_ssl_data_340.h"
129129
#elif (OPENSSL_VERSION_NUMBER >= 0x30000000L)

Modules/_ssl_data_34.h renamed to Modules/_ssl_data_35.h

Lines changed: 157 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* File generated by Tools/ssl/make_ssl_data.py */
2-
/* Generated on 2025-03-26T13:47:34.223146+00:00 */
3-
/* Generated from Git commit openssl-3.4.1-0-ga26d85337d */
2+
/* Generated on 2025-08-13T16:42:33.155822+00:00 */
3+
/* Generated from Git commit openssl-3.5.2-0-g0893a6235 */
44

55
/* generated from args.lib2errnum */
66
static struct py_ssl_library_code library_codes[] = {
@@ -1283,6 +1283,11 @@ static struct py_ssl_error_code error_codes[] = {
12831283
#else
12841284
{"FAILED_BUILDING_OWN_CHAIN", 58, 164},
12851285
#endif
1286+
#ifdef CMP_R_FAILED_EXTRACTING_CENTRAL_GEN_KEY
1287+
{"FAILED_EXTRACTING_CENTRAL_GEN_KEY", ERR_LIB_CMP, CMP_R_FAILED_EXTRACTING_CENTRAL_GEN_KEY},
1288+
#else
1289+
{"FAILED_EXTRACTING_CENTRAL_GEN_KEY", 58, 203},
1290+
#endif
12861291
#ifdef CMP_R_FAILED_EXTRACTING_PUBKEY
12871292
{"FAILED_EXTRACTING_PUBKEY", ERR_LIB_CMP, CMP_R_FAILED_EXTRACTING_PUBKEY},
12881293
#else
@@ -1343,6 +1348,11 @@ static struct py_ssl_error_code error_codes[] = {
13431348
#else
13441349
{"INVALID_ROOTCAKEYUPDATE", 58, 195},
13451350
#endif
1351+
#ifdef CMP_R_MISSING_CENTRAL_GEN_KEY
1352+
{"MISSING_CENTRAL_GEN_KEY", ERR_LIB_CMP, CMP_R_MISSING_CENTRAL_GEN_KEY},
1353+
#else
1354+
{"MISSING_CENTRAL_GEN_KEY", 58, 204},
1355+
#endif
13461356
#ifdef CMP_R_MISSING_CERTID
13471357
{"MISSING_CERTID", ERR_LIB_CMP, CMP_R_MISSING_CERTID},
13481358
#else
@@ -1513,6 +1523,11 @@ static struct py_ssl_error_code error_codes[] = {
15131523
#else
15141524
{"UNCLEAN_CTX", 58, 191},
15151525
#endif
1526+
#ifdef CMP_R_UNEXPECTED_CENTRAL_GEN_KEY
1527+
{"UNEXPECTED_CENTRAL_GEN_KEY", ERR_LIB_CMP, CMP_R_UNEXPECTED_CENTRAL_GEN_KEY},
1528+
#else
1529+
{"UNEXPECTED_CENTRAL_GEN_KEY", 58, 205},
1530+
#endif
15161531
#ifdef CMP_R_UNEXPECTED_CERTPROFILE
15171532
{"UNEXPECTED_CERTPROFILE", ERR_LIB_CMP, CMP_R_UNEXPECTED_CERTPROFILE},
15181533
#else
@@ -2308,6 +2323,11 @@ static struct py_ssl_error_code error_codes[] = {
23082323
#else
23092324
{"BAD_PBM_ITERATIONCOUNT", 56, 100},
23102325
#endif
2326+
#ifdef CRMF_R_CMS_NOT_SUPPORTED
2327+
{"CMS_NOT_SUPPORTED", ERR_LIB_CRMF, CRMF_R_CMS_NOT_SUPPORTED},
2328+
#else
2329+
{"CMS_NOT_SUPPORTED", 56, 122},
2330+
#endif
23112331
#ifdef CRMF_R_CRMFERROR
23122332
{"CRMFERROR", ERR_LIB_CRMF, CRMF_R_CRMFERROR},
23132333
#else
@@ -2323,16 +2343,41 @@ static struct py_ssl_error_code error_codes[] = {
23232343
#else
23242344
{"ERROR_DECODING_CERTIFICATE", 56, 104},
23252345
#endif
2346+
#ifdef CRMF_R_ERROR_DECODING_ENCRYPTEDKEY
2347+
{"ERROR_DECODING_ENCRYPTEDKEY", ERR_LIB_CRMF, CRMF_R_ERROR_DECODING_ENCRYPTEDKEY},
2348+
#else
2349+
{"ERROR_DECODING_ENCRYPTEDKEY", 56, 123},
2350+
#endif
23262351
#ifdef CRMF_R_ERROR_DECRYPTING_CERTIFICATE
23272352
{"ERROR_DECRYPTING_CERTIFICATE", ERR_LIB_CRMF, CRMF_R_ERROR_DECRYPTING_CERTIFICATE},
23282353
#else
23292354
{"ERROR_DECRYPTING_CERTIFICATE", 56, 105},
23302355
#endif
2356+
#ifdef CRMF_R_ERROR_DECRYPTING_ENCRYPTEDKEY
2357+
{"ERROR_DECRYPTING_ENCRYPTEDKEY", ERR_LIB_CRMF, CRMF_R_ERROR_DECRYPTING_ENCRYPTEDKEY},
2358+
#else
2359+
{"ERROR_DECRYPTING_ENCRYPTEDKEY", 56, 124},
2360+
#endif
2361+
#ifdef CRMF_R_ERROR_DECRYPTING_ENCRYPTEDVALUE
2362+
{"ERROR_DECRYPTING_ENCRYPTEDVALUE", ERR_LIB_CRMF, CRMF_R_ERROR_DECRYPTING_ENCRYPTEDVALUE},
2363+
#else
2364+
{"ERROR_DECRYPTING_ENCRYPTEDVALUE", 56, 125},
2365+
#endif
23312366
#ifdef CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY
23322367
{"ERROR_DECRYPTING_SYMMETRIC_KEY", ERR_LIB_CRMF, CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY},
23332368
#else
23342369
{"ERROR_DECRYPTING_SYMMETRIC_KEY", 56, 106},
23352370
#endif
2371+
#ifdef CRMF_R_ERROR_SETTING_PURPOSE
2372+
{"ERROR_SETTING_PURPOSE", ERR_LIB_CRMF, CRMF_R_ERROR_SETTING_PURPOSE},
2373+
#else
2374+
{"ERROR_SETTING_PURPOSE", 56, 126},
2375+
#endif
2376+
#ifdef CRMF_R_ERROR_VERIFYING_ENCRYPTEDKEY
2377+
{"ERROR_VERIFYING_ENCRYPTEDKEY", ERR_LIB_CRMF, CRMF_R_ERROR_VERIFYING_ENCRYPTEDKEY},
2378+
#else
2379+
{"ERROR_VERIFYING_ENCRYPTEDKEY", 56, 127},
2380+
#endif
23362381
#ifdef CRMF_R_FAILURE_OBTAINING_RANDOM
23372382
{"FAILURE_OBTAINING_RANDOM", ERR_LIB_CRMF, CRMF_R_FAILURE_OBTAINING_RANDOM},
23382383
#else
@@ -2358,6 +2403,11 @@ static struct py_ssl_error_code error_codes[] = {
23582403
#else
23592404
{"POPOSKINPUT_NOT_SUPPORTED", 56, 113},
23602405
#endif
2406+
#ifdef CRMF_R_POPO_INCONSISTENT_CENTRAL_KEYGEN
2407+
{"POPO_INCONSISTENT_CENTRAL_KEYGEN", ERR_LIB_CRMF, CRMF_R_POPO_INCONSISTENT_CENTRAL_KEYGEN},
2408+
#else
2409+
{"POPO_INCONSISTENT_CENTRAL_KEYGEN", 56, 128},
2410+
#endif
23612411
#ifdef CRMF_R_POPO_INCONSISTENT_PUBLIC_KEY
23622412
{"POPO_INCONSISTENT_PUBLIC_KEY", ERR_LIB_CRMF, CRMF_R_POPO_INCONSISTENT_PUBLIC_KEY},
23632413
#else
@@ -3963,6 +4013,11 @@ static struct py_ssl_error_code error_codes[] = {
39634013
#else
39644014
{"PBKDF2_ERROR", 6, 181},
39654015
#endif
4016+
#ifdef EVP_R_PIPELINE_NOT_SUPPORTED
4017+
{"PIPELINE_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_PIPELINE_NOT_SUPPORTED},
4018+
#else
4019+
{"PIPELINE_NOT_SUPPORTED", 6, 230},
4020+
#endif
39664021
#ifdef EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED
39674022
{"PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED", ERR_LIB_EVP, EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED},
39684023
#else
@@ -3978,6 +4033,36 @@ static struct py_ssl_error_code error_codes[] = {
39784033
#else
39794034
{"PRIVATE_KEY_ENCODE_ERROR", 6, 146},
39804035
#endif
4036+
#ifdef EVP_R_PROVIDER_ASYM_CIPHER_FAILURE
4037+
{"PROVIDER_ASYM_CIPHER_FAILURE", ERR_LIB_EVP, EVP_R_PROVIDER_ASYM_CIPHER_FAILURE},
4038+
#else
4039+
{"PROVIDER_ASYM_CIPHER_FAILURE", 6, 232},
4040+
#endif
4041+
#ifdef EVP_R_PROVIDER_ASYM_CIPHER_NOT_SUPPORTED
4042+
{"PROVIDER_ASYM_CIPHER_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_PROVIDER_ASYM_CIPHER_NOT_SUPPORTED},
4043+
#else
4044+
{"PROVIDER_ASYM_CIPHER_NOT_SUPPORTED", 6, 235},
4045+
#endif
4046+
#ifdef EVP_R_PROVIDER_KEYMGMT_FAILURE
4047+
{"PROVIDER_KEYMGMT_FAILURE", ERR_LIB_EVP, EVP_R_PROVIDER_KEYMGMT_FAILURE},
4048+
#else
4049+
{"PROVIDER_KEYMGMT_FAILURE", 6, 233},
4050+
#endif
4051+
#ifdef EVP_R_PROVIDER_KEYMGMT_NOT_SUPPORTED
4052+
{"PROVIDER_KEYMGMT_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_PROVIDER_KEYMGMT_NOT_SUPPORTED},
4053+
#else
4054+
{"PROVIDER_KEYMGMT_NOT_SUPPORTED", 6, 236},
4055+
#endif
4056+
#ifdef EVP_R_PROVIDER_SIGNATURE_FAILURE
4057+
{"PROVIDER_SIGNATURE_FAILURE", ERR_LIB_EVP, EVP_R_PROVIDER_SIGNATURE_FAILURE},
4058+
#else
4059+
{"PROVIDER_SIGNATURE_FAILURE", 6, 234},
4060+
#endif
4061+
#ifdef EVP_R_PROVIDER_SIGNATURE_NOT_SUPPORTED
4062+
{"PROVIDER_SIGNATURE_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_PROVIDER_SIGNATURE_NOT_SUPPORTED},
4063+
#else
4064+
{"PROVIDER_SIGNATURE_NOT_SUPPORTED", 6, 237},
4065+
#endif
39814066
#ifdef EVP_R_PUBLIC_KEY_NOT_RSA
39824067
{"PUBLIC_KEY_NOT_RSA", ERR_LIB_EVP, EVP_R_PUBLIC_KEY_NOT_RSA},
39834068
#else
@@ -3998,6 +4083,11 @@ static struct py_ssl_error_code error_codes[] = {
39984083
#else
39994084
{"SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE", 6, 228},
40004085
#endif
4086+
#ifdef EVP_R_TOO_MANY_PIPES
4087+
{"TOO_MANY_PIPES", ERR_LIB_EVP, EVP_R_TOO_MANY_PIPES},
4088+
#else
4089+
{"TOO_MANY_PIPES", 6, 231},
4090+
#endif
40014091
#ifdef EVP_R_TOO_MANY_RECORDS
40024092
{"TOO_MANY_RECORDS", ERR_LIB_EVP, EVP_R_TOO_MANY_RECORDS},
40034093
#else
@@ -4753,6 +4843,11 @@ static struct py_ssl_error_code error_codes[] = {
47534843
#else
47544844
{"UNSUPPORTED_PUBLIC_KEY_TYPE", 9, 110},
47554845
#endif
4846+
#ifdef PEM_R_UNSUPPORTED_PVK_KEY_TYPE
4847+
{"UNSUPPORTED_PVK_KEY_TYPE", ERR_LIB_PEM, PEM_R_UNSUPPORTED_PVK_KEY_TYPE},
4848+
#else
4849+
{"UNSUPPORTED_PVK_KEY_TYPE", 9, 133},
4850+
#endif
47564851
#ifdef PKCS12_R_CALLBACK_FAILED
47574852
{"CALLBACK_FAILED", ERR_LIB_PKCS12, PKCS12_R_CALLBACK_FAILED},
47584853
#else
@@ -5543,6 +5638,16 @@ static struct py_ssl_error_code error_codes[] = {
55435638
#else
55445639
{"MISSING_XCGHASH", 57, 135},
55455640
#endif
5641+
#ifdef PROV_R_ML_DSA_NO_FORMAT
5642+
{"ML_DSA_NO_FORMAT", ERR_LIB_PROV, PROV_R_ML_DSA_NO_FORMAT},
5643+
#else
5644+
{"ML_DSA_NO_FORMAT", 57, 245},
5645+
#endif
5646+
#ifdef PROV_R_ML_KEM_NO_FORMAT
5647+
{"ML_KEM_NO_FORMAT", ERR_LIB_PROV, PROV_R_ML_KEM_NO_FORMAT},
5648+
#else
5649+
{"ML_KEM_NO_FORMAT", 57, 246},
5650+
#endif
55465651
#ifdef PROV_R_MODULE_INTEGRITY_FAILURE
55475652
{"MODULE_INTEGRITY_FAILURE", ERR_LIB_PROV, PROV_R_MODULE_INTEGRITY_FAILURE},
55485653
#else
@@ -5593,6 +5698,16 @@ static struct py_ssl_error_code error_codes[] = {
55935698
#else
55945699
{"NO_PARAMETERS_SET", 57, 177},
55955700
#endif
5701+
#ifdef PROV_R_NULL_LENGTH_POINTER
5702+
{"NULL_LENGTH_POINTER", ERR_LIB_PROV, PROV_R_NULL_LENGTH_POINTER},
5703+
#else
5704+
{"NULL_LENGTH_POINTER", 57, 247},
5705+
#endif
5706+
#ifdef PROV_R_NULL_OUTPUT_BUFFER
5707+
{"NULL_OUTPUT_BUFFER", ERR_LIB_PROV, PROV_R_NULL_OUTPUT_BUFFER},
5708+
#else
5709+
{"NULL_OUTPUT_BUFFER", 57, 248},
5710+
#endif
55965711
#ifdef PROV_R_ONESHOT_CALL_OUT_OF_ORDER
55975712
{"ONESHOT_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_ONESHOT_CALL_OUT_OF_ORDER},
55985713
#else
@@ -5728,6 +5843,11 @@ static struct py_ssl_error_code error_codes[] = {
57285843
#else
57295844
{"UNABLE_TO_RESEED", 57, 204},
57305845
#endif
5846+
#ifdef PROV_R_UNEXPECTED_KEY_PARAMETERS
5847+
{"UNEXPECTED_KEY_PARAMETERS", ERR_LIB_PROV, PROV_R_UNEXPECTED_KEY_PARAMETERS},
5848+
#else
5849+
{"UNEXPECTED_KEY_PARAMETERS", 57, 249},
5850+
#endif
57315851
#ifdef PROV_R_UNSUPPORTED_CEK_ALG
57325852
{"UNSUPPORTED_CEK_ALG", ERR_LIB_PROV, PROV_R_UNSUPPORTED_CEK_ALG},
57335853
#else
@@ -5748,6 +5868,11 @@ static struct py_ssl_error_code error_codes[] = {
57485868
#else
57495869
{"UNSUPPORTED_NUMBER_OF_ROUNDS", 57, 152},
57505870
#endif
5871+
#ifdef PROV_R_UNSUPPORTED_SELECTION
5872+
{"UNSUPPORTED_SELECTION", ERR_LIB_PROV, PROV_R_UNSUPPORTED_SELECTION},
5873+
#else
5874+
{"UNSUPPORTED_SELECTION", 57, 250},
5875+
#endif
57515876
#ifdef PROV_R_UPDATE_CALL_OUT_OF_ORDER
57525877
{"UPDATE_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_UPDATE_CALL_OUT_OF_ORDER},
57535878
#else
@@ -5763,6 +5888,11 @@ static struct py_ssl_error_code error_codes[] = {
57635888
#else
57645889
{"VALUE_ERROR", 57, 138},
57655890
#endif
5891+
#ifdef PROV_R_WRONG_CIPHERTEXT_SIZE
5892+
{"WRONG_CIPHERTEXT_SIZE", ERR_LIB_PROV, PROV_R_WRONG_CIPHERTEXT_SIZE},
5893+
#else
5894+
{"WRONG_CIPHERTEXT_SIZE", 57, 251},
5895+
#endif
57665896
#ifdef PROV_R_WRONG_FINAL_BLOCK_LENGTH
57675897
{"WRONG_FINAL_BLOCK_LENGTH", ERR_LIB_PROV, PROV_R_WRONG_FINAL_BLOCK_LENGTH},
57685898
#else
@@ -5938,6 +6068,11 @@ static struct py_ssl_error_code error_codes[] = {
59386068
#else
59396069
{"PRNG_NOT_SEEDED", 36, 100},
59406070
#endif
6071+
#ifdef RAND_R_RANDOM_POOL_IS_EMPTY
6072+
{"RANDOM_POOL_IS_EMPTY", ERR_LIB_RAND, RAND_R_RANDOM_POOL_IS_EMPTY},
6073+
#else
6074+
{"RANDOM_POOL_IS_EMPTY", 36, 142},
6075+
#endif
59416076
#ifdef RAND_R_RANDOM_POOL_OVERFLOW
59426077
{"RANDOM_POOL_OVERFLOW", ERR_LIB_RAND, RAND_R_RANDOM_POOL_OVERFLOW},
59436078
#else
@@ -6923,6 +7058,11 @@ static struct py_ssl_error_code error_codes[] = {
69237058
#else
69247059
{"DIGEST_CHECK_FAILED", 20, 149},
69257060
#endif
7061+
#ifdef SSL_R_DOMAIN_USE_ONLY
7062+
{"DOMAIN_USE_ONLY", ERR_LIB_SSL, SSL_R_DOMAIN_USE_ONLY},
7063+
#else
7064+
{"DOMAIN_USE_ONLY", 20, 422},
7065+
#endif
69267066
#ifdef SSL_R_DTLS_MESSAGE_TOO_BIG
69277067
{"DTLS_MESSAGE_TOO_BIG", ERR_LIB_SSL, SSL_R_DTLS_MESSAGE_TOO_BIG},
69287068
#else
@@ -7213,6 +7353,11 @@ static struct py_ssl_error_code error_codes[] = {
72137353
#else
72147354
{"LIBRARY_HAS_NO_CIPHERS", 20, 161},
72157355
#endif
7356+
#ifdef SSL_R_LISTENER_USE_ONLY
7357+
{"LISTENER_USE_ONLY", ERR_LIB_SSL, SSL_R_LISTENER_USE_ONLY},
7358+
#else
7359+
{"LISTENER_USE_ONLY", 20, 421},
7360+
#endif
72167361
#ifdef SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED
72177362
{"MAXIMUM_ENCRYPTED_PKTS_REACHED", ERR_LIB_SSL, SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED},
72187363
#else
@@ -7243,6 +7388,11 @@ static struct py_ssl_error_code error_codes[] = {
72437388
#else
72447389
{"MISSING_PSK_KEX_MODES_EXTENSION", 20, 310},
72457390
#endif
7391+
#ifdef SSL_R_MISSING_QUIC_TLS_FUNCTIONS
7392+
{"MISSING_QUIC_TLS_FUNCTIONS", ERR_LIB_SSL, SSL_R_MISSING_QUIC_TLS_FUNCTIONS},
7393+
#else
7394+
{"MISSING_QUIC_TLS_FUNCTIONS", 20, 423},
7395+
#endif
72467396
#ifdef SSL_R_MISSING_RSA_CERTIFICATE
72477397
{"MISSING_RSA_CERTIFICATE", ERR_LIB_SSL, SSL_R_MISSING_RSA_CERTIFICATE},
72487398
#else
@@ -8983,6 +9133,11 @@ static struct py_ssl_error_code error_codes[] = {
89839133
#else
89849134
{"POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY", 34, 159},
89859135
#endif
9136+
#ifdef X509V3_R_PURPOSE_NOT_UNIQUE
9137+
{"PURPOSE_NOT_UNIQUE", ERR_LIB_X509V3, X509V3_R_PURPOSE_NOT_UNIQUE},
9138+
#else
9139+
{"PURPOSE_NOT_UNIQUE", 34, 173},
9140+
#endif
89869141
#ifdef X509V3_R_SECTION_NOT_FOUND
89879142
{"SECTION_NOT_FOUND", ERR_LIB_X509V3, X509V3_R_SECTION_NOT_FOUND},
89889143
#else

Tools/ssl/multissltests.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,15 @@
4444

4545
OPENSSL_OLD_VERSIONS = [
4646
"1.1.1w",
47+
"3.1.8",
4748
]
4849

4950
OPENSSL_RECENT_VERSIONS = [
5051
"3.0.16",
51-
"3.1.8",
52-
"3.2.4",
53-
"3.3.3",
54-
"3.4.1",
52+
"3.2.5",
53+
"3.3.4",
54+
"3.4.2",
55+
"3.5.2",
5556
# See make_ssl_data.py for notes on adding a new version.
5657
]
5758

@@ -70,9 +71,8 @@
7071
parser = argparse.ArgumentParser(
7172
prog='multissl',
7273
description=(
73-
"Run CPython tests with multiple OpenSSL and LibreSSL "
74-
"versions."
75-
)
74+
"Run CPython tests with multiple cryptography libraries/versions."
75+
),
7676
)
7777
parser.add_argument(
7878
'--debug',

0 commit comments

Comments
 (0)