/* * Removes the entry for the given pkcs11Implementation from the list. Returns * the module's data, after the node was removed. If this function returns NULL * the pkcs11Implementation was not in the list. */ ModuleData * removeModuleEntry(JNIEnv *env, jobject pkcs11Implementation) { ModuleData *moduleData = getModuleEntry(env, pkcs11Implementation); if (moduleData == NULL) { return NULL; } (*env)->SetLongField(env, pkcs11Implementation, pNativeDataID, 0); return moduleData; }
/* * Returns 1, if the given pkcs11Implementation is in the list. * 0, otherwise. */ int isModulePresent(JNIEnv *env, jobject pkcs11Implementation) { int present; ModuleData *moduleData = getModuleEntry(env, pkcs11Implementation); present = (moduleData != NULL) ? 1 : 0; return present ; }
CK_FUNCTION_LIST_PTR getFunctionList(JNIEnv *env, jobject pkcs11Implementation) { ModuleData *moduleData; CK_FUNCTION_LIST_PTR ckpFunctions; moduleData = getModuleEntry(env, pkcs11Implementation); if (moduleData == NULL) { throwDisconnectedRuntimeException(env); return NULL; } ckpFunctions = moduleData->ckFunctionListPtr; return ckpFunctions; }
/* WARNING: GC yield */ PUBLIC int espLoadModule(HttpRoute *route, MprDispatcher *dispatcher, cchar *kind, cchar *source, cchar **errMsg) { EspRoute *eroute; MprModule *mp; cchar *appName, *cache, *cacheName, *canonical, *entry, *module; int isView, recompile; eroute = route->eroute; *errMsg = ""; #if VXWORKS /* Trim the drive for VxWorks where simulated host drives only exist on the target */ source = mprTrimPathDrive(source); #endif canonical = mprGetPortablePath(mprGetRelPath(source, route->home)); appName = eroute->appName; if (eroute->combine) { cacheName = appName; } else { cacheName = mprGetMD5WithPrefix(sfmt("%s:%s", appName, canonical), -1, sjoin(kind, "_", NULL)); } if ((cache = httpGetDir(route, "CACHE")) == 0) { cache = "cache"; } module = mprJoinPathExt(mprJoinPaths(route->home, cache, cacheName, NULL), ME_SHOBJ); lock(esp); if (route->update) { if (mprPathExists(source, R_OK)) { isView = smatch(kind, "view"); if (espModuleIsStale(source, module, &recompile) || (isView && layoutIsStale(eroute, source, module))) { if (recompile) { mprHoldBlocks(source, module, cacheName, NULL); if (!espCompile(route, dispatcher, source, module, cacheName, isView, (char**) errMsg)) { mprReleaseBlocks(source, module, cacheName, NULL); unlock(esp); return MPR_ERR_CANT_WRITE; } mprReleaseBlocks(source, module, cacheName, NULL); } } } } if (mprLookupModule(source) == 0) { if (!mprPathExists(module, R_OK)) { *errMsg = "Module does not exist"; unlock(esp); return MPR_ERR_CANT_FIND; } entry = getModuleEntry(eroute, kind, source, cacheName); if ((mp = mprCreateModule(source, module, entry, route)) == 0) { *errMsg = "Memory allocation error loading module"; unlock(esp); return MPR_ERR_MEMORY; } if (mprLoadModule(mp) < 0) { *errMsg = "Cannot load compiled esp module"; unlock(esp); return MPR_ERR_CANT_READ; } } unlock(esp); return 0; }