From eea33a45c765cba6a2ae50b871012fa157416da0 Mon Sep 17 00:00:00 2001 From: Valery Febvre Date: Sun, 22 Aug 2004 16:22:01 +0000 Subject: Added a new param "use_xsitype" (gboolean) in constructors of classes: LassoLibSubject, LassoLibAssertion, LassoLibAuthenticationStatement --- lasso/Attic/protocols/elements/assertion.c | 4 +- .../protocols/elements/authentication_statement.c | 7 +- lasso/xml/lib_assertion.c | 70 ++++++++++++++++++-- lasso/xml/lib_assertion.h | 6 +- lasso/xml/lib_authentication_statement.c | 77 ++++++++++++++++++---- lasso/xml/lib_authentication_statement.h | 6 +- lasso/xml/lib_subject.c | 76 +++++++++++++++++---- lasso/xml/lib_subject.h | 4 +- 8 files changed, 208 insertions(+), 42 deletions(-) (limited to 'lasso') 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 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 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); -- cgit