def __init__(self, root, filename, compress): rel_name = os.path.relpath(filename, root) rel_name = rel_name.replace('\\', '/') size = os.stat(filename)[stat.ST_SIZE] f = open(filename, 'rb') self.filename = '/' + rel_name if compress == True: tmp_buf = f.read() max_compressed_size = dlib.dmLZ4MaxCompressedSize(size) self.resource = dlib.dmLZ4CompressBuffer(tmp_buf, size, max_compressed_size) self.compressed_size = len(self.resource) # Store uncompressed if gain is less than 5% # We believe that the shorter load time will compensate in this case. comp_ratio = sys.float_info.max if size == 0: print "Warning! Size of %s is 0" % (self.filename) else: comp_ratio = float(self.compressed_size) / float(size) if comp_ratio > 0.95: self.resource = tmp_buf self.compressed_size = 0xFFFFFFFFL else: self.resource = f.read() self.compressed_size = 0xFFFFFFFFL if os.path.splitext(filename)[-1] in ENCRYPTED_EXTS: self.flags = 1 self.resource = dlib.dmEncryptXTeaCTR(self.resource, KEY) else: self.flags = 0 self.size = size f.close()
def testCrypt(self): key = "12345678abcdefgh" s = "ABCDEFGH12345678XYZ" enc = dlib.dmEncryptXTeaCTR(s, key) self.assertEqual( "\x81\xb4\xa1\x04\x2d\xac\xe5\xcb\x77\x89\xec\x11\x61\xc3\xdc\xfa\xb9\xa3\x25", enc) dec = dlib.dmDecryptXTeaCTR(enc, key) self.assertEqual(s, dec)
def __init__(self, root, filename, compress, hashpostfix): rel_name = os.path.relpath(filename, root) rel_name = rel_name.replace('\\', '/') size = os.stat(filename)[stat.ST_SIZE] f = open(filename, 'rb') self.path = '/' + rel_name self.path_size = len(self.path) the_hash_str = ('awesome hash here' + str(hashpostfix)).ljust(HASH_MAX_LENGTH) the_hash_bytes = bytearray(the_hash_str) #b'awesomehash' self.hash = the_hash_bytes self.hash_size = len(the_hash_bytes) if compress == True: tmp_buf = f.read() max_compressed_size = dlib.dmLZ4MaxCompressedSize(size) self.resource = dlib.dmLZ4CompressBuffer(tmp_buf, size, max_compressed_size) self.compressed_size = len(self.resource) # Store uncompressed if gain is less than 5% # We believe that the shorter load time will compensate in this case. comp_ratio = sys.float_info.max if size == 0: print "Warning! Size of %s is 0" % (self.path) else: comp_ratio = float(self.compressed_size) / float(size) if comp_ratio > 0.95: self.resource = tmp_buf self.compressed_size = 0xFFFFFFFFL else: self.resource = f.read() self.compressed_size = 0xFFFFFFFFL if os.path.splitext(filename)[-1] in ENCRYPTED_EXTS: self.flags = 1 self.resource = dlib.dmEncryptXTeaCTR(self.resource, KEY) else: self.flags = 0 self.size = size f.close()