def parseBinaryBlob(self, data): currentClassKey = None for tag, data in loopTLVBlocks(data): if len(data) == 4: data = struct.unpack(">L", data)[0] if tag == "TYPE": self.type = data & 0x3FFFFFFF #ignore the flags if self.type > 3: print "FAIL: keybag type > 3 : %d" % self.type elif tag == "UUID" and self.uuid is None: self.uuid = data elif tag == "WRAP" and self.wrap is None: self.wrap = data elif tag == "UUID": if currentClassKey: self.classKeys[currentClassKey["CLAS"] & 0xF] = currentClassKey currentClassKey = {"UUID": data} elif tag in CLASSKEY_TAGS: currentClassKey[tag] = data else: self.attrs[tag] = data if currentClassKey: self.classKeys[currentClassKey["CLAS"] & 0xF] = currentClassKey