]> git.proxmox.com Git - swtpm.git/blame - tests/test_tpm12
packaging: track dbgsym package for swtpm-libs and swtpm-tools
[swtpm.git] / tests / test_tpm12
CommitLineData
b752aed8
SB
1#!/usr/bin/env bash
2
3if [ ${SWTPM_TEST_EXPENSIVE:-0} -eq 0 ]; then
4 exit 77
5fi
6
7ROOT=${abs_top_builddir:-$(pwd)/..}
c4a9e78a 8TESTDIR=${abs_top_testdir:-${PWD}/$(dirname "$0")}
b752aed8
SB
9
10function cleanup() {
11 if [ -n "${SWTPM_PID}" ]; then
12 kill -9 ${SWTPM_PID}
13 fi
14 if [ -n "${SWTPM1_PID}" ]; then
15 kill -9 ${SWTPM1_PID}
16 fi
17 if [ -n ${WORKDIR} ]; then
18 rm -rf ${WORKDIR}
19 fi
c4a9e78a 20 # clean up after (interrupted) test suite
45ed7764 21 rm -f /tmp/.key-*-0 /tmp/.delegation-0 /tmp/.transdigest-*-0
b752aed8
SB
22}
23
24trap "cleanup" EXIT
25
26source ${TESTDIR}/common
f1adde9f 27skip_test_no_tpm12 "${SWTPM_EXE}"
b752aed8 28
cce7503c 29WORKDIR="$(mktemp -d)" || exit 1
b752aed8
SB
30TESTLOG=${WORKDIR}/test.log
31
32# variables used by the TPM 1.2 test suite
33TPM_SERVER_PORT=65440
3e7555c4 34TPM_SERVER_NAME=127.0.0.1
b752aed8 35SLAVE_TPM_PORT=65442
3e7555c4 36SLAVE_TPM_SERVER=127.0.0.1
b752aed8
SB
37
38SWTPM_INTERFACE=socket+socket
39
40# Start main TPM 1.2
41SWTPM_SERVER_PORT=${TPM_SERVER_PORT}
42SWTPM_SERVER_NAME=${TPM_SERVER_NAME}
43SWTPM_CTRL_PORT=65441
44
45mkdir -p ${WORKDIR}/tpm12.1
46SWTPM_SERVER_NO_DISCONNECT="1" run_swtpm ${SWTPM_INTERFACE} \
47 --tpmstate dir=${WORKDIR}/tpm12.1 \
48 --flags not-need-init
49SWTPM1_PID=${SWTPM_PID}
50
51# Start 2nd TPM 1.2
52SWTPM_SERVER_PORT=${SLAVE_TPM_PORT}
53SWTPM_SERVER_NAME=${SLAVE_TPM_SERVER}
54SWTPM_CTRL_PORT=65443
55
56mkdir -p ${WORKDIR}/tpm12.2
57SWTPM_SERVER_NO_DISCONNECT="1" run_swtpm ${SWTPM_INTERFACE} \
58 --tpmstate dir=${WORKDIR}/tpm12.2 \
59 --flags not-need-init
60
61pushd ${WORKDIR} &>/dev/null
62
ea87b5d6
SB
63for ((i = 0; i < 3; i++)); do
64 curl -sJOL https://sourceforge.net/projects/ibmswtpm/files/tpm4769tar.gz/download
65 if [ $? -eq 0 ]; then
66 break
67 fi
68 # wait 3..10 seconds for a retry
69 sleep $((3 + (RANDOM & 7)))
70done
71hash=$(get_sha1_file tpm4769tar.gz)
72if [ $hash != ca99a3ccd3e41cdd9983086a9b944023b6049bbc ]; then
73 echo "Error: Downloaded file does not have expected hash."
74 echo "Actual: $hash"
75 exit 1
76fi
b752aed8
SB
77tar -xzf tpm4769tar.gz
78
79pushd libtpm &>/dev/null
80
45ed7764 81patch -p0 < ${TESTDIR}/patches/libtpm.patch
c4a9e78a
SB
82if [ $? -ne 0 ]; then
83 echo "Error: Patching failed."
84 exit 1
85fi
b752aed8
SB
86
87./autogen
f894b45f 88LIBS="" CFLAGS="-g -O2 -DOPENSSL_SUPPRESS_DEPRECATED=1" ./configure
b752aed8
SB
89make -j$(nproc)
90
91pushd utils &>/dev/null
92
45ed7764
SB
93# variables used by TPM 1.2 tools and test suite
94export TPM_SERVER_PORT=${TPM_SERVER_PORT} \
95 TPM_SERVER_NAME=${TPM_SERVER_NAME} \
96 SLAVE_TPM_PORT=${SLAVE_TPM_PORT} \
97 SLAVE_TPM_SERVER=${SLAVE_TPM_SERVER} \
98 PATH=$PWD:$PATH
99
100if wait_for_serversocket ${TPM_SERVER_PORT} 127.0.0.1 2; then
101 echo "Error: swtpm 1 did not open port ${TPM_SERVER_PORT}"
102 exit 1
103fi
104
105if wait_for_serversocket ${SLAVE_TPM_PORT} 127.0.0.1 2; then
106 echo "Error: swtpm 2 did not open port ${SLAVE_TPM_PORT}"
107 exit 1
108fi
109
110tpmbios
111
b752aed8
SB
112ln -s makeidentity identity
113
c4a9e78a
SB
114# keep test 1 last due to ERRORs it creates since we do not
115# restart the TPM
45ed7764
SB
116for tst in 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 23 25 26 1; do
117
118 TPM_AUDITING=0
119 TPM_TRANSPORT=0
c4a9e78a 120
b752aed8 121 echo "Running test ${tst}"
45ed7764 122 if [[ "${tst}" =~ ^(1)$ ]]; then
c4a9e78a 123 $SWTPM_IOCTL --tcp :65441 -i
45ed7764
SB
124 tpmbios
125 elif [[ "${tst}" = ^25$ ]]; then
126 TPM_AUDITING=1
127 TPM_TRANSPORT=1
c4a9e78a
SB
128 fi
129
45ed7764
SB
130 timeout 40 ./test_console.sh \
131 --non-interactive ${tst} >> ${TESTLOG} </dev/null
c4a9e78a
SB
132 # Ignore all errors that occurred in test 1
133 if [ $tst != "1" ] && [ -n "$(grep "ERROR" ${TESTLOG})" ]; then
b752aed8
SB
134 echo "Error occurred!"
135 cat ${TESTLOG}
136 exit 1
137 fi
138done
139
45ed7764
SB
140$SWTPM_IOCTL --tcp :65441 -s
141wait_process_gone ${SWTPM1_PID} 4
142
143$SWTPM_IOCTL --tcp :65443 -s
144wait_process_gone ${SWTPM_PID} 4
145
b752aed8
SB
146popd &>/dev/null
147popd &>/dev/null
148
149echo "OK"
45ed7764 150
b752aed8 151exit 0