def sendResults(self, voteCount, index, vote): message = SecureMessage() message.action = 'announce-results' message['vote-count'] = voteCount message['your-vote'] = { 'index': index, 'vote': vote } message.sign() self.sendMessage(message)
def _sendVote(self): encVote = self.factory.sessionKey.encrypt(self.factory.vote) logger.debug("Encrypting vote with session key:") logger.debug(encVote, False) logger.verbose("Sending encrypted vote to collector...") message = SecureMessage() message.action = "vote" message['vote'] = encVote message.sign() self.sendMessage(message)
def _sendCert(self): message = SecureMessage() message.action = 'get-session-key' message['certificate'] = self.factory.cert message.sign() #authKey = app.keyManager.findKey('authority') #message.encrypt(authKey) logger.debug("Sending certficate to authority") self.sendMessage(message)
def messageReceived(self, message): logger.debug("Message received from client") try: vote = message['vote'] index = self.factory.receivedVote(self, vote) reply = SecureMessage() reply.action = 'set-index' reply['index'] = index reply.sign() logger.debug("Sending index to client") self.sendMessage(reply) except KeyError as e: return self.factory.fail("Malformed message received from client. No '%s' field" % e)
def sendIndex(self, index, sessionKey): message = SecureMessage() message.action = "set-index" pair = { 'certificate': self.factory.cert, 'index': index } pairString = json.dumps(pair) encPair = sessionKey.encrypt(pairString) message['certificate'] = self.factory.cert message['pair'] = encPair logger.verbose("Sending certificate/index pair to Authority") self.sendMessage(message.sign()) self.transport.loseConnection()
def _sendRequest(self): message = SecureMessage() sessionKeyFactory = SessionKeyFactory() sessionKey = sessionKeyFactory.createAESKey() self.factory.collectorNode.authKey = sessionKey logger.debug("Created session key for Authority connection:") logger.debug(sessionKey.hex(), False) authKey = app.keyManager.findKey("authority") encryptedKey = authKey.publicEncrypt(sessionKey.hex()) message.action = "request-table" message['encrypted-session-key'] = encryptedKey message.sign() self.sendMessage(message)