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