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

Method test_tls_unique_channel_binding

Lib/test/test_ssl.py:4286–4346  ·  view source on GitHub ↗

Test tls-unique channel binding.

(self)

Source from the content-addressed store, hash-verified

4284 @unittest.skipUnless("tls-unique" in ssl.CHANNEL_BINDING_TYPES,
4285 "'tls-unique' channel binding not available")
4286 def test_tls_unique_channel_binding(self):
4287 """Test tls-unique channel binding."""
4288 if support.verbose:
4289 sys.stdout.write("\n")
4290
4291 client_context, server_context, hostname = testing_context()
4292
4293 # tls-unique is not defined for TLSv1.3
4294 # https://datatracker.ietf.org/doc/html/rfc8446#appendix-C.5
4295 client_context.maximum_version = ssl.TLSVersion.TLSv1_2
4296
4297 server = ThreadedEchoServer(context=server_context,
4298 chatty=True,
4299 connectionchatty=False)
4300
4301 with server:
4302 with client_context.wrap_socket(
4303 socket.socket(),
4304 server_hostname=hostname) as s:
4305 s.connect((HOST, server.port))
4306 # get the data
4307 cb_data = s.get_channel_binding("tls-unique")
4308 if support.verbose:
4309 sys.stdout.write(
4310 " got channel binding data: {0!r}\n".format(cb_data))
4311
4312 # check if it is sane
4313 self.assertIsNotNone(cb_data)
4314 if s.version() == 'TLSv1.3':
4315 self.assertEqual(len(cb_data), 48)
4316 else:
4317 self.assertEqual(len(cb_data), 12) # True for TLSv1
4318
4319 # and compare with the peers version
4320 s.write(b"CB tls-unique\n")
4321 peer_data_repr = s.read().strip()
4322 self.assertEqual(peer_data_repr,
4323 repr(cb_data).encode("us-ascii"))
4324
4325 # now, again
4326 with client_context.wrap_socket(
4327 socket.socket(),
4328 server_hostname=hostname) as s:
4329 s.connect((HOST, server.port))
4330 new_cb_data = s.get_channel_binding("tls-unique")
4331 if support.verbose:
4332 sys.stdout.write(
4333 "got another channel binding data: {0!r}\n".format(
4334 new_cb_data)
4335 )
4336 # is it really unique
4337 self.assertNotEqual(cb_data, new_cb_data)
4338 self.assertIsNotNone(cb_data)
4339 if s.version() == 'TLSv1.3':
4340 self.assertEqual(len(cb_data), 48)
4341 else:
4342 self.assertEqual(len(cb_data), 12) # True for TLSv1
4343 s.write(b"CB tls-unique\n")

Callers

nothing calls this directly

Calls 15

testing_contextFunction · 0.85
ThreadedEchoServerClass · 0.85
wrap_socketMethod · 0.80
socketMethod · 0.80
assertIsNotNoneMethod · 0.80
assertNotEqualMethod · 0.80
writeMethod · 0.45
connectMethod · 0.45
get_channel_bindingMethod · 0.45
formatMethod · 0.45
versionMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected