diff --git a/tests/tpm2dtests/Makefile.am b/tests/tpm2dtests/Makefile.am index 36be90efd..ced4a1f49 100644 --- a/tests/tpm2dtests/Makefile.am +++ b/tests/tpm2dtests/Makefile.am @@ -61,7 +61,7 @@ xcheck: tpm_server_found tpm_server_found: @if [ -z "$(TPMSERVER)" -a -z "$(SWTPM)" -a -z "$(FORCE)" ]; then echo "ERROR: No Software TPM has been found, cannot run TPM tests. Set FORCE=1 to force using the physical TPM"; exit 1; fi -EXTRA_DIST = defs.scm shell.scm all-tests.scm +EXTRA_DIST = defs.scm shell.scm all-tests.scm start_sw_tpm.sh CLEANFILES = gpg.conf gpg-agent.conf S.gpg-agent \ pubring.gpg pubring.gpg~ pubring.kbx pubring.kbx~ \ diff --git a/tests/tpm2dtests/start_sw_tpm.sh b/tests/tpm2dtests/start_sw_tpm.sh new file mode 100755 index 000000000..36e1a806e --- /dev/null +++ b/tests/tpm2dtests/start_sw_tpm.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# remove any prior TPM contents +rm -f NVChip h*.bin *.permall +if [ -x "${SWTPM}" ]; then + ${SWTPM} socket --tpm2 --server type=tcp,port=2321 \ + --ctrl type=tcp,port=2322 --tpmstate dir=`pwd` & +else + ${TPMSERVER} > /dev/null 2>&1 & +fi +pid=$! +## +# This powers on the tpm and starts it +# then we derive the RSA version of the storage seed and +# store it permanently at handle 81000001 and flush the transient +## +a=0; while [ $a -lt 10 ]; do + if [ -x "${SWTPM_IOCTL}" ]; then + ${SWTPM_IOCTL} --tcp 127.0.0.1:2322 -i > /dev/null 2>&1 + else + tsspowerup > /dev/null 2>&1 + fi + if [ $? -eq 0 ]; then + break; + fi + sleep 1 + a=$[$a+1] +done +if [ $a -eq 10 ]; then + echo "Waited 10s for tpm_server to come up; exiting" + exit 1 +fi + +tssstartup || exit 1 +echo -n $pid