1*8617a60dSAndroid Build Coastguard Worker#!/bin/bash -eu 2*8617a60dSAndroid Build Coastguard Worker# 3*8617a60dSAndroid Build Coastguard Worker# Copyright 2012 The ChromiumOS Authors 4*8617a60dSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 5*8617a60dSAndroid Build Coastguard Worker# found in the LICENSE file. 6*8617a60dSAndroid Build Coastguard Worker# 7*8617a60dSAndroid Build Coastguard Worker# This generates the pre-change test data used to ensure that 8*8617a60dSAndroid Build Coastguard Worker# modifications to vb2_fw_preamble and vb2_kernel_preamble will not 9*8617a60dSAndroid Build Coastguard Worker# break the signing tools for older releases. This was run *before* 10*8617a60dSAndroid Build Coastguard Worker# any modifications, so be sure to revert the repo back to the correct 11*8617a60dSAndroid Build Coastguard Worker# point if you need to run it again. 12*8617a60dSAndroid Build Coastguard Worker 13*8617a60dSAndroid Build Coastguard Worker 14*8617a60dSAndroid Build Coastguard Worker# Load common constants and variables for tests. 15*8617a60dSAndroid Build Coastguard Worker. "$(dirname "$0")/common.sh" 16*8617a60dSAndroid Build Coastguard Worker 17*8617a60dSAndroid Build Coastguard Worker# Load routines to generate keypairs 18*8617a60dSAndroid Build Coastguard Worker. "${ROOT_DIR}/scripts/keygeneration/common.sh" 19*8617a60dSAndroid Build Coastguard Worker 20*8617a60dSAndroid Build Coastguard Worker# all algs 21*8617a60dSAndroid Build Coastguard Workeralgs="0 1 2 3 4 5 6 7 8 9 10 11" 22*8617a60dSAndroid Build Coastguard Worker 23*8617a60dSAndroid Build Coastguard Worker# output directories 24*8617a60dSAndroid Build Coastguard WorkerPREAMBLE_DIR="${SCRIPT_DIR}/preamble_tests" 25*8617a60dSAndroid Build Coastguard WorkerDATADIR="${PREAMBLE_DIR}/data" 26*8617a60dSAndroid Build Coastguard WorkerV2DIR="${PREAMBLE_DIR}/preamble_v2x" 27*8617a60dSAndroid Build Coastguard Worker 28*8617a60dSAndroid Build Coastguard Workerfor d in "${PREAMBLE_DIR}" "${DATADIR}" "${V2DIR}"; do 29*8617a60dSAndroid Build Coastguard Worker [ -d "$d" ] || mkdir -p "$d" 30*8617a60dSAndroid Build Coastguard Workerdone 31*8617a60dSAndroid Build Coastguard Worker 32*8617a60dSAndroid Build Coastguard Worker 33*8617a60dSAndroid Build Coastguard Worker# generate a bunch of data keys 34*8617a60dSAndroid Build Coastguard Workerfor d in $algs; do 35*8617a60dSAndroid Build Coastguard Worker make_pair "${DATADIR}/data_$d" "$d" 36*8617a60dSAndroid Build Coastguard Workerdone 37*8617a60dSAndroid Build Coastguard Worker 38*8617a60dSAndroid Build Coastguard Worker# generate a bunch of root keys 39*8617a60dSAndroid Build Coastguard Workerfor r in $algs; do 40*8617a60dSAndroid Build Coastguard Worker make_pair "${DATADIR}/root_$r" "$r" 41*8617a60dSAndroid Build Coastguard Workerdone 42*8617a60dSAndroid Build Coastguard Worker 43*8617a60dSAndroid Build Coastguard Worker# generate keyblocks using all possible combinations 44*8617a60dSAndroid Build Coastguard Workerfor d in $algs; do 45*8617a60dSAndroid Build Coastguard Worker for r in $algs; do 46*8617a60dSAndroid Build Coastguard Worker make_keyblock "${DATADIR}/kb_${d}_${r}" 15 \ 47*8617a60dSAndroid Build Coastguard Worker "${DATADIR}/data_$d" "${DATADIR}/root_$r" 48*8617a60dSAndroid Build Coastguard Worker done 49*8617a60dSAndroid Build Coastguard Workerdone 50*8617a60dSAndroid Build Coastguard Worker 51*8617a60dSAndroid Build Coastguard Worker# make a dummy kernel key because we have to have one (crosbug.com/27142) 52*8617a60dSAndroid Build Coastguard Workermake_pair "${DATADIR}/dummy_0" 0 53*8617a60dSAndroid Build Coastguard Worker 54*8617a60dSAndroid Build Coastguard Worker# and a few more dummy files just because (crosbug.com/23548) 55*8617a60dSAndroid Build Coastguard Workerecho "hi there" > "${DATADIR}/dummy_config.txt" 56*8617a60dSAndroid Build Coastguard Worker 57*8617a60dSAndroid Build Coastguard Worker# make some fake data 58*8617a60dSAndroid Build Coastguard Workerdd if=/dev/urandom of="${DATADIR}/FWDATA" bs=32768 count=1 59*8617a60dSAndroid Build Coastguard Workerdd if=/dev/urandom of="${DATADIR}/KERNDATA" bs=32768 count=1 60*8617a60dSAndroid Build Coastguard Worker 61*8617a60dSAndroid Build Coastguard Worker 62*8617a60dSAndroid Build Coastguard Worker# Now sign the firmware and kernel data in all the possible ways using the 63*8617a60dSAndroid Build Coastguard Worker# pre-change tools. 64*8617a60dSAndroid Build Coastguard Workerfor d in $algs; do 65*8617a60dSAndroid Build Coastguard Worker for r in $algs; do 66*8617a60dSAndroid Build Coastguard Worker "${FUTILITY}" sign \ 67*8617a60dSAndroid Build Coastguard Worker --signprivate "${DATADIR}/data_${d}.vbprivk" \ 68*8617a60dSAndroid Build Coastguard Worker --keyblock "${DATADIR}/kb_${d}_${r}.keyblock" \ 69*8617a60dSAndroid Build Coastguard Worker --kernelkey "${DATADIR}/dummy_0.vbpubk" \ 70*8617a60dSAndroid Build Coastguard Worker --version 1 \ 71*8617a60dSAndroid Build Coastguard Worker --fv "${DATADIR}/FWDATA" \ 72*8617a60dSAndroid Build Coastguard Worker --outfile "${V2DIR}/fw_${d}_${r}.vblock" 73*8617a60dSAndroid Build Coastguard Worker "${FUTILITY}" sign \ 74*8617a60dSAndroid Build Coastguard Worker --signprivate "${DATADIR}/data_${d}.vbprivk" \ 75*8617a60dSAndroid Build Coastguard Worker --keyblock "${DATADIR}/kb_${d}_${r}.keyblock" \ 76*8617a60dSAndroid Build Coastguard Worker --config "${DATADIR}/dummy_config.txt" \ 77*8617a60dSAndroid Build Coastguard Worker --arch arm \ 78*8617a60dSAndroid Build Coastguard Worker --version 1 \ 79*8617a60dSAndroid Build Coastguard Worker --vmlinuz "${DATADIR}/KERNDATA" \ 80*8617a60dSAndroid Build Coastguard Worker --outfile "${V2DIR}/kern_${d}_${r}.vblock" 81*8617a60dSAndroid Build Coastguard Worker done 82*8617a60dSAndroid Build Coastguard Workerdone 83