#!/bin/bash

# **make_cert.sh**

# Create a CA hierarchy (if necessary) and server certificate
#
# This mimics the CA structure that DevStack sets up when ``tls_proxy`` is enabled
# but in the current directory unless ``DATA_DIR`` is set

ENABLE_TLS=True
DATA_DIR=${DATA_DIR:-`pwd`/ca-data}

ROOT_CA_DIR=$DATA_DIR/root
INT_CA_DIR=$DATA_DIR/int

# Import common functions
source $TOP_DIR/functions

# Import TLS functions
source lib/tls

function usage {
    echo "$0 - Create CA and/or certs"
    echo ""
    echo "Usage: $0 commonName [orgUnit]"
    exit 1
}

CN=$1
if [ -z "$CN" ]; then
    usage
fi
ORG_UNIT_NAME=${2:-$ORG_UNIT_NAME}

# Useful on OS/X
if [[ `uname -s` == 'Darwin' && -d /usr/local/Cellar/openssl ]]; then
    # set up for brew-installed modern OpenSSL
    OPENSSL_CONF=/usr/local/etc/openssl/openssl.cnf
    OPENSSL=/usr/local/Cellar/openssl/*/bin/openssl
fi

DEVSTACK_CERT_NAME=$CN
DEVSTACK_HOSTNAME=$CN
DEVSTACK_CERT=$DATA_DIR/$DEVSTACK_CERT_NAME.pem

# Make sure the CA is set up
configure_CA
fix_system_ca_bundle_path
init_CA

# Create the server cert
make_cert $INT_CA_DIR $DEVSTACK_CERT_NAME $DEVSTACK_HOSTNAME

# Create a cert bundle
cat $INT_CA_DIR/private/$DEVSTACK_CERT_NAME.key \
    $INT_CA_DIR/$DEVSTACK_CERT_NAME.crt $INT_CA_DIR/cacert.pem >$DEVSTACK_CERT
