From 3ba4284a6d3feb9aa3ce9da950eea13e4c6e6f49 Mon Sep 17 00:00:00 2001 From: Hugo Trippaers Date: Tue, 16 Jun 2015 14:35:31 +0200 Subject: [PATCH] CXF-6464 Add attachment support to derived key sign/encrypt --- parent/pom.xml | 2 +- .../policyhandlers/SymmetricBindingHandler.java | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/parent/pom.xml b/parent/pom.xml index 4c132cb0606..b4af0b53bdc 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -146,7 +146,7 @@ 4.4.1 3.1.4 1.6.3 - 2.1.1 + 2.1.2-SNAPSHOT 2.11.0 2.6.0 2.2.1 diff --git a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/SymmetricBindingHandler.java b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/SymmetricBindingHandler.java index 64f6d5e03e7..8068e341c46 100644 --- a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/SymmetricBindingHandler.java +++ b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/SymmetricBindingHandler.java @@ -403,6 +403,7 @@ private WSSecBase doEncryptionDerived(AbstractTokenWrapper recToken, WSSecDKEncrypt dkEncr = new WSSecDKEncrypt(); dkEncr.setIdAllocator(wssConfig.getIdAllocator()); dkEncr.setCallbackLookup(callbackLookup); + dkEncr.setAttachmentCallbackHandler(new AttachmentCallbackHandler(message)); if (recToken.getToken().getVersion() == SPConstants.SPVersion.SP11) { dkEncr.setWscVersion(ConversationConstants.VERSION_05_02); } @@ -486,10 +487,21 @@ private WSSecBase doEncryptionDerived(AbstractTokenWrapper recToken, encrDKTokenElem = dkEncr.getdktElement(); addDerivedKeyElement(encrDKTokenElem); Element refList = dkEncr.encryptForExternalRef(null, encrParts); + List attachments = dkEncr.getAttachmentEncryptedDataElements(); if (atEnd) { this.insertBeforeBottomUp(refList); + if (attachments != null) { + for (Element attachment : attachments) { + this.insertBeforeBottomUp(attachment); + } + } } else { - this.addDerivedKeyElement(refList); + this.addDerivedKeyElement(refList); + if (attachments != null) { + for (Element attachment : attachments) { + this.addDerivedKeyElement(attachment); + } + } } return dkEncr; } catch (Exception e) { @@ -631,6 +643,7 @@ private byte[] doSignatureDK(List sigs, WSSecDKSign dkSign = new WSSecDKSign(); dkSign.setIdAllocator(wssConfig.getIdAllocator()); dkSign.setCallbackLookup(callbackLookup); + dkSign.setAttachmentCallbackHandler(new AttachmentCallbackHandler(message)); if (policyAbstractTokenWrapper.getToken().getVersion() == SPConstants.SPVersion.SP11) { dkSign.setWscVersion(ConversationConstants.VERSION_05_02); }