openssl/crypto/conf
Lutz Jänicke bca9dc2a51 OpenSSL Security Advisory [30 July 2002]
Changes marked "(CHATS)" were sponsored by the Defense Advanced
Research Projects Agency (DARPA) and Air Force Research Laboratory,
Air Force Materiel Command, USAF, under agreement number
F30602-01-2-0537.
Submitted by:
Reviewed by:
PR:
2002-07-30 11:21:19 +00:00
..
.cvsignore Ignore Makefile.save 1999-04-29 16:04:54 +00:00
cnf_save.c Move all the existing function pointer casts associated with LHASH's two 2001-01-09 00:24:38 +00:00
conf.h Add missing prototypes. 2002-06-13 17:38:58 +00:00
conf_api.c Constification, add config to /dev/crypto. 2002-01-18 16:51:05 +00:00
conf_api.h Constification, add config to /dev/crypto. 2002-01-18 16:51:05 +00:00
conf_def.c OpenSSL Security Advisory [30 July 2002] 2002-07-30 11:21:19 +00:00
conf_def.h Allow 8-bit characters. This is not really complete, it only marks 2002-01-02 11:06:02 +00:00
conf_err.c Make no config file not an error. Move /dev/crypto config to ctrl. 2002-01-22 22:29:58 +00:00
conf_lib.c Add missing prototypes. 2002-06-13 17:38:58 +00:00
conf_mall.c OPENSSL_LOAD_CONF define as in main trunk 2002-02-23 02:09:29 +00:00
conf_mod.c OpenSSL Security Advisory [30 July 2002] 2002-07-30 11:21:19 +00:00
conf_sap.c New OPENSSL_LOAD_CONF define to load openssl.cnf 2002-02-23 01:00:44 +00:00
keysets.pl Allow 8-bit characters. This is not really complete, it only marks 2002-01-02 11:06:02 +00:00
Makefile.ssl OpenSSL Security Advisory [30 July 2002] 2002-07-30 11:21:19 +00:00
README Experimental configuration code. 2002-01-05 01:37:16 +00:00
ssleay.cnf
test.c I've always wanted to make the CONF library more adaptable. Here's 2000-04-09 12:04:35 +00:00

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.