2022-01-25 15:54:54 +00:00
|
|
|
#!/bin/bash
|
|
|
|
#########################################################################################
|
|
|
|
# Setup for PC Client Reference Integrity Manifest (RIM) tests
|
2022-02-17 19:50:10 +00:00
|
|
|
# usage rim_setup.sh <profile> <test> <option>
|
|
|
|
# use "clear" option to clear existing TPM PCR values
|
2022-01-25 15:54:54 +00:00
|
|
|
#########################################################################################
|
|
|
|
|
|
|
|
profile=$1
|
|
|
|
test=$2
|
2022-02-17 17:02:49 +00:00
|
|
|
options=$3
|
2022-01-25 15:54:54 +00:00
|
|
|
tcgDir="/boot/tcg"
|
2022-01-26 15:24:29 +00:00
|
|
|
propFile="/etc/hirs/tcg_boot.properties";
|
2022-02-03 20:30:10 +00:00
|
|
|
profileDir="/HIRS/.ci/system-tests/profiles/$profile"
|
2022-02-03 21:58:11 +00:00
|
|
|
defaultDir="$profileDir/default"
|
2022-02-03 20:30:10 +00:00
|
|
|
testDir="/HIRS/.ci/system-tests/profiles/$profile/$test"
|
2022-01-26 15:24:29 +00:00
|
|
|
eventLog="$testDir"/"$profile"_"$test"_binary_bios_measurements
|
2022-02-03 20:30:10 +00:00
|
|
|
swidDir="$testDir/swidtags"
|
|
|
|
rimDir="$testDir/rims"
|
|
|
|
pcrScript="$testDir/"$profile"_"$test"_setpcrs.sh"
|
|
|
|
|
2022-02-17 19:50:10 +00:00
|
|
|
source /HIRS/.ci/setup/container/tpm2_common.sh
|
2022-02-04 22:02:50 +00:00
|
|
|
|
2022-02-03 20:30:10 +00:00
|
|
|
echo "Test is using RIM files from $profile : $test"
|
2022-01-25 15:54:54 +00:00
|
|
|
|
2022-02-03 20:30:10 +00:00
|
|
|
# Make sure TCG defined RIM folders exist and are cleared out
|
2022-01-25 15:54:54 +00:00
|
|
|
mkdir -p $tcgDir/manifest/rim/; # Create the platform cert folder if its not there
|
2022-02-03 20:30:10 +00:00
|
|
|
rm -f $tcgDir/manifest/rim/*; # clear out any previous data
|
2022-01-25 15:54:54 +00:00
|
|
|
|
|
|
|
mkdir -p $tcgDir/manifest/swidtag/; # Create the platform cert folder if its not there
|
|
|
|
rm -f $tcgDir/manifest/swidtag/*; # clear out any previous data
|
|
|
|
|
2022-02-03 20:30:10 +00:00
|
|
|
# Step 1: Update the tcg_boot.properties to use test specific binary_bios_measurement file
|
|
|
|
# a: if file does not exist in the test folder then use the default measurement file
|
|
|
|
# b: change the property file to point to the the test file
|
2022-01-25 15:54:54 +00:00
|
|
|
|
2022-02-03 20:30:10 +00:00
|
|
|
if [[ ! -f "$eventLog" ]]; then
|
|
|
|
eventLog="$defaultDir"/"$profile"_default_binary_bios_measurements
|
|
|
|
fi
|
2022-01-25 15:54:54 +00:00
|
|
|
sed -i "s:tcg.event.file=.*:tcg.event.file=$eventLog:g" "$propFile"
|
2022-02-17 19:50:10 +00:00
|
|
|
#echo "eventLog used was $eventLog"
|
2022-01-25 15:54:54 +00:00
|
|
|
|
|
|
|
# Step 2: Copy Base RIM files to the TCG folder
|
2022-02-03 20:30:10 +00:00
|
|
|
# a: See if test specific swidtag folder exists, if not use the defualt folder
|
|
|
|
if [[ ! -d $swidDir ]]; then
|
|
|
|
swidDir=$defaultDir/swidtags;
|
|
|
|
fi
|
|
|
|
pushd $swidDir > /dev/null
|
2022-01-25 15:54:54 +00:00
|
|
|
if [[ ! -f ".gitignore" ]]; then
|
|
|
|
for swidtag in * ; do
|
|
|
|
cp -f $swidtag $tcgDir/manifest/swidtag/$swidtag;
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
popd > /dev/null
|
2022-02-03 20:30:10 +00:00
|
|
|
# Step 3: Copy Support RIM files to the TCG folder in the same mannor
|
|
|
|
if [[ ! -d $rimDir ]]; then
|
|
|
|
rimDir=$defaultDir/rims;
|
|
|
|
fi
|
|
|
|
pushd $rimDir > /dev/null
|
2022-01-25 15:54:54 +00:00
|
|
|
|
|
|
|
if [[ ! -f ".gitignore" ]]; then
|
|
|
|
for rim in * ; do
|
|
|
|
cp -f $rim $tcgDir/manifest/rim/$rim;
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
popd > /dev/null
|
|
|
|
|
2022-02-17 19:50:10 +00:00
|
|
|
# echo "Contents of tcg swidtag folder $tcgDir/manifest/swidtag/ : $(ls $tcgDir/manifest/swidtag/)"
|
|
|
|
# echo "Contents of tcg rim folder tcgDir/manifest/rim/: $(ls $tcgDir/manifest/rim/)"
|
2022-01-25 15:54:54 +00:00
|
|
|
|
|
|
|
#Step 4, run the setpcr script to make the TPM emulator hold values that correspond the binary_bios_measurement file
|
2022-02-03 23:52:12 +00:00
|
|
|
# a: Clear the TPM PCR registers vi a call to the tss clear
|
|
|
|
# b: Check if a test specific setpcr.sh file exists. If not use the profiles default script
|
2022-02-04 22:02:50 +00:00
|
|
|
|
2022-02-17 17:02:49 +00:00
|
|
|
if [[ $options == "clear" ]]; then
|
|
|
|
resetTpm2Emulator
|
|
|
|
fi
|
2022-02-03 23:52:12 +00:00
|
|
|
|
2022-02-03 20:30:10 +00:00
|
|
|
if [[ ! -f $pcrScript ]]; then
|
2022-02-03 21:58:11 +00:00
|
|
|
pcrScript="$profileDir/default/"$profile"_default_setpcrs.sh"
|
2022-02-03 20:30:10 +00:00
|
|
|
fi
|
|
|
|
sh $pcrScript;
|
2022-02-03 21:58:11 +00:00
|
|
|
echo "PCR script was $pcrScript"
|
2022-02-17 19:50:10 +00:00
|
|
|
#tpm2_pcrlist -g sha256
|
2022-01-25 15:54:54 +00:00
|
|
|
|
2022-02-03 20:30:10 +00:00
|
|
|
# Done with rim_setup
|