(self)
| 2154 | return ret |
| 2155 | |
| 2156 | def test_bio_handshake(self): |
| 2157 | sock = socket.socket(socket.AF_INET) |
| 2158 | self.addCleanup(sock.close) |
| 2159 | sock.connect(self.server_addr) |
| 2160 | incoming = ssl.MemoryBIO() |
| 2161 | outgoing = ssl.MemoryBIO() |
| 2162 | ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) |
| 2163 | self.assertTrue(ctx.check_hostname) |
| 2164 | self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED) |
| 2165 | ctx.load_verify_locations(SIGNING_CA) |
| 2166 | sslobj = ctx.wrap_bio(incoming, outgoing, False, |
| 2167 | SIGNED_CERTFILE_HOSTNAME) |
| 2168 | self.assertIs(sslobj._sslobj.owner, sslobj) |
| 2169 | self.assertIsNone(sslobj.cipher()) |
| 2170 | self.assertIsNone(sslobj.version()) |
| 2171 | self.assertIsNone(sslobj.shared_ciphers()) |
| 2172 | self.assertRaises(ValueError, sslobj.getpeercert) |
| 2173 | # tls-unique is not defined for TLSv1.3 |
| 2174 | # https://datatracker.ietf.org/doc/html/rfc8446#appendix-C.5 |
| 2175 | if 'tls-unique' in ssl.CHANNEL_BINDING_TYPES and sslobj.version() != "TLSv1.3": |
| 2176 | self.assertIsNone(sslobj.get_channel_binding('tls-unique')) |
| 2177 | self.ssl_io_loop(sock, incoming, outgoing, sslobj.do_handshake) |
| 2178 | self.assertTrue(sslobj.cipher()) |
| 2179 | self.assertIsNone(sslobj.shared_ciphers()) |
| 2180 | self.assertIsNotNone(sslobj.version()) |
| 2181 | self.assertTrue(sslobj.getpeercert()) |
| 2182 | if 'tls-unique' in ssl.CHANNEL_BINDING_TYPES and sslobj.version() != "TLSv1.3": |
| 2183 | self.assertTrue(sslobj.get_channel_binding('tls-unique')) |
| 2184 | try: |
| 2185 | self.ssl_io_loop(sock, incoming, outgoing, sslobj.unwrap) |
| 2186 | except ssl.SSLSyscallError: |
| 2187 | # If the server shuts down the TCP connection without sending a |
| 2188 | # secure shutdown message, this is reported as SSL_ERROR_SYSCALL |
| 2189 | pass |
| 2190 | self.assertRaises(ssl.SSLError, sslobj.write, b'foo') |
| 2191 | |
| 2192 | def test_bio_read_write_data(self): |
| 2193 | sock = socket.socket(socket.AF_INET) |
nothing calls this directly
no test coverage detected