Пример #1
0
 def toProtocolTreeNode(self):
     node = super(MediaMessageProtocolEntity, self).toProtocolTreeNode()
     mediaNode = ProtocolTreeNode("media", {"type": self.mediaType}, None, None)
     node.addChild(mediaNode)
     if self.preview:
         mediaNode.setData(self.preview)
     return node
Пример #2
0
    def toProtocolTreeNode(self):
        node = super(ListGroupsResultIqProtocolEntity, self).toProtocolTreeNode()

        groupsNodes = []
        for group in self.groupsList:
            groupNode = ProtocolTreeNode("group", {
                "id":       group.getId(),
                "creator":    group.getCreator(),
                "subject":  group.getSubject(),
                "s_o":      group.getSubjectOwner(),
                "s_t":      str(group.getSubjectTime()),
                "creation": str(group.getCreationTime())
                },
            )
            participants = []
            for jid, _type in group.getParticipants().items():
                pnode = ProtocolTreeNode("participant", {"jid": jid})
                if _type:
                    pnode["type"] = _type
                participants.append(pnode)
            groupNode.addChildren(participants)
            groupsNodes.append(groupNode)

        node.addChild(ProtocolTreeNode("groups", children = groupsNodes))
        return node
Пример #3
0
 def toProtocolTreeNode(self):
     node = super(ErrorIqProtocolEntity, self).toProtocolTreeNode()
     errorNode = ProtocolTreeNode("error", {"text": self.text, "code": self.code})
     if self.backoff:
         errorNode.setAttribute("backoff", str(self.backoff))
     node.addChild(errorNode)
     return node
Пример #4
0
 def toProtocolTreeNode(self):
     node = super(CryptoIqProtocolEntity, self).toProtocolTreeNode()
     cryptoNode = ProtocolTreeNode("crypto", {"action": "create"})
     googleNode = ProtocolTreeNode("google", data = "fe5cf90c511fb899781bbed754577098e460d048312c8b36c11c91ca4b49ca34".decode('hex'))
     cryptoNode.addChild(googleNode)
     node.addChild(cryptoNode)
     return node
Пример #5
0
 def toProtocolTreeNode(self):
     node = super(PrivacyListIqProtocolEntity, self).toProtocolTreeNode()
     queryNode = ProtocolTreeNode("query")
     listNode = ProtocolTreeNode("list", {"name": self.listName})
     queryNode.addChild(listNode)
     node.addChild(queryNode)
     return node
Пример #6
0
 def setUp(self):
     super(BroadcastTextMessageTest, self).setUp()
     self.ProtocolEntity = BroadcastTextMessage
     broadcastNode = ProtocolTreeNode("broadcast")
     jids = ["jid1", "jid2"]
     toNodes = [ProtocolTreeNode("to", {"jid" : jid}) for jid in jids]
     broadcastNode.addChildren(toNodes)
     self.node.addChild(broadcastNode)
Пример #7
0
 def toProtocolTreeNode(self):
     node = super(SetPrivacyIqProtocolEntity, self).toProtocolTreeNode()
     queryNode = ProtocolTreeNode(self.__class__.XMLNS)
     for name in self.names:
         listNode = ProtocolTreeNode("category", {"name": name, "value": self.value})
         queryNode.addChild(listNode)
     node.addChild(queryNode)
     return node
Пример #8
0
    def toProtocolTreeNode(self):
        node = super(GetKeysIqProtocolEntity, self).toProtocolTreeNode()
        keyNode = ProtocolTreeNode("key")

        for jid in self.getJids():
            userNode = ProtocolTreeNode("user", { "jid": jid })
            keyNode.addChild(userNode)
        node.addChild(keyNode)
        return node
Пример #9
0
 def toProtocolTreeNode(self):
     node = super(CreateGroupsIqProtocolEntity, self).toProtocolTreeNode()
     cnode = ProtocolTreeNode("create", {"subject": self.subject})
     participantNodes = [
         ProtocolTreeNode("participant", {"jid": participant}) for participant in self.participantList
     ]
     cnode.addChildren(participantNodes)
     node.addChild(cnode)
     return node
Пример #10
0
    def toProtocolTreeNode(self):
        node = super(AddParticipantsIqProtocolEntity, self).toProtocolTreeNode()
        node_add_label = ProtocolTreeNode("add")
        node_participant_label = ProtocolTreeNode("participant", {"jid": self.jid})

        node_add_label.addChild(node_participant_label)
        node.addChild(node_add_label)

        return node
Пример #11
0
    def toProtocolTreeNode(self):
        node = super(GetKeysIqProtocolEntity, self).toProtocolTreeNode()
        keyNode = ProtocolTreeNode("key")

        for jid in self.jids:
            attrs = { "jid": jid }
            if self.reason is not None:
                attrs["reason"] = self.reason
            userNode = ProtocolTreeNode("user", attrs)
            keyNode.addChild(userNode)
        node.addChild(keyNode)
        return node
Пример #12
0
    def toProtocolTreeNode(self):
        node = super(AddGroupsNotificationProtocolEntity, self).toProtocolTreeNode()
        addNode = ProtocolTreeNode("add")
        participants = []
        for jid in self.getParticipants():
            pnode = ProtocolTreeNode("participant", {"jid": jid})
            participants.append(pnode)

        addNode.addChildren(participants)
        node.addChild(addNode)

        return node
Пример #13
0
    def toProtocolTreeNode(self):
        node = super(RemoveGroupsNotificationProtocolEntity, self).toProtocolTreeNode()
        removeNode = ProtocolTreeNode("remove", {"subject": self.subject})
        participants = []
        for jid in self.getParticipants():
            pnode = ProtocolTreeNode("participant", {"jid": jid})
            participants.append(pnode)

        removeNode.addChildren(participants)
        node.addChild(removeNode)

        return node
Пример #14
0
    def toProtocolTreeNode(self):
        node = super(EncryptedMessageProtocolEntity, self).toProtocolTreeNode()
        participantsNode = ProtocolTreeNode("participants")
        for enc in self.encEntities:
            encNode = enc.toProtocolTreeNode()
            if encNode.tag == "to":
                participantsNode.addChild(encNode)
            else:
                node.addChild(encNode)

        if len(participantsNode.getAllChildren()):
            node.addChild(participantsNode)

        return node
Пример #15
0
    def test_encode(self):
        node = ProtocolTreeNode("message", {
            "form": "abc",
            "to": "xyz"
        }, [ProtocolTreeNode("media", {"width": "123"}, data="123456")])
        result = self.encoder.protocolTreeNodeToBytes(node)

        self.assertTrue(result in ([
            248, 6, 89, 252, 4, 102, 111, 114, 109, 252, 3, 97, 98, 99, 165,
            252, 3, 120, 121, 122, 248, 1, 248, 4, 87, 236, 99, 252, 3, 49, 50,
            51, 252, 6, 49, 50, 51, 52, 53, 54
        ], [
            248, 6, 89, 165, 252, 3, 120, 121, 122, 252, 4, 102, 111, 114, 109,
            252, 3, 97, 98, 99, 248, 1, 248, 4, 87, 236, 99, 252, 3, 49, 50,
            51, 252, 6, 49, 50, 51, 52, 53, 54
        ]))
Пример #16
0
 def toProtocolTreeNode(self):
     node = super(ContactsSyncNotificationProtocolEntity,
                  self).toProtocolTreeNode()
     syncNode = ProtocolTreeNode("sync", {"after": str(self.after)}, None,
                                 None)
     node.addChild(syncNode)
     return node
Пример #17
0
    def handleAudioMessage(self, originalEncNode, audioMessage):
        messageNode = copy.deepcopy(originalEncNode)
        messageNode["type"] = "media"
        mediaNode = ProtocolTreeNode(
            "media", {
                "type":
                "audio",
                "filehash":
                audioMessage.file_sha256,
                "size":
                str(audioMessage.file_length),
                "url":
                audioMessage.url,
                "mimetype":
                audioMessage.mime_type.split(';')[0],
                "encoding":
                audioMessage.mime_type.split(';')[1].strip()
                if len(audioMessage.mime_type.split(';')) > 1 else "",
                "duration":
                str(audioMessage.duration),
                "seconds":
                str(audioMessage.duration),
                "encoding":
                "raw",
                "file":
                "enc",
                "ip":
                "0",
                "mediakey":
                audioMessage.media_key
            })
        messageNode.addChild(mediaNode)

        self.toUpper(messageNode)
Пример #18
0
 def toProtocolTreeNode(self):
     node = super(AddContactNotificationProtocolEntity,
                  self).toProtocolTreeNode()
     removeNode = ProtocolTreeNode("add", {"jid": self.contactJid}, None,
                                   None)
     node.addChild(removeNode)
     return node
Пример #19
0
 def setUp(self):
     self.ProtocolEntity = AuthProtocolEntity
     self.node = ProtocolTreeNode("auth", {
         "user": "******",
         "mechanism": "WAUTH-2",
         "passive": "false"
     })
Пример #20
0
 def toProtocolTreeNode(self):
     node = super(MediaMessageProtocolEntity, self).toProtocolTreeNode()
     mediaNode = ProtocolTreeNode("media", {"type": self.mediaType}, None, None)
     node.addChild(mediaNode)
     if self.preview:
         node.setData(self.preview)
     return node
Пример #21
0
 def toProtocolTreeNode(self):
     children = []
     attribs = {
         "t": str(self.timestamp),
         "offline": "1" if self.offline else "0",
         "id": self._id,
     }
     if self._from is not None:
         attribs["from"] = self._from
     if self._to is not None:
         attribs["to"] = self._to
     if self.retry is not None:
         attribs["retry"] = self.retry
     if self.e is not None:
         attribs["e"] = self.e
     if self.notify is not None:
         attribs["notify"] = self.notify
     if self._type in [
             "offer", "transport", "relaylatency", "reject", "terminate"
     ]:
         child = ProtocolTreeNode(self._type, {"call-id": self.callId})
         children.append(child)
     return self._createProtocolTreeNode(attribs,
                                         children=children,
                                         data=None)
Пример #22
0
 def setUp(self):
     self.ProtocolEntity = IqProtocolEntity
     self.node = ProtocolTreeNode("iq", {
         "id": "test_id",
         "type": "get",
         "xmlns": "iq_xmlns"
     }, None, None)
Пример #23
0
    def toProtocolTreeNode(self):
        node = super(ResultRequestUploadIqProtocolEntity,
                     self).toProtocolTreeNode()

        if not self.isDuplicate():
            mediaNode = ProtocolTreeNode("encr_media", {"url": self.url})
            if self.ip:
                mediaNode["ip"] = self.ip

            if self.resumeOffset:
                mediaNode["resume"] = str(self.resumeOffset)
        else:
            mediaNode = ProtocolTreeNode("duplicate", {"url": self.url})

        node.addChild(mediaNode)
        return node
Пример #24
0
 def toProtocolTreeNode(self):
     node = super(ListGroupsResultIqProtocolEntity,
                  self).toProtocolTreeNode()
     groupsNodes = [
         ProtocolTreeNode(
             "group", {
                 "id": group.getId(),
                 "creator": group.getCreator(),
                 "subject": group.getSubject(),
                 "s_o": group.getSubjectOwner(),
                 "s_t": str(group.getSubjectTime()),
                 "creation": str(group.getCreationTime())
             }) for group in self.groupsList
     ]
     node.addChild(ProtocolTreeNode("groups", {}, groupsNodes))
     return node
Пример #25
0
 def toProtocolTreeNode(self):
     node = super(CryptoIqProtocolEntity, self).toProtocolTreeNode()
     cryptoNode = ProtocolTreeNode("crypto", {"action": "create"})
     # googleNode = ProtocolTreeNode("google", data = "fe5cf90c511fb899781bbed754577098e460d048312c8b36c11c91ca4b49ca34".decode('hex'))
     # cryptoNode.addChild(googleNode)
     node.addChild(cryptoNode)
     return node
Пример #26
0
    def setUp(self):
        super(SyncIqProtocolEntityTest, self).setUp()
        self.ProtocolEntity = SyncIqProtocolEntity

        syncNodeAttrs = {"sid": "SID", "index": "0", "last": "true"}
        syncNode = ProtocolTreeNode("sync", syncNodeAttrs)
        self.node.addChild(syncNode)
Пример #27
0
    def toProtocolTreeNode(self):
        node = super(EncryptedMessageProtocolEntity, self).toProtocolTreeNode()
        encNode = ProtocolTreeNode("enc", data=self.encData)
        encNode["type"] = self.encType
        encNode["v"] = str(self.encVersion)

        node.addChild(encNode)
        return node
 def setUp(self):
     super(VCardMediaMessageProtocolEntityTest, self).setUp()
     self.ProtocolEntity = VCardMediaMessageProtocolEntity
     vcardNode = ProtocolTreeNode("vcard", {"name": "abc"}, None,
                                  "VCARD_DATA")
     mediaNode = self.node.getChild("media")
     mediaNode["type"] = "vcard"
     mediaNode.addChild(vcardNode)
Пример #29
0
 def toProtocolTreeNode(self):
     node = super(CreateGroupsIqProtocolEntity, self).toProtocolTreeNode()
     node.addChild(
         ProtocolTreeNode("group", {
             "action": "create",
             "subject": self.subject
         }))
     return node
 def setUp(self):
     super(ResultRequestUploadIqProtocolEntityTest, self).setUp()
     mediaNode = ProtocolTreeNode("encr_media", {
         "url": "url",
         "ip": "1.2.3.4"
     })
     self.ProtocolEntity = ResultRequestUploadIqProtocolEntity
     self.node.addChild(mediaNode)
Пример #31
0
 def setUp(self):
     super(SetPictureNotificationProtocolEntityTest, self).setUp()
     self.ProtocolEntity = SetPictureNotificationProtocolEntity
     setNode = ProtocolTreeNode("set", {
         "jid": "SET_JID",
         "id": "123"
     }, None, None)
     self.node.addChild(setNode)
Пример #32
0
 def setUp(self):
     super(CreateGroupsIqProtocolEntityTest, self).setUp()
     self.ProtocolEntity = CreateGroupsIqProtocolEntity
     groupNode = ProtocolTreeNode("group", {
         "action": "create",
         "subject": "group_subj"
     })
     self.node.addChild(groupNode)
Пример #33
0
 def toProtocolTreeNode(self):
     node = super(ResultGetPictureIqProtocolEntity,
                  self).toProtocolTreeNode()
     pictureNode = ProtocolTreeNode(
         {"type": "preview" if self.isPreview() else "image"},
         data=self.getPictureData())
     node.addChild(pictureNode)
     return node
Пример #34
0
    def toProtocolTreeNode(self):
        node = super(OutgoingReceiptProtocolEntity, self).toProtocolTreeNode()
        if self.read:
            node.setAttribute("type", "read")
        if self.participant:
            node.setAttribute("participant", self.participant)
        if self.callId:
            offer = ProtocolTreeNode("offer", {"call-id": self.callId})
            node.addChild(offer)

        node.setAttribute("to", self.to)

        if len(self.messageIds) > 1:
            listNode = ProtocolTreeNode("list")
            listNode.addChildren([ProtocolTreeNode("item", {"id": mId}) for mId in self.messageIds])
            node.addChild(listNode)

        return node
 def toProtocolTreeNode(self):
     node = super(SetPictureNotificationProtocolEntity,
                  self).toProtocolTreeNode()
     setNode = ProtocolTreeNode("set", {
         "jid": self.setJid,
         "id": self.setId
     }, None, None)
     node.addChild(setNode)
     return node
Пример #36
0
 def toProtocolTreeNode(self):
     node = super(VCardMediaMessageProtocolEntity,
                  self).toProtocolTreeNode()
     mediaNode = node.getChild("media")
     mediaNode["type"] = "vcard"
     vcardNode = ProtocolTreeNode("vcard", {"name": self.name}, None,
                                  self.card_data)
     mediaNode.addChild(vcardNode)
     return node
    def toProtocolTreeNode(self):
        node = super(RetryIncomingReceiptProtocolEntity,
                     self).toProtocolTreeNode()

        retry = ProtocolTreeNode(
            "retry", {
                "count": str(self.count),
                "id": self.getId(),
                "v": str(self.v),
                "t": str(self.retryTimestamp)
            })
        node.addChild(retry)
        registration = ProtocolTreeNode(
            "registration",
            data=ResultGetKeysIqProtocolEntity._intToBytes(
                self.remoteRegistrationId))
        node.addChild(registration)
        return node
Пример #38
0
 def setUp(self):
     self.ProtocolEntity = SuccessProtocolEntity
     attribs = {
         "creation": "1234",
         "location": "atn",
         "props": "2",
         "t": "1415470561"
     }
     self.node = ProtocolTreeNode("success", attribs)
Пример #39
0
    def nextTreeInternal(self, data):
        size = self.readListSize(self.readInt8(data), data)
        token = self.readInt8(data)
        if token == 1:
            token = self.readInt8(data)

        if token == 2:
            return None

        tag = self.readString(token, data)

        if size == 0 or tag is None:
            raise ValueError("nextTree sees 0 list or null tag")

        attribCount = (size - 2 + size % 2)/2
        attribs = self.readAttributes(attribCount, data)
        if size % 2 ==1:
            return ProtocolTreeNode(tag, attribs)

        read2 = self.readInt8(data)

        nodeData = None
        nodeChildren = None
        if self.isListTag(read2):
            nodeChildren = self.readList(read2, data)
        elif read2 == 252:
            size = self.readInt8(data)
            nodeData = self.readArray(size, data)
        elif read2 == 253:
            size = self.readInt20(data)
            nodeData = self.readArray(size, data)
        elif read2 == 254:
            size = self.readInt31(data)
            nodeData = self.readArray(size, data)
        elif read2 in (255, 251):
            nodeData = self.readPacked8(read2, data)
        else:
            nodeData = self.readString(read2, data)

        if nodeData and type(nodeData) is not str:
            nodeData = "".join(map(chr, nodeData))

        return ProtocolTreeNode(tag, attribs, nodeChildren, nodeData)
Пример #40
0
 def setUp(self):
     self.ProtocolEntity = NotificationProtocolEntity
     attribs = {
         "t": "12345",
         "from": "from_jid",
         "offline": "0",
         "type": "notif_type",
         "id": "message-id",
         "notify": "notify_name"
     }
     self.node = ProtocolTreeNode("notification", attribs)
Пример #41
0
 def toProtocolTreeNode(self):
     node = super(SubjectGroupsNotificationProtocolEntity,
                  self).toProtocolTreeNode()
     subjectNode = ProtocolTreeNode(
         "subject", {
             "s_t": str(self.getSubjectTimestamp()),
             "s_o": self.getSubjectOwner(),
             "subject": self.getSubject()
         })
     node.addChild(subjectNode)
     return node
Пример #42
0
    def toProtocolTreeNode(self):
        node = super(ListParticipantsResultIqProtocolEntity,
                     self).toProtocolTreeNode()

        participantNodes = [
            ProtocolTreeNode("participant", {"jid": participant})
            for participant in self.participantList
        ]

        node.addChildren(participantNodes)
        return node
Пример #43
0
    def toProtocolTreeNode(self):
        
        users = [ProtocolTreeNode("user", {}, None, number) for number in self.numbers]

        node = super(GetSyncIqProtocolEntity, self).toProtocolTreeNode()
        syncNode = node.getChild("sync")
        syncNode.setAttribute("mode", self.mode)
        syncNode.setAttribute("context", self.context)
        syncNode.addChildren(users)

        return node
Пример #44
0
    def toProtocolTreeNode(self):
        node = super(RetryOutgoingReceiptProtocolEntity,
                     self).toProtocolTreeNode()
        node.setAttribute("type", "retry")

        retry_attrs = {
            "count": str(self.count),
            "id": self.getId(),
            "v": str(self.v),
            "t": str(self.retry_timestamp)
        }

        retry = ProtocolTreeNode("retry", retry_attrs)
        node.addChild(retry)
        registration = ProtocolTreeNode(
            "registration",
            data=ResultGetKeysIqProtocolEntity._intToBytes(
                self.local_registration_id))
        node.addChild(registration)
        return node
Пример #45
0
 def setUp(self):
     self.ProtocolEntity = SuccessProtocolEntity
     attribs = {
         "status": "active",
         "kind": "free",
         "creation": "1234",
         "expiration": "1446578937",
         "props": "2",
         "t": "1415470561"
     }
     self.node = ProtocolTreeNode("success", attribs, None, "dummydata")
Пример #46
0
    def toProtocolTreeNode(self):
        node = super(IncomingReceiptProtocolEntity, self).toProtocolTreeNode()
        node.setAttribute("from", self._from)
        node.setAttribute("t", str(self.timestamp))
        if self.offline is not None:
            node.setAttribute("offline", "1" if self.offline else "0")
        if self.type is not None:
            node.setAttribute("type", self.type)
        if self.participant is not None:
            node.setAttribute("participant", self.participant)

        if self.items is not None:
            inodes = []
            for item in self.items:
                inode = ProtocolTreeNode("item", {"id": item})
                inodes.append(inode)

            lnode = ProtocolTreeNode("list")
            lnode.addChildren(inodes)
            node.addChild(lnode)
        return node
Пример #47
0
    def toProtocolTreeNode(self):
        node = super(SetKeysIqProtocolEntity, self).toProtocolTreeNode()
        identityNode = ProtocolTreeNode("identity", data = self.identityKey)

        listNode = ProtocolTreeNode("list")
        keyNodes = []
        for keyId, pk in self.preKeys.items():
            keyNode = ProtocolTreeNode("key")
            keyNode.addChild(ProtocolTreeNode("id", data = keyId))
            keyNode.addChild(ProtocolTreeNode("value", data = pk))
            keyNodes.append(keyNode)

        listNode.addChildren(keyNodes)

        regNode = ProtocolTreeNode("registration", data = self.registration)
        typeNode = ProtocolTreeNode("type", data = chr(self.djbType))
        _id, val, signature = self.signedPreKey
        skeyNode = ProtocolTreeNode("skey", children = [
            ProtocolTreeNode("id", data = _id),
            ProtocolTreeNode("value", data = val),
            ProtocolTreeNode("signature", data = signature)
        ])

        node.addChildren([
            listNode,
            identityNode,
            regNode,
            typeNode,
            skeyNode
        ])

        return node
Пример #48
0
    def toProtocolTreeNode(self):
        node = super(InfoGroupsResultIqProtocolEntity, self).toProtocolTreeNode()
        groupNode = ProtocolTreeNode("group", {
            "subject": self.getSubject(),
            "creation": str(self.getCreationTimestamp()),
            "creator": self.getCreatorJid(),
            "s_t": self.getSubjectTimestamp(),
            "s_o": self.getSubjectOwnerJid(),
            "id": self.getGroupId()
        })

        participants = []
        for jid, _type in self.getParticipants().items():
            pnode = ProtocolTreeNode("participant", {"jid": jid})
            if _type:
                pnode["type"] = _type
            participants.append(pnode)

        groupNode.addChildren(participants)
        node.addChild(groupNode)

        return node
Пример #49
0
    def setUp(self):
        super(ResultIqProtocolEntityTest, self).setUp()
        self.ProtocolEntity = ResultGetKeysIqProtocolEntity
        listNode = ProtocolTreeNode("list")
        self.node.addChild(listNode)

        for i in range(0, 1):
            userNode = ProtocolTreeNode("user", {"jid": "user_%s@%s" % (i, YowConstants.WHATSAPP_SERVER)})
            listNode.addChild(userNode)
            registrationNode = ProtocolTreeNode("registration",
                                                data = ResultGetKeysIqProtocolEntity._intToBytes(
                                                    KeyHelper.generateRegistrationId()))

            typeNode = ProtocolTreeNode("type", data = ResultGetKeysIqProtocolEntity._intToBytes(Curve.DJB_TYPE))

            identityKeyPair = KeyHelper.generateIdentityKeyPair()
            identityNode = ProtocolTreeNode("identity", data=identityKeyPair.getPublicKey().getPublicKey().getPublicKey())

            signedPreKey = KeyHelper.generateSignedPreKey(identityKeyPair, i)

            signedPreKeyNode = ProtocolTreeNode("skey")
            signedPreKeyNode_idNode = ProtocolTreeNode("id",
                                                       data = ResultGetKeysIqProtocolEntity._intToBytes(
                                                           signedPreKey.getId()))

            signedPreKeyNode_valueNode = ProtocolTreeNode("value",
                                                          data = signedPreKey.getKeyPair().getPublicKey().getPublicKey())

            signedPreKeyNode_sigNode = ProtocolTreeNode("signature",
                                                        data = signedPreKey.getSignature())

            signedPreKeyNode.addChildren([signedPreKeyNode_idNode, signedPreKeyNode_valueNode, signedPreKeyNode_sigNode])

            preKey = KeyHelper.generatePreKeys(i * 10, 1)[0]

            preKeyNode = ProtocolTreeNode("key")
            preKeyNode_idNode = ProtocolTreeNode("id", data = ResultGetKeysIqProtocolEntity._intToBytes(preKey.getId()))
            preKeyNode_valNode = ProtocolTreeNode("value", data = preKey.getKeyPair().getPublicKey().getPublicKey())
            preKeyNode.addChildren([preKeyNode_idNode, preKeyNode_valNode])

            userNode.addChildren([
                registrationNode,
                typeNode,
                identityNode,
                signedPreKeyNode,
                preKeyNode
            ])
Пример #50
0
 def receive(self, node):
     if ProtocolTreeNode.tagEquals(node, "message") and node.getAttributeValue("type") == "media":
         self.downloadMedia(node.getChild("media").getAttributeValue("url"))
     else:
         self.toUpper(node)
Пример #51
0
 def setUp(self):
     self.ProtocolEntity = ChatstateProtocolEntity
     self.node = ProtocolTreeNode("chatstate")
     self.node.addChild(ProtocolTreeNode('composing'))
Пример #52
0
    def toProtocolTreeNode(self):
        node = super(ResultGetKeysIqProtocolEntity, self).toProtocolTreeNode()
        listNode = ProtocolTreeNode("list")
        node.addChild(listNode)

        for jid, preKeyBundle in self.preKeyBundleMap.items():
            userNode = ProtocolTreeNode("user", {"jid": jid})
            registrationNode = ProtocolTreeNode("registration", data = self.__class__._intToBytes(preKeyBundle.getRegistrationId()))
            typeNode = ProtocolTreeNode("type", data = self.__class__._intToBytes(Curve.DJB_TYPE))
            identityNode = ProtocolTreeNode("identity", data = preKeyBundle.getIdentityKey().getPublicKey().getPublicKey())

            skeyNode = ProtocolTreeNode("skey")
            skeyNode_idNode = ProtocolTreeNode("id", data=self.__class__._intToBytes(preKeyBundle.getSignedPreKeyId()))
            skeyNode_valueNode = ProtocolTreeNode("value", data=preKeyBundle.getSignedPreKey().getPublicKey())
            skeyNode_signatureNode = ProtocolTreeNode("signature", data=preKeyBundle.getSignedPreKeySignature())
            skeyNode.addChildren([skeyNode_idNode, skeyNode_valueNode, skeyNode_signatureNode])

            preKeyNode = ProtocolTreeNode("key")
            preKeyNode_idNode = ProtocolTreeNode("id", data = self.__class__._intToBytes(preKeyBundle.getPreKeyId()))
            preKeyNode_valueNode = ProtocolTreeNode("value", data= preKeyBundle.getPreKey().getPublicKey())
            preKeyNode.addChildren([preKeyNode_idNode, preKeyNode_valueNode])

            userNode.addChildren([
                registrationNode,
                typeNode,
                identityNode,
                skeyNode,
                preKeyNode
            ])
            listNode.addChild(userNode)

        return node
Пример #53
0
    def appendPlainNode(self, node, plaintext):
            if node.getAttributeValue("type") == 'text':
                bodyNode = ProtocolTreeNode("body", data = plaintext)

            elif node.getAttributeValue("type") == 'media':
                
                #decode schema from encrypted message
                if node.getChild("enc").getAttributeValue("mediatype") == 'image':
                    media = encrypted_media_pb2.MediaImage()
                    media.ParseFromString(plaintext)
                    bodyNode = ProtocolTreeNode("media", data = media.preview)
                    bodyNode.setAttribute("type", node.getChild("enc").getAttributeValue("mediatype"))
                    bodyNode.setAttribute("size", str(media.length))
                    bodyNode.setAttribute("width", str(media.width))
                    bodyNode.setAttribute("height", str(media.height))
                    bodyNode.setAttribute("encoding", "unknown")
                    bodyNode.setAttribute("caption", media.caption)
                    bodyNode.setAttribute("mimetype", media.mimetype)
                    bodyNode.setAttribute("filehash", base64.b64encode(media.sha256))
                    bodyNode.setAttribute("url", media.url)
                    bodyNode.setAttribute("file", "unknown")
                    bodyNode.setAttribute("refkey", base64.b64encode(media.refkey))

                elif node.getChild("enc").getAttributeValue("mediatype") == 'document':
                    media = encrypted_media_pb2.MediaDocument()
                    media.ParseFromString(plaintext)
                    bodyNode = ProtocolTreeNode("media", data = media.preview)
                    bodyNode.setAttribute("type", node.getChild("enc").getAttributeValue("mediatype"))
                    bodyNode.setAttribute("url", media.url)
                    bodyNode.setAttribute("mimetype", media.mimetype)
                    bodyNode.setAttribute("filehash", base64.b64encode(media.sha256))
                    bodyNode.setAttribute("name", media.name)
                    bodyNode.setAttribute("size", str(media.length))
                    bodyNode.setAttribute("refkey", base64.b64encode(media.refkey))
                    bodyNode.setAttribute("file", media.filename)
                
                elif node.getChild("enc").getAttributeValue("mediatype") == 'location':
                    media = encrypted_media_pb2.MediaLocation()
                    media.ParseFromString(plaintext)
                    bodyNode = ProtocolTreeNode("media", data = media.preview)
                    bodyNode.setAttribute("type", node.getChild("enc").getAttributeValue("mediatype"))
                    bodyNode.setAttribute("latitude", str(media.latitude))
                    bodyNode.setAttribute("longitude", str(media.longitude))
                    bodyNode.setAttribute("name", media.name)
                    bodyNode.setAttribute("url", media.url)
                    bodyNode.setAttribute("encoding","unknown")
                    bodyNode.setAttribute("description", media.description)

                elif node.getChild("enc").getAttributeValue("mediatype") == 'contact':
                    media = encrypted_media_pb2.MediaContact()
                    media.ParseFromString(plaintext)
                    bodyNode = ProtocolTreeNode("media", data = media.data)
                    bodyNode.setAttribute("type", node.getChild("enc").getAttributeValue("mediatype"))
                    bodyNode.setAttribute("name", media.name)
                    
                elif node.getChild("enc").getAttributeValue("mediatype") == 'url':
                    media = encrypted_media_pb2.MediaUrl()
                    media.ParseFromString(plaintext)
                    bodyNode = ProtocolTreeNode("media", data = media.preview)
                    bodyNode.setAttribute("type", node.getChild("enc").getAttributeValue("mediatype"))
                    bodyNode.setAttribute("message", media.message)
                    bodyNode.setAttribute("url", media.url)
                    bodyNode.setAttribute("description", media.description)
                    bodyNode.setAttribute("title", media.title)
                
                else:
                    raise "Unmanaged media type"
                    
            else:
                raise "Unmanaged data type"
            logger.debug(bodyNode)
            node.addChild(bodyNode)