You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by mi...@apache.org on 2008/05/13 05:09:51 UTC

svn commit: r655719 [3/3] - in /webservices/rampart/trunk/c/include: saml.h saml_req.h

Modified: webservices/rampart/trunk/c/include/saml_req.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/saml_req.h?rev=655719&r1=655718&r2=655719&view=diff
==============================================================================
--- webservices/rampart/trunk/c/include/saml_req.h (original)
+++ webservices/rampart/trunk/c/include/saml_req.h Mon May 12 20:09:51 2008
@@ -1,1180 +1,1180 @@
-/*
- * 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.
- */
-
-#ifndef SAML_REQ_H
-#define SAML_REQ_H
-
-#include <saml.h>
-#include <oxs_xml_signature.h>
-#include <oxs_sign_ctx.h>
-#include <oxs_xml_key_processor.h>
-#include <oxs_utility.h>
-#include <oxs_transforms_factory.h>
-#include <oxs_xml_key_info_builder.h>
-#include <oxs_key_mgr.h>
-#include <oxs_transform.h>
-#include <oxs_x509_cert.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#define SAML_REQUEST_ID        "RequestID"
-#define SAML_SIGNATURE        "Signature"
-#define SAML_SUBJECT_QUERY    "SubjectQuery"
-#define SAML_ATTRIBUTE_QUERY  "AttributeQuery"
-#define SAML_AUTHENTICATION_QUERY    "AuthenticationQuery"
-#define SAML_AUTHORIZATION_DECISION_QUERY    "AuthorizationDecisionQuery"
-#define SAML_ASSERTION_ID_REF        "AssertionIDReference"
-#define SAML_ASSERTION_ARTIFACT    "AssertionArtifact"
-#define SAML_RESPOND_WITH            "RespondWith"
-#define SAML_ATTRIBUTE_DESIGNATOR        "AttributeDesignator"
-#define SAML_RESPONSE_ID            "ResponceID"
-#define SAML_IN_RESPONSE_TO        "InResponseTo"
-#define SAML_RECEPIENT            "Recipient"
-#define SAML_STATUS_CODE            "StatusCode"
-#define SAML_STATUS_MESSAGE            "StatusMessage"
-#define SAML_STATUS_DETAIL        "StatusDetail"
-#define SAML_STATUS_VALUE        "Value"
-#define SAML_STATUS                "Status"
-#define SAML_PROTOCOL_NMSP			"urn:oasis:names:tc:SAML:1.0:protocol"
-#define SAML_PROTOCOL_PREFIX		"samlp"
-#define SAML_REQUEST				"Request"
-#define SAML_RESPONSE				"Response"
-
-/*A code representing the status of the corresponding request*/
-
-/*
- * saml artifact for saml passive client assertion identifiers 
- */
-typedef struct saml_artifact
-{
-	axis2_char_t *artifact; 
-}saml_artifact_t;
-
-/*
- * saml status : defines the status returned in saml response
- */
-typedef struct saml_status
-{
-    axutil_qname_t *status_value;
-    axis2_char_t *status_code;
-    axis2_char_t *status_msg;
-    axiom_node_t *status_detail;
-
-}saml_status_t;
-
-/*
- * the saml query for requesting required saml assertion
- */
-typedef struct saml_query
-{
-	axis2_char_t *type;
-	void *query;
-}saml_query_t;
-
-typedef struct saml_subject_query
-{
-    saml_subject_t *subject;
-}saml_subject_query_t;
-
-/*
- * saml authentication query : for requesting authentication details
- */
-typedef struct saml_authentication_query
-{
-    saml_subject_t *subject;
-    /* A URI reference that specifies the type of authentication that took place */
-    axis2_char_t *auth_method;
-
-}saml_authentication_query_t;
-
-/*
- * saml qttribute query : for requesting the attributes 
- */
-typedef struct saml_attr_query
-{
-    saml_subject_t *subject;
-    axis2_char_t *resource;
-    axutil_array_list_t *attr_desigs;
-}saml_attr_query_t;
-
-/*
- * saml authorization decision query : for requesting information for asserting authorization decisions  
- */
-typedef struct saml_autho_decision_query
-{
-    saml_subject_t *subject;
-    axis2_char_t *resource;
-    /* One or more saml actions*/
-    axutil_array_list_t *saml_actions;
-    saml_evidence_t *evidence;
-
-}saml_autho_decision_query_t;
-
-typedef struct saml_request
-{
-	/* unique request id*/
-    axis2_char_t *request_id;
-
-    /* major version */
-    axis2_char_t *major_version;
-
-    /* minor version */
-    axis2_char_t *minor_version;
-
-    /* time instant of the issue */
-    axutil_date_time_t *issue_instant;
-
-    /*optional*/
-    oxs_sign_ctx_t *sig_ctx;
-
-    /* An array for QNames	
-	 * specifies the type of statement the SAML relying party wants from the
-	 * SAML authority*
-	 */
-    axutil_array_list_t *saml_responds;
-
-    /*To request assrtions by means of ID one or more*/
-    axutil_array_list_t *saml_asserion_id_ref;
-
-	/* saml artifacts for saml passive client*/    
-    axutil_array_list_t *saml_artifacts;
-
-	saml_query_t *query;
-
-	/*reference to the saml request node*/
-	axiom_node_t *original_xml;
-
-	/*reference to the saml response node*/
-	axiom_node_t *signature;
-}saml_request_t;
-
-typedef struct saml_response
-{
-	/*sunique saml response id*/
-    axis2_char_t *response_id;
-
-	/*major version*/
-    axis2_char_t *major_version;
-
-	/*minor version*/
-    axis2_char_t *minor_version;
-
-    /*saml request party*/
-    axis2_char_t *recepient;
-
-	/*saml request identifier for the specific saml response*/
-    axis2_char_t  *request_response_id;
-
-	/*time instant for the respone*/
-    axutil_date_time_t *issue_instant;
-
-	/* information about the signing */
-    oxs_sign_ctx_t *sig_ctx;
-
-    saml_status_t *status;
-
-    axutil_array_list_t *saml_assertions;
-
-	/* reference to the saml response node*/
-	axiom_node_t *original_xml;
-
-	/*reference to the saml signature node*/
-	axiom_node_t *signature;
-}saml_response_t;
-
-/* request */
-
-/* 
- *  Creates a saml request.
- *  @param env pointer to environment struct
- */
-AXIS2_EXTERN saml_request_t *AXIS2_CALL 
-saml_request_create(axutil_env_t *env);
-
-/* 
- * Free a saml request
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN void AXIS2_CALL 
-saml_request_free(saml_request_t *request, axutil_env_t *env);
-
-/* 
-* Build the saml request from a axiom node.
-* @param request request to be populated
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_build(saml_request_t *request, axiom_node_t *node, 
-				   axutil_env_t *env);
-
-/* 
-* Serialize a saml request to a om node.
-* @param request request to be serialized
-* @param parent if specified created node will be a child of this  
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
-saml_request_to_om(saml_request_t *request, axiom_node_t *parent, 
-				   axutil_env_t *env); 
-/*
-* Return the unique ID of the request. 
-* @param request SAML Request object
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
-saml_request_get_id(saml_request_t *request, axutil_env_t *env);
-
-/* 
- * Set the information required to sign the message.
- * @param assertion SAML Request object
- * @param env pointer to environment struct
- * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_set_signature(saml_request_t *request, axutil_env_t *env, 
-						   oxs_sign_ctx_t *sig_ctx);
-/* 
- * Set the default information required to sign the message. 
- * @param response SAML response object
- * @param env pointer to environment struct
- * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
- * oxs_sign_ctx should contain the key info and the certification info.
- * all other information are set to default settings.
- */
-AXIS2_EXTERN void AXIS2_CALL 
-saml_request_set_default_signature(saml_request_t *request, axutil_env_t *env, 
-								   oxs_sign_ctx_t *sig_ctx);
-/* 
- * Remove the information set for signing or verifying the Request.
- * @param assertion SAML Request object
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_unsign(saml_request_t *request, axutil_env_t *env);
-
-/* 
- * Sign the Request using the information set in the 
- * saml_request_set_default_signature or saml_request_set_signature method.
- * @param assertion SAML Request object
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_sign(saml_request_t *request, axiom_node_t *node, axutil_env_t *env);
-
-/* 
- * Set the minor version of the Request
- * @param request SAML Request object
- * @param env pointer to environment struct
- * @param version minor version number
- */ 
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_set_minor_version(saml_request_t *request, axutil_env_t *env,
-							   int version);
-/* 
- * Set the major version of the assertion
- * @param assertion SAML Request object
- * @param env pointer to environment struct
- * @param version major version number
- */ 
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_set_major_version(saml_request_t *request, 
-							   axutil_env_t *env, int version);
-/* 
- * Set the issue instant of the Request
- * @param request SAML Request object
- * @param env pointer to environment struct
- * @param time time instant of the saml issue
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_set_issue_instant(saml_request_t *request, 
-							   axutil_env_t *env, axutil_date_time_t *date_time);
-
-/*
- * Return the time instant of the Request
- * @param request SAML Request object
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL 
-saml_request_get_issue_instant(saml_request_t *request, axutil_env_t *ev);
-
-/*
- * Set the set of qname respond with references in Request
- * @param request SAML Request object
- * @param responds list of qname objects
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_set_respond_withs(saml_request_t *request, 
-							   axutil_env_t *env, axutil_array_list_t *responds);
-
-/*
- * Return the set of qname respond with references in Request
- * @param request SAML Request object
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
-saml_request_get_respond_withs(saml_request_t *request, axutil_env_t *env);
-
-/*
- * Add a qname object respond with to the Request
- * @param request SAML Request object
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_add_respond_with(saml_request_t *request, axutil_env_t *env,
-							  axutil_qname_t *respond);
-/*
- * Remove a qname object at the specified index
- * @param request SAML Request object
- * @index the specific index to remove
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_remove_respond_with(saml_request_t *request, axutil_env_t *env, int index);
-
-/*
- * Set the SAML Query of SAML Request.
- * @param request SAML Request object
- * @param query SAML Query object
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_set_query(saml_request_t *request, axutil_env_t *env, saml_query_t *query);
-
-/*
- * Returns the SAML Query of SAML Request.
- * @param request SAML Request
- * @param env pointer to the environemt struct
- */
-AXIS2_EXTERN saml_query_t* AXIS2_CALL 
-saml_request_get_query(saml_request_t *request, axutil_env_t *env);
-
-/*
- * Set the set of Identifer References of the Request.
- * @param request SAML Request
- * @param id_refs list of Identifier references
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_set_id_refs(saml_request_t *request, axutil_env_t *env,
-						 axutil_array_list_t *id_refs);
-/*
- * Returne the list of Identifier references of the Request
- * @param request SAML Request
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
-saml_request_get_id_refs(saml_request_t *request, axutil_env_t *env);
-
-/*
- * Add an Id Reference to the SAML Request.
- * @param request SAML Request
- * @param id_references list of Id references
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_add_id_refs(saml_request_t *request, axutil_env_t *env, 
-						 axis2_char_t *id_reference);
-/*
- * Remove an Id Reference at the specified index.
- * @param request SAML Request
- * @param index the specific to remove
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_remove_id_refs(saml_request_t *request, 
-							axutil_env_t *env, int index);
-/*
- * Set the set of SAML Assertion Artifact objects of the Request.
- * @param request SAML Request
- * @param artifacts list of SAML Artifact objects
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_set_artifacts(saml_request_t *request, 
-						   axutil_env_t *env, axutil_array_list_t *artifacts);
-/*
- * Returns the list of SAML Assertion Artifacts of the Request
- * @param request SAML Request
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN axutil_array_list_t*  AXIS2_CALL 
-saml_request_get_artifacts(saml_request_t *request, axutil_env_t *env);
-
-/*
- * Add a SAML Assertion Artifact to the Request
- * @param request SAML Request
- * @param artifact SAML Assertion Artifact
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_add_artifact(saml_request_t *request, axutil_env_t *env,
-						  saml_artifact_t *artifact);
-/* 
- * Remove a SAML Assertion Artifact at the specified index
- * @param request SAML Request
- * @param index specific index to remove
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_request_remove_artifact(saml_request_t *request, axutil_env_t *env,
-							 int index);
-/*
- * Check the validity of the recieved Request
- * @param request SAML Request
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN axis2_bool_t AXIS2_CALL 
-saml_request_check_validity(saml_request_t *request, axutil_env_t *env);
-
-/* 
- *  Creates a saml Response.
- *  @param env pointer to environment struct
- */
-AXIS2_EXTERN saml_response_t* saml_response_create(axutil_env_t *env);
-
-/* 
- * Free a saml Response
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN void saml_response_free(saml_response_t *response, 
-									 axutil_env_t *env);
-/* 
-* Build the saml response from a axiom node.
-* @param request response to be populated
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_build(saml_response_t *response, axiom_node_t *node, 
-					axutil_env_t *env);
-/* 
-* Serialize a saml response to a om node.
-* @param request response to be serialized
-* @param parent if specified created node will be a child of this  
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
-saml_response_to_om(saml_response_t *response, axiom_node_t *parent, 
-					axutil_env_t *env);
-/*
-* Returns the unique ID of the response. 
-* @param request SAML response object
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
-saml_response_get_id(saml_response_t *response, axutil_env_t *env);
-
-/* 
- * Set the information required to sign the message.
- * @param assertion SAML response object
- * @param env pointer to environment struct
- * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_set_signature(saml_response_t *response, 
-							axutil_env_t *env, oxs_sign_ctx_t *sig_ctx);
-
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_unset_signature(saml_response_t *response, axutil_env_t *env);
-
-/* 
- * Sign the response using the information set in the 
- * saml_response_set_default_signature or saml_response_set_signature method.
- * @param response SAML response object
- * @param node axiom node to of the response
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_sign(saml_response_t *response, axiom_node_t *node, 
-				   axutil_env_t *env);
-
-/* 
- * Set the default information required to sign the message. 
- * @param response SAML response object
- * @param env pointer to environment struct
- * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
- * oxs_sign_ctx should contain the key info and the certification info.
- * all other information are set to default settings.
- */
-AXIS2_EXTERN void AXIS2_CALL 
-saml_response_set_default_signature(saml_response_t *response, 
-									axutil_env_t *env, oxs_sign_ctx_t *sig_ctx);
-
-/* 
- * Set the minor version of the response
- * @param response SAML response object
- * @param env pointer to environment struct
- * @param version minor version number
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_set_minor_version(saml_response_t *response, 
-								axutil_env_t *env, int version);
-/* 
- * Set the major version of the response
- * @param response SAML response object
- * @param env pointer to environment struct
- * @param version major version number
- */ 
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_set_major_version(saml_response_t *response, 
-								axutil_env_t *env, int version);
-/* 
- * Set the issue instant of the response
- * @param response SAML response object
- * @param env pointer to environment struct
- * @param time time instant of the saml issue
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_set_issue_instant(saml_response_t *response, 
-								axutil_env_t *env, axutil_date_time_t *date_time);
-/*
- * Returns the time instant of the response
- * @param response SAML response object
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN  axutil_date_time_t* AXIS2_CALL 
-saml_response_get_issue_instant(saml_response_t *response, axutil_env_t *ev);
-
-/*
- * Set the SAML recepient of the response
- * @param response SAML response
- * @param recepient SAML recepient identifier
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_set_recepient(saml_response_t *response, axutil_env_t *env,
-							axis2_char_t *recepient);
-/*
- * Returns the SAML response recepient.
- * @param response SAML response
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
-saml_response_get_recepient(saml_response_t *response, axutil_env_t *env);
-
-/*
- * Set the status of the SAML response.
- * @param response SAML response
- * @param status SAML status
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_set_status(saml_response_t *response, axutil_env_t *env,
-						 saml_status_t *status);
-/*
- * Returns the status of the recieved SAML response
- * @param response SAML response
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN saml_status_t* AXIS2_CALL 
-saml_response_get_status(saml_response_t *response, axutil_env_t *env);
-
-/*
- * Set the set of SAML Assertion of the SAML response
- * @param response SAML response
- * @param assertions list of SAML Assertions
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_set_assertions(saml_response_t *response, 
-							 axutil_env_t *env, axutil_array_list_t *assertions);
-
-/*
- * Returns the set of SAML Assertions of response
- * @param response SAML response
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
-saml_response_get_assertions(saml_response_t *response, axutil_env_t *env);
-
-/*
- * Add a SAML assertion to the response
- * @param response SAML response
- * @param assertion SAML Assertion
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_add_assertion(saml_response_t *response, axutil_env_t *env,
-							saml_assertion_t *assertion);
-
-/* 
- * Remove a SAML assertion at the specified index
- * @param response SAML response
- * @param index the specific index to remove
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_remove_assertion(saml_response_t *response, axutil_env_t *env, int index);
-
-/*
- * Set the request reference of the SAML response
- * @param response SAML response
- * @param request_response request reference
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_response_set_in_reponses_to(saml_response_t *response, 
-								 axutil_env_t *env, axis2_char_t *request_response);
-
-/* 
- *  Creates a saml query.
- *  @param env pointer to environment struct
- */
-AXIS2_EXTERN saml_query_t* AXIS2_CALL 
-saml_query_create(axutil_env_t *env);
-
-/* 
- * Build the saml query from an axiom node.
- * @param query SAML query to be populated
- * @param node axiom node of SAML query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_query_build(saml_query_t *query, axiom_node_t *node, axutil_env_t *env);
-
-
-/* 
-* Serialize a saml query to a om node.
-* @param query SAML response to be serialized
-* @param parent if specified created node will be a child of this  
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
-saml_query_to_om(saml_query_t *query, axiom_node_t *parent, axutil_env_t *env);
-
-/* 
- * Free a saml query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN void AXIS2_CALL 
-saml_query_free(saml_query_t *query, axutil_env_t *env);
-
-/* 
- *  Creates a saml subject query.
- *  @param env pointer to environment struct
- */
-
-AXIS2_EXTERN saml_subject_query_t* AXIS2_CALL 
-saml_subject_query_create(axutil_env_t *env);
-
-/* 
- * Free a saml subject query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN void AXIS2_CALL 
-saml_subject_query_free(saml_subject_query_t* subject_query, axutil_env_t *env);
-
-/* 
- * Build the saml subject query from an axiom node.
- * @param query SAML subject query to be populated
- * @param node axiom node of SAML subject query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_subject_query_build(saml_subject_query_t* subject_query, 
-						 axiom_node_t *node, axutil_env_t *env);
-
-/* 
-* Serialize a saml subject query to a om node.
-* @param query saml subject query to be serialized
-* @param parent if specified created node will be a child of this  
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
-saml_subject_query_to_om(saml_subject_query_t *subject_query, 
-						 axiom_node_t *parent, axutil_env_t *env);
-/* 
- *  Creates a saml authentication query.
- *  @param env pointer to environment struct
- */
-AXIS2_EXTERN saml_authentication_query_t* AXIS2_CALL 
-saml_authentication_query_create(axutil_env_t *env);
-
-/* 
- * Free a saml authentication query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN void AXIS2_CALL 
-saml_authentication_query_free(saml_authentication_query_t *authentication_query, 
-							   axutil_env_t *env);
-/* 
- * Build the saml authentication query from an axiom node.
- * @param query SAML authentication query to be populated
- * @param node axiom node of SAML query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_authentication_query_build(saml_authentication_query_t* authentication_query, 
-								axiom_node_t *node, axutil_env_t *env);
-
-/* 
-* Serialize a saml authentication query to a om node.
-* @param authentication_query saml authentication query to be serialized
-* @param parent if specified created node will be a child of this  
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
-saml_authentication_query_to_om(saml_authentication_query_t *authentication_query, 
-								axiom_node_t *parent, axutil_env_t *env);
-
-/*
- * Set authetication method of saml authentication query.
- * @param authentication_query saml authentication query
- * @param env pointer to environment struct
- * @param authentication_mtd required authentication method in the secifying query
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_auth_query_set_authentication_method(
-	saml_authentication_query_t *authentication_query,
-	axutil_env_t *env, 
-	axis2_char_t *authentication_mtd);
-
-/*
- * Returns the authentication method of the saml authentication query.
- * @param authentication_query saml authentication query
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
-saml_auth_query_get_authentication_method(
-	saml_authentication_query_t *authentication_query,
-	axutil_env_t *env);
-
-/* 
- *  Creates a saml attribute query.
- *  @param env pointer to environment struct
- */
-AXIS2_EXTERN saml_attr_query_t* AXIS2_CALL 
-saml_attr_query_create(axutil_env_t *env);
-
-/* 
- * Free a saml attribute query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN void AXIS2_CALL
-saml_attr_query_free(saml_attr_query_t* attribute_query, axutil_env_t *env);
-
-/* 
- * Build the saml attribute query from an axiom node.
- * @param attribute_query SAML attribute query to be populated
- * @param node axiom node of SAML query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_attr_query_build(saml_attr_query_t* attribute_query, 
-					  axiom_node_t *node, axutil_env_t *env);
-
-/* 
-* Serialize a saml attribute to a om node.
-* @param attribute_query saml attribute query to be serialized
-* @param parent if specified created node will be a child of this  
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
-saml_attr_query_to_om(saml_attr_query_t *attribute_query, 
-					  axiom_node_t *parent, axutil_env_t *env);
-
-/*
- * Returns the saml subject of the saml query.
- * @param query saml query
- * @param env pointer to the environment struct
- */
-AXIS2_EXTERN saml_subject_t* AXIS2_CALL 
-saml_query_get_subject(saml_query_t* query,
-						axutil_env_t *env);
-/*
- * Set the subject of a saml query.
- * @param query saml query
- * @param env pointer to the environment struct
- * @param subject saml subject
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_query_set_subject(saml_query_t *query, axutil_env_t *env,
-					   saml_subject_t *subject);
-/*
- * Set the type of the saml query.
- * @param query saml query
- * @param env pointer to the environment struct
- * @param type type of the saml query
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_query_set_type(saml_query_t *query, axutil_env_t *env, axis2_char_t *type);
-
-/*
- * Set the saml specific query object of saml query
- * @param query saml query
- * @param spec_query specific query object to be set as the saml query
- * @param type the type of the specifying query
- * spec_query can be any type of query defined in saml queries.
- * the specified saml queries, saml subject query, attribute query, 
- * authentication query, athorization decision query
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_query_set_query(saml_query_t *query, axutil_env_t *env,
-					 void *spec_query, 
-					 axis2_char_t *type);
-
-/*
- * Set the resource required of saml attribute query.
- * @param attr_query saml attribute query
- * @param env pointer to environment struct
- * @param resource specific saml resource
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_attr_query_set_resource(saml_attr_query_t *attr_query, 
-							 axutil_env_t *env, axis2_char_t *resource);
-
-/*
- * Returns the saml resource required of saml attribute query.
- * @param attr_query saml attribute query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
-saml_attr_query_get_resource(saml_attr_query_t *attr_query, axutil_env_t *env);
-
-/*
- * Set a set of attribute designators of the saml attribute query.
- * @param env pointer to environment struct
- * @param saml_designators list of saml attribute designators
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_attr_query_set_designators(saml_attr_query_t *attr_query,  
-								axutil_env_t *env,
-								axutil_array_list_t *saml_designators);
-/*
- * Returns the set of attribute designators of saml attribute query.
- * @param attr_query saml attribute query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
-saml_attr_query_get_designators(saml_attr_query_t *attr_query, axutil_env_t *env);
-
-/*
- * Add a saml attribute designator to the saml attribute query.
- * @param attr_query saml attribute query
- * @param env pointer to environment struct
- * @param desig saml attribute designator object
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_attr_query_add_designators(saml_attr_query_t *attr_query, axutil_env_t *env,
-								saml_attr_desig_t *desig);
-/*
- * Remove saml attribute designator at the specified index.
- * @param attr_query saml attribute query
- * @param env pointer to environment struct
- * @param index the specified index to remove
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_attr_query_remove_designator(saml_attr_query_t *attr_query, axutil_env_t *env,
-								  int index);
-
-/* 
- *  Creates a saml authorization decision query.
- *  @param env pointer to environment struct
- */
-AXIS2_EXTERN saml_autho_decision_query_t* AXIS2_CALL 
-saml_autho_decision_query_create(axutil_env_t *env);
-
-/* 
- * Free a saml authorizaion decision query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN void AXIS2_CALL 
-saml_autho_decision_query_free(saml_autho_decision_query_t* autho_decision_query, 
-							   axutil_env_t *env);
-
-/* 
- * Build the saml authorization decision query from an axiom node.
- * @param query SAML authorization decision query to be populated
- * @param node axiom node of SAML authorization decision query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_autho_decision_query_build(saml_autho_decision_query_t* autho_decision_query, 
-								axiom_node_t *node, axutil_env_t *env);
-
-/* 
-* Serialize a saml authorization decision query to a om node.
-* @param autho_decision_query authorization decision query to be serialized
-* @param parent if specified created node will be a child of this  
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
-saml_autho_decision_query_to_om(saml_autho_decision_query_t *autho_decision_query, 
-								axiom_node_t *parent, axutil_env_t *env);
-/*
- * Set the resource required of saml authorization decision query.
- * @param autho_dec_query saml authorization decision query
- * @param env pointer to environment struct
- * @param resource saml resource required
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_autho_decision_query_set_resource(
-			saml_autho_decision_query_t *autho_dec_query,
-			axutil_env_t *env,
-			axis2_char_t *resource);
-/*
- * Returns the saml resource of saml authorization decision query.
- * @param autho_dec_query saml authorization decision query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
-saml_autho_decision_query_get_resource(saml_autho_decision_query_t *autho_dec_query,
-														 axutil_env_t *env);
-/*
- * Set a set of action of saml authorization decision query.
- * @param autho_dec_query saml authorization decision query
- * @param env pointer to the environment struct
- * @param actions list of saml action objects
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_autho_decision_query_set_actions(
-			saml_autho_decision_query_t *autho_dec_query,
-			axutil_env_t *env,
-			axutil_array_list_t *actions);
-/*
- * Returns the set of actions of saml authorization decision query.
- * @param autho_dec_query saml authorization decision query
- * @param env envionment struct
- */
-AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
-saml_autho_decision_query_get_actions(
-			saml_autho_decision_query_t *autho_dec_query,
-			axutil_env_t *env);
-														
-/*
- * Add a saml action to saml authorization decision query.
- * @param autho_dec_query saml authorization decision query
- * @param env pointer to environment struct
- * @param action saml action object
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_autho_decision_query_add_action(
-			saml_autho_decision_query_t *autho_dec_query,
-			axutil_env_t *env,
-			saml_action_t *action);
-/*
- * Remove a saml action at the the specified index.
- * @param autho_dec_query saml authorization decision query
- * @param env pointer to environment struct
- * @param index specified index to remove
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_autho_decision_remove_action(saml_autho_decision_query_t *autho_dec_query,
-								  axutil_env_t *env,
-								  int index);
-/*
- * Set a saml evidence of the saml authorization decision query.
- * @param autho_dec_query saml authorization decision query
- * @param env pointer to environment struct
- * @param evidence saml evidence object
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_autho_decision_query_set_evidence(
-			saml_autho_decision_query_t *autho_dec_query,
-			axutil_env_t *env,
-			saml_evidence_t *evidence);
-/*
- * Returns the saml evidence of saml authorization decision query.
- * @param autho_dec_query saml authorization decision query
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN saml_evidence_t* AXIS2_CALL 
-saml_autho_decision_query_get_evidence(
-			saml_autho_decision_query_t *autho_dec_query,
-			axutil_env_t *env);
-	
-/* 
- * Build the saml status from an axiom node.
- * @param query SAML status to be populated
- * @param node axiom node of SAML status
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_status_build(saml_status_t *status, axiom_node_t *node, axutil_env_t *env);
-
-/* 
-* Serialize a saml status to a om node.
-* @param status saml status to be serialized
-* @param parent if specified created node will be a child of this  
-* @param env pointer to environment struct
-*/
-AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_status_to_om(saml_status_t *status, 
-														axiom_node_t *parent, 
-														axutil_env_t *env);
-
-/* 
- *  Creates a saml status.
- *  @param env pointer to environment struct
- */
-AXIS2_EXTERN saml_status_t* AXIS2_CALL 
-saml_status_create(axutil_env_t *env);
-
-/* 
- * Free a saml status
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN void 
-saml_status_free(saml_status_t *status, axutil_env_t *env);
-
-/*
- * Set the saml status value to be returned in saml status.
- * @param status saml status object
- * @param qname axutil qname object which specify saml status value
- * @param env pointer to environment struct
-*/
-AXIS2_EXTERN int AXIS2_CALL 
-saml_status_set_status_value(saml_status_t *status, 
-							 axutil_env_t *env, axutil_qname_t *qname);
-
-/*
- * Returns the saml status value of saml status.
- * @param status saml status
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN axutil_qname_t* AXIS2_CALL 
-saml_status_get_status_value(saml_status_t *status, axutil_env_t *env);
-
-/*
- * Set the status message of saml status
- * @param status saml status object
- * @param env pointer to environment struct
- * @param msg status message to be set in saml status
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_status_set_status_msg(saml_status_t *status, axutil_env_t *env,
-						   axis2_char_t *msg);
-/*
- * Set the status code of saml status object.
- * @param status saml status object
- * @param env pointer to environment struct
- * @param code status code to be set in saml status
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_status_set_status_code(saml_status_t *status, axutil_env_t *env,
-							axis2_char_t *code);
-/*
- * Returns the status message of saml status.
- * @param status saml status struct
- * @env pointer to environment struct
- */
-AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
-saml_status_get_status_msg(saml_status_t *status, axutil_env_t *env);
-/* 
- * Set the saml status detail of saml status.
- * @param status saml status struct
- * @param det axiom node struct to be set as saml status detail
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_status_set_status_detail(saml_status_t *status, axiom_node_t *det, 
-							  axutil_env_t *env);
-/*
- * Returns the saml status detail node of saml status
- * @param status saml status struct
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
-saml_status_get_status_detail(saml_status_t *status, axutil_env_t *env);
-
-/* 
- *  Creates a saml artifact.
- *  @param env pointer to environment struct
- */
-AXIS2_EXTERN saml_artifact_t* AXIS2_CALL 
-saml_artifact_create(axutil_env_t *env);
-
-/* 
- * Free a saml artifact
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN void AXIS2_CALL 
-saml_artifact_free(saml_artifact_t *artifact, axutil_env_t *env);
-
-/*
- * Returns the data value of saml artifact.
- * @param artifact saml artifact srtuct
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
-saml_artifact_get_data(saml_artifact_t *artifact, axutil_env_t *env);
-
-/*
- * Set data value of saml artifact.
- * @param artifact saml artifact
- * @param env pointer to environment struct
- * @data data value to be set in smal artifact
- */
-AXIS2_EXTERN int AXIS2_CALL 
-saml_artifact_set_data(saml_artifact_t *artifact, axutil_env_t *env, 
-					   axis2_char_t *data);
-/*
- * Verify a signed saml response.
- * @param response saml response struct
- * @param env pointer to environement struct
- */
-AXIS2_EXTERN int AXIS2_CALL
-saml_response_signature_verify(saml_response_t *response, axutil_env_t *env);
-
-/*
- * Check whether the saml response has to sign.
- * @param response saml response struct
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL
-saml_response_is_sign_set(saml_response_t *response, axutil_env_t *env);
-
-/*
- * Check whether the recieved response is signed.
- * @param response saml response struct
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL
-saml_response_is_signed(saml_response_t *response, axutil_env_t *env);
-
-/*
- * Verify a signed saml request.
- * @param response saml request struct
- * @param env pointer to environement struct
- */
-AXIS2_EXTERN int AXIS2_CALL
-saml_request_signature_verify(saml_request_t *request, axutil_env_t *env);
-
-/*
- * Check whether the saml request has to sign.
- * @param request saml request struct
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL
-saml_request_is_sign_set(saml_request_t *request, axutil_env_t *env);
-
-/*
- * Check whether the recieved request is signed.
- * @param request saml request struct
- * @param env pointer to environment struct
- */
-AXIS2_EXTERN int AXIS2_CALL
-saml_request_is_signed(saml_request_t *request, axutil_env_t *env);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif 
-
+/*
+ * 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.
+ */
+
+#ifndef SAML_REQ_H
+#define SAML_REQ_H
+
+#include <saml.h>
+#include <oxs_xml_signature.h>
+#include <oxs_sign_ctx.h>
+#include <oxs_xml_key_processor.h>
+#include <oxs_utility.h>
+#include <oxs_transforms_factory.h>
+#include <oxs_xml_key_info_builder.h>
+#include <oxs_key_mgr.h>
+#include <oxs_transform.h>
+#include <oxs_x509_cert.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define SAML_REQUEST_ID        "RequestID"
+#define SAML_SIGNATURE        "Signature"
+#define SAML_SUBJECT_QUERY    "SubjectQuery"
+#define SAML_ATTRIBUTE_QUERY  "AttributeQuery"
+#define SAML_AUTHENTICATION_QUERY    "AuthenticationQuery"
+#define SAML_AUTHORIZATION_DECISION_QUERY    "AuthorizationDecisionQuery"
+#define SAML_ASSERTION_ID_REF        "AssertionIDReference"
+#define SAML_ASSERTION_ARTIFACT    "AssertionArtifact"
+#define SAML_RESPOND_WITH            "RespondWith"
+#define SAML_ATTRIBUTE_DESIGNATOR        "AttributeDesignator"
+#define SAML_RESPONSE_ID            "ResponceID"
+#define SAML_IN_RESPONSE_TO        "InResponseTo"
+#define SAML_RECEPIENT            "Recipient"
+#define SAML_STATUS_CODE            "StatusCode"
+#define SAML_STATUS_MESSAGE            "StatusMessage"
+#define SAML_STATUS_DETAIL        "StatusDetail"
+#define SAML_STATUS_VALUE        "Value"
+#define SAML_STATUS                "Status"
+#define SAML_PROTOCOL_NMSP			"urn:oasis:names:tc:SAML:1.0:protocol"
+#define SAML_PROTOCOL_PREFIX		"samlp"
+#define SAML_REQUEST				"Request"
+#define SAML_RESPONSE				"Response"
+
+/*A code representing the status of the corresponding request*/
+
+/*
+ * saml artifact for saml passive client assertion identifiers 
+ */
+typedef struct saml_artifact
+{
+	axis2_char_t *artifact; 
+}saml_artifact_t;
+
+/*
+ * saml status : defines the status returned in saml response
+ */
+typedef struct saml_status
+{
+    axutil_qname_t *status_value;
+    axis2_char_t *status_code;
+    axis2_char_t *status_msg;
+    axiom_node_t *status_detail;
+
+}saml_status_t;
+
+/*
+ * the saml query for requesting required saml assertion
+ */
+typedef struct saml_query
+{
+	axis2_char_t *type;
+	void *query;
+}saml_query_t;
+
+typedef struct saml_subject_query
+{
+    saml_subject_t *subject;
+}saml_subject_query_t;
+
+/*
+ * saml authentication query : for requesting authentication details
+ */
+typedef struct saml_authentication_query
+{
+    saml_subject_t *subject;
+    /* A URI reference that specifies the type of authentication that took place */
+    axis2_char_t *auth_method;
+
+}saml_authentication_query_t;
+
+/*
+ * saml qttribute query : for requesting the attributes 
+ */
+typedef struct saml_attr_query
+{
+    saml_subject_t *subject;
+    axis2_char_t *resource;
+    axutil_array_list_t *attr_desigs;
+}saml_attr_query_t;
+
+/*
+ * saml authorization decision query : for requesting information for asserting authorization decisions  
+ */
+typedef struct saml_autho_decision_query
+{
+    saml_subject_t *subject;
+    axis2_char_t *resource;
+    /* One or more saml actions*/
+    axutil_array_list_t *saml_actions;
+    saml_evidence_t *evidence;
+
+}saml_autho_decision_query_t;
+
+typedef struct saml_request
+{
+	/* unique request id*/
+    axis2_char_t *request_id;
+
+    /* major version */
+    axis2_char_t *major_version;
+
+    /* minor version */
+    axis2_char_t *minor_version;
+
+    /* time instant of the issue */
+    axutil_date_time_t *issue_instant;
+
+    /*optional*/
+    oxs_sign_ctx_t *sig_ctx;
+
+    /* An array for QNames	
+	 * specifies the type of statement the SAML relying party wants from the
+	 * SAML authority*
+	 */
+    axutil_array_list_t *saml_responds;
+
+    /*To request assrtions by means of ID one or more*/
+    axutil_array_list_t *saml_asserion_id_ref;
+
+	/* saml artifacts for saml passive client*/    
+    axutil_array_list_t *saml_artifacts;
+
+	saml_query_t *query;
+
+	/*reference to the saml request node*/
+	axiom_node_t *original_xml;
+
+	/*reference to the saml response node*/
+	axiom_node_t *signature;
+}saml_request_t;
+
+typedef struct saml_response
+{
+	/*sunique saml response id*/
+    axis2_char_t *response_id;
+
+	/*major version*/
+    axis2_char_t *major_version;
+
+	/*minor version*/
+    axis2_char_t *minor_version;
+
+    /*saml request party*/
+    axis2_char_t *recepient;
+
+	/*saml request identifier for the specific saml response*/
+    axis2_char_t  *request_response_id;
+
+	/*time instant for the respone*/
+    axutil_date_time_t *issue_instant;
+
+	/* information about the signing */
+    oxs_sign_ctx_t *sig_ctx;
+
+    saml_status_t *status;
+
+    axutil_array_list_t *saml_assertions;
+
+	/* reference to the saml response node*/
+	axiom_node_t *original_xml;
+
+	/*reference to the saml signature node*/
+	axiom_node_t *signature;
+}saml_response_t;
+
+/* request */
+
+/* 
+ *  Creates a saml request.
+ *  @param env pointer to environment struct
+ */
+AXIS2_EXTERN saml_request_t *AXIS2_CALL 
+saml_request_create(const axutil_env_t *env);
+
+/* 
+ * Free a saml request
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN void AXIS2_CALL 
+saml_request_free(saml_request_t *request, const axutil_env_t *env);
+
+/* 
+* Build the saml request from a axiom node.
+* @param request request to be populated
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_build(saml_request_t *request, axiom_node_t *node, 
+				   const axutil_env_t *env);
+
+/* 
+* Serialize a saml request to a om node.
+* @param request request to be serialized
+* @param parent if specified created node will be a child of this  
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
+saml_request_to_om(saml_request_t *request, axiom_node_t *parent, 
+				   const axutil_env_t *env); 
+/*
+* Return the unique ID of the request. 
+* @param request SAML Request object
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
+saml_request_get_id(saml_request_t *request, const axutil_env_t *env);
+
+/* 
+ * Set the information required to sign the message.
+ * @param assertion SAML Request object
+ * @param env pointer to environment struct
+ * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_set_signature(saml_request_t *request, const axutil_env_t *env, 
+						   oxs_sign_ctx_t *sig_ctx);
+/* 
+ * Set the default information required to sign the message. 
+ * @param response SAML response object
+ * @param env pointer to environment struct
+ * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
+ * oxs_sign_ctx should contain the key info and the certification info.
+ * all other information are set to default settings.
+ */
+AXIS2_EXTERN void AXIS2_CALL 
+saml_request_set_default_signature(saml_request_t *request, const axutil_env_t *env, 
+								   oxs_sign_ctx_t *sig_ctx);
+/* 
+ * Remove the information set for signing or verifying the Request.
+ * @param assertion SAML Request object
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_unsign(saml_request_t *request, const axutil_env_t *env);
+
+/* 
+ * Sign the Request using the information set in the 
+ * saml_request_set_default_signature or saml_request_set_signature method.
+ * @param assertion SAML Request object
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_sign(saml_request_t *request, axiom_node_t *node, const axutil_env_t *env);
+
+/* 
+ * Set the minor version of the Request
+ * @param request SAML Request object
+ * @param env pointer to environment struct
+ * @param version minor version number
+ */ 
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_set_minor_version(saml_request_t *request, const axutil_env_t *env,
+							   int version);
+/* 
+ * Set the major version of the assertion
+ * @param assertion SAML Request object
+ * @param env pointer to environment struct
+ * @param version major version number
+ */ 
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_set_major_version(saml_request_t *request, 
+							   const axutil_env_t *env, int version);
+/* 
+ * Set the issue instant of the Request
+ * @param request SAML Request object
+ * @param env pointer to environment struct
+ * @param time time instant of the saml issue
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_set_issue_instant(saml_request_t *request, 
+							   const axutil_env_t *env, axutil_date_time_t *date_time);
+
+/*
+ * Return the time instant of the Request
+ * @param request SAML Request object
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN axutil_date_time_t* AXIS2_CALL 
+saml_request_get_issue_instant(saml_request_t *request, const  axutil_env_t *env);
+
+/*
+ * Set the set of qname respond with references in Request
+ * @param request SAML Request object
+ * @param responds list of qname objects
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_set_respond_withs(saml_request_t *request, 
+							   const axutil_env_t *env, axutil_array_list_t *responds);
+
+/*
+ * Return the set of qname respond with references in Request
+ * @param request SAML Request object
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
+saml_request_get_respond_withs(saml_request_t *request, const axutil_env_t *env);
+
+/*
+ * Add a qname object respond with to the Request
+ * @param request SAML Request object
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_add_respond_with(saml_request_t *request, const axutil_env_t *env,
+							  axutil_qname_t *respond);
+/*
+ * Remove a qname object at the specified index
+ * @param request SAML Request object
+ * @index the specific index to remove
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_remove_respond_with(saml_request_t *request, const axutil_env_t *env, int index);
+
+/*
+ * Set the SAML Query of SAML Request.
+ * @param request SAML Request object
+ * @param query SAML Query object
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_set_query(saml_request_t *request, const axutil_env_t *env, saml_query_t *query);
+
+/*
+ * Returns the SAML Query of SAML Request.
+ * @param request SAML Request
+ * @param env pointer to the environemt struct
+ */
+AXIS2_EXTERN saml_query_t* AXIS2_CALL 
+saml_request_get_query(saml_request_t *request, const axutil_env_t *env);
+
+/*
+ * Set the set of Identifer References of the Request.
+ * @param request SAML Request
+ * @param id_refs list of Identifier references
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_set_id_refs(saml_request_t *request, const axutil_env_t *env,
+						 axutil_array_list_t *id_refs);
+/*
+ * Returne the list of Identifier references of the Request
+ * @param request SAML Request
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
+saml_request_get_id_refs(saml_request_t *request, const axutil_env_t *env);
+
+/*
+ * Add an Id Reference to the SAML Request.
+ * @param request SAML Request
+ * @param id_references list of Id references
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_add_id_refs(saml_request_t *request, const axutil_env_t *env, 
+						 axis2_char_t *id_reference);
+/*
+ * Remove an Id Reference at the specified index.
+ * @param request SAML Request
+ * @param index the specific to remove
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_remove_id_refs(saml_request_t *request, 
+							const axutil_env_t *env, int index);
+/*
+ * Set the set of SAML Assertion Artifact objects of the Request.
+ * @param request SAML Request
+ * @param artifacts list of SAML Artifact objects
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_set_artifacts(saml_request_t *request, 
+						   const axutil_env_t *env, axutil_array_list_t *artifacts);
+/*
+ * Returns the list of SAML Assertion Artifacts of the Request
+ * @param request SAML Request
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN axutil_array_list_t*  AXIS2_CALL 
+saml_request_get_artifacts(saml_request_t *request, const axutil_env_t *env);
+
+/*
+ * Add a SAML Assertion Artifact to the Request
+ * @param request SAML Request
+ * @param artifact SAML Assertion Artifact
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_add_artifact(saml_request_t *request, const axutil_env_t *env,
+						  saml_artifact_t *artifact);
+/* 
+ * Remove a SAML Assertion Artifact at the specified index
+ * @param request SAML Request
+ * @param index specific index to remove
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_request_remove_artifact(saml_request_t *request, const axutil_env_t *env,
+							 int index);
+/*
+ * Check the validity of the recieved Request
+ * @param request SAML Request
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL 
+saml_request_check_validity(saml_request_t *request, const axutil_env_t *env);
+
+/* 
+ *  Creates a saml Response.
+ *  @param env pointer to environment struct
+ */
+AXIS2_EXTERN saml_response_t* saml_response_create(const axutil_env_t *env);
+
+/* 
+ * Free a saml Response
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN void saml_response_free(saml_response_t *response, 
+									 const axutil_env_t *env);
+/* 
+* Build the saml response from a axiom node.
+* @param request response to be populated
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_build(saml_response_t *response, axiom_node_t *node, 
+					const axutil_env_t *env);
+/* 
+* Serialize a saml response to a om node.
+* @param request response to be serialized
+* @param parent if specified created node will be a child of this  
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
+saml_response_to_om(saml_response_t *response, axiom_node_t *parent, 
+					const axutil_env_t *env);
+/*
+* Returns the unique ID of the response. 
+* @param request SAML response object
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
+saml_response_get_id(saml_response_t *response, const axutil_env_t *env);
+
+/* 
+ * Set the information required to sign the message.
+ * @param assertion SAML response object
+ * @param env pointer to environment struct
+ * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_set_signature(saml_response_t *response, 
+							const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx);
+
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_unset_signature(saml_response_t *response, const axutil_env_t *env);
+
+/* 
+ * Sign the response using the information set in the 
+ * saml_response_set_default_signature or saml_response_set_signature method.
+ * @param response SAML response object
+ * @param node axiom node to of the response
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_sign(saml_response_t *response, axiom_node_t *node, 
+				   const axutil_env_t *env);
+
+/* 
+ * Set the default information required to sign the message. 
+ * @param response SAML response object
+ * @param env pointer to environment struct
+ * @param sign_ctx oxs_sign_ctx_t object which contains the sign information
+ * oxs_sign_ctx should contain the key info and the certification info.
+ * all other information are set to default settings.
+ */
+AXIS2_EXTERN void AXIS2_CALL 
+saml_response_set_default_signature(saml_response_t *response, 
+									const axutil_env_t *env, oxs_sign_ctx_t *sig_ctx);
+
+/* 
+ * Set the minor version of the response
+ * @param response SAML response object
+ * @param env pointer to environment struct
+ * @param version minor version number
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_set_minor_version(saml_response_t *response, 
+								const axutil_env_t *env, int version);
+/* 
+ * Set the major version of the response
+ * @param response SAML response object
+ * @param env pointer to environment struct
+ * @param version major version number
+ */ 
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_set_major_version(saml_response_t *response, 
+								const axutil_env_t *env, int version);
+/* 
+ * Set the issue instant of the response
+ * @param response SAML response object
+ * @param env pointer to environment struct
+ * @param time time instant of the saml issue
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_set_issue_instant(saml_response_t *response, 
+								const axutil_env_t *env, axutil_date_time_t *date_time);
+/*
+ * Returns the time instant of the response
+ * @param response SAML response object
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN  axutil_date_time_t* AXIS2_CALL 
+saml_response_get_issue_instant(saml_response_t *response, const axutil_env_t *env);
+
+/*
+ * Set the SAML recepient of the response
+ * @param response SAML response
+ * @param recepient SAML recepient identifier
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_set_recepient(saml_response_t *response, const axutil_env_t *env,
+							axis2_char_t *recepient);
+/*
+ * Returns the SAML response recepient.
+ * @param response SAML response
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
+saml_response_get_recepient(saml_response_t *response, const axutil_env_t *env);
+
+/*
+ * Set the status of the SAML response.
+ * @param response SAML response
+ * @param status SAML status
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_set_status(saml_response_t *response, const axutil_env_t *env,
+						 saml_status_t *status);
+/*
+ * Returns the status of the recieved SAML response
+ * @param response SAML response
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN saml_status_t* AXIS2_CALL 
+saml_response_get_status(saml_response_t *response, const axutil_env_t *env);
+
+/*
+ * Set the set of SAML Assertion of the SAML response
+ * @param response SAML response
+ * @param assertions list of SAML Assertions
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_set_assertions(saml_response_t *response, 
+							 const axutil_env_t *env, axutil_array_list_t *assertions);
+
+/*
+ * Returns the set of SAML Assertions of response
+ * @param response SAML response
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
+saml_response_get_assertions(saml_response_t *response, const axutil_env_t *env);
+
+/*
+ * Add a SAML assertion to the response
+ * @param response SAML response
+ * @param assertion SAML Assertion
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_add_assertion(saml_response_t *response, const axutil_env_t *env,
+							saml_assertion_t *assertion);
+
+/* 
+ * Remove a SAML assertion at the specified index
+ * @param response SAML response
+ * @param index the specific index to remove
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_remove_assertion(saml_response_t *response, const axutil_env_t *env, int index);
+
+/*
+ * Set the request reference of the SAML response
+ * @param response SAML response
+ * @param request_response request reference
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_response_set_in_reponses_to(saml_response_t *response, 
+								 const axutil_env_t *env, axis2_char_t *request_response);
+
+/* 
+ *  Creates a saml query.
+ *  @param env pointer to environment struct
+ */
+AXIS2_EXTERN saml_query_t* AXIS2_CALL 
+saml_query_create(const axutil_env_t *env);
+
+/* 
+ * Build the saml query from an axiom node.
+ * @param query SAML query to be populated
+ * @param node axiom node of SAML query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_query_build(saml_query_t *query, axiom_node_t *node, const axutil_env_t *env);
+
+
+/* 
+* Serialize a saml query to a om node.
+* @param query SAML response to be serialized
+* @param parent if specified created node will be a child of this  
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
+saml_query_to_om(saml_query_t *query, axiom_node_t *parent, const axutil_env_t *env);
+
+/* 
+ * Free a saml query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN void AXIS2_CALL 
+saml_query_free(saml_query_t *query, const axutil_env_t *env);
+
+/* 
+ *  Creates a saml subject query.
+ *  @param env pointer to environment struct
+ */
+
+AXIS2_EXTERN saml_subject_query_t* AXIS2_CALL 
+saml_subject_query_create(const axutil_env_t *env);
+
+/* 
+ * Free a saml subject query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN void AXIS2_CALL 
+saml_subject_query_free(saml_subject_query_t* subject_query, const axutil_env_t *env);
+
+/* 
+ * Build the saml subject query from an axiom node.
+ * @param query SAML subject query to be populated
+ * @param node axiom node of SAML subject query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_subject_query_build(saml_subject_query_t* subject_query, 
+						 axiom_node_t *node, const axutil_env_t *env);
+
+/* 
+* Serialize a saml subject query to a om node.
+* @param query saml subject query to be serialized
+* @param parent if specified created node will be a child of this  
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
+saml_subject_query_to_om(saml_subject_query_t *subject_query, 
+						 axiom_node_t *parent, const axutil_env_t *env);
+/* 
+ *  Creates a saml authentication query.
+ *  @param env pointer to environment struct
+ */
+AXIS2_EXTERN saml_authentication_query_t* AXIS2_CALL 
+saml_authentication_query_create(const axutil_env_t *env);
+
+/* 
+ * Free a saml authentication query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN void AXIS2_CALL 
+saml_authentication_query_free(saml_authentication_query_t *authentication_query, 
+							   const axutil_env_t *env);
+/* 
+ * Build the saml authentication query from an axiom node.
+ * @param query SAML authentication query to be populated
+ * @param node axiom node of SAML query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_authentication_query_build(saml_authentication_query_t* authentication_query, 
+								axiom_node_t *node, const axutil_env_t *env);
+
+/* 
+* Serialize a saml authentication query to a om node.
+* @param authentication_query saml authentication query to be serialized
+* @param parent if specified created node will be a child of this  
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
+saml_authentication_query_to_om(saml_authentication_query_t *authentication_query, 
+								axiom_node_t *parent, const axutil_env_t *env);
+
+/*
+ * Set authetication method of saml authentication query.
+ * @param authentication_query saml authentication query
+ * @param env pointer to environment struct
+ * @param authentication_mtd required authentication method in the secifying query
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_auth_query_set_authentication_method(
+	saml_authentication_query_t *authentication_query,
+	const axutil_env_t *env, 
+	axis2_char_t *authentication_mtd);
+
+/*
+ * Returns the authentication method of the saml authentication query.
+ * @param authentication_query saml authentication query
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN axis2_char_t * AXIS2_CALL 
+saml_auth_query_get_authentication_method(
+	saml_authentication_query_t *authentication_query,
+	const axutil_env_t *env);
+
+/* 
+ *  Creates a saml attribute query.
+ *  @param env pointer to environment struct
+ */
+AXIS2_EXTERN saml_attr_query_t* AXIS2_CALL 
+saml_attr_query_create(const axutil_env_t *env);
+
+/* 
+ * Free a saml attribute query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN void AXIS2_CALL
+saml_attr_query_free(saml_attr_query_t* attribute_query, const axutil_env_t *env);
+
+/* 
+ * Build the saml attribute query from an axiom node.
+ * @param attribute_query SAML attribute query to be populated
+ * @param node axiom node of SAML query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_attr_query_build(saml_attr_query_t* attribute_query, 
+					  axiom_node_t *node, const axutil_env_t *env);
+
+/* 
+* Serialize a saml attribute to a om node.
+* @param attribute_query saml attribute query to be serialized
+* @param parent if specified created node will be a child of this  
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
+saml_attr_query_to_om(saml_attr_query_t *attribute_query, 
+					  axiom_node_t *parent, const axutil_env_t *env);
+
+/*
+ * Returns the saml subject of the saml query.
+ * @param query saml query
+ * @param env pointer to the environment struct
+ */
+AXIS2_EXTERN saml_subject_t* AXIS2_CALL 
+saml_query_get_subject(saml_query_t* query,
+						const axutil_env_t *env);
+/*
+ * Set the subject of a saml query.
+ * @param query saml query
+ * @param env pointer to the environment struct
+ * @param subject saml subject
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_query_set_subject(saml_query_t *query, const axutil_env_t *env,
+					   saml_subject_t *subject);
+/*
+ * Set the type of the saml query.
+ * @param query saml query
+ * @param env pointer to the environment struct
+ * @param type type of the saml query
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_query_set_type(saml_query_t *query, const axutil_env_t *env, axis2_char_t *type);
+
+/*
+ * Set the saml specific query object of saml query
+ * @param query saml query
+ * @param spec_query specific query object to be set as the saml query
+ * @param type the type of the specifying query
+ * spec_query can be any type of query defined in saml queries.
+ * the specified saml queries, saml subject query, attribute query, 
+ * authentication query, athorization decision query
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_query_set_query(saml_query_t *query, const axutil_env_t *env,
+					 void *spec_query, 
+					 axis2_char_t *type);
+
+/*
+ * Set the resource required of saml attribute query.
+ * @param attr_query saml attribute query
+ * @param env pointer to environment struct
+ * @param resource specific saml resource
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_attr_query_set_resource(saml_attr_query_t *attr_query, 
+							 const axutil_env_t *env, axis2_char_t *resource);
+
+/*
+ * Returns the saml resource required of saml attribute query.
+ * @param attr_query saml attribute query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
+saml_attr_query_get_resource(saml_attr_query_t *attr_query, const axutil_env_t *env);
+
+/*
+ * Set a set of attribute designators of the saml attribute query.
+ * @param env pointer to environment struct
+ * @param saml_designators list of saml attribute designators
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_attr_query_set_designators(saml_attr_query_t *attr_query,  
+								const axutil_env_t *env,
+								axutil_array_list_t *saml_designators);
+/*
+ * Returns the set of attribute designators of saml attribute query.
+ * @param attr_query saml attribute query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
+saml_attr_query_get_designators(saml_attr_query_t *attr_query, const axutil_env_t *env);
+
+/*
+ * Add a saml attribute designator to the saml attribute query.
+ * @param attr_query saml attribute query
+ * @param env pointer to environment struct
+ * @param desig saml attribute designator object
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_attr_query_add_designators(saml_attr_query_t *attr_query, const axutil_env_t *env,
+								saml_attr_desig_t *desig);
+/*
+ * Remove saml attribute designator at the specified index.
+ * @param attr_query saml attribute query
+ * @param env pointer to environment struct
+ * @param index the specified index to remove
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_attr_query_remove_designator(saml_attr_query_t *attr_query, const axutil_env_t *env,
+								  int index);
+
+/* 
+ *  Creates a saml authorization decision query.
+ *  @param env pointer to environment struct
+ */
+AXIS2_EXTERN saml_autho_decision_query_t* AXIS2_CALL 
+saml_autho_decision_query_create(const axutil_env_t *env);
+
+/* 
+ * Free a saml authorizaion decision query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN void AXIS2_CALL 
+saml_autho_decision_query_free(saml_autho_decision_query_t* autho_decision_query, 
+							   const axutil_env_t *env);
+
+/* 
+ * Build the saml authorization decision query from an axiom node.
+ * @param query SAML authorization decision query to be populated
+ * @param node axiom node of SAML authorization decision query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_autho_decision_query_build(saml_autho_decision_query_t* autho_decision_query, 
+								axiom_node_t *node, const axutil_env_t *env);
+
+/* 
+* Serialize a saml authorization decision query to a om node.
+* @param autho_decision_query authorization decision query to be serialized
+* @param parent if specified created node will be a child of this  
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
+saml_autho_decision_query_to_om(saml_autho_decision_query_t *autho_decision_query, 
+								axiom_node_t *parent, const axutil_env_t *env);
+/*
+ * Set the resource required of saml authorization decision query.
+ * @param autho_dec_query saml authorization decision query
+ * @param env pointer to environment struct
+ * @param resource saml resource required
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_autho_decision_query_set_resource(
+			saml_autho_decision_query_t *autho_dec_query,
+			const axutil_env_t *env,
+			axis2_char_t *resource);
+/*
+ * Returns the saml resource of saml authorization decision query.
+ * @param autho_dec_query saml authorization decision query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
+saml_autho_decision_query_get_resource(saml_autho_decision_query_t *autho_dec_query,
+														 const axutil_env_t *env);
+/*
+ * Set a set of action of saml authorization decision query.
+ * @param autho_dec_query saml authorization decision query
+ * @param env pointer to the environment struct
+ * @param actions list of saml action objects
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_autho_decision_query_set_actions(
+			saml_autho_decision_query_t *autho_dec_query,
+			const axutil_env_t *env,
+			axutil_array_list_t *actions);
+/*
+ * Returns the set of actions of saml authorization decision query.
+ * @param autho_dec_query saml authorization decision query
+ * @param env envionment struct
+ */
+AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL 
+saml_autho_decision_query_get_actions(
+			saml_autho_decision_query_t *autho_dec_query,
+			const axutil_env_t *env);
+														
+/*
+ * Add a saml action to saml authorization decision query.
+ * @param autho_dec_query saml authorization decision query
+ * @param env pointer to environment struct
+ * @param action saml action object
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_autho_decision_query_add_action(
+			saml_autho_decision_query_t *autho_dec_query,
+			const axutil_env_t *env,
+			saml_action_t *action);
+/*
+ * Remove a saml action at the the specified index.
+ * @param autho_dec_query saml authorization decision query
+ * @param env pointer to environment struct
+ * @param index specified index to remove
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_autho_decision_remove_action(saml_autho_decision_query_t *autho_dec_query,
+								  const axutil_env_t *env,
+								  int index);
+/*
+ * Set a saml evidence of the saml authorization decision query.
+ * @param autho_dec_query saml authorization decision query
+ * @param env pointer to environment struct
+ * @param evidence saml evidence object
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_autho_decision_query_set_evidence(
+			saml_autho_decision_query_t *autho_dec_query,
+			const axutil_env_t *env,
+			saml_evidence_t *evidence);
+/*
+ * Returns the saml evidence of saml authorization decision query.
+ * @param autho_dec_query saml authorization decision query
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN saml_evidence_t* AXIS2_CALL 
+saml_autho_decision_query_get_evidence(
+			saml_autho_decision_query_t *autho_dec_query,
+			const axutil_env_t *env);
+	
+/* 
+ * Build the saml status from an axiom node.
+ * @param query SAML status to be populated
+ * @param node axiom node of SAML status
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_status_build(saml_status_t *status, axiom_node_t *node, const axutil_env_t *env);
+
+/* 
+* Serialize a saml status to a om node.
+* @param status saml status to be serialized
+* @param parent if specified created node will be a child of this  
+* @param env pointer to environment struct
+*/
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_status_to_om(saml_status_t *status, 
+														axiom_node_t *parent, 
+														const axutil_env_t *env);
+
+/* 
+ *  Creates a saml status.
+ *  @param env pointer to environment struct
+ */
+AXIS2_EXTERN saml_status_t* AXIS2_CALL 
+saml_status_create(const axutil_env_t *env);
+
+/* 
+ * Free a saml status
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN void 
+saml_status_free(saml_status_t *status, const axutil_env_t *env);
+
+/*
+ * Set the saml status value to be returned in saml status.
+ * @param status saml status object
+ * @param qname axutil qname object which specify saml status value
+ * @param env pointer to environment struct
+*/
+AXIS2_EXTERN int AXIS2_CALL 
+saml_status_set_status_value(saml_status_t *status, 
+							 const axutil_env_t *env, axutil_qname_t *qname);
+
+/*
+ * Returns the saml status value of saml status.
+ * @param status saml status
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN axutil_qname_t* AXIS2_CALL 
+saml_status_get_status_value(saml_status_t *status, const axutil_env_t *env);
+
+/*
+ * Set the status message of saml status
+ * @param status saml status object
+ * @param env pointer to environment struct
+ * @param msg status message to be set in saml status
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_status_set_status_msg(saml_status_t *status, const axutil_env_t *env,
+						   axis2_char_t *msg);
+/*
+ * Set the status code of saml status object.
+ * @param status saml status object
+ * @param env pointer to environment struct
+ * @param code status code to be set in saml status
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_status_set_status_code(saml_status_t *status, const axutil_env_t *env,
+							axis2_char_t *code);
+/*
+ * Returns the status message of saml status.
+ * @param status saml status struct
+ * @env pointer to environment struct
+ */
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
+saml_status_get_status_msg(saml_status_t *status, const axutil_env_t *env);
+/* 
+ * Set the saml status detail of saml status.
+ * @param status saml status struct
+ * @param det axiom node struct to be set as saml status detail
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_status_set_status_detail(saml_status_t *status, axiom_node_t *det, 
+							  const axutil_env_t *env);
+/*
+ * Returns the saml status detail node of saml status
+ * @param status saml status struct
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL 
+saml_status_get_status_detail(saml_status_t *status, const axutil_env_t *env);
+
+/* 
+ *  Creates a saml artifact.
+ *  @param env pointer to environment struct
+ */
+AXIS2_EXTERN saml_artifact_t* AXIS2_CALL 
+saml_artifact_create(const axutil_env_t *env);
+
+/* 
+ * Free a saml artifact
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN void AXIS2_CALL 
+saml_artifact_free(saml_artifact_t *artifact, const axutil_env_t *env);
+
+/*
+ * Returns the data value of saml artifact.
+ * @param artifact saml artifact srtuct
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL 
+saml_artifact_get_data(saml_artifact_t *artifact, const axutil_env_t *env);
+
+/*
+ * Set data value of saml artifact.
+ * @param artifact saml artifact
+ * @param env pointer to environment struct
+ * @data data value to be set in smal artifact
+ */
+AXIS2_EXTERN int AXIS2_CALL 
+saml_artifact_set_data(saml_artifact_t *artifact, const axutil_env_t *env, 
+					   axis2_char_t *data);
+/*
+ * Verify a signed saml response.
+ * @param response saml response struct
+ * @param env pointer to environement struct
+ */
+AXIS2_EXTERN int AXIS2_CALL
+saml_response_signature_verify(saml_response_t *response, const axutil_env_t *env);
+
+/*
+ * Check whether the saml response has to sign.
+ * @param response saml response struct
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL
+saml_response_is_sign_set(saml_response_t *response, const axutil_env_t *env);
+
+/*
+ * Check whether the recieved response is signed.
+ * @param response saml response struct
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL
+saml_response_is_signed(saml_response_t *response, const axutil_env_t *env);
+
+/*
+ * Verify a signed saml request.
+ * @param response saml request struct
+ * @param env pointer to environement struct
+ */
+AXIS2_EXTERN int AXIS2_CALL
+saml_request_signature_verify(saml_request_t *request, const axutil_env_t *env);
+
+/*
+ * Check whether the saml request has to sign.
+ * @param request saml request struct
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL
+saml_request_is_sign_set(saml_request_t *request, const axutil_env_t *env);
+
+/*
+ * Check whether the recieved request is signed.
+ * @param request saml request struct
+ * @param env pointer to environment struct
+ */
+AXIS2_EXTERN int AXIS2_CALL
+saml_request_is_signed(saml_request_t *request, const axutil_env_t *env);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif 
+