diff options
-rw-r--r-- | lasso/xml/lib_authn_request_envelope.c | 188 | ||||
-rw-r--r-- | lasso/xml/lib_authn_request_envelope.h | 86 | ||||
-rw-r--r-- | lasso/xml/lib_authn_response_envelope.c | 111 | ||||
-rw-r--r-- | lasso/xml/lib_authn_response_envelope.h | 72 |
4 files changed, 457 insertions, 0 deletions
diff --git a/lasso/xml/lib_authn_request_envelope.c b/lasso/xml/lib_authn_request_envelope.c new file mode 100644 index 00000000..a2235496 --- /dev/null +++ b/lasso/xml/lib_authn_request_envelope.c @@ -0,0 +1,188 @@ +/* $Id$ + * + * Lasso - A free implementation of the Liberty Alliance specifications. + * + * Copyright (C) 2004 Entr'ouvert + * http://lasso.entrouvert.org + * + * Authors: Nicolas Clapies <nclapies@entrouvert.com> + * Valery Febvre <vfebvre@easter-eggs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <lasso/xml/lib_authn_request_envelope.h> + +/* <xs:element name="AuthnRequestEnvelope" type="AuthnRequestEnvelopeType"/> */ +/* <xs:complexType name="AuthnRequestEnvelopeType"> */ +/* <xs:complexContent> */ +/* <xs:extension base="RequestEnvelopeType"> */ +/* <xs:sequence> */ +/* <xs:element ref="AuthnRequest"/> */ +/* <xs:element ref="ProviderID"/> */ +/* <xs:element name="ProviderName" type="xs:string" minOccurs="0"/> */ +/* <xs:element name="AssertionConsumerServiceURL" type="xs:anyURI"/> */ +/* <xs:element ref="IDPList" minOccurs="0"/> */ +/* <xs:element name="IsPassive" type="xs:boolean" minOccurs="0"/> */ +/* </xs:sequence> */ +/* </xs:extension> */ +/* </xs:complexContent> */ +/* </xs:complexType> */ +/* <xs:complexType name="RequestEnvelopeType"> */ +/* <xs:sequence> */ +/* <xs:element ref="Extension" minOccurs="0" maxOccurs="unbounded"/> */ +/* </xs:sequence> */ +/* </xs:complexType> */ +/* <xs:element name="IDPList" type="IDPListType"/> */ +/* <xs:complexType name="IDPListType"> */ +/* <xs:sequence> */ +/* <xs:element ref="IDPEntries"/> */ +/* <xs:element ref="GetComplete" minOccurs="0"/> */ +/* </xs:sequence> */ +/* </xs:complexType> */ +/* <xs:complexType name="ResponseEnvelopeType"> */ +/* <xs:sequence> */ +/* <xs:element ref="Extension" minOccurs="0" maxOccurs="unbounded"/> */ +/* </xs:sequence> */ + + +/*****************************************************************************/ +/* public methods */ +/*****************************************************************************/ + +void +lasso_lib_authn_request_envelope_set_extension(LassoLibAuthnRequestEnvelope *node, + LassoNode *extension) +{ + g_assert(LASSO_IS_LIB_AUTHN_REQUEST_ENVELOPE(node)); + g_assert(LASSO_IS_NODE(extension)); + + LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); + class->add_child(LASSO_NODE(node), extension, FALSE); +} + +void lasso_lib_authn_request_envelope_set_authnRequest(LassoLibAuthnRequestEnvelope *node, + LassoLibAuthnRequest *request) +{ + g_assert(LASSO_IS_LIB_AUTHN_REQUEST_ENVELOPE(node)); + g_assert(LASSO_IS_LIB_AUTHN_REQUEST(request)); + + LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); + class->add_child(LASSO_NODE(node), LASSO_NODE(request), FALSE); +} + +void +lasso_lib_authn_request_envelope_set_assertionConsumerServiceURL(LassoLibAuthnRequestEnvelope *node, + const xmlChar *assertionConsumerServiceURL) +{ + g_assert(LASSO_IS_LIB_AUTHN_REQUEST_ENVELOPE(node)); + g_assert(assertionConsumerServiceURL != NULL); + + LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); + class->new_child(LASSO_NODE(node), "AssertionConsumerServiceURL", assertionConsumerServiceURL, FALSE); +} + +void +lasso_lib_authn_request_envelope_set_providerID(LassoLibAuthnRequestEnvelope *node, + const xmlChar *providerID) +{ + g_assert(LASSO_IS_LIB_AUTHN_REQUEST_ENVELOPE(node)); + g_assert(providerID != NULL); + /* FIXME : providerID lenght SHOULD be <= 1024 */ + + LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); + class->new_child(LASSO_NODE(node), "ProviderID", providerID, FALSE); +} + +void lasso_lib_authn_request_envelope_set_providerName(LassoLibAuthnRequestEnvelope *node, + const xmlChar *providerName) +{ + g_assert(LASSO_IS_LIB_AUTHN_REQUEST_ENVELOPE(node)); + g_assert(providerName != NULL); + + LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); + class->new_child(LASSO_NODE(node), "ProviderName", providerName, FALSE); +} + +void lasso_lib_authn_request_envelope_set_idpList(LassoLibAuthnRequestEnvelope *node, + LassoLibIDPList *idpList) +{ + g_assert(LASSO_IS_LIB_AUTHN_REQUEST_ENVELOPE(node)); + g_assert(LASSO_IS_LIB_IDP_LIST(idpList)); + + LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); + class->add_child(LASSO_NODE(node), LASSO_NODE(idpList), FALSE); +} + +void +lasso_lib_authn_request_envelope_set_isPassive(LassoLibAuthnRequestEnvelope *node, + gboolean isPassive) { + g_assert(LASSO_IS_LIB_AUTHN_REQUEST_ENVELOPE(node)); + g_assert(isPassive == FALSE || isPassive == TRUE); + + LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); + if (isPassive == FALSE) { + class->new_child(LASSO_NODE (node), "IsPassive", "false", FALSE); + } + if (isPassive == TRUE) { + class->new_child(LASSO_NODE (node), "IsPassive", "true", FALSE); + } +} + +/*****************************************************************************/ +/* instance and class init functions */ +/*****************************************************************************/ + +static void +lasso_lib_authn_request_envelope_instance_init(LassoLibAuthnRequestEnvelope *node) +{ + LassoNodeClass *class = LASSO_NODE_GET_CLASS(LASSO_NODE(node)); + + class->set_ns(LASSO_NODE(node), lassoLibHRef, lassoLibPrefix); + class->set_name(LASSO_NODE(node), "AuthnRequestEnvelope"); +} + +static void +lasso_lib_authn_request_envelope_class_init(LassoLibAuthnRequestEnvelopeClass *class) +{ +} + +GType lasso_lib_authn_request_envelope_get_type() { + static GType this_type = 0; + + if (!this_type) { + static const GTypeInfo this_info = { + sizeof (LassoLibAuthnRequestEnvelopeClass), + NULL, + NULL, + (GClassInitFunc) lasso_lib_authn_request_envelope_class_init, + NULL, + NULL, + sizeof(LassoLibAuthnRequestEnvelope), + 0, + (GInstanceInitFunc) lasso_lib_authn_request_envelope_instance_init, + }; + + this_type = g_type_register_static(LASSO_TYPE_NODE, + "LassoLibAuthnRequestEnvelope", + &this_info, 0); + } + return this_type; +} + +LassoNode* lasso_lib_authn_request_envelope_new() { + return LASSO_NODE(g_object_new(LASSO_TYPE_LIB_AUTHN_REQUEST_ENVELOPE, + NULL)); +} diff --git a/lasso/xml/lib_authn_request_envelope.h b/lasso/xml/lib_authn_request_envelope.h new file mode 100644 index 00000000..e5bf7474 --- /dev/null +++ b/lasso/xml/lib_authn_request_envelope.h @@ -0,0 +1,86 @@ +/* $Id$ + * + * Lasso - A free implementation of the Liberty Alliance specifications. + * + * Copyright (C) 2004 Entr'ouvert + * http://lasso.entrouvert.org + * + * Authors: Nicolas Clapies <nclapies@entrouvert.com> + * Valery Febvre <vfebvre@easter-eggs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __LASSO_LIB_AUTHN_REQUEST_ENVELOPE_H__ +#define __LASSO_LIB_AUTHN_REQUEST_ENVELOPE_H__ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include <lasso/xml/xml.h> +#include <lasso/xml/lib_idp_list.h> +#include <lasso/xml/lib_authn_request.h> + +#define LASSO_TYPE_LIB_AUTHN_REQUEST_ENVELOPE (lasso_lib_authn_request_envelope_get_type()) +#define LASSO_LIB_AUTHN_REQUEST_ENVELOPE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_LIB_AUTHN_REQUEST_ENVELOPE, LassoLibAuthnRequestEnvelope)) +#define LASSO_LIB_AUTHN_REQUEST_ENVELOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), LASSO_TYPE_LIB_AUTHN_REQUEST_ENVELOPE, LassoLibAuthnRequestEnvelopeClass)) +#define LASSO_IS_LIB_AUTHN_REQUEST_ENVELOPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), LASSO_TYPE_LIB_AUTHN_REQUEST_ENVELOPE)) +#define LASSO_IS_LIB_AUTHN_REQUEST_ENVELOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_LIB_AUTHN_REQUEST_ENVELOPE)) +#define LASSO_LIB_AUTHN_REQUEST_ENVELOPE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), LASSO_TYPE_LIB_AUTHN_REQUEST_ENVELOPE, LassoLibAuthnRequestEnvelopeClass)) + +typedef struct _LassoLibAuthnRequestEnvelope LassoLibAuthnRequestEnvelope; +typedef struct _LassoLibAuthnRequestEnvelopeClass LassoLibAuthnRequestEnvelopeClass; + +struct _LassoLibAuthnRequestEnvelope { + LassoNode parent; + + /*< private >*/ +}; + +struct _LassoLibAuthnRequestEnvelopeClass { + LassoNodeClass parent; +}; + +LASSO_EXPORT GType lasso_lib_authn_request_envelope_get_type (void); + +LASSO_EXPORT LassoNode* lasso_lib_authn_request_envelope_new (void); + +LASSO_EXPORT void lasso_lib_authn_request_envelope_set_extension (LassoLibAuthnRequestEnvelope *node, + LassoNode *extension); + +LASSO_EXPORT void lasso_lib_authn_request_envelope_set_authnRequest (LassoLibAuthnRequestEnvelope *node, + LassoLibAuthnRequest *request); + +LASSO_EXPORT void lasso_lib_authn_request_envelope_set_assertionConsumerServiceURL (LassoLibAuthnRequestEnvelope *node, + const xmlChar *assertionConsumerServiceURL); + +LASSO_EXPORT void lasso_lib_authn_request_envelope_set_providerID (LassoLibAuthnRequestEnvelope *node, + const xmlChar *providerID); + +LASSO_EXPORT void lasso_lib_authn_request_envelope_set_providerName (LassoLibAuthnRequestEnvelope *node, + const xmlChar *providerName); + +LASSO_EXPORT void lasso_lib_authn_request_envelope_set_idpList (LassoLibAuthnRequestEnvelope *node, + LassoLibIDPList *idpList); + +LASSO_EXPORT void lasso_lib_authn_request_envelope_set_isPassive (LassoLibAuthnRequestEnvelope *node, + gboolean isPassive); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __LASSO_LIB_AUTHN_REQUEST_ENVELOPE_H__ */ diff --git a/lasso/xml/lib_authn_response_envelope.c b/lasso/xml/lib_authn_response_envelope.c new file mode 100644 index 00000000..2b23e4e6 --- /dev/null +++ b/lasso/xml/lib_authn_response_envelope.c @@ -0,0 +1,111 @@ +/* $Id$ + * + * Lasso - A free implementation of the Liberty Alliance specifications. + * + * Copyright (C) 2004 Entr'ouvert + * http://lasso.entrouvert.org + * + * Authors: Nicolas Clapies <nclapies@entrouvert.com> + * Valery Febvre <vfebvre@easter-eggs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <lasso/xml/lib_authn_response_envelope.h> + + + +/*****************************************************************************/ +/* public methods */ +/*****************************************************************************/ + +void +lasso_lib_authn_response_envelope_set_extension(LassoLibAuthnResponseEnvelope *node, + LassoNode *extension) +{ + g_assert(LASSO_IS_LIB_AUTHN_RESPONSE_ENVELOPE(node)); + g_assert(LASSO_NODE(extension)); + + LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); + class->add_child(LASSO_NODE(extension), extension, FALSE); +} + +void +lasso_lib_authn_response_envelope_set_authnResponse(LassoLibAuthnResponseEnvelope *node, + LassoLibAuthnResponse *authnResponse_node) +{ + g_assert(LASSO_IS_LIB_AUTHN_RESPONSE_ENVELOPE(node)); + g_assert(LASSO_IS_LIB_AUTHN_RESPONSE(authnResponse_node)); + + LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); + class->add_child(LASSO_NODE(node), LASSO_NODE(authnResponse_node), FALSE); +} + +void +lasso_lib_authn_response_envelope_set_assertionConsumerServiceURL(LassoLibAuthnResponseEnvelope *node, + const xmlChar *url) { + g_assert(LASSO_IS_LIB_AUTHN_RESPONSE_ENVELOPE(node)); + g_assert(url != NULL); + + LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); + class->new_child(LASSO_NODE (node), "AssertionConsumerServiceURL", + url, FALSE); +} + +/*****************************************************************************/ +/* instance and class init functions */ +/*****************************************************************************/ + +static void +lasso_lib_authn_response_envelope_instance_init(LassoLibAuthnResponseEnvelope *node) +{ + LassoNodeClass *class = LASSO_NODE_GET_CLASS(LASSO_NODE(node)); + + class->set_ns(LASSO_NODE(node), lassoLibHRef, lassoLibPrefix); + class->set_name(LASSO_NODE(node), "AuthnResponseEnvelope"); +} + +static void +lasso_lib_authn_response_envelope_class_init(LassoLibAuthnResponseEnvelopeClass *class) +{ +} + +GType lasso_lib_authn_response_envelope_get_type() { + static GType this_type = 0; + + if (!this_type) { + static const GTypeInfo this_info = { + sizeof (LassoLibAuthnResponseEnvelopeClass), + NULL, + NULL, + (GClassInitFunc) lasso_lib_authn_response_envelope_class_init, + NULL, + NULL, + sizeof(LassoLibAuthnResponseEnvelope), + 0, + (GInstanceInitFunc) lasso_lib_authn_response_envelope_instance_init, + }; + + this_type = g_type_register_static(LASSO_TYPE_NODE, + "LassoLibAuthnResponseEnvelope", + &this_info, 0); + } + return this_type; +} + +LassoNode* lasso_lib_authn_response_envelope_new() { + return LASSO_NODE(g_object_new(LASSO_TYPE_LIB_AUTHN_RESPONSE_ENVELOPE, + NULL)); +} diff --git a/lasso/xml/lib_authn_response_envelope.h b/lasso/xml/lib_authn_response_envelope.h new file mode 100644 index 00000000..29c3b38b --- /dev/null +++ b/lasso/xml/lib_authn_response_envelope.h @@ -0,0 +1,72 @@ +/* $Id$ + * + * Lasso - A free implementation of the Liberty Alliance specifications. + * + * Copyright (C) 2004 Entr'ouvert + * http://lasso.entrouvert.org + * + * Authors: Nicolas Clapies <nclapies@entrouvert.com> + * Valery Febvre <vfebvre@easter-eggs.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __LASSO_LIB_AUTHN_RESPONSE_ENVELOPE_H__ +#define __LASSO_LIB_AUTHN_RESPONSE_ENVELOPE_H__ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include <lasso/xml/lib_idp_list.h> +#include <lasso/xml/lib_authn_response.h> + +#define LASSO_TYPE_LIB_AUTHN_RESPONSE_ENVELOPE (lasso_lib_authn_response_envelope_get_type()) +#define LASSO_LIB_AUTHN_RESPONSE_ENVELOPE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_LIB_AUTHN_RESPONSE_ENVELOPE, LassoLibAuthnResponseEnvelope)) +#define LASSO_LIB_AUTHN_RESPONSE_ENVELOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), LASSO_TYPE_LIB_AUTHN_RESPONSE_ENVELOPE, LassoLibAuthnResponseEnvelopeClass)) +#define LASSO_IS_LIB_AUTHN_RESPONSE_ENVELOPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), LASSO_TYPE_LIB_AUTHN_RESPONSE_ENVELOPE)) +#define LASSO_IS_LIB_AUTHN_RESPONSE_ENVELOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_LIB_AUTHN_RESPONSE_ENVELOPE)) +#define LASSO_LIB_AUTHN_RESPONSE_ENVELOPE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), LASSO_TYPE_LIB_AUTHN_RESPONSE_ENVELOPE, LassoLibAuthnResponseEnvelopeClass)) + +typedef struct _LassoLibAuthnResponseEnvelope LassoLibAuthnResponseEnvelope; +typedef struct _LassoLibAuthnResponseEnvelopeClass LassoLibAuthnResponseEnvelopeClass; + +struct _LassoLibAuthnResponseEnvelope { + LassoNode parent; + /*< private >*/ +}; + +struct _LassoLibAuthnResponseEnvelopeClass { + LassoNodeClass parent; +}; + +LASSO_EXPORT GType lasso_lib_authn_response_envelope_get_type (void); + +LASSO_EXPORT LassoNode* lasso_lib_authn_response_envelope_new (void); + +LASSO_EXPORT void lasso_lib_authn_response_envelope_set_extension (LassoLibAuthnResponseEnvelope *node, + LassoNode *extension); + +LASSO_EXPORT void lasso_lib_authn_response_envelope_set_authnResponse (LassoLibAuthnResponseEnvelope *node, + LassoLibAuthnResponse *authnResponse); + +LASSO_EXPORT void lasso_lib_authn_response_envelope_set_assertionConsumerServiceURL (LassoLibAuthnResponseEnvelope *node, + const xmlChar *url); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __LASSO_LIB_AUTHN_RESPONSE_ENVELOPE_H__ */ |