1/* Copyright (c) 2014, Google Inc.
2 *
3 * Permission to use, copy, modify, and/or distribute this software for any
4 * purpose with or without fee is hereby granted, provided that the above
5 * copyright notice and this permission notice appear in all copies.
6 *
7 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
15#ifndef HEADER_TEST_CONFIG
16#define HEADER_TEST_CONFIG
17
18#include <string>
19
20
21struct TestConfig {
22  int port = 0;
23  bool is_server = false;
24  bool is_dtls = false;
25  bool resume = false;
26  bool fallback_scsv = false;
27  std::string digest_prefs;
28  std::string key_file;
29  std::string cert_file;
30  std::string expected_server_name;
31  std::string expected_certificate_types;
32  bool require_any_client_certificate = false;
33  std::string advertise_npn;
34  std::string expected_next_proto;
35  bool false_start = false;
36  std::string select_next_proto;
37  bool async = false;
38  bool write_different_record_sizes = false;
39  bool cbc_record_splitting = false;
40  bool partial_write = false;
41  bool no_tls12 = false;
42  bool no_tls11 = false;
43  bool no_tls1 = false;
44  bool no_ssl3 = false;
45  std::string expected_channel_id;
46  std::string send_channel_id;
47  bool shim_writes_first = false;
48  std::string host_name;
49  std::string advertise_alpn;
50  std::string expected_alpn;
51  std::string expected_advertised_alpn;
52  std::string select_alpn;
53  bool expect_session_miss = false;
54  bool expect_extended_master_secret = false;
55  std::string psk;
56  std::string psk_identity;
57  std::string srtp_profiles;
58  bool enable_ocsp_stapling = false;
59  std::string expected_ocsp_response;
60  bool enable_signed_cert_timestamps = false;
61  std::string expected_signed_cert_timestamps;
62  int min_version = 0;
63  int max_version = 0;
64  int mtu = 0;
65  bool implicit_handshake = false;
66  bool use_early_callback = false;
67  bool fail_early_callback = false;
68  bool install_ddos_callback = false;
69  bool fail_ddos_callback = false;
70  bool fail_second_ddos_callback = false;
71  std::string cipher;
72  std::string cipher_tls10;
73  std::string cipher_tls11;
74  bool handshake_never_done = false;
75  int export_keying_material = 0;
76  std::string export_label;
77  std::string export_context;
78  bool use_export_context = false;
79  bool tls_unique = false;
80  bool expect_ticket_renewal = false;
81  bool expect_no_session = false;
82  bool use_ticket_callback = false;
83  bool renew_ticket = false;
84  bool enable_client_custom_extension = false;
85  bool enable_server_custom_extension = false;
86  bool custom_extension_skip = false;
87  bool custom_extension_fail_add = false;
88  std::string ocsp_response;
89  bool check_close_notify = false;
90  bool shim_shuts_down = false;
91  bool verify_fail = false;
92  bool verify_peer = false;
93  bool expect_verify_result = false;
94  std::string signed_cert_timestamps;
95  int expect_total_renegotiations = 0;
96  bool renegotiate_once = false;
97  bool renegotiate_freely = false;
98  bool renegotiate_ignore = false;
99  bool disable_npn = false;
100  int expect_server_key_exchange_hash = 0;
101  bool p384_only = false;
102  bool enable_all_curves = false;
103  bool use_sparse_dh_prime = false;
104  int expect_key_exchange_info = 0;
105};
106
107bool ParseConfig(int argc, char **argv, TestConfig *out_config);
108
109
110#endif  // HEADER_TEST_CONFIG
111