diff options
Diffstat (limited to 'tests/futility/test_show_contents.sh')
-rwxr-xr-x | tests/futility/test_show_contents.sh | 106 |
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 |