View Javadoc

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  				// prompt the user for PIN Code
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  }