141f444a11b267285a41a22a996a86a249c99549cGaurav Shah#!/bin/bash 241f444a11b267285a41a22a996a86a249c99549cGaurav Shah# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 341f444a11b267285a41a22a996a86a249c99549cGaurav Shah# Use of this source code is governed by a BSD-style license that can be 441f444a11b267285a41a22a996a86a249c99549cGaurav Shah# found in the LICENSE file. 541f444a11b267285a41a22a996a86a249c99549cGaurav Shah 641f444a11b267285a41a22a996a86a249c99549cGaurav Shah# Script to increment kernel subkey and datakey for firmware updates. 741f444a11b267285a41a22a996a86a249c99549cGaurav Shah# Used when revving versions for a firmware update. 841f444a11b267285a41a22a996a86a249c99549cGaurav Shah 941f444a11b267285a41a22a996a86a249c99549cGaurav Shah# Load common constants and variables. 107b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav Shah. "${0%/*}"/common.sh 1141f444a11b267285a41a22a996a86a249c99549cGaurav Shah 1241f444a11b267285a41a22a996a86a249c99549cGaurav Shah# Abort on errors. 1341f444a11b267285a41a22a996a86a249c99549cGaurav Shahset -e 1441f444a11b267285a41a22a996a86a249c99549cGaurav Shah 157b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav Shahif [ $# -ne 1 ]; then 167b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav Shah cat <<EOF 177b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav ShahUsage: $0 <keyset directory> 187b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav Shah 197b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav ShahIncrements the kernel subkey, data key and firmware version in the 207b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav Shahspecified keyset. 217b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav ShahEOF 227b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav Shah exit 1 237b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav Shahfi 247b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav Shah 257b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav ShahKEY_DIR=$1 267b3e34a23645749f6e3ea9deb7427be21f2d181eGaurav Shah 2741f444a11b267285a41a22a996a86a249c99549cGaurav Shahmain() { 288b42ac8e2682ee763a13baffe815b771d2103403Mike Frysinger load_current_versions "${KEY_DIR}" 2940d8651bb36048c9b5f07be97ff17b2cf503015eKris Rambish new_kernkey_ver=$(increment_version "${KEY_DIR}" "kernel_key_version") 3040d8651bb36048c9b5f07be97ff17b2cf503015eKris Rambish new_firm_ver=$(increment_version "${KEY_DIR}" "firmware_version") 3141f444a11b267285a41a22a996a86a249c99549cGaurav Shah 328b42ac8e2682ee763a13baffe815b771d2103403Mike Frysinger cd "${KEY_DIR}" 3340d8651bb36048c9b5f07be97ff17b2cf503015eKris Rambish backup_existing_kernel_subkeys ${CURR_FIRM_VER} ${CURR_KERNKEY_VER} 3440d8651bb36048c9b5f07be97ff17b2cf503015eKris Rambish backup_existing_kernel_data_keys ${CURR_FIRM_VER} ${CURR_KERNKEY_VER} 3541f444a11b267285a41a22a996a86a249c99549cGaurav Shah 3641f444a11b267285a41a22a996a86a249c99549cGaurav Shah cat <<EOF 3741f444a11b267285a41a22a996a86a249c99549cGaurav ShahGenerating new kernel subkey, data keys and new kernel keyblock. 3841f444a11b267285a41a22a996a86a249c99549cGaurav Shah 3940d8651bb36048c9b5f07be97ff17b2cf503015eKris RambishNew Firmware version (due to kernel subkey change): ${new_firm_ver}. 4040d8651bb36048c9b5f07be97ff17b2cf503015eKris RambishNew Kernel key version (due to kernel datakey change): ${new_kernkey_ver}. 4141f444a11b267285a41a22a996a86a249c99549cGaurav ShahEOF 4240d8651bb36048c9b5f07be97ff17b2cf503015eKris Rambish make_pair kernel_subkey ${KERNEL_SUBKEY_ALGOID} ${new_firm_ver} 4340d8651bb36048c9b5f07be97ff17b2cf503015eKris Rambish make_pair kernel_data_key ${KERNEL_DATAKEY_ALGOID} ${new_kernkey_ver} 4440d8651bb36048c9b5f07be97ff17b2cf503015eKris Rambish make_keyblock kernel ${KERNEL_KEYBLOCK_MODE} kernel_data_key kernel_subkey 4541f444a11b267285a41a22a996a86a249c99549cGaurav Shah 4640d8651bb36048c9b5f07be97ff17b2cf503015eKris Rambish write_updated_version_file ${CURR_FIRMKEY_VER} ${new_firm_ver} \ 4740d8651bb36048c9b5f07be97ff17b2cf503015eKris Rambish ${new_kernkey_ver} ${CURR_KERN_VER} 4841f444a11b267285a41a22a996a86a249c99549cGaurav Shah} 4941f444a11b267285a41a22a996a86a249c99549cGaurav Shah 5040d8651bb36048c9b5f07be97ff17b2cf503015eKris Rambishmain "$@" 51