blob: 2dcf9616acaf1a0510f502152f8a2de6be9196e9 [file] [log] [blame]
/**
* 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.
*/
/*
* XSEC
*
* DSIGObject := Defines the container class used by dsig to hold objects
* inside a signture
*
* $Id$
*
*/
#ifndef DSIGOBJECT_INCLUDE
#define DSIGOBJECT_INCLUDE
// XSEC Includes
#include <xsec/framework/XSECDefs.hpp>
XSEC_DECLARE_XERCES_CLASS(DOMElement);
XSEC_DECLARE_XERCES_CLASS(DOMNode);
class XSECEnv;
/**
* @ingroup pubsig
*/
/**
* @brief Base class for \<Object\> nodes in a \<Signature\> element.
*
* The DSIG spec allows for enveloping signatures, in which the signature holds
* the information it is signing. For these types of signatures, the data being
* signed can be held in an \<Object\> container.
*
* This class allows callers to and manipulate Object containers.
*
*/
class XSEC_EXPORT DSIGObject {
public:
/** @name Constructors and Destructors */
//@{
/**
* \brief Construct from an owning signature
*
* Called by the library when an Object needs to be created from an Object
* in a DOM tree.
*
* @param env The environment that the Object is operating within
* @param dom The DOM node that will be loaded
*/
DSIGObject(const XSECEnv * env, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *dom);
/**
* \brief Construct a new object
*
* Called by the library to create an Object from scratch
*
* @param env The environment the Object is operating within
*/
DSIGObject(const XSECEnv * env);
/**
* \brief Destructor
*/
~DSIGObject();
//@}
/** @name Library functions */
//@{
/**
* \brief Load the object from DOM
*
* Called by the library to load a constructed object
*/
void load(void);
/**
* \brief Create a new Object
*
* Create a new Object from scratch (will generate the DOM)
*/
XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *
createBlankObject(void);
//@}
/** @name Get functions */
//@{
/**
* \brief Get the Id for this object
*
* @returns the URI attribute string for this object
*/
const XMLCh * getId(void) const;
/**
* \brief Returns the MimeType string of this object
*
* @returns a pointer to the buffer containing the Mime Type string
*/
const XMLCh * getMimeType(void) const;
/**
* \brief Returns the Encoding string of this object
*
* @returns a pointer to the buffer containing the Encoding string
*/
const XMLCh * getEncoding(void) const;
/**
* \brief Returns the Element node for this object
*
* @returns the Element node at the head of this object
*/
const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * getElement(void) const;
//@}
/** @name Setter functions */
//@{
/**
* \brief Set the Id attribute for this Object
*
* @param id String to use for the Id attribute
*/
void setId(const XMLCh * id);
/**
* \brief Set the Id attribute for this Object
*
* @param type String to use for the MimeType attribute
*/
void setMimeType(const XMLCh * type);
/**
* \brief Set the Encoding attribute for this Object
*
* @param encoding String to use for the Encoding attribute
*/
void setEncoding(const XMLCh * encoding);
/**
* \brief Add a child node to the Object
*
* This is a "ease of use" function to allow users to add a DOM structure
* that has been built previously into the Object element
*/
void appendChild(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * child);
//@}
private:
const XSECEnv * mp_env;
XERCES_CPP_NAMESPACE_QUALIFIER DOMNode
* mp_objectNode;
XERCES_CPP_NAMESPACE_QUALIFIER DOMNode
* mp_idAttr;
XERCES_CPP_NAMESPACE_QUALIFIER DOMNode
* mp_mimeTypeAttr;
XERCES_CPP_NAMESPACE_QUALIFIER DOMNode
* mp_encodingAttr;
};
#endif /* DSIGOBJECT_INCLUDE */