summaryrefslogtreecommitdiffstats
path: root/lasso
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-08-22 16:22:01 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-08-22 16:22:01 +0000
commiteea33a45c765cba6a2ae50b871012fa157416da0 (patch)
treecd3088befe4265122fd0f2eccd97a65018e9c4af /lasso
parent3a48fd24cde5f0a2c779d47ee97fc10f662c9ea7 (diff)
downloadlasso-eea33a45c765cba6a2ae50b871012fa157416da0.tar.gz
lasso-eea33a45c765cba6a2ae50b871012fa157416da0.tar.xz
lasso-eea33a45c765cba6a2ae50b871012fa157416da0.zip
Added a new param "use_xsitype" (gboolean) in constructors of classes:
LassoLibSubject, LassoLibAssertion, LassoLibAuthenticationStatement
Diffstat (limited to 'lasso')
-rw-r--r--lasso/Attic/protocols/elements/assertion.c4
-rw-r--r--lasso/Attic/protocols/elements/authentication_statement.c7
-rw-r--r--lasso/xml/lib_assertion.c70
-rw-r--r--lasso/xml/lib_assertion.h6
-rw-r--r--lasso/xml/lib_authentication_statement.c77
-rw-r--r--lasso/xml/lib_authentication_statement.h6
-rw-r--r--lasso/xml/lib_subject.c76
-rw-r--r--lasso/xml/lib_subject.h4
8 files changed, 208 insertions, 42 deletions
diff --git a/lasso/Attic/protocols/elements/assertion.c b/lasso/Attic/protocols/elements/assertion.c
index ef81fdd3..950ca5c8 100644
--- a/lasso/Attic/protocols/elements/assertion.c
+++ b/lasso/Attic/protocols/elements/assertion.c
@@ -75,7 +75,9 @@ lasso_assertion_new(const xmlChar *issuer,
g_return_val_if_fail(issuer != NULL, NULL);
- assertion = LASSO_NODE(g_object_new(LASSO_TYPE_ASSERTION, NULL));
+ assertion = LASSO_NODE(g_object_new(LASSO_TYPE_ASSERTION,
+ "use_xsitype", TRUE,
+ NULL));
id = lasso_build_unique_id(32);
lasso_saml_assertion_set_assertionID(LASSO_SAML_ASSERTION(assertion),
diff --git a/lasso/Attic/protocols/elements/authentication_statement.c b/lasso/Attic/protocols/elements/authentication_statement.c
index 32d16e87..8c6dbedd 100644
--- a/lasso/Attic/protocols/elements/authentication_statement.c
+++ b/lasso/Attic/protocols/elements/authentication_statement.c
@@ -80,7 +80,9 @@ lasso_authentication_statement_new(const xmlChar *authenticationMethod
g_return_val_if_fail(LASSO_IS_SAML_NAME_IDENTIFIER(idp_identifier), NULL);
- statement = LASSO_NODE(g_object_new(LASSO_TYPE_AUTHENTICATION_STATEMENT, NULL));
+ statement = LASSO_NODE(g_object_new(LASSO_TYPE_AUTHENTICATION_STATEMENT,
+ "use_xsitype", TRUE,
+ NULL));
lasso_saml_authentication_statement_set_authenticationMethod(LASSO_SAML_AUTHENTICATION_STATEMENT(statement),
authenticationMethod);
@@ -91,7 +93,8 @@ lasso_authentication_statement_new(const xmlChar *authenticationMethod
lasso_lib_authentication_statement_set_reauthenticateOnOrAfter(LASSO_LIB_AUTHENTICATION_STATEMENT(statement),
reauthenticateOnOrAfter);
- subject = lasso_lib_subject_new();
+ /* use_xsitype = TRUE */
+ subject = lasso_lib_subject_new(TRUE);
if (sp_identifier == NULL) {
if (idp_identifier != NULL) {
new_identifier = lasso_node_copy(LASSO_NODE(idp_identifier));
diff --git a/lasso/xml/lib_assertion.c b/lasso/xml/lib_assertion.c
index bf9e3859..cdda46b0 100644
--- a/lasso/xml/lib_assertion.c
+++ b/lasso/xml/lib_assertion.c
@@ -71,17 +71,65 @@ lasso_lib_assertion_set_inResponseTo(LassoLibAssertion *node,
/* instance and class init functions */
/*****************************************************************************/
+enum {
+ LASSO_LIB_ASSERTION_USE_XSITYPE = 1
+};
+
static void
-lasso_lib_assertion_instance_init(LassoLibAssertion *node)
+lasso_lib_assertion_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- LassoNodeClass *class = LASSO_NODE_GET_CLASS(LASSO_NODE(node));
+ LassoLibAssertion *self = LASSO_LIB_ASSERTION(object);
+ LassoNodeClass *class = LASSO_NODE_GET_CLASS(LASSO_NODE(object));
- class->set_ns(LASSO_NODE(node), lassoLibHRef, lassoLibPrefix);
- class->set_name(LASSO_NODE(node), "Assertion");
+ switch (property_id) {
+ case LASSO_LIB_ASSERTION_USE_XSITYPE:
+ self->use_xsitype = g_value_get_boolean (value);
+ if (self->use_xsitype == TRUE) {
+ /* namespace and name were already set in parent class
+ LassoSamlAssertion */
+ class->new_ns_prop(LASSO_NODE(object),
+ "type", "lib:AssertionType",
+ lassoXsiHRef, lassoXsiPrefix);
+ }
+ else {
+ /* node name was already set in parent class LassoSamlAssertion
+ just change ns */
+ class->set_ns(LASSO_NODE(object), lassoLibHRef, lassoLibPrefix);
+ }
+ break;
+ default:
+ /* We don't have any other property... */
+ g_assert (FALSE);
+ break;
+ }
+}
+
+static void
+lasso_lib_assertion_instance_init(LassoLibAssertion *node)
+{
}
static void
-lasso_lib_assertion_class_init(LassoLibAssertionClass *klass) {
+lasso_lib_assertion_class_init(LassoLibAssertionClass *g_class,
+ gpointer g_class_data)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (g_class);
+ GParamSpec *pspec;
+
+ /* override parent class methods */
+ gobject_class->set_property = lasso_lib_assertion_set_property;
+
+ pspec = g_param_spec_boolean ("use_xsitype",
+ "use_xsitype",
+ "using xsi:type",
+ FALSE,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE);
+ g_object_class_install_property (gobject_class,
+ LASSO_LIB_ASSERTION_USE_XSITYPE,
+ pspec);
}
GType lasso_lib_assertion_get_type() {
@@ -107,6 +155,14 @@ GType lasso_lib_assertion_get_type() {
return this_type;
}
-LassoNode* lasso_lib_assertion_new() {
- return LASSO_NODE(g_object_new(LASSO_TYPE_LIB_ASSERTION, NULL));
+LassoNode*
+lasso_lib_assertion_new(gboolean use_xsitype)
+{
+ LassoNode *node;
+
+ node = LASSO_NODE(g_object_new(LASSO_TYPE_LIB_ASSERTION,
+ "use_xsitype", use_xsitype,
+ NULL));
+
+ return (node);
}
diff --git a/lasso/xml/lib_assertion.h b/lasso/xml/lib_assertion.h
index 88dd59fd..92fa6d15 100644
--- a/lasso/xml/lib_assertion.h
+++ b/lasso/xml/lib_assertion.h
@@ -47,14 +47,16 @@ typedef struct _LassoLibAssertionClass LassoLibAssertionClass;
struct _LassoLibAssertion {
LassoSamlAssertion parent;
/*< private >*/
+ gboolean use_xsitype;
};
struct _LassoLibAssertionClass {
LassoSamlAssertionClass parent;
};
-LASSO_EXPORT GType lasso_lib_assertion_get_type(void);
-LASSO_EXPORT LassoNode* lasso_lib_assertion_new(void);
+LASSO_EXPORT GType lasso_lib_assertion_get_type (void);
+
+LASSO_EXPORT LassoNode* lasso_lib_assertion_new (gboolean use_xsitype);
LASSO_EXPORT void lasso_lib_assertion_set_inResponseTo (LassoLibAssertion *,
const xmlChar *);
diff --git a/lasso/xml/lib_authentication_statement.c b/lasso/xml/lib_authentication_statement.c
index f92852c0..6e9d94ff 100644
--- a/lasso/xml/lib_authentication_statement.c
+++ b/lasso/xml/lib_authentication_statement.c
@@ -86,18 +86,69 @@ lasso_lib_authentication_statement_set_sessionIndex(LassoLibAuthenticationStatem
/* instance and class init functions */
/*****************************************************************************/
+enum {
+ LASSO_LIB_AUTHENTICATION_STATEMENT_USE_XSITYPE = 1
+};
+
+static void
+lasso_lib_authentication_statement_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ LassoLibAuthenticationStatement *self = LASSO_LIB_AUTHENTICATION_STATEMENT(object);
+ LassoNodeClass *class = LASSO_NODE_GET_CLASS(LASSO_NODE(object));
+
+ switch (property_id) {
+ case LASSO_LIB_AUTHENTICATION_STATEMENT_USE_XSITYPE:
+ self->use_xsitype = g_value_get_boolean (value);
+ if (self->use_xsitype == TRUE) {
+ /* namespace and name were already set in parent class
+ LassoSamlAuthenticationStatement */
+ class->new_ns_prop(LASSO_NODE(object),
+ "type", "lib:AuthenticationStatementType",
+ lassoXsiHRef, lassoXsiPrefix);
+ }
+ else {
+ /* node name was already set in parent class
+ LassoSamlAuthenticationStatement, just change ns */
+ class->set_ns(LASSO_NODE(object), lassoLibHRef, lassoLibPrefix);
+ }
+ break;
+ default:
+ /* We don't have any other property... */
+ g_assert (FALSE);
+ break;
+ }
+}
+
static void
lasso_lib_authentication_statement_instance_init(LassoLibAuthenticationStatement *node)
{
- LassoNodeClass *class = LASSO_NODE_GET_CLASS(LASSO_NODE(node));
+/* LassoNodeClass *class = LASSO_NODE_GET_CLASS(LASSO_NODE(node)); */
- class->set_name(LASSO_NODE(node), "AuthenticationStatement");
- class->set_ns(LASSO_NODE(node), lassoLibHRef, lassoLibPrefix);
+/* class->set_name(LASSO_NODE(node), "AuthenticationStatement"); */
+/* class->set_ns(LASSO_NODE(node), lassoLibHRef, lassoLibPrefix); */
}
static void
-lasso_lib_authentication_statement_class_init(LassoLibAuthenticationStatementClass *klass)
+lasso_lib_authentication_statement_class_init(LassoLibAuthenticationStatementClass *g_class,
+ gpointer g_class_data)
{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (g_class);
+ GParamSpec *pspec;
+
+ /* override parent class methods */
+ gobject_class->set_property = lasso_lib_authentication_statement_set_property;
+
+ pspec = g_param_spec_boolean ("use_xsitype",
+ "use_xsitype",
+ "using xsi:type",
+ FALSE,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE);
+ g_object_class_install_property (gobject_class,
+ LASSO_LIB_AUTHENTICATION_STATEMENT_USE_XSITYPE,
+ pspec);
}
GType lasso_lib_authentication_statement_get_type() {
@@ -123,14 +174,14 @@ GType lasso_lib_authentication_statement_get_type() {
return this_type;
}
-/**
- * lasso_lib_authentication_statement_new:
- *
- * Creates a new <lib:AuthenticationStatement> node object.
- *
- * Return value: the new @LassoLibAuthenticationStatement
- **/
-LassoNode* lasso_lib_authentication_statement_new()
+LassoNode*
+lasso_lib_authentication_statement_new(gboolean use_xsitype)
{
- return LASSO_NODE(g_object_new(LASSO_TYPE_LIB_AUTHENTICATION_STATEMENT, NULL));
+ LassoNode *node;
+
+ node = LASSO_NODE(g_object_new(LASSO_TYPE_LIB_AUTHENTICATION_STATEMENT,
+ "use_xsitype", use_xsitype,
+ NULL));
+
+ return (node);
}
diff --git a/lasso/xml/lib_authentication_statement.h b/lasso/xml/lib_authentication_statement.h
index 12efd326..d368a8a5 100644
--- a/lasso/xml/lib_authentication_statement.h
+++ b/lasso/xml/lib_authentication_statement.h
@@ -48,6 +48,7 @@ typedef struct _LassoLibAuthenticationStatementClass LassoLibAuthenticationState
struct _LassoLibAuthenticationStatement {
LassoSamlAuthenticationStatement parent;
/*< private >*/
+ gboolean use_xsitype;
};
struct _LassoLibAuthenticationStatementClass {
@@ -55,8 +56,9 @@ struct _LassoLibAuthenticationStatementClass {
/*< vtable >*/
};
-LASSO_EXPORT GType lasso_lib_authentication_statement_get_type(void);
-LASSO_EXPORT LassoNode* lasso_lib_authentication_statement_new(void);
+LASSO_EXPORT GType lasso_lib_authentication_statement_get_type (void);
+
+LASSO_EXPORT LassoNode* lasso_lib_authentication_statement_new (gboolean use_xsitype);
LASSO_EXPORT void lasso_lib_authentication_statement_set_authnContext (LassoLibAuthenticationStatement *node,
LassoLibAuthnContext *authnContext);
diff --git a/lasso/xml/lib_subject.c b/lasso/xml/lib_subject.c
index 4573f175..fdfbe151 100644
--- a/lasso/xml/lib_subject.c
+++ b/lasso/xml/lib_subject.c
@@ -61,17 +61,65 @@ lasso_lib_subject_set_idpProvidedNameIdentifier(LassoLibSubject *node,
/* instance and class init functions */
/*****************************************************************************/
+enum {
+ LASSO_LIB_SUBJECT_USE_XSITYPE = 1
+};
+
static void
-lasso_lib_subject_instance_init(LassoLibSubject *node)
+lasso_lib_subject_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- LassoNodeClass *class = LASSO_NODE_GET_CLASS(LASSO_NODE(node));
+ LassoLibSubject *self = LASSO_LIB_SUBJECT(object);
+ LassoNodeClass *class = LASSO_NODE_GET_CLASS(LASSO_NODE(object));
- class->set_ns(LASSO_NODE(node), lassoLibHRef, lassoLibPrefix);
- class->set_name(LASSO_NODE(node), "Subject");
+ switch (property_id) {
+ case LASSO_LIB_SUBJECT_USE_XSITYPE:
+ self->use_xsitype = g_value_get_boolean (value);
+ if (self->use_xsitype == TRUE) {
+ /* namespace and name were already set in parent class
+ LassoSamlAssertion */
+ class->new_ns_prop(LASSO_NODE(object),
+ "type", "lib:SubjectType",
+ lassoXsiHRef, lassoXsiPrefix);
+ }
+ else {
+ /* node name was already set in parent class LassoSamlAssertion
+ just change ns */
+ class->set_ns(LASSO_NODE(object), lassoLibHRef, lassoLibPrefix);
+ }
+ break;
+ default:
+ /* We don't have any other property... */
+ g_assert (FALSE);
+ break;
+ }
}
static void
-lasso_lib_subject_class_init(LassoLibSubjectClass *klass) {
+lasso_lib_subject_instance_init(LassoLibSubject *node)
+{
+}
+
+static void
+lasso_lib_subject_class_init(LassoLibSubjectClass *g_class,
+ gpointer g_class_data)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (g_class);
+ GParamSpec *pspec;
+
+ /* override parent class methods */
+ gobject_class->set_property = lasso_lib_subject_set_property;
+
+ pspec = g_param_spec_boolean ("use_xsitype",
+ "use_xsitype",
+ "using xsi:type",
+ FALSE,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE);
+ g_object_class_install_property (gobject_class,
+ LASSO_LIB_SUBJECT_USE_XSITYPE,
+ pspec);
}
GType lasso_lib_subject_get_type() {
@@ -97,14 +145,14 @@ GType lasso_lib_subject_get_type() {
return this_type;
}
-/**
- * lasso_lib_subject_new:
- *
- * Creates a new <saml:Subject> node object.
- *
- * Return value: the new @LassoLibSubject
- **/
-LassoNode* lasso_lib_subject_new()
+LassoNode*
+lasso_lib_subject_new(gboolean use_xsitype)
{
- return LASSO_NODE(g_object_new(LASSO_TYPE_LIB_SUBJECT, NULL));
+ LassoNode *node;
+
+ node = LASSO_NODE(g_object_new(LASSO_TYPE_LIB_SUBJECT,
+ "use_xsitype", use_xsitype,
+ NULL));
+
+ return (node);
}
diff --git a/lasso/xml/lib_subject.h b/lasso/xml/lib_subject.h
index a7773d2d..e8b3dbff 100644
--- a/lasso/xml/lib_subject.h
+++ b/lasso/xml/lib_subject.h
@@ -46,6 +46,7 @@ typedef struct _LassoLibSubjectClass LassoLibSubjectClass;
struct _LassoLibSubject {
LassoSamlSubject parent;
/*< private >*/
+ gboolean use_xsitype;
};
struct _LassoLibSubjectClass {
@@ -53,7 +54,8 @@ struct _LassoLibSubjectClass {
};
LASSO_EXPORT GType lasso_lib_subject_get_type(void);
-LASSO_EXPORT LassoNode* lasso_lib_subject_new(void);
+
+LASSO_EXPORT LassoNode* lasso_lib_subject_new(gboolean use_xsitype);
LASSO_EXPORT void lasso_lib_subject_set_idpProvidedNameIdentifier(LassoLibSubject *node,
LassoLibIDPProvidedNameIdentifier *idpProvidedNameIdentifier);