#! /usr/bin/python3
import argparse
import sys

from hash_pack import PacketHandler


def main():
    parser = argparse.ArgumentParser(
        description="Sign or verify hash files with GPG signature",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog="""
Input file format (raw hashes):
  [32 bytes hash][\\n] - repeated N times
        """,
    )

    parser.add_argument(
        "command", choices=["sign", "verify"], help="Command to execute"
    )

    parser.add_argument("input_file", help="Input file with raw hashes")

    parser.add_argument("-p", "--passphrase", help="GPG passphrase (for signing)")

    parser.add_argument(
        "-o",
        "--output-dir",
        help="Directory for output file (default: current directory)",
        default="/etc/digsig/anon_hash/signed/",
    )

    args = parser.parse_args()

    if args.command == "sign":
        PacketHandler.sign_file_with_hashes(
            input_file=args.input_file,
            passphrase=args.passphrase,
            output_dir=args.output_dir,
        )
    elif args.command == "verify":
        with open(args.input_file, "rb") as f:
            data = f.read()
        if not PacketHandler.verify_signed_packet(data):
            sys.exit(1)


if __name__ == "__main__":
    main()
