Install and use futility when running tests

As we build features into futility, the standalone executables disappear.
Tests that invoke those executables will need to invoke futility instead.

BUG=chromium:224734
BRANCH=ToT
TEST=make runtests

Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Change-Id: I75230f6901aab8d978fa5d12505c243e1c90c938
Reviewed-on: https://chromium-review.googlesource.com/207926
Reviewed-by: Randall Spangler <rspangler@chromium.org>
This commit is contained in:
Bill Richardson
2014-07-14 15:05:54 -07:00
committed by chrome-internal-fetch
parent 0f6679e858
commit 3e3790d008
12 changed files with 47 additions and 44 deletions

View File

@@ -695,6 +695,10 @@ clean:
.PHONY: install
install: cgpt_install utils_install signing_install futil_install
.PHONY: install_for_test
install_for_test: override DESTDIR = ${TEST_INSTALL_DIR}
install_for_test: install
# Don't delete intermediate object files
.SECONDARY:
@@ -1069,7 +1073,7 @@ test_targets:: runtestscripts
endif
.PHONY: test_setup
test_setup:: cgpt utils futil tests
test_setup:: cgpt utils futil tests install_for_test
# Qemu setup for cross-compiled tests. Need to copy qemu binary into the
# sysroot.
@@ -1163,9 +1167,8 @@ run2tests: test_setup
${RUNTEST} ${BUILD_RUN}/tests/vb2_sha_tests
.PHONY: runfutiltests
runfutiltests: override DESTDIR = ${TEST_INSTALL_DIR}
runfutiltests: test_setup install
tests/futility/run_test_scripts.sh ${DESTDIR}
runfutiltests: test_setup
tests/futility/run_test_scripts.sh ${TEST_INSTALL_DIR}
${RUNTEST} ${BUILD_RUN}/tests/futility/test_not_really
# Run long tests, including all permutations of encryption keys (instead of

View File

@@ -9,7 +9,7 @@ SCRIPT_DIR=$(dirname $(readlink -f "$0"))
ROOT_DIR="$(dirname ${SCRIPT_DIR})"
BUILD_DIR="${BUILD}"
UTIL_DIR="${BUILD_DIR}/utility"
BIN_DIR="${BUILD_DIR}/install_for_test"
TEST_DIR="${BUILD_DIR}/tests"
TESTKEY_DIR=${SCRIPT_DIR}/testkeys
TESTCASE_DIR=${SCRIPT_DIR}/testcases

View File

@@ -26,19 +26,19 @@ function generate_fuzzing_images {
echo "Generating key blocks..."
# Firmware key block - RSA8192/SHA512 root key, RSA4096/SHA512 firmware
# signing key.
${UTIL_DIR}/vbutil_keyblock --pack ${TESTCASE_DIR}/firmware.keyblock \
${BIN_DIR}/vbutil_keyblock --pack ${TESTCASE_DIR}/firmware.keyblock \
--datapubkey ${TESTKEY_DIR}/key_rsa4096.sha512.vbpubk \
--signprivate ${TESTKEY_DIR}/key_rsa8192.sha1.vbprivk
# Kernel key block - RSA4096/SHA512 kernel signing subkey, RSA4096/SHA512
# kernel signing key.
${UTIL_DIR}/vbutil_keyblock --pack ${TESTCASE_DIR}/kernel.keyblock \
${BIN_DIR}/vbutil_keyblock --pack ${TESTCASE_DIR}/kernel.keyblock \
--datapubkey ${TESTKEY_DIR}/key_rsa4096.sha512.vbpubk \
--signprivate ${TESTKEY_DIR}/key_rsa4096.sha1.vbprivk \
--flags 15
echo "Generating signed firmware test image..."
${UTIL_DIR}/vbutil_firmware \
${BIN_DIR}/vbutil_firmware \
--vblock ${TESTCASE_DIR}/firmware.vblock \
--keyblock ${TESTCASE_DIR}/firmware.keyblock\
--signprivate ${TESTKEY_DIR}/key_rsa4096.sha256.vbprivk \
@@ -49,7 +49,7 @@ function generate_fuzzing_images {
cp ${TESTKEY_DIR}/key_rsa8192.sha512.vbpubk ${TESTCASE_DIR}/root_key.vbpubk
echo "Generating signed kernel test image..."
${UTIL_DIR}/vbutil_kernel \
${BIN_DIR}/vbutil_kernel \
--pack ${TESTCASE_DIR}/kernel.vblock.image \
--keyblock ${TESTCASE_DIR}/kernel.keyblock \
--signprivate ${TESTKEY_DIR}/key_rsa4096.sha256.vbprivk \

View File

@@ -23,7 +23,7 @@ function generate_test_signatures {
do
openssl dgst -${hashalgo} -binary ${TEST_FILE} > \
${TEST_FILE}.${hashalgo}.digest
${UTIL_DIR}/signature_digest_utility $algorithmcounter \
${BIN_DIR}/signature_digest_utility $algorithmcounter \
${TEST_FILE} | openssl rsautl \
-sign -pkcs -inkey ${TESTKEY_DIR}/key_rsa${keylen}.pem \
> ${TEST_FILE}.rsa${keylen}_${hashalgo}.sig

View File

@@ -30,7 +30,7 @@ function generate_keys {
-out ${key_base}.crt
# Generate pre-processed key for use by RSA signature verification code.
${UTIL_DIR}/dumpRSAPublicKey -cert ${key_base}.crt \
${BIN_DIR}/dumpRSAPublicKey -cert ${key_base}.crt \
> ${key_base}.keyb
alg_index=0
@@ -38,14 +38,14 @@ function generate_keys {
do
alg=$((${key_index} * 3 + ${alg_index}))
# wrap the public key
${UTIL_DIR}/vbutil_key \
${BIN_DIR}/vbutil_key \
--pack "${key_base}.sha${sha_type}.vbpubk" \
--key "${key_base}.keyb" \
--version 1 \
--algorithm ${alg}
# wrap the private key
${UTIL_DIR}/vbutil_key \
${BIN_DIR}/vbutil_key \
--pack "${key_base}.sha${sha_type}.vbprivk" \
--key "${key_base}.pem" \
--algorithm ${alg}

View File

@@ -15,7 +15,7 @@ function generate_vpubks {
do
for hashalgo in ${hash_algos[@]}
do
${UTIL_DIR}/vbutil_key --pack \
${BIN_DIR}/vbutil_key --pack \
--in ${TESTKEY_DIR}/key_rsa${keylen}.keyb \
--out ${TESTKEY_DIR}/key_rsa${keylen}.${hashalgo}.vbpubk \
--version 1 \

View File

@@ -41,7 +41,7 @@ for d in $algs; do
fi
: $(( tests++ ))
echo -n "${what} fw_${d}_${r}.vblock with root_${rr}.vbpubk ... "
"${UTIL_DIR}/vbutil_firmware" --verify "${V2DIR}/fw_${d}_${r}.vblock" \
"${BIN_DIR}/vbutil_firmware" --verify "${V2DIR}/fw_${d}_${r}.vblock" \
--signpubkey "${DATADIR}/root_${rr}.vbpubk" \
--fv "${DATADIR}/FWDATA" >/dev/null 2>&1
if [ "$?" "$cmp" 0 ]; then
@@ -68,7 +68,7 @@ for d in $algs; do
fi
: $(( tests++ ))
echo -n "${what} kern_${d}_${r}.vblock with root_${rr}.vbpubk ... "
"${UTIL_DIR}/vbutil_kernel" --verify "${V2DIR}/kern_${d}_${r}.vblock" \
"${BIN_DIR}/vbutil_kernel" --verify "${V2DIR}/kern_${d}_${r}.vblock" \
--signpubkey "${DATADIR}/root_${rr}.vbpubk" >/dev/null 2>&1
if [ "$?" "$cmp" 0 ]; then
echo -e "${COL_RED}FAILED${COL_STOP}"
@@ -86,7 +86,7 @@ for d in $algs; do
for r in $algs; do
: $(( tests++ ))
echo -n "verify kern_${d}_${r}.vblock with hash only ... "
"${UTIL_DIR}/vbutil_kernel" \
"${BIN_DIR}/vbutil_kernel" \
--verify "${V2DIR}/kern_${d}_${r}.vblock" >/dev/null 2>&1
if [ "$?" -ne 0 ]; then
echo -e "${COL_RED}FAILED${COL_STOP}"

View File

@@ -21,7 +21,7 @@ function test_signatures {
for hashalgo in ${hash_algos[@]}
do
echo -e "For ${COL_YELLOW}RSA-$keylen and $hashalgo${COL_STOP}:"
${UTIL_DIR}/verify_data $algorithmcounter \
${BIN_DIR}/verify_data $algorithmcounter \
${TESTKEY_DIR}/key_rsa${keylen}.keyb \
${TEST_FILE}.rsa${keylen}_${hashalgo}.sig \
${TEST_FILE}

View File

@@ -44,7 +44,7 @@ while [ "$k" -lt "${#KERN_VALS[*]}" ]; do
while [ "$b" -lt "${#BOOT_VALS[*]}" ]; do
echo -n "pack kern_${k}_${b}.vblock ... "
: $(( tests++ ))
"${UTIL_DIR}/vbutil_kernel" --pack "${TMPDIR}/kern_${k}_${b}.vblock" \
"${BIN_DIR}/vbutil_kernel" --pack "${TMPDIR}/kern_${k}_${b}.vblock" \
--keyblock "${KEYBLOCK}" \
--signprivate "${SIGNPRIVATE}" \
--version 1 \
@@ -68,7 +68,7 @@ for v in ${TMPDIR}/kern_*.vblock; do
: $(( tests++ ))
vv=$(basename "$v")
echo -n "verify $vv ... "
"${UTIL_DIR}/vbutil_kernel" --verify "$v" >/dev/null
"${BIN_DIR}/vbutil_kernel" --verify "$v" >/dev/null
if [ "$?" -ne 0 ]; then
echo -e "${COL_RED}FAILED${COL_STOP}"
: $(( errs++ ))
@@ -77,7 +77,7 @@ for v in ${TMPDIR}/kern_*.vblock; do
fi
: $(( tests++ ))
echo -n "verify $vv signed ... "
"${UTIL_DIR}/vbutil_kernel" --verify "$v" \
"${BIN_DIR}/vbutil_kernel" --verify "$v" \
--signpubkey "${SIGNPUBLIC}" >/dev/null
if [ "$?" -ne 0 ]; then
echo -e "${COL_RED}FAILED${COL_STOP}"
@@ -99,7 +99,7 @@ USB_SIGNPRIVATE="${DEVKEYS}/recovery_kernel_data_key.vbprivk"
USB_SIGNPUBKEY="${DEVKEYS}/recovery_key.vbpubk"
echo -n "pack USB kernel ... "
: $(( tests++ ))
"${UTIL_DIR}/vbutil_kernel" \
"${BIN_DIR}/vbutil_kernel" \
--pack "${USB_KERN}" \
--keyblock "${USB_KEYBLOCK}" \
--signprivate "${USB_SIGNPRIVATE}" \
@@ -118,7 +118,7 @@ fi
# And verify it.
echo -n "verify USB kernel ... "
: $(( tests++ ))
"${UTIL_DIR}/vbutil_kernel" \
"${BIN_DIR}/vbutil_kernel" \
--verify "${USB_KERN}" \
--signpubkey "${USB_SIGNPUBKEY}" >/dev/null
if [ "$?" -ne 0 ]; then
@@ -138,7 +138,7 @@ SSD_SIGNPRIVATE="${DEVKEYS}/kernel_data_key.vbprivk"
SSD_SIGNPUBKEY="${DEVKEYS}/kernel_subkey.vbpubk"
echo -n "repack to SSD kernel ... "
: $(( tests++ ))
"${UTIL_DIR}/vbutil_kernel" \
"${BIN_DIR}/vbutil_kernel" \
--repack "${SSD_KERN}" \
--vblockonly \
--keyblock "${SSD_KEYBLOCK}" \
@@ -158,7 +158,7 @@ dd if="${USB_KERN}" bs=65536 skip=1 >> $tempfile 2>/dev/null
echo -n "verify SSD kernel ... "
: $(( tests++ ))
"${UTIL_DIR}/vbutil_kernel" \
"${BIN_DIR}/vbutil_kernel" \
--verify "$tempfile" \
--signpubkey "${SSD_SIGNPUBKEY}" >/dev/null
if [ "$?" -ne 0 ]; then
@@ -170,7 +170,7 @@ fi
# Finally make sure that the kernel command line stays good.
orig=$(cat "${CONFIG}" | tr '\012' ' ')
packed=$("${UTIL_DIR}/dump_kernel_config" "${USB_KERN}")
packed=$("${BIN_DIR}/dump_kernel_config" "${USB_KERN}")
echo -n "check USB kernel config ..."
: $(( tests++ ))
if [ "$orig" != "$packed" ]; then
@@ -180,7 +180,7 @@ else
echo -e "${COL_GREEN}PASSED${COL_STOP}"
fi
repacked=$("${UTIL_DIR}/dump_kernel_config" "${tempfile}")
repacked=$("${BIN_DIR}/dump_kernel_config" "${tempfile}")
echo -n "check SSD kernel config ..."
: $(( tests++ ))
if [ "$orig" != "$packed" ]; then

View File

@@ -18,7 +18,7 @@ function test_vbutil_key_single {
echo -e "For signing key ${COL_YELLOW}RSA-$keylen/$hashalgo${COL_STOP}:"
# Pack the key
${UTIL_DIR}/vbutil_key \
${BIN_DIR}/vbutil_key \
--pack ${TESTKEY_SCRATCH_DIR}/key_alg${algonum}.vbpubk \
--key ${TESTKEY_DIR}/key_rsa${keylen}.keyb \
--version 1 \
@@ -30,7 +30,7 @@ function test_vbutil_key_single {
# Unpack the key
# TODO: should verify we get the same key back out?
${UTIL_DIR}/vbutil_key \
${BIN_DIR}/vbutil_key \
--unpack ${TESTKEY_SCRATCH_DIR}/key_alg${algonum}.vbpubk
if [ $? -ne 0 ]
then
@@ -75,7 +75,7 @@ ${datahashalgo}${COL_STOP}"
rm -f ${keyblockfile}
# Wrap private key
${UTIL_DIR}/vbutil_key \
${BIN_DIR}/vbutil_key \
--pack ${TESTKEY_SCRATCH_DIR}/key_alg${algonum}.vbprivk \
--key ${TESTKEY_DIR}/key_rsa${signing_keylen}.pem \
--algorithm $signing_algonum
@@ -86,7 +86,7 @@ ${datahashalgo}${COL_STOP}"
fi
# Wrap public key
${UTIL_DIR}/vbutil_key \
${BIN_DIR}/vbutil_key \
--pack ${TESTKEY_SCRATCH_DIR}/key_alg${algonum}.vbpubk \
--key ${TESTKEY_DIR}/key_rsa${signing_keylen}.keyb \
--algorithm $signing_algonum
@@ -97,7 +97,7 @@ ${datahashalgo}${COL_STOP}"
fi
# Pack
${UTIL_DIR}/vbutil_keyblock --pack ${keyblockfile} \
${BIN_DIR}/vbutil_keyblock --pack ${keyblockfile} \
--datapubkey \
${TESTKEY_SCRATCH_DIR}/key_alg${data_algonum}.vbpubk \
--signprivate \
@@ -109,7 +109,7 @@ ${datahashalgo}${COL_STOP}"
fi
# Unpack
${UTIL_DIR}/vbutil_keyblock --unpack ${keyblockfile} \
${BIN_DIR}/vbutil_keyblock --unpack ${keyblockfile} \
--datapubkey \
${TESTKEY_SCRATCH_DIR}/key_alg${data_algonum}.vbpubk2 \
--signpubkey \
@@ -134,7 +134,7 @@ ${datahashalgo}${COL_STOP}"
external signer.${COL_STOP}"
# Pack using external signer
# Pack
${UTIL_DIR}/vbutil_keyblock --pack ${keyblockfile} \
${BIN_DIR}/vbutil_keyblock --pack ${keyblockfile} \
--datapubkey \
${TESTKEY_SCRATCH_DIR}/key_alg${data_algonum}.vbpubk \
--signprivate_pem \
@@ -149,7 +149,7 @@ external signer.${COL_STOP}"
fi
# Unpack
${UTIL_DIR}/vbutil_keyblock --unpack ${keyblockfile} \
${BIN_DIR}/vbutil_keyblock --unpack ${keyblockfile} \
--datapubkey \
${TESTKEY_SCRATCH_DIR}/key_alg${data_algonum}.vbpubk2 \
--signpubkey \

View File

@@ -24,24 +24,24 @@ echo 'This is a test firmware body. This is only a test. Lalalalala' \
> body.test
# Pack keys using original vboot utilities
${UTIL_DIR}/vbutil_key --pack rootkey.test \
${BIN_DIR}/vbutil_key --pack rootkey.test \
--key ${TESTKEY_DIR}/key_rsa8192.keyb --algorithm 11
${UTIL_DIR}/vbutil_key --pack fwsubkey.test \
${BIN_DIR}/vbutil_key --pack fwsubkey.test \
--key ${TESTKEY_DIR}/key_rsa4096.keyb --algorithm 7
${UTIL_DIR}/vbutil_key --pack kernkey.test \
${BIN_DIR}/vbutil_key --pack kernkey.test \
--key ${TESTKEY_DIR}/key_rsa2048.keyb --algorithm 4
# Create a GBB with the root key
${UTIL_DIR}/gbb_utility -c 128,2400,0,0 gbb.test
${UTIL_DIR}/gbb_utility gbb.test -s --hwid='Test GBB' --rootkey=rootkey.test
${BIN_DIR}/gbb_utility -c 128,2400,0,0 gbb.test
${BIN_DIR}/gbb_utility gbb.test -s --hwid='Test GBB' --rootkey=rootkey.test
# Keyblock with firmware subkey is signed by root key
${UTIL_DIR}/vbutil_keyblock --pack keyblock.test \
${BIN_DIR}/vbutil_keyblock --pack keyblock.test \
--datapubkey fwsubkey.test \
--signprivate ${TESTKEY_DIR}/key_rsa8192.sha512.vbprivk
# Firmware preamble is signed with the firmware subkey
${UTIL_DIR}/vbutil_firmware \
${BIN_DIR}/vbutil_firmware \
--vblock vblock.test \
--keyblock keyblock.test \
--signprivate ${TESTKEY_DIR}/key_rsa4096.sha256.vbprivk \
@@ -52,6 +52,6 @@ ${UTIL_DIR}/vbutil_firmware \
echo 'Verifying test firmware using vb2_verify_fw'
# Verify the firmware using vboot2 utility
${UTIL_DIR}/vb2_verify_fw gbb.test vblock.test body.test
${BIN_DIR}/vb2_verify_fw gbb.test vblock.test body.test
happy 'vb2_verify_fw succeeded'

View File

@@ -21,7 +21,7 @@ function test_signatures {
for hashalgo in ${hash_algos[@]}
do
echo -e "For ${COL_YELLOW}RSA-$keylen and $hashalgo${COL_STOP}:"
${UTIL_DIR}/verify_data $algorithmcounter \
${BIN_DIR}/verify_data $algorithmcounter \
${TESTKEY_DIR}/key_rsa${keylen}.keyb \
${TEST_FILE}.rsa${keylen}_${hashalgo}.sig \
${TEST_FILE}