1 /* $OpenBSD: valid_handshakes_terminate.c,v 1.3 2019/04/05 20:25:42 tb Exp $ */ 2 /* 3 * Copyright (c) 2019 Theo Buehler <tb@openbsd.org> 4 * 5 * Permission to use, copy, modify, and distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 #include <err.h> 19 #include <stdio.h> 20 21 #include "tls13_handshake.c" 22 23 int 24 main(int argc, char *argv[]) 25 { 26 size_t i, j; 27 int terminates; 28 int fail = 0; 29 30 for (i = 1; i < handshake_count; i++) { 31 enum tls13_message_type mt = handshakes[i][0]; 32 33 if (mt == INVALID) 34 continue; 35 36 terminates = 0; 37 38 for (j = 0; j < TLS13_NUM_MESSAGE_TYPES; j++) { 39 mt = handshakes[i][j]; 40 if (state_machine[mt].handshake_complete) { 41 terminates = 1; 42 break; 43 } 44 } 45 46 if (!terminates) { 47 fail = 1; 48 printf("FAIL: handshake_complete never true in " 49 "handshake %zu\n", i); 50 } 51 } 52 53 if (!fail) 54 printf("SUCCESS\n"); 55 56 return fail; 57 } 58