#!/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