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