| Configuration modules. These are a set of modules which can perform |
| various configuration functions. |
| |
| Currently the routines should be called at most once when an application |
| starts up: that is before it starts any threads. |
| |
| The routines read a configuration file set up like this: |
| |
| ----- |
| #default section |
| openssl_conf=init_section |
| |
| [init_section] |
| |
| module1=value1 |
| #Second instance of module1 |
| module1.1=valueX |
| module2=value2 |
| module3=dso_literal |
| module4=dso_section |
| |
| [dso_section] |
| |
| path=/some/path/to/some/dso.so |
| other_stuff=other_value |
| ---- |
| |
| When this file is loaded a configuration module with the specified string |
| (module* in the above example) is looked up and its init function called as: |
| |
| int conf_init_func(CONF_IMODULE *md, CONF *cnf); |
| |
| The function can then take whatever action is appropriate, for example further |
| lookups based on the value. Multiple instances of the same config module can be |
| loaded. |
| |
| When the application closes down the modules are cleaned up by calling an |
| optional finish function: |
| |
| void conf_finish_func(CONF_IMODULE *md); |
| |
| The finish functions are called in reverse order: that is the last module |
| loaded is the first one cleaned up. |
| |
| If no module exists with a given name then an attempt is made to load a DSO |
| with the supplied name. This might mean that "module3" attempts to load a DSO |
| called libmodule3.so or module3.dll for example. An explicit DSO name can be |
| given by including a separate section as in the module4 example above. |
| |
| The DSO is expected to at least contain an initialization function: |
| |
| int OPENSSL_init(CONF_IMODULE *md, CONF *cnf); |
| |
| and may also include a finish function: |
| |
| void OPENSSL_finish(CONF_IMODULE *md); |
| |
| Static modules can also be added using, |
| |
| int CONF_module_add(char *name, dso_mod_init_func *ifunc, dso_mod_finish_func |
| *ffunc); |
| |
| where "name" is the name in the configuration file this function corresponds |
| to. |
| |
| A set of builtin modules (currently only an ASN1 non functional test module) |
| can be added by calling OPENSSL_load_builtin_modules(). |
| |
| The function OPENSSL_config() is intended as a simple configuration function |
| that any application can call to perform various default configuration tasks. |
| It uses the file openssl.cnf in the usual locations. |
| |
| |