Gaurav Shah | e3ef9c9 | 2010-02-10 23:07:02 -0800 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 4 | # Use of this source code is governed by a BSD-style license that can be |
| 5 | # found in the LICENSE file. |
Gaurav Shah | 445925f | 2010-03-19 16:19:09 -0700 | [diff] [blame] | 6 | # |
Gaurav Shah | e3ef9c9 | 2010-02-10 23:07:02 -0800 | [diff] [blame] | 7 | # Generate test keys for use by the tests. |
| 8 | |
Gaurav Shah | 445925f | 2010-03-19 16:19:09 -0700 | [diff] [blame] | 9 | # Load common constants and variables. |
| 10 | . "$(dirname "$0")/common.sh" |
Gaurav Shah | e3ef9c9 | 2010-02-10 23:07:02 -0800 | [diff] [blame] | 11 | |
vbendeb | a222fbc | 2010-09-29 20:25:29 -0700 | [diff] [blame] | 12 | set -e |
| 13 | |
vbendeb | a222fbc | 2010-09-29 20:25:29 -0700 | [diff] [blame] | 14 | sha_types=( 1 256 512 ) |
| 15 | |
| 16 | # Generate RSA test keys of various lengths. |
Gaurav Shah | e3ef9c9 | 2010-02-10 23:07:02 -0800 | [diff] [blame] | 17 | function generate_keys { |
vbendeb | a222fbc | 2010-09-29 20:25:29 -0700 | [diff] [blame] | 18 | key_index=0 |
| 19 | key_name_base="${TESTKEY_DIR}/key_rsa" |
Gaurav Shah | e3ef9c9 | 2010-02-10 23:07:02 -0800 | [diff] [blame] | 20 | for i in ${key_lengths[@]} |
| 21 | do |
vbendeb | a222fbc | 2010-09-29 20:25:29 -0700 | [diff] [blame] | 22 | key_base="${key_name_base}${i}" |
| 23 | if [ -f "${key_base}.keyb" ]; then |
vbendeb | 70e9509 | 2010-06-14 15:41:27 -0700 | [diff] [blame] | 24 | continue |
| 25 | fi |
vbendeb | a222fbc | 2010-09-29 20:25:29 -0700 | [diff] [blame] | 26 | |
| 27 | openssl genrsa -F4 -out ${key_base}.pem $i |
Gaurav Shah | e3ef9c9 | 2010-02-10 23:07:02 -0800 | [diff] [blame] | 28 | # Generate self-signed certificate from key. |
vbendeb | a222fbc | 2010-09-29 20:25:29 -0700 | [diff] [blame] | 29 | openssl req -batch -new -x509 -key ${key_base}.pem \ |
| 30 | -out ${key_base}.crt |
| 31 | |
Gaurav Shah | e3ef9c9 | 2010-02-10 23:07:02 -0800 | [diff] [blame] | 32 | # Generate pre-processed key for use by RSA signature verification code. |
Bill Richardson | 3e3790d | 2014-07-14 15:05:54 -0700 | [diff] [blame] | 33 | ${BIN_DIR}/dumpRSAPublicKey -cert ${key_base}.crt \ |
vbendeb | a222fbc | 2010-09-29 20:25:29 -0700 | [diff] [blame] | 34 | > ${key_base}.keyb |
| 35 | |
| 36 | alg_index=0 |
| 37 | for sha_type in ${sha_types[@]} |
| 38 | do |
| 39 | alg=$((${key_index} * 3 + ${alg_index})) |
| 40 | # wrap the public key |
Bill Richardson | a1d9fe6 | 2014-09-05 12:52:27 -0700 | [diff] [blame] | 41 | ${FUTILITY} vbutil_key \ |
vbendeb | a222fbc | 2010-09-29 20:25:29 -0700 | [diff] [blame] | 42 | --pack "${key_base}.sha${sha_type}.vbpubk" \ |
| 43 | --key "${key_base}.keyb" \ |
| 44 | --version 1 \ |
| 45 | --algorithm ${alg} |
| 46 | |
| 47 | # wrap the private key |
Bill Richardson | a1d9fe6 | 2014-09-05 12:52:27 -0700 | [diff] [blame] | 48 | ${FUTILITY} vbutil_key \ |
vbendeb | a222fbc | 2010-09-29 20:25:29 -0700 | [diff] [blame] | 49 | --pack "${key_base}.sha${sha_type}.vbprivk" \ |
| 50 | --key "${key_base}.pem" \ |
| 51 | --algorithm ${alg} |
| 52 | alg_index=$((${alg_index} + 1)) |
| 53 | done |
| 54 | key_index=$((${key_index} + 1)) |
Gaurav Shah | e3ef9c9 | 2010-02-10 23:07:02 -0800 | [diff] [blame] | 55 | done |
| 56 | } |
| 57 | |
Gaurav Shah | 445925f | 2010-03-19 16:19:09 -0700 | [diff] [blame] | 58 | mkdir -p ${TESTKEY_DIR} |
Gaurav Shah | e3ef9c9 | 2010-02-10 23:07:02 -0800 | [diff] [blame] | 59 | generate_keys |