[WSS4J] wss4j/test/wssec TestWSSecurity11.java,NONE,1.1 TestWSSecurity9.java,1.2,1.3
[email protected] Mon, 09 Feb 2004 08:13:35 -0800
| Newsgroups | gmane.text.xml.wss4j |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/wss4j/wss4j/test/wssec In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8764/test/wssec Modified Files: TestWSSecurity9.java Added Files: TestWSSecurity11.java Log Message: A new testcase to start with STR transform tests (no X509 SKI yet) as this needs to be implemented in the other software first. This test case is _not_ in the package test and shall be enabled only after STR is ready :-) . --- NEW FILE: TestWSSecurity11.java --- package wssec; /* * The Apache Software License, Version 1.1 * * * Copyright (c) 2001-2003 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 "Axis" 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. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.apache.axis.Message; import org.apache.axis.MessageContext; import org.apache.axis.client.AxisClient; import org.apache.axis.configuration.NullProvider; import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.utils.XMLUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ws.security.SOAPConstants; import org.apache.ws.security.WSEncryptionPart; import org.apache.ws.security.WSConstants; import org.apache.ws.security.util.WSSecurityUtil; import org.apache.ws.axis.security.util.AxisUtil; import org.apache.ws.security.WSSecurityEngine; import org.apache.ws.security.components.crypto.Crypto; import org.apache.ws.security.components.crypto.CryptoFactory; import org.apache.ws.security.message.WSSignEnvelope; import org.w3c.dom.Document; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.PrintWriter; import java.util.Vector; /** * WS-Security Test Case * <p/> * * @author Davanum Srinivas (dims-/[email protected]) */ public class TestWSSecurity11 extends TestCase { private static Log log = LogFactory.getLog(TestWSSecurity11.class); static final String NS = "http://www.w3.org/2000/09/xmldsig#"; static final String soapMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + "<SOAP-ENV:Body>" + "<add xmlns=\"http://ws.apache.org/counter/counter_port_type\">" + "<value xmlns=\"\">15</value>" + "</add>" + "</SOAP-ENV:Body>\r\n \r\n" + "</SOAP-ENV:Envelope>"; static final WSSecurityEngine secEngine = new WSSecurityEngine(); static final Crypto crypto = CryptoFactory.getInstance(); MessageContext msgContext; SOAPEnvelope unsignedEnvelope; /** * TestWSSecurity constructor * <p/> * * @param name name of the test */ public TestWSSecurity11(String name) { super(name); } /** * JUnit suite * <p/> * * @return a junit test suite */ public static Test suite() { return new TestSuite(TestWSSecurity11.class); } /** * Main method * <p/> * * @param args command line args */ public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } /** * Setup method * <p/> * * @throws java.lang.Exception Thrown when there is a problem in setup */ protected void setUp() throws Exception { AxisClient tmpEngine = new AxisClient(new NullProvider()); msgContext = new MessageContext(tmpEngine); unsignedEnvelope = getSOAPEnvelope(); } /** * Constructs a soap envelope * <p/> * * @return soap envelope * @throws java.lang.Exception if there is any problem constructing the soap envelope */ protected SOAPEnvelope getSOAPEnvelope() throws Exception { InputStream in = new ByteArrayInputStream(soapMsg.getBytes()); Message msg = new Message(in); msg.setMessageContext(msgContext); return msg.getSOAPEnvelope(); } /** * Test that signs and verifies a WS-Security envelope * <p/> * * @throws java.lang.Exception Thrown when there is any problem in signing or verification */ public void testX509SignatureSTR() throws Exception { SOAPEnvelope envelope = null; WSSignEnvelope builder = new WSSignEnvelope(); builder.setUserInfo("16c73ab6-b892-458f-abf5-2f875f74882e", "security"); // builder.setUserInfo("john", "keypass"); SOAPConstants soapConstants = WSSecurityUtil.getSOAPConstants(unsignedEnvelope); Vector parts = new Vector(); /* * Set up to sign body and use STRTransorm to sign * the signature token (e.g. X.509 certificate) */ WSEncryptionPart encP = new WSEncryptionPart( soapConstants.getBodyQName().getLocalPart(), soapConstants.getEnvelopeURI(), "Content"); parts.add(encP); encP = new WSEncryptionPart( "STRTransform", soapConstants.getEnvelopeURI(), "Content"); parts.add(encP); builder.setParts(parts); builder.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE); log.info("Before Signing...."); Document doc = unsignedEnvelope.getAsDocument(); System.out.println("test STR document: " + doc.toString() + ", " + doc.hashCode()); Document signedDoc = builder.build(doc, crypto); /* * convert the resulting document into a message first. The toSOAPMessage() * mehtod performs the necessary c14n call to properly set up the signed * document and convert it into a SOAP message. After that we extract it * as a document again for further processing. */ Message signedMsg = (Message) AxisUtil.toSOAPMessage(signedDoc); XMLUtils.PrettyElementToWriter(signedMsg.getSOAPEnvelope().getAsDOM(), new PrintWriter(System.out)); signedDoc = signedMsg.getSOAPEnvelope().getAsDocument(); log.info("After Signing...."); verify(signedDoc); } /** * Test that signs (twice) and verifies a WS-Security envelope * <p/> * * @throws java.lang.Exception Thrown when there is any problem in signing or verification public void testDoubleX509Signature() throws Exception { SOAPEnvelope envelope = null; WSSignEnvelope builder = new WSSignEnvelope(); builder.setUserInfo("16c73ab6-b892-458f-abf5-2f875f74882e", "security"); // builder.setUserInfo("john", "keypass"); Document doc = unsignedEnvelope.getAsDocument(); Document signedDoc = builder.build(doc, crypto); Document signedDoc1 = builder.build(signedDoc, crypto); verify(signedDoc1); } */ /** * Verifies the soap envelope * * @param env soap envelope * @throws java.lang.Exception Thrown when there is a problem in verification */ private void verify(Document doc) throws Exception { secEngine.processSecurityHeader(doc, null, null, crypto); } } Index: TestWSSecurity9.java =================================================================== RCS file: /cvsroot/wss4j/wss4j/test/wssec/TestWSSecurity9.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- TestWSSecurity9.java 22 Dec 2003 18:32:23 -0000 1.2 +++ TestWSSecurity9.java 9 Feb 2004 16:13:31 -0000 1.3 @@ -64,7 +64,7 @@ import org.apache.axis.client.AxisClient; import org.apache.axis.configuration.NullProvider; import org.apache.axis.message.SOAPEnvelope; -import org.apache.axis.utils.XMLUtils; +// import org.apache.axis.utils.XMLUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ws.axis.security.util.AxisUtil; @@ -81,10 +81,10 @@ import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; import java.io.ByteArrayInputStream; -import java.io.FileOutputStream; +// import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.PrintWriter; +// import java.io.PrintWriter; /** * WS-Security Test Case ------------------------------------------------------- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn