#!/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}"
    ( cd "${SRCDIR}" && ${FUTILITY} show "${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}"
    ( cd "${SRCDIR}" && ${FUTILITY} vbutil_key --unpack "${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}"
( cd "${SRCDIR}" && ${FUTILITY} vbutil_keyblock --unpack "${file}" \
    --signpubkey "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
