xmlsecurityengine/xmlsec/inc/xmlsec_soap.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 06 Jul 2010 16:24:52 +0300
changeset 27 450972dee096
parent 0 e35f40988205
child 33 604ca70b6235
permissions -rw-r--r--
Revision: 201027 Kit: 2010127

/** 
 * XML Security Library (http://www.aleksey.com/xmlsec).
 *
 * Simple SOAP messages parsing/creation.
 *
 * This is free software; see Copyright file in the source
 * distribution for preciese wording.
 * 
 * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com>
 * Portion Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. 
 */
#ifndef __XMLSEC_SOAP_H__
#define __XMLSEC_SOAP_H__    
#include "xmlsec_config.h"
#ifndef XMLSEC_NO_SOAP

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */ 

#include <stdapis/libxml2/libxml2_tree.h>
#include "xmlsec_xmlsec.h"


/***********************************************************************
 *
 * SOAP 1.1 
 *
 **********************************************************************/
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap11CreateEnvelope	(xmlDocPtr doc);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap11EnsureHeader	(xmlNodePtr envNode);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap11AddBodyEntry	(xmlNodePtr envNode,
								 xmlNodePtr entryNode);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap11AddFaultEntry	(xmlNodePtr envNode,
								 const xmlChar* faultCodeHref,
								 const xmlChar* faultCodeLocalPart,
								 const xmlChar* faultString,
								 const xmlChar* faultActor);
XMLSEC_EXPORT int		xmlSecSoap11CheckEnvelope	(xmlNodePtr envNode);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap11GetHeader		(xmlNodePtr envNode);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap11GetBody		(xmlNodePtr envNode);
XMLSEC_EXPORT xmlSecSize	xmlSecSoap11GetBodyEntriesNumber(xmlNodePtr envNode);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap11GetBodyEntry	(xmlNodePtr envNode,
								 xmlSecSize pos);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap11GetFaultEntry	(xmlNodePtr envNode);


/***********************************************************************
 *
 * SOAP 1.2 
 *
 **********************************************************************/
/**
 * xmlSecSoap12FaultCode:
 * @xmlSecSoap12FaultCodeUnknown:		The fault code is not available.
 * @xmlSecSoap12FaultCodeVersionMismatch:	The faulting node found an 
 *						invalid element information 
 *						item instead of the expected 
 *						Envelope element information item. 
 * @xmlSecSoap12FaultCodeMustUnderstand:	An immediate child element 
 *						information item of the SOAP 
 *						Header element information item 
 *						targeted at the faulting node 
 *						that was not understood by the 
 *						faulting node contained a SOAP 
 *						mustUnderstand attribute 
 *						information item with a value of "true"
 * @xmlSecSoap12FaultCodeDataEncodingUnknown:	A SOAP header block or SOAP 
 *						body child element information 
 *						item targeted at the faulting 
 *						SOAP node is scoped with a data 
 *						encoding that the faulting node 
 *						does not support.
 * @xmlSecSoap12FaultCodeSender:		The message was incorrectly 
 *						formed or did not contain the 
 *						appropriate information in order 
 *						to succeed. 
 * @xmlSecSoap12FaultCodeReceiver:		The message could not be processed 
 *						for reasons attributable to the 
 *						processing of the message rather 
 *						than to the contents of the 
 *						message itself. 
 * 
 * The values of the <Value> child element information item of the 
 * <Code> element information item (http://www.w3.org/TR/2003/REC-soap12-part1-20030624/#faultcodes).
 */
typedef enum {
    xmlSecSoap12FaultCodeUnknown = 0,
    xmlSecSoap12FaultCodeVersionMismatch,
    xmlSecSoap12FaultCodeMustUnderstand,
    xmlSecSoap12FaultCodeDataEncodingUnknown,
    xmlSecSoap12FaultCodeSender,
    xmlSecSoap12FaultCodeReceiver
} xmlSecSoap12FaultCode; 

XMLSEC_EXPORT xmlNodePtr	xmlSecSoap12CreateEnvelope	(xmlDocPtr doc);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap12EnsureHeader	(xmlNodePtr envNode);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap12AddBodyEntry	(xmlNodePtr envNode,
								 xmlNodePtr entryNode);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap12AddFaultEntry	(xmlNodePtr envNode,
								 xmlSecSoap12FaultCode faultCode,
								 const xmlChar* faultReasonText,
								 const xmlChar* faultReasonLang,
								 const xmlChar* faultNodeURI,
								 const xmlChar* faultRole);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap12AddFaultSubcode	(xmlNodePtr faultNode,
								 const xmlChar* subCodeHref,
								 const xmlChar* subCodeName);								 
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap12AddFaultReasonText	(xmlNodePtr faultNode,
								 const xmlChar* faultReasonText,
								 const xmlChar* faultReasonLang);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap12AddFaultDetailEntry	(xmlNodePtr faultNode,
								 xmlNodePtr detailEntryNode);
XMLSEC_EXPORT int		xmlSecSoap12CheckEnvelope	(xmlNodePtr envNode);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap12GetHeader		(xmlNodePtr envNode);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap12GetBody		(xmlNodePtr envNode);
XMLSEC_EXPORT xmlSecSize	xmlSecSoap12GetBodyEntriesNumber(xmlNodePtr envNode);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap12GetBodyEntry	(xmlNodePtr envNode,
								 xmlSecSize pos);
XMLSEC_EXPORT xmlNodePtr	xmlSecSoap12GetFaultEntry	(xmlNodePtr envNode);

								 
#endif /* XMLSEC_NO_SOAP */


#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __XMLSEC_SOAP_H__ */