def _prepare_index(self): # Add space for file size self.index_offset += 8 # Space for num_signatures & num_additional_sections self.index_offset += 4 + 4 # Write the magic and placeholder for the index self.fileobj.write(b"MAR1" + packint(self.index_offset)) # Write placeholder for file size self.fileobj.write(struct.pack(">Q", 0)) # Write num_signatures self.fileobj.write(packint(len(self.signature_versions))) # Write placeholder signatures for algo_id, keyfile in self.signature_versions: sig = MarSignature(algo_id, keyfile) sig._offset = self.index_offset self.index_offset += sig.size self.signatures.append(sig) # algoid self.fileobj.write(packint(algo_id)) # numbytes self.fileobj.write(packint(sig.sigsize)) # space for signature self.fileobj.write("\0" * sig.sigsize) # Write placeholder for number of additional sections self.fileobj.write(packint(0))