testcompat: check the PSK ciphersuite interoperability against polarssl
[gnutls:gnutls.git] / tests / suite / testcompat-polarssl
1 #!/bin/sh
2
3 # Copyright (C) 2014 Red Hat, Inc.
4 #
5 # Author: Nikos Mavrogiannopoulos
6 #
7 # This file is part of GnuTLS.
8 #
9 # GnuTLS is free software; you can redistribute it and/or modify it
10 # under the terms of the GNU General Public License as published by the
11 # Free Software Foundation; either version 3 of the License, or (at
12 # your option) any later version.
13 #
14 # GnuTLS is distributed in the hope that it will be useful, but
15 # WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 # General Public License for more details.
18 #
19 # You should have received a copy of the GNU General Public License
20 # along with GnuTLS; if not, write to the Free Software Foundation,
21 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22
23 srcdir="${srcdir:-.}"
24 CLI="${CLI:-../../src/gnutls-cli$EXEEXT}"
25 LOGFILE=polarssl.log
26 unset RETCODE
27 if ! test -z "${VALGRIND}";then
28 VALGRIND="${LIBTOOL:-libtool} --mode=execute ${VALGRIND}"
29 fi
30
31 if test "${WINDIR}" != "";then
32   exit 77
33 fi 
34
35 . $srcdir/../scripts/common.sh
36
37 PORT="${PORT:-$RPORT}"
38 POLARSSL_CLI="/usr/libexec/polarssl/ssl_client2"
39
40 TXT=`$CLI --priority NORMAL --list|grep SECP224`
41 if test -z $TEXT;then
42         ALL_CURVES=0
43 else
44         ALL_CURVES=1
45 fi
46
47 VERSION=`grep released /usr/share/doc/polarssl/ChangeLog|head -1|cut -d ' ' -f 3`
48
49 echo "Compatibility checks using polarssl "$VERSION
50 echo $VERSION|grep -e 1\.3\. >/dev/null 2>&1
51 SV=$?
52 if test $SV != 0;then
53   echo "PolarSSL 1.3.x is required for the tests to run"
54   exit 77
55 fi
56
57 . ./testcompat-common
58
59 echo ""
60 echo "##################################################"
61 echo "# Server mode tests (gnutls server-polarssl cli) #"
62 echo "##################################################"
63 SERV="../../src/gnutls-serv$EXEEXT -q"
64
65 rm -f $LOGFILE
66
67 echo "Check SSL 3.0 with RSA ciphersuite"
68 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-SSL3.0:+RSA" --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT --dhparams params.dh  & PID=$!
69 wait_server $PID
70
71 $POLARSSL_CLI server_port=$PORT server_name=localhost max_version=ssl3 crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
72   fail $PID "Failed"
73
74 kill $PID
75 wait
76
77 echo "Check SSL 3.0 with DHE-RSA ciphersuite"
78 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-SSL3.0:+DHE-RSA" --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT --dhparams params.dh  & PID=$!
79 wait_server $PID
80
81 $POLARSSL_CLI server_name=localhost server_port=$PORT max_version=ssl3 crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
82   fail $PID "Failed"
83
84 kill $PID
85 wait
86
87 # No DSS for polarssl
88 #echo "Check SSL 3.0 with DHE-DSS ciphersuite"
89 #launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-SSL3.0:+DHE-DSS" --x509certfile $SERV_DSA_CERT --x509keyfile $SERV_DSA_KEY --dhparams params.dh  & PID=$!
90 #wait_server $PID
91
92 #$POLARSSL_CLI server_name=localhost server_port=$PORT max_version=ssl3 crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
93 #  fail $PID "Failed"
94 #
95 #kill $PID
96 #wait
97
98 #TLS 1.0
99
100 echo "Check TLS 1.0 with DHE-RSA ciphersuite"
101 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.0:+DHE-RSA" --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT --dhparams params.dh  & PID=$!
102 wait_server $PID
103
104 $POLARSSL_CLI  server_name=localhost min_version=tls1 max_version=tls1 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
105   fail $PID "Failed"
106
107 kill $PID
108 wait
109
110 #echo "Check TLS 1.0 with DHE-DSS ciphersuite"
111 #launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.0:+DHE-DSS" --x509certfile $SERV_DSA_CERT --x509keyfile $SERV_DSA_KEY --dhparams params.dh  & PID=$!
112 #wait_server $PID
113
114 #$POLARSSL_CLI  server_name=localhost min_version=tls1 max_version=tls1 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
115 #  fail $PID "Failed"
116
117 #kill $PID
118 #wait
119
120 echo "Check TLS 1.0 with ECDHE-RSA ciphersuite"
121 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.0:+ECDHE-RSA:+CURVE-ALL" --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT & PID=$!
122 wait_server $PID
123
124 #-cipher ECDHE-RSA-AES128-SHA 
125 $POLARSSL_CLI  server_name=localhost min_version=tls1 max_version=tls1 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
126   fail $PID "Failed"
127
128 kill $PID
129 wait
130
131 echo "Check TLS 1.0 with PSK ciphersuite"
132 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.0:+PSK:+CURVE-ALL" --pskpasswd $SERV_PSK --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT & PID=$!
133 wait_server $PID
134
135 #-cipher PSK-AES128-SHA 
136 $POLARSSL_CLI  server_name=localhost psk_identity=jas psk=9e32cf7786321a828ef7668f09fb35db min_version=tls1 max_version=tls1 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
137   fail $PID "Failed"
138
139 kill $PID
140 wait
141
142 echo "Check TLS 1.0 with DHE-PSK ciphersuite"
143 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.0:+DHE-PSK:+CURVE-ALL" --pskpasswd $SERV_PSK --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT & PID=$!
144 wait_server $PID
145
146 #-cipher PSK-AES128-SHA 
147 $POLARSSL_CLI  server_name=localhost psk_identity=jas psk=9e32cf7786321a828ef7668f09fb35db min_version=tls1 max_version=tls1 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
148   fail $PID "Failed"
149
150 kill $PID
151 wait
152
153 echo "Check TLS 1.0 with ECDHE-PSK ciphersuite"
154 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.0:+ECDHE-PSK:+CURVE-ALL" --pskpasswd $SERV_PSK --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT & PID=$!
155 wait_server $PID
156
157 #-cipher PSK-AES128-SHA 
158 $POLARSSL_CLI  server_name=localhost psk_identity=jas psk=9e32cf7786321a828ef7668f09fb35db min_version=tls1 max_version=tls1 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
159   fail $PID "Failed"
160
161 kill $PID
162 wait
163
164 echo "Check TLS 1.0 with RSA-PSK ciphersuite"
165 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.0:+RSA-PSK:+CURVE-ALL" --pskpasswd $SERV_PSK --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT & PID=$!
166 wait_server $PID
167
168 #-cipher RSA-PSK-AES128-SHA 
169 $POLARSSL_CLI  server_name=localhost psk_identity=jas psk=9e32cf7786321a828ef7668f09fb35db min_version=tls1 max_version=tls1 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
170   fail $PID "Failed"
171
172 kill $PID
173 wait
174
175 if test $ALL_CURVES = 1;then
176         echo "Check TLS 1.0 with ECDHE-ECDSA ciphersuite (SECP224R1)"
177         launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.0:+ECDHE-ECDSA:+CURVE-ALL" --x509certfile $ECC224_CERT --x509keyfile $ECC224_KEY --x509cafile $CA_ECC_CERT & PID=$!
178         wait_server $PID
179
180         #-cipher ECDHE-ECDSA-AES128-SHA 
181         $POLARSSL_CLI  server_name=localhost min_version=tls1 max_version=tls1 server_port=$PORT crt_file=$ECC224_CERT key_file=$ECC224_KEY ca_file=$CA_ECC_CERT </dev/null >>$LOGFILE 2>&1 || \
182           fail $PID "Failed"
183
184           kill $PID
185           wait
186 fi
187
188 echo "Check TLS 1.0 with ECDHE-ECDSA ciphersuite (SECP256R1)"
189 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.0:+ECDHE-ECDSA:+CURVE-ALL" --x509certfile $ECC256_CERT --x509keyfile $ECC256_KEY --x509cafile $CA_ECC_CERT & PID=$!
190 wait_server $PID
191
192 #-cipher ECDHE-ECDSA-AES128-SHA 
193 $POLARSSL_CLI  server_name=localhost min_version=tls1 max_version=tls1 server_port=$PORT crt_file=$ECC256_CERT key_file=$ECC256_KEY ca_file=$CA_ECC_CERT </dev/null >>$LOGFILE 2>&1 || \
194   fail $PID "Failed"
195
196 kill $PID
197 wait
198
199 echo "Check TLS 1.0 with ECDHE-ECDSA ciphersuite (SECP384R1)"
200 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.0:+ECDHE-ECDSA:+CURVE-ALL" --x509certfile $ECC384_CERT --x509keyfile $ECC384_KEY --x509cafile $CA_ECC_CERT & PID=$!
201 wait_server $PID
202
203 #-cipher ECDHE-ECDSA-AES128-SHA 
204 $POLARSSL_CLI  server_name=localhost min_version=tls1 max_version=tls1 server_port=$PORT crt_file=$ECC384_CERT key_file=$ECC384_KEY ca_file=$CA_ECC_CERT </dev/null >>$LOGFILE 2>&1 || \
205   fail $PID "Failed"
206
207 kill $PID
208 wait
209
210 echo "Check TLS 1.0 with ECDHE-ECDSA ciphersuite (SECP521R1)"
211 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.0:+ECDHE-ECDSA:+CURVE-ALL" --x509certfile $ECC521_CERT --x509keyfile $ECC521_KEY --x509cafile $CA_ECC_CERT & PID=$!
212 wait_server $PID
213
214 #-cipher ECDHE-ECDSA-AES128-SHA 
215 $POLARSSL_CLI  server_name=localhost min_version=tls1 max_version=tls1 server_port=$PORT crt_file=$ECC521_CERT key_file=$ECC521_KEY ca_file=$CA_ECC_CERT </dev/null >>$LOGFILE 2>&1 || \
216   fail $PID "Failed"
217
218 kill $PID
219 wait
220
221 echo "Check TLS 1.2 with DHE-RSA ciphersuite"
222 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.2:+DHE-RSA" --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT --dhparams params.dh  & PID=$!
223 wait_server $PID
224
225 $POLARSSL_CLI  server_name=localhost min_version=tls1_2 max_version=tls1_2 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
226   fail $PID "Failed"
227
228 kill $PID
229 wait
230
231 #echo "Check TLS 1.2 with DHE-DSS ciphersuite"
232 #launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.2:+DHE-DSS" --x509certfile $SERV_DSA_CERT --x509keyfile $SERV_DSA_KEY --dhparams params.dh  & PID=$!
233 #wait_server $PID
234 #
235 #$POLARSSL_CLI  server_name=localhost min_version=tls1_2 max_version=tls1_2 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
236 #  fail $PID "Failed"
237 #
238 #kill $PID
239 #wait
240
241 echo "Check TLS 1.2 with ECDHE-RSA ciphersuite"
242 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.2:+ECDHE-RSA:+CURVE-ALL" --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT & PID=$!
243 wait_server $PID
244
245 #-cipher ECDHE-RSA-AES128-SHA 
246 $POLARSSL_CLI  server_name=localhost min_version=tls1_2 max_version=tls1_2 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
247   fail $PID "Failed"
248
249 kill $PID
250 wait
251
252 if test $ALL_CURVES = 1;then
253         echo "Check TLS 1.2 with ECDHE-ECDSA ciphersuite (SECP224R1)"
254         launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.2:+ECDHE-ECDSA:+CURVE-ALL" --x509certfile $ECC224_CERT --x509keyfile $ECC224_KEY --x509cafile $CA_ECC_CERT & PID=$!
255         wait_server $PID
256
257         #-cipher ECDHE-ECDSA-AES128-SHA 
258         $POLARSSL_CLI  server_name=localhost min_version=tls1_2 max_version=tls1_2 server_port=$PORT crt_file=$ECC224_CERT key_file=$ECC224_KEY ca_file=$CA_ECC_CERT </dev/null >>$LOGFILE 2>&1 || \
259           fail $PID "Failed"
260
261           kill $PID
262           wait
263 fi
264
265 echo "Check TLS 1.2 with ECDHE-ECDSA ciphersuite (SECP256R1)"
266 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.2:+ECDHE-ECDSA:+CURVE-ALL" --x509certfile $ECC256_CERT --x509keyfile $ECC256_KEY --x509cafile $CA_ECC_CERT & PID=$!
267 wait_server $PID
268
269 #-cipher ECDHE-ECDSA-AES128-SHA 
270 $POLARSSL_CLI  server_name=localhost min_version=tls1_2 max_version=tls1_2 server_port=$PORT crt_file=$ECC256_CERT key_file=$ECC256_KEY ca_file=$CA_ECC_CERT </dev/null >>$LOGFILE 2>&1 || \
271   fail $PID "Failed"
272
273 kill $PID
274 wait
275
276 echo "Check TLS 1.2 with ECDHE-ECDSA ciphersuite (SECP384R1)"
277 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.2:+ECDHE-ECDSA:+CURVE-ALL" --x509certfile $ECC384_CERT --x509keyfile $ECC384_KEY --x509cafile $CA_ECC_CERT & PID=$!
278 wait_server $PID
279
280 #-cipher ECDHE-ECDSA-AES128-SHA 
281 $POLARSSL_CLI  server_name=localhost min_version=tls1_2 max_version=tls1_2 server_port=$PORT crt_file=$ECC384_CERT key_file=$ECC384_KEY ca_file=$CA_ECC_CERT </dev/null >>$LOGFILE 2>&1 || \
282   fail $PID "Failed"
283
284 kill $PID
285 wait
286
287 echo "Check TLS 1.2 with ECDHE-ECDSA ciphersuite (SECP521R1)"
288 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.2:+ECDHE-ECDSA:+CURVE-ALL" --x509certfile $ECC521_CERT --x509keyfile $ECC521_KEY --x509cafile $CA_ECC_CERT & PID=$!
289 wait_server $PID
290
291 #-cipher ECDHE-ECDSA-AES128-SHA 
292 $POLARSSL_CLI  server_name=localhost min_version=tls1_2 max_version=tls1_2 server_port=$PORT crt_file=$ECC521_CERT key_file=$ECC521_KEY ca_file=$CA_ECC_CERT </dev/null >>$LOGFILE 2>&1 || \
293   fail $PID "Failed"
294
295 kill $PID
296 wait
297
298 echo "Check TLS 1.2 with PSK ciphersuite"
299 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.2:+PSK:+CURVE-ALL" --pskpasswd $SERV_PSK --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT & PID=$!
300 wait_server $PID
301
302 #-cipher PSK-AES128-SHA 
303 $POLARSSL_CLI  server_name=localhost psk_identity=jas psk=9e32cf7786321a828ef7668f09fb35db min_version=tls1_2 max_version=tls1_2 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
304   fail $PID "Failed"
305
306 kill $PID
307 wait
308
309 echo "Check TLS 1.2 with DHE-PSK ciphersuite"
310 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.2:+DHE-PSK:+CURVE-ALL" --pskpasswd $SERV_PSK --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT & PID=$!
311 wait_server $PID
312
313 #-cipher PSK-AES128-SHA 
314 $POLARSSL_CLI  server_name=localhost psk_identity=jas psk=9e32cf7786321a828ef7668f09fb35db min_version=tls1_2 max_version=tls1_2 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
315   fail $PID "Failed"
316
317 kill $PID
318 wait
319
320 echo "Check TLS 1.2 with ECDHE-PSK ciphersuite"
321 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.2:+ECDHE-PSK:+CURVE-ALL" --pskpasswd $SERV_PSK --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT & PID=$!
322 wait_server $PID
323
324 #-cipher PSK-AES128-SHA 
325 $POLARSSL_CLI  server_name=localhost psk_identity=jas psk=9e32cf7786321a828ef7668f09fb35db min_version=tls1_2 max_version=tls1_2 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
326   fail $PID "Failed"
327
328 kill $PID
329 wait
330
331 echo "Check TLS 1.2 with RSA-PSK ciphersuite"
332 launch_server $$  --priority "NONE:+CIPHER-ALL:+SIGN-ALL:+COMP-NULL:+MAC-ALL:+VERS-TLS1.2:+RSA-PSK:+CURVE-ALL" --pskpasswd $SERV_PSK --x509certfile $SERV_CERT --x509keyfile $SERV_KEY --x509cafile $CA_CERT & PID=$!
333 wait_server $PID
334
335 #-cipher RSA-PSK-AES128-SHA 
336 $POLARSSL_CLI  server_name=localhost psk_identity=jas psk=9e32cf7786321a828ef7668f09fb35db min_version=tls1_2 max_version=tls1_2 server_port=$PORT crt_file=$CLI_CERT key_file=$CLI_KEY ca_file=$CA_CERT </dev/null >>$LOGFILE 2>&1 || \
337   fail $PID "Failed"
338
339 kill $PID
340 wait
341
342
343 rm -f $LOGFILE
344
345 exit 0