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