code: def post_dissection(self, m):
          
          s = self.tls_session
  
          # if there are kx params and keys, we assume the crypto library is ok
          if s.client_kx_ffdh_params:
              y = pkcs_os2ip(self.dh_Yc)
              param_numbers = s.client_kx_ffdh_params.parameter_numbers()
              public_numbers = dh.DHPublicNumbers(y, param_numbers)
              s.client_kx_pubkey = public_numbers.public_key(default_backend())
  
          if s.server_kx_privkey and s.client_kx_pubkey:
              ZZ = s.server_kx_privkey.exchange(s.client_kx_pubkey)
              s.pre_master_secret = ZZ
              s.compute_ms_and_derive_keys()
docs: First we update the client DHParams. Then, we try to update the server
          DHParams generated during Server*DHParams building, with the shared
          secret. Finally, we derive the session keys and update the context.