1178825Sdfr#!/bin/sh
2178825Sdfr#
3178825Sdfr# Copyright (c) 2007 Kungliga Tekniska H�gskolan
4178825Sdfr# (Royal Institute of Technology, Stockholm, Sweden). 
5178825Sdfr# All rights reserved. 
6178825Sdfr#
7178825Sdfr# Redistribution and use in source and binary forms, with or without 
8178825Sdfr# modification, are permitted provided that the following conditions 
9178825Sdfr# are met: 
10178825Sdfr#
11178825Sdfr# 1. Redistributions of source code must retain the above copyright 
12178825Sdfr#    notice, this list of conditions and the following disclaimer. 
13178825Sdfr#
14178825Sdfr# 2. Redistributions in binary form must reproduce the above copyright 
15178825Sdfr#    notice, this list of conditions and the following disclaimer in the 
16178825Sdfr#    documentation and/or other materials provided with the distribution. 
17178825Sdfr#
18178825Sdfr# 3. Neither the name of the Institute nor the names of its contributors 
19178825Sdfr#    may be used to endorse or promote products derived from this software 
20178825Sdfr#    without specific prior written permission. 
21178825Sdfr#
22178825Sdfr# THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
23178825Sdfr# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
24178825Sdfr# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
25178825Sdfr# ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
26178825Sdfr# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
27178825Sdfr# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
28178825Sdfr# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
29178825Sdfr# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
30178825Sdfr# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
31178825Sdfr# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
32178825Sdfr# SUCH DAMAGE. 
33178825Sdfr#
34178825Sdfr# $Id$
35178825Sdfr#
36178825Sdfr
37178825Sdfrsrcdir="@srcdir@"
38178825Sdfrobjdir="@objdir@"
39178825Sdfr
40178825Sdfr# If there is no useful db support compile in, disable test
41178825Sdfr../db/have-db || exit 77
42178825Sdfr
43178825SdfrR=TEST.H5L.SE
44178825Sdfr
45178825Sdfrport=@port@
46178825Sdfr
47178825Sdfrkeytabfile=${objdir}/server.keytab
48178825Sdfrkeytab="FILE:${keytabfile}"
49178825Sdfrnokeytab="FILE:no-such-keytab"
50178825Sdfrcache="FILE:krb5ccfile"
51178825Sdfrnocache="FILE:no-such-cache"
52178825Sdfr
53178825Sdfrkinit="${TESTS_ENVIRONMENT} ../../kuser/kinit -c $cache --no-afslog"
54178825Sdfrkadmin="${TESTS_ENVIRONMENT} ../../kadmin/kadmin -l -r $R"
55178825Sdfrkdc="${TESTS_ENVIRONMENT} ../../kdc/kdc --addresses=localhost -P $port"
56178825Sdfr
57178825Sdfracquire_cred="${TESTS_ENVIRONMENT} ../../lib/gssapi/test_acquire_cred"
58178825Sdfrtest_kcred="${TESTS_ENVIRONMENT} ../../lib/gssapi/test_kcred"
59178825Sdfr
60178825SdfrKRB5_CONFIG="${objdir}/krb5.conf"
61178825Sdfrexport KRB5_CONFIG
62178825Sdfr
63178825SdfrKRB5_KTNAME="${keytab}"
64178825Sdfrexport KRB5_KTNAME
65178825SdfrKRB5CCNAME="${cache}"
66178825Sdfrexport KRB5CCNAME
67178825Sdfr
68178825Sdfrrm -f ${keytabfile}
69178825Sdfrrm -f current-db*
70178825Sdfrrm -f out-*
71178825Sdfrrm -f mkey.file*
72178825Sdfr
73178825Sdfr> messages.log
74178825Sdfr
75178825Sdfrecho Creating database
76178825Sdfr${kadmin} \
77178825Sdfr    init \
78178825Sdfr    --realm-max-ticket-life=1day \
79178825Sdfr    --realm-max-renewable-life=1month \
80178825Sdfr    ${R} || exit 1
81178825Sdfr
82178825Sdfrecho upw > ${objdir}/foopassword
83178825Sdfr
84178825Sdfr${kadmin} add -p upw --use-defaults user@${R} || exit 1
85178825Sdfr${kadmin} add -p upw --use-defaults another@${R} || exit 1
86178825Sdfr${kadmin} add -p p1 --use-defaults host/host.test.h5l.se@${R} || exit 1
87178825Sdfr${kadmin} ext -k ${keytab} host/host.test.h5l.se@${R} || exit 1
88178825Sdfr
89178825Sdfrecho "Doing database check"
90178825Sdfr${kadmin} check ${R} || exit 1
91178825Sdfr
92178825Sdfrecho Starting kdc
93178825Sdfr${kdc} &
94178825Sdfrkdcpid=$!
95178825Sdfr
96178825Sdfrsh ${srcdir}/../kdc/wait-kdc.sh
97178825Sdfrif [ "$?" != 0 ] ; then
98178825Sdfr    kill ${kdcpid}
99178825Sdfr    exit 1
100178825Sdfrfi
101178825Sdfr
102178825Sdfrtrap "kill ${kdcpid}; echo signal killing kdc; exit 1;" EXIT
103178825Sdfr
104178825Sdfrexitcode=0
105178825Sdfr
106178825Sdfrecho "initial ticket"
107178825Sdfr${kinit} --password-file=${objdir}/foopassword user@${R} || exitcode=1
108178825Sdfr
109178825Sdfrecho "keytab"
110178825Sdfr${acquire_cred} \
111178825Sdfr    --acquire-type=accept \
112178825Sdfr    --acquire-name=host@host.test.h5l.se || exit 1
113178825Sdfrecho "keytab w/o name"
114178825Sdfr${acquire_cred} \
115178825Sdfr    --acquire-type=accept || exit 1
116178825Sdfrecho "keytab w/ wrong name"
117178825Sdfr${acquire_cred} \
118178825Sdfr    --acquire-type=accept \
119178825Sdfr    --acquire-name=host@host2.test.h5l.se 2>/dev/null && exit 1
120178825Sdfrecho "init using keytab"
121178825Sdfr${acquire_cred} \
122178825Sdfr    --acquire-type=initiate \
123178825Sdfr    --acquire-name=host@host.test.h5l.se || exit 1
124178825Sdfrecho "init using existing cc"
125178825Sdfr${acquire_cred} \
126178825Sdfr    --name-type=user-name \
127178825Sdfr    --acquire-type=initiate \
128178825Sdfr    --acquire-name=user || exit 1
129178825Sdfr
130178825SdfrKRB5CCNAME=${nocache}
131178825Sdfr
132178825Sdfrecho "fail init using existing cc"
133178825Sdfr${acquire_cred} \
134178825Sdfr    --name-type=user-name \
135178825Sdfr    --acquire-type=initiate \
136178825Sdfr    --acquire-name=user 2>/dev/null && exit 1
137178825Sdfr
138178825Sdfrecho "use gss_krb5_ccache_name"
139178825Sdfr${acquire_cred} \
140178825Sdfr    --name-type=user-name \
141178825Sdfr    --ccache=${cache} \
142178825Sdfr    --acquire-type=initiate \
143178825Sdfr    --acquire-name=user >/dev/null || exit 1
144178825Sdfr
145178825SdfrKRB5CCNAME=${cache}
146178825SdfrKRB5_KTNAME=${nokeytab}
147178825Sdfr
148178825Sdfrecho "kcred"
149178825Sdfr${test_kcred} || exit 1
150178825Sdfr
151178825Sdfrtrap "" EXIT
152178825Sdfr
153178825Sdfrecho "killing kdc (${kdcpid})"
154178825Sdfrkill ${kdcpid} 2> /dev/null
155178825Sdfr
156178825Sdfrexit $exitcode
157