1caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah#!/bin/bash 2caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah 3caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah# Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 4caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah# Use of this source code is governed by a BSD-style license that can be 5caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah# found in the LICENSE file. 6caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah 7caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah# Standalone version of cros_resign_image.sh script from 8aa22a5dea505e23516063829fa43a34db3ae412fGaurav Shah# chromeos/src/scripts/bin/ for use on signing servers. 9caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah 10536eaaaee738b660652906848ba37474a1a4219aGaurav Shah# Both the cgpt tool and vbutil_kernel should be in the system path. 11536eaaaee738b660652906848ba37474a1a4219aGaurav Shah 120c4c9bac3c390445066f08010a753ce76ccb4a5eGaurav Shah# Load common constants and variables. 130c4c9bac3c390445066f08010a753ce76ccb4a5eGaurav Shah. "$(dirname "$0")/common.sh" 140c4c9bac3c390445066f08010a753ce76ccb4a5eGaurav Shah 15536eaaaee738b660652906848ba37474a1a4219aGaurav Shah# Abort on error 16536eaaaee738b660652906848ba37474a1a4219aGaurav Shahset -e 17caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah 18caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah# Check arguments 198ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahif [ $# -lt 4 ] || [ $# -gt 5 ] ; then 208ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shah echo "usage: $PROG src_bin dst_bin kernel_datakey kernel_keyblock [version]" 21caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah exit 1 22caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shahfi 23caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah 24caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah# Make sure the tools we need are available. 258ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahfor prereqs in vbutil_kernel cgpt; 268ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahdo 278ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shah type -P "${prereqs}" &>/dev/null || \ 288ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shah { echo "${prereqs} tool not found."; exit 1; } 298ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahdone 308ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shah 318ae7b0e41a1252f98e6662a298efb97624431c44Gaurav ShahSRC_BIN=$1 328ae7b0e41a1252f98e6662a298efb97624431c44Gaurav ShahDST_BIN=$2 338ae7b0e41a1252f98e6662a298efb97624431c44Gaurav ShahKERNEL_DATAKEY=$3 348ae7b0e41a1252f98e6662a298efb97624431c44Gaurav ShahKERNEL_KEYBLOCK=$4 358ae7b0e41a1252f98e6662a298efb97624431c44Gaurav ShahVERSION=$5 368ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shah 378ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahif [ -z $VERSION ]; then 388ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shah VERSION=1 398ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahfi 408ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahecho "Using kernel version: $VERSION" 418ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shah 420c4c9bac3c390445066f08010a753ce76ccb4a5eGaurav Shahtemp_kimage=$(make_temp_file) 438ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahextract_image_partition ${SRC_BIN} 2 ${temp_kimage} 448ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahupdated_kimage=$(make_temp_file) 458ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shah 468ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahvbutil_kernel --repack "${updated_kimage}" \ 478ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shah --keyblock "${KERNEL_KEYBLOCK}" \ 488ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shah --signprivate "${KERNEL_DATAKEY}" \ 498ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shah --version "${VERSION}" \ 50caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah --oldblob "${temp_kimage}" 51caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah 52caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah# Create a copy of the input image and put in the new vblock 538ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahcp "${SRC_BIN}" "${DST_BIN}" 548ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahreplace_image_partition ${DST_BIN} 2 ${updated_kimage} 558ae7b0e41a1252f98e6662a298efb97624431c44Gaurav Shahecho "New signed image was output to ${DST_BIN}" 56caa4789868ef23a8edce96cdc6421e6fa67edcd6Gaurav Shah 57