Class CanonicalizerPhysical


  • public class CanonicalizerPhysical
    extends CanonicalizerBase
    Serializes the physical representation of the subtree. All the attributes present in the subtree are emitted. The attributes are sorted within an element, with the namespace declarations appearing before the regular attributes. This algorithm is not a true canonicalization since equivalent subtrees may produce different output. It is therefore unsuitable for digital signatures. This same property makes it ideal for XML Encryption Syntax and Processing, because the decrypted XML content will share the same physical representation as the original XML content that was encrypted.
    • Constructor Detail

      • CanonicalizerPhysical

        public CanonicalizerPhysical()
        Constructor Canonicalizer20010315
    • Method Detail

      • engineCanonicalizeSubTree

        public byte[] engineCanonicalizeSubTree​(org.w3c.dom.Node rootNode,
                                                java.lang.String inclusiveNamespaces,
                                                boolean propagateDefaultNamespace)
                                         throws CanonicalizationException
        Always throws a CanonicalizationException.
        Specified by:
        engineCanonicalizeSubTree in class CanonicalizerSpi
        Parameters:
        rootNode -
        inclusiveNamespaces -
        propagateDefaultNamespace - If true the default namespace will be propagated to the c14n-ized root element
        Returns:
        none it always fails
        Throws:
        CanonicalizationException
      • handleAttributesSubtree

        protected java.util.Iterator<org.w3c.dom.Attr> handleAttributesSubtree​(org.w3c.dom.Element element,
                                                                               NameSpaceSymbTable ns)
                                                                        throws CanonicalizationException
        Returns the Attr[]s to be output for the given element.
        The code of this method is a copy of handleAttributes(Element, NameSpaceSymbTable), whereas it takes into account that subtree-c14n is -- well -- subtree-based. So if the element in question isRoot of c14n, it's parent is not in the node set, as well as all other ancestors.
        Parameters:
        element -
        ns -
        Returns:
        the Attr[]s to be output
        Throws:
        CanonicalizationException
      • circumventBugIfNeeded

        protected void circumventBugIfNeeded​(XMLSignatureInput input)
                                      throws CanonicalizationException,
                                             javax.xml.parsers.ParserConfigurationException,
                                             java.io.IOException,
                                             org.xml.sax.SAXException
        Throws:
        CanonicalizationException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
        org.xml.sax.SAXException
      • outputPItoWriter

        protected void outputPItoWriter​(org.w3c.dom.ProcessingInstruction currentPI,
                                        java.io.OutputStream writer,
                                        int position)
                                 throws java.io.IOException
        Description copied from class: CanonicalizerBase
        Outputs a PI to the internal Writer.
        Overrides:
        outputPItoWriter in class CanonicalizerBase
        writer - where to write the things
        Throws:
        java.io.IOException
      • outputCommentToWriter

        protected void outputCommentToWriter​(org.w3c.dom.Comment currentComment,
                                             java.io.OutputStream writer,
                                             int position)
                                      throws java.io.IOException
        Description copied from class: CanonicalizerBase
        Method outputCommentToWriter
        Overrides:
        outputCommentToWriter in class CanonicalizerBase
        writer - writer where to write the things
        Throws:
        java.io.IOException