summaryrefslogtreecommitdiffstats
path: root/security/manager/ssl/nsSmartCardMonitor.h
diff options
context:
space:
mode:
Diffstat (limited to 'security/manager/ssl/nsSmartCardMonitor.h')
-rw-r--r--security/manager/ssl/nsSmartCardMonitor.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/security/manager/ssl/nsSmartCardMonitor.h b/security/manager/ssl/nsSmartCardMonitor.h
new file mode 100644
index 000000000..bfadf31e8
--- /dev/null
+++ b/security/manager/ssl/nsSmartCardMonitor.h
@@ -0,0 +1,62 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsSmartCardMonitor_h
+#define nsSmartCardMonitor_h
+
+#include "prthread.h"
+#include "secmod.h"
+#include "plhash.h"
+#include "pkcs11t.h"
+
+class SmartCardThreadEntry;
+class SmartCardMonitoringThread;
+
+//
+// manage a group of SmartCardMonitoringThreads
+//
+class SmartCardThreadList {
+public:
+ SmartCardThreadList();
+ ~SmartCardThreadList();
+ void Remove(SECMODModule* module);
+ nsresult Add(SmartCardMonitoringThread* thread);
+
+private:
+ SmartCardThreadEntry* head;
+};
+
+//
+// monitor a Module for token insertion and removal
+//
+// NOTE: this provides the application the ability to dynamically add slots
+// on the fly as necessary.
+//
+class SmartCardMonitoringThread
+{
+ public:
+ explicit SmartCardMonitoringThread(SECMODModule* module);
+ ~SmartCardMonitoringThread();
+
+ nsresult Start();
+ void Stop();
+
+ void Execute();
+ void Interrupt();
+
+ const SECMODModule* GetModule();
+
+ private:
+ static void LaunchExecute(void* arg);
+ void SetTokenName(CK_SLOT_ID slotid, const char* tokenName, uint32_t series);
+ const char* GetTokenName(CK_SLOT_ID slotid);
+ uint32_t GetTokenSeries(CK_SLOT_ID slotid);
+ void SendEvent(const nsAString& type, const char* tokenName);
+
+ SECMODModule* mModule;
+ PLHashTable* mHash;
+ PRThread* mThread;
+};
+
+#endif // nsSmartCardMonitor_h