You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by gi...@apache.org on 2012/07/17 21:26:07 UTC
svn commit: r1362616 - in /santuario/xml-security-java/trunk/src:
main/java/org/apache/xml/security/stax/impl/processor/input/
main/java/org/apache/xml/security/stax/impl/stax/
main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/
test...
Author: giger
Date: Tue Jul 17 19:26:06 2012
New Revision: 1362616
URL: http://svn.apache.org/viewvc?rev=1362616&view=rev
Log:
Fix for SANTUARIO-328
Added:
santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_c14n.xml (with props)
santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_input.xml (with props)
Modified:
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/stax/XMLSecStartElementImpl.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java
santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/c14n/Canonicalizer20010315Test.java
santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/signature/RSASecurityTest.java
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java?rev=1362616&r1=1362615&r2=1362616&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractDecryptInputProcessor.java Tue Jul 17 19:26:06 2012
@@ -305,7 +305,8 @@ public abstract class AbstractDecryptInp
List<XMLSecNamespace> comparableNamespacesToApply = new ArrayList<XMLSecNamespace>();
List<XMLSecNamespace> comparableNamespaceList = new ArrayList<XMLSecNamespace>();
xmlSecStartElement.getNamespacesFromCurrentScope(comparableNamespaceList);
- for (int i = 0; i < comparableNamespaceList.size(); i++) {
+ //reverse iteration -> From current element namespaces to parent namespaces
+ for (int i = comparableNamespaceList.size() - 1; i >= 0; i--) {
XMLSecNamespace comparableNamespace = comparableNamespaceList.get(i);
if (!comparableNamespacesToApply.contains(comparableNamespace)) {
comparableNamespacesToApply.add(comparableNamespace);
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/stax/XMLSecStartElementImpl.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/stax/XMLSecStartElementImpl.java?rev=1362616&r1=1362615&r2=1362616&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/stax/XMLSecStartElementImpl.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/stax/XMLSecStartElementImpl.java Tue Jul 17 19:26:06 2012
@@ -120,10 +120,10 @@ public class XMLSecStartElementImpl exte
@Override
public void getNamespacesFromCurrentScope(List<XMLSecNamespace> comparableNamespaceList) {
- comparableNamespaceList.addAll(namespaces);
if (parentXMLSecStartELement != null) {
parentXMLSecStartELement.getNamespacesFromCurrentScope(comparableNamespaceList);
}
+ comparableNamespaceList.addAll(namespaces);
}
@Override
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java?rev=1362616&r1=1362615&r2=1362616&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java Tue Jul 17 19:26:06 2012
@@ -192,11 +192,18 @@ public abstract class CanonicalizerBase
final XMLSecNamespace found = (XMLSecNamespace) outputStack.containsOnStack(comparableNamespace);
//found means the prefix matched. so check the ns further
- if (found != null && found.getNamespaceURI() != null && found.getNamespaceURI().equals(comparableNamespace.getNamespaceURI())) {
- continue;
+ if (found != null) {
+ //ns redefinition so remove the old one:
+ //remove(comparableNamespace) works because we have overwritten the hash and equals method and just test
+ //for prefix equality
+ utilizedNamespaces.remove(comparableNamespace);
}
- utilizedNamespaces.add(comparableNamespace);
outputStack.peek().add(comparableNamespace);
+
+ //don't add xmlns="" declarations:
+ if (!comparableNamespace.getNamespaceURI().isEmpty() || !comparableNamespace.getPrefix().isEmpty()) {
+ utilizedNamespaces.add(comparableNamespace);
+ }
}
return utilizedNamespaces;
Modified: santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/c14n/Canonicalizer20010315Test.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/c14n/Canonicalizer20010315Test.java?rev=1362616&r1=1362615&r2=1362616&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/c14n/Canonicalizer20010315Test.java (original)
+++ santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/c14n/Canonicalizer20010315Test.java Tue Jul 17 19:26:06 2012
@@ -362,6 +362,48 @@ public class Canonicalizer20010315Test e
}
}
+ @Test
+ public void testDefault_ns_redefinition() throws Exception {
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ Canonicalizer20010315_WithCommentsTransformer c = new Canonicalizer20010315_WithCommentsTransformer();
+ c.setOutputStream(baos);
+ XMLEventReader xmlSecEventReader = xmlInputFactory.createXMLEventReader(
+ this.getClass().getClassLoader().getResourceAsStream(
+ "org/apache/xml/security/c14n/in/default_ns_redefinition_input.xml")
+ );
+
+ XMLSecEvent xmlSecEvent = null;
+ while (xmlSecEventReader.hasNext()) {
+ xmlSecEvent = (XMLSecEvent) xmlSecEventReader.nextEvent();
+ if (xmlSecEvent.isStartElement() && xmlSecEvent.asStartElement().getName().equals(new QName("http://www.w3.org/2000/09/xmldsig#", "Object"))) {
+ break;
+ }
+ }
+ while (xmlSecEventReader.hasNext()) {
+
+ c.transform(xmlSecEvent);
+
+ if (xmlSecEvent.isEndElement() && xmlSecEvent.asEndElement().getName().equals(new QName("http://www.w3.org/2000/09/xmldsig#", "Object"))) {
+ break;
+ }
+ xmlSecEvent = (XMLSecEvent) xmlSecEventReader.nextEvent();
+ }
+
+ byte[] reference =
+ getBytesFromResource(this.getClass().getClassLoader().getResource(
+ "org/apache/xml/security/c14n/in/default_ns_redefinition_c14n.xml"));
+ boolean equals = java.security.MessageDigest.isEqual(reference, baos.toByteArray());
+
+ if (!equals) {
+ System.out.println("Expected:\n" + new String(reference, "UTF-8"));
+ System.out.println("");
+ System.out.println("Got:\n" + new String(baos.toByteArray(), "UTF-8"));
+ }
+
+ assertTrue(equals);
+ }
+
// /**
// * The XPath data model represents data using UCS characters.
// * Implementations MUST use XML processors that support UTF-8 and UTF-16
Modified: santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/signature/RSASecurityTest.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/signature/RSASecurityTest.java?rev=1362616&r1=1362615&r2=1362616&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/signature/RSASecurityTest.java (original)
+++ santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/signature/RSASecurityTest.java Tue Jul 17 19:26:06 2012
@@ -80,11 +80,8 @@ public class RSASecurityTest extends org
documentBuilderFactory.setCoalescing(false);
documentBuilderFactory.setIgnoringElementContentWhitespace(false);
}
-
- // TODO - not working? See SANTUARIO-328.
@Test
- @org.junit.Ignore
public void test_enveloping() throws Exception {
// Read in plaintext document
InputStream sourceDocument =
Added: santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_c14n.xml
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_c14n.xml?rev=1362616&view=auto
==============================================================================
--- santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_c14n.xml (added)
+++ santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_c14n.xml Tue Jul 17 19:26:06 2012
@@ -0,0 +1,3 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="envelopedData"><FOO xmlns="http://www.foo.org/foo">
+ foo
+ </FOO></dsig:Object>
\ No newline at end of file
Propchange: santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_c14n.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_input.xml
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_input.xml?rev=1362616&view=auto
==============================================================================
--- santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_input.xml (added)
+++ santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_input.xml Tue Jul 17 19:26:06 2012
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <dsig:Object Id="envelopedData" xmlns="" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><FOO xmlns="http://www.foo.org/foo">
+ foo
+ </FOO></dsig:Object>
+</Signature>
\ No newline at end of file
Propchange: santuario/xml-security-java/trunk/src/test/resources/org/apache/xml/security/c14n/in/default_ns_redefinition_input.xml
------------------------------------------------------------------------------
svn:eol-style = native