summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2011-05-15 15:56:49 +0000
committerDr. Stephen Henson <steve@openssl.org>2011-05-15 15:56:49 +0000
commitb9b0a177f853cb01ab48881383f81afb08058460 (patch)
tree4cbf7ace8f18366861bd8805ef6d03fd27d1b8f2
parent9609ea869dde4d74a610a62ccaee448b0ac8082b (diff)
new flag to stop ENGINE methods being registered
-rw-r--r--crypto/engine/eng_fat.c3
-rw-r--r--crypto/engine/engine.h7
-rw-r--r--engines/e_capi.c1
3 files changed, 10 insertions, 1 deletions
diff --git a/crypto/engine/eng_fat.c b/crypto/engine/eng_fat.c
index db66e62350..789b8d57e5 100644
--- a/crypto/engine/eng_fat.c
+++ b/crypto/engine/eng_fat.c
@@ -176,6 +176,7 @@ int ENGINE_register_all_complete(void)
ENGINE *e;
for(e=ENGINE_get_first() ; e ; e=ENGINE_get_next(e))
- ENGINE_register_complete(e);
+ if (!(e->flags & ENGINE_FLAGS_NO_REGISTER_ALL))
+ ENGINE_register_complete(e);
return 1;
}
diff --git a/crypto/engine/engine.h b/crypto/engine/engine.h
index bfc453fa96..98b4921e4d 100644
--- a/crypto/engine/engine.h
+++ b/crypto/engine/engine.h
@@ -141,6 +141,13 @@ extern "C" {
* the existing ENGINE's structural reference count. */
#define ENGINE_FLAGS_BY_ID_COPY (int)0x0004
+/* This flag if for an ENGINE that does not want its methods registered as
+ * part of ENGINE_register_all_complete() for example if the methods are
+ * not usable as default methods.
+ */
+
+#define ENGINE_FLAGS_NO_REGISTER_ALL (int)0x0008
+
/* ENGINEs can support their own command types, and these flags are used in
* ENGINE_CTRL_GET_CMD_FLAGS to indicate to the caller what kind of input each
* command expects. Currently only numeric and string input is supported. If a
diff --git a/engines/e_capi.c b/engines/e_capi.c
index ce1bec906a..fdf173652a 100644
--- a/engines/e_capi.c
+++ b/engines/e_capi.c
@@ -527,6 +527,7 @@ static int bind_capi(ENGINE *e)
{
if (!ENGINE_set_id(e, engine_capi_id)
|| !ENGINE_set_name(e, engine_capi_name)
+ || !ENGINE_set_flags(e, ENGINE_FLAGS_NO_REGISTER_ALL)
|| !ENGINE_set_init_function(e, capi_init)
|| !ENGINE_set_finish_function(e, capi_finish)
|| !ENGINE_set_destroy_function(e, capi_destroy)