blob: 04315ac3138daa2bc13446898740102e0f1f2cd4 [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 keys for use by the tests.
# Load common constants and variables.
. "$(dirname "$0")/common.sh"
set -e
sha_types=( 1 256 512 )
# Generate RSA test keys of various lengths.
function generate_keys {
key_index=0
key_name_base="${TESTKEY_DIR}/key_rsa"
for i in ${key_lengths[@]}
do
key_base="${key_name_base}${i}"
if [ -f "${key_base}.keyb" ]; then
key_index=$((${key_index} + 1))
continue
fi
# Extract exponent from key_length name, if necessary
exp="F4"
bits=$i
if [ "${i##*_exp}" != "${i}" ]; then
exp="${i##*_exp}"
bits="${i%%_exp${exp}}"
fi
openssl genrsa -${exp} -out ${key_base}.pem ${bits}
# Generate self-signed certificate from key.
openssl req -batch -new -x509 -key ${key_base}.pem \
-out ${key_base}.crt
# Generate pre-processed key for use by RSA signature verification code.
${BIN_DIR}/dumpRSAPublicKey -cert ${key_base}.crt \
> ${key_base}.keyb
alg_index=0
for sha_type in ${sha_types[@]}
do
alg=$((${key_index} * 3 + ${alg_index}))
# wrap the public key
${FUTILITY} vbutil_key \
--pack "${key_base}.sha${sha_type}.vbpubk" \
--key "${key_base}.keyb" \
--version 1 \
--algorithm ${alg}
# wrap the private key
${FUTILITY} vbutil_key \
--pack "${key_base}.sha${sha_type}.vbprivk" \
--key "${key_base}.pem" \
--algorithm ${alg}
alg_index=$((${alg_index} + 1))
done
key_index=$((${key_index} + 1))
done
}
mkdir -p ${TESTKEY_DIR}
generate_keys