1*8617a60dSAndroid Build Coastguard Worker#!/bin/bash 2*8617a60dSAndroid Build Coastguard Worker 3*8617a60dSAndroid Build Coastguard Worker# Copyright 2010 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# Generate test keys for use by the tests. 8*8617a60dSAndroid Build Coastguard Worker 9*8617a60dSAndroid Build Coastguard Worker# Load common constants and variables. 10*8617a60dSAndroid Build Coastguard Worker. "$(dirname "$0")/common.sh" 11*8617a60dSAndroid Build Coastguard Worker 12*8617a60dSAndroid Build Coastguard Workerset -e 13*8617a60dSAndroid Build Coastguard Worker 14*8617a60dSAndroid Build Coastguard Workersha_types=( 1 256 512 ) 15*8617a60dSAndroid Build Coastguard Worker 16*8617a60dSAndroid Build Coastguard Worker# Generate RSA test keys of various lengths. 17*8617a60dSAndroid Build Coastguard Workerfunction generate_keys { 18*8617a60dSAndroid Build Coastguard Worker key_index=0 19*8617a60dSAndroid Build Coastguard Worker key_name_base="${TESTKEY_DIR}/key_rsa" 20*8617a60dSAndroid Build Coastguard Worker for i in "${key_lengths[@]}" 21*8617a60dSAndroid Build Coastguard Worker do 22*8617a60dSAndroid Build Coastguard Worker key_base="${key_name_base}${i}" 23*8617a60dSAndroid Build Coastguard Worker if [ -f "${key_base}.keyb" ]; then 24*8617a60dSAndroid Build Coastguard Worker key_index=$((key_index + 1)) 25*8617a60dSAndroid Build Coastguard Worker continue 26*8617a60dSAndroid Build Coastguard Worker fi 27*8617a60dSAndroid Build Coastguard Worker 28*8617a60dSAndroid Build Coastguard Worker # Extract exponent from key_length name, if necessary 29*8617a60dSAndroid Build Coastguard Worker exp="F4" 30*8617a60dSAndroid Build Coastguard Worker bits=$i 31*8617a60dSAndroid Build Coastguard Worker if [ "${i##*_exp}" != "${i}" ]; then 32*8617a60dSAndroid Build Coastguard Worker exp="${i##*_exp}" 33*8617a60dSAndroid Build Coastguard Worker bits="${i%%_exp${exp}}" 34*8617a60dSAndroid Build Coastguard Worker fi 35*8617a60dSAndroid Build Coastguard Worker 36*8617a60dSAndroid Build Coastguard Worker openssl genrsa "-${exp}" -out "${key_base}.pem" "${bits}" 37*8617a60dSAndroid Build Coastguard Worker # Generate self-signed certificate from key. 38*8617a60dSAndroid Build Coastguard Worker openssl req -batch -new -x509 -key "${key_base}.pem" \ 39*8617a60dSAndroid Build Coastguard Worker -out "${key_base}.crt" 40*8617a60dSAndroid Build Coastguard Worker 41*8617a60dSAndroid Build Coastguard Worker # Generate pre-processed key for use by RSA signature verification code. 42*8617a60dSAndroid Build Coastguard Worker "${BIN_DIR}/dumpRSAPublicKey" -cert "${key_base}.crt" > "${key_base}.keyb" 43*8617a60dSAndroid Build Coastguard Worker 44*8617a60dSAndroid Build Coastguard Worker alg_index=0 45*8617a60dSAndroid Build Coastguard Worker for sha_type in "${sha_types[@]}" 46*8617a60dSAndroid Build Coastguard Worker do 47*8617a60dSAndroid Build Coastguard Worker alg=$((key_index * 3 + alg_index)) 48*8617a60dSAndroid Build Coastguard Worker # wrap the public key 49*8617a60dSAndroid Build Coastguard Worker "${FUTILITY}" vbutil_key \ 50*8617a60dSAndroid Build Coastguard Worker --pack "${key_base}.sha${sha_type}.vbpubk" \ 51*8617a60dSAndroid Build Coastguard Worker --key "${key_base}.keyb" \ 52*8617a60dSAndroid Build Coastguard Worker --version 1 \ 53*8617a60dSAndroid Build Coastguard Worker --algorithm ${alg} 54*8617a60dSAndroid Build Coastguard Worker 55*8617a60dSAndroid Build Coastguard Worker # wrap the private key 56*8617a60dSAndroid Build Coastguard Worker "${FUTILITY}" vbutil_key \ 57*8617a60dSAndroid Build Coastguard Worker --pack "${key_base}.sha${sha_type}.vbprivk" \ 58*8617a60dSAndroid Build Coastguard Worker --key "${key_base}.pem" \ 59*8617a60dSAndroid Build Coastguard Worker --algorithm ${alg} 60*8617a60dSAndroid Build Coastguard Worker alg_index=$((alg_index} + 1)) 61*8617a60dSAndroid Build Coastguard Worker done 62*8617a60dSAndroid Build Coastguard Worker key_index=$((key_index + 1)) 63*8617a60dSAndroid Build Coastguard Worker done 64*8617a60dSAndroid Build Coastguard Worker} 65*8617a60dSAndroid Build Coastguard Worker 66*8617a60dSAndroid Build Coastguard Workermkdir -p ${TESTKEY_DIR} 67*8617a60dSAndroid Build Coastguard Workergenerate_keys 68