summaryrefslogtreecommitdiff
path: root/tests/futility/test_show_contents.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/futility/test_show_contents.sh')
-rwxr-xr-xtests/futility/test_show_contents.sh106
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/futility/test_show_contents.sh b/tests/futility/test_show_contents.sh
new file mode 100755
index 00000000..f24c434d
--- /dev/null
+++ b/tests/futility/test_show_contents.sh
@@ -0,0 +1,106 @@
+#!/bin/bash -eux
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+me=${0##*/}
+TMP="$me.tmp"
+
+# Work in scratch directory
+cd "$OUTDIR"
+
+# Test 'futility show' against expected output
+SHOW_FILES="
+ tests/devkeys/root_key.vbpubk
+ tests/devkeys/root_key.vbprivk
+ tests/devkeys/kernel.keyblock
+ tests/futility/data/fw_vblock.bin
+ tests/futility/data/fw_gbb.bin
+ tests/futility/data/bios_zgb_mp.bin
+ tests/futility/data/bios_mario_mp.bin
+ tests/futility/data/kern_preamble.bin
+ tests/futility/data/sample.vbpubk2
+ tests/futility/data/sample.vbprik2
+ tests/testkeys/key_rsa2048.pem
+ tests/testkeys/key_rsa8192.pub.pem
+"
+
+for file in $SHOW_FILES; do
+ outfile="show.${file//\//_}"
+ gotfile="${OUTDIR}/${outfile}"
+ wantfile="${SRCDIR}/tests/futility/expect_output/${outfile}"
+ ${FUTILITY} show "${SRCDIR}/${file}" | tee "${gotfile}"
+
+ # Uncomment this to update the expected output
+ #cp ${gotfile} ${wantfile}
+
+ diff ${wantfile} ${gotfile}
+done
+
+
+# Test 'futility vbutil_key' against expected output
+VBUTIL_KEY_FILES="
+ tests/devkeys/root_key.vbpubk
+ tests/devkeys/root_key.vbprivk
+"
+
+for file in $VBUTIL_KEY_FILES; do
+ outfile="vbutil_key.${file//\//_}"
+ gotfile="${OUTDIR}/${outfile}"
+ wantfile="${SRCDIR}/tests/futility/expect_output/${outfile}"
+ ${FUTILITY} vbutil_key --unpack "${SRCDIR}/${file}" | tee "${gotfile}"
+
+ # Uncomment this to update the expected output
+ #cp ${gotfile} ${wantfile}
+
+ diff ${wantfile} ${gotfile}
+done
+
+
+# Test 'futility vbutil_keyblock' against expected output
+file="tests/devkeys/kernel.keyblock"
+outfile="vbutil_keyblock.${file//\//_}"
+gotfile="${OUTDIR}/${outfile}"
+wantfile="${SRCDIR}/tests/futility/expect_output/${outfile}"
+${FUTILITY} vbutil_keyblock --unpack "${SRCDIR}/${file}" \
+ --signpubkey "${SRCDIR}/tests/devkeys/kernel_subkey.vbpubk" \
+ | tee "${gotfile}"
+
+# Uncomment this to update the expected output
+#cp ${gotfile} ${wantfile}
+
+diff ${wantfile} ${gotfile}
+
+
+# Test 'futility vbutil_firmware' against expected output
+KEYDIR=${SRCDIR}/tests/devkeys
+outfile="vbutil_firmware.verify"
+gotfile="${OUTDIR}/${outfile}"
+wantfile="${SRCDIR}/tests/futility/expect_output/${outfile}"
+
+# Create a firmware blob and vblock. Version and flags are just
+# arbitrary non-zero numbers so we can verify they're printed
+# properly.
+dd bs=1024 count=16 if=/dev/urandom of=${TMP}.fw_main
+${FUTILITY} vbutil_firmware --vblock ${TMP}.vblock.old \
+ --keyblock ${KEYDIR}/firmware.keyblock \
+ --signprivate ${KEYDIR}/firmware_data_key.vbprivk \
+ --version 12 \
+ --fv ${TMP}.fw_main \
+ --kernelkey ${KEYDIR}/kernel_subkey.vbpubk \
+ --flags 42
+
+# Verify
+${FUTILITY} vbutil_firmware --verify ${TMP}.vblock.old \
+ --signpubkey ${KEYDIR}/root_key.vbpubk \
+ --fv ${TMP}.fw_main | tee "${gotfile}"
+
+# Uncomment this to update the expected output
+#cp ${gotfile} ${wantfile}
+
+diff ${wantfile} ${gotfile}
+
+
+# cleanup
+rm -rf ${TMP}*
+exit 0