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