Esempio n. 1
0
 def decrypt_pkmsg(self, senderid, data, unpad):
     logger.debug("decrypt_pkmsg(senderid=%s, data=(omitted), unpad=%s)" % (senderid, unpad))
     pkmsg = PreKeyWhisperMessage(serialized=data)
     try:
         plaintext = self._get_session_cipher(senderid).decryptPkmsg(pkmsg)
         return self._unpad(plaintext) if unpad else plaintext
     except NoSessionException:
         raise exceptions.NoSessionException()
     except InvalidKeyIdException:
         raise exceptions.InvalidKeyIdException()
     except InvalidMessageException:
         raise exceptions.InvalidMessageException()
     except DuplicateMessageException:
         raise exceptions.DuplicateMessageException()
Esempio n. 2
0
 def group_decrypt(self, groupid, participantid, data):
     logger.debug(
         "group_decrypt(groupid=%s, participantid=%s, data=[omitted])" %
         (groupid, participantid))
     group_cipher = self._get_group_cipher(groupid, participantid)
     try:
         plaintext = group_cipher.decrypt(data)
         plaintext = self._unpad(plaintext)
         return plaintext
     except NoSessionException:
         raise exceptions.NoSessionException()
     except DuplicateMessageException:
         raise exceptions.DuplicateMessageException()
     except InvalidMessageException:
         raise exceptions.InvalidMessageException()
Esempio n. 3
0
    def parseAndHandleMessageProto(self, encMessageProtocolEntity,
                                   serializedData):
        m = Message()
        try:
            m.ParseFromString(serializedData)
        except:
            print("DUMP:")
            print(serializedData)
            print([s for s in serializedData])
            raise
        if not m or not serializedData:
            raise exceptions.InvalidMessageException()

        if m.HasField("sender_key_distribution_message"):
            self.handleSenderKeyDistributionMessage(
                m.sender_key_distribution_message,
                encMessageProtocolEntity.getParticipant(False))