/* Generic function pointer */
typedef int (*ENGINE_GEN_FUNC_PTR)();
/* Generic function pointer taking no arguments */
-typedef int (*ENGINE_GEN_INT_FUNC_PTR)(void);
+typedef int (*ENGINE_GEN_INT_FUNC_PTR)(ENGINE *);
/* Specific control function pointer */
-typedef int (*ENGINE_CTRL_FUNC_PTR)(int cmd, long i, void *p, void (*f)());
+typedef int (*ENGINE_CTRL_FUNC_PTR)(ENGINE *, int, long, void *, void (*f)());
/* Generic load_key function pointer */
-typedef EVP_PKEY * (*ENGINE_LOAD_KEY_PTR)(const char *key_id, const char *passphrase);
+typedef EVP_PKEY * (*ENGINE_LOAD_KEY_PTR)(ENGINE *, const char *, const char *);
/* STRUCTURE functions ... all of these functions deal with pointers to
* ENGINE structures where the pointers have a "structural reference".
const RAND_METHOD *rand_meth;
BN_MOD_EXP bn_mod_exp;
BN_MOD_EXP_CRT bn_mod_exp_crt;
- int (*init)(void);
- int (*finish)(void);
- int (*ctrl)(int cmd, long i, void *p, void (*f)());
- EVP_PKEY *(*load_privkey)(const char *key_id, const char *passphrase);
- EVP_PKEY *(*load_pubkey)(const char *key_id, const char *passphrase);
+ ENGINE_GEN_INT_FUNC_PTR init;
+ ENGINE_GEN_INT_FUNC_PTR finish;
+ ENGINE_CTRL_FUNC_PTR ctrl;
+ ENGINE_LOAD_KEY_PTR load_privkey;
+ ENGINE_LOAD_KEY_PTR load_pubkey;
int flags;
/* reference count on the structure itself */
int struct_ref;
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
{
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
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,
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,
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)
#include "vendor_defns/atalla.h"
#endif
-static int atalla_init(void);
-static int atalla_finish(void);
+static int atalla_init(ENGINE *e);
+static int atalla_finish(ENGINE *e);
/* BIGNUM stuff */
static int atalla_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
static const char *ATALLA_F3 = "ASI_GetPerformanceStatistics";
/* (de)initialisation functions. */
-static int atalla_init(void)
+static int atalla_init(ENGINE *e)
{
tfnASI_GetHardwareConfig *p1;
tfnASI_RSAPrivateKeyOpFn *p2;
return 0;
}
-static int atalla_finish(void)
+static int atalla_finish(ENGINE *e)
{
if(atalla_dso == NULL)
{
#include "vendor_defns/cswift.h"
#endif
-static int cswift_init(void);
-static int cswift_finish(void);
+static int cswift_init(ENGINE *);
+static int cswift_finish(ENGINE *);
/* BIGNUM stuff */
static int cswift_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
}
/* (de)initialisation functions. */
-static int cswift_init(void)
+static int cswift_init(ENGINE *e)
{
SW_CONTEXT_HANDLE hac;
t_swAcquireAccContext *p1;
return 0;
}
-static int cswift_finish(void)
+static int cswift_finish(ENGINE *e)
{
if(cswift_dso == NULL)
{
#include "vendor_defns/hwcryptohook.h"
#endif
-static int hwcrhk_init(void);
-static int hwcrhk_finish(void);
-static int hwcrhk_ctrl(int cmd, long i, void *p, void (*f)());
+static int hwcrhk_init(ENGINE *e);
+static int hwcrhk_finish(ENGINE *e);
+static int hwcrhk_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)());
/* Functions to handle mutexes */
static int hwcrhk_mutex_init(HWCryptoHook_Mutex*, HWCryptoHook_CallerContext*);
static int hwcrhk_rand_status(void);
/* KM stuff */
-static EVP_PKEY *hwcrhk_load_privkey(const char *key_id,
+static EVP_PKEY *hwcrhk_load_privkey(ENGINE *eng, const char *key_id,
const char *passphrase);
-static EVP_PKEY *hwcrhk_load_pubkey(const char *key_id,
+static EVP_PKEY *hwcrhk_load_pubkey(ENGINE *eng, const char *key_id,
const char *passphrase);
static void hwcrhk_ex_free(void *obj, void *item, CRYPTO_EX_DATA *ad,
int ind,long argl, void *argp);
}
/* (de)initialisation functions. */
-static int hwcrhk_init(void)
+static int hwcrhk_init(ENGINE *e)
{
HWCryptoHook_Init_t *p1;
HWCryptoHook_Finish_t *p2;
return 0;
}
-static int hwcrhk_finish(void)
+static int hwcrhk_finish(ENGINE *e)
{
int to_return = 1;
if(hwcrhk_dso == NULL)
return to_return;
}
-static int hwcrhk_ctrl(int cmd, long i, void *p, void (*f)())
+static int hwcrhk_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)())
{
int to_return = 1;
return to_return;
}
-static EVP_PKEY *hwcrhk_load_privkey(const char *key_id,
+static EVP_PKEY *hwcrhk_load_privkey(ENGINE *eng, const char *key_id,
const char *passphrase)
{
RSA *rtmp = NULL;
return NULL;
}
-static EVP_PKEY *hwcrhk_load_pubkey(const char *key_id, const char *passphrase)
+static EVP_PKEY *hwcrhk_load_pubkey(ENGINE *eng, const char *key_id,
+ const char *passphrase)
{
- EVP_PKEY *res = hwcrhk_load_privkey(key_id, passphrase);
+ EVP_PKEY *res = hwcrhk_load_privkey(eng, key_id, passphrase);
if (res)
switch(res->type)
static DSO *pvDSOHandle = NULL;
-static int nuron_init(void)
+static int nuron_init(ENGINE *e)
{
if(pvDSOHandle != NULL)
{
return 1;
}
-static int nuron_finish(void)
+static int nuron_finish(ENGINE *e)
{
if(pvDSOHandle == NULL)
{
#include "vendor_defns/hw_ubsec.h"
#endif
-static int ubsec_init(void);
-static int ubsec_finish(void);
+static int ubsec_init(ENGINE *e);
+static int ubsec_finish(ENGINE *e);
static int ubsec_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
const BIGNUM *m, BN_CTX *ctx);
static int ubsec_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
static const char *UBSEC_F12 = "rng_ioctl";
/* (de)initialisation functions. */
-static int ubsec_init()
+static int ubsec_init(ENGINE *e)
{
t_UBSEC_ubsec_bytes_to_bits *p1;
t_UBSEC_ubsec_bits_to_bytes *p2;
return 0;
}
-static int ubsec_finish()
+static int ubsec_finish(ENGINE *e)
{
if(ubsec_dso == NULL)
{