Пример #1
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
Пример #2
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
Пример #3
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
    def toProtocolTreeNode(self):
        node = super(CreateGroupsNotificationProtocolEntity,
                     self).toProtocolTreeNode()
        createNode = ProtocolTreeNode("create", {
            "type": self.getCreatetype(),
            "key": self.key
        })
        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)
        createNode.addChild(groupNode)
        node.addChild(createNode)

        return node
Пример #5
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
Пример #6
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
    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
            ])
Пример #8
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
Пример #9
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
Пример #10
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
Пример #11
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
Пример #12
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
Пример #13
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
Пример #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 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
Пример #16
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
            ])
Пример #17
0
    def toProtocolTreeNode(self):
        node = super(CreateGroupsNotificationProtocolEntity, self).toProtocolTreeNode()
        createNode = ProtocolTreeNode("create", {"type": self.getCreatetype()})
        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)
        createNode.addChild(groupNode)
        node.addChild(createNode)

        return node
Пример #18
0
class ChatstateProtocolEntityTest(ProtocolEntityTest):
    def setUp(self):
        self.ProtocolEntity = ChatstateProtocolEntity
        self.node = ProtocolTreeNode("chatstate")
        self.node.addChild(ProtocolTreeNode('composing'))
Пример #19
0
class ChatstateProtocolEntityTest(ProtocolEntityTest):
    def setUp(self):
        self.ProtocolEntity = ChatstateProtocolEntity
        self.node = ProtocolTreeNode("chatstate")
        self.node.addChild(ProtocolTreeNode('composing'))