| #!/usr/bin/env bash |
| |
| # For the license, see the LICENSE file in the root directory. |
| |
| ROOT=${abs_top_builddir:-$(dirname "$0")/..} |
| TESTDIR=${abs_top_testdir:-$(dirname "$0")} |
| |
| TPMDIR="$(mktemp -d)" || exit 1 |
| SWTPM_CTRL_UNIX_PATH=$TPMDIR/sock |
| PID_FILE=$TPMDIR/swtpm.pid |
| LOG_FILE=$TPMDIR/swtpm.log |
| |
| source ${TESTDIR}/test_common |
| |
| trap "cleanup" SIGTERM EXIT |
| |
| function cleanup() |
| { |
| rm -rf $TPMDIR |
| if [ -n "$PID" ]; then |
| kill_quiet -SIGTERM $PID 2>/dev/null |
| fi |
| } |
| |
| source ${TESTDIR}/common |
| skip_test_no_tpm12 "${SWTPM_EXE}" |
| |
| if ! [[ "$(uname -s)" =~ Linux ]]; then |
| echo "Need Linux to run UnixIO test for CMD_SET_DATAFD." |
| exit 77 |
| fi |
| |
| # Test CMD_SET_DATAFD |
| cp ${TESTDIR}/data/tpmstate1/* ${TPMDIR} |
| $SWTPM_EXE socket \ |
| --flags not-need-init \ |
| --ctrl type=unixio,path=$SWTPM_CTRL_UNIX_PATH \ |
| --tpmstate dir=$TPMDIR \ |
| -t \ |
| --pid file=$PID_FILE \ |
| --log file=$LOG_FILE,level=20 \ |
| ${SWTPM_TEST_SECCOMP_OPT} & |
| PID=$! |
| |
| if wait_for_file $PID_FILE 3; then |
| echo "Error: Socket TPM did not write pidfile." |
| exit 1 |
| fi |
| |
| LOG=$(SOCK_PATH=$SWTPM_CTRL_UNIX_PATH exec $TESTDIR/test_setdatafd.py) |
| res=$? |
| |
| if [ $res -ne 0 ]; then |
| echo "Error: CMD_SET_DATAFD failed: $LOG" |
| exit 1 |
| fi |
| |
| echo "OK" |
| |
| exit 0 |