#!/bin/bash

# Copyright (c) 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.
#
# End-to-end test for vboot2 kernel verification

# Load common constants and variables.
. "$(dirname "$0")/common.sh"

set -e

CGPT=${BIN_DIR}/cgpt

echo 'Creating test kernel'

# Run tests in a dedicated directory for easy cleanup or debugging.
DIR="${TEST_DIR}/load_kernel_test_dir"
[ -d "$DIR" ] || mkdir -p "$DIR"
echo "Testing kernel verification in $DIR"
cd "$DIR"

# Dummy kernel data
echo "hi there" > "dummy_config.txt"
dd if=/dev/urandom bs=16384 count=1 of="dummy_bootloader.bin"
dd if=/dev/urandom bs=32768 count=1 of="dummy_kernel.bin"

# Pack kernel data key using original vboot utilities.
${FUTILITY} vbutil_key --pack datakey.test \
    --key ${TESTKEY_DIR}/key_rsa2048.keyb --algorithm 4

# Keyblock with kernel data key is signed by kernel subkey
# Flags=21 means dev=0 rec=0 minios=0
${FUTILITY} vbutil_keyblock --pack keyblock.test \
    --datapubkey datakey.test \
    --flags 21 \
    --signprivate ${SCRIPT_DIR}/devkeys/kernel_subkey.vbprivk

# Kernel preamble is signed with the kernel data key
${FUTILITY} vbutil_kernel \
    --pack "kernel.test" \
    --keyblock "keyblock.test" \
    --signprivate ${TESTKEY_DIR}/key_rsa2048.sha256.vbprivk \
    --version 1 \
    --arch arm \
    --vmlinuz "dummy_kernel.bin" \
    --bootloader "dummy_bootloader.bin" \
    --config "dummy_config.txt"

echo 'Verifying test kernel'

# Verify the kernel
${FUTILITY} vbutil_kernel \
    --verify "kernel.test" \
    --signpubkey ${SCRIPT_DIR}/devkeys/kernel_subkey.vbpubk

happy 'Kernel verification succeeded'

# Now create a dummy disk image
echo 'Creating test disk image'
dd if=/dev/zero of=disk.test bs=1024 count=1024
${CGPT} create disk.test
${CGPT} add -i 1 -S 1 -P 1 -b 64 -s 960 -t kernel -l kernelA disk.test
${CGPT} show disk.test

# And insert the kernel into it
dd if=kernel.test of=disk.test bs=512 seek=64 conv=notrunc

# And verify it using futility
echo 'Verifying test disk image'
${BUILD_RUN}/tests/verify_kernel disk.test \
    ${SCRIPT_DIR}/devkeys/kernel_subkey.vbpubk

happy 'Image verification succeeded'
