14
14
*/
15
15
16
16
#include "api/s2n.h"
17
-
18
17
#include "s2n_test.h"
19
18
#include "testlib/s2n_testlib.h"
20
-
21
19
#include "tls/s2n_connection.h"
22
20
#include "tls/s2n_handshake.h"
23
21
#include "utils/s2n_safety.h"
@@ -30,19 +28,20 @@ static message_type_t invalid_handshake[S2N_MAX_HANDSHAKE_LENGTH] = { 0 };
30
28
static int expected_handler_called ;
31
29
static int unexpected_handler_called ;
32
30
33
- static int s2n_test_handler (struct s2n_connection * conn )
31
+ static int s2n_test_handler (struct s2n_connection * conn )
34
32
{
35
33
unexpected_handler_called = 1 ;
36
34
return 0 ;
37
35
}
38
36
39
- static int s2n_test_expected_handler (struct s2n_connection * conn )
37
+ static int s2n_test_expected_handler (struct s2n_connection * conn )
40
38
{
41
39
expected_handler_called = 1 ;
42
40
return 0 ;
43
41
}
44
42
45
- static int s2n_setup_handler_to_expect (message_type_t expected , uint8_t direction ) {
43
+ static int s2n_setup_handler_to_expect (message_type_t expected , uint8_t direction )
44
+ {
46
45
for (int i = 0 ; i < s2n_array_len (state_machine ); i ++ ) {
47
46
state_machine [i ].handler [0 ] = s2n_test_handler ;
48
47
state_machine [i ].handler [1 ] = s2n_test_handler ;
@@ -96,7 +95,7 @@ int main(int argc, char **argv)
96
95
uint16_t valid_tls12_handshakes [S2N_HANDSHAKES_COUNT ];
97
96
int valid_tls12_handshakes_size = 0 ;
98
97
for (int i = 0 ; i < S2N_HANDSHAKES_COUNT ; i ++ ) {
99
- if (memcmp (handshakes [i ], invalid_handshake , S2N_MAX_HANDSHAKE_LENGTH ) != 0 ) {
98
+ if (memcmp (handshakes [i ], invalid_handshake , S2N_MAX_HANDSHAKE_LENGTH ) != 0 ) {
100
99
valid_tls12_handshakes [valid_tls12_handshakes_size ] = i ;
101
100
valid_tls12_handshakes_size ++ ;
102
101
}
@@ -111,7 +110,7 @@ int main(int argc, char **argv)
111
110
EXPECT_EQUAL (ACTIVE_STATE_MACHINE (conn ), state_machine );
112
111
EXPECT_EQUAL (ACTIVE_HANDSHAKES (conn ), handshakes );
113
112
EXPECT_SUCCESS (s2n_connection_free (conn ));
114
- }
113
+ };
115
114
116
115
/* Test: TLS1.2 server waits for expected CCS messages */
117
116
{
@@ -138,7 +137,7 @@ int main(int argc, char **argv)
138
137
}
139
138
140
139
EXPECT_SUCCESS (s2n_connection_free (conn ));
141
- }
140
+ };
142
141
143
142
/* Test: Client CCS messages always come before Client Finished messages */
144
143
{
@@ -152,7 +151,6 @@ int main(int argc, char **argv)
152
151
bool ccs_encountered = false;
153
152
154
153
for (int j = 0 ; j < S2N_MAX_HANDSHAKE_LENGTH ; j ++ ) {
155
-
156
154
if (handshakes [handshake ][j ] == CLIENT_CHANGE_CIPHER_SPEC ) {
157
155
ccs_encountered = true;
158
156
}
@@ -164,7 +162,7 @@ int main(int argc, char **argv)
164
162
/* Every valid handshake includes a CCS message */
165
163
EXPECT_TRUE (ccs_encountered );
166
164
}
167
- }
165
+ };
168
166
169
167
/* Test: TLS1.2 client waits for expected CCS messages */
170
168
{
@@ -191,7 +189,7 @@ int main(int argc, char **argv)
191
189
}
192
190
193
191
EXPECT_SUCCESS (s2n_connection_free (conn ));
194
- }
192
+ };
195
193
196
194
/* Test: TLS1.2 client handles expected server CCS messages
197
195
* but errors on unexpected CCS messages */
@@ -231,7 +229,7 @@ int main(int argc, char **argv)
231
229
232
230
EXPECT_SUCCESS (s2n_stuffer_free (& input ));
233
231
EXPECT_SUCCESS (s2n_connection_free (conn ));
234
- }
232
+ };
235
233
236
234
/* Test: TLS1.2 server handles expected client CCS messages
237
235
* but errors on unexpected CCS messages */
@@ -271,7 +269,7 @@ int main(int argc, char **argv)
271
269
272
270
EXPECT_SUCCESS (s2n_stuffer_free (& input ));
273
271
EXPECT_SUCCESS (s2n_connection_free (conn ));
274
- }
272
+ };
275
273
276
274
/* Test: TLS1.2 client can receive a hello request message at any time. */
277
275
{
@@ -305,7 +303,7 @@ int main(int argc, char **argv)
305
303
EXPECT_FALSE (unexpected_handler_called );
306
304
EXPECT_SUCCESS (s2n_stuffer_free (& input ));
307
305
EXPECT_SUCCESS (s2n_connection_free (conn ));
308
- }
306
+ };
309
307
310
308
/* Test: TLS1.2 s2n_handshake_read_io should accept only the expected message */
311
309
{
@@ -332,7 +330,7 @@ int main(int argc, char **argv)
332
330
333
331
EXPECT_SUCCESS (s2n_stuffer_free (& input ));
334
332
EXPECT_SUCCESS (s2n_connection_free (conn ));
335
- }
333
+ };
336
334
337
335
/* TLS1.2 should error for an unexpected message */
338
336
{
@@ -357,7 +355,7 @@ int main(int argc, char **argv)
357
355
358
356
EXPECT_SUCCESS (s2n_stuffer_free (& input ));
359
357
EXPECT_SUCCESS (s2n_connection_free (conn ));
360
- }
358
+ };
361
359
362
360
/* TLS1.2 should error for an expected message from the wrong writer */
363
361
{
@@ -382,7 +380,7 @@ int main(int argc, char **argv)
382
380
383
381
EXPECT_SUCCESS (s2n_stuffer_free (& input ));
384
382
EXPECT_SUCCESS (s2n_connection_free (conn ));
385
- }
383
+ };
386
384
387
385
/* TLS1.2 should error for an expected message from the wrong record type */
388
386
{
@@ -419,8 +417,8 @@ int main(int argc, char **argv)
419
417
EXPECT_SUCCESS (s2n_stuffer_free (& input ));
420
418
EXPECT_SUCCESS (s2n_connection_free (conn ));
421
419
state_machine [SERVER_CHANGE_CIPHER_SPEC ].message_type = old_message_type ;
422
- }
423
- }
420
+ };
421
+ };
424
422
425
423
/* Test: TLS1.2 handshake type name maximum size is set correctly.
426
424
* The maximum size is the size of a name with all flags set. */
@@ -433,7 +431,7 @@ int main(int argc, char **argv)
433
431
fprintf (stderr , "\nMAX_HANDSHAKE_TYPE_LEN should be at least %lu\n" , (unsigned long ) correct_size );
434
432
FAIL_MSG ("MAX_HANDSHAKE_TYPE_LEN wrong for TLS1.2 handshakes" );
435
433
}
436
- }
434
+ };
437
435
438
436
/* Test: TLS 1.2 handshake types are all properly printed */
439
437
{
@@ -446,10 +444,9 @@ int main(int argc, char **argv)
446
444
conn -> handshake .handshake_type = NEGOTIATED | FULL_HANDSHAKE ;
447
445
EXPECT_STRING_EQUAL ("NEGOTIATED|FULL_HANDSHAKE" , s2n_connection_get_handshake_type_name (conn ));
448
446
449
- const char * all_flags_handshake_type_name = "NEGOTIATED|FULL_HANDSHAKE|CLIENT_AUTH|NO_CLIENT_CERT|"
450
- "TLS12_PERFECT_FORWARD_SECRECY|OCSP_STATUS|WITH_SESSION_TICKET|WITH_NPN" ;
451
- conn -> handshake .handshake_type = NEGOTIATED | FULL_HANDSHAKE | CLIENT_AUTH | NO_CLIENT_CERT | \
452
- TLS12_PERFECT_FORWARD_SECRECY | OCSP_STATUS | WITH_SESSION_TICKET | WITH_NPN ;
447
+ const char * all_flags_handshake_type_name = "NEGOTIATED|FULL_HANDSHAKE|CLIENT_AUTH|NO_CLIENT_CERT|"
448
+ "TLS12_PERFECT_FORWARD_SECRECY|OCSP_STATUS|WITH_SESSION_TICKET|WITH_NPN" ;
449
+ conn -> handshake .handshake_type = NEGOTIATED | FULL_HANDSHAKE | CLIENT_AUTH | NO_CLIENT_CERT | TLS12_PERFECT_FORWARD_SECRECY | OCSP_STATUS | WITH_SESSION_TICKET | WITH_NPN ;
453
450
EXPECT_STRING_EQUAL (all_flags_handshake_type_name , s2n_connection_get_handshake_type_name (conn ));
454
451
455
452
const char * handshake_type_name ;
@@ -470,37 +467,35 @@ int main(int argc, char **argv)
470
467
}
471
468
472
469
EXPECT_SUCCESS (s2n_connection_free (conn ));
473
- }
470
+ };
474
471
475
472
/* Test: TLS 1.2 message types are all properly printed */
476
473
{
477
- uint32_t test_handshake_type = NEGOTIATED | FULL_HANDSHAKE | TLS12_PERFECT_FORWARD_SECRECY | \
478
- OCSP_STATUS | CLIENT_AUTH | WITH_SESSION_TICKET | WITH_NPN ;
479
- const char * expected [] = { "CLIENT_HELLO" ,
480
- "SERVER_HELLO" , "SERVER_CERT" , "SERVER_CERT_STATUS" , "SERVER_KEY" , "SERVER_CERT_REQ" , "SERVER_HELLO_DONE" ,
481
- "CLIENT_CERT" , "CLIENT_KEY" , "CLIENT_CERT_VERIFY" , "CLIENT_CHANGE_CIPHER_SPEC" , "CLIENT_NPN" ,
482
- "CLIENT_FINISHED" , "SERVER_NEW_SESSION_TICKET" , "SERVER_CHANGE_CIPHER_SPEC" , "SERVER_FINISHED" ,
483
- "APPLICATION_DATA" };
474
+ uint32_t test_handshake_type = NEGOTIATED | FULL_HANDSHAKE | TLS12_PERFECT_FORWARD_SECRECY | OCSP_STATUS | CLIENT_AUTH | WITH_SESSION_TICKET | WITH_NPN ;
475
+ const char * expected [] = { "CLIENT_HELLO" ,
476
+ "SERVER_HELLO" , "SERVER_CERT" , "SERVER_CERT_STATUS" , "SERVER_KEY" , "SERVER_CERT_REQ" , "SERVER_HELLO_DONE" ,
477
+ "CLIENT_CERT" , "CLIENT_KEY" , "CLIENT_CERT_VERIFY" , "CLIENT_CHANGE_CIPHER_SPEC" , "CLIENT_NPN" ,
478
+ "CLIENT_FINISHED" , "SERVER_NEW_SESSION_TICKET" , "SERVER_CHANGE_CIPHER_SPEC" , "SERVER_FINISHED" ,
479
+ "APPLICATION_DATA" };
484
480
485
481
struct s2n_connection * conn = s2n_connection_new (S2N_SERVER );
486
482
487
483
conn -> handshake .handshake_type = test_handshake_type ;
488
484
489
- for (int i = 0 ; i < sizeof (expected ) / sizeof (char * ); i ++ ) {
485
+ for (int i = 0 ; i < sizeof (expected ) / sizeof (char * ); i ++ ) {
490
486
conn -> handshake .message_number = i ;
491
487
EXPECT_STRING_EQUAL (expected [i ], s2n_connection_get_last_message_name (conn ));
492
488
}
493
489
494
490
EXPECT_SUCCESS (s2n_connection_free (conn ));
495
- }
491
+ };
496
492
497
493
/* Test: A WITH_NPN form of every valid, negotiated handshake exists */
498
494
{
499
495
uint32_t handshake_type_original , handshake_type_npn ;
500
496
message_type_t * messages_original , * messages_npn ;
501
497
502
498
for (size_t i = 0 ; i < valid_tls12_handshakes_size ; i ++ ) {
503
-
504
499
handshake_type_original = valid_tls12_handshakes [i ];
505
500
messages_original = handshakes [handshake_type_original ];
506
501
@@ -514,7 +509,6 @@ int main(int argc, char **argv)
514
509
messages_npn = handshakes [handshake_type_npn ];
515
510
516
511
for (size_t j = 0 , j_npn = 0 ; j < S2N_MAX_HANDSHAKE_LENGTH && j_npn < S2N_MAX_HANDSHAKE_LENGTH ; j ++ , j_npn ++ ) {
517
-
518
512
/* The original handshake cannot contain the Next Protocol message */
519
513
EXPECT_NOT_EQUAL (messages_original [j ], CLIENT_NPN );
520
514
@@ -527,7 +521,7 @@ int main(int argc, char **argv)
527
521
EXPECT_EQUAL (messages_original [j ], messages_npn [j_npn ]);
528
522
}
529
523
}
530
- }
524
+ };
531
525
532
526
END_TEST ();
533
527
return 0 ;
0 commit comments