• G
    This change adds a new ENGINE called "dynamic" that allows new ENGINE · 9391f977
    Geoff Thorpe 提交于
    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.
    9391f977
engine_list.c 16.3 KB