blob: deeb949bc3fe5eeca18454dde5743896f2da1011 [file] [log] [blame]
Paul Bakkeraccd4eb2013-07-19 13:41:51 +02001#!/bin/bash
2
Paul Bakker645ce3a2012-10-31 12:32:41 +00003killall -q openssl ssl_server ssl_server2
Paul Bakkerfab5c822012-02-06 16:45:10 +00004
Manuel Pégourié-Gonnard70064fd2013-08-27 22:00:47 +02005let "tests = 0"
6let "failed = 0"
7let "skipped = 0"
8
Paul Bakker10cd2252012-04-12 21:26:34 +00009MODES="ssl3 tls1 tls1_1 tls1_2"
Paul Bakker1eeceae2012-11-23 14:25:34 +010010VERIFIES="NO YES"
Manuel Pégourié-Gonnard7ebaf372013-08-27 21:03:33 +020011TYPES="ECDSA RSA PSK"
Paul Bakker0c93d122012-09-13 14:26:09 +000012OPENSSL=openssl
Paul Bakkeraccd4eb2013-07-19 13:41:51 +020013FILTER=""
14VERBOSE=""
15
16# Parse arguments
17#
18until [ -z "$1" ]
19do
20 case "$1" in
21 -f|--filter)
22 # Filter ciphersuites
23 shift
24 FILTER=$1
25 ;;
Paul Bakker524691c2013-07-25 17:01:20 +020026 -m|--modes)
27 # Perform modes
28 shift
29 MODES=$1
30 ;;
Manuel Pégourié-Gonnarddfc8d5a2013-08-27 20:48:40 +020031 -t|--types)
32 # Key exchange types
33 shift
34 TYPES=$1
35 ;;
36 -V|--verify)
37 # Verifiction modes
38 shift
39 VERIFIES=$1
40 ;;
Paul Bakkeraccd4eb2013-07-19 13:41:51 +020041 -v|--verbose)
42 # Set verbosity
43 shift
44 VERBOSE=1
45 ;;
46 -h|--help)
47 # print help
48 echo "Usage: $0"
Paul Bakker524691c2013-07-25 17:01:20 +020049 echo -e " -f|--filter\tFilter ciphersuites to test (Default: all)"
Paul Bakkeraccd4eb2013-07-19 13:41:51 +020050 echo -e " -h|--help\t\tPrint this help."
Paul Bakker524691c2013-07-25 17:01:20 +020051 echo -e " -m|--modes\tWhich modes to perform (Default: \"ssl3 tls1 tls1_1 tls1_2\")"
Manuel Pégourié-Gonnard7ebaf372013-08-27 21:03:33 +020052 echo -e " -t|--types\tWhich key exchange type to perform (Default: \"ECDSA RSA PSK\")"
Manuel Pégourié-Gonnarddfc8d5a2013-08-27 20:48:40 +020053 echo -e " -V|--verify\tWhich verification modes to perform (Default: \"NO YES\")"
Paul Bakkeraccd4eb2013-07-19 13:41:51 +020054 echo -e " -v|--verbose\t\tSet verbose output."
55 exit 1
56 ;;
57 *)
58 # print error
59 echo "Unknown argument: '$1'"
60 exit 1
61 ;;
62 esac
63 shift
64done
65
66log () {
67 if [ "X" != "X$VERBOSE" ]; then
68 echo "$@"
69 fi
70}
Paul Bakker10cd2252012-04-12 21:26:34 +000071
Manuel Pégourié-Gonnarddfc8d5a2013-08-27 20:48:40 +020072filter()
73{
74 LIST=$1
75 FILTER=$2
76
77 NEW_LIST=""
78
79 for i in $LIST;
80 do
81 NEW_LIST="$NEW_LIST $( echo "$i" | grep "$FILTER" )"
82 done
83
84 echo "$NEW_LIST"
85}
86
Paul Bakker1eeceae2012-11-23 14:25:34 +010087for VERIFY in $VERIFIES;
88do
Paul Bakker7e5e7ca2013-04-17 19:27:58 +020089
Paul Bakker10cd2252012-04-12 21:26:34 +000090if [ "X$VERIFY" = "XYES" ];
91then
Manuel Pégourié-Gonnardeb1714e2013-09-20 12:44:08 +020092 P_SERVER_BASE="ca_file=data_files/test-ca_cat12.crt auth_mode=required"
93 P_CLIENT_BASE="ca_file=data_files/test-ca_cat12.crt"
94 O_SERVER_BASE="-CAfile data_files/test-ca_cat12.crt -Verify 10"
95 O_CLIENT_BASE="-CAfile data_files/test-ca_cat12.crt"
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +020096else
Manuel Pégourié-Gonnardeb1714e2013-09-20 12:44:08 +020097 P_SERVER_BASE=""
98 P_CLIENT_BASE=""
99 O_SERVER_BASE=""
100 O_CLIENT_BASE=""
Paul Bakker10cd2252012-04-12 21:26:34 +0000101fi
Paul Bakker398cb512012-04-10 08:22:31 +0000102
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200103
Paul Bakker398cb512012-04-10 08:22:31 +0000104for MODE in $MODES;
105do
Manuel Pégourié-Gonnardd3313192013-09-13 19:20:37 +0200106
107# avoid an avalanche of errors due to typos
108case $MODE in
109 ssl3|tls1|tls1_1|tls1_2)
110 ;;
111 *)
112 echo "error: invalid mode: $MODE" >&2
113 exit 1;
114esac
115
Manuel Pégourié-Gonnarddfc8d5a2013-08-27 20:48:40 +0200116echo "-----------"
Paul Bakker1eeceae2012-11-23 14:25:34 +0100117echo "Running for $MODE (Verify: $VERIFY)"
Paul Bakker398cb512012-04-10 08:22:31 +0000118echo "-----------"
119
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200120for TYPE in $TYPES;
121do
Paul Bakkerfab5c822012-02-06 16:45:10 +0000122
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200123case $TYPE in
Paul Bakker10cd2252012-04-12 21:26:34 +0000124
Manuel Pégourié-Gonnard7ebaf372013-08-27 21:03:33 +0200125 "ECDSA")
126
Manuel Pégourié-Gonnardeb1714e2013-09-20 12:44:08 +0200127 P_SERVER_ARGS="$P_SERVER_BASE crt_file=data_files/server5.crt key_file=data_files/server5.key"
128 P_CLIENT_ARGS="$P_CLIENT_BASE crt_file=data_files/server6.crt key_file=data_files/server6.key"
129 O_SERVER_ARGS="$O_SERVER_BASE -cert data_files/server5.crt -key data_files/server5.key"
130 O_CLIENT_ARGS="$O_CLIENT_BASE -cert data_files/server6.crt -key data_files/server6.key"
Manuel Pégourié-Gonnard7ebaf372013-08-27 21:03:33 +0200131
132 P_CIPHERS=" \
133 TLS-ECDHE-ECDSA-WITH-NULL-SHA \
134 TLS-ECDHE-ECDSA-WITH-RC4-128-SHA \
135 TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA \
136 TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA \
137 TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA \
138 "
139
140 O_CIPHERS=" \
141 ECDHE-ECDSA-NULL-SHA \
142 ECDHE-ECDSA-RC4-SHA \
143 ECDHE-ECDSA-DES-CBC3-SHA \
144 ECDHE-ECDSA-AES128-SHA \
145 ECDHE-ECDSA-AES256-SHA \
146 "
147
148 if [ "$MODE" = "tls1_2" ];
149 then
150 P_CIPHERS="$P_CIPHERS \
151 TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 \
152 TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384 \
153 TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
154 TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384 \
155 "
156
157 O_CIPHERS=" \
158 ECDHE-ECDSA-AES128-SHA256 \
159 ECDHE-ECDSA-AES256-SHA384 \
160 ECDHE-ECDSA-AES128-GCM-SHA256 \
161 ECDHE-ECDSA-AES256-GCM-SHA384 \
162 "
163 fi
164
165 ;;
166
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200167 "RSA")
Paul Bakker1eeceae2012-11-23 14:25:34 +0100168
Manuel Pégourié-Gonnardeb1714e2013-09-20 12:44:08 +0200169 P_SERVER_ARGS="$P_SERVER_BASE crt_file=data_files/server1.crt key_file=data_files/server1.key"
170 P_CLIENT_ARGS="$P_CLIENT_BASE crt_file=data_files/server2.crt key_file=data_files/server2.key"
171 O_SERVER_ARGS="$O_SERVER_BASE -cert data_files/server1.crt -key data_files/server1.key"
172 O_CLIENT_ARGS="$O_CLIENT_BASE -cert data_files/server2.crt -key data_files/server2.key"
Paul Bakker1eeceae2012-11-23 14:25:34 +0100173
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200174 P_CIPHERS=" \
175 TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
176 TLS-DHE-RSA-WITH-AES-256-CBC-SHA \
177 TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA \
178 TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA \
179 TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA \
180 TLS-RSA-WITH-AES-256-CBC-SHA \
181 TLS-RSA-WITH-CAMELLIA-256-CBC-SHA \
182 TLS-RSA-WITH-AES-128-CBC-SHA \
183 TLS-RSA-WITH-CAMELLIA-128-CBC-SHA \
184 TLS-RSA-WITH-3DES-EDE-CBC-SHA \
185 TLS-RSA-WITH-RC4-128-SHA \
186 TLS-RSA-WITH-RC4-128-MD5 \
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200187 TLS-RSA-WITH-NULL-MD5 \
188 TLS-RSA-WITH-NULL-SHA \
189 TLS-RSA-WITH-DES-CBC-SHA \
190 TLS-DHE-RSA-WITH-DES-CBC-SHA \
191 TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA \
192 TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA \
193 TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA \
194 TLS-ECDHE-RSA-WITH-RC4-128-SHA \
195 TLS-ECDHE-RSA-WITH-NULL-SHA \
196 "
Paul Bakker10cd2252012-04-12 21:26:34 +0000197
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200198 O_CIPHERS=" \
199 DHE-RSA-AES128-SHA \
200 DHE-RSA-AES256-SHA \
201 DHE-RSA-CAMELLIA128-SHA \
202 DHE-RSA-CAMELLIA256-SHA \
203 EDH-RSA-DES-CBC3-SHA \
204 AES256-SHA \
205 CAMELLIA256-SHA \
206 AES128-SHA \
207 CAMELLIA128-SHA \
208 DES-CBC3-SHA \
209 RC4-SHA \
210 RC4-MD5 \
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200211 NULL-MD5 \
212 NULL-SHA \
213 DES-CBC-SHA \
214 EDH-RSA-DES-CBC-SHA \
215 ECDHE-RSA-AES256-SHA \
216 ECDHE-RSA-AES128-SHA \
217 ECDHE-RSA-DES-CBC3-SHA \
218 ECDHE-RSA-RC4-SHA \
219 ECDHE-RSA-NULL-SHA \
220 "
221
222 if [ "$MODE" = "tls1_2" ];
223 then
224 P_CIPHERS="$P_CIPHERS \
225 TLS-RSA-WITH-NULL-SHA256 \
226 TLS-RSA-WITH-AES-128-CBC-SHA256 \
227 TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 \
228 TLS-RSA-WITH-AES-256-CBC-SHA256 \
229 TLS-DHE-RSA-WITH-AES-256-CBC-SHA256 \
230 TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256 \
231 TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384 \
232 TLS-RSA-WITH-AES-128-GCM-SHA256 \
233 TLS-RSA-WITH-AES-256-GCM-SHA384 \
234 TLS-DHE-RSA-WITH-AES-128-GCM-SHA256 \
235 TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 \
236 TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 \
237 TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384 \
238 "
239
240 O_CIPHERS="$O_CIPHERS \
241 NULL-SHA256 \
242 AES128-SHA256 \
243 DHE-RSA-AES128-SHA256 \
244 AES256-SHA256 \
245 DHE-RSA-AES256-SHA256 \
246 ECDHE-RSA-AES128-SHA256 \
247 ECDHE-RSA-AES256-SHA384 \
248 AES128-GCM-SHA256 \
249 DHE-RSA-AES128-GCM-SHA256 \
250 AES256-GCM-SHA384 \
251 DHE-RSA-AES256-GCM-SHA384 \
252 ECDHE-RSA-AES128-GCM-SHA256 \
253 ECDHE-RSA-AES256-GCM-SHA384 \
254 "
255 fi
256
257 ;;
258
259 "PSK")
260
Manuel Pégourié-Gonnardeb1714e2013-09-20 12:44:08 +0200261 P_SERVER_ARGS="$P_SERVER_BASE psk=6162636465666768696a6b6c6d6e6f70"
262 P_CLIENT_ARGS="$P_CLIENT_BASE psk=6162636465666768696a6b6c6d6e6f70"
263 O_SERVER_ARGS="$O_SERVER_BASE -psk 6162636465666768696a6b6c6d6e6f70"
264 O_CLIENT_ARGS="$O_CLIENT_BASE -psk 6162636465666768696a6b6c6d6e6f70"
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200265
266 P_CIPHERS=" \
267 TLS-PSK-WITH-RC4-128-SHA \
268 TLS-PSK-WITH-3DES-EDE-CBC-SHA \
269 TLS-PSK-WITH-AES-128-CBC-SHA \
270 TLS-PSK-WITH-AES-256-CBC-SHA \
271 "
272
273 O_CIPHERS=" \
274 PSK-RC4-SHA \
275 PSK-3DES-EDE-CBC-SHA \
276 PSK-AES128-CBC-SHA \
277 PSK-AES256-CBC-SHA \
278 "
279
280 ;;
281
282esac
Paul Bakker10cd2252012-04-12 21:26:34 +0000283
Paul Bakkeraccd4eb2013-07-19 13:41:51 +0200284# Filter ciphersuites
285if [ "X" != "X$FILTER" ];
286then
287 O_CIPHERS=$( filter "$O_CIPHERS" "$FILTER" )
288 P_CIPHERS=$( filter "$P_CIPHERS" "$FILTER" )
289fi
290
291
292log "$OPENSSL s_server -cert data_files/server2.crt -key data_files/server2.key -www -quiet -cipher NULL,ALL $O_SERVER_ARGS -$MODE"
Manuel Pégourié-Gonnarddfc8d5a2013-08-27 20:48:40 +0200293$OPENSSL s_server -cert data_files/server2.crt -key data_files/server2.key -www -quiet -cipher NULL,ALL $O_SERVER_ARGS -$MODE >/dev/null 2>&1 &
Paul Bakker10cd2252012-04-12 21:26:34 +0000294PROCESS_ID=$!
295
296sleep 1
297
298for i in $P_CIPHERS;
Paul Bakkerfab5c822012-02-06 16:45:10 +0000299do
Manuel Pégourié-Gonnard70064fd2013-08-27 22:00:47 +0200300 let "tests++"
Paul Bakkeraccd4eb2013-07-19 13:41:51 +0200301 log "../programs/ssl/ssl_client2 $P_CLIENT_ARGS force_ciphersuite=$i force_version=$MODE"
Paul Bakker89fe7f42013-06-29 16:18:10 +0200302 RESULT="$( ../programs/ssl/ssl_client2 $P_CLIENT_ARGS force_ciphersuite=$i force_version=$MODE )"
Paul Bakkerfab5c822012-02-06 16:45:10 +0000303 EXIT=$?
304 echo -n "OpenSSL Server - PolarSSL Client - $i : $EXIT - "
305 if [ "$EXIT" = "2" ];
306 then
307 echo Ciphersuite not supported in client
Manuel Pégourié-Gonnard70064fd2013-08-27 22:00:47 +0200308 let "skipped++"
Paul Bakkerfab5c822012-02-06 16:45:10 +0000309 elif [ "$EXIT" != "0" ];
310 then
311 echo Failed
312 echo $RESULT
Manuel Pégourié-Gonnard70064fd2013-08-27 22:00:47 +0200313 let "failed++"
Paul Bakkerfab5c822012-02-06 16:45:10 +0000314 else
315 echo Success
316 fi
317done
318kill $PROCESS_ID
Paul Bakkeraccd4eb2013-07-19 13:41:51 +0200319wait $PROCESS_ID 2>/dev/null
Paul Bakkerfab5c822012-02-06 16:45:10 +0000320
Paul Bakkeraccd4eb2013-07-19 13:41:51 +0200321log "../programs/ssl/ssl_server2 $P_SERVER_ARGS force_version=$MODE > /dev/null"
Paul Bakker89fe7f42013-06-29 16:18:10 +0200322../programs/ssl/ssl_server2 $P_SERVER_ARGS force_version=$MODE > /dev/null &
Paul Bakkerfab5c822012-02-06 16:45:10 +0000323PROCESS_ID=$!
324
325sleep 1
326
Paul Bakker10cd2252012-04-12 21:26:34 +0000327for i in $O_CIPHERS;
Paul Bakkerfab5c822012-02-06 16:45:10 +0000328do
Manuel Pégourié-Gonnard70064fd2013-08-27 22:00:47 +0200329 let "tests++"
Paul Bakkeraccd4eb2013-07-19 13:41:51 +0200330 log "$OPENSSL s_client -$MODE -cipher $i $O_CLIENT_ARGS"
Paul Bakker1eeceae2012-11-23 14:25:34 +0100331 RESULT="$( ( echo -e 'GET HTTP/1.0'; echo; sleep 1 ) | $OPENSSL s_client -$MODE -cipher $i $O_CLIENT_ARGS 2>&1 )"
Paul Bakkerfab5c822012-02-06 16:45:10 +0000332 EXIT=$?
333 echo -n "PolarSSL Server - OpenSSL Client - $i : $EXIT - "
334
335 if [ "$EXIT" != "0" ];
336 then
337 SUPPORTED="$( echo $RESULT | grep 'Cipher is (NONE)' )"
338 if [ "X$SUPPORTED" != "X" ]
339 then
340 echo "Ciphersuite not supported in server"
Manuel Pégourié-Gonnard70064fd2013-08-27 22:00:47 +0200341 let "skipped++"
Paul Bakkerfab5c822012-02-06 16:45:10 +0000342 else
343 echo Failed
Paul Bakker1eeceae2012-11-23 14:25:34 +0100344 echo ../programs/ssl/ssl_server2 $P_SERVER_ARGS
345 echo $OPENSSL s_client -$MODE -cipher $i $O_CLIENT_ARGS
Paul Bakkerfab5c822012-02-06 16:45:10 +0000346 echo $RESULT
Manuel Pégourié-Gonnard70064fd2013-08-27 22:00:47 +0200347 let "failed++"
Paul Bakkerfab5c822012-02-06 16:45:10 +0000348 fi
349 else
350 echo Success
351 fi
352done
353
354kill $PROCESS_ID
Paul Bakkeraccd4eb2013-07-19 13:41:51 +0200355wait $PROCESS_ID 2>/dev/null
Paul Bakkerfab5c822012-02-06 16:45:10 +0000356
Paul Bakkeraccd4eb2013-07-19 13:41:51 +0200357log "../programs/ssl/ssl_server2 $P_SERVER_ARGS force_version=$MODE"
Paul Bakker89fe7f42013-06-29 16:18:10 +0200358../programs/ssl/ssl_server2 $P_SERVER_ARGS force_version=$MODE > /dev/null &
Paul Bakkerfab5c822012-02-06 16:45:10 +0000359PROCESS_ID=$!
360
361sleep 1
362
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200363# Add ciphersuites supported by PolarSSL only
Paul Bakkerfab5c822012-02-06 16:45:10 +0000364
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200365case $TYPE in
366
Manuel Pégourié-Gonnard7ebaf372013-08-27 21:03:33 +0200367 "ECDSA")
368
369 if [ "$MODE" = "tls1_2" ];
370 then
371 P_CIPHERS="$P_CIPHERS \
372 TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256 \
373 TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384 \
374 "
375 fi
376
377 ;;
378
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200379 "RSA")
380
381 if [ "$MODE" = "tls1_2" ];
382 then
Manuel Pégourié-Gonnard7ebaf372013-08-27 21:03:33 +0200383 P_CIPHERS="$P_CIPHERS \
384 TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256 \
Manuel Pégourié-Gonnard7ebaf372013-08-27 21:03:33 +0200385 TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256 \
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200386 TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256 \
Manuel Pégourié-Gonnard7ebaf372013-08-27 21:03:33 +0200387 TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256 \
388 TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256 \
389 TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384 \
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200390 TLS-ECDHE-RSA-WITH-CAMELLIA-128-GCM-SHA256 \
391 TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384 \
392 TLS-DHE-RSA-WITH-CAMELLIA-128-GCM-SHA256 \
393 TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384 \
394 TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256 \
395 TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384 \
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200396 "
397 fi
398
399 ;;
400
401 "PSK")
402
403 P_CIPHERS="$P_CIPHERS \
404 TLS-DHE-PSK-WITH-RC4-128-SHA \
405 TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA \
406 TLS-DHE-PSK-WITH-AES-128-CBC-SHA \
407 TLS-DHE-PSK-WITH-AES-256-CBC-SHA \
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200408 TLS-DHE-PSK-WITH-NULL-SHA \
Manuel Pégourié-Gonnardeebb5ad2013-10-15 12:26:10 +0200409 TLS-PSK-WITH-NULL-SHA \
410 TLS-RSA-PSK-WITH-RC4-128-SHA \
411 TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA \
412 TLS-RSA-PSK-WITH-AES-256-CBC-SHA \
413 TLS-RSA-PSK-WITH-AES-128-CBC-SHA \
414 TLS-RSA-WITH-NULL-SHA \
415 TLS-RSA-WITH-NULL-MD5 \
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200416 "
417
Manuel Pégourié-Gonnardeebb5ad2013-10-15 12:26:10 +0200418
419 if [ "$MODE" != "ssl3" ];
420 then
421 P_CIPHERS="$P_CIPHERS \
422 TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA \
423 TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA \
424 TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA \
425 TLS-ECDHE-PSK-WITH-RC4-128-SHA \
426 TLS-ECDHE-PSK-WITH-NULL-SHA \
427 "
428 fi
429
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200430 if [ "$MODE" = "tls1_2" ];
431 then
432 P_CIPHERS="$P_CIPHERS \
433 TLS-PSK-WITH-AES-128-CBC-SHA256 \
434 TLS-PSK-WITH-AES-256-CBC-SHA384 \
435 TLS-DHE-PSK-WITH-AES-128-CBC-SHA256 \
436 TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
437 TLS-PSK-WITH-AES-128-GCM-SHA256 \
438 TLS-PSK-WITH-AES-256-GCM-SHA384 \
439 TLS-DHE-PSK-WITH-AES-128-GCM-SHA256 \
440 TLS-DHE-PSK-WITH-AES-256-GCM-SHA384 \
441 TLS-PSK-WITH-NULL-SHA256 \
442 TLS-PSK-WITH-NULL-SHA384 \
443 TLS-DHE-PSK-WITH-NULL-SHA256 \
444 TLS-DHE-PSK-WITH-NULL-SHA384 \
445 TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256 \
446 TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384 \
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200447 TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256 \
448 TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384 \
449 TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256 \
450 TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384 \
451 TLS-DHE-PSK-WITH-CAMELLIA-128-GCM-SHA256 \
452 TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384 \
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200453 TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256 \
454 TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384 \
Manuel Pégourié-Gonnardeebb5ad2013-10-15 12:26:10 +0200455 TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
456 TLS-RSA-PSK-WITH-AES-256-GCM-SHA384 \
457 TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384 \
458 TLS-RSA-PSK-WITH-AES-128-CBC-SHA256 \
459 TLS-RSA-PSK-WITH-AES-128-GCM-SHA256 \
460 TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256 \
461 TLS-RSA-WITH-NULL-SHA256 \
462 TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
463 TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384 \
464 TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 \
465 TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256 \
466 TLS-ECDHE-PSK-WITH-NULL-SHA384 \
467 TLS-ECDHE-PSK-WITH-NULL-SHA256 \
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200468 "
469 fi
470
471esac
Paul Bakker48f7a5d2013-04-19 14:30:58 +0200472
Paul Bakkeraccd4eb2013-07-19 13:41:51 +0200473# Filter ciphersuites
474if [ "X" != "X$FILTER" ];
475then
476 O_CIPHERS=$( filter "$O_CIPHERS" "$FILTER" )
477 P_CIPHERS=$( filter "$P_CIPHERS" "$FILTER" )
478fi
479
Paul Bakker10cd2252012-04-12 21:26:34 +0000480for i in $P_CIPHERS;
Paul Bakkerfab5c822012-02-06 16:45:10 +0000481do
Manuel Pégourié-Gonnard70064fd2013-08-27 22:00:47 +0200482 let "tests++"
Paul Bakkeraccd4eb2013-07-19 13:41:51 +0200483 log "../programs/ssl/ssl_client2 force_ciphersuite=$i force_version=$MODE $P_CLIENT_ARGS"
Paul Bakker89fe7f42013-06-29 16:18:10 +0200484 RESULT="$( ../programs/ssl/ssl_client2 force_ciphersuite=$i force_version=$MODE $P_CLIENT_ARGS )"
Paul Bakkerfab5c822012-02-06 16:45:10 +0000485 EXIT=$?
486 echo -n "PolarSSL Server - PolarSSL Client - $i : $EXIT - "
487 if [ "$EXIT" = "2" ];
488 then
489 echo Ciphersuite not supported in client
Manuel Pégourié-Gonnard70064fd2013-08-27 22:00:47 +0200490 let "skipped++"
Paul Bakkerfab5c822012-02-06 16:45:10 +0000491 elif [ "$EXIT" != "0" ];
492 then
493 echo Failed
494 echo $RESULT
Manuel Pégourié-Gonnard70064fd2013-08-27 22:00:47 +0200495 let "failed++"
Paul Bakkerfab5c822012-02-06 16:45:10 +0000496 else
497 echo Success
498 fi
499done
500kill $PROCESS_ID
Paul Bakkeraccd4eb2013-07-19 13:41:51 +0200501wait $PROCESS_ID 2>/dev/null
Paul Bakkerfab5c822012-02-06 16:45:10 +0000502
Paul Bakker398cb512012-04-10 08:22:31 +0000503done
Paul Bakker1eeceae2012-11-23 14:25:34 +0100504done
Manuel Pégourié-Gonnard9791a402013-08-27 19:57:15 +0200505done
Manuel Pégourié-Gonnard70064fd2013-08-27 22:00:47 +0200506
507echo ""
508echo "-------------------------------------------------------------------------"
509echo ""
510
511if (( failed != 0 ));
512then
513 echo -n "FAILED"
514else
515 echo -n "PASSED"
516fi
517
518let "passed = tests - failed"
519echo " ($passed / $tests tests ($skipped skipped))"
520
521exit $failed