Author: supun
Date: Mon Oct 15 23:33:07 2007
New Revision: 585055
URL: http://svn.apache.org/viewvc?rev=585055&view=rev
Log: (empty)
Modified:
webservices/rampart/scratch/c/saml/include/SAML.h
webservices/rampart/scratch/c/saml/src/assertion.c
webservices/rampart/scratch/c/saml/src/attr_stmt.c
webservices/rampart/scratch/c/saml/src/auth_des_stmt.c
webservices/rampart/scratch/c/saml/src/condition.c
webservices/rampart/scratch/c/saml/src/id_type.c
webservices/rampart/scratch/c/saml/test/test_main.c
Modified: webservices/rampart/scratch/c/saml/include/SAML.h
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/include/SAML.h?rev=585055&r1=585054&r2=585055&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/include/SAML.h (original)
+++ webservices/rampart/scratch/c/saml/include/SAML.h Mon Oct 15 23:33:07 2007
@@ -91,8 +91,14 @@
#define SAML_ATTRIBUTE "Attribute"
#define SAML_ATTRIBUTE_DESIGNATOR "AttributeDesignator"
+#define SAML_MAJOR_VERSION "1"
typedef struct saml_assertion_s saml_assertion_t;
+
+#ifndef SAML_DECLARE
+#define SAML_DECLARE(type) AXIS2_EXTERN type AXIS2_CALL
+#endif
+
typedef enum deciosion_type
{
PERMIT = 0,
@@ -352,15 +358,32 @@
AXIS2_EXTERN int AXIS2_CALL saml_assertion_init(saml_assertion_t *assertion,
axutil_env_t *env);
AXIS2_EXTERN int saml_assertion_build(saml_assertion_t *assertion,
axiom_node_t *node, axutil_env_t *env);
AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_assertion_to_om(saml_assertion_t
*assertion, axiom_node_t *node, axutil_env_t *env);
+AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
saml_assetion_get_conditions(saml_assertion_t *a, axutil_env_t *env);
+AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
saml_assertion_get_statements(saml_assertion_t *a, axutil_env_t *env);
+AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_conditions(saml_assertion_t *a,
axutil_env_t *env, axutil_array_list_t *list);
+AXIS2_EXTERN int AXIS2_CALL saml_assertion_add_condition(saml_assertion_t *a,
axutil_env_t *env, saml_condition_t *cond);
+AXIS2_EXTERN int AXIS2_CALL saml_assertion_remove_condition(saml_assertion_t
*a, axutil_env_t *env, int index);
+AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_statements(saml_assertion_t *a,
axutil_env_t *env, axutil_array_list_t *list);
+AXIS2_EXTERN int AXIS2_CALL saml_assertion_add_statement(saml_assertion_t *a,
axutil_env_t *env, saml_stmt_t *stmt);
+AXIS2_EXTERN int AXIS2_CALL saml_assertion_remove_statement(saml_assertion_t
*a, axutil_env_t *env, int index);
+AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_minor_version(saml_assertion_t
*a, axutil_env_t *env, int version);
+AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_issuer(saml_assertion_t *a,
axutil_env_t *env, axis2_char_t *issuer);
+AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_issue_instant(saml_assertion_t
*a, axutil_env_t *env, axutil_date_time_t *instant);
+AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_not_before(saml_assertion_t *a,
axutil_env_t *env, axutil_date_time_t *time);
+AXIS2_EXTERN int AXIS2_CALL
saml_assertion_set_not_on_or_after(saml_assertion_t *a, axutil_env_t *env,
axutil_date_time_t *time);
+AXIS2_EXTERN axis2_char_t * AXIS2_CALL
saml_assertion_get_issuer(saml_assertion_t *a, axutil_env_t *env);
+AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL
saml_assertion_get_issue_instant(saml_assertion_t *a, axutil_env_t *env);
+AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL
saml_assertion_get_not_before(saml_assertion_t *a, axutil_env_t *env);
+AXIS2_EXTERN axutil_date_time_t * AXIS2_CALL
saml_assertion_get_not_on_or_after(saml_assertion_t *a, axutil_env_t *env);
AXIS2_EXTERN saml_stmt_t * AXIS2_CALL saml_stmt_create(axutil_env_t *env);
AXIS2_EXTERN void AXIS2_CALL saml_stmt_free(saml_stmt_t *stmt, axutil_env_t
*env);
AXIS2_EXTERN int AXIS2_CALL saml_stmt_build(saml_stmt_t *stmt, axiom_node_t
*node, axutil_env_t *env);
AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_stmt_to_om(saml_stmt_t *stmt,
axiom_node_t *parent, axutil_env_t *env);
-AXIS2_EXTERN int AXIS2_CALL saml_id_init(saml_id_t *id, axutil_env_t *env);
-AXIS2_EXTERN int AXIS2_CALL saml_id_generate_random_bytes(saml_id_t *id,
axutil_env_t *env);
-AXIS2_EXTERN void AXIS2_CALL saml_id_uninit(saml_id_t *id, axutil_env_t *env);
+/*AXIS2_EXTERN int AXIS2_CALL saml_id_init(saml_id_t *id, axutil_env_t *env);*/
+AXIS2_EXTERN axis2_char_t * AXIS2_CALL
saml_id_generate_random_bytes(axutil_env_t *env);
+/*AXIS2_EXTERN void AXIS2_CALL saml_id_uninit(saml_id_t *id, axutil_env_t
*env);*/
AXIS2_EXTERN saml_auth_binding_t * AXIS2_CALL
saml_auth_binding_create(axutil_env_t *env);
AXIS2_EXTERN void AXIS2_CALL saml_auth_binding_free(saml_auth_binding_t
*auth_bind, axutil_env_t *env);
@@ -402,10 +425,22 @@
AXIS2_EXTERN int AXIS2_CALL saml_condition_build(saml_condition_t *cond,
axiom_node_t *node, axutil_env_t *env);
AXIS2_EXTERN axiom_node_t * AXIS2_CALL saml_condition_to_om(saml_condition_t
*cond, axiom_node_t *parent, axutil_env_t * env);
+AXIS2_EXTERN int saml_condition_set_condition(saml_condition_t *cond,
axutil_env_t *env, void * condition, saml_cond_type_t type);
+AXIS2_EXTERN int saml_condition_set_type(saml_condition_t *cond, axutil_env_t
*env, saml_cond_type_t type);
+AXIS2_EXTERN void * AXIS2_CALL saml_condition_get_condition(saml_condition_t
*cond, axutil_env_t *env);
+AXIS2_EXTERN saml_cond_type_t AXIS2_CALL
saml_condition_get_type(saml_condition_t *cond, axutil_env_t *env);
+
AXIS2_EXTERN int AXIS2_CALL
saml_audi_restriction_cond_build(saml_audi_restriction_cond_t *arc,
axiom_node_t *node, axutil_env_t *env);
AXIS2_EXTERN axiom_node_t *AXIS2_CALL
saml_audi_restriction_cond_to_om(saml_audi_restriction_cond_t *cond,
axiom_node_t *parent, axutil_env_t * env);
AXIS2_EXTERN void AXIS2_CALL
saml_audi_restriction_cond_free(saml_audi_restriction_cond_t *arc, axutil_env_t
* env);
AXIS2_EXTERN saml_audi_restriction_cond_t * AXIS2_CALL
saml_audi_restriction_cond_create(axutil_env_t *env);
+
+AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
saml_audi_restriction_cond_get_audiences(saml_audi_restriction_cond_t *cond,
axutil_env_t * env);
+AXIS2_EXTERN int AXIS2_CALL
saml_audi_restriction_cond_set_audiences(saml_audi_restriction_cond_t *cond,
axutil_env_t * env, axutil_array_list_t *list);
+AXIS2_EXTERN int AXIS2_CALL
saml_audi_restriction_cond_remove_audiences(saml_audi_restriction_cond_t *cond,
axutil_env_t * env, int index);
+AXIS2_EXTERN int AXIS2_CALL
saml_audi_restriction_cond_add_audience(saml_audi_restriction_cond_t *cond,
axutil_env_t * env, axis2_char_t *audience);
+
+
AXIS2_EXTERN saml_action_t * AXIS2_CALL saml_action_create(axutil_env_t *env);
AXIS2_EXTERN void AXIS2_CALL saml_action_free(saml_action_t *action,
axutil_env_t *env);
Modified: webservices/rampart/scratch/c/saml/src/assertion.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/assertion.c?rev=585055&r1=585054&r2=585055&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/src/assertion.c (original)
+++ webservices/rampart/scratch/c/saml/src/assertion.c Mon Oct 15 23:33:07 2007
@@ -26,7 +26,7 @@
assertion->not_on_or_after = NULL;
assertion->assertion_id = NULL;
assertion->conditions = NULL;
- assertion->statements = axutil_array_list_create(env,
SAML_ARRAY_LIST_DEF * 2);
+ assertion->statements = axutil_array_list_create(env,
(SAML_ARRAY_LIST_DEF) * 2);
assertion->issuer = NULL;
assertion->issue_instant = NULL;
assertion->signature = NULL;
@@ -133,6 +133,7 @@
return AXIS2_FAILURE;
}
+
if ((ci = axiom_element_get_child_elements(element, env, node)) != NULL)
{
axiom_element_t *ce = NULL;
@@ -179,11 +180,11 @@
}
else if (axutil_strcmp(axiom_element_get_localname(ce,
env), SAML_ADVICE))
{
-
+
}
else if (axutil_strcmp(axiom_element_get_localname(ce,
env), SAML_SIGNATURE))
{
- assertion->signature = cn;
+
}
else
{
@@ -224,13 +225,13 @@
e = axiom_element_create(env, parent, SAML_ASSERTION, ns, &n);
if (e)
{
- if (assertion->major_version && assertion->minor_version &&
assertion->assertion_id && assertion->issuer && assertion->issue_instant)
+ if (assertion->minor_version && assertion->issuer &&
assertion->issue_instant)
{
- attr = axiom_attribute_create(env, SAML_MAJORVERSION,
assertion->major_version, NULL);
+ attr = axiom_attribute_create(env, SAML_MAJORVERSION,
SAML_MAJOR_VERSION, NULL);
axiom_element_add_attribute(e, env, attr, n);
attr = axiom_attribute_create(env, SAML_MINORVERSION,
assertion->minor_version, NULL);
axiom_element_add_attribute(e, env, attr, n);
- attr = axiom_attribute_create(env, SAML_ASSERTION_ID,
assertion->assertion_id, NULL);
+ attr = axiom_attribute_create(env, SAML_ASSERTION_ID,
saml_id_generate_random_bytes(env), NULL);
axiom_element_add_attribute(e, env, attr, n);
attr = axiom_attribute_create(env, SAML_ISSUER,
assertion->issuer, NULL);
axiom_element_add_attribute(e, env, attr, n);
@@ -239,7 +240,6 @@
}
else
{
- axiom_element_free(e, env);
return NULL;
}
if (assertion->conditions)
@@ -282,7 +282,7 @@
}
if (assertion->signature)
{
-
+
}
}
return n;
@@ -406,10 +406,10 @@
AXIS2_EXTERN int AXIS2_CALL saml_assertion_set_minor_version(saml_assertion_t
*a, axutil_env_t *env, int version)
{
- if (a->minor_version)
+ if (!a->minor_version)
{
- AXIS2_FREE(env->allocator, a->minor_version);
- }
+ a->minor_version = AXIS2_MALLOC(env->allocator, 8);
+ }
sprintf(a->minor_version, "%d", version);
return AXIS2_SUCCESS;
}
Modified: webservices/rampart/scratch/c/saml/src/attr_stmt.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/attr_stmt.c?rev=585055&r1=585054&r2=585055&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/src/attr_stmt.c (original)
+++ webservices/rampart/scratch/c/saml/src/attr_stmt.c Mon Oct 15 23:33:07 2007
@@ -97,6 +97,35 @@
return n;
}
+AXIS2_EXTERN axis2_char_t * AXIS2_CALL
saml_attr_desig_get_name(saml_attr_desig_t *attr_desig, axutil_env_t *env)
+{
+ return attr_desig->attr_name;
+}
+
+AXIS2_EXTERN axis2_char_t * AXIS2_CALL
saml_attr_desig_get_namespace(saml_attr_desig_t *attr_desig, axutil_env_t *env)
+{
+ return attr_desig->attr_nmsp;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_attr_desig_set_name(saml_attr_desig_t
*attr_desig, axutil_env_t *env, axis2_char_t *name)
+{
+ if (attr_desig->attr_name)
+ {
+ AXIS2_FREE(env->allocator, name);
+ }
+ attr_desig->attr_name = name;
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_attr_desig_set_namespace(saml_attr_desig_t
*attr_desig, axutil_env_t *env, axis2_char_t *name_space)
+{
+ if (attr_desig->attr_nmsp)
+ {
+ AXIS2_FREE(env->allocator, name_space);
+ }
+ attr_desig->attr_nmsp = name_space;
+ return AXIS2_SUCCESS;
+}
AXIS2_EXTERN int AXIS2_CALL saml_attr_init(saml_attr_t *attr, axutil_env_t
*env)
{
@@ -219,6 +248,85 @@
return n;
}
+AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_attr_get_name(saml_attr_t
*attr_stmt, axutil_env_t *env)
+{
+ return attr_stmt->attr_name;
+}
+
+AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_attr_get_namespace(saml_attr_t
*attr_stmt, axutil_env_t *env)
+{
+ return attr_stmt->attr_nmsp;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_attr_set_name(saml_attr_t *attr_stmt,
axutil_env_t *env, axis2_char_t *name)
+{
+ if (attr_stmt->attr_name)
+ {
+ AXIS2_FREE(env->allocator, name);
+ }
+ attr_stmt->attr_name = name;
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_attr_set_namespace(saml_attr_t *attr_stmt,
axutil_env_t *env, axis2_char_t *name_space)
+{
+ if (attr_stmt->attr_nmsp)
+ {
+ AXIS2_FREE(env->allocator, name_space);
+ }
+ attr_stmt->attr_nmsp = name_space;
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_set_values(saml_attr_t *attr,
axutil_env_t *env, axutil_array_list_t *list)
+{
+ int i = 0, size = 0;
+ axis2_char_t *val = NULL;
+ if (attr->attr_value)
+ {
+ size = axutil_array_list_size(attr->attr_value, env);
+ for (i = 0; i <size; i++)
+ {
+ val = axutil_array_list_get(attr->attr_value, env, i);
+ if (val)
+ {
+ AXIS2_FREE(env->allocator, val);
+ }
+ }
+ }
+ attr->attr_value = list;
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_attr_remove_value(saml_attr_t *attr,
axutil_env_t *env, int index)
+{
+ axis2_char_t *val = NULL;
+ if (attr->attr_value && axutil_array_list_size(attr->attr_value, env) >
index)
+ {
+ val = axutil_array_list_remove(attr->attr_value, env, index);
+ if (attr)
+ {
+ AXIS2_FREE(env->allocator, val);
+ }
+ return AXIS2_SUCCESS;
+ }
+ else
+ {
+ return AXIS2_FAILURE;
+ }
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_add_value(saml_attr_t *attr,
axutil_env_t *env, axis2_char_t *value)
+{
+ if (!attr->attr_value)
+ {
+ attr->attr_value = axutil_array_list_create(env,
SAML_ARRAY_LIST_DEF);
+ }
+ axutil_array_list_add(attr->attr_value, env, value);
+ return AXIS2_SUCCESS;
+}
+
+
AXIS2_EXTERN saml_attr_stmt_t * AXIS2_CALL saml_attr_stmt_create(axutil_env_t
*env)
{
saml_attr_stmt_t *attr_stmt = AXIS2_MALLOC(env->allocator,
sizeof(saml_attr_stmt_t));
@@ -305,4 +413,62 @@
}
}
return n;
-}
\ No newline at end of file
+}
+
+AXIS2_EXTERN saml_subject_t * AXIS2_CALL
saml_attr_stmt_get_subject(saml_attr_stmt_t *attr_stmt, axutil_env_t *env)
+{
+ return &attr_stmt->subject;
+}
+
+AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
saml_attr_stmt_get_attributes(saml_attr_stmt_t *attr_stmt, axutil_env_t *env)
+{
+ return attr_stmt->attribute;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_set_attributes(saml_attr_stmt_t
*attr_stmt, axutil_env_t *env, axutil_array_list_t *list)
+{
+ int i = 0, size = 0;
+ saml_attr_t *attr = NULL;
+ if (attr_stmt->attribute)
+ {
+ size = axutil_array_list_size(attr_stmt->attribute, env);
+ for (i = 0; i <size; i++)
+ {
+ attr = axutil_array_list_get(attr_stmt->attribute, env,
i);
+ if (attr)
+ {
+ AXIS2_FREE(env->allocator, attr);
+ }
+ }
+ }
+ attr_stmt->attribute = list;
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_remove_attribute(saml_attr_stmt_t
*attr_stmt, axutil_env_t *env, int index)
+{
+ saml_attr_t *attr = NULL;
+ if (attr_stmt->attribute &&
axutil_array_list_size(attr_stmt->attribute, env) > index)
+ {
+ attr = axutil_array_list_remove(attr_stmt->attribute, env,
index);
+ if (attr)
+ {
+ AXIS2_FREE(env->allocator, attr);
+ }
+ return AXIS2_SUCCESS;
+ }
+ else
+ {
+ return AXIS2_FAILURE;
+ }
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_attr_stmt_add_attribute(saml_attr_stmt_t
*attr_stmt, axutil_env_t *env, saml_attr_t *attribute)
+{
+ if (!attr_stmt->attribute)
+ {
+ attr_stmt->attribute = axutil_array_list_create(env,
SAML_ARRAY_LIST_DEF);
+ }
+ axutil_array_list_add(attr_stmt->attribute, env, attribute);
+ return AXIS2_SUCCESS;
+}
Modified: webservices/rampart/scratch/c/saml/src/auth_des_stmt.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/auth_des_stmt.c?rev=585055&r1=585054&r2=585055&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/src/auth_des_stmt.c (original)
+++ webservices/rampart/scratch/c/saml/src/auth_des_stmt.c Mon Oct 15 23:33:07
2007
@@ -84,6 +84,36 @@
return n;
}
+AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_action_get_data(saml_action_t
*action, axutil_env_t *env)
+{
+ return action->data;
+}
+
+AXIS2_EXTERN axis2_char_t * AXIS2_CALL saml_action_get_namespace(saml_action_t
*action, axutil_env_t *env)
+{
+ return action->name_space;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_action_set_data(saml_action_t *action,
axutil_env_t *env, axis2_char_t *data)
+{
+ if (action->data)
+ {
+ AXIS2_FREE(env->allocator, action->data);
+ }
+ action->data = data;
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_action_set_namespace(saml_action_t *action,
axutil_env_t *env, axis2_char_t *name_space)
+{
+ if (action->name_space)
+ {
+ AXIS2_FREE(env->allocator, action->name_space);
+ }
+ action->name_space = name_space;
+ return AXIS2_SUCCESS;
+}
+
AXIS2_EXTERN saml_evidence_t * AXIS2_CALL saml_evidence_create(axutil_env_t
*env)
{
saml_evidence_t *evidence = (saml_evidence_t
*)AXIS2_MALLOC(env->allocator, sizeof(saml_evidence_t));
@@ -199,6 +229,112 @@
return n;
}
+AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
saml_evidence_get_assertions(saml_evidence_t *evidence, axutil_env_t *env)
+{
+ return evidence->assertions;
+}
+
+AXIS2_EXTERN axutil_array_list_t * AXIS2_CALL
saml_evidence_get_assertion_ids(saml_evidence_t *evidence, axutil_env_t *env)
+{
+ return evidence->assertion_ids;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_evidence_set_assertions(saml_evidence_t
*evidence, axutil_env_t * env, axutil_array_list_t *list)
+{
+ int i = 0, size = 0;
+ saml_assertion_t *a = NULL;
+ if (evidence->assertions)
+ {
+ size = axutil_array_list_size(evidence->assertions, env);
+ for (i = 0; i <size; i++)
+ {
+ a = axutil_array_list_get(evidence->assertions, env, i);
+ if (a)
+ {
+ AXIS2_FREE(env->allocator, a);
+ }
+ }
+ }
+ evidence->assertions = list;
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_evidence_remove_assertion(saml_evidence_t
*evidence, axutil_env_t * env, int index)
+{
+ saml_assertion_t *a = NULL;
+ if (evidence->assertions &&
axutil_array_list_size(evidence->assertions, env) > index)
+ {
+ a = axutil_array_list_remove(evidence->assertions, env, index);
+ if (a)
+ {
+ AXIS2_FREE(env->allocator, a);
+ }
+ return AXIS2_SUCCESS;
+ }
+ else
+ {
+ return AXIS2_FAILURE;
+ }
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_evidence_add_assertion(saml_evidence_t
*evidence, axutil_env_t * env, saml_assertion_t *assertion)
+{
+ if (!evidence->assertions)
+ {
+ evidence->assertions = axutil_array_list_create(env,
SAML_ARRAY_LIST_DEF);
+ }
+ axutil_array_list_add(evidence->assertions, env, assertion);
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_evidence_set_assertion_ids(saml_evidence_t
*evidence, axutil_env_t * env, axutil_array_list_t *list)
+{
+ int i = 0, size = 0;
+ axis2_char_t *a = NULL;
+ if (evidence->assertion_ids)
+ {
+ size = axutil_array_list_size(evidence->assertion_ids, env);
+ for (i = 0; i <size; i++)
+ {
+ a = axutil_array_list_get(evidence->assertion_ids, env,
i);
+ if (a)
+ {
+ AXIS2_FREE(env->allocator, a);
+ }
+ }
+ }
+ evidence->assertion_ids = list;
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_evidence_remove_assertion_id(saml_evidence_t
*evidence, axutil_env_t * env, int index)
+{
+ axis2_char_t *a = NULL;
+ if (evidence->assertion_ids &&
axutil_array_list_size(evidence->assertion_ids, env) > index)
+ {
+ a = axutil_array_list_remove(evidence->assertion_ids, env,
index);
+ if (a)
+ {
+ AXIS2_FREE(env->allocator, a);
+ }
+ return AXIS2_SUCCESS;
+ }
+ else
+ {
+ return AXIS2_FAILURE;
+ }
+}
+
+AXIS2_EXTERN int AXIS2_CALL saml_evidence_add_assertion_id(saml_evidence_t
*evidence, axutil_env_t * env, axis2_char_t *assertion_id)
+{
+ if (!evidence->assertion_ids)
+ {
+ evidence->assertion_ids = axutil_array_list_create(env,
SAML_ARRAY_LIST_DEF);
+ }
+ axutil_array_list_add(evidence->assertion_ids, env, assertion_id);
+ return AXIS2_SUCCESS;
+}
+
AXIS2_EXTERN saml_auth_desicion_stmt_t * AXIS2_CALL
saml_auth_desicion_stmt_create(axutil_env_t *env)
{
@@ -213,6 +349,8 @@
}
return auth_des_stmt;
}
+
+
AXIS2_EXTERN void AXIS2_CALL
saml_auth_desicion_stmt_free(saml_auth_desicion_stmt_t *auth_des_stmt,
axutil_env_t *env)
{
Modified: webservices/rampart/scratch/c/saml/src/condition.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/condition.c?rev=585055&r1=585054&r2=585055&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/src/condition.c (original)
+++ webservices/rampart/scratch/c/saml/src/condition.c Mon Oct 15 23:33:07 2007
@@ -90,7 +90,7 @@
axiom_node_t *n = NULL, *cn = NULL;
axiom_namespace_t *ns = NULL, *cns = NULL;
ns = axiom_namespace_create(env, SAML_NMSP_URI, SAML_PREFIX);
- e = axiom_element_create(env, parent,
SAML_AUDIENCE_RESTRICTION_CONDITION_TYPE, ns, &n);
+ e = axiom_element_create(env, parent,
SAML_AUDIENCE_RESTRICTION_CONDITION, ns, &n);
if (e && cond->audiences)
{
size = axutil_array_list_size(cond->audiences, env);
Modified: webservices/rampart/scratch/c/saml/src/id_type.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/id_type.c?rev=585055&r1=585054&r2=585055&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/src/id_type.c (original)
+++ webservices/rampart/scratch/c/saml/src/id_type.c Mon Oct 15 23:33:07 2007
@@ -18,29 +18,9 @@
#include <SAML.h>
#include <axutil_uuid_gen.h>
-AXIS2_EXTERN int AXIS2_CALL saml_id_init(saml_id_t *id, axutil_env_t *env)
-{
- id->id = NULL;
- return AXIS2_SUCCESS;
-}
-
-AXIS2_EXTERN int AXIS2_CALL saml_id_generate_random_bytes(saml_id_t *id,
axutil_env_t *env)
+AXIS2_EXTERN axis2_char_t * AXIS2_CALL
saml_id_generate_random_bytes(axutil_env_t *env)
{
- if (!id->id)
- {
- id->id = axutil_uuid_gen(env);
- if (id->id)
- {
- return AXIS2_SUCCESS;
- }
- }
- return AXIS2_FAILURE;
+ return axutil_uuid_gen(env);
}
-AXIS2_EXTERN void AXIS2_CALL saml_id_uninit(saml_id_t *id, axutil_env_t *env)
-{
- if (id->id)
- {
- AXIS2_FREE(env->allocator, id->id);
- }
-}
+
Modified: webservices/rampart/scratch/c/saml/test/test_main.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/test/test_main.c?rev=585055&r1=585054&r2=585055&view=diff
==============================================================================
--- webservices/rampart/scratch/c/saml/test/test_main.c (original)
+++ webservices/rampart/scratch/c/saml/test/test_main.c Mon Oct 15 23:33:07 2007
@@ -1,6 +1,74 @@
+#include <SAML.h>
+#include <axutil_env.h>
+
+saml_condition_t * AXIS2_CALL saml_test_condition(axutil_env_t *env);
int main()
{
-
+ axiom_element_t *e = NULL;
+ axiom_node_t *n = NULL;
+ axis2_char_t *a_text = NULL;
+ saml_assertion_t *assertion = NULL;
+ axutil_env_t *env = NULL;
+ axutil_date_time_t *time = NULL;
+ env = axutil_env_create_all("SAML_TEST.log", 1);
+ time = axutil_date_time_create(env);
+ assertion = AXIS2_MALLOC(env->allocator, sizeof(saml_assertion_t));
+ if (assertion)
+ {
+ saml_assertion_init(assertion, env);
+ saml_assertion_set_minor_version(assertion, env, 1);
+ saml_assertion_set_issue_instant(assertion, env, time);
+ saml_assertion_set_issuer(assertion, env,
"http://ws.apache.org/rampart/c");
+ saml_assertion_add_condition(assertion, env,
saml_test_condition(env));
+ saml_assertion_set_not_before(assertion, env,
axutil_date_time_create(env));
+ axiom_element_create(env, NULL, "TEST_ASSERTION", NULL, &n);
+ saml_assertion_to_om(assertion, n, env);
+ a_text = axiom_node_to_string(n, env);
+ }
+ if (assertion)
+ {
+ saml_assertion_uninit(assertion, env);
+ }
+ AXIS2_FREE(env->allocator, assertion);
return 0;
-}
\ No newline at end of file
+}
+
+
+saml_condition_t * AXIS2_CALL saml_test_condition(axutil_env_t *env)
+{
+ saml_audi_restriction_cond_t *arc = NULL;
+ axis2_char_t *audience = NULL, *c_to_om = NULL;
+ axis2_char_t *cond_text = NULL;
+ axiom_element_t *e = NULL;
+ axiom_node_t *n = NULL;
+ saml_condition_t *condition = AXIS2_MALLOC(env->allocator,
sizeof(saml_condition_t));
+ arc = saml_audi_restriction_cond_create(env);
+ saml_condition_set_condition(condition, env, arc,
SAML_COND_AUDI_RESTRICTION);
+ audience = axutil_strdup(env, "www.samle.com");
+ saml_audi_restriction_cond_add_audience(arc, env, audience);
+
+ axiom_element_create(env, NULL, "TEST_COND", NULL, &n);
+ /*saml_condition_to_om(condition, n, env);
+ cond_text = axiom_node_to_string(n, env);*/
+ return condition;
+}
+
+saml_condition_t * AXIS2_CALL saml_test_statement(axutil_env_t *env)
+{
+ saml_auth_stmt_t *a_stmt = NULL;
+ axis2_char_t *audience = NULL, *c_to_om = NULL;
+ axis2_char_t *cond_text = NULL;
+ axiom_element_t *e = NULL;
+ axiom_node_t *n = NULL;
+ saml_condition_t *condition = AXIS2_MALLOC(env->allocator,
sizeof(saml_condition_t));
+ arc = saml_audi_restriction_cond_create(env);
+ saml_condition_set_condition(condition, env, arc,
SAML_COND_AUDI_RESTRICTION);
+ audience = axutil_strdup(env, "www.samle.com");
+ saml_audi_restriction_cond_add_audience(arc, env, audience);
+
+ axiom_element_create(env, NULL, "TEST_COND", NULL, &n);
+ /*saml_condition_to_om(condition, n, env);
+ cond_text = axiom_node_to_string(n, env);*/
+ return condition;
+}