#!/bin/bash # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Script to increment kernel subkey and datakey for firmware updates. # Used when revving versions for a firmware update. # Load common constants and variables. . "$(dirname "$0")/common.sh" # Abort on errors. set -e # File to read current versions from. VERSION_FILE="key.versions" # ARGS: get_version() { local version_type=$1 version=$(sed -n "s#^${version_type}=\(.*\)#\1#pg" ${VERSION_FILE}) echo $version } # Make backups of existing keys and keyblocks that will be revved. # Backup format: # for keys: .v # for keyblocks: .v.v # Args: SUBKEY_VERSION DATAKEY_VERSION backup_existing_kernel_keys() { subkey_version=$1 datakey_version=$2 # --no-clobber to prevent accidentally overwriting existing # backups. mv --no-clobber kernel_subkey.vbprivk{,".v${subkey_version}"} mv --no-clobber kernel_subkey.vbpubk{,".v${subkey_version}"} mv --no-clobber kernel_data_key.vbprivk{,".v${datakey_version}"} mv --no-clobber kernel_data_key.vbpubk{,".v${datakey_version}"} mv --no-clobber kernel.keyblock{,".v${datakey_version}.v${subkey_version}"} } # Write new key version file with the updated key versions. # Args: FIRMWARE_KEY_VERSION FIRMWARE_VERSION KERNEL_KEY_VERSION KERNEL_VERSION write_updated_version_file() { local firmware_key_version=$1 local firmware_version=$2 local kernel_key_version=$3 local kernel_version=$4 cat > ${VERSION_FILE} <