Ejemplo n.º 1
0
static int nuron_init(ENGINE *e)
	{
	if(pvDSOHandle != NULL)
		{
		NURONerr(NURON_F_NURON_INIT,NURON_R_ALREADY_LOADED);
		return 0;
		}

	pvDSOHandle = DSO_load(NULL, get_NURON_LIBNAME(), NULL,
		DSO_FLAG_NAME_TRANSLATION_EXT_ONLY);
	if(!pvDSOHandle)
		{
		NURONerr(NURON_F_NURON_INIT,NURON_R_DSO_NOT_FOUND);
		return 0;
		}

	pfnModExp = (tfnModExp *)DSO_bind_func(pvDSOHandle, NURON_F1);
	if(!pfnModExp)
		{
		NURONerr(NURON_F_NURON_INIT,NURON_R_DSO_FUNCTION_NOT_FOUND);
		return 0;
		}

	return 1;
	}
Ejemplo n.º 2
0
static int nuron_finish(ENGINE *e)
{
    free_NURON_LIBNAME();
    if (pvDSOHandle == NULL) {
        NURONerr(NURON_F_NURON_FINISH, NURON_R_NOT_LOADED);
        return 0;
    }
    if (!DSO_free(pvDSOHandle)) {
        NURONerr(NURON_F_NURON_FINISH, NURON_R_DSO_FAILURE);
        return 0;
    }
    pvDSOHandle = NULL;
    pfnModExp = NULL;
    return 1;
}
Ejemplo n.º 3
0
static int nuron_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
                         const BIGNUM *m, BN_CTX *ctx)
{
    if (!pvDSOHandle) {
        NURONerr(NURON_F_NURON_MOD_EXP, NURON_R_NOT_LOADED);
        return 0;
    }
    return pfnModExp(r, a, p, m);
}
Ejemplo n.º 4
0
static int nuron_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
{
    int initialised = ((pvDSOHandle == NULL) ? 0 : 1);
    switch (cmd) {
    case NURON_CMD_SO_PATH:
        if (p == NULL) {
            NURONerr(NURON_F_NURON_CTRL, ERR_R_PASSED_NULL_PARAMETER);
            return 0;
        }
        if (initialised) {
            NURONerr(NURON_F_NURON_CTRL, NURON_R_ALREADY_LOADED);
            return 0;
        }
        return set_NURON_LIBNAME((const char *)p);
    default:
        break;
    }
    NURONerr(NURON_F_NURON_CTRL, NURON_R_CTRL_COMMAND_NOT_IMPLEMENTED);
    return 0;
}