Author: supun
Date: Mon Oct 15 23:57:16 2007
New Revision: 585061
URL: http://svn.apache.org/viewvc?rev=585061&view=rev
Log:
Prasad's 5th patch applied.
Modified:
webservices/rampart/scratch/c/saml/SAML.sln
webservices/rampart/scratch/c/saml/include/saml_req.h
webservices/rampart/scratch/c/saml/saml_test.vcproj
webservices/rampart/scratch/c/saml/src/query.c
webservices/rampart/scratch/c/saml/src/request.c
webservices/rampart/scratch/c/saml/src/response.c
Modified: webservices/rampart/scratch/c/saml/SAML.sln
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/SAML.sln?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/SAML.sln (original)
+++ webservices/rampart/scratch/c/saml/SAML.sln Mon Oct 15 23:57:16 2007
@@ -3,6 +3,11 @@
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAML", "SAML.vcproj",
"{1A433831-8D6F-4A45-8792-8BAE219B44A3}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "saml_test",
"saml_test.vcproj", "{10D44647-66E0-4DCF-A465-4CD1923D9A47}"
+ ProjectSection(ProjectDependencies) = postProject
+ {1A433831-8D6F-4A45-8792-8BAE219B44A3} =
{1A433831-8D6F-4A45-8792-8BAE219B44A3}
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -13,6 +18,10 @@
{1A433831-8D6F-4A45-8792-8BAE219B44A3}.Debug|Win32.Build.0 =
Debug|Win32
{1A433831-8D6F-4A45-8792-8BAE219B44A3}.Release|Win32.ActiveCfg
= Release|Win32
{1A433831-8D6F-4A45-8792-8BAE219B44A3}.Release|Win32.Build.0 =
Release|Win32
+ {10D44647-66E0-4DCF-A465-4CD1923D9A47}.Debug|Win32.ActiveCfg =
Debug|Win32
+ {10D44647-66E0-4DCF-A465-4CD1923D9A47}.Debug|Win32.Build.0 =
Debug|Win32
+ {10D44647-66E0-4DCF-A465-4CD1923D9A47}.Release|Win32.ActiveCfg
= Release|Win32
+ {10D44647-66E0-4DCF-A465-4CD1923D9A47}.Release|Win32.Build.0 =
Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Modified: webservices/rampart/scratch/c/saml/include/saml_req.h
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/include/saml_req.h?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/include/saml_req.h (original)
+++ webservices/rampart/scratch/c/saml/include/saml_req.h Mon Oct 15 23:57:16
2007
@@ -55,7 +55,7 @@
axutil_qname_t *status_value;
axis2_char_t *status_code;
axis2_char_t *status_msg;
- axutil_array_list_t *status_detail;
+ axiom_node_t *status_detail;
}saml_status_t;
@@ -109,7 +109,7 @@
/* time instant of the issue */
axutil_date_time_t *issue_instant;
/*optional*/
- saml_signature_t *signature;
+ axiom_node_t *signature;
/* An array for QNames
* specifies the type of statement the SAML relying party wants from the
@@ -139,7 +139,7 @@
axutil_date_time_t *issue_instant;
- saml_signature_t *signature;
+ axiom_node_t *signature;
saml_status_t *status;
@@ -149,7 +149,9 @@
AXIS2_EXTERN int AXIS2_CALL saml_request_init(saml_request_t *request,
axutil_env_t *env);
AXIS2_EXTERN int AXIS2_CALL saml_request_uninit(saml_request_t *request,
axutil_env_t *env);
AXIS2_EXTERN int AXIS2_CALL saml_request_build(saml_request_t *request,
axiom_node_t *node, axutil_env_t *env);
-
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_request_to_om(saml_request_t
*request,
+
axiom_node_t *parent,
+
axutil_env_t *env);
//To do
AXIS2_EXTERN void AXIS2_CALL saml_request_insert_signature();
//
@@ -181,6 +183,9 @@
AXIS2_EXTERN int AXIS2_CALL saml_response_init(saml_response_t *response,
axutil_env_t *env);
AXIS2_EXTERN int AXIS2_CALL saml_response_uninit(saml_response_t *response,
axutil_env_t *env);
AXIS2_EXTERN int AXIS2_CALL saml_response_build(saml_response_t *response,
axiom_node_t *node, axutil_env_t *env);
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL saml_response_to_om(saml_response_t
*response,
+
axiom_node_t *parent,
+
axutil_env_t *env);
//To do
AXIS2_EXTERN void AXIS2_CALL saml_response_insert_signature();
//
@@ -292,10 +297,22 @@
AXIS2_EXTERN int AXIS2_CALL saml_status_init(saml_status_t *status,
axutil_env_t *env);
AXIS2_EXTERN int AXIS2_CALL saml_status_uninit(saml_status_t *status,
axutil_env_t *env);
AXIS2_EXTERN int AXIS2_CALL saml_status_build(saml_status_t *status,
axiom_node_t *node, axutil_env_t *env);
-AXIS2_EXTERN saml_status_t* saml_status_create(axutil_env_t *env);
+AXIS2_EXTERN saml_status_t* AXIS2_CALL saml_status_create(axutil_env_t *env);
AXIS2_EXTERN void saml_status_free(saml_status_t *status, axutil_env_t *env);
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_value(saml_status_t
*status, axutil_qname_t *qname, axutil_env_t *env);
+AXIS2_EXTERN axutil_qname_t* AXIS2_CALL
saml_status_get_status_value(saml_status_t *status, axutil_env_t *env);
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_msg(saml_status_t *status,
axis2_char_t *msg, axutil_env_t *env);
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_status_get_status_msg(saml_status_t
*status, axutil_env_t *env);
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_detail(saml_status_t
*status, axiom_node_t *det, axutil_env_t *env);
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL
saml_status_get_status_detail(saml_status_t *status, axutil_env_t *env);
+
+
+
+
AXIS2_EXTERN saml_artifact_t* AXIS2_CALL saml_artifact_create(axutil_env_t
*env);
AXIS2_EXTERN int AXIS2_CALL saml_artifact_init(saml_artifact_t *artifact,
axutil_env_t *env);
AXIS2_EXTERN int AXIS2_CALL saml_artifact_uninit(saml_artifact_t *artifact,
axutil_env_t *env);
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_artifact_get_data(saml_artifact_t
*artifact, axutil_env_t *env);
+AXIS2_EXTERN int AXIS2_CALL saml_artifact_set_data(saml_artifact_t *artifact,
axutil_env_t *env, axis2_char_t *data);
#endif
Modified: webservices/rampart/scratch/c/saml/saml_test.vcproj
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/saml_test.vcproj?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/saml_test.vcproj (original)
+++ webservices/rampart/scratch/c/saml/saml_test.vcproj Mon Oct 15 23:57:16 2007
@@ -40,6 +40,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
+
AdditionalIncludeDirectories="./include;E:\axis2c\util\include;E:\axis2c\axiom\include;"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
@@ -60,7 +61,9 @@
/>
<Tool
Name="VCLinkerTool"
+ AdditionalDependencies="saml.lib axutil.lib
axiom.lib"
LinkIncremental="2"
+
AdditionalLibraryDirectories="./debug;E:\axis2c\build\deploy\lib"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
@@ -175,7 +178,7 @@
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
- RelativePath=".\test_main.c"
+ RelativePath=".\src\test.c"
>
</File>
</Filter>
Modified: webservices/rampart/scratch/c/saml/src/query.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/query.c?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/src/query.c (original)
+++ webservices/rampart/scratch/c/saml/src/query.c Mon Oct 15 23:57:16 2007
@@ -107,12 +107,25 @@
axutil_env_t *env)
{
int i = 0, size = 0;
+ saml_attr_desig_t *attr_desig = NULL;
+
if(attribute_query->resource)
{
AXIS2_FREE(env->allocator, attribute_query->resource);
}
if(attribute_query->attr_desigs)
{
+ size = axutil_array_list_size(attribute_query->attr_desigs,
env);
+ for(i = 0; i< size ; i++)
+ {
+ attr_desig =
(saml_attr_desig_t*)axutil_array_list_get(attribute_query->attr_desigs, env, i);
+
+ if(attr_desig)
+ {
+ saml_attr_desig_uninit(attr_desig, env);
+ AXIS2_FREE(env->allocator,attribute_query);
+ }
+ }
axutil_array_list_free(attribute_query->attr_desigs, env);
}
if (attribute_query->subject)
@@ -139,7 +152,7 @@
autho_decision_query->resource = NULL;
autho_decision_query->saml_actions =
axutil_array_list_create(env,
-
AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+
SAML_ARRAY_LIST_DEF);
autho_decision_query->evidence = saml_evidence_create(env);
}
return autho_decision_query;
@@ -774,6 +787,17 @@
return AXIS2_SUCCESS;
}
+AXIS2_EXTERN int AXIS2_CALL saml_attr_query_set_resource(saml_attr_query_t
*attr_query, axutil_env_t *env, axis2_char_t *resource)
+{
+ if(attr_query->resource)
+ {
+ AXIS2_FREE(env->allocator, attr_query->resource);
+ }
+ attr_query->resource = resource;
+
+ return AXIS2_SUCCESS;
+}
+
AXIS2_EXTERN axis2_char_t* AXIS2_CALL
saml_auth_query_get_authentication_method(saml_authentication_query_t
*authentication_query,
axutil_env_t *env)
{
@@ -818,7 +842,7 @@
{
if(!attr_query->attr_desigs)
{
- axutil_array_list_create(env,
AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+ axutil_array_list_create(env, SAML_ARRAY_LIST_DEF);
}
axutil_array_list_add(attr_query->attr_desigs, env, desig);
return AXIS2_SUCCESS;
@@ -889,7 +913,7 @@
{
if(!autho_dec_query->saml_actions)
{
- axutil_array_list_create(env,
AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+ axutil_array_list_create(env, SAML_ARRAY_LIST_DEF);
}
if(autho_dec_query->saml_actions)
{
Modified: webservices/rampart/scratch/c/saml/src/request.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/request.c?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/src/request.c (original)
+++ webservices/rampart/scratch/c/saml/src/request.c Mon Oct 15 23:57:16 2007
@@ -43,6 +43,24 @@
return AXIS2_SUCCESS;
}
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_artifact_get_data(saml_artifact_t
*artifact, axutil_env_t *env)
+{
+ if(artifact)
+ return artifact->artifact;
+ else
+ return NULL;
+}
+AXIS2_EXTERN int AXIS2_CALL saml_artifact_set_data(saml_artifact_t *artifact,
axutil_env_t *env, axis2_char_t *data)
+{
+ if(artifact->artifact)
+ {
+ AXIS2_FREE(env->allocator, artifact->artifact);
+ }
+ artifact->artifact = data;
+
+ return AXIS2_SUCCESS;
+}
+
AXIS2_EXTERN int AXIS2_CALL saml_request_init(saml_request_t *request,
axutil_env_t *env)
{
@@ -51,9 +69,9 @@
request->issue_instant = NULL;
request->major_version = NULL;
request->minor_version = NULL;
- request->saml_artifacts = NULL;
- request->saml_asserion_id_ref = NULL;
- request->saml_responds = NULL;
+ request->saml_artifacts =axutil_array_list_create(env,
SAML_ARRAY_LIST_DEF);
+ request->saml_asserion_id_ref = axutil_array_list_create(env,
SAML_ARRAY_LIST_DEF);
+ request->saml_responds = axutil_array_list_create(env,
SAML_ARRAY_LIST_DEF);
request->signature = NULL;
return AXIS2_SUCCESS;
@@ -61,6 +79,9 @@
AXIS2_EXTERN int AXIS2_CALL saml_request_uninit(saml_request_t *request,
axutil_env_t *env)
{
+ int size = 0, i = 0;
+ saml_artifact_t *artifact = NULL;
+ axis2_char_t *id_ref = NULL;
if(request->request_id.id)
{
AXIS2_FREE(env->allocator, request->request_id.id);
@@ -83,6 +104,16 @@
}
if(request->saml_artifacts)
{
+ size = axutil_array_list_size(request->saml_artifacts, env);
+ for(i = 0; i < size; i++)
+ {
+ artifact =
(saml_artifact_t*)axutil_array_list_get(request->saml_artifacts, env ,i);
+ if(artifact)
+ {
+ saml_artifact_uninit(artifact, env);
+ AXIS2_FREE(env->allocator, artifact);
+ }
+ }
axutil_array_list_free(request->saml_artifacts, env);
}
if(request->signature)
@@ -91,7 +122,29 @@
}
if(request->saml_asserion_id_ref)
{
- axutil_array_list_free(request->saml_asserion_id_ref, env);
+ size = axutil_array_list_size(request->saml_artifacts, env);
+ for(i = 0; i < size; i++)
+ {
+ id_ref =
(axis2_char_t*)axutil_array_list_get(request->saml_asserion_id_ref, env ,i);
+ if(id_ref)
+ {
+ AXIS2_FREE(env->allocator, id_ref);
+ }
+ }
+ axutil_array_list_free(request->saml_artifacts, env);
+ }
+ if(request->saml_responds)
+ {
+ size = axutil_array_list_size(request->saml_responds, env);
+ for(i = 0; i < size; i++)
+ {
+ id_ref =
(axis2_char_t*)axutil_array_list_get(request->saml_responds, env ,i);
+ if(id_ref)
+ {
+ AXIS2_FREE(env->allocator, id_ref);
+ }
+ }
+ axutil_array_list_free(request->saml_responds, env);
}
return AXIS2_SUCCESS;
}
@@ -174,7 +227,7 @@
}
else if(element != NULL &&
!(axutil_strcmp(element_local_name,SAML_SIGNATURE)))
{
- //To do
+ request->signature = child_node;
}
else if(element != NULL &&
!(axutil_strcmp(element_local_name, SAML_SUBJECT_QUERY)))
{
@@ -245,14 +298,16 @@
int size = 0, i = 0;
axiom_element_t *e = NULL, *ce = NULL;
axiom_node_t *n = NULL, *cn = NULL;
- axiom_namespace_t *ns = NULL;
+ axiom_namespace_t *ns1 = NULL, *ns2 = NULL;
axiom_attribute_t *attr = NULL;
saml_assertion_t *assertion = NULL;
axutil_qname_t *qname;
saml_artifact_t *artifact;
axis2_char_t *id_reference;
- ns = axiom_namespace_create(env, SAML_PROTOCOL_NMSP,
SAML_PROTOCOL_PREFIX);
- e = axiom_element_create(env, parent, SAML_REQUEST, ns, &n);
+ ns1 = axiom_namespace_create(env, SAML_PROTOCOL_NMSP,
SAML_PROTOCOL_PREFIX);
+ ns2 = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX);
+ e = axiom_element_create(env, parent, SAML_REQUEST, ns1, &n);
+ axiom_element_declare_namespace(e, env, n, ns2);
if(e)
{
@@ -283,17 +338,18 @@
for (i = 0 ; i < size ; i++)
{
qname = (axutil_qname_t*)
axutil_array_list_get(request->saml_responds, env, i);
- /////////
- ce = axiom_element_create(env, n,
SAML_RESPOND_WITH, NULL, &cn);
+
+ ce = axiom_element_create(env, n,
SAML_RESPOND_WITH, ns1, &cn);
if(ce)
{
axiom_element_set_text(ce, env,
axutil_qname_to_string(qname, env), cn);
}
+ /* axiom_element_create_with_qname(env, n,
qname, &cn);*/
}
}
if(request->signature)
{
- //To do
+ axiom_node_add_child(n, env,
request->signature);
}
if(request->query || request->saml_artifacts ||
request->saml_asserion_id_ref)
{
@@ -310,7 +366,7 @@
artifact = (saml_artifact_t*)
axutil_array_list_get(request->saml_artifacts, env, i);
if(artifact)
{
- ce =
axiom_element_create(env, n, SAML_ASSERTION_ARTIFACT, NULL, &cn);
+ ce =
axiom_element_create(env, n, SAML_ASSERTION_ARTIFACT, ns1, &cn);
if(ce)
{
axiom_element_set_text(ce, env, artifact->artifact, cn);
@@ -327,7 +383,7 @@
{
id_reference = (axis2_char_t*)
axutil_array_list_get(request->saml_asserion_id_ref, env, i);
- ce = axiom_element_create(env,
n, SAML_ASSERTION_ID_REFERENCE, NULL, &cn);
+ ce = axiom_element_create(env,
n, SAML_ASSERTION_ID_REFERENCE, ns1, &cn);
if(ce)
{
axiom_element_set_text(ce, env, id_reference, cn);
@@ -346,13 +402,15 @@
}
-AXIS2_EXTERN void AXIS2_CALL saml_request_set_version(saml_request_t *request,
int version, axutil_env_t *env)
+AXIS2_EXTERN int AXIS2_CALL saml_request_set_minor_version(saml_request_t
*request, int version, axutil_env_t *env)
{
if(request->major_version)
{
AXIS2_FREE(env->allocator, request->minor_version);
}
+ request->minor_version = AXIS2_MALLOC(env->allocator, sizeof(char));
sprintf(request->minor_version, "%d", version);
+ return AXIS2_SUCCESS;
}
AXIS2_EXTERN int AXIS2_CALL saml_request_set_issue_instant(saml_request_t
*request, axutil_date_time_t *date_time, axutil_env_t *env)
{
@@ -393,7 +451,7 @@
{
if(!request->saml_responds)
{
- request->saml_responds =
axutil_array_list_create(env,AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+ request->saml_responds = axutil_array_list_create(env,
SAML_ARRAY_LIST_DEF);
}
if(request->saml_responds)
{
@@ -455,7 +513,7 @@
{
if(!request->saml_asserion_id_ref)
{
- axutil_array_list_create(env,AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+ axutil_array_list_create(env, SAML_ARRAY_LIST_DEF);
}
if(request->saml_asserion_id_ref)
{
@@ -499,7 +557,7 @@
{
if(!request->saml_artifacts)
{
- request->saml_artifacts = axutil_array_list_create(env,
AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+ request->saml_artifacts = axutil_array_list_create(env,
SAML_ARRAY_LIST_DEF);
}
if(request->saml_artifacts)
{
Modified: webservices/rampart/scratch/c/saml/src/response.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/response.c?rev=585061&r1=585060&r2=585061&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/src/response.c (original)
+++ webservices/rampart/scratch/c/saml/src/response.c Mon Oct 15 23:57:16 2007
@@ -42,7 +42,7 @@
}
if(status->status_detail)
{
- axutil_array_list_free(status->status_detail, env);
+ axiom_node_free_tree(status->status_detail, env);
}
if(status->status_msg)
{
@@ -51,7 +51,7 @@
return AXIS2_SUCCESS;
}
-AXIS2_EXTERN saml_status_t* saml_status_create(axutil_env_t *env)
+AXIS2_EXTERN saml_status_t* AXIS2_CALL saml_status_create(axutil_env_t *env)
{
saml_status_t *status = NULL;
status = (saml_status_t*)AXIS2_MALLOC(env->allocator,
sizeof(saml_status_t));
@@ -62,7 +62,7 @@
status->status_msg = NULL;
status->status_code = NULL;
- status->status_detail = axutil_array_list_create(env,
AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+ status->status_detail = NULL;
}
return status;
}
@@ -78,7 +78,7 @@
}
if(status->status_detail)
{
- axutil_array_list_free(status->status_detail, env);
+ axiom_node_free_tree(status->status_detail, env);
}
if(status->status_msg)
{
@@ -120,7 +120,6 @@
if(element != NULL &&
!(axutil_strcmp(axiom_element_get_localname(element, env),
SAML_STATUS_CODE)))
{
- ///
qname =
axiom_element_get_attribute_value_by_name(element, env, SAML_STATUS_VALUE);
if(qname)
status->status_value =
axutil_qname_create_from_string(env, qname);
@@ -134,7 +133,7 @@
else if(element != NULL &&
!(axutil_strcmp(axiom_element_get_localname(element, env),
SAML_STATUS_DETAIL)))
{
- axutil_array_list_add(status->status_detail,
env, axiom_element_get_text(element, env, child_node));
+ status->status_detail = child_node;
}
}
return AXIS2_SUCCESS;
@@ -160,15 +159,7 @@
{
if(status->status_detail)
{
- size = axutil_array_list_size(status->status_detail,
env);
- for(i = 0 ; i < size ; i++)
- {
- ce = axiom_element_create(env, n,
SAML_STATUS_DETAIL, ns, &cn);
- if(ce)
- {
- axiom_element_set_text(ce, env,
(axis2_char_t*)axutil_array_list_get(status->status_detail, env, i), cn);
- }
- }
+ axiom_node_add_child(n, env, status->status_detail);
}
if(status->status_msg)
{
@@ -193,6 +184,127 @@
}
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_value(saml_status_t
*status, axutil_qname_t *qname, axutil_env_t *env)
+{
+ if(status->status_value)
+ {
+ axutil_qname_free(status->status_value, env);
+ }
+ status->status_value = qname;
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axutil_qname_t* AXIS2_CALL
saml_status_get_status_value(saml_status_t *status, axutil_env_t *env)
+{
+ if(status)
+ return status->status_value;
+ else
+ return NULL;
+}
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_msg(saml_status_t *status,
axis2_char_t *msg, axutil_env_t *env)
+{
+ if(status)
+ {
+ AXIS2_FREE(env->allocator, status->status_msg);
+ }
+ status->status_msg = msg;
+ return AXIS2_SUCCESS;
+}
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL saml_status_get_status_msg(saml_status_t
*status, axutil_env_t *env)
+{
+ if(status)
+ return status->status_msg;
+ else
+ return NULL;
+}
+AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_detail(saml_status_t
*status, axiom_node_t *det, axutil_env_t *env)
+{
+ if(status)
+ {
+ axiom_node_free_tree(det, env);
+ }
+ status->status_detail = det;
+ return AXIS2_SUCCESS;
+}
+AXIS2_EXTERN axiom_node_t* AXIS2_CALL
saml_status_get_status_detail(saml_status_t *status, axutil_env_t *env)
+{
+ if(status)
+ return status->status_detail;
+ else
+ return NULL;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_response_init(saml_response_t *response,
axutil_env_t *env)
+{
+ if(response)
+ {
+ response->response_id.id = NULL;
+ response->issue_instant = NULL;
+ response->major_version = NULL;
+ response->minor_version = NULL;
+ response->recepient = NULL;
+ response->request_response_id = NULL;
+ response->signature = NULL;
+ response->status = NULL;
+ response->saml_assertions = axutil_array_list_create(env,
SAML_ARRAY_LIST_DEF);
+ }
+ return AXIS2_SUCCESS;
+}
+AXIS2_EXTERN int AXIS2_CALL saml_response_uninit(saml_response_t *response,
axutil_env_t *env)
+{
+ int size =0, i = 0;
+ saml_assertion_t *assertion = NULL;
+ if(response->major_version)
+ {
+ AXIS2_FREE(env->allocator, response->major_version);
+ }
+ if(response->minor_version)
+ {
+ AXIS2_FREE(env->allocator, response->minor_version);
+ }
+ if(response->issue_instant)
+ {
+ axutil_date_time_free(response->issue_instant, env);
+ }
+ if(response->recepient)
+ {
+ AXIS2_FREE(env->allocator, response->recepient);
+ }
+ if(response->response_id.id)
+ {
+ AXIS2_FREE(env->allocator, response->response_id.id);
+ }
+ if(response->signature)
+ {
+ axiom_node_free_tree(response->signature, env);
+ }
+ if(response->status)
+ {
+ saml_status_uninit(response->status, env);
+ AXIS2_FREE(env->allocator, response->status);
+ }
+ if(response->request_response_id)
+ {
+ AXIS2_FREE(env->allocator, response->request_response_id);
+ }
+ if(response->saml_assertions)
+ {
+ size = axutil_array_list_size(response->saml_assertions, env);
+ for(i = 0; i < size ; i++)
+ {
+ assertion =
(saml_assertion_t*)axutil_array_list_get(response->saml_assertions, env, i);
+ if(assertion)
+ {
+ saml_assertion_uninit(assertion, env);
+ AXIS2_FREE(env->allocator, assertion);
+ }
+ }
+ axutil_array_list_free(response->saml_assertions, env);
+ }
+
+ return AXIS2_SUCCESS;
+}
+
AXIS2_EXTERN int AXIS2_CALL saml_response_build(saml_response_t *response,
axiom_node_t *node,
axutil_env_t *env)
@@ -229,12 +341,10 @@
if(!axutil_strcmp(axiom_attribute_get_localname(attr,
env), SAML_RESPONCE_ID))
{
- //to do
response->response_id.id = attr_val;
}
if(!axutil_strcmp(axiom_attribute_get_localname(attr,
env), SAML_IN_RESPONSE_TO))
{
- //to do
response->request_response_id = attr_val;
}
else
if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_MAJORVERSION))
@@ -274,7 +384,7 @@
if(element != NULL &&
!(axutil_strcmp(axiom_element_get_localname(element, env),
SAML_SIGNATURE)))
{
- //To do
+ response->signature = child_node;
}
else if(element != NULL &&
!(axutil_strcmp(axiom_element_get_localname(element, env),
SAML_STATUS)))
@@ -325,7 +435,7 @@
if(e)
{
- if(response->request_response_id && response->major_version &&
response->minor_version && response->issue_instant)
+ if(response->response_id.id && response->major_version &&
response->minor_version && response->issue_instant)
{
attr = axiom_attribute_create(env, SAML_RESPONCE_ID,
response->request_response_id, NULL);
axiom_element_add_attribute(e, env, attr, n);
@@ -338,11 +448,9 @@
attr = axiom_attribute_create(env, SAML_ISSUE_INSTANT,
axutil_date_time_serialize_date_time(response->issue_instant, env), NULL);
axiom_element_add_attribute(e, env, attr, n);
-
}
else
{
- axiom_element_free(e, env);
return NULL;
}
if(response->request_response_id && response->recepient)
@@ -384,6 +492,8 @@
{
AXIS2_FREE(env->allocator,response->minor_version);
}
+ response->minor_version = AXIS2_MALLOC(env->allocator, sizeof(char));
+ sprintf(response->minor_version, "%d", version);
return AXIS2_SUCCESS;
}
AXIS2_EXTERN int AXIS2_CALL saml_response_set_issue_instant(saml_response_t
*response, axutil_date_time_t *date_time, axutil_env_t *env)
@@ -458,7 +568,7 @@
{
if(!response->saml_assertions)
{
- axutil_array_list_create(env,
AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+ axutil_array_list_create(env, SAML_ARRAY_LIST_DEF);
}
axutil_array_list_add(response->saml_assertions, env, assertion);
return AXIS2_SUCCESS;