def certs_from_pem_file(pem_file, skip_invalid_blobs=False, strict_der=True): """Read multiple PEM-encoded certificates from a file. Args: pem_file: the certificate file. skip_invalid_blobs: if False, invalid PEM blobs cause a PemError. If True, invalid blobs are skipped. In non-skip mode, an immediate StopIteration before any valid blocks are found also causes a PemError exception. strict_der: if False, tolerate some non-fatal DER errors. Yields: Certificate objects. Raises: ct.crypto.pem.PemError, ct.crypto.error.ASN1Error: a block was invalid IOError: the file could not be read. """ for der_cert, _ in pem.pem_blocks_from_file( pem_file, Certificate.PEM_MARKERS, skip_invalid_blobs=skip_invalid_blobs): try: yield Certificate.from_der(der_cert, strict_der=strict_der) except error.ASN1Error: if not skip_invalid_blobs: raise
def test_pem_blocks_from_file(self): name = self.create_temp_file(self.PEM_BLOB) gen = pem.pem_blocks_from_file(name, (self.MARKER,)) self.assertEqual((self.BLOB, self.MARKER), gen.next()) self.assertRaises(StopIteration, gen.next)
def test_pem_blocks_from_file(self): name = self.create_temp_file(self.PEM_BLOB) gen = pem.pem_blocks_from_file(name, (self.MARKER, )) self.assertEqual((self.BLOB, self.MARKER), gen.next()) self.assertRaises(StopIteration, gen.next)