mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-24 08:09:22 +00:00
tests: Add tpm2_key_protector_test
For the tpm2_key_protector module, the TCG2 command submission function is the only difference between a QEMU instance and grub-emu. To test TPM2 key unsealing with a QEMU instance, it requires an extra OS image to invoke grub-protect to seal the LUKS key, rather than a simple grub-shell rescue CD image. On the other hand, grub-emu can share the emulated TPM2 device with the host, so that we can seal the LUKS key on host and test key unsealing with grub-emu. This test script firstly creates a simple LUKS image to be loaded as a loopback device in grub-emu. Then an emulated TPM2 device is created by "swtpm chardev" and PCR 0 and 1 are extended. There are several test cases in the script to test various settings. Each test case uses grub-protect or tpm2-tools to seal the LUKS password with PCR 0 and PCR 1. Then grub-emu is launched to load the LUKS image, try to mount the image with tpm2_key_protector_init and cryptomount, and verify the result. Based on the idea from Michael Chang. Cc: Michael Chang <mchang@suse.com> Cc: Stefan Berger <stefanb@linux.ibm.com> Cc: Glenn Washburn <development@efficientek.com> Signed-off-by: Gary Lin <glin@suse.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com> Tested-by: Stefan Berger <stefanb@linux.ibm.com>
This commit is contained in:
1 parent
76a2bcb997
commit
f898440cc1
3 files changed
+400
-1
No files matched your search
@@ -75,6 +75,7 @@ work_directory=${WORKDIR:-`mktemp -d "${TMPDIR:-/tmp}/grub-shell.XXXXXXXXXX"`} |
|
||||
|
||||
. "${builddir}/grub-core/modinfo.sh"
|
||||
qemuopts=
|
||||
emuopts=
|
||||
serial_port=com0
|
||||
serial_null=
|
||||
halt_cmd=halt
|
||||
@@ -376,6 +377,9 @@ for option in "$@"; do
|
||||
--qemu-opts=*)
|
||||
qs=`echo "$option" | sed -e 's/--qemu-opts=//'`
|
||||
qemuopts="$qemuopts $qs" ;;
|
||||
--emu-opts=*)
|
||||
qs=`echo "$option" | sed -e 's/--emu-opts=//'`
|
||||
emuopts="$emuopts $qs" ;;
|
||||
--disk=*)
|
||||
dsk=`echo "$option" | sed -e 's/--disk=//'`
|
||||
if [ ${grub_modinfo_platform} = emu ]; then
|
||||
@@ -674,7 +678,7 @@ elif [ x$boot = xemu ]; then
|
||||
cat >"$work_directory/run.sh" <<EOF
|
||||
#! @BUILD_SHEBANG@
|
||||
SDIR=\$(realpath -e \${0%/*})
|
||||
exec "$(realpath -e "${builddir}")/grub-core/grub-emu" -m "\$SDIR/${device_map##*/}" --memdisk "\$SDIR/${roottar##*/}" -r memdisk -d "/boot/grub"
|
||||
exec "$(realpath -e "${builddir}")/grub-core/grub-emu" -m "\$SDIR/${device_map##*/}" --memdisk "\$SDIR/${roottar##*/}" -r memdisk -d "/boot/grub" ${emuopts}
|
||||
EOF
|
||||
else
|
||||
cat >"$work_directory/run.sh" <<EOF
|
||||
|
||||
Reference in new issue
Block a user