/* | 
|
 * 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.transforms.implementations;  | 
|
import java.io.OutputStream;  | 
|
import com.sun.org.apache.xml.internal.security.c14n.CanonicalizationException;  | 
|
import com.sun.org.apache.xml.internal.security.c14n.implementations.Canonicalizer20010315ExclOmitComments;  | 
|
import com.sun.org.apache.xml.internal.security.exceptions.XMLSecurityException;  | 
|
import com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput;  | 
|
import com.sun.org.apache.xml.internal.security.transforms.Transform;  | 
|
import com.sun.org.apache.xml.internal.security.transforms.TransformSpi;  | 
|
import com.sun.org.apache.xml.internal.security.transforms.Transforms;  | 
|
import com.sun.org.apache.xml.internal.security.transforms.params.InclusiveNamespaces;  | 
|
import com.sun.org.apache.xml.internal.security.utils.XMLUtils;  | 
|
import org.w3c.dom.Element;  | 
|
/** | 
|
 * Class TransformC14NExclusive | 
|
 * | 
|
*/  | 
|
public class TransformC14NExclusive extends TransformSpi {  | 
|
    /** Field implementedTransformURI */ | 
|
public static final String implementedTransformURI =  | 
|
Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS;  | 
|
    /** | 
|
     * Method engineGetURI | 
|
     * | 
|
     * {@inheritDoc} | 
|
*/  | 
|
protected String engineGetURI() {  | 
|
return implementedTransformURI;  | 
|
}  | 
|
protected XMLSignatureInput enginePerformTransform(  | 
|
XMLSignatureInput input, OutputStream os, Transform transformObject  | 
|
) throws CanonicalizationException {  | 
|
        try { | 
|
String inclusiveNamespaces = null;  | 
|
if (transformObject.length(  | 
|
InclusiveNamespaces.ExclusiveCanonicalizationNamespace,  | 
|
InclusiveNamespaces._TAG_EC_INCLUSIVENAMESPACES) == 1  | 
|
            ) { | 
|
Element inclusiveElement =  | 
|
XMLUtils.selectNode(  | 
|
transformObject.getElement().getFirstChild(),  | 
|
InclusiveNamespaces.ExclusiveCanonicalizationNamespace,  | 
|
InclusiveNamespaces._TAG_EC_INCLUSIVENAMESPACES,  | 
|
0  | 
|
);  | 
|
inclusiveNamespaces =  | 
|
new InclusiveNamespaces(  | 
|
inclusiveElement, transformObject.getBaseURI()).getInclusiveNamespaces();  | 
|
}  | 
|
Canonicalizer20010315ExclOmitComments c14n =  | 
|
new Canonicalizer20010315ExclOmitComments();  | 
|
c14n.setSecureValidation(secureValidation);  | 
|
if (os != null) {  | 
|
c14n.setWriter(os);  | 
|
}  | 
|
byte[] result = c14n.engineCanonicalize(input, inclusiveNamespaces);  | 
|
XMLSignatureInput output = new XMLSignatureInput(result);  | 
|
output.setSecureValidation(secureValidation);  | 
|
if (os != null) {  | 
|
output.setOutputStream(os);  | 
|
}  | 
|
return output;  | 
|
} catch (XMLSecurityException ex) {  | 
|
throw new CanonicalizationException(ex);  | 
|
}  | 
|
}  | 
|
}  |