wolfBoot/tools/scripts/x86_fsp/qemu/test_qemu.sh

74 lines
1.8 KiB
Bash
Executable File

#/bin/bash
set -e
WOLFBOOT_DIR=$(pwd)
# Parse command line options
while getopts "b" opt; do
case "$opt" in
b)
REBUILD_ONLY=true
;;
*)
echo "Usage: $0 [-b]"
echo "-b : rebuild only (skip FSP build, key gen, ecc)"
exit 1
;;
esac
done
if [ "$REBUILD_ONLY" != true ]; then
CONFIG=x86_fsp_qemu_seal.config
make distclean
cp "config/examples/${CONFIG}" .config
./tools/scripts/x86_fsp/qemu/qemu_build_fsp.sh
make keytools
make tpmtools
# generate one key for images and one for the TPM
./tools/keytools/keygen --force --ecc384 -g wolfboot_signing_private_key.der --ecc256 -g tpm_seal_key.key -keystoreDir src/
fi
# manual add ECC256 for TPM
make CFLAGS_EXTRA="-DHAVE_ECC256"
# test-app
make test-app/image.elf
# compute pcr0 value
PCR0=$(python ./tools/scripts/x86_fsp/compute_pcr.py --target qemu wolfboot_stage1.bin | tail -n 1)
echo $PCR0
./tools/tpm/policy_sign -ecc256 -key=tpm_seal_key.key -pcr=0 -pcrdigest=$PCR0
./tools/scripts/x86_fsp/tpm_install_policy.sh policy.bin.sig
IMAGE=test-app/image.elf SIGN=--ecc384 ./tools/scripts/x86_fsp/qemu/make_hd.sh
echo "RUNNING QEMU"
# launch qemu in background
./tools/scripts/x86_fsp/qemu/qemu.sh -t -p | tee /tmp/qemu_output &
echo "WAITING FOR QEMU TO RUN"
sleep 5
# close qemu
timeout 5 echo 'quit' > /tmp/qemu_mon.in
output=$(cat /tmp/qemu_output)
set +e
app=$(echo "$output" | grep -m 1 "wolfBoot QEMU x86 FSP test app")
if [ -n "$app" ]; then
echo "Found 'wolfBoot QEMU x86 FSP test app' in the output."
else
echo -e "\e[31mTEST FAILED\e[0m"
exit 255
fi
disk_unlocked=$(echo "$output" | grep -m 1 "DISK LOCK SECRET:")
if [ -n "$output" ]; then
echo -e "\e[32mTEST OK\e[0m"
exit 0
else
echo "$output"
echo -e "\e[31mTEST FAILED\e[0m"
exit 255
fi