1c19800e8SDoug Rabson#!/bin/sh 2c19800e8SDoug Rabson# 3*ae771770SStanislav Sedov# Copyright (c) 2004 - 2006 Kungliga Tekniska Högskolan 4c19800e8SDoug Rabson# (Royal Institute of Technology, Stockholm, Sweden). 5c19800e8SDoug Rabson# All rights reserved. 6c19800e8SDoug Rabson# 7c19800e8SDoug Rabson# Redistribution and use in source and binary forms, with or without 8c19800e8SDoug Rabson# modification, are permitted provided that the following conditions 9c19800e8SDoug Rabson# are met: 10c19800e8SDoug Rabson# 11c19800e8SDoug Rabson# 1. Redistributions of source code must retain the above copyright 12c19800e8SDoug Rabson# notice, this list of conditions and the following disclaimer. 13c19800e8SDoug Rabson# 14c19800e8SDoug Rabson# 2. Redistributions in binary form must reproduce the above copyright 15c19800e8SDoug Rabson# notice, this list of conditions and the following disclaimer in the 16c19800e8SDoug Rabson# documentation and/or other materials provided with the distribution. 17c19800e8SDoug Rabson# 18c19800e8SDoug Rabson# 3. Neither the name of the Institute nor the names of its contributors 19c19800e8SDoug Rabson# may be used to endorse or promote products derived from this software 20c19800e8SDoug Rabson# without specific prior written permission. 21c19800e8SDoug Rabson# 22c19800e8SDoug Rabson# THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 23c19800e8SDoug Rabson# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24c19800e8SDoug Rabson# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25c19800e8SDoug Rabson# ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 26c19800e8SDoug Rabson# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27c19800e8SDoug Rabson# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28c19800e8SDoug Rabson# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29c19800e8SDoug Rabson# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30c19800e8SDoug Rabson# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31c19800e8SDoug Rabson# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32c19800e8SDoug Rabson# SUCH DAMAGE. 33c19800e8SDoug Rabson# 34*ae771770SStanislav Sedov# $Id$ 35c19800e8SDoug Rabson# 36c19800e8SDoug Rabson 37c19800e8SDoug Rabsonsrcdir="@srcdir@" 38c19800e8SDoug Rabsonobjdir="@objdir@" 39c19800e8SDoug Rabson 40c19800e8SDoug Rabsonstat="--statistic-file=${objdir}/statfile" 41c19800e8SDoug Rabson 42c19800e8SDoug Rabsonhxtool="${TESTS_ENVIRONMENT} ./hxtool ${stat}" 43c19800e8SDoug Rabsonif ${hxtool} info | grep 'rsa: hcrypto null RSA' > /dev/null ; then 44c19800e8SDoug Rabson exit 77 45c19800e8SDoug Rabsonfi 46c19800e8SDoug Rabsonif ${hxtool} info | grep 'rand: not available' > /dev/null ; then 47c19800e8SDoug Rabson exit 77 48c19800e8SDoug Rabsonfi 49c19800e8SDoug Rabson 50c19800e8SDoug Rabsonecho "cert -> root" 51c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 52c19800e8SDoug Rabson cert:FILE:$srcdir/data/test.crt \ 53c19800e8SDoug Rabson chain:FILE:$srcdir/data/test.crt \ 54c19800e8SDoug Rabson chain:FILE:$srcdir/data/ca.crt \ 55c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null || exit 1 56c19800e8SDoug Rabson 57c19800e8SDoug Rabsonecho "cert -> root" 58c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 59c19800e8SDoug Rabson cert:FILE:$srcdir/data/test.crt \ 60c19800e8SDoug Rabson chain:FILE:$srcdir/data/ca.crt \ 61c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null || exit 1 62c19800e8SDoug Rabson 63c19800e8SDoug Rabsonecho "cert -> root" 64c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 65c19800e8SDoug Rabson cert:FILE:$srcdir/data/test.crt \ 66c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null || exit 1 67c19800e8SDoug Rabson 68c19800e8SDoug Rabsonecho "sub-cert -> root" 69c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 70c19800e8SDoug Rabson cert:FILE:$srcdir/data/sub-cert.crt \ 71c19800e8SDoug Rabson chain:FILE:$srcdir/data/ca.crt \ 72c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null && exit 1 73c19800e8SDoug Rabson 74c19800e8SDoug Rabsonecho "sub-cert -> sub-ca -> root" 75c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 76c19800e8SDoug Rabson cert:FILE:$srcdir/data/sub-cert.crt \ 77c19800e8SDoug Rabson chain:FILE:$srcdir/data/sub-ca.crt \ 78c19800e8SDoug Rabson chain:FILE:$srcdir/data/ca.crt \ 79c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null || exit 1 80c19800e8SDoug Rabson 81c19800e8SDoug Rabsonecho "sub-cert -> sub-ca" 82c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 83c19800e8SDoug Rabson cert:FILE:$srcdir/data/sub-cert.crt \ 84c19800e8SDoug Rabson anchor:FILE:$srcdir/data/sub-ca.crt > /dev/null || exit 1 85c19800e8SDoug Rabson 86c19800e8SDoug Rabsonecho "sub-cert -> sub-ca -> root" 87c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 88c19800e8SDoug Rabson cert:FILE:$srcdir/data/sub-cert.crt \ 89c19800e8SDoug Rabson chain:FILE:$srcdir/data/sub-ca.crt \ 90c19800e8SDoug Rabson chain:FILE:$srcdir/data/ca.crt \ 91c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null || exit 1 92c19800e8SDoug Rabson 93c19800e8SDoug Rabsonecho "sub-cert -> sub-ca -> root" 94c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 95c19800e8SDoug Rabson cert:FILE:$srcdir/data/sub-cert.crt \ 96c19800e8SDoug Rabson chain:FILE:$srcdir/data/ca.crt \ 97c19800e8SDoug Rabson chain:FILE:$srcdir/data/sub-ca.crt \ 98c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null || exit 1 99c19800e8SDoug Rabson 100c19800e8SDoug Rabsonecho "sub-cert -> sub-ca -> root" 101c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 102c19800e8SDoug Rabson cert:FILE:$srcdir/data/sub-cert.crt \ 103c19800e8SDoug Rabson chain:FILE:$srcdir/data/sub-ca.crt \ 104c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null || exit 1 105c19800e8SDoug Rabson 106c19800e8SDoug Rabsonecho "max depth 2 (ok)" 107c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 108c19800e8SDoug Rabson --max-depth=2 \ 109c19800e8SDoug Rabson cert:FILE:$srcdir/data/sub-cert.crt \ 110c19800e8SDoug Rabson chain:FILE:$srcdir/data/sub-ca.crt \ 111c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null && exit 1 112c19800e8SDoug Rabson 113c19800e8SDoug Rabsonecho "max depth 1 (fail)" 114c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 115c19800e8SDoug Rabson --max-depth=1 \ 116c19800e8SDoug Rabson cert:FILE:$srcdir/data/sub-cert.crt \ 117c19800e8SDoug Rabson chain:FILE:$srcdir/data/sub-ca.crt \ 118c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null && exit 1 119c19800e8SDoug Rabson 120c19800e8SDoug Rabsonecho "ocsp non-ca responder" 121c19800e8SDoug Rabson${hxtool} verify \ 122c19800e8SDoug Rabson cert:FILE:$srcdir/data/test.crt \ 123c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt \ 124c19800e8SDoug Rabson ocsp:FILE:$srcdir/data/ocsp-resp1-ocsp.der > /dev/null || exit 1 125c19800e8SDoug Rabson 126c19800e8SDoug Rabsonecho "ocsp ca responder" 127c19800e8SDoug Rabson${hxtool} verify \ 128c19800e8SDoug Rabson cert:FILE:$srcdir/data/test.crt \ 129c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt \ 130c19800e8SDoug Rabson ocsp:FILE:$srcdir/data/ocsp-resp1-ca.der > /dev/null || exit 1 131c19800e8SDoug Rabson 132c19800e8SDoug Rabsonecho "ocsp no-ca responder, missing cert" 133c19800e8SDoug Rabson${hxtool} verify \ 134c19800e8SDoug Rabson cert:FILE:$srcdir/data/test.crt \ 135c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt \ 136c19800e8SDoug Rabson ocsp:FILE:$srcdir/data/ocsp-resp1-ocsp-no-cert.der > /dev/null && exit 1 137c19800e8SDoug Rabson 138c19800e8SDoug Rabsonecho "ocsp no-ca responder, missing cert, in pool" 139c19800e8SDoug Rabson${hxtool} verify \ 140c19800e8SDoug Rabson cert:FILE:$srcdir/data/test.crt \ 141c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt \ 142c19800e8SDoug Rabson ocsp:FILE:$srcdir/data/ocsp-resp1-ocsp-no-cert.der \ 143c19800e8SDoug Rabson chain:FILE:$srcdir/data/ocsp-responder.crt > /dev/null || exit 1 144c19800e8SDoug Rabson 145c19800e8SDoug Rabsonecho "ocsp no-ca responder, keyHash" 146c19800e8SDoug Rabson${hxtool} verify \ 147c19800e8SDoug Rabson cert:FILE:$srcdir/data/test.crt \ 148c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt \ 149c19800e8SDoug Rabson ocsp:FILE:$srcdir/data/ocsp-resp1-keyhash.der > /dev/null || exit 1 150c19800e8SDoug Rabson 151c19800e8SDoug Rabsonecho "ocsp revoked cert" 152c19800e8SDoug Rabson${hxtool} verify \ 153c19800e8SDoug Rabson cert:FILE:$srcdir/data/revoke.crt \ 154c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt \ 155c19800e8SDoug Rabson ocsp:FILE:$srcdir/data/ocsp-resp2.der > /dev/null && exit 1 156c19800e8SDoug Rabson 157c19800e8SDoug Rabsonfor a in resp1-ocsp-no-cert resp1-ca resp1-keyhash resp2 ; do 158c19800e8SDoug Rabson echo "ocsp print reply $a" 159c19800e8SDoug Rabson ${hxtool} ocsp-print \ 160c19800e8SDoug Rabson $srcdir/data/ocsp-${a}.der > /dev/null || exit 1 161c19800e8SDoug Rabsondone 162c19800e8SDoug Rabson 163c19800e8SDoug Rabsonecho "ocsp verify exists" 164c19800e8SDoug Rabson${hxtool} ocsp-verify \ 165c19800e8SDoug Rabson --ocsp-file=$srcdir/data/ocsp-resp1-ca.der \ 166c19800e8SDoug Rabson FILE:$srcdir/data/test.crt > /dev/null || exit 1 167c19800e8SDoug Rabson 168c19800e8SDoug Rabsonecho "ocsp verify not exists" 169c19800e8SDoug Rabson${hxtool} ocsp-verify \ 170c19800e8SDoug Rabson --ocsp-file=$srcdir/data/ocsp-resp1.der \ 171c19800e8SDoug Rabson FILE:$srcdir/data/ca.crt > /dev/null && exit 1 172c19800e8SDoug Rabson 173c19800e8SDoug Rabsonecho "ocsp verify revoked" 174c19800e8SDoug Rabson${hxtool} ocsp-verify \ 175c19800e8SDoug Rabson --ocsp-file=$srcdir/data/ocsp-resp2.der \ 176c19800e8SDoug Rabson FILE:$srcdir/data/revoke.crt > /dev/null && exit 1 177c19800e8SDoug Rabson 178c19800e8SDoug Rabsonecho "crl non-revoked cert" 179c19800e8SDoug Rabson${hxtool} verify \ 180c19800e8SDoug Rabson cert:FILE:$srcdir/data/test.crt \ 181c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt \ 182c19800e8SDoug Rabson crl:FILE:$srcdir/data/crl1.der > /dev/null || exit 1 183c19800e8SDoug Rabson 184c19800e8SDoug Rabsonecho "crl revoked cert" 185c19800e8SDoug Rabson${hxtool} verify \ 186c19800e8SDoug Rabson cert:FILE:$srcdir/data/revoke.crt \ 187c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt \ 188c19800e8SDoug Rabson crl:FILE:$srcdir/data/crl1.der > /dev/null && exit 1 189c19800e8SDoug Rabson 190*ae771770SStanislav Sedovif ${hxtool} info | grep 'ecdsa: hcrypto null' > /dev/null ; then 191*ae771770SStanislav Sedov echo "not testing ECDSA since hcrypto doesnt support ECDSA" 192*ae771770SStanislav Sedovelse 193*ae771770SStanislav Sedov echo "eccert -> root" 194*ae771770SStanislav Sedov ${hxtool} verify --missing-revoke \ 195*ae771770SStanislav Sedov cert:FILE:$srcdir/data/secp160r2TestServer.cert.pem \ 196*ae771770SStanislav Sedov anchor:FILE:$srcdir/data/secp160r1TestCA.cert.pem > /dev/null || exit 1 197*ae771770SStanislav Sedov 198*ae771770SStanislav Sedov echo "eccert -> root" 199*ae771770SStanislav Sedov ${hxtool} verify --missing-revoke \ 200*ae771770SStanislav Sedov cert:FILE:$srcdir/data/secp160r2TestClient.cert.pem \ 201*ae771770SStanislav Sedov anchor:FILE:$srcdir/data/secp160r1TestCA.cert.pem > /dev/null || exit 1 202*ae771770SStanislav Sedovfi 203*ae771770SStanislav Sedov 204c19800e8SDoug Rabsonecho "proxy cert" 205c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 206c19800e8SDoug Rabson --allow-proxy-certificate \ 207c19800e8SDoug Rabson cert:FILE:$srcdir/data/proxy-test.crt \ 208c19800e8SDoug Rabson chain:FILE:$srcdir/data/test.crt \ 209c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null || exit 1 210c19800e8SDoug Rabson 211c19800e8SDoug Rabsonecho "proxy cert (negative)" 212c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 213c19800e8SDoug Rabson cert:FILE:$srcdir/data/proxy-test.crt \ 214c19800e8SDoug Rabson chain:FILE:$srcdir/data/test.crt \ 215c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null && exit 1 216c19800e8SDoug Rabson 217c19800e8SDoug Rabsonecho "proxy cert (level fail)" 218c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 219c19800e8SDoug Rabson --allow-proxy-certificate \ 220c19800e8SDoug Rabson cert:FILE:$srcdir/data/proxy-level-test.crt \ 221c19800e8SDoug Rabson chain:FILE:$srcdir/data/proxy-test.crt \ 222c19800e8SDoug Rabson chain:FILE:$srcdir/data/test.crt \ 223c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null && exit 1 224c19800e8SDoug Rabson 225c19800e8SDoug Rabsonecho "not a proxy cert" 226c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 227c19800e8SDoug Rabson --allow-proxy-certificate \ 228c19800e8SDoug Rabson cert:FILE:$srcdir/data/no-proxy-test.crt \ 229c19800e8SDoug Rabson chain:FILE:$srcdir/data/test.crt \ 230c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null && exit 1 231c19800e8SDoug Rabson 232c19800e8SDoug Rabsonecho "proxy cert (max level 10)" 233c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 234c19800e8SDoug Rabson --allow-proxy-certificate \ 235c19800e8SDoug Rabson cert:FILE:$srcdir/data/proxy10-test.crt \ 236c19800e8SDoug Rabson chain:FILE:$srcdir/data/test.crt \ 237c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null || exit 1 238c19800e8SDoug Rabson 239c19800e8SDoug Rabsonecho "proxy cert (second level)" 240c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 241c19800e8SDoug Rabson --allow-proxy-certificate \ 242c19800e8SDoug Rabson cert:FILE:$srcdir/data/proxy10-child-test.crt \ 243c19800e8SDoug Rabson chain:FILE:$srcdir/data/proxy10-test.crt \ 244c19800e8SDoug Rabson chain:FILE:$srcdir/data/test.crt \ 245c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null || exit 1 246c19800e8SDoug Rabson 247c19800e8SDoug Rabsonecho "proxy cert (third level)" 248c19800e8SDoug Rabson${hxtool} verify --missing-revoke \ 249c19800e8SDoug Rabson --allow-proxy-certificate \ 250c19800e8SDoug Rabson cert:FILE:$srcdir/data/proxy10-child-child-test.crt \ 251c19800e8SDoug Rabson chain:FILE:$srcdir/data/proxy10-child-test.crt \ 252c19800e8SDoug Rabson chain:FILE:$srcdir/data/proxy10-test.crt \ 253c19800e8SDoug Rabson chain:FILE:$srcdir/data/test.crt \ 254c19800e8SDoug Rabson anchor:FILE:$srcdir/data/ca.crt > /dev/null || exit 1 255c19800e8SDoug Rabson 256c19800e8SDoug Rabsonexit 0 257