1 1.1 elric #!/bin/sh 2 1.1 elric # 3 1.1 elric # Copyright (c) 2004 - 2005 Kungliga Tekniska Hgskolan 4 1.1 elric # (Royal Institute of Technology, Stockholm, Sweden). 5 1.1 elric # All rights reserved. 6 1.1 elric # 7 1.1 elric # Redistribution and use in source and binary forms, with or without 8 1.1 elric # modification, are permitted provided that the following conditions 9 1.1 elric # are met: 10 1.1 elric # 11 1.1 elric # 1. Redistributions of source code must retain the above copyright 12 1.1 elric # notice, this list of conditions and the following disclaimer. 13 1.1 elric # 14 1.1 elric # 2. Redistributions in binary form must reproduce the above copyright 15 1.1 elric # notice, this list of conditions and the following disclaimer in the 16 1.1 elric # documentation and/or other materials provided with the distribution. 17 1.1 elric # 18 1.1 elric # 3. Neither the name of the Institute nor the names of its contributors 19 1.1 elric # may be used to endorse or promote products derived from this software 20 1.1 elric # without specific prior written permission. 21 1.1 elric # 22 1.1 elric # THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 23 1.1 elric # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24 1.1 elric # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25 1.1 elric # ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 26 1.1 elric # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27 1.1 elric # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28 1.1 elric # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 1.1 elric # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 1.1 elric # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 1.1 elric # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 1.1 elric # SUCH DAMAGE. 33 1.1 elric # 34 1.1.1.2 elric # Id 35 1.1 elric # 36 1.1 elric 37 1.1 elric srcdir="@srcdir@" 38 1.1 elric objdir="@objdir@" 39 1.1 elric nistdir=${objdir}/PKITS_data 40 1.1 elric nistzip=${srcdir}/data/PKITS_data.zip 41 1.1 elric 42 1.1 elric stat="--statistic-file=${objdir}/statfile" 43 1.1 elric 44 1.1 elric hxtool="${TESTS_ENVIRONMENT} ./hxtool ${stat}" 45 1.1 elric 46 1.1 elric # nistzip is not distributed part of the distribution 47 1.1 elric test -f "$nistzip" || exit 77 48 1.1 elric 49 1.1 elric if ${hxtool} info | grep 'rsa: hcrypto null RSA' > /dev/null ; then 50 1.1 elric exit 77 51 1.1 elric fi 52 1.1 elric if ${hxtool} info | grep 'rand: not available' > /dev/null ; then 53 1.1 elric exit 77 54 1.1 elric fi 55 1.1 elric 56 1.1 elric echo "nist tests" 57 1.1 elric 58 1.1 elric if [ ! -d "$nistdir" ] ; then 59 1.1 elric ( mkdir "$nistdir" && unzip -d "${nistdir}" "${nistzip}" ) >/dev/null || \ 60 1.1 elric { rm -rf "$nistdir" ; exit 1; } 61 1.1 elric fi 62 1.1 elric 63 1.1 elric while read id verify cert arg1 arg2 arg3 arg4 arg5 ; do 64 1.1 elric expr "$id" : "#" > /dev/null && continue 65 1.1 elric 66 1.1 elric test "$id" = "end" && break 67 1.1 elric 68 1.1 elric args="" 69 1.1 elric case "$arg1" in 70 1.1 elric *.crt) args="$args chain:FILE:$nistdir/certs/$arg1" ;; 71 1.1 elric *.crl) args="$args crl:FILE:$nistdir/crls/$arg1" ;; 72 1.1 elric *) args="$args $arg1" ;; 73 1.1 elric esac 74 1.1 elric case "$arg2" in 75 1.1 elric *.crt) args="$args chain:FILE:$nistdir/certs/$arg2" ;; 76 1.1 elric *.crl) args="$args crl:FILE:$nistdir/crls/$arg2" ;; 77 1.1 elric *) args="$args $arg2" ;; 78 1.1 elric esac 79 1.1 elric case "$arg3" in 80 1.1 elric *.crt) args="$args chain:FILE:$nistdir/certs/$arg3" ;; 81 1.1 elric *.crl) args="$args crl:FILE:$nistdir/crls/$arg3" ;; 82 1.1 elric *) args="$args $arg3" ;; 83 1.1 elric esac 84 1.1 elric case "$arg4" in 85 1.1 elric *.crt) args="$args chain:FILE:$nistdir/certs/$arg4" ;; 86 1.1 elric *.crl) args="$args crl:FILE:$nistdir/crls/$arg4" ;; 87 1.1 elric *) args="$args $arg4" ;; 88 1.1 elric esac 89 1.1 elric case "$arg5" in 90 1.1 elric *.crt) args="$args chain:FILE:$nistdir/certs/$arg5" ;; 91 1.1 elric *.crl) args="$args crl:FILE:$nistdir/crls/$arg5" ;; 92 1.1 elric *) args="$args $arg5" ;; 93 1.1 elric esac 94 1.1 elric 95 1.1 elric args="$args anchor:FILE:$nistdir/certs/TrustAnchorRootCertificate.crt" 96 1.1 elric args="$args crl:FILE:$nistdir/crls/TrustAnchorRootCRL.crl" 97 1.1 elric args="$args cert:FILE:$nistdir/certs/$cert" 98 1.1 elric 99 1.1.1.3 pettai if ${hxtool} verify --time=2008-05-20 $args > /dev/null; then 100 1.1 elric if test "$verify" = "f"; then 101 1.1 elric echo "verify passed on fail: $id $cert" 102 1.1 elric exit 1 103 1.1 elric fi 104 1.1 elric else 105 1.1 elric if test "$verify" = "p"; then 106 1.1 elric echo "verify failed on pass: $id $cert" 107 1.1 elric exit 1 108 1.1 elric fi 109 1.1 elric fi 110 1.1 elric 111 1.1 elric done < $srcdir/data/nist-data 112 1.1 elric 113 1.1 elric 114 1.1 elric echo "done!" 115 1.1 elric 116 1.1 elric exit 0 117