import sys
import asyncio
from pyhanko.sign.validation import validate_pdf_signature
from pyhanko.pdf_utils.reader import PdfFileReader

async def check_cades_signature(pdf_path):
    with open(pdf_path, 'rb') as doc:
        reader = PdfFileReader(doc)

        sig_status = None
        for sig in reader.embedded_signatures:
            print(f"Validating signature: {sig.field_name}")
            sig_status = await validate_pdf_signature(reader, sig)

            if sig_status.trusted:
                print("Signature is trusted.")
            else:
                print("Signature is not trusted.")

            for ts in sig_status.timestamp_validations:
                if ts.trusted:
                    print("Timestamp is trusted.")
                else:
                    print("Timestamp is not trusted.")

            print("Signature validation details:")
            print(sig_status.pretty_print_details())

        if not sig_status:
            print("No signatures found in the PDF.")

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python check_cades_signature.py <path_to_pdf>")
    else:
        pdf_path = sys.argv[1]
        asyncio.run(check_cades_signature(pdf_path))
