You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by co...@apache.org on 2011/01/12 13:14:06 UTC
svn commit: r1058104 [2/3] -
/santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/c14n/implementations/
Modified: santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/c14n/implementations/Canonicalizer20010315Test.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/c14n/implementations/Canonicalizer20010315Test.java?rev=1058104&r1=1058103&r2=1058104&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/c14n/implementations/Canonicalizer20010315Test.java (original)
+++ santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/c14n/implementations/Canonicalizer20010315Test.java Wed Jan 12 12:14:05 2011
@@ -16,8 +16,6 @@
*/
package org.apache.xml.security.test.c14n.implementations;
-
-
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -37,10 +35,6 @@ import javax.xml.transform.TransformerFa
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
import org.apache.xml.security.c14n.CanonicalizationException;
import org.apache.xml.security.c14n.Canonicalizer;
import org.apache.xml.security.c14n.InvalidCanonicalizerException;
@@ -59,1176 +53,1136 @@ import org.xml.sax.SAXException;
/**
- * Unit test for {@link org.apache.xml.security.c14n.implementations.Canonicalizer20010315WithXPath}
+ * Unit test for
+ * {@link org.apache.xml.security.c14n.implementations.Canonicalizer20010315WithXPath}
*
* @author Christian Geuer-Pollmann
*/
-public class Canonicalizer20010315Test extends TestCase {
+public class Canonicalizer20010315Test extends org.junit.Assert {
- /** {@link org.apache.commons.logging} logging facility */
+ /** {@link org.apache.commons.logging} logging facility */
static org.apache.commons.logging.Log log =
org.apache.commons.logging.LogFactory.getLog(Canonicalizer20010315Test.class.getName());
- /**
- * Method suite
- *
- *
- */
- public static Test suite() {
- return new TestSuite(Canonicalizer20010315Test.class);
- }
-
- /**
- * Constructor Canonicalizer20010315WithXPathTest
- *
- * @param Name_
- */
- public Canonicalizer20010315Test(String Name_) {
- super(Name_);
- }
-
- /**
- * Method main
- *
- * @param args
- */
- public static void main(String[] args) {
-
- String[] testCaseName = { "-noloading",
- Canonicalizer20010315Test.class.getName() };
-
- junit.textui.TestRunner.main(testCaseName);
- }
-
- /** Field prefix */
- private static String prefix;
-
- /**
- * 3.1 PIs, Comments, and Outside of Document Element
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- public static void test31withCommentsSubtree()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri =
- "3.1: PIs, Comments, and Outside of Document Element. (commented)";
-
-
- String fileIn = prefix + "in/31_input.xml";
- String fileRef = prefix + "in/31_c14n-comments.xml";
- String fileOut = prefix + "out/xpath_31_output-comments.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS;
- boolean validating = true;
- String xpath = null;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
- /**
- * 3.1 PIs, Comments, and Outside of Document Element
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- public static void test31withCommentsSubset()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri =
- "3.1: PIs, Comments, and Outside of Document Element. (commented)";
-
-
- String fileIn = prefix + "in/31_input.xml";
- String fileRef = prefix + "in/31_c14n-comments.xml";
- String fileOut = prefix + "out/xpath_31_output-comments.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS;
- boolean validating = true;
- String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
-
- /**
- * 3.1 PIs, Comments, and Outside of Document Element
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-OutsideDoc">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test31subtree()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri =
- "3.1: PIs, Comments, and Outside of Document Element. (uncommented)";
- String fileIn = prefix + "in/31_input.xml";
- String fileRef = prefix + "in/31_c14n.xml";
- String fileOut = prefix + "out/xpath_31_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = null;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
- /**
- * 3.1 PIs, Comments, and Outside of Document Element
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-OutsideDoc">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test31subset()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri =
- "3.1: PIs, Comments, and Outside of Document Element. (uncommented)";
- String fileIn = prefix + "in/31_input.xml";
- String fileRef = prefix + "in/31_c14n.xml";
- String fileOut = prefix + "out/xpath_31_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
-
- /**
- * 3.2 Whitespace in Document Content
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-WhitespaceInContent">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test32subtree()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri = "3.2 Whitespace in Document Content. (uncommented)";
- String fileIn = prefix + "in/32_input.xml";
- String fileRef = prefix + "in/32_c14n.xml";
- String fileOut = prefix + "out/xpath_32_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = null;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
-
- /**
- * 3.2 Whitespace in Document Content
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-WhitespaceInContent">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test32subset()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri = "3.2 Whitespace in Document Content. (uncommented)";
- String fileIn = prefix + "in/32_input.xml";
- String fileRef = prefix + "in/32_c14n.xml";
- String fileOut = prefix + "out/xpath_32_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
-
- /**
- * 3.3 Start and End Tags
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-SETags">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test33subtree()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri = "3.3 Start and End Tags. (uncommented)";
- String fileIn = prefix + "in/33_input.xml";
- String fileRef = prefix + "in/33_c14n.xml";
- String fileOut = prefix + "out/xpath_33_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = null; // Canonicalizer.XPATH_C14N_OMIT_COMMENTS_SINGLE_NODE;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
-
- public static void test33subset()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri = "3.3 Start and End Tags. (uncommented)";
- String fileIn = prefix + "in/33_input.xml";
- String fileRef = prefix + "in/33_c14n.xml";
- String fileOut = prefix + "out/xpath_33_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
-
- /**
- * 3.4 Character Modifications and Character References
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see #test34validatingParser
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Chars">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test34()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException
- {
-
-
- String descri =
- "3.4 Character Modifications and Character References. (uncommented)";
- String fileIn = prefix + "in/34_input.xml";
- String fileRef = prefix + "in/34_c14n.xml";
- String fileOut = prefix + "out/xpath_34_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = false;
- String xpath = null;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
-
- /**
- * 3.4 Character Modifications and Character References (patched to run on validating Parsers)
- * <P>
- * <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119"> The spec</A> states that:
- * <P>
- * Note: The last element, normId, is well-formed but violates a validity
- * constraint for attributes of type ID. For testing canonical XML
- * implementations based on validating processors, remove the line
- * containing this element from the input and canonical form. In general,
- * XML consumers should be discouraged from using this feature of XML.
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Chars">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test34subtree()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri =
- "3.4 Character Modifications and Character References. (uncommented, patched to run on validating Parsers)";
- String fileIn = prefix + "in/34_input_validatingParser.xml";
- String fileRef = prefix + "in/34_c14n_validatingParser.xml";
- String fileOut = prefix + "out/xpath_34_output_validatingParser.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = null;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
- /**
- * 3.4 Character Modifications and Character References (patched to run on validating Parsers)
- * <P>
- * <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119"> The spec</A> states that:
- * <P>
- * Note: The last element, normId, is well-formed but violates a validity
- * constraint for attributes of type ID. For testing canonical XML
- * implementations based on validating processors, remove the line
- * containing this element from the input and canonical form. In general,
- * XML consumers should be discouraged from using this feature of XML.
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Chars">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test34subset()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri =
- "3.4 Character Modifications and Character References. (uncommented, patched to run on validating Parsers)";
- String fileIn = prefix + "in/34_input_validatingParser.xml";
- String fileRef = prefix + "in/34_c14n_validatingParser.xml";
- String fileOut = prefix + "out/xpath_34_output_validatingParser.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
-
- /**
- * 3.5 Entity References
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Entities">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test35subtree()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri = "3.5 Entity References. (uncommented)";
- String fileIn = prefix + "in/35_input.xml";
- String fileRef = prefix + "in/35_c14n.xml";
- String fileOut = prefix + "out/xpath_35_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = null;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
- /**
- * 3.5 Entity References
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Entities">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test35subset()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri = "3.5 Entity References. (uncommented)";
- String fileIn = prefix + "in/35_input.xml";
- String fileRef = prefix + "in/35_c14n.xml";
- String fileOut = prefix + "out/xpath_35_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
-
- /**
- * 3.6 UTF-8 Encoding
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-UTF8">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test36subtree()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri = "3.6 UTF-8 Encoding. (uncommented)";
- String fileIn = prefix + "in/36_input.xml";
- String fileRef = prefix + "in/36_c14n.xml";
- String fileOut = prefix + "out/xpath_36_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = null;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
- /**
- * 3.6 UTF-8 Encoding
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-UTF8">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test36subset()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri = "3.6 UTF-8 Encoding. (uncommented)";
- String fileIn = prefix + "in/36_input.xml";
- String fileRef = prefix + "in/36_c14n.xml";
- String fileOut = prefix + "out/xpath_36_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
-
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
-
- /**
- * 3.7 Document Subsets
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-DocSubsets">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test37()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String descri = "3.7 Document Subsets. (uncommented)";
- String fileIn = prefix + "in/37_input.xml";
- String fileRef = prefix + "in/37_c14n.xml";
- String fileOut = prefix + "out/xpath_37_output.xml";
- String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- boolean validating = true;
- Element xpath = null;
- DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-
- dfactory.setNamespaceAware(true);
-
- DocumentBuilder db = dfactory.newDocumentBuilder();
- Document doc = db.newDocument();
-
- xpath = XMLUtils.createElementInSignatureSpace(doc, Constants._TAG_XPATH);
-
- xpath.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:ietf", "http://www.ietf.org");
-
- //J-
- String xpathFromSpec =
- "(//. | //@* | //namespace::*)"
+ static {
+ org.apache.xml.security.Init.init();
+ }
+
+ /** Field prefix */
+ private String prefix;
+
+ public Canonicalizer20010315Test() {
+ prefix = "data/org/apache/xml/security/c14n/";
+ String basedir = System.getProperty("basedir");
+ if(basedir != null && !"".equals(basedir)) {
+ prefix = basedir + "/" + prefix;
+ }
+ }
+
+ /**
+ * 3.1 PIs, Comments, and Outside of Document Element
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test31withCommentsSubtree()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri =
+ "3.1: PIs, Comments, and Outside of Document Element. (commented)";
+
+ String fileIn = prefix + "in/31_input.xml";
+ String fileRef = prefix + "in/31_c14n-comments.xml";
+ String fileOut = prefix + "out/xpath_31_output-comments.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS;
+ boolean validating = true;
+ String xpath = null;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.1 PIs, Comments, and Outside of Document Element
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test31withCommentsSubset()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri =
+ "3.1: PIs, Comments, and Outside of Document Element. (commented)";
+
+ String fileIn = prefix + "in/31_input.xml";
+ String fileRef = prefix + "in/31_c14n-comments.xml";
+ String fileOut = prefix + "out/xpath_31_output-comments.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS;
+ boolean validating = true;
+ String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.1 PIs, Comments, and Outside of Document Element
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-OutsideDoc">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test31subtree()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri =
+ "3.1: PIs, Comments, and Outside of Document Element. (uncommented)";
+ String fileIn = prefix + "in/31_input.xml";
+ String fileRef = prefix + "in/31_c14n.xml";
+ String fileOut = prefix + "out/xpath_31_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = null;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.1 PIs, Comments, and Outside of Document Element
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-OutsideDoc">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test31subset()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+
+ String descri =
+ "3.1: PIs, Comments, and Outside of Document Element. (uncommented)";
+ String fileIn = prefix + "in/31_input.xml";
+ String fileRef = prefix + "in/31_c14n.xml";
+ String fileOut = prefix + "out/xpath_31_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.2 Whitespace in Document Content
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-WhitespaceInContent">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test32subtree()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri = "3.2 Whitespace in Document Content. (uncommented)";
+ String fileIn = prefix + "in/32_input.xml";
+ String fileRef = prefix + "in/32_c14n.xml";
+ String fileOut = prefix + "out/xpath_32_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = null;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.2 Whitespace in Document Content
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-WhitespaceInContent">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test32subset()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri = "3.2 Whitespace in Document Content. (uncommented)";
+ String fileIn = prefix + "in/32_input.xml";
+ String fileRef = prefix + "in/32_c14n.xml";
+ String fileOut = prefix + "out/xpath_32_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.3 Start and End Tags
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-SETags">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test33subtree()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri = "3.3 Start and End Tags. (uncommented)";
+ String fileIn = prefix + "in/33_input.xml";
+ String fileRef = prefix + "in/33_c14n.xml";
+ String fileOut = prefix + "out/xpath_33_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = null; // Canonicalizer.XPATH_C14N_OMIT_COMMENTS_SINGLE_NODE;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ @org.junit.Test
+ public void test33subset()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri = "3.3 Start and End Tags. (uncommented)";
+ String fileIn = prefix + "in/33_input.xml";
+ String fileRef = prefix + "in/33_c14n.xml";
+ String fileOut = prefix + "out/xpath_33_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.4 Character Modifications and Character References
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see #test34validatingParser
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Chars">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test34()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri =
+ "3.4 Character Modifications and Character References. (uncommented)";
+ String fileIn = prefix + "in/34_input.xml";
+ String fileRef = prefix + "in/34_c14n.xml";
+ String fileOut = prefix + "out/xpath_34_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = false;
+ String xpath = null;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.4 Character Modifications and Character References (patched to run on validating Parsers)
+ * <P>
+ * <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119"> The spec</A> states that:
+ * <P>
+ * Note: The last element, normId, is well-formed but violates a validity
+ * constraint for attributes of type ID. For testing canonical XML
+ * implementations based on validating processors, remove the line
+ * containing this element from the input and canonical form. In general,
+ * XML consumers should be discouraged from using this feature of XML.
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Chars">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test34subtree()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri =
+ "3.4 Character Modifications and Character References. (uncommented, patched to run on validating Parsers)";
+ String fileIn = prefix + "in/34_input_validatingParser.xml";
+ String fileRef = prefix + "in/34_c14n_validatingParser.xml";
+ String fileOut = prefix + "out/xpath_34_output_validatingParser.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = null;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.4 Character Modifications and Character References (patched to run on validating Parsers)
+ * <P>
+ * <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119"> The spec</A> states that:
+ * <P>
+ * Note: The last element, normId, is well-formed but violates a validity
+ * constraint for attributes of type ID. For testing canonical XML
+ * implementations based on validating processors, remove the line
+ * containing this element from the input and canonical form. In general,
+ * XML consumers should be discouraged from using this feature of XML.
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Chars">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test34subset()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+
+ String descri =
+ "3.4 Character Modifications and Character References. (uncommented, patched to run on validating Parsers)";
+ String fileIn = prefix + "in/34_input_validatingParser.xml";
+ String fileRef = prefix + "in/34_c14n_validatingParser.xml";
+ String fileOut = prefix + "out/xpath_34_output_validatingParser.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.5 Entity References
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Entities">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test35subtree()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri = "3.5 Entity References. (uncommented)";
+ String fileIn = prefix + "in/35_input.xml";
+ String fileRef = prefix + "in/35_c14n.xml";
+ String fileOut = prefix + "out/xpath_35_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = null;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.5 Entity References
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Entities">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test35subset()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri = "3.5 Entity References. (uncommented)";
+ String fileIn = prefix + "in/35_input.xml";
+ String fileRef = prefix + "in/35_c14n.xml";
+ String fileOut = prefix + "out/xpath_35_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.6 UTF-8 Encoding
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-UTF8">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test36subtree()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri = "3.6 UTF-8 Encoding. (uncommented)";
+ String fileIn = prefix + "in/36_input.xml";
+ String fileRef = prefix + "in/36_c14n.xml";
+ String fileOut = prefix + "out/xpath_36_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = null;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.6 UTF-8 Encoding
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-UTF8">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test36subset()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri = "3.6 UTF-8 Encoding. (uncommented)";
+ String fileIn = prefix + "in/36_input.xml";
+ String fileRef = prefix + "in/36_c14n.xml";
+ String fileOut = prefix + "out/xpath_36_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.7 Document Subsets
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-DocSubsets">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test37()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String descri = "3.7 Document Subsets. (uncommented)";
+ String fileIn = prefix + "in/37_input.xml";
+ String fileRef = prefix + "in/37_c14n.xml";
+ String fileOut = prefix + "out/xpath_37_output.xml";
+ String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ boolean validating = true;
+ Element xpath = null;
+ DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+ dfactory.setNamespaceAware(true);
+
+ DocumentBuilder db = dfactory.newDocumentBuilder();
+ Document doc = db.newDocument();
+
+ xpath = XMLUtils.createElementInSignatureSpace(doc, Constants._TAG_XPATH);
+
+ xpath.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:ietf", "http://www.ietf.org");
+
+ //J-
+ String xpathFromSpec =
+ "(//. | //@* | //namespace::*)"
+ "[ "
+ "self::ietf:e1 or "
+ "(parent::ietf:e1 and not(self::text() or self::e2)) or "
+ "count(id(\"E3\")|ancestor-or-self::node()) = count(ancestor-or-self::node()) "
+ "]";
- //J+
- xpath.appendChild(doc.createTextNode(xpathFromSpec));
- assertTrue(descri,
- c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
- xpath));
- }
-
- /**
- * 3.7 Document Subsets
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-DocSubsets">the example from the spec</A>
- * @throws TransformerException
- */
- public static void test37byNodeList()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- //String descri = "3.7 Document Subsets. (uncommented), c14n by NodeList";
- String fileIn = prefix + "in/37_input.xml";
- String fileRef = prefix + "in/37_c14n.xml";
- //String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- //boolean validating = true;
- DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-
- dfactory.setNamespaceAware(true);
-
- DocumentBuilder db = dfactory.newDocumentBuilder();
- org.xml.sax.EntityResolver resolver = new TestVectorResolver();
-
- db.setEntityResolver(resolver);
-
- Document doc = db.parse(resolver.resolveEntity(null, fileIn));
- //J-
- Element nscontext = TestUtils.createDSctx(doc, "ietf", "http://www.ietf.org");
-
- String xpath = "(//. | //@* | //namespace::*)"
- + "[ "
- + "self::ietf:e1 or "
- + "(parent::ietf:e1 and not(self::text() or self::e2)) or "
- + "count(id(\"E3\")|ancestor-or-self::node()) = count(ancestor-or-self::node()) "
- + "]";
- //J+
- CachedXPathAPI xpathAPI = new CachedXPathAPI();
-
- NodeList nodes = xpathAPI.selectNodeList(doc, xpath, nscontext);
- Canonicalizer c14n =
- Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
- byte c14nBytes[] = c14n.canonicalizeXPathNodeSet(nodes);
- InputStream refStream = resolver.resolveEntity(null,
- fileRef).getByteStream();
- byte refBytes[] = JavaUtils.getBytesFromStream(refStream);
- assertEquals(new String(refBytes),new String(c14nBytes));
- }
-
- /**
- * Method testDefaultNamespaceOverridden
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- * public static void _testDefaultNamespaceOverridden()
- * throws IOException, FileNotFoundException, SAXException,
- * ParserConfigurationException, CanonicalizationException,
- * InvalidCanonicalizerException, TransformerException {
- *
- * String descri = "Default namespace overridden";
- * String fileIn =
- * "data/org/apache/xml/security/temp/key/retrieval-from-same-doc.xml";
- * String fileRef =
- * "data/org/apache/xml/security/temp/key/retrieval-from-same-doc-key.xml";
- * String fileOut =
- * "data/org/apache/xml/security/temp/key/retrieval-from-same-doc-key-error.xml";
- * String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
- * boolean validating = false;
- * DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
- *
- * dfactory.setNamespaceAware(true);
- *
- * DocumentBuilder db = dfactory.newDocumentBuilder();
- * // org.xml.sax.EntityResolver resolver = new TestVectorResolver();
- * // db.setEntityResolver(resolver);
- *
- * // Document doc = db.parse(resolver.resolveEntity(null, fileIn));
- * Document doc = db.parse(fileIn);
- * Element nscontext = doc.createElement("container");
- *
- * nscontext.setAttribute("xmlns:ds", "http://www.w3.org/2000/09/xmldsig#");
- * nscontext.setAttribute("xmlns:my",
- * "http://www.xmlsecurity.org/temp/mytempns");
- *
- * String xpath =
- * "//my:KeyMaterials[1]/descendant::node()[not(self::text())]";
- * CachedXPathAPI xpathAPI = new CachedXPathAPI();
- * NodeList nodes = xpathAPI.selectNodeList(doc, xpath, nscontext);
- * Canonicalizer c14n =
- * Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
- * byte c14nBytes[] = c14n.canonicalizeXPathNodeSet(nodes);
- * // InputStream refStream = resolver.resolveEntity(null, fileRef).getByteStream();
- * // byte refBytes[] = JavaUtils.getBytesFromStream(refStream);
- * byte refBytes[] = JavaUtils.getBytesFromFile(fileRef);
- * boolean equal = JavaUtils.binaryCompare(refBytes, c14nBytes);
- *
- * if (!equal) {
- * JavaUtils.writeBytesToFilename(fileOut, c14nBytes);
- * log.debug("Wrote malicious output from Test \"" + descri
- * + "\" to file " + fileOut);
- * }
- *
- * assertTrue(equal);
- * }
- */
-
- /**
- * Note: This specification supports the recent XML plenary decision to
- * deprecate relative namespace URIs as follows: implementations of XML
- * canonicalization MUST report an operation failure on documents containing
- * relative namespace URIs. XML canonicalization MUST NOT be implemented
- * with an XML parser that converts relative URIs to absolute URIs.
- *
- * Implementations MUST report an operation failure on documents containing
- * relative namespace URIs.
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- public static void testRelativeNSbehaviour()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- //J-
- String inputStr = ""
- + "<absolute:correct xmlns:absolute='http://www.absolute.org/#likeVodka'>"
- + "<relative:incorrect xmlns:relative='../cheating#away'>"
- + "</relative:incorrect>"
- + "</absolute:correct>"
- + "\n"
- + "";
- //J+
- DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-
- dfactory.setNamespaceAware(true);
-
- DocumentBuilder db = dfactory.newDocumentBuilder();
- Document doc = db.parse(new ByteArrayInputStream(inputStr.getBytes()));
- boolean weCatchedTheRelativeNS = false;
+ //J+
+ xpath.appendChild(doc.createTextNode(xpathFromSpec));
+ assertTrue(descri,
+ c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating, xpath));
+ }
+
+ /**
+ * 3.7 Document Subsets
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-DocSubsets">the example from the spec</A>
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void test37byNodeList()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+
+ //String descri = "3.7 Document Subsets. (uncommented), c14n by NodeList";
+ String fileIn = prefix + "in/37_input.xml";
+ String fileRef = prefix + "in/37_c14n.xml";
+ //String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ //boolean validating = true;
+ DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+ dfactory.setNamespaceAware(true);
+
+ DocumentBuilder db = dfactory.newDocumentBuilder();
+ org.xml.sax.EntityResolver resolver = new TestVectorResolver();
+
+ db.setEntityResolver(resolver);
+
+ Document doc = db.parse(resolver.resolveEntity(null, fileIn));
+ //J-
+ Element nscontext = TestUtils.createDSctx(doc, "ietf", "http://www.ietf.org");
+
+ String xpath = "(//. | //@* | //namespace::*)"
+ + "[ "
+ + "self::ietf:e1 or "
+ + "(parent::ietf:e1 and not(self::text() or self::e2)) or "
+ + "count(id(\"E3\")|ancestor-or-self::node()) = count(ancestor-or-self::node()) "
+ + "]";
+ //J+
+ CachedXPathAPI xpathAPI = new CachedXPathAPI();
- try {
- Canonicalizer c14n =
+ NodeList nodes = xpathAPI.selectNodeList(doc, xpath, nscontext);
+ Canonicalizer c14n =
+ Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+ byte c14nBytes[] = c14n.canonicalizeXPathNodeSet(nodes);
+ InputStream refStream = resolver.resolveEntity(null,
+ fileRef).getByteStream();
+ byte refBytes[] = JavaUtils.getBytesFromStream(refStream);
+ assertEquals(new String(refBytes),new String(c14nBytes));
+ }
+
+ /**
+ * Method testDefaultNamespaceOverridden
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ * public static void _testDefaultNamespaceOverridden()
+ * throws IOException, FileNotFoundException, SAXException,
+ * ParserConfigurationException, CanonicalizationException,
+ * InvalidCanonicalizerException, TransformerException {
+ *
+ * String descri = "Default namespace overridden";
+ * String fileIn =
+ * "data/org/apache/xml/security/temp/key/retrieval-from-same-doc.xml";
+ * String fileRef =
+ * "data/org/apache/xml/security/temp/key/retrieval-from-same-doc-key.xml";
+ * String fileOut =
+ * "data/org/apache/xml/security/temp/key/retrieval-from-same-doc-key-error.xml";
+ * String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+ * boolean validating = false;
+ * DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+ *
+ * dfactory.setNamespaceAware(true);
+ *
+ * DocumentBuilder db = dfactory.newDocumentBuilder();
+ * // org.xml.sax.EntityResolver resolver = new TestVectorResolver();
+ * // db.setEntityResolver(resolver);
+ *
+ * // Document doc = db.parse(resolver.resolveEntity(null, fileIn));
+ * Document doc = db.parse(fileIn);
+ * Element nscontext = doc.createElement("container");
+ *
+ * nscontext.setAttribute("xmlns:ds", "http://www.w3.org/2000/09/xmldsig#");
+ * nscontext.setAttribute("xmlns:my",
+ * "http://www.xmlsecurity.org/temp/mytempns");
+ *
+ * String xpath =
+ * "//my:KeyMaterials[1]/descendant::node()[not(self::text())]";
+ * CachedXPathAPI xpathAPI = new CachedXPathAPI();
+ * NodeList nodes = xpathAPI.selectNodeList(doc, xpath, nscontext);
+ * Canonicalizer c14n =
+ * Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+ * byte c14nBytes[] = c14n.canonicalizeXPathNodeSet(nodes);
+ * // InputStream refStream = resolver.resolveEntity(null, fileRef).getByteStream();
+ * // byte refBytes[] = JavaUtils.getBytesFromStream(refStream);
+ * byte refBytes[] = JavaUtils.getBytesFromFile(fileRef);
+ * boolean equal = JavaUtils.binaryCompare(refBytes, c14nBytes);
+ *
+ * if (!equal) {
+ * JavaUtils.writeBytesToFilename(fileOut, c14nBytes);
+ * log.debug("Wrote malicious output from Test \"" + descri
+ * + "\" to file " + fileOut);
+ * }
+ *
+ * assertTrue(equal);
+ * }
+ */
+
+ /**
+ * Note: This specification supports the recent XML plenary decision to
+ * deprecate relative namespace URIs as follows: implementations of XML
+ * canonicalization MUST report an operation failure on documents containing
+ * relative namespace URIs. XML canonicalization MUST NOT be implemented
+ * with an XML parser that converts relative URIs to absolute URIs.
+ *
+ * Implementations MUST report an operation failure on documents containing
+ * relative namespace URIs.
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void testRelativeNSbehaviour()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+
+ //J-
+ String inputStr = ""
+ + "<absolute:correct xmlns:absolute='http://www.absolute.org/#likeVodka'>"
+ + "<relative:incorrect xmlns:relative='../cheating#away'>"
+ + "</relative:incorrect>"
+ + "</absolute:correct>"
+ + "\n"
+ + "";
+ //J+
+ DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+ dfactory.setNamespaceAware(true);
+
+ DocumentBuilder db = dfactory.newDocumentBuilder();
+ Document doc = db.parse(new ByteArrayInputStream(inputStr.getBytes()));
+ boolean weCatchedTheRelativeNS = false;
+
+ try {
+ Canonicalizer c14n =
+ Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+ c14n.canonicalizeSubtree(doc);
+
+ } catch (CanonicalizationException cex) {
+ // if we reach this point - good.
+ log.debug("We catched the C14nEx, that's good: " + cex.getMessage());
+ weCatchedTheRelativeNS = true;
+ }
+
+ assertTrue("We did not catch the relative namespace", weCatchedTheRelativeNS);
+ }
+
+ /**
+ * The XPath data model represents data using UCS characters.
+ * Implementations MUST use XML processors that support UTF-8 and UTF-16
+ * and translate to the UCS character domain. For UTF-16, the leading byte
+ * order mark is treated as an artifact of encoding and stripped from the
+ * UCS character data (subsequent zero width non-breaking spaces appearing
+ * within the UTF-16 data are not removed) [UTF-16, Section 3.2]. Support
+ * for ISO-8859-1 encoding is RECOMMENDED, and all other character encodings
+ * are OPTIONAL.
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void testTranslationFromUTF16toUTF8()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ String val =
+ "<UTF16>The german &auml (which is Unicode &#xE4;): "ä"</UTF16>";
+ byte utf16[] = convertToUTF16(val.getBytes());
+ Canonicalizer c14n =
Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
- c14n.canonicalizeSubtree(doc);
+ byte c14nBytes[] = c14n.canonicalize(utf16);
+ org.xml.sax.EntityResolver resolver = new TestVectorResolver();
+ InputStream refStream =
+ resolver.resolveEntity(
+ null, prefix + "/in/testTranslationFromUTF16toUTF8.xml").getByteStream();
+ byte refBytes[] = JavaUtils.getBytesFromStream(refStream);
+ boolean equal = java.security.MessageDigest.isEqual(refBytes, c14nBytes);
+
+ assertTrue("Parser does not translate to UCS character domain", equal);
+ }
+
+ /**
+ * Method testXMLAttributes1
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void testXMLAttributes1()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ //J-
+ String input = ""
+ + "<included xml:lang='de'>"
+ + "<notIncluded xml:lang='de'>"
+ + "<notIncluded xml:lang='uk'>"
+ + "<included >"
+ + "</included>"
+ + "</notIncluded>"
+ + "</notIncluded>"
+ + "</included>";
+
+ String definedOutput = ""
+ + "<included xml:lang=\"de\">"
+ + "<included xml:lang=\"uk\">"
+ + "</included>"
+ + "</included>";
+ //J+
+ assertTrue(doTestXMLAttributes(input, definedOutput));
+ }
+
+ /**
+ * Method testXMLAttributes2
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void testXMLAttributes2()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ //J-
+ String input = ""
+ + "<included xml:lang='uk'>"
+ + "<notIncluded xml:lang='de'>"
+ + "<notIncluded xml:lang='uk'>"
+ + "<included >"
+ + "</included>"
+ + "</notIncluded>"
+ + "</notIncluded>"
+ + "</included>";
+
+ String definedOutput = ""
+ + "<included xml:lang=\"uk\">"
+ + "<included xml:lang=\"uk\">"
+ + "</included>"
+ + "</included>";
+ //J+
+ assertTrue(doTestXMLAttributes(input, definedOutput));
+ }
+
+ /**
+ * Method testXMLAttributes3
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ public void testXMLAttributes3()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ //J-
+ String input = ""
+ + "<included xml:lang='de'>"
+ + "<notIncluded xml:lang='de'>"
+ + "<notIncluded xml:lang='uk'>"
+ + "<included xml:lang='de'>"
+ + "</included>"
+ + "</notIncluded>"
+ + "</notIncluded>"
+ + "</included>";
+
+ String definedOutput = ""
+ + "<included xml:lang=\"de\">"
+ + "<included xml:lang=\"de\">"
+ + "</included>"
+ + "</included>";
+ //J+
+ assertTrue(doTestXMLAttributes(input, definedOutput));
+ }
+
+ /**
+ * Method testXMLAttributes4
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ @org.junit.Ignore
+ public void _testXMLAttributes4()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ //J-
+ String input = ""
+ + "<included xml:lang='de'>"
+ + "<included xml:lang='de'>"
+ + "<notIncluded xml:lang='uk'>"
+ + "<included >"
+ + "</included>"
+ + "</notIncluded>"
+ + "</included>"
+ + "</included>";
+
+ String definedOutput = ""
+ + "<included xml:lang=\"de\">"
+ + "<included>"
+ + "<included xml:lang=\"uk\">"
+ + "</included>"
+ + "</included>"
+ + "</included>";
+ //J+
+ assertTrue(doTestXMLAttributes(input, definedOutput));
+ }
+
+ /**
+ * Method testXMLAttributes5
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ @org.junit.Ignore
+ public void _testXMLAttributes5()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ //J-
+ String input = ""
+ + "<included xml:lang='de'>"
+ + "<included xml:lang='de'>"
+ + "<notIncluded xml:space='preserve' xml:lang='uk'>"
+ + "<included >"
+ + "</included>"
+ + "</notIncluded>"
+ + "</included>"
+ + "</included>";
+
+ String definedOutput = ""
+ + "<included xml:lang=\"de\">"
+ + "<included>"
+ + "<included xml:lang=\"uk\" xml:space=\"preserve\">"
+ + "</included>"
+ + "</included>"
+ + "</included>";
+ //J+
+ assertTrue(doTestXMLAttributes(input, definedOutput));
+ }
+
+ /**
+ * Method testXMLAttributes6
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ @org.junit.Test
+ @org.junit.Ignore
+ public void _testXMLAttributes6()
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ //J-
+ String input = ""
+ + "<included xml:space='preserve' xml:lang='de'>"
+ + "<included xml:lang='de'>"
+ + "<notIncluded xml:lang='uk'>"
+ + "<included>"
+ + "</included>"
+ + "</notIncluded>"
+ + "</included>"
+ + "</included>";
+
+ String definedOutput = ""
+ + "<included xml:lang=\"de\" xml:space=\"preserve\">"
+ + "<included>"
+ + "<included xml:lang=\"uk\" xml:space=\"preserve\">"
+ + "</included>"
+ + "</included>"
+ + "</included>";
+ //J+
+ assertTrue(doTestXMLAttributes(input, definedOutput));
+ }
+
+ /**
+ * Method doTestXMLAttributes
+ *
+ * @param input
+ * @param definedOutput
+ * @param writeResultsToFile
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ private boolean doTestXMLAttributes(String input, String definedOutput)
+ throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+
+ DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+ dfactory.setNamespaceAware(true);
+ dfactory.setValidating(true);
+
+ DocumentBuilder db = dfactory.newDocumentBuilder();
+
+ db.setErrorHandler(new org.apache.xml.security.utils
+ .IgnoreAllErrorHandler());
- } catch (CanonicalizationException cex) {
+ Document doc = db.parse(new ByteArrayInputStream(input.getBytes()));
+ Canonicalizer c14nizer =
+ Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+ CachedXPathAPI xpathAPI = new CachedXPathAPI();
- // if we reach this point - good.
- log.debug("We catched the C14nEx, that's good: " + cex.getMessage());
+ //XMLUtils.circumventBug2650(doc);
- weCatchedTheRelativeNS = true;
- }
-
- assertTrue("We did not catch the relative namespace",
- weCatchedTheRelativeNS);
- }
-
- /**
- * The XPath data model represents data using UCS characters.
- * Implementations MUST use XML processors that support UTF-8 and UTF-16
- * and translate to the UCS character domain. For UTF-16, the leading byte
- * order mark is treated as an artifact of encoding and stripped from the
- * UCS character data (subsequent zero width non-breaking spaces appearing
- * within the UTF-16 data are not removed) [UTF-16, Section 3.2]. Support
- * for ISO-8859-1 encoding is RECOMMENDED, and all other character encodings
- * are OPTIONAL.
- *
- * $todo$ implement the test
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- public static void testTranslationFromUTF16toUTF8()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- String val =
- "<UTF16>The german &auml (which is Unicode &#xE4;): "ä"</UTF16>";
- byte utf16[] = convertToUTF16(val.getBytes());
- Canonicalizer c14n =
- Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
- byte c14nBytes[] = c14n.canonicalize(utf16);
- org.xml.sax.EntityResolver resolver = new TestVectorResolver();
- InputStream refStream = resolver.resolveEntity(
- null,
- prefix + "/in/testTranslationFromUTF16toUTF8.xml")
- .getByteStream();
- byte refBytes[] = JavaUtils.getBytesFromStream(refStream);
- boolean equal = java.security.MessageDigest.isEqual(refBytes, c14nBytes);
-
- assertTrue("Parser does not translate to UCS character domain", equal);
- }
-
- /**
- * Method testXMLAttributes1
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- public static void testXMLAttributes1()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
- //J-
- String input = ""
- + "<included xml:lang='de'>"
- + "<notIncluded xml:lang='de'>"
- + "<notIncluded xml:lang='uk'>"
- + "<included >"
- + "</included>"
- + "</notIncluded>"
- + "</notIncluded>"
- + "</included>";
-
- String definedOutput = ""
- + "<included xml:lang=\"de\">"
- + "<included xml:lang=\"uk\">"
- + "</included>"
- + "</included>";
- //J+
- assertTrue(doTestXMLAttributes(input, definedOutput));
- }
-
- /**
- * Method testXMLAttributes2
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- public static void testXMLAttributes2()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
- //J-
- String input = ""
- + "<included xml:lang='uk'>"
- + "<notIncluded xml:lang='de'>"
- + "<notIncluded xml:lang='uk'>"
- + "<included >"
- + "</included>"
- + "</notIncluded>"
- + "</notIncluded>"
- + "</included>";
-
- String definedOutput = ""
- + "<included xml:lang=\"uk\">"
- + "<included xml:lang=\"uk\">"
- + "</included>"
- + "</included>";
- //J+
- assertTrue(doTestXMLAttributes(input, definedOutput));
- }
-
- /**
- * Method testXMLAttributes3
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- public static void testXMLAttributes3()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
- //J-
- String input = ""
- + "<included xml:lang='de'>"
- + "<notIncluded xml:lang='de'>"
- + "<notIncluded xml:lang='uk'>"
- + "<included xml:lang='de'>"
- + "</included>"
- + "</notIncluded>"
- + "</notIncluded>"
- + "</included>";
-
- String definedOutput = ""
- + "<included xml:lang=\"de\">"
- + "<included xml:lang=\"de\">"
- + "</included>"
- + "</included>";
- //J+
- assertTrue(doTestXMLAttributes(input, definedOutput));
- }
-
- /**
- * Method testXMLAttributes4
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- public static void _testXMLAttributes4()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
- //J-
- String input = ""
- + "<included xml:lang='de'>"
- + "<included xml:lang='de'>"
- + "<notIncluded xml:lang='uk'>"
- + "<included >"
- + "</included>"
- + "</notIncluded>"
- + "</included>"
- + "</included>";
-
- String definedOutput = ""
- + "<included xml:lang=\"de\">"
- + "<included>"
- + "<included xml:lang=\"uk\">"
- + "</included>"
- + "</included>"
- + "</included>";
- //J+
- assertTrue(doTestXMLAttributes(input, definedOutput));
- }
-
- /**
- * Method testXMLAttributes5
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- public static void _testXMLAttributes5()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
- //J-
- String input = ""
- + "<included xml:lang='de'>"
- + "<included xml:lang='de'>"
- + "<notIncluded xml:space='preserve' xml:lang='uk'>"
- + "<included >"
- + "</included>"
- + "</notIncluded>"
- + "</included>"
- + "</included>";
-
- String definedOutput = ""
- + "<included xml:lang=\"de\">"
- + "<included>"
- + "<included xml:lang=\"uk\" xml:space=\"preserve\">"
- + "</included>"
- + "</included>"
- + "</included>";
- //J+
- assertTrue(doTestXMLAttributes(input, definedOutput));
- }
-
- /**
- * Method testXMLAttributes6
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- public static void _testXMLAttributes6()
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
- //J-
- String input = ""
- + "<included xml:space='preserve' xml:lang='de'>"
- + "<included xml:lang='de'>"
- + "<notIncluded xml:lang='uk'>"
- + "<included>"
- + "</included>"
- + "</notIncluded>"
- + "</included>"
- + "</included>";
-
- String definedOutput = ""
- + "<included xml:lang=\"de\" xml:space=\"preserve\">"
- + "<included>"
- + "<included xml:lang=\"uk\" xml:space=\"preserve\">"
- + "</included>"
- + "</included>"
- + "</included>";
- //J+
- assertTrue(doTestXMLAttributes(input, definedOutput));
- }
-
- /**
- * Method doTestXMLAttributes
- *
- * @param input
- * @param definedOutput
- * @param writeResultsToFile
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- private static boolean doTestXMLAttributes(
- String input, String definedOutput)
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-
- dfactory.setNamespaceAware(true);
- dfactory.setValidating(true);
-
- DocumentBuilder db = dfactory.newDocumentBuilder();
-
- db.setErrorHandler(new org.apache.xml.security.utils
- .IgnoreAllErrorHandler());
-
- Document doc = db.parse(new ByteArrayInputStream(input.getBytes()));
- Canonicalizer c14nizer =
- Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
- CachedXPathAPI xpathAPI = new CachedXPathAPI();
-
- //XMLUtils.circumventBug2650(doc);
-
- NodeList nodes =
- xpathAPI.selectNodeList(doc, "(//*[local-name()='included'] | //@*[parent::node()[local-name()='included']])");
- byte result[] = c14nizer.canonicalizeXPathNodeSet(nodes);
- byte defined[] = definedOutput.getBytes();
- assertEquals(definedOutput, new String(result));
- return java.security.MessageDigest.isEqual(defined, result);
- }
-
- /**
- * Method c14nAndCompare
- *
- * @param fileIn
- * @param fileRef
- * @param fileOut
- * @param c14nURI
- * @param validating
- * @param xpath
- *
- * @throws CanonicalizationException
- * @throws FileNotFoundException
- * @throws IOException
- * @throws InvalidCanonicalizerException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- private static boolean c14nAndCompare(
- String fileIn, String fileRef, String fileOut, String c14nURI, boolean validating, Object xpath)
- throws IOException, FileNotFoundException, SAXException,
- ParserConfigurationException, CanonicalizationException,
- InvalidCanonicalizerException, TransformerException {
-
- DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-
- dfactory.setNamespaceAware(true);
- dfactory.setValidating(validating);
-
- DocumentBuilder documentBuilder = dfactory.newDocumentBuilder();
-
- // throw away all warnings and errors
- documentBuilder.setErrorHandler(new IgnoreAllErrorHandler());
-
- // org.xml.sax.EntityResolver resolver = new TestVectorResolver();
- // documentBuilder.setEntityResolver(resolver);
- // Document doc = documentBuilder.parse(resolver.resolveEntity(null, fileIn));
-
- Document doc = documentBuilder.parse(fileIn);
-
-
- Canonicalizer c14n = Canonicalizer.getInstance(c14nURI);
- byte c14nBytes[] = null;
-
- if (xpath == null) {
- c14nBytes = c14n.canonicalizeSubtree(doc);
- } else {
- CachedXPathAPI xpathAPI = new CachedXPathAPI();
- NodeList nl = null;
-
- if (xpath instanceof String) {
- nl = xpathAPI.selectNodeList(doc, (String) xpath);
- } else {
- Element xpathElement = (Element) xpath;
- String xpathStr = ((Text) xpathElement.getFirstChild()).getData();
-
- nl = xpathAPI.selectNodeList(doc, xpathStr, xpathElement);
- }
-
- c14nBytes = c14n.canonicalizeXPathNodeSet(nl);
- }
-
- // org.xml.sax.InputSource refIs = resolver.resolveEntity(null, fileRef);
- // byte refBytes[] = JavaUtils.getBytesFromStream(refIs.getByteStream());
- byte refBytes[] = JavaUtils.getBytesFromFile(fileRef);
-
- // if everything is OK, result is true; we do a binary compare, byte by byte
- boolean result = java.security.MessageDigest.isEqual(refBytes, c14nBytes);
-
- if (result == false) {
- File f = new File(fileOut);
- if (!f.exists()) {
+ NodeList nodes =
+ xpathAPI.selectNodeList(doc, "(//*[local-name()='included'] | //@*[parent::node()[local-name()='included']])");
+ byte result[] = c14nizer.canonicalizeXPathNodeSet(nodes);
+ byte defined[] = definedOutput.getBytes();
+ assertEquals(definedOutput, new String(result));
+ return java.security.MessageDigest.isEqual(defined, result);
+ }
+
+ /**
+ * Method c14nAndCompare
+ *
+ * @param fileIn
+ * @param fileRef
+ * @param fileOut
+ * @param c14nURI
+ * @param validating
+ * @param xpath
+ *
+ * @throws CanonicalizationException
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerException
+ */
+ private boolean c14nAndCompare(
+ String fileIn,
+ String fileRef,
+ String fileOut,
+ String c14nURI,
+ boolean validating,
+ Object xpath
+ ) throws IOException, FileNotFoundException, SAXException,
+ ParserConfigurationException, CanonicalizationException,
+ InvalidCanonicalizerException, TransformerException {
+ DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+ dfactory.setNamespaceAware(true);
+ dfactory.setValidating(validating);
+
+ DocumentBuilder documentBuilder = dfactory.newDocumentBuilder();
+
+ // throw away all warnings and errors
+ documentBuilder.setErrorHandler(new IgnoreAllErrorHandler());
+
+ // org.xml.sax.EntityResolver resolver = new TestVectorResolver();
+ // documentBuilder.setEntityResolver(resolver);
+ // Document doc = documentBuilder.parse(resolver.resolveEntity(null, fileIn));
+
+ Document doc = documentBuilder.parse(fileIn);
+
+
+ Canonicalizer c14n = Canonicalizer.getInstance(c14nURI);
+ byte c14nBytes[] = null;
+
+ if (xpath == null) {
+ c14nBytes = c14n.canonicalizeSubtree(doc);
+ } else {
+ CachedXPathAPI xpathAPI = new CachedXPathAPI();
+ NodeList nl = null;
+
+ if (xpath instanceof String) {
+ nl = xpathAPI.selectNodeList(doc, (String) xpath);
+ } else {
+ Element xpathElement = (Element) xpath;
+ String xpathStr = ((Text) xpathElement.getFirstChild()).getData();
+
+ nl = xpathAPI.selectNodeList(doc, xpathStr, xpathElement);
+ }
+
+ c14nBytes = c14n.canonicalizeXPathNodeSet(nl);
+ }
+
+ // org.xml.sax.InputSource refIs = resolver.resolveEntity(null, fileRef);
+ // byte refBytes[] = JavaUtils.getBytesFromStream(refIs.getByteStream());
+ byte refBytes[] = JavaUtils.getBytesFromFile(fileRef);
+
+ // if everything is OK, result is true; we do a binary compare, byte by byte
+ boolean result = java.security.MessageDigest.isEqual(refBytes, c14nBytes);
+
+ if (result == false) {
+ File f = new File(fileOut);
+ if (!f.exists()) {
File parent = new File(f.getParent());
parent.mkdirs();
f.createNewFile();
- }
- FileOutputStream fos = new FileOutputStream(f);
+ }
+ FileOutputStream fos = new FileOutputStream(f);
+
+ fos.write(c14nBytes);
+ log.debug("Wrote errornous result to file " + f.toURI().toURL().toString());
+ assertEquals(new String(refBytes),new String(c14nBytes));
+ }
+
+ return result;
+ }
+
+ /**
+ * This method takes the input bytes as XML Document and converts it to an
+ * UTF-16 encoded XML document which is serialized to byte[] and returned.
+ *
+ * @param input
+ *
+ * @throws IOException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformerConfigurationException
+ * @throws TransformerException
+ */
+ public static byte[] convertToUTF16(byte input[])
+ throws ParserConfigurationException, IOException, SAXException,
+ TransformerConfigurationException, TransformerException {
+ //String ENCODING_ISO8859_1 = "ISO-8859-1";
+ //String ENCODING_UTF8 = "UTF-8";
+ String ENCODING_UTF16 = "UTF-16";
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ Document doc = db.parse(new ByteArrayInputStream(input));
+ TransformerFactory tFactory = TransformerFactory.newInstance();
+ Transformer transformer = tFactory.newTransformer();
+
+ transformer.setOutputProperty(OutputKeys.ENCODING, ENCODING_UTF16);
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
+
+ DOMSource source = new DOMSource(doc);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ StreamResult result = new StreamResult(os);
+
[... 69 lines stripped ...]