handShakeDone = true;
} else { // handshake is done.
log.debug("Token in memory .");
SOAPPart sPart = (org.apache.axis.SOAPPart) sm.getSOAPPart();
try {
doc =
((org.apache.axis.message.SOAPEnvelope) sPart
.getEnvelope())
.getAsDocument();
} catch (Exception e) {
throw new AxisFault("CoversationClientHandler :: Cannot get the document");
}
try {
// add the relavent SCT
Element securityHeader =
WSSecurityUtil.findWsseSecurityHeaderBlock(
doc,
doc.getDocumentElement(),
true);
WSSecurityUtil.appendChildElement(
doc,
securityHeader,
(new SecurityContextToken(doc, uuid)).getElement());
ConversationManager manager = new ConversationManager();
for (int i = 0; i < this.actionsInt.length; i++) {
// Derrive the token
DerivedKeyInfo dkInfo =
manager.createDerivedKeyToken(doc, uuid, dkcbHandler,null, keyLen);
String genID = dkInfo.getId();
SecurityTokenReference stRef =
dkInfo.getSecTokRef2DkToken();
if (actionsInt[i] == ConversationConstants.DK_ENCRYPT) {
manager.performDK_ENCR(
ConversationUtil.generateIdentifier(uuid, genID),
"",
true,
doc,
stRef,
dkcbHandler, null,(String)this.configurator.get(ConvHandlerConstants.DK_ENC_ALGO));
} else if(actionsInt[i]==ConversationConstants.DK_SIGN){
//TODO:
manager.performDK_Sign(doc, dkcbHandler, uuid, dkInfo, null);
}
manager.addDkToken(doc,dkInfo);
}
} catch (ConversationException e1) {
e1.printStackTrace();
throw new AxisFault(
"ConversationClientHandler ::" + e1.getMessage());
}
//set it as current message
ByteArrayOutputStream os = new ByteArrayOutputStream();
XMLUtils.outputDOM(doc, os, true);
String osStr = os.toString();
sPart.setCurrentMessage(osStr, SOAPPart.FORM_STRING);
}
}