#!/usr/bin/env python2.7

import sys
import os.path
dev_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..'))
sys.path.insert(0, dev_path)

import datetime
import argparse

import ck.ssl_library

_VALIDITY_DAYS = 1000

parser = argparse.ArgumentParser(description='Generate an identity')

parser.add_argument('-c', '--common-name',
                    default='ca.local',
                    help='Name used for the filenames')

parser.add_argument('-o', '--output-path',
                    default='', 
                    help='Output path')

parser.add_argument('-p', '--passphrase',
                    default='test', 
                    help='Output path')

args = parser.parse_args()

if args.output_path != '':
    output_path = args.output_path
else:
    sys.stdout.write("Please confirm output directory []: ")
    output_path = raw_input().strip()

name_fields = {
    'C': 'US',
    'ST': 'Florida',
    'L': 'Boynton Beach',
    'CN': args.common_name }

name = ck.ssl_library.build_name_from_dict(**name_fields)
validity_td = datetime.timedelta(days=_VALIDITY_DAYS)

r = ck.ssl_library.new_selfsigned_cert(
        name, 
        args.passphrase, 
        validity_td, 
        is_ca=True)

(private_key_pem, public_key_pem, csr_pem, cert_pem) = r

with open(os.path.join(output_path, 'ca.key.pem'), 'w') as f:
    f.write(private_key_pem)

with open(os.path.join(output_path, 'ca.public.pem'), 'w') as f:
    f.write(public_key_pem)

with open(os.path.join(output_path, 'ca.csr.pem'), 'w') as f:
    f.write(csr_pem)

with open(os.path.join(output_path, 'ca.crt.pem'), 'w') as f:
    f.write(cert_pem)
