(self)
| 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) |
no test coverage detected