You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
2.8 KiB
110 lines
2.8 KiB
#!/bin/bash -u |
|
# |
|
# Copyright (c) 2012 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. |
|
# |
|
# This tests that vblocks using pre-3.0 versions of VbFirmwarePreambleHeader |
|
# and VbKernelPreambleHeader will still verify (or not) correctly. We need to |
|
# keep the old versions around to make sure that we can still sign images in |
|
# the ways that existing devices can validate. |
|
|
|
# Load common constants and variables for tests. |
|
. "$(dirname "$0")/common.sh" |
|
|
|
if [ "${1:---some}" == "--all" ] ; then |
|
# all algs |
|
algs="0 1 2 3 4 5 6 7 8 9 10 11" |
|
else |
|
# just the algs we use |
|
algs="4 7 11" |
|
fi |
|
|
|
# output directories |
|
PREAMBLE_DIR="${SCRIPT_DIR}/preamble_tests" |
|
DATADIR="${PREAMBLE_DIR}/data" |
|
V2DIR="${PREAMBLE_DIR}/preamble_v2x" |
|
|
|
tests=0 |
|
errs=0 |
|
|
|
# Check the firmware results |
|
for d in $algs; do |
|
for r in $algs; do |
|
for rr in $algs; do |
|
if [ "$r" = "$rr" ]; then |
|
what="verify" |
|
cmp="-ne" |
|
else |
|
what="reject" |
|
cmp="-eq" |
|
fi |
|
: $(( tests++ )) |
|
echo -n "${what} fw_${d}_${r}.vblock with root_${rr}.vbpubk ... " |
|
"${FUTILITY}" vbutil_firmware \ |
|
--verify "${V2DIR}/fw_${d}_${r}.vblock" \ |
|
--signpubkey "${DATADIR}/root_${rr}.vbpubk" \ |
|
--fv "${DATADIR}/FWDATA" >/dev/null 2>&1 |
|
if [ "$?" "$cmp" 0 ]; then |
|
echo -e "${COL_RED}FAILED${COL_STOP}" |
|
: $(( errs++ )) |
|
else |
|
echo -e "${COL_GREEN}PASSED${COL_STOP}" |
|
fi |
|
done |
|
done |
|
done |
|
|
|
|
|
# Check the kernel results |
|
for d in $algs; do |
|
for r in $algs; do |
|
for rr in $algs; do |
|
if [ "$r" = "$rr" ]; then |
|
what="verify" |
|
cmp="-ne" |
|
else |
|
what="reject" |
|
cmp="-eq" |
|
fi |
|
: $(( tests++ )) |
|
echo -n "${what} kern_${d}_${r}.vblock with root_${rr}.vbpubk ... " |
|
"${FUTILITY}" 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}" |
|
: $(( errs++ )) |
|
else |
|
echo -e "${COL_GREEN}PASSED${COL_STOP}" |
|
fi |
|
done |
|
done |
|
done |
|
|
|
|
|
# Check the kernel results |
|
for d in $algs; do |
|
for r in $algs; do |
|
: $(( tests++ )) |
|
echo -n "verify kern_${d}_${r}.vblock with hash only ... " |
|
"${FUTILITY}" vbutil_kernel \ |
|
--verify "${V2DIR}/kern_${d}_${r}.vblock" >/dev/null 2>&1 |
|
if [ "$?" -ne 0 ]; then |
|
echo -e "${COL_RED}FAILED${COL_STOP}" |
|
: $(( errs++ )) |
|
else |
|
echo -e "${COL_GREEN}PASSED${COL_STOP}" |
|
fi |
|
done |
|
done |
|
|
|
|
|
# Summary |
|
ME=$(basename "$0") |
|
if [ "$errs" -ne 0 ]; then |
|
echo -e "${COL_RED}${ME}: ${errs}/${tests} tests failed${COL_STOP}" |
|
exit 1 |
|
fi |
|
happy "${ME}: All ${tests} tests passed" |
|
exit 0
|
|
|