PKCS#11 C_getfunctionlist in a dll -
i'm trying write dll connect virtual token. tried make exportable c_getfunctionlist function contain pointer adressess functions suported pcks#11 standard can't figure out why can't access functions in program uses dll. tried load c_initializefunction.
extern "c" __declspec(dllexport) ck_rv c_getfunctionlist(ck_function_list_ptr_ptr ppfunctionlist) { ck_function_list_ptr function_list; function_list=new ck_function_list; function_list->c_initialize=&c_initialize; ppfunctionlist=&function_list; return ckr_ok; }
if want use pkcs#11 implementation's functions in code have load dll implements standard , use functions provided dll. here comes code use on linux system. hope helps.
static char const * pkcs11_so_name = "/usr/lib/pkcs11/pkcs11_api.so"; static void * pkcs11_so; //list of pkcs#11 functions static ck_function_list_ptr pkcs11; ck_rv load_pkcs11() { ck_rv rv = ckr_ok; ck_rv (*c_getfunctionlist) (ck_function_list_ptr_ptr) = 0; pkcs11_so = dlopen(pkcs11_so_name, rtld_now); if (!pkcs11_so) { fprintf(stderr, "error loading pkcs#11 so: %s\n", dlerror()); return ckr_general_error; } rv = load_symbol((void **)&c_getfunctionlist, "c_getfunctionlist"); if (ckr_ok != rv) { return rv; } rv = c_getfunctionlist(&pkcs11); if (ckr_ok != rv) { fprintf(stderr, "c_getfunctionlist call failed: 0x%.8lx", rv); return rv; } return ckr_ok; }
Comments
Post a Comment