#!/usr/bin/env bash

if [ -z "${XDG_CONFIG_HOME}" ]; then
	echo "Environment variable XDG_CONFIG_HOME is not set. Using \${HOME}/.config."
	XDG_CONFIG_HOME="${HOME}/.config"
fi

SWTPM_LOCALCA_DIR="${XDG_CONFIG_HOME}/var/lib/swtpm-localca"

SWTPM_SETUP_CONF="${XDG_CONFIG_HOME}/swtpm_setup.conf"
SWTPM_LOCALCA_CONF="${XDG_CONFIG_HOME}/swtpm-localca.conf"
SWTPM_LOCALCA_OPTIONS="${XDG_CONFIG_HOME}/swtpm-localca.options"

FLAG_OVERWRITE=1

function help() {
	cat <<_EOF_
Usage: $1 [options]

The following options are supported:
--overwrite	: Overwrite existing config files

--help|-h|-?	: Display this help screen and exit

_EOF_
}

function main() {
	local flags=0

	while [ $# -ne 0 ]; do
		case "$1" in
		--overwrite) flags=$((flags | FLAG_OVERWRITE));;
		--help|-h|-?) help $0; exit 0;;
		*) echo -e "Unknown option $1\n" >&2; help $0; exit 1;;
		esac
		shift
	done

	if [[ $((flags & FLAG_OVERWRITE)) -eq 0 ]]; then
		for f in "${SWTPM_SETUP_CONF}" \
			"${SWTPM_LOCALCA_CONF}" \
			"${SWTPM_LOCALCA_OPTIONS}"; do
			if [ -f "${f}" ]; then
				echo "File ${f} already exists. Refusing to overwrite." >&2
				exit 1
			fi
		done
	fi

	mkdir -p "${SWTPM_LOCALCA_DIR}"

	echo "Writing ${SWTPM_SETUP_CONF}."
	cat <<_EOF_ > "${SWTPM_SETUP_CONF}"
create_certs_tool = @DATAROOTDIR@/swtpm/swtpm-localca
create_certs_tool_config = ${SWTPM_LOCALCA_CONF}
create_certs_tool_options = ${SWTPM_LOCALCA_OPTIONS}
_EOF_

	echo "Writing ${SWTPM_LOCALCA_CONF}."
	cat <<_EOF_ > "${SWTPM_LOCALCA_CONF}"
statedir = ${SWTPM_LOCALCA_DIR}
signingkey = ${SWTPM_LOCALCA_DIR}/signkey.pem
issuercert = ${SWTPM_LOCALCA_DIR}/issuercert.pem
certserial = ${SWTPM_LOCALCA_DIR}/certserial
_EOF_

	echo "Writing ${SWTPM_LOCALCA_OPTIONS}."
	cat <<_EOF_ > "${SWTPM_LOCALCA_OPTIONS}"
--platform-manufacturer $(uname -s | tr " " "_")
--platform-version $(uname -r | tr " " "_")
--platform-model $(uname -s | tr " " "_")
_EOF_

	exit 0
}

main "$@"
