1 package org.eparapher.core.crypto.keystore.smartcard;
2
3 import org.apache.log4j.Logger;
4 import org.eparapher.core.crypto.EPKeystoreManager;
5 import org.eparapher.core.crypto.keystore.HardwareKeyStore;
6 import org.eparapher.core.crypto.keystore.IUserKeystore;
7
8
9
10
11
12
13
14
15 public class TrackingThread extends Thread {
16
17 private static Logger log = Logger.getLogger(TrackingThread.class);
18
19
20 private boolean tokenTracking;
21 private HardwareKeyStore usertoken;
22 private long sleeptime = 500L;
23
24
25
26
27
28
29 public TrackingThread(long msleepTime) {
30
31 this.tokenTracking = false;
32 this.setSleeptime(msleepTime);
33 this.setName("Token Traking Thread");
34
35 IUserKeystore myuserkeystore = EPKeystoreManager.getInstance().getUserkeystore();
36 if (myuserkeystore instanceof HardwareKeyStore) {
37 usertoken = (HardwareKeyStore) myuserkeystore;
38 if (usertoken.isPkcs11BridgeLoaded())
39 this.tokenTracking = true;
40 } else log.warn("Error on Token Tracking Thread : usertoken is not a HardwareKeyStore");
41 }
42
43 public void run() {
44
45 while ( this.tokenTracking ) {
46
47 long start = System.currentTimeMillis();
48 usertoken.loadKeyStore();
49 long stop = System.currentTimeMillis();
50
51 log.debug("Tracking thread loop in " + (stop-start) + " ms");
52
53 try {
54
55 Thread.sleep(sleeptime);
56 } catch (InterruptedException e) {
57 log.error("Error while thread sleeping: "+e.getLocalizedMessage(),e);
58 }
59 }
60 }
61
62 public long getSleeptime() {
63 return sleeptime;
64 }
65
66 public void setSleeptime(long sleeptime) {
67 this.sleeptime = sleeptime;
68 }
69
70 public void setTrackingSmartCard(boolean mtrackingToken) {
71 this.tokenTracking = mtrackingToken;
72 }
73
74 }