Give the programmer of extra engines the possibility to actually make
it functional :-).
This commit is contained in:
parent
70d03c4f59
commit
2a7619d762
@ -104,6 +104,13 @@ typedef int (*BN_MOD_EXP_CRT)(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
|
||||
const BIGNUM *q, const BIGNUM *dmp1, const BIGNUM *dmq1,
|
||||
const BIGNUM *iqmp, BN_CTX *ctx);
|
||||
|
||||
/* Generic function pointer */
|
||||
typedef void (*ENGINE_GEN_FUNC_PTR)();
|
||||
/* Generic function pointer taking no arguments */
|
||||
typedef void (*ENGINE_GEN_INT_FUNC_PTR)(void);
|
||||
/* Specific control function pointer */
|
||||
typedef int (*ENGINE_CTRL_FUNC_PTR)(int cmd, long i, void *p, void (*f)());
|
||||
|
||||
/* The list of "engine" types is a static array of (const ENGINE*)
|
||||
* pointers (not dynamic because static is fine for now and we otherwise
|
||||
* have to hook an appropriate load/unload function in to initialise and
|
||||
@ -160,6 +167,9 @@ int ENGINE_set_DH(ENGINE *e, DH_METHOD *dh_meth);
|
||||
int ENGINE_set_RAND(ENGINE *e, RAND_METHOD *rand_meth);
|
||||
int ENGINE_set_BN_mod_exp(ENGINE *e, BN_MOD_EXP bn_mod_exp);
|
||||
int ENGINE_set_BN_mod_exp_crt(ENGINE *e, BN_MOD_EXP_CRT bn_mod_exp_crt);
|
||||
int ENGINE_set_init_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR init_f);
|
||||
int ENGINE_set_finish_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR finish_f);
|
||||
int ENGINE_set_ctrl_function(ENGINE *e, ENGINE_CTRL_FUNC_PTR ctrl_f);
|
||||
|
||||
/* These return values from within the ENGINE structure. These can
|
||||
* be useful with functional references as well as structural
|
||||
@ -174,6 +184,9 @@ DH_METHOD *ENGINE_get_DH(ENGINE *e);
|
||||
RAND_METHOD *ENGINE_get_RAND(ENGINE *e);
|
||||
BN_MOD_EXP ENGINE_get_BN_mod_exp(ENGINE *e);
|
||||
BN_MOD_EXP_CRT ENGINE_get_BN_mod_exp_crt(ENGINE *e);
|
||||
ENGINE_GEN_INT_FUNC_PTR ENGINE_get_init_function(ENGINE *e);
|
||||
ENGINE_GEN_INT_FUNC_PTR ENGINE_get_finish_function(ENGINE *e);
|
||||
ENGINE_CTRL_FUNC_PTR ENGINE_get_ctrl_function(ENGINE *e);
|
||||
|
||||
/* ENGINE_new is normally passed a NULL in the first parameter because
|
||||
* the calling code doesn't have access to the definition of the ENGINE
|
||||
@ -283,9 +296,12 @@ void ERR_load_ENGINE_strings(void);
|
||||
#define ENGINE_F_ENGINE_FREE 108
|
||||
#define ENGINE_F_ENGINE_GET_BN_MOD_EXP 109
|
||||
#define ENGINE_F_ENGINE_GET_BN_MOD_EXP_CRT 110
|
||||
#define ENGINE_F_ENGINE_GET_CTRL_FUNCTION 144
|
||||
#define ENGINE_F_ENGINE_GET_DH 111
|
||||
#define ENGINE_F_ENGINE_GET_DSA 112
|
||||
#define ENGINE_F_ENGINE_GET_FINISH_FUNCTION 145
|
||||
#define ENGINE_F_ENGINE_GET_ID 113
|
||||
#define ENGINE_F_ENGINE_GET_INIT_FUNCTION 146
|
||||
#define ENGINE_F_ENGINE_GET_NAME 114
|
||||
#define ENGINE_F_ENGINE_GET_NEXT 115
|
||||
#define ENGINE_F_ENGINE_GET_PREV 116
|
||||
@ -298,10 +314,13 @@ void ERR_load_ENGINE_strings(void);
|
||||
#define ENGINE_F_ENGINE_REMOVE 123
|
||||
#define ENGINE_F_ENGINE_SET_BN_MOD_EXP 124
|
||||
#define ENGINE_F_ENGINE_SET_BN_MOD_EXP_CRT 125
|
||||
#define ENGINE_F_ENGINE_SET_CTRL_FUNCTION 147
|
||||
#define ENGINE_F_ENGINE_SET_DEFAULT_TYPE 126
|
||||
#define ENGINE_F_ENGINE_SET_DH 127
|
||||
#define ENGINE_F_ENGINE_SET_DSA 128
|
||||
#define ENGINE_F_ENGINE_SET_FINISH_FUNCTION 148
|
||||
#define ENGINE_F_ENGINE_SET_ID 129
|
||||
#define ENGINE_F_ENGINE_SET_INIT_FUNCTION 149
|
||||
#define ENGINE_F_ENGINE_SET_NAME 130
|
||||
#define ENGINE_F_ENGINE_SET_RAND 131
|
||||
#define ENGINE_F_ENGINE_SET_RSA 132
|
||||
|
@ -84,9 +84,12 @@ static ERR_STRING_DATA ENGINE_str_functs[]=
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_FREE,0), "ENGINE_free"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_GET_BN_MOD_EXP,0), "ENGINE_get_BN_mod_exp"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_GET_BN_MOD_EXP_CRT,0), "ENGINE_get_BN_mod_exp_crt"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_GET_CTRL_FUNCTION,0), "ENGINE_get_ctrl_function"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_GET_DH,0), "ENGINE_get_DH"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_GET_DSA,0), "ENGINE_get_DSA"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_GET_FINISH_FUNCTION,0), "ENGINE_get_finish_function"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_GET_ID,0), "ENGINE_get_id"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_GET_INIT_FUNCTION,0), "ENGINE_get_init_function"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_GET_NAME,0), "ENGINE_get_name"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_GET_NEXT,0), "ENGINE_get_next"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_GET_PREV,0), "ENGINE_get_prev"},
|
||||
@ -99,10 +102,13 @@ static ERR_STRING_DATA ENGINE_str_functs[]=
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_REMOVE,0), "ENGINE_remove"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_BN_MOD_EXP,0), "ENGINE_set_BN_mod_exp"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_BN_MOD_EXP_CRT,0), "ENGINE_set_BN_mod_exp_crt"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_CTRL_FUNCTION,0), "ENGINE_set_ctrl_function"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_DEFAULT_TYPE,0), "ENGINE_SET_DEFAULT_TYPE"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_DH,0), "ENGINE_set_DH"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_DSA,0), "ENGINE_set_DSA"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_FINISH_FUNCTION,0), "ENGINE_set_finish_function"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_ID,0), "ENGINE_set_id"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_INIT_FUNCTION,0), "ENGINE_set_init_function"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_NAME,0), "ENGINE_set_name"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_RAND,0), "ENGINE_set_RAND"},
|
||||
{ERR_PACK(0,ENGINE_F_ENGINE_SET_RSA,0), "ENGINE_set_RSA"},
|
||||
|
@ -86,6 +86,13 @@ typedef int (*BN_MOD_EXP_CRT)(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
|
||||
const BIGNUM *q, const BIGNUM *dmp1, const BIGNUM *dmq1,
|
||||
const BIGNUM *iqmp, BN_CTX *ctx);
|
||||
|
||||
/* Generic function pointer */
|
||||
typedef int (*ENGINE_GEN_FUNC_PTR)();
|
||||
/* Generic function pointer taking no arguments */
|
||||
typedef int (*ENGINE_GEN_INT_FUNC_PTR)(void);
|
||||
/* Specific control function pointer */
|
||||
typedef int (*ENGINE_CTRL_FUNC_PTR)(int cmd, long i, void *p, void (*f)());
|
||||
|
||||
#endif
|
||||
|
||||
/* This is a structure for storing implementations of various crypto
|
||||
|
@ -514,6 +514,42 @@ int ENGINE_set_BN_mod_exp_crt(ENGINE *e, BN_MOD_EXP_CRT bn_mod_exp_crt)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ENGINE_set_init_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR init_f)
|
||||
{
|
||||
if((e == NULL) || (init_f == NULL))
|
||||
{
|
||||
ENGINEerr(ENGINE_F_ENGINE_SET_INIT_FUNCTION,
|
||||
ERR_R_PASSED_NULL_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
e->init = init_f;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ENGINE_set_finish_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR finish_f)
|
||||
{
|
||||
if((e == NULL) || (finish_f == NULL))
|
||||
{
|
||||
ENGINEerr(ENGINE_F_ENGINE_SET_FINISH_FUNCTION,
|
||||
ERR_R_PASSED_NULL_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
e->finish = finish_f;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ENGINE_set_ctrl_function(ENGINE *e, ENGINE_CTRL_FUNC_PTR ctrl_f)
|
||||
{
|
||||
if((e == NULL) || (ctrl_f == NULL))
|
||||
{
|
||||
ENGINEerr(ENGINE_F_ENGINE_SET_CTRL_FUNCTION,
|
||||
ERR_R_PASSED_NULL_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
e->ctrl = ctrl_f;
|
||||
return 1;
|
||||
}
|
||||
|
||||
const char *ENGINE_get_id(ENGINE *e)
|
||||
{
|
||||
if(e == NULL)
|
||||
@ -601,3 +637,37 @@ BN_MOD_EXP_CRT ENGINE_get_BN_mod_exp_crt(ENGINE *e)
|
||||
}
|
||||
return e->bn_mod_exp_crt;
|
||||
}
|
||||
|
||||
ENGINE_GEN_INT_FUNC_PTR ENGINE_get_init_function(ENGINE *e)
|
||||
{
|
||||
if(e == NULL)
|
||||
{
|
||||
ENGINEerr(ENGINE_F_ENGINE_GET_INIT_FUNCTION,
|
||||
ERR_R_PASSED_NULL_PARAMETER);
|
||||
return NULL;
|
||||
}
|
||||
return e->init;
|
||||
}
|
||||
|
||||
ENGINE_GEN_INT_FUNC_PTR ENGINE_get_finish_function(ENGINE *e)
|
||||
{
|
||||
if(e == NULL)
|
||||
{
|
||||
ENGINEerr(ENGINE_F_ENGINE_GET_FINISH_FUNCTION,
|
||||
ERR_R_PASSED_NULL_PARAMETER);
|
||||
return NULL;
|
||||
}
|
||||
return e->finish;
|
||||
}
|
||||
|
||||
ENGINE_CTRL_FUNC_PTR ENGINE_get_ctrl_function(ENGINE *e)
|
||||
{
|
||||
if(e == NULL)
|
||||
{
|
||||
ENGINEerr(ENGINE_F_ENGINE_GET_CTRL_FUNCTION,
|
||||
ERR_R_PASSED_NULL_PARAMETER);
|
||||
return NULL;
|
||||
}
|
||||
return e->ctrl;
|
||||
}
|
||||
|
||||
|
@ -1890,3 +1890,9 @@ ENGINE_add 2465
|
||||
DH_set_default_openssl_method 2466
|
||||
ENGINE_get_DSA 2467
|
||||
ENGINE_ctrl 2468
|
||||
ENGINE_get_finish_function 2469
|
||||
ENGINE_get_init_function 2470
|
||||
ENGINE_set_init_function 2471
|
||||
ENGINE_set_finish_function 2472
|
||||
ENGINE_get_ctrl_function 2473
|
||||
ENGINE_set_ctrl_function 2474
|
||||
|
Loading…
x
Reference in New Issue
Block a user