#!/usr/bin/env python

# Encrypt a file and produce shares of a distributed secret key

import splinterglyph.splinterglyph_tools as splinterglyph
import argparse

if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="Encrypt file and produce multiple crypto key shares",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
    )
    parser.add_argument("plain", help="Path to (input) plaintext file.")
    parser.add_argument(
        "crypt",
        help="Path to (output) encrypted file; default is <inpath>.splinterglyph",
        nargs="?",
    )
    parser.add_argument("--N", default=5, help="Number of distributed key shares.")
    parser.add_argument(
        "--M", default=2, help="Minimum required key shares for recovery."
    )
    parser.add_argument(
        "--key_bit_length",
        default=128,
        type=int,
        help="Length of AES key in bits (e.g., 128 or 256)",
    )
    args = parser.parse_args()

    splinterglyph.encrypt(
        plain_path=args.plain,
        crypt_path=args.crypt,
        distributed_shares=args.N,
        required_shares=args.M,
        key_bit_length=args.key_bit_length,
    )
