+ { "KeyUpdateType", &parse_key_update_type },
+ { "ResumptionExpected", &parse_test_resumption_expected },
+ { "ApplicationData", &parse_test_app_data_size },
+ { "MaxFragmentSize", &parse_test_max_fragment_size },
+ { "ExpectedTmpKeyType", &parse_expected_tmp_key_type },
+ { "ExpectedServerCertType", &parse_expected_server_cert_type },
+ { "ExpectedServerSignHash", &parse_expected_server_sign_hash },
+ { "ExpectedServerSignType", &parse_expected_server_sign_type },
+ { "ExpectedServerCANames", &parse_expected_server_ca_names },
+ { "ExpectedClientCertType", &parse_expected_client_cert_type },
+ { "ExpectedClientSignHash", &parse_expected_client_sign_hash },
+ { "ExpectedClientSignType", &parse_expected_client_sign_type },
+ { "ExpectedClientCANames", &parse_expected_client_ca_names },
+ { "UseSCTP", &parse_test_use_sctp },
+};
+
+/* Nested client options. */
+typedef struct {
+ const char *name;
+ int (*parse)(SSL_TEST_CLIENT_CONF *conf, const char *value);
+} ssl_test_client_option;
+
+static const ssl_test_client_option ssl_test_client_options[] = {
+ { "VerifyCallback", &parse_client_verify_callback },
+ { "ServerName", &parse_servername },
+ { "NPNProtocols", &parse_client_npn_protocols },
+ { "ALPNProtocols", &parse_client_alpn_protocols },
+ { "CTValidation", &parse_ct_validation },
+ { "RenegotiateCiphers", &parse_client_reneg_ciphers},
+ { "SRPUser", &parse_client_srp_user },
+ { "SRPPassword", &parse_client_srp_password },
+};
+
+/* Nested server options. */
+typedef struct {
+ const char *name;
+ int (*parse)(SSL_TEST_SERVER_CONF *conf, const char *value);
+} ssl_test_server_option;
+
+static const ssl_test_server_option ssl_test_server_options[] = {
+ { "ServerNameCallback", &parse_servername_callback },
+ { "NPNProtocols", &parse_server_npn_protocols },
+ { "ALPNProtocols", &parse_server_alpn_protocols },
+ { "BrokenSessionTicket", &parse_server_broken_session_ticket },
+ { "CertStatus", &parse_certstatus },
+ { "SRPUser", &parse_server_srp_user },
+ { "SRPPassword", &parse_server_srp_password },