#define OMAPI_SE_PATH "/usr/lib/se"
- ServerResource::ServerResource() : mainLoop(NULL)
+ ServerResource::ServerResource()
+ : mainLoop(NULL), seLoaded(false)
{
SCARD_BEGIN();
serverIPC = ServerIPC::getInstance();
serverDispatcher = ServerDispatcher::getInstance();
-#if 1
- loadSecureElements();
-#endif
SCARD_END();
}
ServerResource::~ServerResource()
{
+ unloadSecureElements();
}
ServerResource &ServerResource::getInstance()
int ServerResource::loadSecureElements()
{
- int result;
- void *libHandle;
- DIR *dir = NULL;
- struct dirent *entry = NULL;
+ int result = 0;
- if ((dir = opendir(OMAPI_SE_PATH)) != NULL)
+ if (seLoaded == false)
{
- while ((entry = readdir(dir)) != NULL)
+ DIR *dir;
+ struct dirent *entry;
+
+ if ((dir = opendir(OMAPI_SE_PATH)) != NULL)
{
- if (strncmp(entry->d_name, ".", 1) != 0 && strncmp(entry->d_name, "..", 2) != 0)
+ while ((entry = readdir(dir)) != NULL)
{
- char fullPath[1024] = { 0, };
-
- /* TODO : need additional name rule :) */
+ if (strncmp(entry->d_name, ".", 1) != 0 &&
+ strncmp(entry->d_name, "..", 2) != 0)
+ {
+ char fullPath[1024];
- /* open each files */
- libHandle = NULL;
+ /* TODO : need additional name rule :) */
- snprintf(fullPath, sizeof(fullPath), "%s/%s", OMAPI_SE_PATH, entry->d_name);
+ /* append each files */
+ snprintf(fullPath, sizeof(fullPath),
+ "%s/%s", OMAPI_SE_PATH, entry->d_name);
- SCARD_DEBUG("se name [%s]", fullPath);
+ SCARD_DEBUG("se name [%s]", fullPath);
- result = appendSELibrary(fullPath);
+ result = appendSELibrary(fullPath);
+ }
}
- }
- closedir(dir);
+ closedir(dir);
- result = 0;
- }
- else
- {
- result = -1;
+ seLoaded = true;
+ }
+ else
+ {
+ result = -1;
+ }
}
return result;
}
libraries.clear();
+
+ seLoaded = false;
}
bool ServerResource::isValidReaderHandle(unsigned int reader)