Index: src/platform/vboot_reference/tests/run_image_verification_tests.sh |
diff --git a/src/platform/vboot_reference/tests/run_image_verification_tests.sh b/src/platform/vboot_reference/tests/run_image_verification_tests.sh |
new file mode 100755 |
index 0000000000000000000000000000000000000000..19feae2378f0c0c35d71d0f46e28f95d288ebefa |
--- /dev/null |
+++ b/src/platform/vboot_reference/tests/run_image_verification_tests.sh |
@@ -0,0 +1,100 @@ |
+#!/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. |
+ |
+# Run verified boot firmware and kernel verification tests. |
+ |
+return_code=0 |
+hash_algos=( sha1 sha256 sha512 ) |
+key_lengths=( 1024 2048 4096 8192 ) |
+TEST_FILE=test_file |
+TEST_FILE_SIZE=1000000 |
+ |
+COL_RED='\E[31;1m' |
+COL_GREEN='\E[32;1m' |
+COL_YELLOW='\E[33;1m' |
+COL_BLUE='\E[34;1m' |
+COL_STOP='\E[0;m' |
+ |
+function test_firmware_verification { |
+ algorithmcounter=0 |
+ for keylen in ${key_lengths[@]} |
+ do |
+ for hashalgo in ${hash_algos[@]} |
+ do |
+ echo -e "For Root key ${COL_YELLOW}RSA-$keylen/$hashalgo${COL_STOP}:" |
+ cd ${UTIL_DIR} && ${TEST_DIR}/firmware_image_tests $algorithmcounter \ |
+ ${TEST_DIR}/testkeys/key_rsa8192.pem \ |
+ ${TEST_DIR}/testkeys/key_rsa8192.keyb \ |
+ ${TEST_DIR}/testkeys/key_rsa${keylen}.pem \ |
+ ${TEST_DIR}/testkeys/key_rsa${keylen}.keyb |
+ if [ $? -ne 0 ] |
+ then |
+ return_code=255 |
+ fi |
+ let algorithmcounter=algorithmcounter+1 |
+ done |
+ done |
+} |
+ |
+function test_kernel_verification { |
+# Test for various combinations of firmware signing algorithm and |
+# kernel signing algorithm |
+ firmware_algorithmcounter=0 |
+ kernel_algorithmcounter=0 |
+ for firmware_keylen in ${key_lengths[@]} |
+ do |
+ for firmware_hashalgo in ${hash_algos[@]} |
+ do |
+ let kernel_algorithmcounter=0 |
+ for kernel_keylen in ${key_lengths[@]} |
+ do |
+ for kernel_hashalgo in ${hash_algos[@]} |
+ do |
+ echo -e "For ${COL_YELLOW}Firmware signing algorithm \ |
+RSA-${firmware_keylen}/${firmware_hashalgo}${COL_STOP} \ |
+and ${COL_YELLOW}Kernel signing algorithm RSA-${kernel_keylen}/\ |
+${kernel_hashalgo}${COL_STOP}" |
+ cd ${UTIL_DIR} && ${TEST_DIR}/kernel_image_tests \ |
+ $firmware_algorithmcounter $kernel_algorithmcounter \ |
+ ${TEST_DIR}/testkeys/key_rsa${firmware_keylen}.pem \ |
+ ${TEST_DIR}/testkeys/key_rsa${firmware_keylen}.keyb \ |
+ ${TEST_DIR}/testkeys/key_rsa${kernel_keylen}.pem \ |
+ ${TEST_DIR}/testkeys/key_rsa${kernel_keylen}.keyb |
+ if [ $? -ne 0 ] |
+ then |
+ return_code=255 |
+ fi |
+ let kernel_algorithmcounter=kernel_algorithmcounter+1 |
+ done |
+ done |
+ let firmware_algorithmcounter=firmware_algorithmcounter+1 |
+ done |
+ done |
+} |
+ |
+# Determine script directory. |
+if [[ $0 == '/'* ]]; |
+then |
+ SCRIPT_DIR="`dirname $0`" |
+elif [[ $0 == './'* ]]; |
+then |
+ SCRIPT_DIR="`pwd`" |
+else |
+ SCRIPT_DIR="`pwd`"/"`dirname $0`" |
+fi |
+UTIL_DIR=`dirname ${SCRIPT_DIR}`/utils |
+KEY_DIR=${SCRIPT_DIR}/testkeys |
+TEST_DIR=${SCRIPT_DIR}/ |
+ |
+echo |
+echo "Testing high-level firmware image verification..." |
+test_firmware_verification |
+ |
+echo |
+echo "Testing high-level kernel image verification..." |
+test_kernel_verification |
+ |
+exit $return_code |