#!/usr/bin/env python2.7

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

import argparse

import ck.ssl_library

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

parser.add_argument('-n', '--name',
                    default='normal', 
                    help='Name used for the filenames')

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

parser.add_argument('-a', '--allow_auth',
                    action='store_true',
                    help='Whether to allow this certificate to be used for '\
                         'authentication.')

parser.add_argument('-o', '--output-path',
                    default='', 
                    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()

common_name = args.common_name if args.common_name else args.name + '.local'

name = {
    'C': 'US',
    'ST': 'Florida',
    'O': 'Some Entity',
    'CN': common_name }

r = ck.ssl_library.create_csr(allow_auth=args.allow_auth, **name)
(private_key_pem, public_key_pem, csr_pem) = r

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

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

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