in modules/rampart-core/src/main/java/org/apache/rampart/TokenCallbackHandler.java [47:107]
public void handle(Callback[] callbacks)
throws IOException, UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof WSPasswordCallback) {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
String id = pc.getIdentifier();
if((pc.getUsage() == WSPasswordCallback.SECURITY_CONTEXT_TOKEN ||
pc.getUsage() == WSPasswordCallback.CUSTOM_TOKEN) &&
this.store != null) {
Token tok;
try {
//Pick up the token from the token store
tok = this.store.getToken(id);
if(tok != null) {
//Get the secret and set it in the callback object
pc.setKey(tok.getSecret());
pc.setCustomToken((Element)tok.getToken());
}
} catch (Exception e) {
e.printStackTrace();
throw new IOException(e.getMessage());
}
} else if (pc.getUsage() == WSPasswordCallback.SECRET_KEY){
try {
String[] tokenIdentifiers = this.store.getTokenIdentifiers();
Token tok;
for (int j = 0 ; j < tokenIdentifiers.length ; j++) {
tok = this.store.getToken(tokenIdentifiers[j]);
if (tok instanceof EncryptedKeyToken &&
((EncryptedKeyToken)tok).getSHA1().equals(id)){
pc.setKey(tok.getSecret());
pc.setCustomToken((Element)tok.getToken());
tokenIdentifier = tokenIdentifiers[j];
}
}
} catch (TrustException e) {
e.printStackTrace();
throw new IOException(e.getMessage());
}
} else {
//Handle other types of callbacks with the usual handler
if(this.handler != null) {
handler.handle(new Callback[]{pc});
}
}
} else {
throw new UnsupportedCallbackException(callbacks[i],
"Unrecognized Callback");
}
}
}