(self)
| 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) |
nothing calls this directly
no test coverage detected