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>
diff --git a/Makefile b/Makefile
index 2fc37ec..7bb34dc 100644
--- a/Makefile
+++ b/Makefile
@@ -695,6 +695,10 @@
 .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 @@
 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 @@
 	${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
diff --git a/tests/common.sh b/tests/common.sh
index 43cdf6d..5ae5629 100644
--- a/tests/common.sh
+++ b/tests/common.sh
@@ -9,7 +9,7 @@
 
 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
diff --git a/tests/gen_fuzz_test_cases.sh b/tests/gen_fuzz_test_cases.sh
index 13d605b..97c2230 100755
--- a/tests/gen_fuzz_test_cases.sh
+++ b/tests/gen_fuzz_test_cases.sh
@@ -26,19 +26,19 @@
   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 @@
   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 \
diff --git a/tests/gen_test_cases.sh b/tests/gen_test_cases.sh
index bad7e33..19b7447 100755
--- a/tests/gen_test_cases.sh
+++ b/tests/gen_test_cases.sh
@@ -23,7 +23,7 @@
     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
diff --git a/tests/gen_test_keys.sh b/tests/gen_test_keys.sh
index fff5ec7..5575cd5 100755
--- a/tests/gen_test_keys.sh
+++ b/tests/gen_test_keys.sh
@@ -30,7 +30,7 @@
       -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 @@
     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}
diff --git a/tests/gen_test_vbpubks.sh b/tests/gen_test_vbpubks.sh
index 995a48b..3f8dee1 100755
--- a/tests/gen_test_vbpubks.sh
+++ b/tests/gen_test_vbpubks.sh
@@ -15,7 +15,7 @@
   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 \
diff --git a/tests/run_preamble_tests.sh b/tests/run_preamble_tests.sh
index 2ca86ad..80deebb 100755
--- a/tests/run_preamble_tests.sh
+++ b/tests/run_preamble_tests.sh
@@ -41,7 +41,7 @@
       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 @@
       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 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}"
diff --git a/tests/run_rsa_tests.sh b/tests/run_rsa_tests.sh
index ed15cf8..d73f737 100755
--- a/tests/run_rsa_tests.sh
+++ b/tests/run_rsa_tests.sh
@@ -21,7 +21,7 @@
     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}
diff --git a/tests/run_vbutil_kernel_arg_tests.sh b/tests/run_vbutil_kernel_arg_tests.sh
index 7f59ef9..9558ca5 100755
--- a/tests/run_vbutil_kernel_arg_tests.sh
+++ b/tests/run_vbutil_kernel_arg_tests.sh
@@ -44,7 +44,7 @@
   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 @@
   : $(( 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 @@
   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_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 @@
 # 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_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 @@
 
 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 @@
 
 # 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 @@
   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
diff --git a/tests/run_vbutil_tests.sh b/tests/run_vbutil_tests.sh
index 2b15d53..47d8dfc 100755
--- a/tests/run_vbutil_tests.sh
+++ b/tests/run_vbutil_tests.sh
@@ -18,7 +18,7 @@
 
     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 @@
 
     # 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 @@
           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 @@
           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 @@
           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 @@
           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 @@
 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 @@
           fi
 
           # Unpack
-          ${UTIL_DIR}/vbutil_keyblock --unpack ${keyblockfile} \
+          ${BIN_DIR}/vbutil_keyblock --unpack ${keyblockfile} \
             --datapubkey \
             ${TESTKEY_SCRATCH_DIR}/key_alg${data_algonum}.vbpubk2 \
             --signpubkey \
diff --git a/tests/vb2_firmware_tests.sh b/tests/vb2_firmware_tests.sh
index 39c4dd9..a32dc6d 100755
--- a/tests/vb2_firmware_tests.sh
+++ b/tests/vb2_firmware_tests.sh
@@ -24,24 +24,24 @@
     > 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 @@
 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'
diff --git a/tests/vb2_rsa_tests.sh b/tests/vb2_rsa_tests.sh
index 331b066..ff570d0 100755
--- a/tests/vb2_rsa_tests.sh
+++ b/tests/vb2_rsa_tests.sh
@@ -21,7 +21,7 @@
     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}