#!/bin/bash

# For the license, see the LICENSE file in the root directory.
#set -x

ROOT=${abs_top_builddir:-$(pwd)/..}
TESTDIR=${abs_top_testdir:-$(dirname "$0")}

VTPM_NAME="vtpm-test-init"
SWTPM_DEV_NAME="/dev/${VTPM_NAME}"
TPM_PATH="$(mktemp -d)" || exit 1
STATE_FILE=$TPM_PATH/tpm-00.permall
VOLATILE_STATE_FILE=$TPM_PATH/tpm-00.volatilestate
PID_FILE=$TPM_PATH/swtpm.pid
SWTPM_CMD_UNIX_PATH=${TPM_PATH}/unix-cmd.sock
SWTPM_CTRL_UNIX_PATH=${TPM_PATH}/unix-ctrl.sock
SWTPM_INTERFACE=${SWTPM_INTERFACE:-cuse}

function cleanup()
{
	pid=${SWTPM_PID}
	if [ -n "$pid" ]; then
		kill_quiet -9 "$pid"
	fi
	rm -rf "$TPM_PATH"
}

trap "cleanup" EXIT

[ "${SWTPM_INTERFACE}" == cuse ] && source "${TESTDIR}/test_cuse"
source "${TESTDIR}/common"

rm -f "$STATE_FILE" "$VOLATILE_STATE_FILE" 2>/dev/null

if has_seccomp_support "${SWTPM_EXE}"; then
	SWTPM_TEST_SECCOMP_OPT="--seccomp action=none"
fi

run_swtpm "${SWTPM_INTERFACE}" \
	--tpmstate "dir=$TPM_PATH" \
	--pid "file=$PID_FILE"

display_processes_by_name "$SWTPM"

kill_quiet -0 "${SWTPM_PID}"
if [ $? -ne 0 ]; then
	echo "Error: ${SWTPM_INTERFACE} TPM did not start."
	exit 1
fi

if wait_for_file "${PID_FILE}" 4; then
	echo "Error: ${SWTPM_INTERFACE} TPM did not write pidfile."
	exit 1
fi

PIDF="$(cat "$PID_FILE")"
if [ "$PIDF" != "${SWTPM_PID}" ]; then
	echo "Error: ${SWTPM_INTERFACE} TPM wrote pid $PIDF, but found ${SWTPM_PID}."
	exit 1
fi

# Init the TPM
run_swtpm_ioctl "${SWTPM_INTERFACE}" -i
if [ $? -ne 0 ]; then
	echo "Error: Could not initialize the ${SWTPM_INTERFACE} TPM."
	exit 1
fi

sleep 0.5

kill_quiet -0 "${SWTPM_PID}" 2>/dev/null
if [ $? -ne 0 ]; then
	echo "Error: ${SWTPM_INTERFACE} TPM not running anymore after INIT."
	exit 1
fi

# Init the TPM again but make its state file inaccessible; this only
# works if the TPM runs as non-root
if [ "$(id -u)" != "0" ]; then
	chmod 000 "${STATE_FILE}"
	run_swtpm_ioctl "${SWTPM_INTERFACE}" -i
	if [ $? -eq 0 ]; then
		echo "Error: Unexpected initialization success of the ${SWTPM_INTERFACE} TPM."
		exit 1
	fi

	sleep 0.5

	kill_quiet -0 "${SWTPM_PID}" 2>/dev/null
	if [ $? -ne 0 ]; then
		echo "Error: ${SWTPM_INTERFACE} TPM not running anymore after failed INIT."
		exit 1
	fi
	chmod 644 "${STATE_FILE}"

	# Init the TPM again; now with state file accessible again
	run_swtpm_ioctl "${SWTPM_INTERFACE}" -i
	if [ $? -ne 0 ]; then
		echo "Error: Could not initialize the ${SWTPM_INTERFACE} TPM."
		exit 1
	fi

	sleep 0.5

	kill_quiet -0 "${SWTPM_PID}" 2>/dev/null
	if [ $? -ne 0 ]; then
		echo "Error: ${SWTPM_INTERFACE} TPM not running anymore after INIT."
		exit 1
	fi
fi

check_seccomp_profile "${SWTPM_EXE}" ${SWTPM_PID} 0
if [ $? -ne 0 ]; then
	exit 1
fi

# Shut down
run_swtpm_ioctl "${SWTPM_INTERFACE}" -s
if [ $? -ne 0 ]; then
	echo "Error: Could not shut down the ${SWTPM_INTERFACE} TPM."
	exit 1
fi

if wait_process_gone ${SWTPM_PID} 4; then
	echo "Error: ${SWTPM_INTERFACE} TPM should not be running anymore."
	exit 1
fi

if [ ! -e "$STATE_FILE" ]; then
	echo "Error: TPM state file $STATE_FILE does not exist."
	exit 1
fi

echo "OK"

exit 0
