blob: 8cee42bd213142a56d7925a00e6127adf4ce292b [file] [log] [blame]
#!/bin/bash
# Copyright (c) 2010 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.
# Generate test cases for use for the RSA verify benchmark.
# Load common constants and variables.
. "$(dirname "$0")/common.sh"
# Use a different directory for fuzzing test cases.
TESTCASE_DIR=${SCRIPT_DIR}/fuzz_testcases
TEST_FILE=${TESTCASE_DIR}/testfile
TEST_FILE_SIZE=500000
# Generate public key signatures and digest on an input file for
# various combinations of message digest algorithms and RSA key sizes.
function generate_fuzzing_images {
echo "Generating signed firmware test image..."
# Generate a test verified boot firmware image and copy root public key.
${UTIL_DIR}/firmware_utility --generate \
--in $1 \
--root_key ${TESTKEY_DIR}/key_rsa8192.pem \
--firmware_sign_key ${TESTKEY_DIR}/key_rsa4096.pem \
--firmware_sign_key_pub ${TESTKEY_DIR}/key_rsa4096.keyb \
--firmware_sign_algorithm 8 \
--firmware_key_version 1 \
--firmware_version 1 \
--out ${TESTCASE_DIR}/firmware.signed
cp ${TESTKEY_DIR}/key_rsa8192.keyb ${TESTCASE_DIR}/root_key.keyb
echo "Generating signed kernel test image..."
# Generate a test verified boot kernel image and copy firmware public key.
${UTIL_DIR}/kernel_utility --generate \
--firmware_key ${TESTKEY_DIR}/key_rsa4096.pem \
--kernel_key ${TESTKEY_DIR}/key_rsa1024.pem \
--kernel_key_pub ${TESTKEY_DIR}/key_rsa1024.keyb \
--firmware_sign_algorithm 8 \
--kernel_sign_algorithm 2 \
--kernel_key_version 1 \
--kernel_version 1 \
--vmlinuz /dev/null \
--config /dev/null \
--bootloader ${TEST_FILE} \
--out ${TESTCASE_DIR}/kernel.signed
cp ${TESTKEY_DIR}/key_rsa4096.keyb ${TESTCASE_DIR}/firmware_key.keyb
}
function pre_work {
# Generate a file to serve as random bytes for firmware/kernel contents.
# NOTE: The kernel and config file can't really be random, but the bootloader
# can. That's probably close enough.
echo "Generating test file..."
dd if=/dev/urandom of=${TEST_FILE} bs=${TEST_FILE_SIZE} count=1
}
mkdir -p ${TESTCASE_DIR}
pre_work
check_test_keys
generate_fuzzing_images ${TEST_FILE}