def verify(self, verify_key):
if not self.mardata.signatures or not self.mardata.signatures.sigs:<EOL><INDENT>return False<EOL><DEDENT>hashers = []<EOL>for sig in self.mardata.signatures.sigs:<EOL><INDENT>hashers.append((sig.algorithm_id, sig.signature, make_hasher(sig.algorithm_id)))<EOL><DEDENT>assert len(hashers) == len(self.mardata.signatures.sigs)<EOL>for block in get_signature_data(self.fileobj,<EOL>self.mardata.signatures.filesize):<EOL><INDENT>[h.update(block) for (_, _, h) in hashers]<EOL><DEDENT>for algo_id, sig, h in hashers:<EOL><INDENT>if not verify_signature(verify_key, sig, h.finalize(), h.algorithm.name):<EOL><INDENT>return False<EOL><DEDENT><DEDENT>else:<EOL><INDENT>return True<EOL><DEDENT>
Verify that this MAR file has a valid signature.

        Args:
            verify_key (str): PEM formatted public key

        Returns:
            True if the MAR file's signature matches its contents
            False otherwise; this includes cases where there is no signature.