modload_plugin.cpp [plain text]
#include "modload_plugin.h"
namespace Security {
LoadablePlugin::LoadablePlugin(const char *path) : LoadableBundle(path)
{
secdebug("cssm", "LoadablePlugin(%s)", path);
load();
}
void LoadablePlugin::load()
{
secdebug("cssm", "LoadablePlugin::load() path %s", path().c_str());
LoadableBundle::load();
findFunction(mFunctions.load, "CSSM_SPI_ModuleLoad");
findFunction(mFunctions.attach, "CSSM_SPI_ModuleAttach");
findFunction(mFunctions.detach, "CSSM_SPI_ModuleDetach");
findFunction(mFunctions.unload, "CSSM_SPI_ModuleUnload");
}
void LoadablePlugin::unload()
{
secdebug("cssm", "LoadablePlugin::unload() path %s", path().c_str());
}
bool LoadablePlugin::isLoaded() const
{
return LoadableBundle::isLoaded();
}
CSSM_RETURN LoadablePlugin::load(const CSSM_GUID *CssmGuid,
const CSSM_GUID *ModuleGuid,
CSSM_SPI_ModuleEventHandler CssmNotifyCallback,
void *CssmNotifyCallbackCtx)
{
secdebug("cssm", "LoadablePlugin::load(guid,...) path %s", path().c_str());
return mFunctions.load(CssmGuid, ModuleGuid,
CssmNotifyCallback, CssmNotifyCallbackCtx);
}
CSSM_RETURN LoadablePlugin::unload(const CSSM_GUID *CssmGuid,
const CSSM_GUID *ModuleGuid,
CSSM_SPI_ModuleEventHandler CssmNotifyCallback,
void *CssmNotifyCallbackCtx)
{
secdebug("cssm", "LoadablePlugin::unload(guid,...) path %s", path().c_str());
return mFunctions.unload(CssmGuid, ModuleGuid,
CssmNotifyCallback, CssmNotifyCallbackCtx);
}
CSSM_RETURN LoadablePlugin::attach(const CSSM_GUID *ModuleGuid,
const CSSM_VERSION *Version,
uint32 SubserviceID,
CSSM_SERVICE_TYPE SubServiceType,
CSSM_ATTACH_FLAGS AttachFlags,
CSSM_MODULE_HANDLE ModuleHandle,
CSSM_KEY_HIERARCHY KeyHierarchy,
const CSSM_GUID *CssmGuid,
const CSSM_GUID *ModuleManagerGuid,
const CSSM_GUID *CallerGuid,
const CSSM_UPCALLS *Upcalls,
CSSM_MODULE_FUNCS_PTR *FuncTbl)
{
return mFunctions.attach(ModuleGuid, Version, SubserviceID, SubServiceType,
AttachFlags, ModuleHandle, KeyHierarchy, CssmGuid, ModuleManagerGuid,
CallerGuid, Upcalls, FuncTbl);
}
CSSM_RETURN LoadablePlugin::detach(CSSM_MODULE_HANDLE ModuleHandle)
{
return mFunctions.detach(ModuleHandle);
}
}