1097ece1648aa33ea69bbf1873bb42945e7540703mridge#! /bin/sh
2097ece1648aa33ea69bbf1873bb42945e7540703mridge#
3097ece1648aa33ea69bbf1873bb42945e7540703mridge# Copyright (c) International Business Machines  Corp., 2005
4097ece1648aa33ea69bbf1873bb42945e7540703mridge#
5097ece1648aa33ea69bbf1873bb42945e7540703mridge# This program is free software;  you can redistribute it and#or modify
6097ece1648aa33ea69bbf1873bb42945e7540703mridge# it under the terms of the GNU General Public License as published by
7097ece1648aa33ea69bbf1873bb42945e7540703mridge# the Free Software Foundation; either version 2 of the License, or
8097ece1648aa33ea69bbf1873bb42945e7540703mridge# (at your option) any later version.
9097ece1648aa33ea69bbf1873bb42945e7540703mridge#
10097ece1648aa33ea69bbf1873bb42945e7540703mridge# This program is distributed in the hope that it will be useful, but
11097ece1648aa33ea69bbf1873bb42945e7540703mridge# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12097ece1648aa33ea69bbf1873bb42945e7540703mridge# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13097ece1648aa33ea69bbf1873bb42945e7540703mridge# for more details.
14097ece1648aa33ea69bbf1873bb42945e7540703mridge#
15097ece1648aa33ea69bbf1873bb42945e7540703mridge# You should have received a copy of the GNU General Public License
16097ece1648aa33ea69bbf1873bb42945e7540703mridge# along with this program;  if not, write to the Free Software
174548c6cf9bcdd96d8303caa4130ab638b61f8a30Wanlong Gao# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18097ece1648aa33ea69bbf1873bb42945e7540703mridge#
19097ece1648aa33ea69bbf1873bb42945e7540703mridge
20097ece1648aa33ea69bbf1873bb42945e7540703mridgesetup()
21097ece1648aa33ea69bbf1873bb42945e7540703mridge{
22097ece1648aa33ea69bbf1873bb42945e7540703mridge	RC=0				# Return code from commands.
23097ece1648aa33ea69bbf1873bb42945e7540703mridge
24097ece1648aa33ea69bbf1873bb42945e7540703mridge	if [ -z "$LTPTMP" ] && [ -z "$TMPBASE" ]
25097ece1648aa33ea69bbf1873bb42945e7540703mridge	then
26097ece1648aa33ea69bbf1873bb42945e7540703mridge		LTPTMP="/tmp"
27097ece1648aa33ea69bbf1873bb42945e7540703mridge	else
28097ece1648aa33ea69bbf1873bb42945e7540703mridge		LTPTMP="$TMPBASE"
29097ece1648aa33ea69bbf1873bb42945e7540703mridge	fi
30097ece1648aa33ea69bbf1873bb42945e7540703mridge
31097ece1648aa33ea69bbf1873bb42945e7540703mridge	export TPM_TMPFILE="$LTPTMP/tst_tpm.err"
32097ece1648aa33ea69bbf1873bb42945e7540703mridge	rm -f $TPM_TMPFILE 2>&1
33097ece1648aa33ea69bbf1873bb42945e7540703mridge
34097ece1648aa33ea69bbf1873bb42945e7540703mridge	# Set the file to be protected and the related output files
35097ece1648aa33ea69bbf1873bb42945e7540703mridge	export TPM_DATAFILE="$LTPBIN/tpmtoken_protect_data.txt"
36097ece1648aa33ea69bbf1873bb42945e7540703mridge	export TPM_ENCDATA="$LTPTMP/tst_tpm_data.enc"
37097ece1648aa33ea69bbf1873bb42945e7540703mridge	rm -f $TPM_ENCDATA 2>&1
38097ece1648aa33ea69bbf1873bb42945e7540703mridge	export TPM_DECDATA="$LTPTMP/tst_tpm_data.dec"
39097ece1648aa33ea69bbf1873bb42945e7540703mridge	rm -f $TPM_DECDATA 2>&1
40097ece1648aa33ea69bbf1873bb42945e7540703mridge
41097ece1648aa33ea69bbf1873bb42945e7540703mridge	# Set known password values
42097ece1648aa33ea69bbf1873bb42945e7540703mridge	if [ -z "$P11_SO_PWD" ]
43097ece1648aa33ea69bbf1873bb42945e7540703mridge	then
44097ece1648aa33ea69bbf1873bb42945e7540703mridge		export P11_SO_PWD="P11 SO PWD"
45097ece1648aa33ea69bbf1873bb42945e7540703mridge	fi
46097ece1648aa33ea69bbf1873bb42945e7540703mridge	if [ -z "$P11_USER_PWD" ]
47097ece1648aa33ea69bbf1873bb42945e7540703mridge	then
48097ece1648aa33ea69bbf1873bb42945e7540703mridge		export P11_USER_PWD="P11 USER PWD"
49097ece1648aa33ea69bbf1873bb42945e7540703mridge	fi
50097ece1648aa33ea69bbf1873bb42945e7540703mridge
51097ece1648aa33ea69bbf1873bb42945e7540703mridge	tst_resm TINFO "INIT: Inititalizing tests."
52097ece1648aa33ea69bbf1873bb42945e7540703mridge
53097ece1648aa33ea69bbf1873bb42945e7540703mridge	which tpmtoken_protect 1>$TPM_TMPFILE 2>&1 || RC=$?
54097ece1648aa33ea69bbf1873bb42945e7540703mridge	if [ $RC -ne 0 ]
55097ece1648aa33ea69bbf1873bb42945e7540703mridge	then
56097ece1648aa33ea69bbf1873bb42945e7540703mridge		tst_brk TBROK $TPM_TMPFILE NULL \
57097ece1648aa33ea69bbf1873bb42945e7540703mridge			"Setup: tpmtoken_protect command does not exist. Reason:"
58097ece1648aa33ea69bbf1873bb42945e7540703mridge		return $RC
59097ece1648aa33ea69bbf1873bb42945e7540703mridge	fi
60097ece1648aa33ea69bbf1873bb42945e7540703mridge
61097ece1648aa33ea69bbf1873bb42945e7540703mridge	return $RC
62097ece1648aa33ea69bbf1873bb42945e7540703mridge}
63097ece1648aa33ea69bbf1873bb42945e7540703mridge
64097ece1648aa33ea69bbf1873bb42945e7540703mridgetest01()
65097ece1648aa33ea69bbf1873bb42945e7540703mridge{
66097ece1648aa33ea69bbf1873bb42945e7540703mridge	RC=0				# Return value from commands
67097ece1648aa33ea69bbf1873bb42945e7540703mridge	export TCID=tpmtoken_protect01	# Test ID
68097ece1648aa33ea69bbf1873bb42945e7540703mridge	export TST_COUNT=1		# Test number
69097ece1648aa33ea69bbf1873bb42945e7540703mridge
70097ece1648aa33ea69bbf1873bb42945e7540703mridge	tpmtoken_protect_tests_exp01.sh 1>$TPM_TMPFILE 2>&1 || RC=$?
71097ece1648aa33ea69bbf1873bb42945e7540703mridge	if [ $RC -eq 0 ]
72097ece1648aa33ea69bbf1873bb42945e7540703mridge	then
73097ece1648aa33ea69bbf1873bb42945e7540703mridge		tst_resm TPASS "'tpmtoken_protect -e -i $TPM_DATAFILE -o $TPM_ENCDATA' passed."
74097ece1648aa33ea69bbf1873bb42945e7540703mridge		RC=0
75097ece1648aa33ea69bbf1873bb42945e7540703mridge	else
76097ece1648aa33ea69bbf1873bb42945e7540703mridge		tst_res TFAIL $TPM_TMPFILE "'tpmtoken_protect -e -i $TPM_DATAFILE -o $TPM_ENCDATA' failed."
77097ece1648aa33ea69bbf1873bb42945e7540703mridge		RC=1
78097ece1648aa33ea69bbf1873bb42945e7540703mridge	fi
79097ece1648aa33ea69bbf1873bb42945e7540703mridge	return $RC
80097ece1648aa33ea69bbf1873bb42945e7540703mridge}
81097ece1648aa33ea69bbf1873bb42945e7540703mridge
82097ece1648aa33ea69bbf1873bb42945e7540703mridgetest02()
83097ece1648aa33ea69bbf1873bb42945e7540703mridge{
84097ece1648aa33ea69bbf1873bb42945e7540703mridge	RC=0				# Return value from commands
85097ece1648aa33ea69bbf1873bb42945e7540703mridge	export TCID=tpmtoken_protect02	# Test ID
86097ece1648aa33ea69bbf1873bb42945e7540703mridge	export TST_COUNT=2		# Test number
87097ece1648aa33ea69bbf1873bb42945e7540703mridge
88097ece1648aa33ea69bbf1873bb42945e7540703mridge	tpmtoken_protect_tests_exp02.sh 1>$TPM_TMPFILE 2>&1 || RC=$?
89097ece1648aa33ea69bbf1873bb42945e7540703mridge	if [ $RC -eq 0 ]
90097ece1648aa33ea69bbf1873bb42945e7540703mridge	then
91097ece1648aa33ea69bbf1873bb42945e7540703mridge		tst_resm TPASS "'tpmtoken_protect -d -i $TPM_ENCDATA -o $TPM_DECDATA' passed."
92097ece1648aa33ea69bbf1873bb42945e7540703mridge		RC=0
93097ece1648aa33ea69bbf1873bb42945e7540703mridge	else
94097ece1648aa33ea69bbf1873bb42945e7540703mridge		tst_res TFAIL $TPM_TMPFILE "'tpmtoken_protect -d -i $TPM_ENCDATA -o $TPM_DECDATA' failed."
95097ece1648aa33ea69bbf1873bb42945e7540703mridge		RC=1
96097ece1648aa33ea69bbf1873bb42945e7540703mridge	fi
97097ece1648aa33ea69bbf1873bb42945e7540703mridge	return $RC
98097ece1648aa33ea69bbf1873bb42945e7540703mridge}
99097ece1648aa33ea69bbf1873bb42945e7540703mridge
100097ece1648aa33ea69bbf1873bb42945e7540703mridgetest03()
101097ece1648aa33ea69bbf1873bb42945e7540703mridge{
102097ece1648aa33ea69bbf1873bb42945e7540703mridge	RC=0				# Return value from commands
103097ece1648aa33ea69bbf1873bb42945e7540703mridge	export TCID=tpmtoken_protect03	# Test ID
104097ece1648aa33ea69bbf1873bb42945e7540703mridge	export TST_COUNT=3		# Test number
105097ece1648aa33ea69bbf1873bb42945e7540703mridge
106097ece1648aa33ea69bbf1873bb42945e7540703mridge	diff $TPM_DATAFILE $TPM_DECDATA 1>$TPM_TMPFILE 2>&1 || RC=$?
107097ece1648aa33ea69bbf1873bb42945e7540703mridge	if [ $RC -eq 0 ]
108097ece1648aa33ea69bbf1873bb42945e7540703mridge	then
109097ece1648aa33ea69bbf1873bb42945e7540703mridge		tst_resm TPASS "'diff $TPM_DATAFILE $TPM_DECDATA' passed."
110097ece1648aa33ea69bbf1873bb42945e7540703mridge		RC=0
111097ece1648aa33ea69bbf1873bb42945e7540703mridge	else
112097ece1648aa33ea69bbf1873bb42945e7540703mridge		tst_res TFAIL $TPM_TMPFILE "'diff $TPM_DATAFILE $TPM_DECDATA' failed."
113097ece1648aa33ea69bbf1873bb42945e7540703mridge		RC=1
114097ece1648aa33ea69bbf1873bb42945e7540703mridge	fi
115097ece1648aa33ea69bbf1873bb42945e7540703mridge	return $RC
116097ece1648aa33ea69bbf1873bb42945e7540703mridge}
117097ece1648aa33ea69bbf1873bb42945e7540703mridge
118097ece1648aa33ea69bbf1873bb42945e7540703mridgecleanup()
119097ece1648aa33ea69bbf1873bb42945e7540703mridge{
120097ece1648aa33ea69bbf1873bb42945e7540703mridge	rm -f $TPM_TMPFILE 2>&1
121097ece1648aa33ea69bbf1873bb42945e7540703mridge	rm -f $TPM_ENCDATA 2>&1
122097ece1648aa33ea69bbf1873bb42945e7540703mridge	rm -f $TPM_DECDATA 2>&1
123097ece1648aa33ea69bbf1873bb42945e7540703mridge}
124097ece1648aa33ea69bbf1873bb42945e7540703mridge
125097ece1648aa33ea69bbf1873bb42945e7540703mridge# Function:	main
126097ece1648aa33ea69bbf1873bb42945e7540703mridge#
127097ece1648aa33ea69bbf1873bb42945e7540703mridge# Description:	- Execute all tests, report results.
128097ece1648aa33ea69bbf1873bb42945e7540703mridge#
129097ece1648aa33ea69bbf1873bb42945e7540703mridge# Exit:		- zero on success
130097ece1648aa33ea69bbf1873bb42945e7540703mridge# 		- non-zero on failure.
131097ece1648aa33ea69bbf1873bb42945e7540703mridge
132097ece1648aa33ea69bbf1873bb42945e7540703mridgeTFAILCNT=0			# Set TFAILCNT to 0, increment on failure.
133097ece1648aa33ea69bbf1873bb42945e7540703mridgeRC=0				# Return code from tests.
134097ece1648aa33ea69bbf1873bb42945e7540703mridge
135097ece1648aa33ea69bbf1873bb42945e7540703mridgeexport TCID=tpmtoken_protect	# Test ID
136097ece1648aa33ea69bbf1873bb42945e7540703mridgeexport TST_TOTAL=3		# Total numner of tests in this file.
137097ece1648aa33ea69bbf1873bb42945e7540703mridgeexport TST_COUNT=0		# Initialize identifier
138097ece1648aa33ea69bbf1873bb42945e7540703mridge
139097ece1648aa33ea69bbf1873bb42945e7540703mridgeif [ -n "$TPM_NOPKCS11" ]
140097ece1648aa33ea69bbf1873bb42945e7540703mridgethen
141097ece1648aa33ea69bbf1873bb42945e7540703mridge	tst_resm TINFO "'tpmtoken_protect' skipped."
142097ece1648aa33ea69bbf1873bb42945e7540703mridge	exit $TFAILCNT
143097ece1648aa33ea69bbf1873bb42945e7540703mridgefi
144097ece1648aa33ea69bbf1873bb42945e7540703mridge
145097ece1648aa33ea69bbf1873bb42945e7540703mridgesetup || exit $RC		# Exit if initializing testcases fails.
146097ece1648aa33ea69bbf1873bb42945e7540703mridge
147097ece1648aa33ea69bbf1873bb42945e7540703mridgetest01 || TFAILCNT=$(($TFAILCNT+1))
148097ece1648aa33ea69bbf1873bb42945e7540703mridgetest02 || TFAILCNT=$(($TFAILCNT+1))
149097ece1648aa33ea69bbf1873bb42945e7540703mridgetest03 || TFAILCNT=$(($TFAILCNT+1))
150097ece1648aa33ea69bbf1873bb42945e7540703mridge
151097ece1648aa33ea69bbf1873bb42945e7540703mridgecleanup
152097ece1648aa33ea69bbf1873bb42945e7540703mridge
153097ece1648aa33ea69bbf1873bb42945e7540703mridgeexit $TFAILCNT
154