xref: /aosp_15_r20/external/vboot_reference/tests/gen_test_cases.sh (revision 8617a60d3594060b7ecbd21bc622a7c14f3cf2bc)
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 cases for use for the RSA verify benchmark.
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 WorkerTEST_FILE=${TESTCASE_DIR}/test_file
13*8617a60dSAndroid Build Coastguard WorkerTEST_FILE_SIZE=1000000
14*8617a60dSAndroid Build Coastguard Worker
15*8617a60dSAndroid Build Coastguard Worker# Generate public key signatures on an input file for various combinations
16*8617a60dSAndroid Build Coastguard Worker# of message digest algorithms and RSA key sizes.
17*8617a60dSAndroid Build Coastguard Workerfunction generate_test_signatures {
18*8617a60dSAndroid Build Coastguard Worker  echo "Generating test signatures..."
19*8617a60dSAndroid Build Coastguard Worker  algorithmcounter=0
20*8617a60dSAndroid Build Coastguard Worker  for keylen in "${key_lengths[@]}"
21*8617a60dSAndroid Build Coastguard Worker  do
22*8617a60dSAndroid Build Coastguard Worker    for hashalgo in "${hash_algos[@]}"
23*8617a60dSAndroid Build Coastguard Worker    do
24*8617a60dSAndroid Build Coastguard Worker      openssl dgst "-${hashalgo}" -binary "${TEST_FILE}" > \
25*8617a60dSAndroid Build Coastguard Worker        "${TEST_FILE}.${hashalgo}.digest"
26*8617a60dSAndroid Build Coastguard Worker      "${BIN_DIR}/signature_digest_utility" "$algorithmcounter"  \
27*8617a60dSAndroid Build Coastguard Worker        "${TEST_FILE}" | openssl rsautl \
28*8617a60dSAndroid Build Coastguard Worker        -sign -pkcs -inkey "${TESTKEY_DIR}/key_rsa${keylen}.pem" \
29*8617a60dSAndroid Build Coastguard Worker        > "${TEST_FILE}.rsa${keylen}_${hashalgo}.sig"
30*8617a60dSAndroid Build Coastguard Worker      algorithmcounter=$((algorithmcounter + 1))
31*8617a60dSAndroid Build Coastguard Worker    done
32*8617a60dSAndroid Build Coastguard Worker  done
33*8617a60dSAndroid Build Coastguard Worker}
34*8617a60dSAndroid Build Coastguard Worker
35*8617a60dSAndroid Build Coastguard Worker# Generate a file with random bytes for signature tests.
36*8617a60dSAndroid Build Coastguard Workerfunction generate_test_file {
37*8617a60dSAndroid Build Coastguard Worker  echo "Generating test file..."
38*8617a60dSAndroid Build Coastguard Worker  if [ -f "${TEST_FILE}" ]; then
39*8617a60dSAndroid Build Coastguard Worker    echo "(skipping, file already exists)"
40*8617a60dSAndroid Build Coastguard Worker    return
41*8617a60dSAndroid Build Coastguard Worker  fi
42*8617a60dSAndroid Build Coastguard Worker  dd if=/dev/urandom of="${TEST_FILE}" bs="${TEST_FILE_SIZE}" count=1
43*8617a60dSAndroid Build Coastguard Worker}
44*8617a60dSAndroid Build Coastguard Worker
45*8617a60dSAndroid Build Coastguard Workermkdir -p "${TESTCASE_DIR}"
46*8617a60dSAndroid Build Coastguard Workercheck_test_keys
47*8617a60dSAndroid Build Coastguard Workergenerate_test_file
48*8617a60dSAndroid Build Coastguard Workergenerate_test_signatures
49