This change adds a new ENGINE called "dynamic" that allows new ENGINE
authorGeoff Thorpe <geoff@openssl.org>
Mon, 3 Sep 2001 19:15:29 +0000 (19:15 +0000)
committerGeoff Thorpe <geoff@openssl.org>
Mon, 3 Sep 2001 19:15:29 +0000 (19:15 +0000)
commit9391f97715e8fa7494265a1b77923f9b6fb76d8f
tree165d13b8cf0e30725ebdf8af8a9dbad25d33b65e
parent5b166395387e896d1c109ce3a4b2b55eb4cf9c02
This change adds a new ENGINE called "dynamic" that allows new ENGINE
implementations to be loaded from self-contained shared-libraries. It also
provides (in engine.h) definitions and macros to help implement a
self-contained ENGINE. Version control is handled in a way whereby the
loader or loadee can veto the load depending on any objections it has with
each other's declared interface level. The way this is currently
implemented assumes a veto will only take place when one side notices the
other's interface level is too *old*. If the other side is newer, it should
be assumed the newer version knows better whether to veto the load or not.
Version checking (like other "dynamic" settings) can be controlled using
the "dynamic" ENGINE's control commands. Also, the semantics for the
loading allow a shared-library ENGINE implementation to handle differing
interface levels on the fly (eg. loading secondary shared-libraries
depending on the versions required).

Code will be added soon to the existing ENGINEs to illustrate how they can
be built as external libraries rather than building statically into
libcrypto.

NB: Applications wanting to support "dynamic"-loadable ENGINEs will need to
add support for ENGINE "control commands". See apps/engine.c for an example
of this, and use "apps/openssl engine -vvvv" to test or experiment.
crypto/engine/Makefile.ssl
crypto/engine/engine.h
crypto/engine/engine_dyn.c [new file with mode: 0644]
crypto/engine/engine_err.c
crypto/engine/engine_int.h
crypto/engine/engine_list.c