def _parse_kexgss_complete(self, m):
if self.transport.host_key is None:<EOL><INDENT>self.transport.host_key = NullHostKey()<EOL><DEDENT>self.f = m.get_mpint()<EOL>mic_token = m.get_string()<EOL>bool = m.get_boolean()<EOL>srv_token = None<EOL>if bool:<EOL><INDENT>srv_token = m.get_string()<EOL><DEDENT>if (self.f < <NUM_LIT:1>) or (self.f > self.p - <NUM_LIT:1>):<EOL><INDENT>raise SSHException('<STR_LIT>')<EOL><DEDENT>K = pow(self.f, self.x, self.p)<EOL>hm = Message()<EOL>hm.add(<EOL>self.transport.local_version,<EOL>self.transport.remote_version,<EOL>self.transport.local_kex_init,<EOL>self.transport.remote_kex_init,<EOL>self.transport.host_key.__str__(),<EOL>)<EOL>if not self.old_style:<EOL><INDENT>hm.add_int(self.min_bits)<EOL><DEDENT>hm.add_int(self.preferred_bits)<EOL>if not self.old_style:<EOL><INDENT>hm.add_int(self.max_bits)<EOL><DEDENT>hm.add_mpint(self.p)<EOL>hm.add_mpint(self.g)<EOL>hm.add_mpint(self.e)<EOL>hm.add_mpint(self.f)<EOL>hm.add_mpint(K)<EOL>H = sha1(hm.asbytes()).digest()<EOL>self.transport._set_K_H(K, H)<EOL>if srv_token is not None:<EOL><INDENT>self.kexgss.ssh_init_sec_context(<EOL>target=self.gss_host, recv_token=srv_token<EOL>)<EOL>self.kexgss.ssh_check_mic(mic_token, H)<EOL><DEDENT>else:<EOL><INDENT>self.kexgss.ssh_check_mic(mic_token, H)<EOL><DEDENT>self.transport.gss_kex_used = True<EOL>self.transport._activate_outbound()<EOL>
Parse the SSH2_MSG_KEXGSS_COMPLETE message (client mode).

:param `Message` m: The content of the SSH2_MSG_KEXGSS_COMPLETE message