#!/usr/bin/env bash

PROGNAME="${BASH_SOURCE[0]}"
HERE="$(cd "$(dirname "$PROGNAME")" &>/dev/null && pwd)"
ROOT=$(cd $HERE/.. && pwd)

WITH_PASSPHRASE=${1:-1}
PHRASE=${2:-MySecretPassPhrase42}

mkdir -p $ROOT/bin/tls
cd $ROOT/bin/tls

[[ -f .generated && $(cat .generated) == $WITH_PASSPHRASE ]] && exit 0

# avoid "Cannot open file:crypto/rand/randfile.c:98:Filename=/github/home/.rnd" error
# (known openssl11 bug)
touch ~/.rnd

openssl genrsa -out ca.key 2048
openssl req \
    -x509 -new -nodes -sha256 \
    -key ca.key \
    -days 365 \
    -subj '/O=Redis Test/CN=Certificate Authority' \
    -out ca.crt

PASS_OUT=""
PASS_IN=""
if [[ $WITH_PASSPHRASE == 1 ]]; then
    PASS_OUT="-aes256 -passout pass:$PHRASE"
    PASS_IN="-passin pass:$PHRASE"
    echo -n $PHRASE > .passphrase
fi

openssl genrsa $PASS_OUT -out redis.key 2048
openssl req \
    -new -sha256 \
    -key redis.key \
    $PASS_IN \
    -subj '/O=Redis Test/CN=Server' | \
openssl x509 \
    -req -sha256 \
    -CA ca.crt \
    -CAkey ca.key \
    -CAserial ca.txt \
    -CAcreateserial \
    -days 365 \
    -out redis.crt 2>/dev/null

echo -n $WITH_PASSPHRASE > .generated
