blob: bf42b14728a575da3f17eb5aa0cf3e28887014b2 [file] [log] [blame]
mridge18304302005-09-12 21:37:04 +00001#!/bin/sh
2#
3# Copyright (c) International Business Machines Corp., 2005
4#
5# This program is free software; you can redistribute it and#or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 2 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13# for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, write to the Free Software
Wanlong Gao4548c6c2012-10-19 18:03:36 +080017# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
mridge18304302005-09-12 21:37:04 +000018#
19
20# test_tpm_tools.sh - Run the tpm-tools test suite.
21
22# Must be root to run the testsuite
23#if [ $UID != 0 ]
24#then
25# echo "FAILED: Must be root to execute this script"
26# exit 1
27#fi
28
29# Set the LTPROOT directory
30cd `dirname $0`
31export LTPROOT=${PWD}
32echo $LTPROOT | grep testscripts > /dev/null 2>&1
33if [ $? -eq 0 ]
34then
35 cd ..
36 export LTPROOT=${PWD}
37fi
38
39# Set the PATH to include testcase/bin
40# and the sbin directories
41export LTPBIN=$LTPROOT/testcases/bin
42export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin:$LTPBIN
43
44# We will store the logfiles in $LTPROOT/results, so make sure
45# it exists.
46if [ ! -d $LTPROOT/results ]
47then
48 mkdir $LTPROOT/results
49fi
50
51# Check for programs/daemons/groups...
52USER="`whoami`"
53RC=0
54if [ -z "$LTPTMP" ] && [ -z "$TMPBASE" ]
55then
56 LTPTMP="/tmp"
57else
58 LTPTMP="$TMPBASE"
59fi
60export TPM_TMPFILE="$LTPTMP/tst_tpm.err"
61rm -f $TPM_TMPFILE 1>/dev/null 2>&1
62
63# Check for the expect command
64rm -f $TPM_TMPFILE 1>/dev/null 2>&1
65which expect 1>$TPM_TMPFILE 2>&1
66if [ $? -ne 0 ]
67then
68 echo "The 'expect' command is not available. Be sure the expect package has been installed properly"
69 RC=1
70fi
71
72# Check for TrouSerS and that it is running
73rm -f $TPM_TMPFILE 1>/dev/null 2>&1
74which tcsd 1>$TPM_TMPFILE 2>&1
75if [ $? -ne 0 ]
76then
77 echo "The trousers TSS stack is not available. Be sure trousers has been installed properly"
78 if [ -f $TPM_TMPFILE ]
79 then
80 cat $TPM_TMPFILE
81 fi
82 RC=1
83else
84 rm -f $TPM_TMPFILE 1>/dev/null 2>&1
85 ps -ef 1>$TPM_TMPFILE
86 grep tcsd $TPM_TMPFILE 1>/dev/null
87 if [ $? -ne 0 ]
88 then
89 echo "The trousers TSS stack is not running. Be sure to start the trousers daemon (tcsd)"
90 RC=1
91 fi
92fi
93
94# Make the opencryptoki testing optional
95if [ -z "$TPM_NOPKCS11" ]
96then
97
98 # Check for the pkcs11 group and that the user is a member of it
99 grep -q ^pkcs11: /etc/group
100 if [ $? -ne 0 ]
101 then
102 echo "The 'pkcs11' group does not exist. Be sure openCryptoki has been installed properly"
103 RC=1
104 fi
105
106 groups | grep pkcs11 1>/dev/null 2>&1
107 if [ $? -ne 0 ]
108 then
109 echo "User '$USER' is not a member of the 'pkcs11' group"
110 RC=1
111 fi
112
113 # Check for openCryptoki and that it is running
114 # Additionally, delete the user's TPM token data store.
115 rm -f $TPM_TMPFILE 1>/dev/null 2>&1
116 which pkcsslotd 1>$TPM_TMPFILE 2>&1
117 if [ $? -ne 0 ]
118 then
119 echo "The openCryptoki PKCS#11 slot daemon is not available. Be sure openCryptoki has been installed properly"
120 if [ -f $TPM_TMPFILE ]
121 then
122 cat $TPM_TMPFILE
123 fi
124 RC=1
125 else
126 rm -f $TPM_TMPFILE 1>/dev/null 2>&1
127 ps -ef 1>$TPM_TMPFILE
128 grep pkcsslotd $TPM_TMPFILE 1>/dev/null
129 if [ $? -ne 0 ]
130 then
131 echo "The openCryptoki PKCS#11 slot daemon is not running. Be sure to start the openCryptoki slot daemon (pkcsslotd)"
132 RC=1
133 else
134 P11DIR=`which pkcsslotd | sed s-/sbin/pkcsslotd--`
vapierbf75d792006-12-08 22:33:59 +0000135 if [ "$P11DIR" = "/usr" ]
mridge18304302005-09-12 21:37:04 +0000136 then
137 P11DIR=""
138 fi
139
140 grep libpkcs11_tpm $P11DIR/var/lib/opencryptoki/pk_config_data 1>/dev/null
141 if [ $? -ne 0 ]
142 then
143 echo "The TPM PKCS#11 token is not active. Be sure openCryptoki has been installed properly"
144 RC=1
145 fi
146 if [ -d $P11DIR/var/lib/opencryptoki/tpm/$USER ]
147 then
148 rm -rf $P11DIR/var/lib/opencryptoki/tpm/$USER
149 fi
150 fi
151 fi
152fi
153
154if [ $RC -ne 0 ]
155then
156 exit 1
157fi
158
159# Set known password values
160export OWN_PWD="OWN PWD"
161export NEW_OWN_PWD="NEW OWN PWD"
162export SRK_PWD="SRK PWD"
163export NEW_SRK_PWD="NEW SRK PWD"
164export P11_SO_PWD="P11 SO PWD"
165export NEW_P11_SO_PWD="NEW P11 SO PWD"
166export P11_USER_PWD="P11 USER PWD"
167export NEW_P11_USER_PWD="NEW P11 USER PWD"
168
169echo "Running the tpm-tools testsuite..."
root02f8fe82010-02-19 09:42:56 -0800170$LTPROOT/bin/ltp-pan -d 5 -S -a $LTPROOT/results/tpm_tools -n ltp-tpm-tools -l $LTPROOT/results/tpm_tools.logfile -o $LTPROOT/results/tpm_tools.outfile -p -f $LTPROOT/runtest/tpm_tools
mridge18304302005-09-12 21:37:04 +0000171
172echo "Done."
173exit 0