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