Some more tweaks to ENGINE code.

ENGINE handler functions should take the ENGINE structure as a parameter -
this is because ENGINE structures can be copied, and like other
structure/method setups in OpenSSL, it should be possible for init(),
finish(), ctrl(), etc to adjust state inside the ENGINE structures rather
than globally. This commit includes the dependant changes in the ENGINE
implementations.
This commit is contained in:
Geoff Thorpe
2001-04-18 03:57:05 +00:00
parent dcd87618ab
commit 404f952aa3
8 changed files with 39 additions and 38 deletions

View File

@@ -153,7 +153,7 @@ int ENGINE_init(ENGINE *e)
if((e->funct_ref == 0) && e->init)
/* This is the first functional reference and the engine
* requires initialisation so we do it now. */
to_return = e->init();
to_return = e->init(e);
if(to_return)
{
/* OK, we return a functional reference which is also a
@@ -200,7 +200,7 @@ int ENGINE_finish(ENGINE *e)
{
CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
/* CODE ALERT: This *IS* supposed to be "=" and NOT "==" :-) */
if((to_return = e->finish()))
if((to_return = e->finish(e)))
{
CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
/* Cleanup the functional reference which is also a
@@ -242,7 +242,7 @@ EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id,
ENGINE_R_NO_LOAD_FUNCTION);
return 0;
}
pkey = e->load_privkey(key_id, passphrase);
pkey = e->load_privkey(e, key_id, passphrase);
if (!pkey)
{
ENGINEerr(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY,
@@ -278,7 +278,7 @@ EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id,
ENGINE_R_NO_LOAD_FUNCTION);
return 0;
}
pkey = e->load_pubkey(key_id, passphrase);
pkey = e->load_pubkey(e, key_id, passphrase);
if (!pkey)
{
ENGINEerr(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY,
@@ -310,7 +310,7 @@ int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)())
ENGINEerr(ENGINE_F_ENGINE_CTRL,ENGINE_R_NO_CONTROL_FUNCTION);
return 0;
}
return e->ctrl(cmd, i, p, f);
return e->ctrl(e, cmd, i, p, f);
}
static ENGINE *engine_get_default_type(ENGINE_TYPE t)