Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00026 #ifndef _TLS_DOMAIN_H
00027 #define _TLS_DOMAIN_H
00028
00029 #include "../../str.h"
00030 #include "../../ip_addr.h"
00031 #include <openssl/ssl.h>
00032
00033
00037 enum tls_method {
00038 TLS_METHOD_UNSPEC = 0,
00039 TLS_USE_SSLv2_cli,
00040 TLS_USE_SSLv2_srv,
00041 TLS_USE_SSLv2,
00042 TLS_USE_SSLv3_cli,
00043 TLS_USE_SSLv3_srv,
00044 TLS_USE_SSLv3,
00045 TLS_USE_TLSv1_cli,
00046 TLS_USE_TLSv1_srv,
00047 TLS_USE_TLSv1,
00048 TLS_USE_SSLv23_cli,
00049 TLS_USE_SSLv23_srv,
00050 TLS_USE_SSLv23,
00051 TLS_METHOD_MAX
00052 };
00053
00054
00058 enum tls_domain_type {
00059 TLS_DOMAIN_DEF = (1 << 0),
00060 TLS_DOMAIN_SRV = (1 << 1),
00061 TLS_DOMAIN_CLI = (1 << 2)
00062 };
00063
00064
00068 typedef struct tls_domain {
00069 int type;
00070 struct ip_addr ip;
00071 unsigned short port;
00072 SSL_CTX** ctx;
00073 str cert_file;
00074 str pkey_file;
00075 int verify_cert;
00076 int verify_depth;
00077 str ca_file;
00078 int require_cert;
00079 str cipher_list;
00080 enum tls_method method;
00081 str crl_file;
00082 struct tls_domain* next;
00083 } tls_domain_t;
00084
00085
00089 typedef struct tls_domains_cfg {
00090 tls_domain_t* srv_default;
00091 tls_domain_t* cli_default;
00092 tls_domain_t* srv_list;
00093 tls_domain_t* cli_list;
00094 struct tls_domains_cfg* next;
00095 int ref_count;
00096 } tls_domains_cfg_t;
00097
00098
00108 tls_domain_t *tls_new_domain(int type, struct ip_addr *ip,
00109 unsigned short port);
00110
00111
00116 void tls_free_domain(tls_domain_t* d);
00117
00118
00124 char* tls_domain_str(tls_domain_t* d);
00125
00126
00127
00134 tls_domains_cfg_t* tls_new_cfg(void);
00135
00136
00143 int tls_add_domain(tls_domains_cfg_t* cfg, tls_domain_t* d);
00144
00145
00156 int tls_fix_domains_cfg(tls_domains_cfg_t* cfg, tls_domain_t* srv_defaults,
00157 tls_domain_t* cli_defaults);
00158
00159
00168 tls_domain_t* tls_lookup_cfg(tls_domains_cfg_t* cfg, int type,
00169 struct ip_addr* ip, unsigned short port);
00170
00171
00176 void tls_free_cfg(tls_domains_cfg_t* cfg);
00177
00178
00182 void tls_destroy_cfg(void);
00183
00184 #endif