/*++ /* NAME /* tls_proxy_client_misc 3 /* SUMMARY /* TLS_CLIENT_XXX structure support /* SYNOPSIS /* #include /* /* TLS_CLIENT_PARAMS *tls_proxy_client_param_from_config(params) /* TLS_CLIENT_PARAMS *params; /* /* char *tls_proxy_client_param_to_string(buf, params) /* VSTRING *buf; /* TLS_CLIENT_PARAMS *params; /* /* char *tls_proxy_client_param_with_names_to_string(buf, params) /* VSTRING *buf; /* TLS_CLIENT_PARAMS *params; /* /* char *tls_proxy_client_init_to_string(buf, init_props) /* VSTRING *buf; /* TLS_CLIENT_INIT_PROPS *init_props; /* DESCRIPTION /* tls_proxy_client_param_from_config() initializes a TLS_CLIENT_PARAMS /* structure from configuration parameters and returns its /* argument. Strings are not copied. The result must therefore /* not be passed to tls_proxy_client_param_free(). /* /* tls_proxy_client_param_to_string() produces a lookup key /* that is unique for the TLS_CLIENT_PARAMS member values. /* /* tls_proxy_client_param_with_names_to_string() produces a /* string with "name = value\n" for each TLS_CLIENT_PARAMS /* member. This may be useful for reporting differences between /* TLS_CLIENT_PARAMS instances. /* /* tls_proxy_client_init_to_string() produces a lookup key /* that is unique for the properties received by /* tls_proxy_client_init_scan(). /* /* tls_proxy_client_init_with_names_to_string() produces a /* string with "name = value\n" for each TLS_CLIENT_INIT_PROPS /* member. This may be useful for reporting differences between /* TLS_CLIENT_INIT_PROPS instances. /* LICENSE /* .ad /* .fi /* The Secure Mailer license must be distributed with this software. /* AUTHOR(S) /* Wietse Venema /* Google, Inc. /* 111 8th Avenue /* New York, NY 10011, USA /*--*/ #ifdef USE_TLS /* System library. */ #include /* Utility library */ #include #include /* Global library. */ #include /* TLS library. */ #include #include /* tls_proxy_client_param_from_config - initialize TLS_CLIENT_PARAMS from configuration */ TLS_CLIENT_PARAMS *tls_proxy_client_param_from_config(TLS_CLIENT_PARAMS *params) { TLS_PROXY_PARAMS(params, tls_high_clist = var_tls_high_clist, tls_medium_clist = var_tls_medium_clist, tls_low_clist = var_tls_low_clist, tls_export_clist = var_tls_export_clist, tls_null_clist = var_tls_null_clist, tls_eecdh_auto = var_tls_eecdh_auto, tls_eecdh_strong = var_tls_eecdh_strong, tls_eecdh_ultra = var_tls_eecdh_ultra, tls_bug_tweaks = var_tls_bug_tweaks, tls_ssl_options = var_tls_ssl_options, tls_dane_digests = var_tls_dane_digests, tls_mgr_service = var_tls_mgr_service, tls_tkt_cipher = var_tls_tkt_cipher, tls_daemon_rand_bytes = var_tls_daemon_rand_bytes, tls_append_def_CA = var_tls_append_def_CA, tls_bc_pkey_fprint = var_tls_bc_pkey_fprint, tls_preempt_clist = var_tls_preempt_clist, tls_multi_wildcard = var_tls_multi_wildcard); return (params); } /* tls_proxy_client_param_to_string - serialize TLS_CLIENT_PARAMS to string */ char *tls_proxy_client_param_to_string(VSTRING *buf, TLS_CLIENT_PARAMS *params) { vstring_sprintf(buf, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n" "%s\n%s\n%d\n%d\n%d\n%d\n%d\n", params->tls_high_clist, params->tls_medium_clist, params->tls_low_clist, params->tls_export_clist, params->tls_null_clist, params->tls_eecdh_auto, params->tls_eecdh_strong, params->tls_eecdh_ultra, params->tls_bug_tweaks, params->tls_ssl_options, params->tls_dane_digests, params->tls_mgr_service, params->tls_tkt_cipher, params->tls_daemon_rand_bytes, params->tls_append_def_CA, params->tls_bc_pkey_fprint, params->tls_preempt_clist, params->tls_multi_wildcard); return (vstring_str(buf)); } /* tls_proxy_client_param_with_names_to_string - serialize TLS_CLIENT_PARAMS to string */ char *tls_proxy_client_param_with_names_to_string(VSTRING *buf, TLS_CLIENT_PARAMS *params) { vstring_sprintf(buf, "%s = %s\n%s = %s\n%s = %s\n%s = %s\n%s = %s\n" "%s = %s\n%s = %s\n%s = %s\n%s = %s\n%s = %s\n%s = %s\n" "%s = %s\n%s = %s\n%s = %d\n" "%s = %d\n%s = %d\n%s = %d\n%s = %d\n", VAR_TLS_HIGH_CLIST, params->tls_high_clist, VAR_TLS_MEDIUM_CLIST, params->tls_medium_clist, VAR_TLS_LOW_CLIST, params->tls_low_clist, VAR_TLS_EXPORT_CLIST, params->tls_export_clist, VAR_TLS_NULL_CLIST, params->tls_null_clist, VAR_TLS_EECDH_AUTO, params->tls_eecdh_auto, VAR_TLS_EECDH_STRONG, params->tls_eecdh_strong, VAR_TLS_EECDH_ULTRA, params->tls_eecdh_ultra, VAR_TLS_BUG_TWEAKS, params->tls_bug_tweaks, VAR_TLS_SSL_OPTIONS, params->tls_ssl_options, VAR_TLS_DANE_DIGESTS, params->tls_dane_digests, VAR_TLS_MGR_SERVICE, params->tls_mgr_service, VAR_TLS_TKT_CIPHER, params->tls_tkt_cipher, VAR_TLS_DAEMON_RAND_BYTES, params->tls_daemon_rand_bytes, VAR_TLS_APPEND_DEF_CA, params->tls_append_def_CA, VAR_TLS_BC_PKEY_FPRINT, params->tls_bc_pkey_fprint, VAR_TLS_PREEMPT_CLIST, params->tls_preempt_clist, VAR_TLS_MULTI_WILDCARD, params->tls_multi_wildcard); return (vstring_str(buf)); } /* tls_proxy_client_init_to_string - serialize to string */ char *tls_proxy_client_init_to_string(VSTRING *buf, TLS_CLIENT_INIT_PROPS *props) { vstring_sprintf(buf, "%s\n%s\n%d\n%s\n%s\n%s\n%s\n%s\n%s\n" "%s\n%s\n%s\n%s\n%s\n", props->log_param, props->log_level, props->verifydepth, props->cache_type, props->chain_files, props->cert_file, props->key_file, props->dcert_file, props->dkey_file, props->eccert_file, props->eckey_file, props->CAfile, props->CApath, props->mdalg); return (vstring_str(buf)); } /* tls_proxy_client_init_with_names_to_string - serialize to string */ char *tls_proxy_client_init_with_names_to_string(VSTRING *buf, TLS_CLIENT_INIT_PROPS *props) { vstring_sprintf(buf, "%s = %s\n%s = %s\n%s = %d\n%s = %s\n%s = %s\n" "%s = %s\n%s = %s\n%s = %s\n%s = %s\n%s = %s\n" "%s = %s\n%s = %s\n%s = %s\n%s = %s\n", TLS_ATTR_LOG_PARAM, props->log_param, TLS_ATTR_LOG_LEVEL, props->log_level, TLS_ATTR_VERIFYDEPTH, props->verifydepth, TLS_ATTR_CACHE_TYPE, props->cache_type, TLS_ATTR_CHAIN_FILES, props->chain_files, TLS_ATTR_CERT_FILE, props->cert_file, TLS_ATTR_KEY_FILE, props->key_file, TLS_ATTR_DCERT_FILE, props->dcert_file, TLS_ATTR_DKEY_FILE, props->dkey_file, TLS_ATTR_ECCERT_FILE, props->eccert_file, TLS_ATTR_ECKEY_FILE, props->eckey_file, TLS_ATTR_CAFILE, props->CAfile, TLS_ATTR_CAPATH, props->CApath, TLS_ATTR_MDALG, props->mdalg); return (vstring_str(buf)); } #endif