| #!/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} |