'Called when we receive a MSG_KEX_DH_GEX_REPLY message.  Payload::
string server host key
integer f (server DH public key)
We verify the host key by calling verifyHostKey, then continue in
_continueGEX_REPLY.
@type packet: L{bytes}
@param packet: The message data.
@return: A deferred firing once key exchange is complete.'

def ssh_KEX_DH_GEX_REPLY(self, packet):

    (pubKey, packet) = getNS(packet)
    (f, packet) = getMP(packet)
    (signature, packet) = getNS(packet)
    fingerprint = ':'.join([binascii.hexlify(c) for c in iterbytes(md5(pubKey).digest())])
    d = self.verifyHostKey(pubKey, fingerprint)
    d.addCallback(self._continueGEX_REPLY, pubKey, f, signature)
    d.addErrback((lambda unused: self.sendDisconnect(DISCONNECT_HOST_KEY_NOT_VERIFIABLE, 'bad    host    key')))
    return d
