MCPcopy Create free account
hub / github.com/secdev/scapy / INIT_TLS_SESSION

Method INIT_TLS_SESSION

scapy/layers/tls/automaton_cli.py:248–306  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

246
247 @ATMT.state()
248 def INIT_TLS_SESSION(self):
249 self.cur_session = tlsSession(connection_end="client")
250 s = self.cur_session
251 s.client_certs = self.mycert
252 s.client_key = self.mykey
253 v = self.advertised_tls_version
254 if v:
255 s.advertised_tls_version = v
256 else:
257 default_version = s.advertised_tls_version
258 self.advertised_tls_version = default_version
259
260 if s.advertised_tls_version >= 0x0304:
261 # For out of band PSK, the PSK is given as an argument
262 # to the automaton
263 if self.tls13_psk_secret:
264 s.tls13_psk_secret = binascii.unhexlify(self.tls13_psk_secret)
265
266 # For resumed PSK, the PSK is computed from
267 if self.session_ticket_file_in:
268 with open(self.session_ticket_file_in, 'rb') as f:
269
270 resumed_ciphersuite_len = struct.unpack("B", f.read(1))[0]
271 s.tls13_ticket_ciphersuite = \
272 struct.unpack("!H", f.read(resumed_ciphersuite_len))[0]
273
274 ticket_nonce_len = struct.unpack("B", f.read(1))[0]
275 # XXX add client_session_nonce member in tlsSession
276 s.client_session_nonce = f.read(ticket_nonce_len)
277
278 client_ticket_age_len = struct.unpack("!H", f.read(2))[0]
279 tmp = f.read(client_ticket_age_len)
280 s.client_ticket_age = struct.unpack("!I", tmp)[0]
281
282 client_ticket_age_add_len = struct.unpack(
283 "!H", f.read(2))[0]
284 tmp = f.read(client_ticket_age_add_len)
285 s.client_session_ticket_age_add = struct.unpack(
286 "!I", tmp)[0]
287
288 ticket_len = struct.unpack("!H", f.read(2))[0]
289 s.client_session_ticket = f.read(ticket_len)
290
291 if self.resumption_master_secret:
292
293 if s.tls13_ticket_ciphersuite not in _tls_cipher_suites_cls: # noqa: E501
294 warning("Unknown cipher suite %d", s.tls13_ticket_ciphersuite) # noqa: E501
295 # we do not try to set a default nor stop the execution
296 else:
297 cs_cls = _tls_cipher_suites_cls[s.tls13_ticket_ciphersuite] # noqa: E501
298
299 hkdf = TLS13_HKDF(cs_cls.hash_alg.name.lower())
300 hash_len = hkdf.hash.digest_size
301
302 s.tls13_psk_secret = hkdf.expand_label(binascii.unhexlify(self.resumption_master_secret), # noqa: E501
303 b"resumption",
304 s.client_session_nonce, # noqa: E501
305 hash_len)

Callers 1

INITIALMethod · 0.95

Calls 6

expand_labelMethod · 0.95
CONNECTMethod · 0.95
tlsSessionClass · 0.90
warningFunction · 0.90
TLS13_HKDFClass · 0.90
readMethod · 0.45

Tested by

no test coverage detected