Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_ssl.py @ 78069:a8aa77458e12 3.2
Add c_size_t and c_ssize_t to the ctypes summary table.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 12 Jul 2012 20:31:50 +0200 |
| parents | 683295cf9489 |
| children | 827bb0554f1f f8c9d131eb66 |
| rev | line source |
|---|---|
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1 # Test the support for SSL and sockets |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
2 |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
3 import sys |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
4 import unittest |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
5 from test import support |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
6 import socket |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
7 import select |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
8 import time |
|
60911
95c5e094b380
Merged revisions 80429 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60908
diff
changeset
|
9 import gc |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
10 import os |
|
60911
95c5e094b380
Merged revisions 80429 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60908
diff
changeset
|
11 import errno |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
12 import pprint |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
13 import tempfile |
|
65247
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
14 import urllib.request |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
15 import traceback |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
16 import asyncore |
|
60908
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
17 import weakref |
|
63740
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
18 import platform |
|
63741
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
19 import functools |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
20 |
|
65252
e517c3f56091
Let test_ssl fail gracefully if ssl support is not available
Antoine Pitrou <solipsis@pitrou.net>
parents:
65247
diff
changeset
|
21 ssl = support.import_module("ssl") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
22 |
|
65252
e517c3f56091
Let test_ssl fail gracefully if ssl support is not available
Antoine Pitrou <solipsis@pitrou.net>
parents:
65247
diff
changeset
|
23 PROTOCOLS = [ |
|
69998
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
24 ssl.PROTOCOL_SSLv3, |
|
65252
e517c3f56091
Let test_ssl fail gracefully if ssl support is not available
Antoine Pitrou <solipsis@pitrou.net>
parents:
65247
diff
changeset
|
25 ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1 |
|
e517c3f56091
Let test_ssl fail gracefully if ssl support is not available
Antoine Pitrou <solipsis@pitrou.net>
parents:
65247
diff
changeset
|
26 ] |
|
69998
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
27 if hasattr(ssl, 'PROTOCOL_SSLv2'): |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
28 PROTOCOLS.append(ssl.PROTOCOL_SSLv2) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
29 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
30 HOST = support.HOST |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
31 |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
32 data_file = lambda name: os.path.join(os.path.dirname(__file__), name) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
33 |
|
65185
9c026183d82a
Issue #1051: Add a script (Lib/test/make_ssl_certs.py) to generate the
Antoine Pitrou <solipsis@pitrou.net>
parents:
65179
diff
changeset
|
34 # The custom key and certificate files used in test_ssl are generated |
|
9c026183d82a
Issue #1051: Add a script (Lib/test/make_ssl_certs.py) to generate the
Antoine Pitrou <solipsis@pitrou.net>
parents:
65179
diff
changeset
|
35 # using Lib/test/make_ssl_certs.py. |
|
9c026183d82a
Issue #1051: Add a script (Lib/test/make_ssl_certs.py) to generate the
Antoine Pitrou <solipsis@pitrou.net>
parents:
65179
diff
changeset
|
36 # Other certificates are simply fetched from the Internet servers they |
|
9c026183d82a
Issue #1051: Add a script (Lib/test/make_ssl_certs.py) to generate the
Antoine Pitrou <solipsis@pitrou.net>
parents:
65179
diff
changeset
|
37 # are meant to authenticate. |
|
9c026183d82a
Issue #1051: Add a script (Lib/test/make_ssl_certs.py) to generate the
Antoine Pitrou <solipsis@pitrou.net>
parents:
65179
diff
changeset
|
38 |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
39 CERTFILE = data_file("keycert.pem") |
|
62276
3022904f9971
Issue #8969: On Windows, use mbcs codec in strict mode to encode and decode
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61782
diff
changeset
|
40 BYTES_CERTFILE = os.fsencode(CERTFILE) |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
41 ONLYCERT = data_file("ssl_cert.pem") |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
42 ONLYKEY = data_file("ssl_key.pem") |
|
62276
3022904f9971
Issue #8969: On Windows, use mbcs codec in strict mode to encode and decode
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61782
diff
changeset
|
43 BYTES_ONLYCERT = os.fsencode(ONLYCERT) |
|
3022904f9971
Issue #8969: On Windows, use mbcs codec in strict mode to encode and decode
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61782
diff
changeset
|
44 BYTES_ONLYKEY = os.fsencode(ONLYKEY) |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
45 CAPATH = data_file("capath") |
|
62276
3022904f9971
Issue #8969: On Windows, use mbcs codec in strict mode to encode and decode
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61782
diff
changeset
|
46 BYTES_CAPATH = os.fsencode(CAPATH) |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
47 |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
48 SVN_PYTHON_ORG_ROOT_CERT = data_file("https_svn_python_org_root.pem") |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
49 |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
50 EMPTYCERT = data_file("nullcert.pem") |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
51 BADCERT = data_file("badcert.pem") |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
52 WRONGCERT = data_file("XXXnonexisting.pem") |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
53 BADKEY = data_file("badkey.pem") |
|
72567
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
54 NOKIACERT = data_file("nokia.pem") |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
55 |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
56 |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
57 def handle_error(prefix): |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
58 exc_format = ' '.join(traceback.format_exception(*sys.exc_info())) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
59 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
60 sys.stdout.write(prefix + exc_format) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
61 |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
62 def can_clear_options(): |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
63 # 0.9.8m or higher |
|
71255
52ed0c6bb461
Issue #12440: When testing whether some bits in SSLContext.options can be
Antoine Pitrou <solipsis@pitrou.net>
parents:
70187
diff
changeset
|
64 return ssl._OPENSSL_API_VERSION >= (0, 9, 8, 13, 15) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
65 |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
66 def no_sslv2_implies_sslv3_hello(): |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
67 # 0.9.7h or higher |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
68 return ssl.OPENSSL_VERSION_INFO >= (0, 9, 7, 8, 15) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
69 |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
70 |
|
63741
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
71 # Issue #9415: Ubuntu hijacks their OpenSSL and forcefully disables SSLv2 |
|
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
72 def skip_if_broken_ubuntu_ssl(func): |
|
69998
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
73 if hasattr(ssl, 'PROTOCOL_SSLv2'): |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
74 @functools.wraps(func) |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
75 def f(*args, **kwargs): |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
76 try: |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
77 ssl.SSLContext(ssl.PROTOCOL_SSLv2) |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
78 except ssl.SSLError: |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
79 if (ssl.OPENSSL_VERSION_INFO == (0, 9, 8, 15, 15) and |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
80 platform.linux_distribution() == ('debian', 'squeeze/sid', '')): |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
81 raise unittest.SkipTest("Patched Ubuntu OpenSSL breaks behaviour") |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
82 return func(*args, **kwargs) |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
83 return f |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
84 else: |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
85 return func |
|
63741
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
86 |
|
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
87 |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
88 class BasicSocketTests(unittest.TestCase): |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
89 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
90 def test_constants(self): |
|
69997
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
91 #ssl.PROTOCOL_SSLv2 |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
92 ssl.PROTOCOL_SSLv23 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
93 ssl.PROTOCOL_SSLv3 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
94 ssl.PROTOCOL_TLSv1 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
95 ssl.CERT_NONE |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
96 ssl.CERT_OPTIONAL |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
97 ssl.CERT_REQUIRED |
|
65593
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
98 self.assertIn(ssl.HAS_SNI, {True, False}) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
99 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
100 def test_random(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
101 v = ssl.RAND_status() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
102 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
103 sys.stdout.write("\n RAND_status is %d (%s)\n" |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
104 % (v, (v and "sufficient randomness") or |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
105 "insufficient randomness")) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
106 try: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
107 ssl.RAND_egd(1) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
108 except TypeError: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
109 pass |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
110 else: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
111 print("didn't raise TypeError") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
112 ssl.RAND_add("this is a random string", 75.0) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
113 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
114 def test_parse_cert(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
115 # note that this uses an 'unofficial' function in _ssl.c, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
116 # provided solely for this test, to exercise the certificate |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
117 # parsing code |
|
66114
eeebb622fd08
Issue #10022: The dictionary returned by the `getpeercert()` method
Antoine Pitrou <solipsis@pitrou.net>
parents:
65739
diff
changeset
|
118 p = ssl._ssl._test_decode_cert(CERTFILE) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
119 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
120 sys.stdout.write("\n" + pprint.pformat(p) + "\n") |
|
72567
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
121 self.assertEqual(p['issuer'], |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
122 ((('countryName', 'XY'),), |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
123 (('localityName', 'Castle Anthrax'),), |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
124 (('organizationName', 'Python Software Foundation'),), |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
125 (('commonName', 'localhost'),)) |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
126 ) |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
127 self.assertEqual(p['notAfter'], 'Oct 5 23:01:56 2020 GMT') |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
128 self.assertEqual(p['notBefore'], 'Oct 8 23:01:56 2010 GMT') |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
129 self.assertEqual(p['serialNumber'], 'D7C7381919AFC24E') |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
130 self.assertEqual(p['subject'], |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
131 ((('countryName', 'XY'),), |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
132 (('localityName', 'Castle Anthrax'),), |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
133 (('organizationName', 'Python Software Foundation'),), |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
134 (('commonName', 'localhost'),)) |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
135 ) |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
136 self.assertEqual(p['subjectAltName'], (('DNS', 'localhost'),)) |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
137 # Issue #13034: the subjectAltName in some certificates |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
138 # (notably projects.developer.nokia.com:443) wasn't parsed |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
139 p = ssl._ssl._test_decode_cert(NOKIACERT) |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
140 if support.verbose: |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
141 sys.stdout.write("\n" + pprint.pformat(p) + "\n") |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
142 self.assertEqual(p['subjectAltName'], |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
143 (('DNS', 'projects.developer.nokia.com'), |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
144 ('DNS', 'projects.forum.nokia.com')) |
|
65e7f40fefd4
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
Antoine Pitrou <solipsis@pitrou.net>
parents:
71255
diff
changeset
|
145 ) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
146 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
147 def test_DER_to_PEM(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
148 with open(SVN_PYTHON_ORG_ROOT_CERT, 'r') as f: |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
149 pem = f.read() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
150 d1 = ssl.PEM_cert_to_DER_cert(pem) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
151 p2 = ssl.DER_cert_to_PEM_cert(d1) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
152 d2 = ssl.PEM_cert_to_DER_cert(p2) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
153 self.assertEqual(d1, d2) |
|
61035
827920c546af
Merged revisions 80559 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61012
diff
changeset
|
154 if not p2.startswith(ssl.PEM_HEADER + '\n'): |
|
827920c546af
Merged revisions 80559 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61012
diff
changeset
|
155 self.fail("DER-to-PEM didn't include correct header:\n%r\n" % p2) |
|
827920c546af
Merged revisions 80559 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61012
diff
changeset
|
156 if not p2.endswith('\n' + ssl.PEM_FOOTER + '\n'): |
|
827920c546af
Merged revisions 80559 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61012
diff
changeset
|
157 self.fail("DER-to-PEM didn't include correct footer:\n%r\n" % p2) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
158 |
|
60373
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
159 def test_openssl_version(self): |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
160 n = ssl.OPENSSL_VERSION_NUMBER |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
161 t = ssl.OPENSSL_VERSION_INFO |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
162 s = ssl.OPENSSL_VERSION |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
163 self.assertIsInstance(n, int) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
164 self.assertIsInstance(t, tuple) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
165 self.assertIsInstance(s, str) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
166 # Some sanity checks follow |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
167 # >= 0.9 |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
168 self.assertGreaterEqual(n, 0x900000) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
169 # < 2.0 |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
170 self.assertLess(n, 0x20000000) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
171 major, minor, fix, patch, status = t |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
172 self.assertGreaterEqual(major, 0) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
173 self.assertLess(major, 2) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
174 self.assertGreaterEqual(minor, 0) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
175 self.assertLess(minor, 256) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
176 self.assertGreaterEqual(fix, 0) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
177 self.assertLess(fix, 256) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
178 self.assertGreaterEqual(patch, 0) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
179 self.assertLessEqual(patch, 26) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
180 self.assertGreaterEqual(status, 0) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
181 self.assertLessEqual(status, 15) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
182 # Version string as returned by OpenSSL, the format might change |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
183 self.assertTrue(s.startswith("OpenSSL {:d}.{:d}.{:d}".format(major, minor, fix)), |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
184 (s, t)) |
|
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
185 |
|
60908
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
186 @support.cpython_only |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
187 def test_refcycle(self): |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
188 # Issue #7943: an SSL object doesn't create reference cycles with |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
189 # itself. |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
190 s = socket.socket(socket.AF_INET) |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
191 ss = ssl.wrap_socket(s) |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
192 wr = weakref.ref(ss) |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
193 del ss |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
194 self.assertEqual(wr(), None) |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
195 |
|
64743
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
196 def test_wrapped_unconnected(self): |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
197 # Methods on an unconnected SSLSocket propagate the original |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
198 # socket.error raise by the underlying socket object. |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
199 s = socket.socket(socket.AF_INET) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
200 ss = ssl.wrap_socket(s) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
201 self.assertRaises(socket.error, ss.recv, 1) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
202 self.assertRaises(socket.error, ss.recv_into, bytearray(b'x')) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
203 self.assertRaises(socket.error, ss.recvfrom, 1) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
204 self.assertRaises(socket.error, ss.recvfrom_into, bytearray(b'x'), 1) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
205 self.assertRaises(socket.error, ss.send, b'x') |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
206 self.assertRaises(socket.error, ss.sendto, b'x', ('0.0.0.0', 0)) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
207 |
|
60938
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
208 def test_timeout(self): |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
209 # Issue #8524: when creating an SSL socket, the timeout of the |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
210 # original socket should be retained. |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
211 for timeout in (None, 0.0, 5.0): |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
212 s = socket.socket(socket.AF_INET) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
213 s.settimeout(timeout) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
214 ss = ssl.wrap_socket(s) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
215 self.assertEqual(timeout, ss.gettimeout()) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
216 |
|
64306
9297974604ff
Fix issue issue9706: provides a better error handling for various SSL operations
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64062
diff
changeset
|
217 def test_errors(self): |
|
9297974604ff
Fix issue issue9706: provides a better error handling for various SSL operations
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64062
diff
changeset
|
218 sock = socket.socket() |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
219 self.assertRaisesRegex(ValueError, |
|
64324
84883607e21a
Fix issue #9711: raise ValueError is SSLConnection constructor is invoked with keyfile and not certfile.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64309
diff
changeset
|
220 "certfile must be specified", |
|
84883607e21a
Fix issue #9711: raise ValueError is SSLConnection constructor is invoked with keyfile and not certfile.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64309
diff
changeset
|
221 ssl.wrap_socket, sock, keyfile=CERTFILE) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
222 self.assertRaisesRegex(ValueError, |
|
64324
84883607e21a
Fix issue #9711: raise ValueError is SSLConnection constructor is invoked with keyfile and not certfile.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64309
diff
changeset
|
223 "certfile must be specified for server-side operations", |
|
84883607e21a
Fix issue #9711: raise ValueError is SSLConnection constructor is invoked with keyfile and not certfile.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64309
diff
changeset
|
224 ssl.wrap_socket, sock, server_side=True) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
225 self.assertRaisesRegex(ValueError, |
|
64324
84883607e21a
Fix issue #9711: raise ValueError is SSLConnection constructor is invoked with keyfile and not certfile.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64309
diff
changeset
|
226 "certfile must be specified for server-side operations", |
|
84883607e21a
Fix issue #9711: raise ValueError is SSLConnection constructor is invoked with keyfile and not certfile.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64309
diff
changeset
|
227 ssl.wrap_socket, sock, server_side=True, certfile="") |
|
64306
9297974604ff
Fix issue issue9706: provides a better error handling for various SSL operations
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64062
diff
changeset
|
228 s = ssl.wrap_socket(sock, server_side=True, certfile=CERTFILE) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
229 self.assertRaisesRegex(ValueError, "can't connect in server-side mode", |
|
64306
9297974604ff
Fix issue issue9706: provides a better error handling for various SSL operations
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64062
diff
changeset
|
230 s.connect, (HOST, 8080)) |
|
64309
9c51f3836563
dedent some lines in test_ssl so that they are actually executed
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64308
diff
changeset
|
231 with self.assertRaises(IOError) as cm: |
|
65739
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
232 with socket.socket() as sock: |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
233 ssl.wrap_socket(sock, certfile=WRONGCERT) |
|
64309
9c51f3836563
dedent some lines in test_ssl so that they are actually executed
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64308
diff
changeset
|
234 self.assertEqual(cm.exception.errno, errno.ENOENT) |
|
64324
84883607e21a
Fix issue #9711: raise ValueError is SSLConnection constructor is invoked with keyfile and not certfile.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64309
diff
changeset
|
235 with self.assertRaises(IOError) as cm: |
|
65739
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
236 with socket.socket() as sock: |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
237 ssl.wrap_socket(sock, certfile=CERTFILE, keyfile=WRONGCERT) |
|
64324
84883607e21a
Fix issue #9711: raise ValueError is SSLConnection constructor is invoked with keyfile and not certfile.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64309
diff
changeset
|
238 self.assertEqual(cm.exception.errno, errno.ENOENT) |
|
64309
9c51f3836563
dedent some lines in test_ssl so that they are actually executed
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64308
diff
changeset
|
239 with self.assertRaises(IOError) as cm: |
|
65739
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
240 with socket.socket() as sock: |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
241 ssl.wrap_socket(sock, certfile=WRONGCERT, keyfile=WRONGCERT) |
|
64309
9c51f3836563
dedent some lines in test_ssl so that they are actually executed
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64308
diff
changeset
|
242 self.assertEqual(cm.exception.errno, errno.ENOENT) |
|
64306
9297974604ff
Fix issue issue9706: provides a better error handling for various SSL operations
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64062
diff
changeset
|
243 |
|
65179
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
244 def test_match_hostname(self): |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
245 def ok(cert, hostname): |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
246 ssl.match_hostname(cert, hostname) |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
247 def fail(cert, hostname): |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
248 self.assertRaises(ssl.CertificateError, |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
249 ssl.match_hostname, cert, hostname) |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
250 |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
251 cert = {'subject': ((('commonName', 'example.com'),),)} |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
252 ok(cert, 'example.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
253 ok(cert, 'ExAmple.cOm') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
254 fail(cert, 'www.example.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
255 fail(cert, '.example.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
256 fail(cert, 'example.org') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
257 fail(cert, 'exampleXcom') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
258 |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
259 cert = {'subject': ((('commonName', '*.a.com'),),)} |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
260 ok(cert, 'foo.a.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
261 fail(cert, 'bar.foo.a.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
262 fail(cert, 'a.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
263 fail(cert, 'Xa.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
264 fail(cert, '.a.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
265 |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
266 cert = {'subject': ((('commonName', 'a.*.com'),),)} |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
267 ok(cert, 'a.foo.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
268 fail(cert, 'a..com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
269 fail(cert, 'a.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
270 |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
271 cert = {'subject': ((('commonName', 'f*.com'),),)} |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
272 ok(cert, 'foo.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
273 ok(cert, 'f.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
274 fail(cert, 'bar.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
275 fail(cert, 'foo.a.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
276 fail(cert, 'bar.foo.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
277 |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
278 # Slightly fake real-world example |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
279 cert = {'notAfter': 'Jun 26 21:41:46 2011 GMT', |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
280 'subject': ((('commonName', 'linuxfrz.org'),),), |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
281 'subjectAltName': (('DNS', 'linuxfr.org'), |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
282 ('DNS', 'linuxfr.com'), |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
283 ('othername', '<unsupported>'))} |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
284 ok(cert, 'linuxfr.org') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
285 ok(cert, 'linuxfr.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
286 # Not a "DNS" entry |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
287 fail(cert, '<unsupported>') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
288 # When there is a subjectAltName, commonName isn't used |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
289 fail(cert, 'linuxfrz.org') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
290 |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
291 # A pristine real-world example |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
292 cert = {'notAfter': 'Dec 18 23:59:59 2011 GMT', |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
293 'subject': ((('countryName', 'US'),), |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
294 (('stateOrProvinceName', 'California'),), |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
295 (('localityName', 'Mountain View'),), |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
296 (('organizationName', 'Google Inc'),), |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
297 (('commonName', 'mail.google.com'),))} |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
298 ok(cert, 'mail.google.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
299 fail(cert, 'gmail.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
300 # Only commonName is considered |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
301 fail(cert, 'California') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
302 |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
303 # Neither commonName nor subjectAltName |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
304 cert = {'notAfter': 'Dec 18 23:59:59 2011 GMT', |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
305 'subject': ((('countryName', 'US'),), |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
306 (('stateOrProvinceName', 'California'),), |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
307 (('localityName', 'Mountain View'),), |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
308 (('organizationName', 'Google Inc'),))} |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
309 fail(cert, 'mail.google.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
310 |
|
69874
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
311 # No DNS entry in subjectAltName but a commonName |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
312 cert = {'notAfter': 'Dec 18 23:59:59 2099 GMT', |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
313 'subject': ((('countryName', 'US'),), |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
314 (('stateOrProvinceName', 'California'),), |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
315 (('localityName', 'Mountain View'),), |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
316 (('commonName', 'mail.google.com'),)), |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
317 'subjectAltName': (('othername', 'blabla'), )} |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
318 ok(cert, 'mail.google.com') |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
319 |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
320 # No DNS entry subjectAltName and no commonName |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
321 cert = {'notAfter': 'Dec 18 23:59:59 2099 GMT', |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
322 'subject': ((('countryName', 'US'),), |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
323 (('stateOrProvinceName', 'California'),), |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
324 (('localityName', 'Mountain View'),), |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
325 (('organizationName', 'Google Inc'),)), |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
326 'subjectAltName': (('othername', 'blabla'),)} |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
327 fail(cert, 'google.com') |
|
d4c2a99d1bad
Issue #12000: When a SSL certificate has a subjectAltName without any
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
328 |
|
65179
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
329 # Empty cert / no cert |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
330 self.assertRaises(ValueError, ssl.match_hostname, None, 'example.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
331 self.assertRaises(ValueError, ssl.match_hostname, {}, 'example.com') |
|
4c98eeff37e7
Issue #1589: Add ssl.match_hostname(), to help implement server identity
Antoine Pitrou <solipsis@pitrou.net>
parents:
65088
diff
changeset
|
332 |
|
65593
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
333 def test_server_side(self): |
|
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
334 # server_hostname doesn't work for server sockets |
|
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
335 ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23) |
|
65739
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
336 with socket.socket() as sock: |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
337 self.assertRaises(ValueError, ctx.wrap_socket, sock, True, |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
338 server_hostname="some.hostname") |
|
60373
9e5e9d8fa847
Merged revisions 79812 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
339 |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
340 class ContextTests(unittest.TestCase): |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
341 |
|
63741
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
342 @skip_if_broken_ubuntu_ssl |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
343 def test_constructor(self): |
|
69998
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
344 if hasattr(ssl, 'PROTOCOL_SSLv2'): |
|
20beec22764f
(Merge 3.1) Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
diff
changeset
|
345 ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv2) |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
346 ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
347 ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv3) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
348 ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
349 self.assertRaises(TypeError, ssl.SSLContext) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
350 self.assertRaises(ValueError, ssl.SSLContext, -1) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
351 self.assertRaises(ValueError, ssl.SSLContext, 42) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
352 |
|
63741
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
353 @skip_if_broken_ubuntu_ssl |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
354 def test_protocol(self): |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
355 for proto in PROTOCOLS: |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
356 ctx = ssl.SSLContext(proto) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
357 self.assertEqual(ctx.protocol, proto) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
358 |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
359 def test_ciphers(self): |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
360 ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
361 ctx.set_ciphers("ALL") |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
362 ctx.set_ciphers("DEFAULT") |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
363 with self.assertRaisesRegex(ssl.SSLError, "No cipher can be selected"): |
|
61648
4d27e880724a
"xyzzy" is not a silly enough name for some OpenSSL versions to report an error
Antoine Pitrou <solipsis@pitrou.net>
parents:
61638
diff
changeset
|
364 ctx.set_ciphers("^$:,;?*'dorothyx") |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
365 |
|
63741
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
366 @skip_if_broken_ubuntu_ssl |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
367 def test_options(self): |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
368 ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
369 # OP_ALL is the default value |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
370 self.assertEqual(ssl.OP_ALL, ctx.options) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
371 ctx.options |= ssl.OP_NO_SSLv2 |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
372 self.assertEqual(ssl.OP_ALL | ssl.OP_NO_SSLv2, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
373 ctx.options) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
374 ctx.options |= ssl.OP_NO_SSLv3 |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
375 self.assertEqual(ssl.OP_ALL | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
376 ctx.options) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
377 if can_clear_options(): |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
378 ctx.options = (ctx.options & ~ssl.OP_NO_SSLv2) | ssl.OP_NO_TLSv1 |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
379 self.assertEqual(ssl.OP_ALL | ssl.OP_NO_TLSv1 | ssl.OP_NO_SSLv3, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
380 ctx.options) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
381 ctx.options = 0 |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
382 self.assertEqual(0, ctx.options) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
383 else: |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
384 with self.assertRaises(ValueError): |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
385 ctx.options = 0 |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
386 |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
387 def test_verify(self): |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
388 ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
389 # Default value |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
390 self.assertEqual(ctx.verify_mode, ssl.CERT_NONE) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
391 ctx.verify_mode = ssl.CERT_OPTIONAL |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
392 self.assertEqual(ctx.verify_mode, ssl.CERT_OPTIONAL) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
393 ctx.verify_mode = ssl.CERT_REQUIRED |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
394 self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
395 ctx.verify_mode = ssl.CERT_NONE |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
396 self.assertEqual(ctx.verify_mode, ssl.CERT_NONE) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
397 with self.assertRaises(TypeError): |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
398 ctx.verify_mode = None |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
399 with self.assertRaises(ValueError): |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
400 ctx.verify_mode = 42 |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
401 |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
402 def test_load_cert_chain(self): |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
403 ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
404 # Combined key and cert in a single file |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
405 ctx.load_cert_chain(CERTFILE) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
406 ctx.load_cert_chain(CERTFILE, keyfile=CERTFILE) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
407 self.assertRaises(TypeError, ctx.load_cert_chain, keyfile=CERTFILE) |
|
64309
9c51f3836563
dedent some lines in test_ssl so that they are actually executed
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64308
diff
changeset
|
408 with self.assertRaises(IOError) as cm: |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
409 ctx.load_cert_chain(WRONGCERT) |
|
64309
9c51f3836563
dedent some lines in test_ssl so that they are actually executed
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64308
diff
changeset
|
410 self.assertEqual(cm.exception.errno, errno.ENOENT) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
411 with self.assertRaisesRegex(ssl.SSLError, "PEM lib"): |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
412 ctx.load_cert_chain(BADCERT) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
413 with self.assertRaisesRegex(ssl.SSLError, "PEM lib"): |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
414 ctx.load_cert_chain(EMPTYCERT) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
415 # Separate key and cert |
|
61659
c86eeb733316
Try to fix buildbot failures with old OpenSSLs.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61648
diff
changeset
|
416 ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
417 ctx.load_cert_chain(ONLYCERT, ONLYKEY) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
418 ctx.load_cert_chain(certfile=ONLYCERT, keyfile=ONLYKEY) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
419 ctx.load_cert_chain(certfile=BYTES_ONLYCERT, keyfile=BYTES_ONLYKEY) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
420 with self.assertRaisesRegex(ssl.SSLError, "PEM lib"): |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
421 ctx.load_cert_chain(ONLYCERT) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
422 with self.assertRaisesRegex(ssl.SSLError, "PEM lib"): |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
423 ctx.load_cert_chain(ONLYKEY) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
424 with self.assertRaisesRegex(ssl.SSLError, "PEM lib"): |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
425 ctx.load_cert_chain(certfile=ONLYKEY, keyfile=ONLYCERT) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
426 # Mismatching key and cert |
|
61659
c86eeb733316
Try to fix buildbot failures with old OpenSSLs.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61648
diff
changeset
|
427 ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
428 with self.assertRaisesRegex(ssl.SSLError, "key values mismatch"): |
|
65185
9c026183d82a
Issue #1051: Add a script (Lib/test/make_ssl_certs.py) to generate the
Antoine Pitrou <solipsis@pitrou.net>
parents:
65179
diff
changeset
|
429 ctx.load_cert_chain(SVN_PYTHON_ORG_ROOT_CERT, ONLYKEY) |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
430 |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
431 def test_load_verify_locations(self): |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
432 ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
433 ctx.load_verify_locations(CERTFILE) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
434 ctx.load_verify_locations(cafile=CERTFILE, capath=None) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
435 ctx.load_verify_locations(BYTES_CERTFILE) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
436 ctx.load_verify_locations(cafile=BYTES_CERTFILE, capath=None) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
437 self.assertRaises(TypeError, ctx.load_verify_locations) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
438 self.assertRaises(TypeError, ctx.load_verify_locations, None, None) |
|
64309
9c51f3836563
dedent some lines in test_ssl so that they are actually executed
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64308
diff
changeset
|
439 with self.assertRaises(IOError) as cm: |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
440 ctx.load_verify_locations(WRONGCERT) |
|
64309
9c51f3836563
dedent some lines in test_ssl so that they are actually executed
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64308
diff
changeset
|
441 self.assertEqual(cm.exception.errno, errno.ENOENT) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
442 with self.assertRaisesRegex(ssl.SSLError, "PEM lib"): |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
443 ctx.load_verify_locations(BADCERT) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
444 ctx.load_verify_locations(CERTFILE, CAPATH) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
445 ctx.load_verify_locations(CERTFILE, capath=BYTES_CAPATH) |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
446 |
|
67792
852186e5ae2a
Issue #10989: Fix a crash on SSLContext.load_verify_locations(None, True).
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67464
diff
changeset
|
447 # Issue #10989: crash if the second argument type is invalid |
|
852186e5ae2a
Issue #10989: Fix a crash on SSLContext.load_verify_locations(None, True).
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67464
diff
changeset
|
448 self.assertRaises(TypeError, ctx.load_verify_locations, None, True) |
|
852186e5ae2a
Issue #10989: Fix a crash on SSLContext.load_verify_locations(None, True).
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67464
diff
changeset
|
449 |
|
65594
1438d6b67052
Fix test_ssl on Ubuntu buildbot with patched OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
65593
diff
changeset
|
450 @skip_if_broken_ubuntu_ssl |
|
65223
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
451 def test_session_stats(self): |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
452 for proto in PROTOCOLS: |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
453 ctx = ssl.SSLContext(proto) |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
454 self.assertEqual(ctx.session_stats(), { |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
455 'number': 0, |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
456 'connect': 0, |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
457 'connect_good': 0, |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
458 'connect_renegotiate': 0, |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
459 'accept': 0, |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
460 'accept_good': 0, |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
461 'accept_renegotiate': 0, |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
462 'hits': 0, |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
463 'misses': 0, |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
464 'timeouts': 0, |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
465 'cache_full': 0, |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
466 }) |
|
9c723afa44da
Issue #10075: Add a session_stats() method to SSLContext objects.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65185
diff
changeset
|
467 |
|
66217
7826d907b765
Issue #10443: Add the SSLContext.set_default_verify_paths() method.
Antoine Pitrou <solipsis@pitrou.net>
parents:
66114
diff
changeset
|
468 def test_set_default_verify_paths(self): |
|
7826d907b765
Issue #10443: Add the SSLContext.set_default_verify_paths() method.
Antoine Pitrou <solipsis@pitrou.net>
parents:
66114
diff
changeset
|
469 # There's not much we can do to test that it acts as expected, |
|
7826d907b765
Issue #10443: Add the SSLContext.set_default_verify_paths() method.
Antoine Pitrou <solipsis@pitrou.net>
parents:
66114
diff
changeset
|
470 # so just check it doesn't crash or raise an exception. |
|
7826d907b765
Issue #10443: Add the SSLContext.set_default_verify_paths() method.
Antoine Pitrou <solipsis@pitrou.net>
parents:
66114
diff
changeset
|
471 ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
7826d907b765
Issue #10443: Add the SSLContext.set_default_verify_paths() method.
Antoine Pitrou <solipsis@pitrou.net>
parents:
66114
diff
changeset
|
472 ctx.set_default_verify_paths() |
|
7826d907b765
Issue #10443: Add the SSLContext.set_default_verify_paths() method.
Antoine Pitrou <solipsis@pitrou.net>
parents:
66114
diff
changeset
|
473 |
|
60911
95c5e094b380
Merged revisions 80429 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60908
diff
changeset
|
474 |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
475 class NetworkedTests(unittest.TestCase): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
476 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
477 def test_connect(self): |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
478 with support.transient_internet("svn.python.org"): |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
479 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
480 cert_reqs=ssl.CERT_NONE) |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
481 try: |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
482 s.connect(("svn.python.org", 443)) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
483 self.assertEqual({}, s.getpeercert()) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
484 finally: |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
485 s.close() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
486 |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
487 # this should fail because we have no verification certs |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
488 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
489 cert_reqs=ssl.CERT_REQUIRED) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
490 self.assertRaisesRegex(ssl.SSLError, "certificate verify failed", |
|
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
491 s.connect, ("svn.python.org", 443)) |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
492 s.close() |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
493 |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
494 # this should succeed because we specify the root cert |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
495 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
496 cert_reqs=ssl.CERT_REQUIRED, |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
497 ca_certs=SVN_PYTHON_ORG_ROOT_CERT) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
498 try: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
499 s.connect(("svn.python.org", 443)) |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
500 self.assertTrue(s.getpeercert()) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
501 finally: |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
502 s.close() |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
503 |
|
68186
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
504 def test_connect_ex(self): |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
505 # Issue #11326: check connect_ex() implementation |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
506 with support.transient_internet("svn.python.org"): |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
507 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
508 cert_reqs=ssl.CERT_REQUIRED, |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
509 ca_certs=SVN_PYTHON_ORG_ROOT_CERT) |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
510 try: |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
511 self.assertEqual(0, s.connect_ex(("svn.python.org", 443))) |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
512 self.assertTrue(s.getpeercert()) |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
513 finally: |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
514 s.close() |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
515 |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
516 def test_non_blocking_connect_ex(self): |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
517 # Issue #11326: non-blocking connect_ex() should allow handshake |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
518 # to proceed after the socket gets ready. |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
519 with support.transient_internet("svn.python.org"): |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
520 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
521 cert_reqs=ssl.CERT_REQUIRED, |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
522 ca_certs=SVN_PYTHON_ORG_ROOT_CERT, |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
523 do_handshake_on_connect=False) |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
524 try: |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
525 s.setblocking(False) |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
526 rc = s.connect_ex(('svn.python.org', 443)) |
|
68188
2f07d375ce6e
Follow up to r88664: non-blocking connect-ex() can return EWOULDBLOCK under Windows
Antoine Pitrou <solipsis@pitrou.net>
parents:
68186
diff
changeset
|
527 # EWOULDBLOCK under Windows, EINPROGRESS elsewhere |
|
2f07d375ce6e
Follow up to r88664: non-blocking connect-ex() can return EWOULDBLOCK under Windows
Antoine Pitrou <solipsis@pitrou.net>
parents:
68186
diff
changeset
|
528 self.assertIn(rc, (0, errno.EINPROGRESS, errno.EWOULDBLOCK)) |
|
68186
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
529 # Wait for connect to finish |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
530 select.select([], [s], [], 5.0) |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
531 # Non-blocking handshake |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
532 while True: |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
533 try: |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
534 s.do_handshake() |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
535 break |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
536 except ssl.SSLError as err: |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
537 if err.args[0] == ssl.SSL_ERROR_WANT_READ: |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
538 select.select([s], [], [], 5.0) |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
539 elif err.args[0] == ssl.SSL_ERROR_WANT_WRITE: |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
540 select.select([], [s], [], 5.0) |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
541 else: |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
542 raise |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
543 # SSL established |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
544 self.assertTrue(s.getpeercert()) |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
545 finally: |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
546 s.close() |
|
1909c12ef06c
Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
Antoine Pitrou <solipsis@pitrou.net>
parents:
67792
diff
changeset
|
547 |
|
70187
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
548 def test_timeout_connect_ex(self): |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
549 # Issue #12065: on a timeout, connect_ex() should return the original |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
550 # errno (mimicking the behaviour of non-SSL sockets). |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
551 with support.transient_internet("svn.python.org"): |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
552 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
553 cert_reqs=ssl.CERT_REQUIRED, |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
554 ca_certs=SVN_PYTHON_ORG_ROOT_CERT, |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
555 do_handshake_on_connect=False) |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
556 try: |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
557 s.settimeout(0.0000001) |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
558 rc = s.connect_ex(('svn.python.org', 443)) |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
559 if rc == 0: |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
560 self.skipTest("svn.python.org responded too quickly") |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
561 self.assertIn(rc, (errno.EAGAIN, errno.EWOULDBLOCK)) |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
562 finally: |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
563 s.close() |
|
019d8ccdf03b
Issue #12065: connect_ex() on an SSL socket now returns the original errno
Antoine Pitrou <solipsis@pitrou.net>
parents:
69998
diff
changeset
|
564 |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
565 def test_connect_with_context(self): |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
566 with support.transient_internet("svn.python.org"): |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
567 # Same as test_connect, but with a separately created context |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
568 ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
569 s = ctx.wrap_socket(socket.socket(socket.AF_INET)) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
570 s.connect(("svn.python.org", 443)) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
571 try: |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
572 self.assertEqual({}, s.getpeercert()) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
573 finally: |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
574 s.close() |
|
65593
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
575 # Same with a server hostname |
|
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
576 s = ctx.wrap_socket(socket.socket(socket.AF_INET), |
|
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
577 server_hostname="svn.python.org") |
|
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
578 if ssl.HAS_SNI: |
|
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
579 s.connect(("svn.python.org", 443)) |
|
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
580 s.close() |
|
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
581 else: |
|
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
582 self.assertRaises(ValueError, s.connect, ("svn.python.org", 443)) |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
583 # This should fail because we have no verification certs |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
584 ctx.verify_mode = ssl.CERT_REQUIRED |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
585 s = ctx.wrap_socket(socket.socket(socket.AF_INET)) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
586 self.assertRaisesRegex(ssl.SSLError, "certificate verify failed", |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
587 s.connect, ("svn.python.org", 443)) |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
588 s.close() |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
589 # This should succeed because we specify the root cert |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
590 ctx.load_verify_locations(SVN_PYTHON_ORG_ROOT_CERT) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
591 s = ctx.wrap_socket(socket.socket(socket.AF_INET)) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
592 s.connect(("svn.python.org", 443)) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
593 try: |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
594 cert = s.getpeercert() |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
595 self.assertTrue(cert) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
596 finally: |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
597 s.close() |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
598 |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
599 def test_connect_capath(self): |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
600 # Verify server certificates using the `capath` argument |
|
61636
b29ab4e76736
Followup on r81233: fix test_ssl with OpenSSL < 1.0.0.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61635
diff
changeset
|
601 # NOTE: the subject hashing algorithm has been changed between |
|
b29ab4e76736
Followup on r81233: fix test_ssl with OpenSSL < 1.0.0.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61635
diff
changeset
|
602 # OpenSSL 0.9.8n and 1.0.0, as a result the capath directory must |
|
b29ab4e76736
Followup on r81233: fix test_ssl with OpenSSL < 1.0.0.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61635
diff
changeset
|
603 # contain both versions of each certificate (same content, different |
|
61668
39eb91a5f9dc
Typo (thanks Arfrever)
Antoine Pitrou <solipsis@pitrou.net>
parents:
61659
diff
changeset
|
604 # filename) for this test to be portable across OpenSSL releases. |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
605 with support.transient_internet("svn.python.org"): |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
606 ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
607 ctx.verify_mode = ssl.CERT_REQUIRED |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
608 ctx.load_verify_locations(capath=CAPATH) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
609 s = ctx.wrap_socket(socket.socket(socket.AF_INET)) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
610 s.connect(("svn.python.org", 443)) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
611 try: |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
612 cert = s.getpeercert() |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
613 self.assertTrue(cert) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
614 finally: |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
615 s.close() |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
616 # Same with a bytes `capath` argument |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
617 ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
618 ctx.verify_mode = ssl.CERT_REQUIRED |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
619 ctx.load_verify_locations(capath=BYTES_CAPATH) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
620 s = ctx.wrap_socket(socket.socket(socket.AF_INET)) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
621 s.connect(("svn.python.org", 443)) |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
622 try: |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
623 cert = s.getpeercert() |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
624 self.assertTrue(cert) |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
625 finally: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
626 s.close() |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
627 |
|
60918
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
628 @unittest.skipIf(os.name == "nt", "Can't use a socket as a file under Windows") |
|
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
629 def test_makefile_close(self): |
|
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
630 # Issue #5238: creating a file-like object with makefile() shouldn't |
|
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
631 # delay closing the underlying "real socket" (here tested with its |
|
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
632 # file descriptor, hence skipping the test under Windows). |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
633 with support.transient_internet("svn.python.org"): |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
634 ss = ssl.wrap_socket(socket.socket(socket.AF_INET)) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
635 ss.connect(("svn.python.org", 443)) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
636 fd = ss.fileno() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
637 f = ss.makefile() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
638 f.close() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
639 # The fd is still open |
|
60918
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
640 os.read(fd, 0) |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
641 # Closing the SSL socket should close the fd too |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
642 ss.close() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
643 gc.collect() |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
644 with self.assertRaises(OSError) as e: |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
645 os.read(fd, 0) |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
646 self.assertEqual(e.exception.errno, errno.EBADF) |
|
60918
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
647 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
648 def test_non_blocking_handshake(self): |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
649 with support.transient_internet("svn.python.org"): |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
650 s = socket.socket(socket.AF_INET) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
651 s.connect(("svn.python.org", 443)) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
652 s.setblocking(False) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
653 s = ssl.wrap_socket(s, |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
654 cert_reqs=ssl.CERT_NONE, |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
655 do_handshake_on_connect=False) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
656 count = 0 |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
657 while True: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
658 try: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
659 count += 1 |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
660 s.do_handshake() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
661 break |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
662 except ssl.SSLError as err: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
663 if err.args[0] == ssl.SSL_ERROR_WANT_READ: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
664 select.select([s], [], []) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
665 elif err.args[0] == ssl.SSL_ERROR_WANT_WRITE: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
666 select.select([], [s], []) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
667 else: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
668 raise |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
669 s.close() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
670 if support.verbose: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
671 sys.stdout.write("\nNeeded %d calls to do_handshake() to establish session.\n" % count) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
672 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
673 def test_get_server_certificate(self): |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
674 with support.transient_internet("svn.python.org"): |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
675 pem = ssl.get_server_certificate(("svn.python.org", 443)) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
676 if not pem: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
677 self.fail("No server certificate on svn.python.org:443!") |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
678 |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
679 try: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
680 pem = ssl.get_server_certificate(("svn.python.org", 443), ca_certs=CERTFILE) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
681 except ssl.SSLError as x: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
682 #should fail |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
683 if support.verbose: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
684 sys.stdout.write("%s\n" % x) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
685 else: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
686 self.fail("Got server certificate %s for svn.python.org!" % pem) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
687 |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
688 pem = ssl.get_server_certificate(("svn.python.org", 443), ca_certs=SVN_PYTHON_ORG_ROOT_CERT) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
689 if not pem: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
690 self.fail("No server certificate on svn.python.org:443!") |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
691 if support.verbose: |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
692 sys.stdout.write("\nVerified certificate for svn.python.org:443 is\n%s\n" % pem) |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
693 |
|
64054
134276eed280
Put test_ciphers in NetworkedTests
Antoine Pitrou <solipsis@pitrou.net>
parents:
64053
diff
changeset
|
694 def test_ciphers(self): |
|
134276eed280
Put test_ciphers in NetworkedTests
Antoine Pitrou <solipsis@pitrou.net>
parents:
64053
diff
changeset
|
695 remote = ("svn.python.org", 443) |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
696 with support.transient_internet(remote[0]): |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
697 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
698 cert_reqs=ssl.CERT_NONE, ciphers="ALL") |
|
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
699 s.connect(remote) |
|
64054
134276eed280
Put test_ciphers in NetworkedTests
Antoine Pitrou <solipsis@pitrou.net>
parents:
64053
diff
changeset
|
700 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
701 cert_reqs=ssl.CERT_NONE, ciphers="DEFAULT") |
|
64054
134276eed280
Put test_ciphers in NetworkedTests
Antoine Pitrou <solipsis@pitrou.net>
parents:
64053
diff
changeset
|
702 s.connect(remote) |
|
64585
38ca63518085
Use transient_internet() where appropriate in test_ssl
Antoine Pitrou <solipsis@pitrou.net>
parents:
64533
diff
changeset
|
703 # Error checking can happen at instantiation or when connecting |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
704 with self.assertRaisesRegex(ssl.SSLError, "No cipher can be selected"): |
|
65739
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
705 with socket.socket(socket.AF_INET) as sock: |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
706 s = ssl.wrap_socket(sock, |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
707 cert_reqs=ssl.CERT_NONE, ciphers="^$:,;?*'dorothyx") |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
708 s.connect(remote) |
|
64054
134276eed280
Put test_ciphers in NetworkedTests
Antoine Pitrou <solipsis@pitrou.net>
parents:
64053
diff
changeset
|
709 |
|
60818
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
710 def test_algorithms(self): |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
711 # Issue #8484: all algorithms should be available when verifying a |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
712 # certificate. |
|
60872
4b7f3ae22c8f
Merged revisions 80379 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60818
diff
changeset
|
713 # SHA256 was added in OpenSSL 0.9.8 |
|
4b7f3ae22c8f
Merged revisions 80379 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60818
diff
changeset
|
714 if ssl.OPENSSL_VERSION_INFO < (0, 9, 8, 0, 15): |
|
4b7f3ae22c8f
Merged revisions 80379 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60818
diff
changeset
|
715 self.skipTest("SHA256 not available on %r" % ssl.OPENSSL_VERSION) |
|
76749
683295cf9489
Fix test connecting to sha256.tbs-internet.com.
Antoine Pitrou <solipsis@pitrou.net>
parents:
74668
diff
changeset
|
716 # sha256.tbs-internet.com needs SNI to use the correct certificate |
|
683295cf9489
Fix test connecting to sha256.tbs-internet.com.
Antoine Pitrou <solipsis@pitrou.net>
parents:
74668
diff
changeset
|
717 if not ssl.HAS_SNI: |
|
683295cf9489
Fix test connecting to sha256.tbs-internet.com.
Antoine Pitrou <solipsis@pitrou.net>
parents:
74668
diff
changeset
|
718 self.skipTest("SNI needed for this test") |
|
67456
15967b7f058f
test_ssl: test SHA256 using sha256.tbs-internet.com instead of sha2.hboeck.de
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66663
diff
changeset
|
719 # https://sha2.hboeck.de/ was used until 2011-01-08 (no route to host) |
|
15967b7f058f
test_ssl: test SHA256 using sha256.tbs-internet.com instead of sha2.hboeck.de
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66663
diff
changeset
|
720 remote = ("sha256.tbs-internet.com", 443) |
|
60818
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
721 sha256_cert = os.path.join(os.path.dirname(__file__), "sha256.pem") |
|
67467
abe201dfd3dc
Merged revisions 87861,87863 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66475
diff
changeset
|
722 with support.transient_internet("sha256.tbs-internet.com"): |
|
76749
683295cf9489
Fix test connecting to sha256.tbs-internet.com.
Antoine Pitrou <solipsis@pitrou.net>
parents:
74668
diff
changeset
|
723 ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
683295cf9489
Fix test connecting to sha256.tbs-internet.com.
Antoine Pitrou <solipsis@pitrou.net>
parents:
74668
diff
changeset
|
724 ctx.verify_mode = ssl.CERT_REQUIRED |
|
683295cf9489
Fix test connecting to sha256.tbs-internet.com.
Antoine Pitrou <solipsis@pitrou.net>
parents:
74668
diff
changeset
|
725 ctx.load_verify_locations(sha256_cert) |
|
683295cf9489
Fix test connecting to sha256.tbs-internet.com.
Antoine Pitrou <solipsis@pitrou.net>
parents:
74668
diff
changeset
|
726 s = ctx.wrap_socket(socket.socket(socket.AF_INET), |
|
683295cf9489
Fix test connecting to sha256.tbs-internet.com.
Antoine Pitrou <solipsis@pitrou.net>
parents:
74668
diff
changeset
|
727 server_hostname="sha256.tbs-internet.com") |
|
60818
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
728 try: |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
729 s.connect(remote) |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
730 if support.verbose: |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
731 sys.stdout.write("\nCipher with %r is %r\n" % |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
732 (remote, s.cipher())) |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
733 sys.stdout.write("Certificate is:\n%s\n" % |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
734 pprint.pformat(s.getpeercert())) |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
735 finally: |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
736 s.close() |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
737 |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
738 |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
739 try: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
740 import threading |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
741 except ImportError: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
742 _have_threads = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
743 else: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
744 _have_threads = True |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
745 |
|
65247
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
746 from test.ssl_servers import make_https_server |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
747 |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
748 class ThreadedEchoServer(threading.Thread): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
749 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
750 class ConnectionHandler(threading.Thread): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
751 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
752 """A mildly complicated class, because we want it to work both |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
753 with and without the SSL wrapper around the socket connection, so |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
754 that we can test the STARTTLS functionality.""" |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
755 |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
756 def __init__(self, server, connsock, addr): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
757 self.server = server |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
758 self.running = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
759 self.sock = connsock |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
760 self.addr = addr |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
761 self.sock.setblocking(1) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
762 self.sslconn = None |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
763 threading.Thread.__init__(self) |
|
48754
2bac0d421929
Merged revisions 65829 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48681
diff
changeset
|
764 self.daemon = True |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
765 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
766 def wrap_conn(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
767 try: |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
768 self.sslconn = self.server.context.wrap_socket( |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
769 self.sock, server_side=True) |
|
74248
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
770 except ssl.SSLError as e: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
771 # XXX Various errors can have happened here, for example |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
772 # a mismatching protocol version, an invalid certificate, |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
773 # or a low-level bug. This should be made more discriminating. |
|
74248
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
774 self.server.conn_errors.append(e) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
775 if self.server.chatty: |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
776 handle_error("\n server: bad connection attempt from " + repr(self.addr) + ":\n") |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
777 self.running = False |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
778 self.server.stop() |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
779 self.close() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
780 return False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
781 else: |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
782 if self.server.context.verify_mode == ssl.CERT_REQUIRED: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
783 cert = self.sslconn.getpeercert() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
784 if support.verbose and self.server.chatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
785 sys.stdout.write(" client cert is " + pprint.pformat(cert) + "\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
786 cert_binary = self.sslconn.getpeercert(True) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
787 if support.verbose and self.server.chatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
788 sys.stdout.write(" cert binary is " + str(len(cert_binary)) + " bytes\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
789 cipher = self.sslconn.cipher() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
790 if support.verbose and self.server.chatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
791 sys.stdout.write(" server: connection cipher is now " + str(cipher) + "\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
792 return True |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
793 |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
794 def read(self): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
795 if self.sslconn: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
796 return self.sslconn.read() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
797 else: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
798 return self.sock.recv(1024) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
799 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
800 def write(self, bytes): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
801 if self.sslconn: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
802 return self.sslconn.write(bytes) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
803 else: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
804 return self.sock.send(bytes) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
805 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
806 def close(self): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
807 if self.sslconn: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
808 self.sslconn.close() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
809 else: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
810 self.sock.close() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
811 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
812 def run(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
813 self.running = True |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
814 if not self.server.starttls_server: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
815 if not self.wrap_conn(): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
816 return |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
817 while self.running: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
818 try: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
819 msg = self.read() |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
820 stripped = msg.strip() |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
821 if not stripped: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
822 # eof, so quit this handler |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
823 self.running = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
824 self.close() |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
825 elif stripped == b'over': |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
826 if support.verbose and self.server.connectionchatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
827 sys.stdout.write(" server: client closed connection\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
828 self.close() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
829 return |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
830 elif (self.server.starttls_server and |
|
61077
007319a9c888
Merged revisions 80603 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61072
diff
changeset
|
831 stripped == b'STARTTLS'): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
832 if support.verbose and self.server.connectionchatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
833 sys.stdout.write(" server: read STARTTLS from client, sending OK...\n") |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
834 self.write(b"OK\n") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
835 if not self.wrap_conn(): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
836 return |
|
48681
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
837 elif (self.server.starttls_server and self.sslconn |
|
61077
007319a9c888
Merged revisions 80603 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61072
diff
changeset
|
838 and stripped == b'ENDTLS'): |
|
48681
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
839 if support.verbose and self.server.connectionchatty: |
|
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
840 sys.stdout.write(" server: read ENDTLS from client, sending OK...\n") |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
841 self.write(b"OK\n") |
|
48681
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
842 self.sock = self.sslconn.unwrap() |
|
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
843 self.sslconn = None |
|
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
844 if support.verbose and self.server.connectionchatty: |
|
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
845 sys.stdout.write(" server: connection is now unencrypted...\n") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
846 else: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
847 if (support.verbose and |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
848 self.server.connectionchatty): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
849 ctype = (self.sslconn and "encrypted") or "unencrypted" |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
850 sys.stdout.write(" server: read %r (%s), sending back %r (%s)...\n" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
851 % (msg, ctype, msg.lower(), ctype)) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
852 self.write(msg.lower()) |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
853 except socket.error: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
854 if self.server.chatty: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
855 handle_error("Test server failure:\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
856 self.close() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
857 self.running = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
858 # normally, we'd just stop here, but for the test |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
859 # harness, we want to stop the server |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
860 self.server.stop() |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
861 |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
862 def __init__(self, certificate=None, ssl_version=None, |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
863 certreqs=None, cacerts=None, |
|
60662
e5f6de18b715
Merged revisions 80151 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60373
diff
changeset
|
864 chatty=True, connectionchatty=False, starttls_server=False, |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
865 ciphers=None, context=None): |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
866 if context: |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
867 self.context = context |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
868 else: |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
869 self.context = ssl.SSLContext(ssl_version |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
870 if ssl_version is not None |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
871 else ssl.PROTOCOL_TLSv1) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
872 self.context.verify_mode = (certreqs if certreqs is not None |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
873 else ssl.CERT_NONE) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
874 if cacerts: |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
875 self.context.load_verify_locations(cacerts) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
876 if certificate: |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
877 self.context.load_cert_chain(certificate) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
878 if ciphers: |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
879 self.context.set_ciphers(ciphers) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
880 self.chatty = chatty |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
881 self.connectionchatty = connectionchatty |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
882 self.starttls_server = starttls_server |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
883 self.sock = socket.socket() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
884 self.port = support.bind_port(self.sock) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
885 self.flag = None |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
886 self.active = False |
|
74248
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
887 self.conn_errors = [] |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
888 threading.Thread.__init__(self) |
|
48754
2bac0d421929
Merged revisions 65829 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48681
diff
changeset
|
889 self.daemon = True |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
890 |
|
74115
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
891 def __enter__(self): |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
892 self.start(threading.Event()) |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
893 self.flag.wait() |
|
74248
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
894 return self |
|
74115
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
895 |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
896 def __exit__(self, *args): |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
897 self.stop() |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
898 self.join() |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
899 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
900 def start(self, flag=None): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
901 self.flag = flag |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
902 threading.Thread.start(self) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
903 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
904 def run(self): |
|
61005
1e1b2351cf12
Merged revisions 80528 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61000
diff
changeset
|
905 self.sock.settimeout(0.05) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
906 self.sock.listen(5) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
907 self.active = True |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
908 if self.flag: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
909 # signal an event |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
910 self.flag.set() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
911 while self.active: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
912 try: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
913 newconn, connaddr = self.sock.accept() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
914 if support.verbose and self.chatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
915 sys.stdout.write(' server: new connection from ' |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
916 + repr(connaddr) + '\n') |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
917 handler = self.ConnectionHandler(self, newconn, connaddr) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
918 handler.start() |
|
74659
76d60fcef3db
Fix intermittent test_ssl failure.
Antoine Pitrou <solipsis@pitrou.net>
parents:
74248
diff
changeset
|
919 handler.join() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
920 except socket.timeout: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
921 pass |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
922 except KeyboardInterrupt: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
923 self.stop() |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
924 self.sock.close() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
925 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
926 def stop(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
927 self.active = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
928 |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
929 class AsyncoreEchoServer(threading.Thread): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
930 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
931 # this one's based on asyncore.dispatcher |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
932 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
933 class EchoServer (asyncore.dispatcher): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
934 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
935 class ConnectionHandler (asyncore.dispatcher_with_send): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
936 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
937 def __init__(self, conn, certfile): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
938 self.socket = ssl.wrap_socket(conn, server_side=True, |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
939 certfile=certfile, |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
940 do_handshake_on_connect=False) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
941 asyncore.dispatcher_with_send.__init__(self, self.socket) |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
942 self._ssl_accepting = True |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
943 self._do_ssl_handshake() |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
944 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
945 def readable(self): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
946 if isinstance(self.socket, ssl.SSLSocket): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
947 while self.socket.pending() > 0: |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
948 self.handle_read_event() |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
949 return True |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
950 |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
951 def _do_ssl_handshake(self): |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
952 try: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
953 self.socket.do_handshake() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
954 except ssl.SSLError as err: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
955 if err.args[0] in (ssl.SSL_ERROR_WANT_READ, |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
956 ssl.SSL_ERROR_WANT_WRITE): |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
957 return |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
958 elif err.args[0] == ssl.SSL_ERROR_EOF: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
959 return self.handle_close() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
960 raise |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
961 except socket.error as err: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
962 if err.args[0] == errno.ECONNABORTED: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
963 return self.handle_close() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
964 else: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
965 self._ssl_accepting = False |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
966 |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
967 def handle_read(self): |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
968 if self._ssl_accepting: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
969 self._do_ssl_handshake() |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
970 else: |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
971 data = self.recv(1024) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
972 if support.verbose: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
973 sys.stdout.write(" server: read %s from client\n" % repr(data)) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
974 if not data: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
975 self.close() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
976 else: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
977 self.send(data.lower()) |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
978 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
979 def handle_close(self): |
|
48384
4d2d0a21d494
close asyncore.dispatcher on EOF
Bill Janssen <janssen@parc.com>
parents:
48334
diff
changeset
|
980 self.close() |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
981 if support.verbose: |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
982 sys.stdout.write(" server: closed connection %s\n" % self.socket) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
983 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
984 def handle_error(self): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
985 raise |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
986 |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
987 def __init__(self, certfile): |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
988 self.certfile = certfile |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
989 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
990 self.port = support.bind_port(sock, '') |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
991 asyncore.dispatcher.__init__(self, sock) |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
992 self.listen(5) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
993 |
|
65088
c28fdeeea786
Fix issue 6706: adds new handle_accepted() method to asyncore.dispatcher
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64741
diff
changeset
|
994 def handle_accepted(self, sock_obj, addr): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
995 if support.verbose: |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
996 sys.stdout.write(" server: new connection from %s:%s\n" %addr) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
997 self.ConnectionHandler(sock_obj, self.certfile) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
998 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
999 def handle_error(self): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1000 raise |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1001 |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
1002 def __init__(self, certfile): |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1003 self.flag = None |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1004 self.active = False |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1005 self.server = self.EchoServer(certfile) |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1006 self.port = self.server.port |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1007 threading.Thread.__init__(self) |
|
48754
2bac0d421929
Merged revisions 65829 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48681
diff
changeset
|
1008 self.daemon = True |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1009 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1010 def __str__(self): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1011 return "<%s %s>" % (self.__class__.__name__, self.server) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1012 |
|
74115
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1013 def __enter__(self): |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1014 self.start(threading.Event()) |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1015 self.flag.wait() |
|
74248
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1016 return self |
|
74115
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1017 |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1018 def __exit__(self, *args): |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1019 if support.verbose: |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1020 sys.stdout.write(" cleanup: stopping server.\n") |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1021 self.stop() |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1022 if support.verbose: |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1023 sys.stdout.write(" cleanup: joining server thread.\n") |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1024 self.join() |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1025 if support.verbose: |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1026 sys.stdout.write(" cleanup: successfully joined.\n") |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1027 |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1028 def start (self, flag=None): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1029 self.flag = flag |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1030 threading.Thread.start(self) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1031 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1032 def run(self): |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1033 self.active = True |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1034 if self.flag: |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1035 self.flag.set() |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1036 while self.active: |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1037 try: |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1038 asyncore.loop(1) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1039 except: |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1040 pass |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1041 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1042 def stop(self): |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1043 self.active = False |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1044 self.server.close() |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
1045 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1046 def bad_cert_test(certfile): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1047 """ |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1048 Launch a server with CERT_REQUIRED, and check that trying to |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1049 connect to it with the given client certificate fails. |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1050 """ |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
1051 server = ThreadedEchoServer(CERTFILE, |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1052 certreqs=ssl.CERT_REQUIRED, |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1053 cacerts=CERTFILE, chatty=False, |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1054 connectionchatty=False) |
|
74115
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1055 with server: |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1056 try: |
|
65739
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1057 with socket.socket() as sock: |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1058 s = ssl.wrap_socket(sock, |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1059 certfile=certfile, |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1060 ssl_version=ssl.PROTOCOL_TLSv1) |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1061 s.connect((HOST, server.port)) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1062 except ssl.SSLError as x: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1063 if support.verbose: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1064 sys.stdout.write("\nSSLError is %s\n" % x.args[1]) |
|
61012
71152ce701ea
Merged revisions 80536 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61008
diff
changeset
|
1065 except socket.error as x: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1066 if support.verbose: |
|
66475
9bead909d8ef
Merged revisions 85820,85823,85825,85840,85843-85845,85849-85851,85855,85867,85875,85907-85908,85911,85914 via svnmerge from
Georg Brandl <georg@python.org>
parents:
64743
diff
changeset
|
1067 sys.stdout.write("\nsocket.error is %s\n" % x.args[1]) |
|
64306
9297974604ff
Fix issue issue9706: provides a better error handling for various SSL operations
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64062
diff
changeset
|
1068 except IOError as x: |
|
64308
80d2e7d1d7d5
in ssl tests rely on IOError.errno rather thanf IOError.strerror for better compatibility across platforms.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64306
diff
changeset
|
1069 if x.errno != errno.ENOENT: |
|
80d2e7d1d7d5
in ssl tests rely on IOError.errno rather thanf IOError.strerror for better compatibility across platforms.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64306
diff
changeset
|
1070 raise |
|
64306
9297974604ff
Fix issue issue9706: provides a better error handling for various SSL operations
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64062
diff
changeset
|
1071 if support.verbose: |
|
64308
80d2e7d1d7d5
in ssl tests rely on IOError.errno rather thanf IOError.strerror for better compatibility across platforms.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64306
diff
changeset
|
1072 sys.stdout.write("\IOError is %s\n" % str(x)) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1073 else: |
|
61320
cebe28570006
Merged revisions 80869 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61152
diff
changeset
|
1074 raise AssertionError("Use of invalid cert should have failed!") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1075 |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1076 def server_params_test(client_context, server_context, indata=b"FOO\n", |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1077 chatty=True, connectionchatty=False): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1078 """ |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1079 Launch a server, connect a client to it and try various reads |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1080 and writes. |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1081 """ |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1082 server = ThreadedEchoServer(context=server_context, |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1083 chatty=chatty, |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1084 connectionchatty=False) |
|
74115
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1085 with server: |
|
74668
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1086 with client_context.wrap_socket(socket.socket()) as s: |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1087 s.connect((HOST, server.port)) |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1088 for arg in [indata, bytearray(indata), memoryview(indata)]: |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1089 if connectionchatty: |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1090 if support.verbose: |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1091 sys.stdout.write( |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1092 " client: sending %r...\n" % indata) |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1093 s.write(arg) |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1094 outdata = s.read() |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1095 if connectionchatty: |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1096 if support.verbose: |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1097 sys.stdout.write(" client: read %r\n" % outdata) |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1098 if outdata != indata.lower(): |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1099 raise AssertionError( |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1100 "bad data <<%r>> (%d) received; expected <<%r>> (%d)\n" |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1101 % (outdata[:20], len(outdata), |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1102 indata[:20].lower(), len(indata))) |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1103 s.write(b"over\n") |
|
57460
a1d166ab18c4
Merged revisions 75529 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
1104 if connectionchatty: |
|
a1d166ab18c4
Merged revisions 75529 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
1105 if support.verbose: |
|
74668
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1106 sys.stdout.write(" client: closing connection.\n") |
|
10c79f29e417
Issue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou <solipsis@pitrou.net>
parents:
74659
diff
changeset
|
1107 s.close() |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1108 |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1109 def try_protocol_combo(server_protocol, client_protocol, expect_success, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1110 certsreqs=None, server_options=0, client_options=0): |
|
46222
aed698c8647b
Merged revisions 62021,62029,62035-62038,62043-62044,62052-62053 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
1111 if certsreqs is None: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1112 certsreqs = ssl.CERT_NONE |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1113 certtype = { |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1114 ssl.CERT_NONE: "CERT_NONE", |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1115 ssl.CERT_OPTIONAL: "CERT_OPTIONAL", |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1116 ssl.CERT_REQUIRED: "CERT_REQUIRED", |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1117 }[certsreqs] |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1118 if support.verbose: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1119 formatstr = (expect_success and " %s->%s %s\n") or " {%s->%s} %s\n" |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1120 sys.stdout.write(formatstr % |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1121 (ssl.get_protocol_name(client_protocol), |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1122 ssl.get_protocol_name(server_protocol), |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1123 certtype)) |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1124 client_context = ssl.SSLContext(client_protocol) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1125 client_context.options = ssl.OP_ALL | client_options |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1126 server_context = ssl.SSLContext(server_protocol) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1127 server_context.options = ssl.OP_ALL | server_options |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1128 for ctx in (client_context, server_context): |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1129 ctx.verify_mode = certsreqs |
|
60662
e5f6de18b715
Merged revisions 80151 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60373
diff
changeset
|
1130 # NOTE: we must enable "ALL" ciphers, otherwise an SSLv23 client |
|
e5f6de18b715
Merged revisions 80151 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60373
diff
changeset
|
1131 # will send an SSLv3 hello (rather than SSLv2) starting from |
|
e5f6de18b715
Merged revisions 80151 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60373
diff
changeset
|
1132 # OpenSSL 1.0.0 (see issue #8322). |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1133 ctx.set_ciphers("ALL") |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1134 ctx.load_cert_chain(CERTFILE) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1135 ctx.load_verify_locations(CERTFILE) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1136 try: |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1137 server_params_test(client_context, server_context, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1138 chatty=False, connectionchatty=False) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1139 # Protocol mismatch can result in either an SSLError, or a |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1140 # "Connection reset by peer" error. |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1141 except ssl.SSLError: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1142 if expect_success: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1143 raise |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1144 except socket.error as e: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1145 if expect_success or e.errno != errno.ECONNRESET: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1146 raise |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1147 else: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1148 if not expect_success: |
|
61317
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
1149 raise AssertionError( |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1150 "Client protocol %s succeeded with server protocol %s!" |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1151 % (ssl.get_protocol_name(client_protocol), |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1152 ssl.get_protocol_name(server_protocol))) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1153 |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1154 |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1155 class ThreadedTests(unittest.TestCase): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1156 |
|
63741
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
1157 @skip_if_broken_ubuntu_ssl |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1158 def test_echo(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1159 """Basic test of an SSL client connecting to a server""" |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1160 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1161 sys.stdout.write("\n") |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1162 for protocol in PROTOCOLS: |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1163 context = ssl.SSLContext(protocol) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1164 context.load_cert_chain(CERTFILE) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1165 server_params_test(context, context, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1166 chatty=True, connectionchatty=True) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1167 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1168 def test_getpeercert(self): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1169 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1170 sys.stdout.write("\n") |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1171 context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1172 context.verify_mode = ssl.CERT_REQUIRED |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1173 context.load_verify_locations(CERTFILE) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1174 context.load_cert_chain(CERTFILE) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1175 server = ThreadedEchoServer(context=context, chatty=False) |
|
74115
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1176 with server: |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1177 s = context.wrap_socket(socket.socket()) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1178 s.connect((HOST, server.port)) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1179 cert = s.getpeercert() |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1180 self.assertTrue(cert, "Can't get peer certificate.") |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1181 cipher = s.cipher() |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1182 if support.verbose: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1183 sys.stdout.write(pprint.pformat(cert) + '\n') |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1184 sys.stdout.write("Connection cipher is " + str(cipher) + '.\n') |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1185 if 'subject' not in cert: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1186 self.fail("No subject field in certificate: %s." % |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1187 pprint.pformat(cert)) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1188 if ((('organizationName', 'Python Software Foundation'),) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1189 not in cert['subject']): |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1190 self.fail( |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1191 "Missing or invalid 'organizationName' field in certificate subject; " |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1192 "should be 'Python Software Foundation'.") |
|
66114
eeebb622fd08
Issue #10022: The dictionary returned by the `getpeercert()` method
Antoine Pitrou <solipsis@pitrou.net>
parents:
65739
diff
changeset
|
1193 self.assertIn('notBefore', cert) |
|
eeebb622fd08
Issue #10022: The dictionary returned by the `getpeercert()` method
Antoine Pitrou <solipsis@pitrou.net>
parents:
65739
diff
changeset
|
1194 self.assertIn('notAfter', cert) |
|
eeebb622fd08
Issue #10022: The dictionary returned by the `getpeercert()` method
Antoine Pitrou <solipsis@pitrou.net>
parents:
65739
diff
changeset
|
1195 before = ssl.cert_time_to_seconds(cert['notBefore']) |
|
eeebb622fd08
Issue #10022: The dictionary returned by the `getpeercert()` method
Antoine Pitrou <solipsis@pitrou.net>
parents:
65739
diff
changeset
|
1196 after = ssl.cert_time_to_seconds(cert['notAfter']) |
|
eeebb622fd08
Issue #10022: The dictionary returned by the `getpeercert()` method
Antoine Pitrou <solipsis@pitrou.net>
parents:
65739
diff
changeset
|
1197 self.assertLess(before, after) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1198 s.close() |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1199 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1200 def test_empty_cert(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1201 """Connecting with an empty cert file""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1202 bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1203 "nullcert.pem")) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1204 def test_malformed_cert(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1205 """Connecting with a badly formatted certificate (syntax error)""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1206 bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1207 "badcert.pem")) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1208 def test_nonexisting_cert(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1209 """Connecting with a non-existing cert file""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1210 bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1211 "wrongcert.pem")) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1212 def test_malformed_key(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1213 """Connecting with a badly formatted key (syntax error)""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1214 bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1215 "badkey.pem")) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1216 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1217 def test_rude_shutdown(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1218 """A brutal shutdown of an SSL server should raise an IOError |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1219 in the client when attempting handshake. |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1220 """ |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1221 listener_ready = threading.Event() |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1222 listener_gone = threading.Event() |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1223 |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1224 s = socket.socket() |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1225 port = support.bind_port(s, HOST) |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1226 |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1227 # `listener` runs in a thread. It sits in an accept() until |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1228 # the main thread connects. Then it rudely closes the socket, |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1229 # and sets Event `listener_gone` to let the main thread know |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1230 # the socket is gone. |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1231 def listener(): |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1232 s.listen(5) |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1233 listener_ready.set() |
|
65739
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1234 newsock, addr = s.accept() |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1235 newsock.close() |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1236 s.close() |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1237 listener_gone.set() |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1238 |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1239 def connector(): |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1240 listener_ready.wait() |
|
65739
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1241 with socket.socket() as c: |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1242 c.connect((HOST, port)) |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1243 listener_gone.wait() |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1244 try: |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1245 ssl_sock = ssl.wrap_socket(c) |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1246 except IOError: |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1247 pass |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1248 else: |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1249 self.fail('connecting to closed SSL socket should have failed') |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1250 |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1251 t = threading.Thread(target=listener) |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1252 t.start() |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1253 try: |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1254 connector() |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1255 finally: |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
1256 t.join() |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1257 |
|
63741
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
1258 @skip_if_broken_ubuntu_ssl |
|
69997
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1259 @unittest.skipUnless(hasattr(ssl, 'PROTOCOL_SSLv2'), "need SSLv2") |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1260 def test_protocol_sslv2(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1261 """Connecting to an SSLv2 server with various client options""" |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1262 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1263 sys.stdout.write("\n") |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1264 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1265 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True, ssl.CERT_OPTIONAL) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1266 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True, ssl.CERT_REQUIRED) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1267 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv23, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1268 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv3, False) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1269 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_TLSv1, False) |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1270 # SSLv23 client with specific SSL options |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1271 if no_sslv2_implies_sslv3_hello(): |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1272 # No SSLv2 => client will use an SSLv3 hello on recent OpenSSLs |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1273 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv23, False, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1274 client_options=ssl.OP_NO_SSLv2) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1275 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv23, True, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1276 client_options=ssl.OP_NO_SSLv3) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1277 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv23, True, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1278 client_options=ssl.OP_NO_TLSv1) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1279 |
|
63741
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
1280 @skip_if_broken_ubuntu_ssl |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1281 def test_protocol_sslv23(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1282 """Connecting to an SSLv23 server with various client options""" |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1283 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1284 sys.stdout.write("\n") |
|
69997
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1285 if hasattr(ssl, 'PROTOCOL_SSLv2'): |
|
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1286 try: |
|
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1287 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv2, True) |
|
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1288 except (ssl.SSLError, socket.error) as x: |
|
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1289 # this fails on some older versions of OpenSSL (0.9.7l, for instance) |
|
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1290 if support.verbose: |
|
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1291 sys.stdout.write( |
|
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1292 " SSL2 client to SSL23 server test unexpectedly failed:\n %s\n" |
|
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1293 % str(x)) |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1294 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1295 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1296 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1297 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1298 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True, ssl.CERT_OPTIONAL) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1299 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True, ssl.CERT_OPTIONAL) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1300 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True, ssl.CERT_OPTIONAL) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1301 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1302 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True, ssl.CERT_REQUIRED) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1303 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True, ssl.CERT_REQUIRED) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1304 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True, ssl.CERT_REQUIRED) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1305 |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1306 # Server with specific SSL options |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1307 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, False, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1308 server_options=ssl.OP_NO_SSLv3) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1309 # Will choose TLSv1 |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1310 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1311 server_options=ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1312 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, False, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1313 server_options=ssl.OP_NO_TLSv1) |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1314 |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1315 |
|
63741
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
1316 @skip_if_broken_ubuntu_ssl |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1317 def test_protocol_sslv3(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1318 """Connecting to an SSLv3 server with various client options""" |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1319 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1320 sys.stdout.write("\n") |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1321 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1322 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True, ssl.CERT_OPTIONAL) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1323 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True, ssl.CERT_REQUIRED) |
|
69997
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1324 if hasattr(ssl, 'PROTOCOL_SSLv2'): |
|
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1325 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv2, False) |
|
73177
415e2c998e18
- Issue #13218: Fix test_ssl failures on Debian/Ubuntu.
Barry Warsaw <barry@python.org>
parents:
72567
diff
changeset
|
1326 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv23, False, |
|
415e2c998e18
- Issue #13218: Fix test_ssl failures on Debian/Ubuntu.
Barry Warsaw <barry@python.org>
parents:
72567
diff
changeset
|
1327 client_options=ssl.OP_NO_SSLv3) |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1328 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_TLSv1, False) |
|
61782
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1329 if no_sslv2_implies_sslv3_hello(): |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1330 # No SSLv2 => client will use an SSLv3 hello on recent OpenSSLs |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1331 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv23, True, |
|
5ee47f0b26b0
Issue #4870: Add an `options` attribute to SSL contexts, as well as
Antoine Pitrou <solipsis@pitrou.net>
parents:
61668
diff
changeset
|
1332 client_options=ssl.OP_NO_SSLv2) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1333 |
|
63741
828227a00538
Try to fix issue #9415: skip some tests on broken Ubuntu OpenSSL
Antoine Pitrou <solipsis@pitrou.net>
parents:
63740
diff
changeset
|
1334 @skip_if_broken_ubuntu_ssl |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1335 def test_protocol_tlsv1(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1336 """Connecting to a TLSv1 server with various client options""" |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1337 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1338 sys.stdout.write("\n") |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1339 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1340 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True, ssl.CERT_OPTIONAL) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1341 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True, ssl.CERT_REQUIRED) |
|
69997
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1342 if hasattr(ssl, 'PROTOCOL_SSLv2'): |
|
b7abf0590e1c
Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67467
diff
changeset
|
1343 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv2, False) |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1344 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv3, False) |
|
73177
415e2c998e18
- Issue #13218: Fix test_ssl failures on Debian/Ubuntu.
Barry Warsaw <barry@python.org>
parents:
72567
diff
changeset
|
1345 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv23, False, |
|
415e2c998e18
- Issue #13218: Fix test_ssl failures on Debian/Ubuntu.
Barry Warsaw <barry@python.org>
parents:
72567
diff
changeset
|
1346 client_options=ssl.OP_NO_TLSv1) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1347 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1348 def test_starttls(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1349 """Switching from clear text to encrypted and back again.""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1350 msgs = (b"msg 1", b"MSG 2", b"STARTTLS", b"MSG 3", b"msg 4", b"ENDTLS", b"msg 5", b"msg 6") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1351 |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
1352 server = ThreadedEchoServer(CERTFILE, |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1353 ssl_version=ssl.PROTOCOL_TLSv1, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1354 starttls_server=True, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1355 chatty=True, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1356 connectionchatty=True) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1357 wrapped = False |
|
74115
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1358 with server: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1359 s = socket.socket() |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1360 s.setblocking(1) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1361 s.connect((HOST, server.port)) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1362 if support.verbose: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1363 sys.stdout.write("\n") |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1364 for indata in msgs: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1365 if support.verbose: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1366 sys.stdout.write( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1367 " client: sending %r...\n" % indata) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1368 if wrapped: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1369 conn.write(indata) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1370 outdata = conn.read() |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1371 else: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1372 s.send(indata) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1373 outdata = s.recv(1024) |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1374 msg = outdata.strip().lower() |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1375 if indata == b"STARTTLS" and msg.startswith(b"ok"): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1376 # STARTTLS ok, switch to secure mode |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1377 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1378 sys.stdout.write( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1379 " client: read %r from server, starting TLS...\n" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1380 % msg) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1381 conn = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_TLSv1) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1382 wrapped = True |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1383 elif indata == b"ENDTLS" and msg.startswith(b"ok"): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1384 # ENDTLS ok, switch back to clear text |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1385 if support.verbose: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1386 sys.stdout.write( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1387 " client: read %r from server, ending TLS...\n" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1388 % msg) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1389 s = conn.unwrap() |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1390 wrapped = False |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1391 else: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1392 if support.verbose: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1393 sys.stdout.write( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1394 " client: read %r from server\n" % msg) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1395 if support.verbose: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1396 sys.stdout.write(" client: closing connection.\n") |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1397 if wrapped: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1398 conn.write(b"over\n") |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1399 else: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1400 s.send(b"over\n") |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1401 if wrapped: |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1402 conn.close() |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1403 else: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1404 s.close() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1405 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1406 def test_socketserver(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1407 """Using a SocketServer to create and manage SSL connections.""" |
|
65247
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1408 server = make_https_server(self, CERTFILE) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1409 # try to connect |
|
65247
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1410 if support.verbose: |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1411 sys.stdout.write('\n') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1412 with open(CERTFILE, 'rb') as f: |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1413 d1 = f.read() |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1414 d2 = '' |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1415 # now fetch the same data from the HTTPS server |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1416 url = 'https://%s:%d/%s' % ( |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1417 HOST, server.port, os.path.split(CERTFILE)[1]) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1418 f = urllib.request.urlopen(url) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1419 try: |
|
47635
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47624
diff
changeset
|
1420 dlen = f.info().get("content-length") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1421 if dlen and (int(dlen) > 0): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1422 d2 = f.read(int(dlen)) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1423 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1424 sys.stdout.write( |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1425 " client: read %d bytes from remote server '%s'\n" |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1426 % (len(d2), server)) |
|
65247
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1427 finally: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1428 f.close() |
|
65247
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65223
diff
changeset
|
1429 self.assertEqual(d1, d2) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1430 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1431 def test_asyncore_server(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1432 """Check the example asyncore integration.""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1433 indata = "TEST MESSAGE of mixed case\n" |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1434 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1435 if support.verbose: |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1436 sys.stdout.write("\n") |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1437 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1438 indata = b"FOO\n" |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
1439 server = AsyncoreEchoServer(CERTFILE) |
|
74115
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1440 with server: |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1441 s = ssl.wrap_socket(socket.socket()) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1442 s.connect(('127.0.0.1', server.port)) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1443 if support.verbose: |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1444 sys.stdout.write( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1445 " client: sending %r...\n" % indata) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1446 s.write(indata) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1447 outdata = s.read() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1448 if support.verbose: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1449 sys.stdout.write(" client: read %r\n" % outdata) |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1450 if outdata != indata.lower(): |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1451 self.fail( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1452 "bad data <<%r>> (%d) received; expected <<%r>> (%d)\n" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1453 % (outdata[:20], len(outdata), |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1454 indata[:20].lower(), len(indata))) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1455 s.write(b"over\n") |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1456 if support.verbose: |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1457 sys.stdout.write(" client: closing connection.\n") |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1458 s.close() |
|
64055
e9e0a00ccfb3
Add debug output to the asyncore test
Antoine Pitrou <solipsis@pitrou.net>
parents:
64054
diff
changeset
|
1459 if support.verbose: |
|
e9e0a00ccfb3
Add debug output to the asyncore test
Antoine Pitrou <solipsis@pitrou.net>
parents:
64054
diff
changeset
|
1460 sys.stdout.write(" client: connection closed.\n") |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1461 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1462 def test_recv_send(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1463 """Test recv(), send() and friends.""" |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1464 if support.verbose: |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1465 sys.stdout.write("\n") |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1466 |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1467 server = ThreadedEchoServer(CERTFILE, |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1468 certreqs=ssl.CERT_NONE, |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1469 ssl_version=ssl.PROTOCOL_TLSv1, |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1470 cacerts=CERTFILE, |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1471 chatty=True, |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1472 connectionchatty=False) |
|
74115
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1473 with server: |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1474 s = ssl.wrap_socket(socket.socket(), |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1475 server_side=False, |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1476 certfile=CERTFILE, |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1477 ca_certs=CERTFILE, |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1478 cert_reqs=ssl.CERT_NONE, |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1479 ssl_version=ssl.PROTOCOL_TLSv1) |
|
82557279efd2
Use context managers in test_ssl to simplify test writing.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73177
diff
changeset
|
1480 s.connect((HOST, server.port)) |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1481 # helper methods for standardising recv* method signatures |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1482 def _recv_into(): |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1483 b = bytearray(b"\0"*100) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1484 count = s.recv_into(b) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1485 return b[:count] |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1486 |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1487 def _recvfrom_into(): |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1488 b = bytearray(b"\0"*100) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1489 count, addr = s.recvfrom_into(b) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1490 return b[:count] |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1491 |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1492 # (name, method, whether to expect success, *args) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1493 send_methods = [ |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1494 ('send', s.send, True, []), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1495 ('sendto', s.sendto, False, ["some.address"]), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1496 ('sendall', s.sendall, True, []), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1497 ] |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1498 recv_methods = [ |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1499 ('recv', s.recv, True, []), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1500 ('recvfrom', s.recvfrom, False, ["some.address"]), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1501 ('recv_into', _recv_into, True, []), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1502 ('recvfrom_into', _recvfrom_into, False, []), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1503 ] |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1504 data_prefix = "PREFIX_" |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1505 |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1506 for meth_name, send_meth, expect_success, args in send_methods: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1507 indata = (data_prefix + meth_name).encode('ascii') |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1508 try: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1509 send_meth(indata, *args) |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1510 outdata = s.read() |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1511 if outdata != indata.lower(): |
|
59613
77c71f258df7
Merged revisions 78018,78035-78040,78042-78043,78046,78048-78052,78054,78059,78075-78080 via svnmerge from
Georg Brandl <georg@python.org>
parents:
57460
diff
changeset
|
1512 self.fail( |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1513 "While sending with <<{name:s}>> bad data " |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1514 "<<{outdata:r}>> ({nout:d}) received; " |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1515 "expected <<{indata:r}>> ({nin:d})\n".format( |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1516 name=meth_name, outdata=outdata[:20], |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1517 nout=len(outdata), |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1518 indata=indata[:20], nin=len(indata) |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1519 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1520 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1521 except ValueError as e: |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1522 if expect_success: |
|
59613
77c71f258df7
Merged revisions 78018,78035-78040,78042-78043,78046,78048-78052,78054,78059,78075-78080 via svnmerge from
Georg Brandl <georg@python.org>
parents:
57460
diff
changeset
|
1523 self.fail( |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1524 "Failed to send with method <<{name:s}>>; " |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1525 "expected to succeed.\n".format(name=meth_name) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1526 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1527 if not str(e).startswith(meth_name): |
|
59613
77c71f258df7
Merged revisions 78018,78035-78040,78042-78043,78046,78048-78052,78054,78059,78075-78080 via svnmerge from
Georg Brandl <georg@python.org>
parents:
57460
diff
changeset
|
1528 self.fail( |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1529 "Method <<{name:s}>> failed with unexpected " |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1530 "exception message: {exp:s}\n".format( |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1531 name=meth_name, exp=e |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1532 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1533 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1534 |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1535 for meth_name, recv_meth, expect_success, args in recv_methods: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1536 indata = (data_prefix + meth_name).encode('ascii') |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1537 try: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1538 s.send(indata) |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1539 outdata = recv_meth(*args) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1540 if outdata != indata.lower(): |
|
59613
77c71f258df7
Merged revisions 78018,78035-78040,78042-78043,78046,78048-78052,78054,78059,78075-78080 via svnmerge from
Georg Brandl <georg@python.org>
parents:
57460
diff
changeset
|
1541 self.fail( |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1542 "While receiving with <<{name:s}>> bad data " |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1543 "<<{outdata:r}>> ({nout:d}) received; " |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1544 "expected <<{indata:r}>> ({nin:d})\n".format( |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1545 name=meth_name, outdata=outdata[:20], |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1546 nout=len(outdata), |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1547 indata=indata[:20], nin=len(indata) |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1548 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1549 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1550 except ValueError as e: |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1551 if expect_success: |
|
59613
77c71f258df7
Merged revisions 78018,78035-78040,78042-78043,78046,78048-78052,78054,78059,78075-78080 via svnmerge from
Georg Brandl <georg@python.org>
parents:
57460
diff
changeset
|
1552 self.fail( |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1553 "Failed to receive with method <<{name:s}>>; " |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1554 "expected to succeed.\n".format(name=meth_name) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1555 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1556 if not str(e).startswith(meth_name): |
|
59613
77c71f258df7
Merged revisions 78018,78035-78040,78042-78043,78046,78048-78052,78054,78059,78075-78080 via svnmerge from
Georg Brandl <georg@python.org>
parents:
57460
diff
changeset
|
1557 self.fail( |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1558 "Method <<{name:s}>> failed with unexpected " |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1559 "exception message: {exp:s}\n".format( |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1560 name=meth_name, exp=e |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1561 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1562 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1563 # consume data |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1564 s.read() |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1565 s.write(b"over\n") |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1566 s.close() |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1567 |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1568 def test_handshake_timeout(self): |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1569 # Issue #5103: SSL handshake must respect the socket timeout |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1570 server = socket.socket(socket.AF_INET) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1571 host = "127.0.0.1" |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1572 port = support.bind_port(server) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1573 started = threading.Event() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1574 finish = False |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1575 |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1576 def serve(): |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1577 server.listen(5) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1578 started.set() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1579 conns = [] |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1580 while not finish: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1581 r, w, e = select.select([server], [], [], 0.1) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1582 if server in r: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1583 # Let the socket hang around rather than having |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1584 # it closed by garbage collection. |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1585 conns.append(server.accept()[0]) |
|
65739
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1586 for sock in conns: |
|
e38d2d173085
Clean up socket closing in test_ssl and test.ssl_servers
Antoine Pitrou <solipsis@pitrou.net>
parents:
65620
diff
changeset
|
1587 sock.close() |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1588 |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1589 t = threading.Thread(target=serve) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1590 t.start() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1591 started.wait() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1592 |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1593 try: |
|
60938
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1594 try: |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1595 c = socket.socket(socket.AF_INET) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1596 c.settimeout(0.2) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1597 c.connect((host, port)) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1598 # Will attempt handshake and time out |
|
66663
3d9a86b8cc98
Issue #10272: The ssl module now raises socket.timeout instead of a generic
Antoine Pitrou <solipsis@pitrou.net>
parents:
66581
diff
changeset
|
1599 self.assertRaisesRegex(socket.timeout, "timed out", |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
1600 ssl.wrap_socket, c) |
|
60938
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1601 finally: |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1602 c.close() |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1603 try: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1604 c = socket.socket(socket.AF_INET) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1605 c = ssl.wrap_socket(c) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1606 c.settimeout(0.2) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1607 # Will attempt handshake and time out |
|
66663
3d9a86b8cc98
Issue #10272: The ssl module now raises socket.timeout instead of a generic
Antoine Pitrou <solipsis@pitrou.net>
parents:
66581
diff
changeset
|
1608 self.assertRaisesRegex(socket.timeout, "timed out", |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66217
diff
changeset
|
1609 c.connect, (host, port)) |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1610 finally: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1611 c.close() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1612 finally: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1613 finish = True |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1614 t.join() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1615 server.close() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1616 |
|
74248
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1617 def test_default_ciphers(self): |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1618 context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1619 try: |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1620 # Force a set of weak ciphers on our client context |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1621 context.set_ciphers("DES") |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1622 except ssl.SSLError: |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1623 self.skipTest("no DES cipher available") |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1624 with ThreadedEchoServer(CERTFILE, |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1625 ssl_version=ssl.PROTOCOL_SSLv23, |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1626 chatty=False) as server: |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1627 with socket.socket() as sock: |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1628 s = context.wrap_socket(sock) |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1629 with self.assertRaises((OSError, ssl.SSLError)): |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1630 s.connect((HOST, server.port)) |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1631 self.assertIn("no shared cipher", str(server.conn_errors[0])) |
|
25c2d24e1b11
Issue #13636: Weak ciphers are now disabled by default in the ssl module
Antoine Pitrou <solipsis@pitrou.net>
parents:
74115
diff
changeset
|
1632 |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1633 |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1634 def test_main(verbose=False): |
|
63740
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1635 if support.verbose: |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1636 plats = { |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1637 'Linux': platform.linux_distribution, |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1638 'Mac': platform.mac_ver, |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1639 'Windows': platform.win32_ver, |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1640 } |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1641 for name, func in plats.items(): |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1642 plat = func() |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1643 if plat and plat[0]: |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1644 plat = '%s %r' % (name, plat) |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1645 break |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1646 else: |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1647 plat = repr(platform.platform()) |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1648 print("test_ssl: testing with %r %r" % |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1649 (ssl.OPENSSL_VERSION, ssl.OPENSSL_VERSION_INFO)) |
|
2d88ca64a90b
In verbose mode, identify OpenSSL build and platform more precisely
Antoine Pitrou <solipsis@pitrou.net>
parents:
62276
diff
changeset
|
1650 print(" under %s" % plat) |
|
65593
846c0e1342d0
Issue #5639: Add a *server_hostname* argument to `SSLContext.wrap_socket`
Antoine Pitrou <solipsis@pitrou.net>
parents:
65252
diff
changeset
|
1651 print(" HAS_SNI = %r" % ssl.HAS_SNI) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1652 |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
1653 for filename in [ |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
1654 CERTFILE, SVN_PYTHON_ORG_ROOT_CERT, BYTES_CERTFILE, |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
1655 ONLYCERT, ONLYKEY, BYTES_ONLYCERT, BYTES_ONLYKEY, |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
1656 BADCERT, BADKEY, EMPTYCERT]: |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
1657 if not os.path.exists(filename): |
|
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
1658 raise support.TestFailed("Can't read certificate file %r" % filename) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1659 |
|
61635
4bb03cc1d421
Issue #8550: Add first class `SSLContext` objects to the ssl module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61320
diff
changeset
|
1660 tests = [ContextTests, BasicSocketTests] |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1661 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1662 if support.is_resource_enabled('network'): |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1663 tests.append(NetworkedTests) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1664 |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1665 if _have_threads: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1666 thread_info = support.threading_setup() |
|
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1667 if thread_info and support.is_resource_enabled('network'): |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1668 tests.append(ThreadedTests) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1669 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1670 try: |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1671 support.run_unittest(*tests) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1672 finally: |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1673 if _have_threads: |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1674 support.threading_cleanup(*thread_info) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1675 |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1676 if __name__ == "__main__": |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1677 test_main() |
