MCPcopy Index your code
hub / github.com/python/cpython / test_bio_handshake

Method test_bio_handshake

Lib/test/test_ssl.py:2373–2407  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

2371 return ret
2372
2373 def test_bio_handshake(self):
2374 sock = socket.socket(socket.AF_INET)
2375 self.addCleanup(sock.close)
2376 sock.connect(self.server_addr)
2377 incoming = ssl.MemoryBIO()
2378 outgoing = ssl.MemoryBIO()
2379 ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
2380 self.assertTrue(ctx.check_hostname)
2381 self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED)
2382 ctx.load_verify_locations(SIGNING_CA)
2383 sslobj = ctx.wrap_bio(incoming, outgoing, False,
2384 SIGNED_CERTFILE_HOSTNAME)
2385 self.assertIs(sslobj._sslobj.owner, sslobj)
2386 self.assertIsNone(sslobj.cipher())
2387 self.assertIsNone(sslobj.version())
2388 self.assertIsNone(sslobj.shared_ciphers())
2389 self.assertRaises(ValueError, sslobj.getpeercert)
2390 # tls-unique is not defined for TLSv1.3
2391 # https://datatracker.ietf.org/doc/html/rfc8446#appendix-C.5
2392 if 'tls-unique' in ssl.CHANNEL_BINDING_TYPES and sslobj.version() != "TLSv1.3":
2393 self.assertIsNone(sslobj.get_channel_binding('tls-unique'))
2394 self.ssl_io_loop(sock, incoming, outgoing, sslobj.do_handshake)
2395 self.assertTrue(sslobj.cipher())
2396 self.assertIsNone(sslobj.shared_ciphers())
2397 self.assertIsNotNone(sslobj.version())
2398 self.assertTrue(sslobj.getpeercert())
2399 if 'tls-unique' in ssl.CHANNEL_BINDING_TYPES and sslobj.version() != "TLSv1.3":
2400 self.assertTrue(sslobj.get_channel_binding('tls-unique'))
2401 try:
2402 self.ssl_io_loop(sock, incoming, outgoing, sslobj.unwrap)
2403 except ssl.SSLSyscallError:
2404 # If the server shuts down the TCP connection without sending a
2405 # secure shutdown message, this is reported as SSL_ERROR_SYSCALL
2406 pass
2407 self.assertRaises(ssl.SSLError, sslobj.write, b'foo')
2408
2409 def test_bio_read_write_data(self):
2410 sock = socket.socket(socket.AF_INET)

Callers

nothing calls this directly

Calls 15

wrap_bioMethod · 0.95
ssl_io_loopMethod · 0.95
socketMethod · 0.80
addCleanupMethod · 0.80
assertTrueMethod · 0.80
assertIsNoneMethod · 0.80
assertIsNotNoneMethod · 0.80
connectMethod · 0.45
assertEqualMethod · 0.45
assertIsMethod · 0.45
cipherMethod · 0.45
versionMethod · 0.45

Tested by

no test coverage detected