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# Determine script directory. 8*8617a60dSAndroid Build Coastguard WorkerSCRIPT_DIR="$(dirname "$(realpath "${BASH_SOURCE[0]}")")" 9*8617a60dSAndroid Build Coastguard WorkerROOT_DIR="$(dirname "${SCRIPT_DIR}")" 10*8617a60dSAndroid Build Coastguard WorkerSRCDIR="${ROOT_DIR}" 11*8617a60dSAndroid Build Coastguard Worker# BUILD_RUN should be supplied from the Makefile. 12*8617a60dSAndroid Build Coastguard Worker# Some test scripts change the cwd so use an absolute path. 13*8617a60dSAndroid Build Coastguard WorkerBUILD_RUN="$(realpath "${BUILD_RUN}")" 14*8617a60dSAndroid Build Coastguard WorkerBIN_DIR="${BUILD_RUN}/install_for_test/usr/bin" 15*8617a60dSAndroid Build Coastguard WorkerFUTILITY="${BIN_DIR}/futility" 16*8617a60dSAndroid Build Coastguard WorkerTEST_DIR="${BUILD_RUN}/tests" 17*8617a60dSAndroid Build Coastguard WorkerTESTKEY_DIR="${SCRIPT_DIR}/testkeys" 18*8617a60dSAndroid Build Coastguard WorkerTESTCASE_DIR="${SCRIPT_DIR}/testcases" 19*8617a60dSAndroid Build Coastguard WorkerTESTKEY_SCRATCH_DIR="${TEST_DIR}/testkeys" 20*8617a60dSAndroid Build Coastguard Worker 21*8617a60dSAndroid Build Coastguard Workerif [ ! -d "${TESTKEY_SCRATCH_DIR}" ]; then 22*8617a60dSAndroid Build Coastguard Worker mkdir -p "${TESTKEY_SCRATCH_DIR}" 23*8617a60dSAndroid Build Coastguard Workerfi 24*8617a60dSAndroid Build Coastguard Worker 25*8617a60dSAndroid Build Coastguard Worker# Color output encodings. 26*8617a60dSAndroid Build Coastguard WorkerCOL_RED='\E[31;1m' 27*8617a60dSAndroid Build Coastguard WorkerCOL_GREEN='\E[32;1m' 28*8617a60dSAndroid Build Coastguard WorkerCOL_YELLOW='\E[33;1m' 29*8617a60dSAndroid Build Coastguard WorkerCOL_BLUE='\E[34;1m' 30*8617a60dSAndroid Build Coastguard WorkerCOL_STOP='\E[0;m' 31*8617a60dSAndroid Build Coastguard Worker 32*8617a60dSAndroid Build Coastguard Workerhash_algos=( sha1 sha256 sha512 ) 33*8617a60dSAndroid Build Coastguard Workerkey_lengths=( 1024 2048 4096 8192 2048_exp3 3072_exp3 ) 34*8617a60dSAndroid Build Coastguard Worker 35*8617a60dSAndroid Build Coastguard Workerfunction happy { 36*8617a60dSAndroid Build Coastguard Worker echo -e "${COL_GREEN}$*${COL_STOP}" 1>&2 37*8617a60dSAndroid Build Coastguard Worker} 38*8617a60dSAndroid Build Coastguard Worker 39*8617a60dSAndroid Build Coastguard Worker# args: [nested level [message]] 40*8617a60dSAndroid Build Coastguard Workerfunction warning { 41*8617a60dSAndroid Build Coastguard Worker echo -e "${COL_YELLOW}WARNING: $*${COL_STOP}" 1>&2 42*8617a60dSAndroid Build Coastguard Worker} 43*8617a60dSAndroid Build Coastguard Worker 44*8617a60dSAndroid Build Coastguard Worker# args: [nested level [message]] 45*8617a60dSAndroid Build Coastguard Workerfunction error { 46*8617a60dSAndroid Build Coastguard Worker local lev=${1:-} 47*8617a60dSAndroid Build Coastguard Worker case "${1:-}" in 48*8617a60dSAndroid Build Coastguard Worker [0-9]*) 49*8617a60dSAndroid Build Coastguard Worker lev=$1 50*8617a60dSAndroid Build Coastguard Worker shift 51*8617a60dSAndroid Build Coastguard Worker ;; 52*8617a60dSAndroid Build Coastguard Worker *) lev=0 53*8617a60dSAndroid Build Coastguard Worker ;; 54*8617a60dSAndroid Build Coastguard Worker esac 55*8617a60dSAndroid Build Coastguard Worker local x 56*8617a60dSAndroid Build Coastguard Worker x=$(caller $lev) 57*8617a60dSAndroid Build Coastguard Worker local cline=${x%% *} 58*8617a60dSAndroid Build Coastguard Worker local cfunc=${x#* } 59*8617a60dSAndroid Build Coastguard Worker cfunc=${cfunc##*/} 60*8617a60dSAndroid Build Coastguard Worker local args="$*" 61*8617a60dSAndroid Build Coastguard Worker local spacer=${args:+: } 62*8617a60dSAndroid Build Coastguard Worker echo -e "${COL_RED}ERROR at ${cfunc}, line ${cline}${spacer}${args}" \ 63*8617a60dSAndroid Build Coastguard Worker "${COL_STOP}" 1>&2 64*8617a60dSAndroid Build Coastguard Worker exit 1 65*8617a60dSAndroid Build Coastguard Worker} 66*8617a60dSAndroid Build Coastguard Worker 67*8617a60dSAndroid Build Coastguard Workerfunction check_test_keys { 68*8617a60dSAndroid Build Coastguard Worker [ -d "${TESTKEY_DIR}" ] || \ 69*8617a60dSAndroid Build Coastguard Worker error 1 "You must run gen_test_keys.sh to generate test keys first." 70*8617a60dSAndroid Build Coastguard Worker} 71