[WSS4J] wss4j/src/org/apache/ws/security/transform STRTransform.java,NONE,1.1
[email protected] Thu, 15 Jan 2004 04:25:35 -0800
| Newsgroups | gmane.text.xml.wss4j |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/wss4j/wss4j/src/org/apache/ws/security/transform In directory sc8-pr-cvs1:/tmp/cvs-serv31504/src/org/apache/ws/security/transform Added Files: STRTransform.java Log Message: Start STR-Transform implementation. Only the first hooks in WSSignEnvelope, a specific package, and a STRTransform source that is just a standard c14n transformation as yet. Further refinements of the code follow. --- NEW FILE: STRTransform.java --- /* * The Apache Software License, Version 1.1 * * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "<WebSig>" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact [email protected] * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation and was * originally based on software copyright (c) 2001, Institute for * Data Communications Systems, <http://www.nue.et-inf.uni-siegen.de/>. * The development of this software was partly funded by the European * Commission in the <WebSig> project in the ISIS Programme. * For more information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.ws.security.transform; import java.io.IOException; import java.io.ByteArrayInputStream; import org.apache.xml.security.signature.XMLSignatureInput; import org.apache.xml.security.exceptions.XMLSecurityException; import org.apache.xml.security.utils.Constants; import org.apache.xml.security.c14n.*; import org.apache.xml.security.c14n.implementations.*; import org.apache.xml.security.transforms.*; import org.apache.xml.security.transforms.params.InclusiveNamespaces; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; import org.w3c.dom.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Class STRTransform * * @author Werner Dittmann ([email protected]) * @version 1.0 */ public class STRTransform extends TransformSpi { /** Field implementedTransformURI */ public static final String implementedTransformURI = "http://schemas.xmlsoap.org/2003/06/STR-Transform"; private static Log log = LogFactory.getLog(STRTransform.class.getName()); private static boolean doDebug = false; public boolean wantsOctetStream() { return false; } public boolean wantsNodeSet() { return true; } public boolean returnsOctetStream() { return true; } public boolean returnsNodeSet() { return false; } /** * Method engineGetURI * * */ protected String engineGetURI() { return STRTransform.implementedTransformURI; } /** * Method enginePerformTransform * * @param input * * @throws CanonicalizationException * @throws InvalidCanonicalizerException */ protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input) throws IOException, CanonicalizationException, InvalidCanonicalizerException { doDebug = log.isDebugEnabled(); if (doDebug) { log.debug("Beginning STRTransform..."); } /* * This is only a preliminary implementation to get it up and to * test the registration, call, etc. Real STR follows soon. try { Canonicalizer20010315WithComments c14n = new Canonicalizer20010315WithComments(); byte[] result = null; if (input.isOctetStream()) { result = c14n.engineCanonicalize(input.getBytes()); } else { result = c14n.engineCanonicalizeXPathNodeSet(input.getNodeSet()); } if (doDebug) { log.debug("Exit STRTransform..."); } return new XMLSignatureInput(result); } catch (ParserConfigurationException ex) { Object[] exArgs = { ex.getMessage()}; CanonicalizationException cex = new CanonicalizationException( "c14n.Canonicalizer.ParserConfigurationException", exArgs); throw cex; } catch (SAXException ex) { Object[] exArgs = { ex.toString()}; CanonicalizationException cex = new CanonicalizationException( "c14n.Canonicalizer.SAXException", exArgs); throw cex; } */ try { InclusiveNamespaces inclusiveNamespaces = null; if (this._transformObject .length(InclusiveNamespaces .ExclusiveCanonicalizationNamespace, InclusiveNamespaces ._TAG_EC_INCLUSIVENAMESPACES) == 1) { Element inclusiveElement = this._transformObject.getChildElementLocalName(0, InclusiveNamespaces.ExclusiveCanonicalizationNamespace, InclusiveNamespaces._TAG_EC_INCLUSIVENAMESPACES); inclusiveNamespaces = new InclusiveNamespaces(inclusiveElement, this._transformObject.getBaseURI()); } Canonicalizer20010315ExclOmitComments c14n = new Canonicalizer20010315ExclOmitComments(); if (input.isOctetStream()) { return new XMLSignatureInput(c14n .engineCanonicalize(input.getBytes())); } else { if (inclusiveNamespaces == null) { return new XMLSignatureInput(c14n .engineCanonicalizeXPathNodeSet(input.getNodeSet())); } else { return new XMLSignatureInput(c14n .engineCanonicalizeXPathNodeSet(input .getNodeSet(), inclusiveNamespaces .getInclusiveNamespaces())); } } } catch (IOException ex) { throw new CanonicalizationException("empty", ex); } catch (ParserConfigurationException ex) { throw new CanonicalizationException("empty", ex); } catch (XMLSecurityException ex) { throw new CanonicalizationException("empty", ex); } catch (SAXException ex) { throw new CanonicalizationException("empty", ex); } } } ------------------------------------------------------- This SF.net email is sponsored by: Perforce Software. Perforce is the Fast Software Configuration Management System offering advanced branching capabilities and atomic changes on 50+ platforms. Free Eval! http://www.perforce.com/perforce/loadprog.html