79 lines
2.3 KiB
Text
79 lines
2.3 KiB
Text
|
WARNING WARNING WARNING!!!
|
||
|
|
||
|
This stuff is experimental, may change radically or be deleted altogether
|
||
|
before OpenSSL 0.9.7 release. You have been warned!
|
||
|
|
||
|
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_init=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.
|
||
|
|
||
|
|