* The request is generated using WSHandler, instead of coding it.
*/
@org.junit.Test
public void testSymmetricSignatureSHA1Handler() throws Exception {
final WSSConfig cfg = WSSConfig.getNewInstance();
RequestData reqData = new RequestData();
reqData.setWssConfig(cfg);
java.util.Map<String, Object> messageContext = new java.util.TreeMap<String, Object>();
messageContext.put(WSHandlerConstants.SIG_KEY_ID, "EncryptedKeySHA1");
messageContext.put(WSHandlerConstants.SIG_ALGO, SignatureMethod.HMAC_SHA1);
messageContext.put(WSHandlerConstants.PW_CALLBACK_REF, this);
reqData.setMsgContext(messageContext);
reqData.setUsername("");
final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
CustomHandler handler = new CustomHandler();
HandlerAction action = new HandlerAction(WSConstants.SIGN);
handler.send(
doc,
reqData,
Collections.singletonList(action),
true
);
String outputString =
XMLUtils.PrettyDocumentToString(doc);
if (LOG.isDebugEnabled()) {
LOG.debug(outputString);
}
reqData = new RequestData();
reqData.setWssConfig(WSSConfig.getNewInstance());
messageContext = new java.util.TreeMap<String, Object>();
messageContext.put(WSHandlerConstants.PW_CALLBACK_REF, this);
reqData.setMsgContext(messageContext);
reqData.setUsername("");
handler.receive(Collections.singletonList(WSConstants.SIGN), reqData);
secEngine.processSecurityHeader(doc, null, this, null, crypto);
}