Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Side by Side Diff: utility/dev_debug_vboot

Issue 4106001: Modify dev_debug_vboot for better usefulness (Closed) Base URL: http://git.chromium.org/git/vboot_reference.git
Patch Set: Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « firmware/version.c ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/sh 1 #!/bin/sh
2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 # 5 #
6 6
7 TMPDIR=/tmp/debug_vboot 7 LOGFILE=noisy.log
8 BIOS=bios.rom 8
9 # FIXME: support ARM 9 die() {
10 HD_KERN_A=/dev/sda2 10 echo "$*" 1>&2
11 HD_KERN_B=/dev/sda4 11 exit 1
12 tmp=$(rootdev -s -d)2 12 }
13 if [ "$tmp" != "$HD_KERN_A" ]; then 13
14 USB_KERN_A="$tmp" 14 info() {
15 echo "$@"
16 echo "#" "$@" >> "$LOGFILE"
17 }
18
19 infon() {
20 echo -n "$@"
21 echo "#" "$@" >> "$LOGFILE"
22 }
23
24 log() {
25 echo "+" "$@" >> "$LOGFILE"
26 "$@" >> "$LOGFILE" 2>&1
27 }
28
29 logdie() {
30 echo "+" "$@" >> "$LOGFILE"
31 "$@" >> "$LOGFILE" 2>&1
32 die "$@"
33 }
34
35 result() {
36 if [ "$?" = "0" ]; then
37 info "OK"
38 else
39 info "FAILED"
40 fi
41 }
42
43 # Optional directory name containing "bios.rom" and "*kern*.blob" files. If not
44 # provided, we'll attempt to extract them ourselves.
45 if [ -d "$1" ]; then
46 TMPDIR="$1"
47 [ -d ${TMPDIR} ] || die "${TMPDIR} doesn't exist"
48 USE_EXISTING=yes
49 else
50 TMPDIR=/tmp/debug_vboot
51 [ -d ${TMPDIR} ] || mkdir -p ${TMPDIR}
15 fi 52 fi
16 53
54 cd ${TMPDIR}
55 echo "$0 $*" > "$LOGFILE"
56 log date
57 echo "Saving verbose log as $(pwd)/$LOGFILE"
17 58
18 [ -d ${TMPDIR} ] || mkdir -p ${TMPDIR} 59 BIOS=bios.rom
19 cd ${TMPDIR}
20 60
21 echo "INFO: extracting BIOS image from flash" 61 # Find BIOS and kernel images
22 flashrom -r ${BIOS} 62 if [ -n "$USE_EXISTING" ]; then
63 info "Using images in $(pwd)/"
64 else
65 info "Extracting BIOS image from flash..."
66 log flashrom -r ${BIOS}
23 67
24 echo "INFO: extracting kernel images from drives" 68 # FIXME: support ARM
25 dd if=${HD_KERN_A} of=hd_kern_a.blob 69 HD_KERN_A=/dev/sda2
26 dd if=${HD_KERN_B} of=hd_kern_b.blob 70 HD_KERN_B=/dev/sda4
27 if [ -n "$USB_KERN_A" ]; then 71 tmp=$(rootdev -s -d)2
28 dd if=${USB_KERN_A} of=usb_kern_a.blob 72 if [ "$tmp" != "$HD_KERN_A" ]; then
73 USB_KERN_A="$tmp"
74 fi
75
76 info "Extracting kernel images from drives..."
77 log dd if=${HD_KERN_A} of=hd_kern_a.blob
78 log dd if=${HD_KERN_B} of=hd_kern_b.blob
79 if [ -n "$USB_KERN_A" ]; then
80 log dd if=${USB_KERN_A} of=usb_kern_a.blob
81 fi
29 fi 82 fi
30 83
31 echo "INFO: extracting BIOS components" 84 # Make sure we have something to work on
32 dump_fmap -x ${BIOS} || echo "FAILED" 85 [ -f "$BIOS" ] || logdie "no BIOS image found"
86 ls *kern*.blob >/dev/null 2>&1 || logdie "no kernel images found"
33 87
34 echo "INFO: pulling root and recovery keys from GBB" 88 info "Extracting BIOS components..."
35 gbb_utility -g --rootkey rootkey.vbpubk --recoverykey recoverykey.vbpubk \ 89 log dump_fmap -x ${BIOS} || logdie "Unable to extract BIOS components"
36 GBB_Area || echo "FAILED"
37 echo "INFO: display root key"
38 vbutil_key --unpack rootkey.vbpubk
39 echo "INFO: display recovery key"
40 vbutil_key --unpack recoverykey.vbpubk
41 90
42 echo "TEST: verify firmware A with root key" 91 info "Pulling root and recovery keys from GBB..."
43 vbutil_firmware --verify Firmware_A_Key --signpubkey rootkey.vbpubk \ 92 log gbb_utility -g --rootkey rootkey.vbpubk --recoverykey recoverykey.vbpubk \
44 --fv Firmware_A_Data --kernelkey kernel_subkey_a.vbpubk || echo "FAILED" 93 GBB_Area || logdie "Unable to extract keys from GBB"
45 echo "TEST: verify firmware B with root key" 94 log vbutil_key --unpack rootkey.vbpubk
46 vbutil_firmware --verify Firmware_B_Key --signpubkey rootkey.vbpubk \ 95 log vbutil_key --unpack recoverykey.vbpubk
47 --fv Firmware_B_Data --kernelkey kernel_subkey_b.vbpubk || echo "FAILED"
48 96
49 echo "TEST: verify HD kernel A with firmware A key" 97 infon "Verify firmware A with root key... "
50 vbutil_kernel --verify hd_kern_a.blob --signpubkey kernel_subkey_a.vbpubk \ 98 log vbutil_firmware --verify Firmware_A_Key --signpubkey rootkey.vbpubk \
51 || echo "FAILED" 99 --fv Firmware_A_Data --kernelkey kernel_subkey_a.vbpubk ; result
52 echo "TEST: verify HD kernel B with firmware A key" 100 infon "Verify firmware B with root key... "
53 vbutil_kernel --verify hd_kern_b.blob --signpubkey kernel_subkey_a.vbpubk \ 101 log vbutil_firmware --verify Firmware_B_Key --signpubkey rootkey.vbpubk \
54 || echo "FAILED" 102 --fv Firmware_B_Data --kernelkey kernel_subkey_b.vbpubk ; result
55 103
56 echo "TEST: verify HD kernel A with firmware B key" 104 for key in kernel_subkey_a.vbpubk kernel_subkey_b.vbpubk; do
57 vbutil_kernel --verify hd_kern_a.blob --signpubkey kernel_subkey_b.vbpubk \ 105 infon "Test $key... "
58 || echo "FAILED" 106 log vbutil_key --unpack $key ; result
59 echo "TEST: verify HD kernel B with firmware B key" 107 done
60 vbutil_kernel --verify hd_kern_b.blob --signpubkey kernel_subkey_b.vbpubk \
61 || echo "FAILED"
62 108
63 if [ -n "$USB_KERN_A" ]; then 109 for keyblock in *kern*.blob; do
64 echo "TEST: verify USB kernel A with recovery key" 110 infon "Test $keyblock... "
65 vbutil_kernel --verify usb_kern_a.blob --signpubkey recoverykey.vbpubk \ 111 log vbutil_keyblock --unpack $keyblock ; result
66 || echo "FAILED" 112 done
67 fi 113
114 # Test each kernel with each key
115 for key in kernel_subkey_a.vbpubk kernel_subkey_b.vbpubk recoverykey.vbpubk; do
116 for kern in *kern*.blob; do
117 infon "Verify $kern with $key... "
118 log vbutil_kernel --verify $kern --signpubkey $key ; result
119 done
120 done
OLDNEW
« no previous file with comments | « firmware/version.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698