'Set up the keys for the connection and sends MSG_NEWKEYS when
finished,
@param sharedSecret: a secret string agreed upon using a Diffie-
Hellman exchange, so it is only shared between
the server and the client.
@type sharedSecret: L{str}
@param exchangeHash: A hash of various data known by both sides.
@type exchangeHash: L{str}'

def _keySetup(self, sharedSecret, exchangeHash):

    if (not self.sessionID):
        self.sessionID = exchangeHash
    initIVCS = self._getKey('A', sharedSecret, exchangeHash)
    initIVSC = self._getKey('B', sharedSecret, exchangeHash)
    encKeyCS = self._getKey('C', sharedSecret, exchangeHash)
    encKeySC = self._getKey('D', sharedSecret, exchangeHash)
    integKeyCS = self._getKey('E', sharedSecret, exchangeHash)
    integKeySC = self._getKey('F', sharedSecret, exchangeHash)
    outs = [initIVSC, encKeySC, integKeySC]
    ins = [initIVCS, encKeyCS, integKeyCS]
    if self.isClient:
        log.msg('REVERSE')
        (outs, ins) = (ins, outs)
    self.nextEncryptions.setKeys(outs[0], outs[1], ins[0], ins[1], outs[2], ins[2])
    self.sendPacket(MSG_NEWKEYS, '')
