Skip to content

Commit 25fd780

Browse files
committed
Stabilize and cleanup another TLS 1.3 PHA test
Revert 73ea546, increase logging, and improve stability of test.
1 parent ca7fe01 commit 25fd780

File tree

1 file changed

+27
-14
lines changed

1 file changed

+27
-14
lines changed

Lib/test/test_ssl.py

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2386,7 +2386,10 @@ def wrap_conn(self):
23862386
sys.stdout.write(" client cert is " + pprint.pformat(cert) + "\n")
23872387
cert_binary = self.sslconn.getpeercert(True)
23882388
if support.verbose and self.server.chatty:
2389-
sys.stdout.write(" cert binary is " + str(len(cert_binary)) + " bytes\n")
2389+
if cert_binary is None:
2390+
sys.stdout.write(" client did not provide a cert\n")
2391+
else:
2392+
sys.stdout.write(f" cert binary is {len(cert_binary)}b\n")
23902393
cipher = self.sslconn.cipher()
23912394
if support.verbose and self.server.chatty:
23922395
sys.stdout.write(" server: connection cipher is now " + str(cipher) + "\n")
@@ -2494,6 +2497,10 @@ def run(self):
24942497
)
24952498
else:
24962499
handle_error("Test server failure:\n")
2500+
try:
2501+
self.write(b"ERROR\n")
2502+
except OSError:
2503+
pass
24972504
self.close()
24982505
self.running = False
24992506

@@ -4399,24 +4406,30 @@ def test_pha_required_nocert(self):
43994406
server_context.verify_mode = ssl.CERT_REQUIRED
44004407
client_context.post_handshake_auth = True
44014408

4402-
# Ignore expected SSLError in ConnectionHandler of ThreadedEchoServer
4403-
# (it is only raised sometimes on Windows)
4404-
with threading_helper.catch_threading_exception() as cm:
4405-
server = ThreadedEchoServer(context=server_context, chatty=False)
4406-
with server:
4407-
with client_context.wrap_socket(socket.socket(),
4408-
server_hostname=hostname) as s:
4409-
s.connect((HOST, server.port))
4410-
s.write(b'PHA')
4409+
def msg_cb(conn, direction, version, content_type, msg_type, data):
4410+
if support.verbose and content_type == _TLSContentType.ALERT:
4411+
info = (conn, direction, version, content_type, msg_type, data)
4412+
sys.stdout.write(f"TLS: {info!r}\n")
4413+
4414+
server_context._msg_callback = msg_cb
4415+
client_context._msg_callback = msg_cb
4416+
4417+
server = ThreadedEchoServer(context=server_context, chatty=True)
4418+
with server:
4419+
with client_context.wrap_socket(socket.socket(),
4420+
server_hostname=hostname) as s:
4421+
s.connect((HOST, server.port))
4422+
s.write(b'PHA')
4423+
with self.assertRaisesRegex(
4424+
ssl.SSLError,
4425+
'tlsv13 alert certificate required'
4426+
):
44114427
# receive CertificateRequest
44124428
self.assertEqual(s.recv(1024), b'OK\n')
44134429
# send empty Certificate + Finish
44144430
s.write(b'HASCERT')
44154431
# receive alert
4416-
with self.assertRaisesRegex(
4417-
ssl.SSLError,
4418-
'tlsv13 alert certificate required'):
4419-
s.recv(1024)
4432+
s.recv(1024)
44204433

44214434
def test_pha_optional(self):
44224435
if support.verbose:

0 commit comments

Comments
 (0)