Make CryptoAPI engine look more like the others....
This commit is contained in:
parent
143d84590f
commit
777d717c40
1 changed files with 35 additions and 6 deletions
|
@ -392,11 +392,8 @@ struct CAPI_KEY_st
|
||||||
HCRYPTKEY key;
|
HCRYPTKEY key;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int bind_capi(ENGINE *e)
|
||||||
static int capi_bind_fn(ENGINE *e, const char *id)
|
|
||||||
{
|
{
|
||||||
if (id && strcmp(id, engine_capi_id))
|
|
||||||
return 0;
|
|
||||||
if (!ENGINE_set_id(e, engine_capi_id)
|
if (!ENGINE_set_id(e, engine_capi_id)
|
||||||
|| !ENGINE_set_name(e, engine_capi_name)
|
|| !ENGINE_set_name(e, engine_capi_name)
|
||||||
|| !ENGINE_set_init_function(e, capi_init)
|
|| !ENGINE_set_init_function(e, capi_init)
|
||||||
|
@ -413,9 +410,41 @@ static int capi_bind_fn(ENGINE *e, const char *id)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_DYNAMIC_ENGINE
|
||||||
|
static int bind_helper(ENGINE *e, const char *id)
|
||||||
|
{
|
||||||
|
if(id && (strcmp(id, engine_capi_id) != 0))
|
||||||
|
return 0;
|
||||||
|
if(!bind_capi(e))
|
||||||
|
return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
IMPLEMENT_DYNAMIC_CHECK_FN()
|
IMPLEMENT_DYNAMIC_CHECK_FN()
|
||||||
IMPLEMENT_DYNAMIC_BIND_FN(capi_bind_fn)
|
IMPLEMENT_DYNAMIC_BIND_FN(bind_helper)
|
||||||
|
#else
|
||||||
|
static ENGINE *engine_capi(void)
|
||||||
|
{
|
||||||
|
ENGINE *ret = ENGINE_new();
|
||||||
|
if(!ret)
|
||||||
|
return NULL;
|
||||||
|
if(!bind_capi(ret))
|
||||||
|
{
|
||||||
|
ENGINE_free(ret);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ENGINE_load_capi(void)
|
||||||
|
{
|
||||||
|
/* Copied from eng_[openssl|dyn].c */
|
||||||
|
ENGINE *toadd = engine_capi();
|
||||||
|
if(!toadd) return;
|
||||||
|
ENGINE_add(toadd);
|
||||||
|
ENGINE_free(toadd);
|
||||||
|
ERR_clear_error();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static EVP_PKEY *capi_load_privkey(ENGINE *eng, const char *key_id,
|
static EVP_PKEY *capi_load_privkey(ENGINE *eng, const char *key_id,
|
||||||
UI_METHOD *ui_method, void *callback_data)
|
UI_METHOD *ui_method, void *callback_data)
|
||||||
|
|
Loading…
Reference in a new issue