xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test083-argon2 (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
1*e670fd5cSchristos#!/bin/sh
2*e670fd5cSchristos# $OpenLDAP$
3*e670fd5cSchristos## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4*e670fd5cSchristos##
5*e670fd5cSchristos## Copyright 2021 The OpenLDAP Foundation.
6*e670fd5cSchristos## All rights reserved.
7*e670fd5cSchristos##
8*e670fd5cSchristos## Redistribution and use in source and binary forms, with or without
9*e670fd5cSchristos## modification, are permitted only as authorized by the OpenLDAP
10*e670fd5cSchristos## Public License.
11*e670fd5cSchristos##
12*e670fd5cSchristos## A copy of this license is available in the file LICENSE in the
13*e670fd5cSchristos## top-level directory of the distribution or, alternatively, at
14*e670fd5cSchristos## <http://www.OpenLDAP.org/license.html>.
15*e670fd5cSchristos
16*e670fd5cSchristosecho "running defines.sh"
17*e670fd5cSchristos. $SRCDIR/scripts/defines.sh
18*e670fd5cSchristos
19*e670fd5cSchristosif test $ARGON2 = argon2no; then
20*e670fd5cSchristos	echo "argon2 overlay not available, test skipped"
21*e670fd5cSchristos	exit 0
22*e670fd5cSchristosfi
23*e670fd5cSchristos
24*e670fd5cSchristosUSERDN="cn=argon2,$BASEDN"
25*e670fd5cSchristos
26*e670fd5cSchristosCONFDIR=$TESTDIR/slapd.d
27*e670fd5cSchristosmkdir -p $TESTDIR $CONFDIR $DBDIR1
28*e670fd5cSchristos
29*e670fd5cSchristos$SLAPPASSWD -g -n >$CONFIGPWF
30*e670fd5cSchristos
31*e670fd5cSchristoscat > $TESTDIR/config.ldif <<EOF
32*e670fd5cSchristosdn: cn=config
33*e670fd5cSchristosobjectClass: olcGlobal
34*e670fd5cSchristoscn: config
35*e670fd5cSchristosolcArgsFile: $TESTDIR/slapd.args
36*e670fd5cSchristosolcPidFile: $TESTDIR/slapd.pid
37*e670fd5cSchristos
38*e670fd5cSchristosdn: cn=schema,cn=config
39*e670fd5cSchristosobjectClass: olcSchemaConfig
40*e670fd5cSchristoscn: schema
41*e670fd5cSchristos
42*e670fd5cSchristosinclude: file://$TESTWD/schema/core.ldif
43*e670fd5cSchristosinclude: file://$TESTWD/schema/cosine.ldif
44*e670fd5cSchristosinclude: file://$TESTWD/schema/inetorgperson.ldif
45*e670fd5cSchristosEOF
46*e670fd5cSchristos
47*e670fd5cSchristosif [ "$BACKENDTYPE" = mod ]; then
48*e670fd5cSchristos	cat >> $TESTDIR/config.ldif <<EOF
49*e670fd5cSchristos
50*e670fd5cSchristosdn: cn=module,cn=config
51*e670fd5cSchristosobjectClass: olcModuleList
52*e670fd5cSchristoscn: module
53*e670fd5cSchristosolcModulePath: $TESTWD/../servers/slapd/back-$BACKEND
54*e670fd5cSchristosolcModuleLoad: back_$BACKEND.la
55*e670fd5cSchristosEOF
56*e670fd5cSchristosfi
57*e670fd5cSchristos
58*e670fd5cSchristosif [ "$ARGON2" = argon2yes ]; then
59*e670fd5cSchristos	cat >> $TESTDIR/config.ldif <<EOF
60*e670fd5cSchristos
61*e670fd5cSchristosdn: cn=module,cn=config
62*e670fd5cSchristosobjectClass: olcModuleList
63*e670fd5cSchristoscn: module
64*e670fd5cSchristosolcModulePath: $TESTWD/../servers/slapd/pwmods
65*e670fd5cSchristosolcModuleLoad: argon2.la
66*e670fd5cSchristosEOF
67*e670fd5cSchristosfi
68*e670fd5cSchristos
69*e670fd5cSchristoscat >> $TESTDIR/config.ldif <<EOF
70*e670fd5cSchristos
71*e670fd5cSchristosdn: olcDatabase={-1}frontend,cn=config
72*e670fd5cSchristosobjectClass: olcDatabaseConfig
73*e670fd5cSchristosobjectClass: olcFrontendConfig
74*e670fd5cSchristosolcDatabase: {-1}frontend
75*e670fd5cSchristosolcPasswordHash: {ARGON2}
76*e670fd5cSchristos
77*e670fd5cSchristosdn: olcDatabase=config,cn=config
78*e670fd5cSchristosobjectClass: olcDatabaseConfig
79*e670fd5cSchristosolcDatabase: config
80*e670fd5cSchristosolcRootPW:< file://$CONFIGPWF
81*e670fd5cSchristos
82*e670fd5cSchristosdn: olcDatabase={1}$BACKEND,cn=config
83*e670fd5cSchristosobjectClass: olcDatabaseConfig
84*e670fd5cSchristosobjectClass: olc${BACKEND}Config
85*e670fd5cSchristosolcDatabase: $BACKEND
86*e670fd5cSchristosolcSuffix: $BASEDN
87*e670fd5cSchristosolcRootDN: $MANAGERDN
88*e670fd5cSchristosolcRootPW: $PASSWD
89*e670fd5cSchristosolcDbDirectory: $TESTDIR/db.1.a
90*e670fd5cSchristosEOF
91*e670fd5cSchristos
92*e670fd5cSchristosif [ "$INDEXDB" = indexdb ]; then
93*e670fd5cSchristos	cat >> $TESTDIR/config.ldif <<EOF
94*e670fd5cSchristosolcDbIndex: objectClass eq,pres
95*e670fd5cSchristosolcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
96*e670fd5cSchristosEOF
97*e670fd5cSchristosfi
98*e670fd5cSchristos
99*e670fd5cSchristos$SLAPADD -F $CONFDIR -n 0 -l $TESTDIR/config.ldif
100*e670fd5cSchristos
101*e670fd5cSchristosecho "Starting slapd on TCP/IP port $PORT1..."
102*e670fd5cSchristos$SLAPD -F $CONFDIR -h $URI1 -d $LVL > $LOG1 2>&1 &
103*e670fd5cSchristosPID=$!
104*e670fd5cSchristosif test $WAIT != 0 ; then
105*e670fd5cSchristos	echo PID $PID
106*e670fd5cSchristos	read foo
107*e670fd5cSchristosfi
108*e670fd5cSchristosKILLPIDS="$PID"
109*e670fd5cSchristossleep 1
110*e670fd5cSchristos
111*e670fd5cSchristosecho "Using ldapsearch to check that slapd is running..."
112*e670fd5cSchristosfor i in 0 1 2 3 4 5; do
113*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
114*e670fd5cSchristos		'objectclass=*' > /dev/null 2>&1
115*e670fd5cSchristos	RC=$?
116*e670fd5cSchristos	if test $RC = 0 ; then
117*e670fd5cSchristos		break
118*e670fd5cSchristos	fi
119*e670fd5cSchristos	echo "Waiting 5 seconds for slapd to start..."
120*e670fd5cSchristos	sleep 5
121*e670fd5cSchristosdone
122*e670fd5cSchristosif test $RC != 0 ; then
123*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
124*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
125*e670fd5cSchristos	exit $RC
126*e670fd5cSchristosfi
127*e670fd5cSchristos
128*e670fd5cSchristosecho "Adding basic structure..."
129*e670fd5cSchristos$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD -f $LDIFPASSWD >/dev/null 2>&1
130*e670fd5cSchristosRC=$?
131*e670fd5cSchristosif test $RC != 0 ; then
132*e670fd5cSchristos	echo "ldapadd failed ($RC)!"
133*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $PID
134*e670fd5cSchristos	exit $RC
135*e670fd5cSchristosfi
136*e670fd5cSchristos
137*e670fd5cSchristosBINDPW=secret
138*e670fd5cSchristosecho "Testing ldapwhoami as ${USERDN}..."
139*e670fd5cSchristos$LDAPWHOAMI -H $URI1 -D "$USERDN" -w $BINDPW
140*e670fd5cSchristos
141*e670fd5cSchristosRC=$?
142*e670fd5cSchristosif test $RC != 0 ; then
143*e670fd5cSchristos    echo "ldapwhoami failed ($RC)!"
144*e670fd5cSchristos    test $KILLSERVERS != no && kill -HUP $KILLPIDS
145*e670fd5cSchristos    exit $RC
146*e670fd5cSchristosfi
147*e670fd5cSchristos
148*e670fd5cSchristostest $KILLSERVERS != no && kill -HUP $PID
149*e670fd5cSchristos
150*e670fd5cSchristosecho ">>>>> Test succeeded"
151*e670fd5cSchristos
152*e670fd5cSchristostest $KILLSERVERS != no && wait
153*e670fd5cSchristos
154*e670fd5cSchristosexit 0
155