#!/usr/bin/env bash # # Copyright (C) 2012 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # This script sets up the execution of the test extraction script # STORAGE_DIR="res/tests/resources/nist-pkits" TARGET="src/libcore/java/security/cert/X509CertificateNistPkitsTest.java" set -e trap "echo WARNING: Exiting on non-zero subprocess exit code" ERR; usage() { echo "$0: generates test cases from the NIST PKITS documentation" echo "" echo "Usage: $0 PKITS.pdf PKITS_data.zip" exit 1 } if [ $# -ne 2 ]; then usage fi PDF="${1}" ZIP="${2}" if [ ! -f "${PDF}" -o "${PDF#${PDF%.pdf}}" != ".pdf" ]; then echo "The first argument must point to PKITS.pdf" echo "" usage elif [ ! -f "${ZIP}" -o "${ZIP#${ZIP%.zip}}" != ".zip" ]; then echo "The second argument must point to PKITS_data.zip" echo "" usage fi if [ ! -f "${TARGET}" ]; then echo "Can not file file:" echo " ${TARGET}" echo "" usage fi PDFTOTEXT=$(which pdftotext) if [ -z "${PDFTOTEXT}" -o ! -x "${PDFTOTEXT}" ]; then echo "pdftotext must be installed. Try" echo " apt-get install pdftotext" exit 1 fi TEMP_TEXT=$(mktemp --tmpdir PKITS.txt.XXXXXXXX) TEMP_JAVA=$(mktemp --tmpdir generated-nist-tests.XXXXXXXXX) TEMP_FILES=$(mktemp --tmpdir generated-nist-files.XXXXXXXXX) ${PDFTOTEXT} -layout -nopgbrk -eol unix "${PDF}" "${TEMP_TEXT}" "$(dirname "$0")/extract-pkits-tests.pl" "${TEMP_TEXT}" "${TEMP_JAVA}" "${TEMP_FILES}" sed -i '/DO NOT MANUALLY EDIT -- BEGIN AUTOMATICALLY GENERATED TESTS/,/DO NOT MANUALLY EDIT -- END AUTOMATICALLY GENERATED TESTS/{//!d}' "${TARGET}" sed -i '/DO NOT MANUALLY EDIT -- BEGIN AUTOMATICALLY GENERATED TESTS/r '"${TEMP_JAVA}" "${TARGET}" pushd "$(dirname "$0")" mkdir -p "${STORAGE_DIR}" while IFS= read -r -d $'\n' file; do unzip -q -o -d "${STORAGE_DIR}" "${ZIP}" "${file}" done < "${TEMP_FILES}" popd shasum_file() { declare -r file="$1" pushd "$(dirname "${file}")" > /dev/null 2>&1 sha256sum -b "$(basename "${file}")" popd > /dev/null 2>&1 } echo Writing pkits.version ... echo "# sha256sum of PKITS" > pkits.version shasum_file "${PDF}" >> pkits.version shasum_file "${ZIP}" >> pkits.version echo Updated tests: ${TARGET}