blob: 424e9e41e86d3808e07b77709bb3f91e88fab8d1 [file] [log] [blame]
#!/bin/sh
# Copyright (c) 2010 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.
#
TMPDIR=/tmp/debug_vboot
BIOS=bios.rom
# FIXME: support ARM
HD_KERN_A=/dev/sda2
HD_KERN_B=/dev/sda4
tmp=$(rootdev -s -d)2
if [ "$tmp" != "$HD_KERN_A" ]; then
USB_KERN_A="$tmp"
fi
[ -d ${TMPDIR} ] || mkdir -p ${TMPDIR}
cd ${TMPDIR}
echo "INFO: extracting BIOS image from flash"
flashrom -r ${BIOS}
echo "INFO: extracting kernel images from drives"
dd if=${HD_KERN_A} of=hd_kern_a.blob
dd if=${HD_KERN_B} of=hd_kern_b.blob
if [ -n "$USB_KERN_A" ]; then
dd if=${USB_KERN_A} of=usb_kern_a.blob
fi
echo "INFO: extracting BIOS components"
dump_fmap -x ${BIOS} || echo "FAILED"
echo "INFO: pulling root and recovery keys from GBB"
gbb_utility -g --rootkey rootkey.vbpubk --recoverykey recoverykey.vbpubk \
GBB_Area || echo "FAILED"
echo "INFO: display root key"
vbutil_key --unpack rootkey.vbpubk
echo "INFO: display recovery key"
vbutil_key --unpack recoverykey.vbpubk
echo "TEST: verify firmware A with root key"
vbutil_firmware --verify Firmware_A_Key --signpubkey rootkey.vbpubk \
--fv Firmware_A_Data --kernelkey kernel_subkey_a.vbpubk || echo "FAILED"
echo "TEST: verify firmware B with root key"
vbutil_firmware --verify Firmware_B_Key --signpubkey rootkey.vbpubk \
--fv Firmware_B_Data --kernelkey kernel_subkey_b.vbpubk || echo "FAILED"
echo "TEST: verify HD kernel A with firmware A key"
vbutil_kernel --verify hd_kern_a.blob --signpubkey kernel_subkey_a.vbpubk \
|| echo "FAILED"
echo "TEST: verify HD kernel B with firmware A key"
vbutil_kernel --verify hd_kern_b.blob --signpubkey kernel_subkey_a.vbpubk \
|| echo "FAILED"
echo "TEST: verify HD kernel A with firmware B key"
vbutil_kernel --verify hd_kern_a.blob --signpubkey kernel_subkey_b.vbpubk \
|| echo "FAILED"
echo "TEST: verify HD kernel B with firmware B key"
vbutil_kernel --verify hd_kern_b.blob --signpubkey kernel_subkey_b.vbpubk \
|| echo "FAILED"
if [ -n "$USB_KERN_A" ]; then
echo "TEST: verify USB kernel A with recovery key"
vbutil_kernel --verify usb_kern_a.blob --signpubkey recoverykey.vbpubk \
|| echo "FAILED"
fi