#!/bin/bash -eux
# Copyright 2014 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"

# some stuff we'll need
DEVKEYS="${SRCDIR}/tests/devkeys"

# The show command exits with 0 if the data is consistent.
# The verify command exits with 0 only if all the data is verified.

####  keyblock

"${FUTILITY}" show "${DEVKEYS}/firmware.keyblock"

if "${FUTILITY}" verify "${DEVKEYS}/firmware.keyblock" ; then false; fi

"${FUTILITY}" verify "${DEVKEYS}/firmware.keyblock" \
  --publickey "${DEVKEYS}/root_key.vbpubk"


#### firmware vblock

# Get some bits to look at
"${FUTILITY}" dump_fmap -x "${SCRIPT_DIR}/futility/data/bios_peppy_mp.bin" \
  "GBB:${TMP}.gbb" "VBLOCK_A:${TMP}.vblock_a" "FW_MAIN_A:${TMP}.fw_main_a"
"${FUTILITY}" gbb -g -k "${TMP}.rootkey" "${TMP}.gbb"


"${FUTILITY}" show "${TMP}.vblock_a"

"${FUTILITY}" show "${TMP}.vblock_a" --publickey "${TMP}.rootkey"

"${FUTILITY}" show "${TMP}.vblock_a" \
  --publickey "${TMP}.rootkey" \
  --fv "${TMP}.fw_main_a"

if "${FUTILITY}" verify "${TMP}.vblock_a" ; then false ; fi

if "${FUTILITY}" verify "${TMP}.vblock_a" \
  --publickey "${TMP}.rootkey" ; then false ; fi

"${FUTILITY}" verify "${TMP}.vblock_a" \
  --publickey "${TMP}.rootkey" \
  --fv "${TMP}.fw_main_a"


#### kernel partition

"${FUTILITY}" show "${SCRIPT_DIR}/futility/data/rec_kernel_part.bin"

"${FUTILITY}" show "${SCRIPT_DIR}/futility/data/rec_kernel_part.bin" \
  --publickey "${DEVKEYS}/kernel_subkey.vbpubk"

"${FUTILITY}" show "${SCRIPT_DIR}/futility/data/rec_kernel_part.bin" \
  --publickey "${DEVKEYS}/recovery_key.vbpubk"

if "${FUTILITY}" verify "${SCRIPT_DIR}/futility/data/rec_kernel_part.bin" ; \
  then false ; fi

if "${FUTILITY}" verify "${SCRIPT_DIR}/futility/data/rec_kernel_part.bin" \
  --publickey "${DEVKEYS}/kernel_subkey.vbpubk" ; then false ; fi

"${FUTILITY}" verify "${SCRIPT_DIR}/futility/data/rec_kernel_part.bin" \
  --publickey "${DEVKEYS}/recovery_key.vbpubk"


# cleanup
rm -rf "${TMP}"*
exit 0
