#!/bin/sh # # Copyright (c) 2005 - 2007 Kungliga Tekniska Högskolan # (Royal Institute of Technology, Stockholm, Sweden). # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. Neither the name of the Institute nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # $Id$ # srcdir="@srcdir@" objdir="@objdir@" stat="--statistic-file=${objdir}/statfile" hxtool="${TESTS_ENVIRONMENT} ./hxtool ${stat}" if ${hxtool} info | grep 'rsa: hcrypto null RSA' > /dev/null ; then exit 77 fi if ${hxtool} info | grep 'rand: not available' > /dev/null ; then exit 77 fi ${hxtool} request-create \ --subject="CN=Love,DC=it,DC=su,DC=se" \ --key="FILE:$srcdir/data/key.der" \ "${objdir}/request.out" || exit 1 ${hxtool} request-print \ PKCS10:request.out > /dev/null || exit 1 ${hxtool} request-create \ --subject="CN=Love,DC=it,DC=su,DC=se" \ --eku=1.2.3.4.5.6.7 --eku=1.2.3.4.5.6.8 \ --registered=1.2.3.4.5.6.9 --eku=1.2.3.4.5.6.10 \ --dnsname=nutcracker.test.h5l.se \ --dnsname=foo.nutcracker.test.h5l.se \ --kerberos=HTTP/foo.nutcracker.it.su.se@TEST.H5L.SE \ --kerberos=host/foo.nutcracker.it.su.se@TEST.H5L.SE \ --email=foo@test.h5l.se \ --key="FILE:$srcdir/data/key.der" \ "${objdir}/request.out" || exit 1 cat > "$objdir/expected" < "${objdir}/actual" || exit 1 diff "$objdir/expected" "${objdir}/actual" || exit 1 # Check that OpenSSL can parse our request: if openssl version > /dev/null; then openssl req -inform DER -in "${objdir}/request.out" -text | head -25 > "${objdir}/actual" # Various versions of openssl differ slightly in their text output for our # CSR. Figure out what to expect: if grep "Version: 0" "${objdir}/actual" > /dev/null; then v=0 else v=1 fi if grep "RSA Public-Key:" "${objdir}/actual" > /dev/null; then k="RSA " else k="" fi # Note interpolation of $v and $k in the here doc below: cat > "$objdir/expected" <, othername:, Registered ID:1.2.3.4.5.6.9 Signature Algorithm: sha256WithRSAEncryption EOF if ! diff -u -w "${objdir}/expected" "${objdir}/actual"; then cat > "$objdir/expected" <, othername: 1.3.6.1.5.2.2::, Registered ID:1.2.3.4.5.6.9 Signature Algorithm: sha256WithRSAEncryption EOF fi fi ${hxtool} request-create \ --ca \ --ca-path-length=3 \ --subject="cn=ca-cert" \ --key=FILE:$srcdir/data/key.der \ pkcs10-request.der || exit 1 ${hxtool} request-print PKCS10:pkcs10-request.der > "${objdir}/actual"|| exit 1 cat > "$objdir/expected" < "${objdir}/actual"|| exit 1 cat > "$objdir/expected" < "${objdir}/actual" || exit 1 cat > "$objdir/expected" <