src/share/classes/com/sun/org/apache/xml/internal/security/c14n/CanonicalizerSpi.java
Print this page
*** 1,110 ****
/*
* reserved comment block
* DO NOT REMOVE OR ALTER!
*/
! /*
! * Copyright 1999-2004 The Apache Software Foundation.
! *
! * Licensed under the Apache License, Version 2.0 (the "License");
! * you may not use this file except in compliance with the License.
! * You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
! * Unless required by applicable law or agreed to in writing, software
! * distributed under the License is distributed on an "AS IS" BASIS,
! * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
! * See the License for the specific language governing permissions and
! * limitations under the License.
! *
*/
package com.sun.org.apache.xml.internal.security.c14n;
-
-
import java.io.ByteArrayInputStream;
import java.io.OutputStream;
import java.util.Set;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.xpath.XPath;
import com.sun.org.apache.xml.internal.security.utils.XMLUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
-
/**
! * Base class which all Caninicalization algorithms extend.
*
- * $todo$ cange JavaDoc
* @author Christian Geuer-Pollmann
*/
public abstract class CanonicalizerSpi {
/**
* Method canonicalize
*
- *
* @param inputBytes
* @return the c14n bytes.
*
- *
* @throws CanonicalizationException
* @throws java.io.IOException
* @throws javax.xml.parsers.ParserConfigurationException
* @throws org.xml.sax.SAXException
- *
*/
public byte[] engineCanonicalize(byte[] inputBytes)
! throws javax.xml.parsers.ParserConfigurationException,
! java.io.IOException, org.xml.sax.SAXException,
! CanonicalizationException {
! java.io.ByteArrayInputStream bais = new ByteArrayInputStream(inputBytes);
InputSource in = new InputSource(bais);
DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
dfactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
! // needs to validate for ID attribute nomalization
dfactory.setNamespaceAware(true);
DocumentBuilder db = dfactory.newDocumentBuilder();
- /*
- * for some of the test vectors from the specification,
- * there has to be a validatin parser for ID attributes, default
- * attribute values, NMTOKENS, etc.
- * Unfortunaltely, the test vectors do use different DTDs or
- * even no DTD. So Xerces 1.3.1 fires many warnings about using
- * ErrorHandlers.
- *
- * Text from the spec:
- *
- * The input octet stream MUST contain a well-formed XML document,
- * but the input need not be validated. However, the attribute
- * value normalization and entity reference resolution MUST be
- * performed in accordance with the behaviors of a validating
- * XML processor. As well, nodes for default attributes (declared
- * in the ATTLIST with an AttValue but not specified) are created
- * in each element. Thus, the declarations in the document type
- * declaration are used to help create the canonical form, even
- * though the document type declaration is not retained in the
- * canonical form.
- *
- */
-
- // ErrorHandler eh = new C14NErrorHandler();
- // db.setErrorHandler(eh);
Document document = db.parse(in);
! byte result[] = this.engineCanonicalizeSubTree(document);
! return result;
}
/**
* Method engineCanonicalizeXPathNodeSet
*
--- 1,80 ----
/*
* reserved comment block
* DO NOT REMOVE OR ALTER!
*/
! /**
! * Licensed to the Apache Software Foundation (ASF) under one
! * or more contributor license agreements. See the NOTICE file
! * distributed with this work for additional information
! * regarding copyright ownership. The ASF licenses this file
! * to you under the Apache License, Version 2.0 (the
! * "License"); you may not use this file except in compliance
! * with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
! * Unless required by applicable law or agreed to in writing,
! * software distributed under the License is distributed on an
! * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
! * KIND, either express or implied. See the License for the
! * specific language governing permissions and limitations
! * under the License.
*/
package com.sun.org.apache.xml.internal.security.c14n;
import java.io.ByteArrayInputStream;
import java.io.OutputStream;
import java.util.Set;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import com.sun.org.apache.xml.internal.security.utils.XMLUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
/**
! * Base class which all Canonicalization algorithms extend.
*
* @author Christian Geuer-Pollmann
*/
public abstract class CanonicalizerSpi {
+ /** Reset the writer after a c14n */
+ protected boolean reset = false;
+
/**
* Method canonicalize
*
* @param inputBytes
* @return the c14n bytes.
*
* @throws CanonicalizationException
* @throws java.io.IOException
* @throws javax.xml.parsers.ParserConfigurationException
* @throws org.xml.sax.SAXException
*/
public byte[] engineCanonicalize(byte[] inputBytes)
! throws javax.xml.parsers.ParserConfigurationException, java.io.IOException,
! org.xml.sax.SAXException, CanonicalizationException {
! java.io.InputStream bais = new ByteArrayInputStream(inputBytes);
InputSource in = new InputSource(bais);
DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
dfactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
! // needs to validate for ID attribute normalization
dfactory.setNamespaceAware(true);
DocumentBuilder db = dfactory.newDocumentBuilder();
Document document = db.parse(in);
! return this.engineCanonicalizeSubTree(document);
}
/**
* Method engineCanonicalizeXPathNodeSet
*
*** 112,125 ****
* @return the c14n bytes
* @throws CanonicalizationException
*/
public byte[] engineCanonicalizeXPathNodeSet(NodeList xpathNodeSet)
throws CanonicalizationException {
!
! return this
! .engineCanonicalizeXPathNodeSet(XMLUtils
! .convertNodelistToSet(xpathNodeSet));
}
/**
* Method engineCanonicalizeXPathNodeSet
*
--- 82,94 ----
* @return the c14n bytes
* @throws CanonicalizationException
*/
public byte[] engineCanonicalizeXPathNodeSet(NodeList xpathNodeSet)
throws CanonicalizationException {
! return this.engineCanonicalizeXPathNodeSet(
! XMLUtils.convertNodelistToSet(xpathNodeSet)
! );
}
/**
* Method engineCanonicalizeXPathNodeSet
*
*** 128,151 ****
* @return the c14n bytes
* @throws CanonicalizationException
*/
public byte[] engineCanonicalizeXPathNodeSet(NodeList xpathNodeSet, String inclusiveNamespaces)
throws CanonicalizationException {
!
! return this
! .engineCanonicalizeXPathNodeSet(XMLUtils
! .convertNodelistToSet(xpathNodeSet), inclusiveNamespaces);
}
! //J-
! /** Returns the URI of this engine.
* @return the URI
*/
public abstract String engineGetURI();
! /** Returns the URI if include comments
! * @return true if include.
*/
public abstract boolean engineGetIncludeComments();
/**
* C14n a nodeset
--- 97,120 ----
* @return the c14n bytes
* @throws CanonicalizationException
*/
public byte[] engineCanonicalizeXPathNodeSet(NodeList xpathNodeSet, String inclusiveNamespaces)
throws CanonicalizationException {
! return this.engineCanonicalizeXPathNodeSet(
! XMLUtils.convertNodelistToSet(xpathNodeSet), inclusiveNamespaces
! );
}
! /**
! * Returns the URI of this engine.
* @return the URI
*/
public abstract String engineGetURI();
! /**
! * Returns true if comments are included
! * @return true if comments are included
*/
public abstract boolean engineGetIncludeComments();
/**
* C14n a nodeset
*** 163,174 ****
* @param xpathNodeSet
* @param inclusiveNamespaces
* @return the c14n bytes
* @throws CanonicalizationException
*/
! public abstract byte[] engineCanonicalizeXPathNodeSet(Set<Node> xpathNodeSet, String inclusiveNamespaces)
! throws CanonicalizationException;
/**
* C14n a node tree.
*
* @param rootNode
--- 132,144 ----
* @param xpathNodeSet
* @param inclusiveNamespaces
* @return the c14n bytes
* @throws CanonicalizationException
*/
! public abstract byte[] engineCanonicalizeXPathNodeSet(
! Set<Node> xpathNodeSet, String inclusiveNamespaces
! ) throws CanonicalizationException;
/**
* C14n a node tree.
*
* @param rootNode
*** 188,202 ****
*/
public abstract byte[] engineCanonicalizeSubTree(Node rootNode, String inclusiveNamespaces)
throws CanonicalizationException;
/**
! * Sets the writter where the cannocalization ends. ByteArrayOutputStream if
! * none is setted.
* @param os
*/
public abstract void setWriter(OutputStream os);
- /** Reset the writter after a c14n */
- protected boolean reset=false;
- //J+
}
--- 158,169 ----
*/
public abstract byte[] engineCanonicalizeSubTree(Node rootNode, String inclusiveNamespaces)
throws CanonicalizationException;
/**
! * Sets the writer where the canonicalization ends. ByteArrayOutputStream if
! * none is set.
* @param os
*/
public abstract void setWriter(OutputStream os);
}