12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #!/bin/bash -eu
- #
- # Copyright (c) 2012 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.
- #
- # This generates the pre-change test data used to ensure that
- # modifications to vb2_fw_preamble and vb2_kernel_preamble will not
- # break the signing tools for older releases. This was run *before*
- # any modifications, so be sure to revert the repo back to the correct
- # point if you need to run it again.
- # Load common constants and variables for tests.
- . "$(dirname "$0")/common.sh"
- # Load routines to generate keypairs
- . "${ROOT_DIR}/scripts/keygeneration/common.sh"
- # all algs
- algs="0 1 2 3 4 5 6 7 8 9 10 11"
- # output directories
- PREAMBLE_DIR="${SCRIPT_DIR}/preamble_tests"
- DATADIR="${PREAMBLE_DIR}/data"
- V2DIR="${PREAMBLE_DIR}/preamble_v2x"
- for d in "${PREAMBLE_DIR}" "${DATADIR}" "${V2DIR}"; do
- [ -d "$d" ] || mkdir -p "$d"
- done
- # generate a bunch of data keys
- for d in $algs; do
- make_pair "${DATADIR}/data_$d" "$d"
- done
- # generate a bunch of root keys
- for r in $algs; do
- make_pair "${DATADIR}/root_$r" "$r"
- done
- # generate keyblocks using all possible combinations
- for d in $algs; do
- for r in $algs; do
- make_keyblock "${DATADIR}/kb_${d}_${r}" 15 \
- "${DATADIR}/data_$d" "${DATADIR}/root_$r"
- done
- done
- # make a dummy kernel key because we have to have one (crosbug.com/27142)
- make_pair "${DATADIR}/dummy_0" 0
- # and a few more dummy files just because (crosbug.com/23548)
- echo "hi there" > "${DATADIR}/dummy_config.txt"
- dd if=/dev/urandom bs=32768 count=1 of="${DATADIR}/dummy_bootloader.bin"
- # make some fake data
- dd if=/dev/urandom of="${DATADIR}/FWDATA" bs=32768 count=1
- dd if=/dev/urandom of="${DATADIR}/KERNDATA" bs=32768 count=1
- # Now sign the firmware and kernel data in all the possible ways using the
- # pre-change tools.
- for d in $algs; do
- for r in $algs; do
- vbutil_firmware --vblock "${V2DIR}/fw_${d}_${r}.vblock" \
- --keyblock "${DATADIR}/kb_${d}_${r}.keyblock" \
- --signprivate "${DATADIR}/data_${d}.vbprivk" \
- --version 1 \
- --kernelkey "${DATADIR}/dummy_0.vbpubk" \
- --fv "${DATADIR}/FWDATA"
- vbutil_kernel --pack "${V2DIR}/kern_${d}_${r}.vblock" \
- --keyblock "${DATADIR}/kb_${d}_${r}.keyblock" \
- --signprivate "${DATADIR}/data_${d}.vbprivk" \
- --version 1 \
- --arch arm \
- --vmlinuz "${DATADIR}/KERNDATA" \
- --bootloader "${DATADIR}/dummy_bootloader.bin" \
- --config "${DATADIR}/dummy_config.txt"
- done
- done
|