def testGenericMsg(self): msg = base64.b64encode(proto.pack_data(b'foo')) self.assertEqual(b'foo', proto.DHKey.parsePayload(msg).gy) self.assertEqual(b'?OTR:AAIK' + msg + b'.', bytes(proto.DHKey(b'foo'))) msg = base64.b64encode(b'\x42\1\3\3\1\x08\6\4\2' + proto.pack_data(b'foo') + b'\0\0\0\0\xde\xad\xbe\xef' + proto.pack_data(b'encoded_dummy') + b'this is a dummy mac\0' + b'\0\0\0\0') pMsg = proto.DataMessage.parsePayload(msg) self.assertEqual(0x42, pMsg.flags) self.assertEqual(0x01030301, pMsg.skeyid) self.assertEqual(0x08060402, pMsg.rkeyid) self.assertEqual(b'foo', pMsg.dhy) self.assertEqual(b'\0\0\0\0\xde\xad\xbe\xef', pMsg.ctr) self.assertEqual(b'encoded_dummy', pMsg.encmsg) self.assertEqual(b'this is a dummy mac\0', pMsg.mac) self.assertEqual(b'', pMsg.oldmacs) self.assertEqual(b'?OTR:AAID' + msg + b'.', bytes(proto.DataMessage(0x42, 0x01030301, 0x08060402, b'foo', b'\0\0\0\0\xde\xad\xbe\xef', b'encoded_dummy', b'this is a dummy mac\0', b'')))
def testPackData(self): self.assertEqual(b'\0\0\0\0', proto.pack_data(b'')) self.assertEqual(b'\0\0\0\x0afoobarbazx', proto.pack_data(b'foobarbazx')) self.assertEqual(b'\0\1\0\0' + b'\xff' * 0x10000, proto.pack_data(b'\xff' * 0x10000))