Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 22293df

Browse files
committed
merge 3.4 (#22935)
2 parents 4becc38 + e32467c commit 22293df

4 files changed

Lines changed: 24 additions & 8 deletions

File tree

Lib/test/test_ftplib.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -889,7 +889,7 @@ def test_auth_issued_twice(self):
889889

890890
def test_auth_ssl(self):
891891
try:
892-
self.client.ssl_version = ssl.PROTOCOL_SSLv3
892+
self.client.ssl_version = ssl.PROTOCOL_SSLv23
893893
self.client.auth()
894894
self.assertRaises(ValueError, self.client.auth)
895895
finally:

Lib/test/test_ssl.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2410,20 +2410,24 @@ def test_protocol_sslv23(self):
24102410
sys.stdout.write(
24112411
" SSL2 client to SSL23 server test unexpectedly failed:\n %s\n"
24122412
% str(x))
2413-
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, 'SSLv3')
2413+
if hasattr(ssl, 'PROTOCOL_SSLv3'):
2414+
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, 'SSLv3')
24142415
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True)
24152416
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, 'TLSv1')
24162417

2417-
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, 'SSLv3', ssl.CERT_OPTIONAL)
2418+
if hasattr(ssl, 'PROTOCOL_SSLv3'):
2419+
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, 'SSLv3', ssl.CERT_OPTIONAL)
24182420
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True, ssl.CERT_OPTIONAL)
24192421
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, 'TLSv1', ssl.CERT_OPTIONAL)
24202422

2421-
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, 'SSLv3', ssl.CERT_REQUIRED)
2423+
if hasattr(ssl, 'PROTOCOL_SSLv3'):
2424+
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, 'SSLv3', ssl.CERT_REQUIRED)
24222425
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True, ssl.CERT_REQUIRED)
24232426
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, 'TLSv1', ssl.CERT_REQUIRED)
24242427

24252428
# Server with specific SSL options
2426-
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, False,
2429+
if hasattr(ssl, 'PROTOCOL_SSLv3'):
2430+
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, False,
24272431
server_options=ssl.OP_NO_SSLv3)
24282432
# Will choose TLSv1
24292433
try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True,
@@ -2433,6 +2437,8 @@ def test_protocol_sslv23(self):
24332437

24342438

24352439
@skip_if_broken_ubuntu_ssl
2440+
@unittest.skipUnless(hasattr(ssl, 'PROTOCOL_SSLv3'),
2441+
"OpenSSL is compiled without SSLv3 support")
24362442
def test_protocol_sslv3(self):
24372443
"""Connecting to an SSLv3 server with various client options"""
24382444
if support.verbose:
@@ -2460,7 +2466,8 @@ def test_protocol_tlsv1(self):
24602466
try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, 'TLSv1', ssl.CERT_REQUIRED)
24612467
if hasattr(ssl, 'PROTOCOL_SSLv2'):
24622468
try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv2, False)
2463-
try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv3, False)
2469+
if hasattr(ssl, 'PROTOCOL_SSLv3'):
2470+
try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv3, False)
24642471
try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv23, False,
24652472
client_options=ssl.OP_NO_TLSv1)
24662473

@@ -2475,7 +2482,8 @@ def test_protocol_tlsv1_1(self):
24752482
try_protocol_combo(ssl.PROTOCOL_TLSv1_1, ssl.PROTOCOL_TLSv1_1, 'TLSv1.1')
24762483
if hasattr(ssl, 'PROTOCOL_SSLv2'):
24772484
try_protocol_combo(ssl.PROTOCOL_TLSv1_1, ssl.PROTOCOL_SSLv2, False)
2478-
try_protocol_combo(ssl.PROTOCOL_TLSv1_1, ssl.PROTOCOL_SSLv3, False)
2485+
if hasattr(ssl, 'PROTOCOL_SSLv3'):
2486+
try_protocol_combo(ssl.PROTOCOL_TLSv1_1, ssl.PROTOCOL_SSLv3, False)
24792487
try_protocol_combo(ssl.PROTOCOL_TLSv1_1, ssl.PROTOCOL_SSLv23, False,
24802488
client_options=ssl.OP_NO_TLSv1_1)
24812489

@@ -2497,7 +2505,8 @@ def test_protocol_tlsv1_2(self):
24972505
client_options=ssl.OP_NO_SSLv3|ssl.OP_NO_SSLv2,)
24982506
if hasattr(ssl, 'PROTOCOL_SSLv2'):
24992507
try_protocol_combo(ssl.PROTOCOL_TLSv1_2, ssl.PROTOCOL_SSLv2, False)
2500-
try_protocol_combo(ssl.PROTOCOL_TLSv1_2, ssl.PROTOCOL_SSLv3, False)
2508+
if hasattr(ssl, 'PROTOCOL_SSLv3'):
2509+
try_protocol_combo(ssl.PROTOCOL_TLSv1_2, ssl.PROTOCOL_SSLv3, False)
25012510
try_protocol_combo(ssl.PROTOCOL_TLSv1_2, ssl.PROTOCOL_SSLv23, False,
25022511
client_options=ssl.OP_NO_TLSv1_2)
25032512

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1269,6 +1269,9 @@ IDLE
12691269
Build
12701270
-----
12711271

1272+
- Issue #22935: Allow the ssl module to be compiled if openssl doesn't support
1273+
SSL 3.
1274+
12721275
- Issue #22592: Drop support of the Borland C compiler to build Python. The
12731276
distutils module still supports it to build extensions.
12741277

Modules/_ssl.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2132,8 +2132,10 @@ context_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
21322132
else if (proto_version == PY_SSL_VERSION_TLS1_2)
21332133
ctx = SSL_CTX_new(TLSv1_2_method());
21342134
#endif
2135+
#ifndef OPENSSL_NO_SSL3
21352136
else if (proto_version == PY_SSL_VERSION_SSL3)
21362137
ctx = SSL_CTX_new(SSLv3_method());
2138+
#endif
21372139
#ifndef OPENSSL_NO_SSL2
21382140
else if (proto_version == PY_SSL_VERSION_SSL2)
21392141
ctx = SSL_CTX_new(SSLv2_method());
@@ -4454,8 +4456,10 @@ PyInit__ssl(void)
44544456
PyModule_AddIntConstant(m, "PROTOCOL_SSLv2",
44554457
PY_SSL_VERSION_SSL2);
44564458
#endif
4459+
#ifndef OPENSSL_NO_SSL3
44574460
PyModule_AddIntConstant(m, "PROTOCOL_SSLv3",
44584461
PY_SSL_VERSION_SSL3);
4462+
#endif
44594463
PyModule_AddIntConstant(m, "PROTOCOL_SSLv23",
44604464
PY_SSL_VERSION_SSL23);
44614465
PyModule_AddIntConstant(m, "PROTOCOL_TLSv1",

0 commit comments

Comments
 (0)