1 package org.eparapher.core.crypto.keystore.smartcard;
2
3 import java.io.IOException;
4
5 import javax.security.auth.callback.Callback;
6 import javax.security.auth.callback.CallbackHandler;
7 import javax.security.auth.callback.PasswordCallback;
8 import javax.security.auth.callback.UnsupportedCallbackException;
9
10 import org.apache.log4j.Logger;
11 import org.eparapher.core.EParapherManager;
12
13
14 public class MyGUICallbackHandler implements CallbackHandler {
15
16 private static Logger log = Logger.getLogger(MyGUICallbackHandler.class);
17
18 public MyGUICallbackHandler() {
19 }
20
21 public void handle(Callback[] callbacks)
22 throws IOException, UnsupportedCallbackException {
23
24 for (int i = 0; i < callbacks.length; i++) {
25 Callback callback = callbacks[i];
26 log.debug(" "+i+">"+callback.getClass().getName());
27 if (callback instanceof PasswordCallback) {
28 PasswordCallback pc = (PasswordCallback) callback;
29
30
31 String pin;
32 pin = EParapherManager.getInstance().getUI().askUserKeystoreSecret(false, false, "Token");
33 if (pin==null)
34 throw new IOException("User's cancel PIN prompt");
35 pc.setPassword(pin.toCharArray());
36
37 } else {
38 log.warn(" Unknow Callback!!!");
39 }
40 }
41 }
42 }