code: def m2i(self, pkt, m):
          
          tmp_len = self.length_from(pkt)
          tbd, rem = m[:tmp_len], m[tmp_len:]
  
          s = pkt.tls_session
          cls = None
  
          if s.prcs and s.prcs.key_exchange:
              cls = s.prcs.key_exchange.client_kx_msg_cls
  
          if cls is None:
              return Raw(tbd) / Padding(rem)
  
          return cls(tbd, tls_session=s) / Padding(rem)
docs: The client_kx_msg may be either None, EncryptedPreMasterSecret
          (for RSA encryption key exchange), ClientDiffieHellmanPublic,
          or ClientECDiffieHellmanPublic. When either one of them gets
          dissected, the session context is updated accordingly.