| #!/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 "$@" |