'Test that the KEX_DH_GEX_REPLY message results in a verified
server.'

def test_KEX_DH_GEX_REPLY(self):

    self.test_KEX_DH_GEX_GROUP()
    sharedSecret = common._MPpow(3, self.proto.x, self.proto.p)
    h = self.hashProcessor()
    h.update((common.NS(self.proto.ourVersionString) * 2))
    h.update((common.NS(self.proto.ourKexInitPayload) * 2))
    h.update(common.NS(self.blob))
    h.update('\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00    \x00')
    h.update('\x00\x00\x00\x01\x0f\x00\x00\x00\x01\x02')
    h.update(self.proto.e)
    h.update('\x00\x00\x00\x01\x03')
    h.update(sharedSecret)
    exchangeHash = h.digest()
    def _cbTestKEX_DH_GEX_REPLY(value):
        self.assertIsNone(value)
        self.assertTrue(self.calledVerifyHostKey)
        self.assertEqual(self.proto.sessionID, exchangeHash)
    signature = self.privObj.sign(exchangeHash)
    d = self.proto.ssh_KEX_DH_GEX_REPLY(((common.NS(self.blob) + '\x00\x00\x00\x01\x03') + common.NS(signature)))
    d.addCallback(_cbTestKEX_DH_GEX_REPLY)
    return d
