All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.ws.security.message.WSSecSignatureConfirmation Maven / Gradle / Ivy

Go to download

Apache WSS4J is an implementation of the Web Services Security (WS-Security) being developed at OASIS Web Services Security TC. WSS4J is a primarily a Java library that can be used to sign and verify SOAP Messages with WS-Security information. WSS4J will use Apache Axis and Apache XML-Security projects and will be interoperable with JAX-RPC based server/clients and .NET server/clients.

There is a newer version: 1.6.19
Show newest version
/*
 * Copyright  2003-2005 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 org.apache.ws.security.message;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ws.security.message.token.SignatureConfirmation;
import org.apache.ws.security.util.WSSecurityUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
 * Builds a WS SignatureConfirmation and inserts it into the SOAP Envelope.
 * 
 * @author Werner Dittmann ([email protected]).
 */

public class WSSecSignatureConfirmation extends WSSecBase {
    private static Log log = LogFactory.getLog(WSSecSignatureConfirmation.class
            .getName());

    private SignatureConfirmation sc = null;

    private Document document = null;
    
    byte[] signatureValue = null;

    /**
     * Constructor.
     */
    public WSSecSignatureConfirmation() {
    }

	/**
	 * Set the Signature value to store in this SignatureConfirmation.
	 * 
	 * @param signatureValue
	 *            The Signature value to store in the SignatureConfirmation
	 *            element
	 */
	public void setSignatureValue(byte[] signatureValue) {
		this.signatureValue = signatureValue;
	}


	/**
	 * Creates a SignatureConfimation element.
	 * 
	 * The method prepares and initializes a WSSec SignatureConfirmation structure after
	 * the relevant information was set. Before calling prepare() the
	 * filed signatureValue must be set
	 * 
	 * @param doc
	 *            The SOAP envelope as W3C document
	 */
	public void prepare(Document doc) {
		document = doc;
        sc = new SignatureConfirmation(doc, signatureValue);;
		String scId = "SigConf-" + sc.hashCode();
		sc.setID(scId);
	}
    
	/**
	 * Prepends the SignatureConfirmation element to the elements already in the
	 * Security header.
	 * 
	 * The method can be called any time after prepare().
	 * This allows to insert the SignatureConfirmation element at any position in the
	 * Security header.
	 * 
	 * @param secHeader
	 *            The security header that holds the Signature element.
	 */
	public void prependToHeader(WSSecHeader secHeader) {
		WSSecurityUtil.prependChildElement(document, secHeader
				.getSecurityHeader(), sc.getElement(), false);
	}
    
    /**
     * Adds a new SignatureConfirmation to a soap envelope.
     * 
     * A complete SignatureConfirmation is constructed and added
     * to the wsse:Security header.
     * 
     * @param doc
     *            The SOAP enevlope as W3C document
     * @param sigVal
     *            the Signature value. This will be the content of the "Value"
     *            attribute.
 	 * @param secHeader
	 *            The security header that holds the Signature element.
    * @return Document with SignatureConfirmation added
     */
    public Document build(Document doc, byte[] sigVal, WSSecHeader secHeader) {
        log.debug("Begin add signature confirmation...");
        
        signatureValue = sigVal;
		prepare(doc);
		prependToHeader(secHeader);
        
        return doc;
    }

	/**
	 * Get the id generated during prepare().
	 * 
	 * Returns the the value of wsu:Id attribute of this SignatureConfirmation. 
	 * 
	 * @return Return the wsu:Id of this token or null if prepareToken()
	 * was not called before.
	 */
    public String getId() {
    	if (sc == null) {
    		return null;
    	}
        return sc.getID();
    }
    
    /**
     * Get the SignatureConfirmation element generated during 
     * prepare().
     * 
     * @return Return the SignatureConfirmation element or null if prepare()
     * was not called before.
     */
    public Element getSignatureConfirmationElement() {
        return (this.sc != null) ? this.sc.getElement() : null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy