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