Author: prabath
Date: Tue Feb 23 08:52:51 2010
New Revision: 915245
URL: http://svn.apache.org/viewvc?rev=915245&view=rev
Log:
Fixing https://issues.apache.org/jira/browse/RAMPART-286
Modified:
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
Modified:
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java?rev=915245&r1=915244&r2=915245&view=diff
==============================================================================
---
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
(original)
+++
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
Tue Feb 23 08:52:51 2010
@@ -453,7 +453,7 @@
//Check for encrypted body
- if(rpd.isEncryptBody()) {
+ if(rpd.isEncryptBody()&& !rpd.isEncryptBodyOptional()) {
if( !isRefIdPresent(encrRefs, data.getBodyEncrDataId())){
throw new RampartException("encryptedPartMissing",
@@ -579,7 +579,7 @@
body = WSSecurityUtil.findBodyElement(rmd.getDocument(),
new SOAP12Constants());
}
- if (!actuallySigned.contains(body)) {
+ if (!actuallySigned.contains(body) &&
!rmd.getPolicyData().isSignBodyOptional()) {
// soap body is not signed
throw new RampartException("bodyNotSigned");
}
Modified:
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java?rev=915245&r1=915244&r2=915245&view=diff
==============================================================================
---
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
(original)
+++
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
Tue Feb 23 08:52:51 2010
@@ -233,6 +233,8 @@
if (sep.isSignedParts()) {
rpd.setSignBody(sep.isBody());
rpd.setSignAttachments(sep.isAttachments());
+ rpd.setSignBodyOptional(sep.isOptional());
+ rpd.setSignAttachmentsOptional(sep.isOptional());
while (it.hasNext()) {
Header header = (Header) it.next();
rpd.addSignedPart(header.getNamespace(), header.getName());
@@ -240,6 +242,8 @@
} else {
rpd.setEncryptBody(sep.isBody());
rpd.setEncryptAttachments(sep.isAttachments());
+ rpd.setEncryptBodyOptional(sep.isOptional());
+ rpd.setEncryptAttachmentsOptional(sep.isOptional());
while (it.hasNext()) {
Header header = (Header) it.next();
rpd.setEncryptedParts(header.getNamespace(),
header.getName(),"Header");
Modified:
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java?rev=915245&r1=915244&r2=915245&view=diff
==============================================================================
---
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
(original)
+++
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
Tue Feb 23 08:52:51 2010
@@ -98,6 +98,14 @@
private boolean signAttachments;
private boolean encryptAttachments;
+
+ private boolean signBodyOptional;
+
+ private boolean encryptBodyOptional;
+
+ private boolean signAttachmentsOptional;
+
+ private boolean encryptAttachmentsOptional;
private Vector signedParts = new Vector();
@@ -160,9 +168,41 @@
public void addSupportingPolicyData(SupportingPolicyData
supportingPolicyData) {
this.supportingPolicyData.add(supportingPolicyData);
- }
+ }
- /**
+ public boolean isSignBodyOptional() {
+ return signBodyOptional;
+ }
+
+ public void setSignBodyOptional(boolean signBodyOptional) {
+ this.signBodyOptional = signBodyOptional;
+ }
+
+ public boolean isEncryptBodyOptional() {
+ return encryptBodyOptional;
+ }
+
+ public void setEncryptBodyOptional(boolean encryptBodyOptional) {
+ this.encryptBodyOptional = encryptBodyOptional;
+ }
+
+ public boolean isSignAttachmentsOptional() {
+ return signAttachmentsOptional;
+ }
+
+ public void setSignAttachmentsOptional(boolean signAttachmentsOptional)
{
+ this.signAttachmentsOptional = signAttachmentsOptional;
+ }
+
+ public boolean isEncryptAttachmentsOptional() {
+ return encryptAttachmentsOptional;
+ }
+
+ public void setEncryptAttachmentsOptional(boolean
encryptAttachmentsOptional) {
+ this.encryptAttachmentsOptional = encryptAttachmentsOptional;
+ }
+
+ /**
* @return Returns the symmetricBinding.
*/
public boolean isSymmetricBinding() {
Modified:
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java?rev=915245&r1=915244&r2=915245&view=diff
==============================================================================
---
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
(original)
+++
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
Tue Feb 23 08:52:51 2010
@@ -868,30 +868,39 @@
}
public static Vector getEncryptedParts(RampartMessageData rmd) {
- RampartPolicyData rpd = rmd.getPolicyData();
- SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
- Vector encryptedPartsElements = getPartsAndElements(false, envelope,
rpd.isEncryptBody(), rpd.getEncryptedParts(),
rpd.getEncryptedElements(),rpd.getDeclaredNamespaces());
- return getContentEncryptedElements(encryptedPartsElements, envelope,
rpd.getContentEncryptedElements(), rpd.getDeclaredNamespaces());
- }
-
- public static Vector getSignedParts(RampartMessageData rmd) {
- RampartPolicyData rpd = rmd.getPolicyData();
- SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
- return getPartsAndElements(true, envelope, rpd.isSignBody(),
rpd.getSignedParts(), rpd.getSignedElements(), rpd.getDeclaredNamespaces());
- }
-
- public static Vector getSupportingEncryptedParts(RampartMessageData rmd,
- SupportingPolicyData rpd) {
- SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
- return getPartsAndElements(false, envelope, rpd.isEncryptBody(),
rpd.getEncryptedParts(),
- rpd.getEncryptedElements(), rpd.getDeclaredNamespaces());
- }
-
- public static Vector getSupportingSignedParts(RampartMessageData rmd,
SupportingPolicyData rpd) {
- SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
- return getPartsAndElements(true, envelope, rpd.isSignBody(),
rpd.getSignedParts(), rpd
- .getSignedElements(), rpd.getDeclaredNamespaces());
- }
+ RampartPolicyData rpd = rmd.getPolicyData();
+ SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
+ Vector encryptedPartsElements = getPartsAndElements(false,
envelope,
+ rpd.isEncryptBody() &&
!rpd.isEncryptBodyOptional(), rpd
+ .getEncryptedParts(),
rpd.getEncryptedElements(), rpd
+ .getDeclaredNamespaces());
+ return getContentEncryptedElements(encryptedPartsElements,
envelope,
+ rpd.getContentEncryptedElements(),
rpd.getDeclaredNamespaces());
+ }
+
+ public static Vector getSignedParts(RampartMessageData rmd) {
+ RampartPolicyData rpd = rmd.getPolicyData();
+ SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
+ return getPartsAndElements(true, envelope, rpd.isSignBody()
+ && !rpd.isSignBodyOptional(),
rpd.getSignedParts(), rpd
+ .getSignedElements(),
rpd.getDeclaredNamespaces());
+ }
+
+ public static Vector getSupportingEncryptedParts(RampartMessageData rmd,
+ SupportingPolicyData rpd) {
+ SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
+ return getPartsAndElements(false, envelope, rpd.isEncryptBody()
+ && !rpd.isEncryptBodyOptional(),
rpd.getEncryptedParts(), rpd
+ .getEncryptedElements(),
rpd.getDeclaredNamespaces());
+ }
+
+ public static Vector getSupportingSignedParts(RampartMessageData rmd,
+ SupportingPolicyData rpd) {
+ SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
+ return getPartsAndElements(true, envelope, rpd.isSignBody()
+ && !rpd.isSignBodyOptional(),
rpd.getSignedParts(), rpd
+ .getSignedElements(),
rpd.getDeclaredNamespaces());
+ }
public static Set findAllPrefixNamespaces(OMElement currentElement,
HashMap decNamespacess)
{