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(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 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
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
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 ])
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
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
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
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
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
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
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 ])
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
class ChatstateProtocolEntityTest(ProtocolEntityTest): def setUp(self): self.ProtocolEntity = ChatstateProtocolEntity self.node = ProtocolTreeNode("chatstate") self.node.addChild(ProtocolTreeNode('composing'))