summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/engine/engine_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/engine/engine_lib.c')
-rw-r--r--src/lib/libcrypto/engine/engine_lib.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/lib/libcrypto/engine/engine_lib.c b/src/lib/libcrypto/engine/engine_lib.c
index 1df07af03a..d6e9109f6e 100644
--- a/src/lib/libcrypto/engine/engine_lib.c
+++ b/src/lib/libcrypto/engine/engine_lib.c
@@ -230,17 +230,18 @@ EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id,
230 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); 230 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
231 if(e->funct_ref == 0) 231 if(e->funct_ref == 0)
232 { 232 {
233 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
233 ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY, 234 ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY,
234 ENGINE_R_NOT_INITIALISED); 235 ENGINE_R_NOT_INITIALISED);
235 return 0; 236 return 0;
236 } 237 }
238 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
237 if (!e->load_privkey) 239 if (!e->load_privkey)
238 { 240 {
239 ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY, 241 ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY,
240 ENGINE_R_NO_LOAD_FUNCTION); 242 ENGINE_R_NO_LOAD_FUNCTION);
241 return 0; 243 return 0;
242 } 244 }
243 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
244 pkey = e->load_privkey(key_id, passphrase); 245 pkey = e->load_privkey(key_id, passphrase);
245 if (!pkey) 246 if (!pkey)
246 { 247 {
@@ -265,17 +266,18 @@ EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id,
265 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); 266 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
266 if(e->funct_ref == 0) 267 if(e->funct_ref == 0)
267 { 268 {
269 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
268 ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY, 270 ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY,
269 ENGINE_R_NOT_INITIALISED); 271 ENGINE_R_NOT_INITIALISED);
270 return 0; 272 return 0;
271 } 273 }
274 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
272 if (!e->load_pubkey) 275 if (!e->load_pubkey)
273 { 276 {
274 ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY, 277 ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY,
275 ENGINE_R_NO_LOAD_FUNCTION); 278 ENGINE_R_NO_LOAD_FUNCTION);
276 return 0; 279 return 0;
277 } 280 }
278 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
279 pkey = e->load_pubkey(key_id, passphrase); 281 pkey = e->load_pubkey(key_id, passphrase);
280 if (!pkey) 282 if (!pkey)
281 { 283 {
@@ -286,8 +288,6 @@ EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id,
286 return pkey; 288 return pkey;
287 } 289 }
288 290
289/* Initialise a engine type for use (or up its functional reference count
290 * if it's already in use). */
291int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()) 291int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)())
292 { 292 {
293 if(e == NULL) 293 if(e == NULL)
@@ -298,15 +298,16 @@ int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)())
298 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); 298 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
299 if(e->struct_ref == 0) 299 if(e->struct_ref == 0)
300 { 300 {
301 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
301 ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_REFERENCE); 302 ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_REFERENCE);
302 return 0; 303 return 0;
303 } 304 }
305 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
304 if (!e->ctrl) 306 if (!e->ctrl)
305 { 307 {
306 ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_CONTROL_FUNCTION); 308 ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_CONTROL_FUNCTION);
307 return 0; 309 return 0;
308 } 310 }
309 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
310 return e->ctrl(cmd, i, p, f); 311 return e->ctrl(cmd, i, p, f);
311 } 312 }
312 313