docs: def tls_session_update(self, msg_str):
          """
          Either for parsing or building, we store the server_random along with
          the raw string representing this handshake message. We also store the
          cipher suite (if recognized), and finally we instantiate the write and
          read connection states.
          """
          super(TLSClientHello, self).tls_session_update(msg_str)
  
          s = self.tls_session
          s.tls_version = self.version
          s.server_random = self.random_bytes
  
          cs_cls = None
          if self.cipher:
              cs_val = self.cipher
              if cs_val not in _tls_cipher_suites_cls:
                  warning("Unknown cipher suite %d from ServerHello" % cs_val)
                  # we do not try to set a default nor stop the execution
              else:
                  cs_cls = _tls_cipher_suites_cls[cs_val]
  
          connection_end = s.connection_end
          s.pwcs = writeConnState(ciphersuite=cs_cls,
                                  connection_end=connection_end,
                                  tls_version=self.version)
          s.triggered_pwcs_commit = True
          s.prcs = readConnState(ciphersuite=cs_cls,
                                 connection_end=connection_end,
                                 tls_version=self.version)
          s.triggered_prcs_commit = True
  
          if self.tls_session.tls13_early_secret is None:
              # In case the connState was not pre-initialized, we could not
              # compute the early secrets at the ClientHello, so we do it here.
              self.tls_session.compute_tls13_early_secrets()
          s.compute_tls13_handshake_secrets()