1#!/bin/bash 2# Copyright 2011 The ChromiumOS Authors 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6# Script to increment kernel subkey and datakey for firmware updates. 7# Used when revving versions for a firmware update. 8 9# Load common constants and variables. 10# shellcheck source=common.sh 11. "${0%/*}"/common.sh 12 13# Abort on errors. 14set -e 15 16if [ $# -ne 1 ]; then 17 cat <<EOF 18Usage: $0 <keyset directory> 19 20Increments the kernel subkey, data key and firmware version in the 21specified keyset. 22EOF 23 exit 1 24fi 25 26KEY_DIR=$1 27 28main() { 29 load_current_versions "${KEY_DIR}" 30 new_kernkey_ver=$(increment_version "${KEY_DIR}" "kernel_key_version") 31 new_firm_ver=$(increment_version "${KEY_DIR}" "firmware_version") 32 33 cd "${KEY_DIR}" 34 backup_existing_kernel_subkeys ${CURR_FIRM_VER} ${CURR_KERNKEY_VER} 35 backup_existing_kernel_data_keys ${CURR_FIRM_VER} ${CURR_KERNKEY_VER} 36 37 cat <<EOF 38Generating new kernel subkey, data keys and new kernel keyblock. 39 40New Firmware version (due to kernel subkey change): ${new_firm_ver}. 41New Kernel key version (due to kernel datakey change): ${new_kernkey_ver}. 42EOF 43 make_pair kernel_subkey ${KERNEL_SUBKEY_ALGOID} ${new_firm_ver} 44 make_pair kernel_data_key ${KERNEL_DATAKEY_ALGOID} ${new_kernkey_ver} 45 make_keyblock kernel ${KERNEL_KEYBLOCK_MODE} kernel_data_key kernel_subkey 46 47 write_updated_version_file ${CURR_FIRMKEY_VER} ${new_firm_ver} \ 48 ${new_kernkey_ver} ${CURR_KERN_VER} 49} 50 51main "$@" 52