String passwordHash = (String) createPasswordHash.invoke(this, args);
return passwordHash;
}
catch (InvocationTargetException e)
{
LoginException le = new LoginException("Failed to delegate createPasswordHash");
le.initCause(e.getTargetException());
throw le;
}
catch(Exception e)
{
LoginException le = new LoginException("Failed to delegate createPasswordHash");
le.initCause(e);
throw le;
}
}
DigestCallback callback = null;
String callbackClassName = (String) options.get(digestOption);
if( callbackClassName != null )
{
try
{
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class callbackClass = loader.loadClass(callbackClassName);
callback = (DigestCallback) callbackClass.newInstance();
if( log.isTraceEnabled() )
log.trace("Created DigestCallback: "+callback);
}
catch (Exception e)
{
if( log.isTraceEnabled() )
log.trace("Failed to load DigestCallback", e);
SecurityException ex = new SecurityException("Failed to load DigestCallback");
ex.initCause(e);
throw ex;
}
Map tmp = new HashMap();
tmp.putAll(options);
tmp.put("javax.security.auth.login.name", username);
tmp.put("javax.security.auth.login.password", password);
callback.init(tmp);
// Check for a callbacks
Callback[] callbacks = (Callback[]) tmp.get("callbacks");
if( callbacks != null )
{
try
{
callbackHandler.handle(callbacks);
}
catch(IOException e)
{
LoginException le = new LoginException(digestOption+" callback failed");
le.initCause(e);
throw le;
}
catch(UnsupportedCallbackException e)
{
LoginException le = new LoginException(digestOption+" callback failed");
le.initCause(e);
throw le;
}
}
}
String passwordHash = Util.createPasswordHash(hashAlgorithm, hashEncoding,