summaryrefslogtreecommitdiffstats
path: root/engines
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2002-12-05 00:56:58 +0000
committerRichard Levitte <levitte@openssl.org>2002-12-05 00:56:58 +0000
commit38d6e4bb50b55beaeaab7db72b2404807ef2a8e3 (patch)
treeb7420703f35d1a4c1e90c851c58c948c1a70e32c /engines
parentced621e3c2832fc3eb407c29f3f68362cfd3251c (diff)
downloadopenssl-38d6e4bb50b55beaeaab7db72b2404807ef2a8e3.tar.gz
If an application supports static locks, it MUST support dynamic locks as
well to be able to use the CHIL engine. PR: 281
Diffstat (limited to 'engines')
-rw-r--r--engines/e_ncipher.c24
-rw-r--r--engines/e_ncipher_err.c5
-rw-r--r--engines/e_ncipher_err.h1
3 files changed, 20 insertions, 10 deletions
diff --git a/engines/e_ncipher.c b/engines/e_ncipher.c
index 44a522bc67..817c5a677c 100644
--- a/engines/e_ncipher.c
+++ b/engines/e_ncipher.c
@@ -559,15 +559,23 @@ static int hwcrhk_init(ENGINE *e)
/* Check if the application decided to support dynamic locks,
and if it does, use them. */
- if (disable_mutex_callbacks == 0 &&
- CRYPTO_get_dynlock_create_callback() != NULL &&
- CRYPTO_get_dynlock_lock_callback() != NULL &&
- CRYPTO_get_dynlock_destroy_callback() != NULL)
+ if (disable_mutex_callbacks == 0)
{
- hwcrhk_globals.mutex_init = hwcrhk_mutex_init;
- hwcrhk_globals.mutex_acquire = hwcrhk_mutex_lock;
- hwcrhk_globals.mutex_release = hwcrhk_mutex_unlock;
- hwcrhk_globals.mutex_destroy = hwcrhk_mutex_destroy;
+ if (CRYPTO_get_dynlock_create_callback() != NULL &&
+ CRYPTO_get_dynlock_lock_callback() != NULL &&
+ CRYPTO_get_dynlock_destroy_callback() != NULL)
+ {
+ hwcrhk_globals.mutex_init = hwcrhk_mutex_init;
+ hwcrhk_globals.mutex_acquire = hwcrhk_mutex_lock;
+ hwcrhk_globals.mutex_release = hwcrhk_mutex_unlock;
+ hwcrhk_globals.mutex_destroy = hwcrhk_mutex_destroy;
+ }
+ else if (CRYPTO_get_locking_callback() != NULL)
+ {
+ HWCRHKerr(HWCRHK_F_HWCRHK_INIT,HWCRHK_R_LOCKING_MISSING);
+ ERR_add_error_data(1,"You HAVE to add dynamic locking callbacks via CRYPTO_set_dynlock_{create,lock,destroy}_callback()");
+ goto err;
+ }
}
/* Try and get a context - if not, we may have a DSO but no
diff --git a/engines/e_ncipher_err.c b/engines/e_ncipher_err.c
index 692435eee7..6716517d9e 100644
--- a/engines/e_ncipher_err.c
+++ b/engines/e_ncipher_err.c
@@ -1,6 +1,6 @@
-/* hw_ncipher_err.c */
+/* e_ncipher_err.c */
/* ====================================================================
- * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
+ * Copyright (c) 1999-2002 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -86,6 +86,7 @@ static ERR_STRING_DATA HWCRHK_str_reasons[]=
{HWCRHK_R_CHIL_ERROR ,"chil error"},
{HWCRHK_R_CTRL_COMMAND_NOT_IMPLEMENTED ,"ctrl command not implemented"},
{HWCRHK_R_DSO_FAILURE ,"dso failure"},
+{HWCRHK_R_LOCKING_MISSING ,"locking missing"},
{HWCRHK_R_MISSING_KEY_COMPONENTS ,"missing key components"},
{HWCRHK_R_NOT_INITIALISED ,"not initialised"},
{HWCRHK_R_NOT_LOADED ,"not loaded"},
diff --git a/engines/e_ncipher_err.h b/engines/e_ncipher_err.h
index 4d65b1d470..482086e3b5 100644
--- a/engines/e_ncipher_err.h
+++ b/engines/e_ncipher_err.h
@@ -84,6 +84,7 @@ static void ERR_HWCRHK_error(int function, int reason, char *file, int line);
#define HWCRHK_R_CHIL_ERROR 102
#define HWCRHK_R_CTRL_COMMAND_NOT_IMPLEMENTED 103
#define HWCRHK_R_DSO_FAILURE 104
+#define HWCRHK_R_LOCKING_MISSING 114
#define HWCRHK_R_MISSING_KEY_COMPONENTS 105
#define HWCRHK_R_NOT_INITIALISED 106
#define HWCRHK_R_NOT_LOADED 107