diff options
Diffstat (limited to 'src/lib/libcrypto/engine/engine_lib.c')
| -rw-r--r-- | src/lib/libcrypto/engine/engine_lib.c | 11 |
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). */ | ||
| 291 | int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()) | 291 | int 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 | ||
