Index: src/platform/vboot_reference/tests/gen_test_cases.sh |
diff --git a/src/platform/vboot_reference/tests/gen_test_cases.sh b/src/platform/vboot_reference/tests/gen_test_cases.sh |
new file mode 100755 |
index 0000000000000000000000000000000000000000..b15921d61e00ce0045ea747a4b4c6081dba518a5 |
--- /dev/null |
+++ b/src/platform/vboot_reference/tests/gen_test_cases.sh |
@@ -0,0 +1,54 @@ |
+#!/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 cases for use for the RSA verify benchmark. |
+ |
+KEY_DIR=testkeys |
+TESTCASE_DIR=testcases |
+UTIL_DIR=../utils/ |
+TEST_FILE=test_file |
+TEST_FILE_SIZE=1000000 |
+ |
+hash_algos=( sha1 sha256 sha512 ) |
+key_lengths=( 1024 2048 4096 8192 ) |
+ |
+# Generate public key signatures and digest on an input file for |
+# various combinations of message digest algorithms and RSA key sizes. |
+function generate_test_signatures { |
+ algorithmcounter=0 |
+ for keylen in ${key_lengths[@]} |
+ do |
+ for hashalgo in ${hash_algos[@]} |
+ do |
+ openssl dgst -${hashalgo} -binary -out $1.${hashalgo}.digest $1 |
+ ${UTIL_DIR}/signature_digest $algorithmcounter $1 | openssl rsautl -sign \ |
+ -pkcs -inkey ${KEY_DIR}/key_rsa${keylen}.pem \ |
+ > $1.rsa${keylen}_${hashalgo}.sig |
+ let algorithmcounter=algorithmcounter+1 |
+ done |
+ done |
+} |
+ |
+function pre_work { |
+ # Generate a file with random bytes for signature tests. |
+ echo "Generating test file..." |
+ dd if=/dev/urandom of=${TESTCASE_DIR}/${TEST_FILE} bs=${TEST_FILE_SIZE} count=1 |
+} |
+ |
+if [ ! -d "$KEY_DIR" ] |
+then |
+ echo "You must run gen_test_cases.sh to generate test keys first." |
+ exit 1 |
+fi |
+ |
+if [ ! -d "$TESTCASE_DIR" ] |
+then |
+ mkdir "$TESTCASE_DIR" |
+fi |
+ |
+pre_work |
+echo "Generating test signatures..." |
+generate_test_signatures ${TESTCASE_DIR}/$TEST_FILE |