]> git.proxmox.com Git - swtpm.git/blame - tests/_test_tpm2_locality
packaging: track dbgsym package for swtpm-libs and swtpm-tools
[swtpm.git] / tests / _test_tpm2_locality
CommitLineData
3008874c
SB
1#!/bin/bash
2
3# For the license, see the LICENSE file in the root directory.
4#set -x
5
313cf75c
SB
6ROOT=${abs_top_builddir:-$(pwd)/..}
7TESTDIR=${abs_top_testdir:-$(dirname "$0")}
8
3008874c
SB
9VTPM_NAME="vtpm-test-tpm2-locality"
10SWTPM_DEV_NAME="/dev/${VTPM_NAME}"
cce7503c 11export TPM_PATH="$(mktemp -d)" || exit 1
3008874c
SB
12STATE_FILE=$TPM_PATH/tpm2-00.permall
13VOLATILE_STATE_FILE=$TPM_PATH/tpm2-00.volatilestate
14SWTPM_INTERFACE=${SWTPM_INTERFACE:-cuse}
15SWTPM_CMD_UNIX_PATH=${TPM_PATH}/unix-cmd.sock
16SWTPM_CTRL_UNIX_PATH=${TPM_PATH}/unix-ctrl.sock
17
18function cleanup()
19{
20 pid=${SWTPM_PID}
21 if [ -n "$pid" ]; then
47c7ea77 22 kill_quiet -9 $pid
3008874c
SB
23 fi
24 rm -rf $TPM_PATH
25}
26
27trap "cleanup" EXIT
28
313cf75c
SB
29[ "${SWTPM_INTERFACE}" == "cuse" ] && source ${TESTDIR}/test_cuse
30source ${TESTDIR}/common
3008874c
SB
31
32rm -f $STATE_FILE $VOLATILE_STATE_FILE 2>/dev/null
33
34run_swtpm ${SWTPM_INTERFACE} --tpm2
35
100317d5 36display_processes_by_name "$SWTPM"
3008874c 37
47c7ea77 38kill_quiet -0 ${SWTPM_PID}
3008874c
SB
39if [ $? -ne 0 ]; then
40 echo "Error: ${SWTPM_INTERFACE} TPM did not start."
41 exit 1
42fi
43
44# Init the TPM
45run_swtpm_ioctl ${SWTPM_INTERFACE} -i
46if [ $? -ne 0 ]; then
47 echo "Error: Could not initialize the ${SWTPM_INTERFACE} TPM."
48 exit 1
49fi
50
47c7ea77 51kill_quiet -0 ${SWTPM_PID} 2>/dev/null
3008874c
SB
52if [ $? -ne 0 ]; then
53 echo "Error: ${SWTPM_INTERFACE} TPM not running anymore after INIT."
54 exit 1
55fi
56
57# Set locality 4 on the TPM
58run_swtpm_ioctl ${SWTPM_INTERFACE} -l 4
59if [ $? -ne 0 ]; then
60 echo "Error: ${SWTPM_INTERFACE} TPM did not accept locality 4."
61 exit 1
62fi
63
64# Set illegal locality 5 on the TPM
65run_swtpm_ioctl ${SWTPM_INTERFACE} -l 5
66if [ $? -eq 0 ]; then
67 echo "Error: ${SWTPM_INTERFACE} TPM accepted locality 5."
68 exit 1
69fi
70
71# Set locality 0 on the TPM
72run_swtpm_ioctl ${SWTPM_INTERFACE} -l 0
73if [ $? -ne 0 ]; then
74 echo "Error: ${SWTPM_INTERFACE} TPM did not accept locality 0."
75 exit 1
76fi
77
78# In locality 2 we can reset PCR 20
79run_swtpm_ioctl ${SWTPM_INTERFACE} -l 2
80if [ $? -ne 0 ]; then
81 echo "Error: ${SWTPM_INTERFACE} TPM did not accept locality 2."
82 exit 1
83fi
84
85# Need to set locality 0 or 3 for TPM2_Startup to work...
86# TPM_Startup for TPM 1.2 worked in all localities
87run_swtpm_ioctl ${SWTPM_INTERFACE} -l 3
88if [ $? -ne 0 ]; then
89 echo "Error: ${SWTPM_INTERFACE} TPM did not accept locality 3."
90 exit 1
91fi
92
93# Startup the TPM
3008874c
SB
94RES=$(swtpm_cmd_tx ${SWTPM_INTERFACE} '\x80\x01\x00\x00\x00\x0c\x00\x00\x01\x44\x00\x00')
95exp=' 80 01 00 00 00 0a 00 00 00 00'
96if [ "$RES" != "$exp" ]; then
97 echo "Error: Did not get expected result from TPM2_Startup(SU_Clear)"
98 echo "expected: $exp"
99 echo "received: $RES"
100 exit 1
101fi
102
103# In locality 2 we can reset PCR 20
104run_swtpm_ioctl ${SWTPM_INTERFACE} -l 2
105if [ $? -ne 0 ]; then
106 echo "Error: ${SWTPM_INTERFACE} TPM did not accept locality 2."
107 exit 1
108fi
109
110# Reset PCR 20
3008874c
SB
111RES=$(swtpm_cmd_tx ${SWTPM_INTERFACE} '\x80\x02\x00\x00\x00\x1b\x00\x00\x01\x3d\x00\x00\x00\x14\x00\x00\x00\x09\x40\x00\x00\x09\x00\x00\x00\x00\x00')
112exp=' 80 02 00 00 00 13 00 00 00 00 00 00 00 00 00 00 01 00 00'
113if [ "$RES" != "$exp" ]; then
114 echo "Error: Could not reset PCR 20 in locality 2"
115 echo "expected: $exp"
116 echo "received: $RES"
117 exit 1
118fi
119
120# In locality 1 we can NOT reset PCR 20
121run_swtpm_ioctl ${SWTPM_INTERFACE} -l 1
122if [ $? -ne 0 ]; then
123 echo "Error: ${SWTPM_INTERFACE} TPM did not accept locality 1."
124 exit 1
125fi
126
127# Reset PCR 20
3008874c
SB
128RES=$(swtpm_cmd_tx ${SWTPM_INTERFACE} '\x80\x02\x00\x00\x00\x1b\x00\x00\x01\x3d\x00\x00\x00\x14\x00\x00\x00\x09\x40\x00\x00\x09\x00\x00\x00\x00\x00')
129exp=' 80 01 00 00 00 0a 00 00 09 07'
130if [ "$RES" != "$exp" ]; then
131 echo "Error: Could reset PCR 20 in locality 1"
132 echo "expected: $exp"
133 echo "received: $RES"
134 exit 1
135fi
136
137# Shut down TPM
138run_swtpm_ioctl ${SWTPM_INTERFACE} -s
139if [ $? -ne 0 ]; then
140 echo "Error: Could not shut down the ${SWTPM_INTERFACE} TPM."
141 exit 1
142fi
143
45d2d092 144if wait_process_gone ${SWTPM_PID} 4; then
3008874c
SB
145 echo "Error: ${SWTPM_INTERFACE} TPM should not be running anymore."
146 exit 1
147fi
148
149if [ ! -e $STATE_FILE ]; then
150 echo "Error: TPM state file $STATE_FILE does not exist."
151 exit 1
152fi
153
154echo "OK"
155
156exit 0