00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 #ifndef HEADER_CONF_H
00060 #define HEADER_CONF_H
00061
00062 #include <openssl/bio.h>
00063 #include <openssl/lhash.h>
00064 #include <openssl/stack.h>
00065 #include <openssl/safestack.h>
00066 #include <openssl/e_os2.h>
00067
00068 #include <openssl/ossl_typ.h>
00069
00070 #ifdef __cplusplus
00071 extern "C" {
00072 #endif
00073
00074 typedef struct
00075 {
00076 char *section;
00077 char *name;
00078 char *value;
00079 } CONF_VALUE;
00080
00081 DECLARE_STACK_OF(CONF_VALUE)
00082 DECLARE_STACK_OF(CONF_MODULE)
00083 DECLARE_STACK_OF(CONF_IMODULE)
00084
00085 struct conf_st;
00086 struct conf_method_st;
00087 typedef struct conf_method_st CONF_METHOD;
00088
00089 struct conf_method_st
00090 {
00091 const char *name;
00092 CONF *(*create)(CONF_METHOD *meth);
00093 int (*init)(CONF *conf);
00094 int (*destroy)(CONF *conf);
00095 int (*destroy_data)(CONF *conf);
00096 int (*load_bio)(CONF *conf, BIO *bp, long *eline);
00097 int (*dump)(const CONF *conf, BIO *bp);
00098 int (*is_number)(const CONF *conf, char c);
00099 int (*to_int)(const CONF *conf, char c);
00100 int (*load)(CONF *conf, const char *name, long *eline);
00101 };
00102
00103
00104
00105 typedef struct conf_imodule_st CONF_IMODULE;
00106 typedef struct conf_module_st CONF_MODULE;
00107
00108
00109 typedef int conf_init_func(CONF_IMODULE *md, const CONF *cnf);
00110 typedef void conf_finish_func(CONF_IMODULE *md);
00111
00112 #define CONF_MFLAGS_IGNORE_ERRORS 0x1
00113 #define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2
00114 #define CONF_MFLAGS_SILENT 0x4
00115 #define CONF_MFLAGS_NO_DSO 0x8
00116 #define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10
00117
00118 int CONF_set_default_method(CONF_METHOD *meth);
00119 void CONF_set_nconf(CONF *conf,LHASH *hash);
00120 LHASH *CONF_load(LHASH *conf,const char *file,long *eline);
00121 #ifndef OPENSSL_NO_FP_API
00122 LHASH *CONF_load_fp(LHASH *conf, FILE *fp,long *eline);
00123 #endif
00124 LHASH *CONF_load_bio(LHASH *conf, BIO *bp,long *eline);
00125 STACK_OF(CONF_VALUE) *CONF_get_section(LHASH *conf,const char *section);
00126 char *CONF_get_string(LHASH *conf,const char *group,const char *name);
00127 long CONF_get_number(LHASH *conf,const char *group,const char *name);
00128 void CONF_free(LHASH *conf);
00129 int CONF_dump_fp(LHASH *conf, FILE *out);
00130 int CONF_dump_bio(LHASH *conf, BIO *out);
00131
00132 void OPENSSL_config(const char *config_name);
00133 void OPENSSL_no_config(void);
00134
00135
00136
00137
00138 struct conf_st
00139 {
00140 CONF_METHOD *meth;
00141 void *meth_data;
00142 LHASH *data;
00143 };
00144
00145 CONF *NCONF_new(CONF_METHOD *meth);
00146 CONF_METHOD *NCONF_default(void);
00147 CONF_METHOD *NCONF_WIN32(void);
00148 #if 0
00149 CONF_METHOD *NCONF_XML(void);
00150 #endif
00151 void NCONF_free(CONF *conf);
00152 void NCONF_free_data(CONF *conf);
00153
00154 int NCONF_load(CONF *conf,const char *file,long *eline);
00155 #ifndef OPENSSL_NO_FP_API
00156 int NCONF_load_fp(CONF *conf, FILE *fp,long *eline);
00157 #endif
00158 int NCONF_load_bio(CONF *conf, BIO *bp,long *eline);
00159 STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf,const char *section);
00160 char *NCONF_get_string(const CONF *conf,const char *group,const char *name);
00161 int NCONF_get_number_e(const CONF *conf,const char *group,const char *name,
00162 long *result);
00163 int NCONF_dump_fp(const CONF *conf, FILE *out);
00164 int NCONF_dump_bio(const CONF *conf, BIO *out);
00165
00166 #if 0
00167
00168 long NCONF_get_number(CONF *conf,char *group,char *name);
00169 #else
00170 #define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r)
00171 #endif
00172
00173
00174
00175 int CONF_modules_load(const CONF *cnf, const char *appname,
00176 unsigned long flags);
00177 int CONF_modules_load_file(const char *filename, const char *appname,
00178 unsigned long flags);
00179 void CONF_modules_unload(int all);
00180 void CONF_modules_finish(void);
00181 void CONF_modules_free(void);
00182 int CONF_module_add(const char *name, conf_init_func *ifunc,
00183 conf_finish_func *ffunc);
00184
00185 const char *CONF_imodule_get_name(const CONF_IMODULE *md);
00186 const char *CONF_imodule_get_value(const CONF_IMODULE *md);
00187 void *CONF_imodule_get_usr_data(const CONF_IMODULE *md);
00188 void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data);
00189 CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md);
00190 unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md);
00191 void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags);
00192 void *CONF_module_get_usr_data(CONF_MODULE *pmod);
00193 void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data);
00194
00195 char *CONF_get1_default_config_file(void);
00196
00197 int CONF_parse_list(const char *list, int sep, int nospc,
00198 int (*list_cb)(const char *elem, int len, void *usr), void *arg);
00199
00200 void OPENSSL_load_builtin_modules(void);
00201
00202
00203
00204
00205
00206 void ERR_load_CONF_strings(void);
00207
00208
00209
00210
00211 #define CONF_F_CONF_DUMP_FP 104
00212 #define CONF_F_CONF_LOAD 100
00213 #define CONF_F_CONF_LOAD_BIO 102
00214 #define CONF_F_CONF_LOAD_FP 103
00215 #define CONF_F_CONF_MODULES_LOAD 116
00216 #define CONF_F_DEF_LOAD 120
00217 #define CONF_F_DEF_LOAD_BIO 121
00218 #define CONF_F_MODULE_INIT 115
00219 #define CONF_F_MODULE_LOAD_DSO 117
00220 #define CONF_F_MODULE_RUN 118
00221 #define CONF_F_NCONF_DUMP_BIO 105
00222 #define CONF_F_NCONF_DUMP_FP 106
00223 #define CONF_F_NCONF_GET_NUMBER 107
00224 #define CONF_F_NCONF_GET_NUMBER_E 112
00225 #define CONF_F_NCONF_GET_SECTION 108
00226 #define CONF_F_NCONF_GET_STRING 109
00227 #define CONF_F_NCONF_LOAD 113
00228 #define CONF_F_NCONF_LOAD_BIO 110
00229 #define CONF_F_NCONF_LOAD_FP 114
00230 #define CONF_F_NCONF_NEW 111
00231 #define CONF_F_STR_COPY 101
00232
00233
00234 #define CONF_R_ERROR_LOADING_DSO 110
00235 #define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 100
00236 #define CONF_R_MISSING_EQUAL_SIGN 101
00237 #define CONF_R_MISSING_FINISH_FUNCTION 111
00238 #define CONF_R_MISSING_INIT_FUNCTION 112
00239 #define CONF_R_MODULE_INITIALIZATION_ERROR 109
00240 #define CONF_R_NO_CLOSE_BRACE 102
00241 #define CONF_R_NO_CONF 105
00242 #define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106
00243 #define CONF_R_NO_SECTION 107
00244 #define CONF_R_NO_SUCH_FILE 114
00245 #define CONF_R_NO_VALUE 108
00246 #define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103
00247 #define CONF_R_UNKNOWN_MODULE_NAME 113
00248 #define CONF_R_VARIABLE_HAS_NO_VALUE 104
00249
00250 #ifdef __cplusplus
00251 }
00252 #endif
00253 #endif