def process_modules(self): # TODO: Compression dg = Datagram() dg.addUint32(len(self.modules)) for moduleName in self.modules: data, size = self.modules[moduleName] dg.addString(moduleName) dg.addInt32(size) dg.appendData(data) data = dg.getMessage() iv = self.generate_key(16) key = self.generate_key(16) fixed_key = ''.join( chr((i ^ (7 * i + 16)) % ((i + 5) * 3)) for i in xrange(16)) fixed_iv = ''.join( chr((i ^ (2 * i + 53)) % ((i + 9) * 6)) for i in xrange(16)) securekeyandiv = aes.encrypt(iv + key, fixed_key, fixed_iv) return securekeyandiv + aes.encrypt(data, key, iv)