diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2004-08-26 15:32:48 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2004-08-26 15:32:48 +0000 |
| commit | d792b5aa1696531db70f33012ca8648f6e8576fd (patch) | |
| tree | da96546733b5e5a51a84f5b94df11ff9984a28a5 | |
| parent | 8404a80debd01abc9e48da437b38f6dd7445e59c (diff) | |
Renamed register_name_identifier.* to name_registration.* files
| -rw-r--r-- | lasso/id-ff/Makefile.am | 4 | ||||
| -rw-r--r-- | lasso/id-ff/name_registration.c | 572 | ||||
| -rw-r--r-- | lasso/id-ff/name_registration.h | 87 |
3 files changed, 661 insertions, 2 deletions
diff --git a/lasso/id-ff/Makefile.am b/lasso/id-ff/Makefile.am index c81b25c5..33001c1a 100644 --- a/lasso/id-ff/Makefile.am +++ b/lasso/id-ff/Makefile.am @@ -18,8 +18,8 @@ liblasso_environs_la_SOURCES = \ login.c \ logout.c \ name_identifier_mapping.c \ + name_registration.c \ profile.c \ - register_name_identifier.c \ server.c \ session.c @@ -30,7 +30,7 @@ liblassoinclude_HEADERS = \ login.h \ logout.h \ name_identifier_mapping.h \ + name_registration.h \ profile.h \ - register_name_identifier.h \ server.h \ session.h diff --git a/lasso/id-ff/name_registration.c b/lasso/id-ff/name_registration.c new file mode 100644 index 00000000..f45a0dc5 --- /dev/null +++ b/lasso/id-ff/name_registration.c @@ -0,0 +1,572 @@ +/* $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/environs/name_registration.h> + +static GObjectClass *parent_class = NULL; + +/*****************************************************************************/ +/* public methods */ +/*****************************************************************************/ + +/** + * lasso_name_registration_dump: + * @name_registration: the register name identifier object + * + * This method builds a dump of the register name identifier object + * + * Return value: a newly allocated string or NULL + **/ +gchar * +lasso_name_registration_dump(LassoNameRegistration *name_registration) +{ + gchar *dump; + + g_return_val_if_fail(LASSO_IS_NAME_REGISTRATION(name_registration), NULL); + + dump = NULL; + + return(dump); +} + +/** + * lasso_name_registration_build_request_msg: + * @name_registration: the register name identifier object + * + * This method build a register name identifier request message. + * + * It gets the register name identifier protocol profile and : + * if it is a SOAP method, then it builds the register name identifier request SOAP message, + * optionaly signs his node, set the msg_body attribute, gets the SoapEndpoint + * url and set the msg_url attribute. + * + * if it is a HTTP-Redirect method, then it builds the register name identifier request QUERY message + * ( optionaly signs the request message ), builds the request url with register name identifier url + * with register name identifier service url, set the msg_url attribute of the register name identifier + * object, set the msg_body to NULL. + * + * Return value: 0 if OK else < 0 + **/ +gint +lasso_name_registration_build_request_msg(LassoNameRegistration *name_registration) +{ + LassoProfile *profile; + LassoProvider *provider; + xmlChar *protocolProfile; + gint ret = 0; + + g_return_val_if_fail(LASSO_IS_NAME_REGISTRATION(name_registration), -1); + + profile = LASSO_PROFILE(name_registration); + + /* get the provider */ + provider = lasso_server_get_provider_ref(profile->server, + profile->remote_providerID, + NULL); + if (provider == NULL) { + message(G_LOG_LEVEL_CRITICAL, "Provider %s not found\n", profile->remote_providerID); + ret = -1; + goto done; + } + + /* get the prototocol profile of the name_registration */ + protocolProfile = lasso_provider_get_registerNameIdentifierProtocolProfile(provider, + lassoProviderTypeIdp, + NULL); + if (protocolProfile == NULL) { + message(G_LOG_LEVEL_CRITICAL, "Name_Registration Protocol profile not found\n"); + ret = -1; + goto done; + } + + if (xmlStrEqual(protocolProfile, lassoLibProtocolProfileRniIdpSoap) || \ + xmlStrEqual(protocolProfile, lassoLibProtocolProfileRniSpSoap)) { + profile->request_type = lassoHttpMethodSoap; + /* sign the request message */ + lasso_samlp_request_abstract_set_signature(LASSO_SAMLP_REQUEST_ABSTRACT(profile->request), + profile->server->signature_method, + profile->server->private_key, + profile->server->certificate); + + /* build the registration request message */ + profile->msg_url = lasso_provider_get_soapEndpoint(provider, + lassoProviderTypeIdp, + NULL); + profile->msg_body = lasso_node_export_to_soap(profile->request); + } + else if (xmlStrEqual(protocolProfile,lassoLibProtocolProfileRniIdpHttp) || \ + xmlStrEqual(protocolProfile,lassoLibProtocolProfileRniSpHttp)) { + /* temporary vars to store url, query and separator */ + gchar *url, *query; + const gchar *separator = "?"; + + /* build and optionaly sign the query message and build the register name identifier request url */ + url = lasso_provider_get_singleLogoutServiceURL(provider, profile->provider_type, NULL); + query = lasso_node_export_to_query(profile->request, + profile->server->signature_method, + profile->server->private_key); + profile->msg_url = g_strjoin(separator, url, query); + profile->msg_body = NULL; + xmlFree(url); + xmlFree(query); + } + else { + message(G_LOG_LEVEL_CRITICAL, "Invalid protocol Profile for register name identifier\n"); + ret = -1; + goto done; + } + + done: + + return(ret); +} + +gint +lasso_name_registration_build_response_msg(LassoNameRegistration *name_registration) +{ + LassoProfile *profile; + LassoProvider *provider; + xmlChar *protocolProfile; + + g_return_val_if_fail(LASSO_IS_NAME_REGISTRATION(name_registration), -1); + + profile = LASSO_PROFILE(name_registration); + + provider = lasso_server_get_provider_ref(profile->server, + profile->remote_providerID, + NULL); + if (provider == NULL) { + message(G_LOG_LEVEL_CRITICAL, "Provider not found (ProviderID = %s)\n", profile->remote_providerID); + return(-2); + } + + protocolProfile = lasso_provider_get_registerNameIdentifierProtocolProfile(provider, + lassoProviderTypeSp, + NULL); + if (protocolProfile == NULL) { + message(G_LOG_LEVEL_CRITICAL, "Register name identifier protocol profile not found\n"); + return(-3); + } + + if (xmlStrEqual(protocolProfile, lassoLibProtocolProfileSloSpSoap) || \ + xmlStrEqual(protocolProfile, lassoLibProtocolProfileSloIdpSoap)) { + debug("building a soap response message\n"); + profile->msg_url = lasso_provider_get_registerNameIdentifierServiceURL(provider, + lassoProviderTypeSp, + NULL); + profile->msg_body = lasso_node_export_to_soap(profile->response); + } + else if (xmlStrEqual(protocolProfile,lassoLibProtocolProfileSloSpHttp) || \ + xmlStrEqual(protocolProfile,lassoLibProtocolProfileSloIdpHttp)) { + debug("building a http get response message\n"); + } + + return(0); +} + +void +lasso_name_registration_destroy(LassoNameRegistration *name_registration) +{ + g_object_unref(G_OBJECT(name_registration)); +} + +gint +lasso_name_registration_init_request(LassoNameRegistration *name_registration, + gchar *remote_providerID) +{ + LassoProfile *profile; + LassoNode *nameIdentifier_node; + LassoFederation *federation; + + xmlChar *spNameIdentifier, *spNameQualifier, *spFormat; + xmlChar *idpNameIdentifier, *idpNameQualifier, *idpFormat; + xmlChar *oldNameIdentifier = NULL, *oldNameQualifier = NULL, *oldFormat = NULL; + + gint ret = 0; + + g_return_val_if_fail(LASSO_IS_NAME_REGISTRATION(name_registration), -1); + + profile = LASSO_PROFILE(name_registration); + + if (remote_providerID == NULL) { + message(G_LOG_LEVEL_INFO, "No remote provider id, get the next federation peer provider id\n"); + profile->remote_providerID = lasso_identity_get_next_federation_remote_providerID(profile->identity); + } + else { + message(G_LOG_LEVEL_INFO, "A remote provider id for register name identifier request : %s\n", remote_providerID); + profile->remote_providerID = g_strdup(remote_providerID); + } + if (profile->remote_providerID == NULL) { + message(G_LOG_LEVEL_CRITICAL, "No provider id for init request\n"); + ret = -1; + goto done; + } + + /* get federation */ + federation = lasso_identity_get_federation(profile->identity, profile->remote_providerID); + if (federation == NULL) { + message(G_LOG_LEVEL_CRITICAL, "Federation not found\n"); + ret = -1; + goto done; + } + switch (profile->provider_type) { + case lassoProviderTypeSp: + /* set the new name identifier */ + spNameIdentifier = lasso_build_unique_id(32); + spNameQualifier = g_strdup(profile->remote_providerID); + spFormat = "federated"; + + /* set the old name identifier */ + nameIdentifier_node = lasso_federation_get_local_nameIdentifier(federation); + if (nameIdentifier_node != NULL) { + oldNameIdentifier = lasso_node_get_content(nameIdentifier_node, NULL); + oldNameQualifier = lasso_node_get_attr_value(nameIdentifier_node, "NameQualifier", NULL); + oldFormat = lasso_node_get_attr_value(nameIdentifier_node, "Format", NULL); + } + lasso_node_destroy(nameIdentifier_node); + + /* idp name identifier */ + nameIdentifier_node = lasso_federation_get_remote_nameIdentifier(federation); + if (nameIdentifier_node == NULL) { + message(G_LOG_LEVEL_CRITICAL, "Remote NameIdentifier for service provider not found\n"); + ret = -1; + goto done; + } + idpNameIdentifier = lasso_node_get_content(nameIdentifier_node, NULL); + idpNameQualifier = lasso_node_get_attr_value(nameIdentifier_node, "NameQualifier", NULL); + idpFormat = lasso_node_get_attr_value(nameIdentifier_node, "Format", NULL); + lasso_node_destroy(nameIdentifier_node); + + /* if old name identifier (Service provider) not found, set with federation provider */ + if (oldNameIdentifier == NULL) { + oldNameIdentifier = g_strdup(idpNameIdentifier); + oldNameQualifier = g_strdup(idpNameQualifier); + oldFormat = g_strdup(idpFormat); + } + break; + + case lassoProviderTypeIdp: + debug("Federation Provider\n"); + idpNameIdentifier = lasso_build_unique_id(32); + idpNameQualifier = g_strdup(profile->remote_providerID); + idpFormat = "federated"; + + nameIdentifier_node = lasso_federation_get_local_nameIdentifier(federation); + oldNameIdentifier = lasso_node_get_content(nameIdentifier_node, NULL); + oldNameQualifier = lasso_node_get_attr_value(nameIdentifier_node, "NameQualifier", NULL); + oldFormat = lasso_node_get_attr_value(nameIdentifier_node, "Format", NULL); + + nameIdentifier_node = lasso_federation_get_remote_nameIdentifier(federation); + if (nameIdentifier_node != NULL) { + spNameIdentifier = lasso_node_get_content(nameIdentifier_node, NULL); + spNameQualifier = lasso_node_get_attr_value(nameIdentifier_node, "NameQualifier", NULL); + spFormat = lasso_node_get_attr_value(nameIdentifier_node, "Format", NULL); + } + else{ + spNameIdentifier = g_strdup(oldNameIdentifier); + spNameQualifier = g_strdup(oldNameQualifier); + spFormat = g_strdup(oldFormat); + } + break; + + default: + message(G_LOG_LEVEL_CRITICAL, "Invalid provider type (%d)\n", profile->provider_type); + ret = -1; + goto done; + } + lasso_federation_destroy(federation); + + debug("old name identifier : %s, old name qualifier : %s, old format : %s\n", oldNameIdentifier, oldNameQualifier, oldFormat); + debug("sp name identifier : %s, sp name qualifier : %s, sp format : %s\n", spNameIdentifier, spNameQualifier, spFormat); + debug("idp name identifier : %s, idp name qualifier : %s, idp format : %s\n", idpNameIdentifier, idpNameQualifier, idpFormat); + + profile->request = lasso_register_name_identifier_request_new(profile->server->providerID, + idpNameQualifier, + idpNameQualifier, + idpFormat, + spNameIdentifier, + spNameQualifier, + spFormat, + oldNameIdentifier, + oldNameQualifier, + oldFormat); + + if (profile->request == NULL) { + message(G_LOG_LEVEL_CRITICAL, "Error while creating the request\n"); + ret = -1; + goto done; + } + + done: + + return(ret); +} + +gint lasso_name_registration_process_request_msg(LassoNameRegistration *name_registration, + gchar *request_msg, + lassoHttpMethod request_method) +{ + LassoProfile *profile; + gint ret = 0; + + g_return_val_if_fail(LASSO_IS_NAME_REGISTRATION(name_registration), -1); + g_return_val_if_fail(request_msg!=NULL, -1); + + profile = LASSO_PROFILE(name_registration); + + switch (request_method) { + case lassoHttpMethodSoap: + debug("Build a register name identifier request from soap msg\n"); + profile->request = lasso_register_name_identifier_request_new_from_export(request_msg, lassoNodeExportTypeSoap); + break; + case lassoHttpMethodRedirect: + debug("Build a register name identifier request from query msg\n"); + profile->request = lasso_register_name_identifier_request_new_from_export(request_msg, lassoNodeExportTypeQuery); + break; + case lassoHttpMethodGet: + debug("TODO, implement the get method\n"); + break; + default: + message(G_LOG_LEVEL_CRITICAL, "Invalid request method\n"); + ret = -1; + goto done; + } + if (profile->request == NULL) { + message(G_LOG_LEVEL_CRITICAL, "Error while building the request from msg\n"); + ret = -1; + goto done; + } + + /* get the NameIdentifier to load identity dump */ + profile->nameIdentifier = lasso_node_get_child_content(profile->request, + "NameIdentifier", NULL, NULL); + + /* get the RelayState */ + profile->msg_relayState = lasso_node_get_child_content(profile->request, + "RelayState", NULL, NULL); + + done : + + return(ret); +} + +gint +lasso_name_registration_validate_request(LassoNameRegistration *name_registration) +{ + LassoProfile *profile; + LassoFederation *federation; + LassoNode *nameIdentifier, *assertion; + LassoNode *statusCode; + LassoNodeClass *statusCode_class; + gint ret = 0; + + g_return_val_if_fail(LASSO_IS_NAME_REGISTRATION(name_registration), -1); + + profile = LASSO_PROFILE(name_registration); + + /* set the remote provider id from the request */ + profile->remote_providerID = lasso_node_get_child_content(profile->request, "ProviderID", NULL, NULL); + if (profile->remote_providerID == NULL) { + message(G_LOG_LEVEL_CRITICAL, "No provider id found in name_registration request\n"); + ret = -1; + goto done; + } + + /* set NameRegistrationResponse */ + profile->response = lasso_register_name_identifier_response_new(profile->server->providerID, + (gchar *)lassoSamlStatusCodeSuccess, + profile->request); + + if (profile->response == NULL) { + message(G_LOG_LEVEL_CRITICAL, "Error while building response\n"); + ret = -1; + goto done; + } + + statusCode = lasso_node_get_child(profile->response, "StatusCode", NULL, NULL); + statusCode_class = LASSO_NODE_GET_CLASS(statusCode); + + nameIdentifier = lasso_node_get_child(profile->request, "NameIdentifier", NULL, NULL); + if (nameIdentifier == NULL) { + message(G_LOG_LEVEL_CRITICAL, "No name identifier found in name_registration request\n"); + statusCode_class->set_prop(statusCode, "Value", lassoLibStatusCodeFederationDoesNotExist); + ret = -1; + goto done; + } + + /* Verify federation */ + federation = lasso_identity_get_federation(profile->identity, profile->remote_providerID); + if (federation == NULL) { + message(G_LOG_LEVEL_WARNING, "No federation for %s\n", profile->remote_providerID); + statusCode_class->set_prop(statusCode, "Value", lassoLibStatusCodeFederationDoesNotExist); + ret = -1; + goto done; + } + + if (lasso_federation_verify_nameIdentifier(federation, nameIdentifier) == FALSE) { + message(G_LOG_LEVEL_WARNING, "No name identifier for %s\n", profile->remote_providerID); + statusCode_class->set_prop(statusCode, "Value", lassoLibStatusCodeFederationDoesNotExist); + ret = -1; + goto done; + } + lasso_federation_destroy(federation); + + /* verify authentication (if ok, delete assertion) */ + assertion = lasso_session_get_assertion(profile->session, profile->remote_providerID); + if (assertion == NULL) { + message(G_LOG_LEVEL_WARNING, "%s has no assertion\n", profile->remote_providerID); + statusCode_class->set_prop(statusCode, "Value", lassoSamlStatusCodeRequestDenied); + lasso_node_destroy(assertion); + ret = -1; + goto done; + } + + done: + + return(ret); +} + +gint +lasso_name_registration_process_response_msg(LassoNameRegistration *name_registration, + gchar *response_msg, + lassoHttpMethod response_method) +{ + LassoProfile *profile; + xmlChar *statusCodeValue; + LassoNode *statusCode; + gint ret = 0; + + g_return_val_if_fail(LASSO_IS_NAME_REGISTRATION(name_registration), -1); + g_return_val_if_fail(response_msg != NULL, -1); + + profile = LASSO_PROFILE(name_registration); + + /* parse NameRegistrationResponse */ + switch (response_method) { + case lassoHttpMethodSoap: + profile->response = lasso_register_name_identifier_response_new_from_export(response_msg, lassoNodeExportTypeSoap); + break; + case lassoHttpMethodRedirect: + profile->response = lasso_register_name_identifier_response_new_from_export(response_msg, lassoNodeExportTypeQuery); + break; + default: + message(G_LOG_LEVEL_CRITICAL, "Unknown response method\n"); + ret = -1; + goto done; + } + + statusCode = lasso_node_get_child(profile->response, "StatusCode", NULL, NULL); + if (statusCode == NULL) { + message(G_LOG_LEVEL_CRITICAL, "StatusCode not found\n"); + ret = -1; + goto done; + } + statusCodeValue = lasso_node_get_attr_value(statusCode, "Value", NULL); + if (statusCodeValue == NULL) { + message(G_LOG_LEVEL_CRITICAL, "StatusCodeValue not found\n"); + ret = -1; + goto done; + } + + if(!xmlStrEqual(statusCodeValue, lassoSamlStatusCodeSuccess)) { + ret = -1; + goto done; + } + + done: + + return(ret); +} + +/*****************************************************************************/ +/* overrided parent class methods */ +/*****************************************************************************/ + +static void +lasso_name_registration_finalize(LassoNameRegistration *name_registration) +{ + message(G_LOG_LEVEL_INFO, "Register Name Identifier object 0x%x finalized ...\n", name_registration); + + parent_class->finalize(G_OBJECT(name_registration)); +} + +/*****************************************************************************/ +/* instance and class init functions */ +/*****************************************************************************/ + +static void +lasso_name_registration_instance_init(LassoNameRegistration *name_registration) +{ +} + +static void +lasso_name_registration_class_init(LassoNameRegistrationClass *class) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS(class); + + parent_class = g_type_class_peek_parent(class); + /* override parent class methods */ + gobject_class->finalize = (void *)lasso_name_registration_finalize; +} + +GType lasso_name_registration_get_type() { + static GType this_type = 0; + + if (!this_type) { + static const GTypeInfo this_info = { + sizeof (LassoNameRegistrationClass), + NULL, + NULL, + (GClassInitFunc) lasso_name_registration_class_init, + NULL, + NULL, + sizeof(LassoNameRegistration), + 0, + (GInstanceInitFunc) lasso_name_registration_instance_init, + }; + + this_type = g_type_register_static(LASSO_TYPE_PROFILE, + "LassoNameRegistration", + &this_info, 0); + } + return this_type; +} + +LassoNameRegistration * +lasso_name_registration_new(LassoServer *server, + lassoProviderType provider_type) +{ + LassoNameRegistration *name_registration; + + g_return_val_if_fail(LASSO_IS_SERVER(server), NULL); + + /* set the name_registration object */ + name_registration = g_object_new(LASSO_TYPE_NAME_REGISTRATION, + "server", lasso_server_copy(server), + "provider_type", provider_type, + NULL); + + return(name_registration); +} diff --git a/lasso/id-ff/name_registration.h b/lasso/id-ff/name_registration.h new file mode 100644 index 00000000..0d0c289f --- /dev/null +++ b/lasso/id-ff/name_registration.h @@ -0,0 +1,87 @@ +/* $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_NAME_REGISTRATION_H__ +#define __LASSO_NAME_REGISTRATION_H__ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include <lasso/environs/profile.h> + +#include <lasso/protocols/register_name_identifier_request.h> +#include <lasso/protocols/register_name_identifier_response.h> + +#define LASSO_TYPE_NAME_REGISTRATION (lasso_name_registration_get_type()) +#define LASSO_NAME_REGISTRATION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_NAME_REGISTRATION, LassoNameRegistration)) +#define LASSO_NAME_REGISTRATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), LASSO_TYPE_NAME_REGISTRATION, LassoNameRegistrationClass)) +#define LASSO_IS_NAME_REGISTRATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), LASSO_TYPE_NAME_REGISTRATION)) +#define LASSO_IS_NAME_REGISTRATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_NAME_REGISTRATION)) +#define LASSO_NAME_REGISTRATION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), LASSO_TYPE_NAME_REGISTRATION, LassoNameRegistrationClass)) + +typedef struct _LassoNameRegistration LassoNameRegistration; +typedef struct _LassoNameRegistrationClass LassoNameRegistrationClass; + +struct _LassoNameRegistration { + LassoProfile parent; + + /*< private >*/ +}; + +struct _LassoNameRegistrationClass { + LassoProfileClass parent; + +}; + +LASSO_EXPORT GType lasso_name_registration_get_type (void); + +LASSO_EXPORT LassoNameRegistration* lasso_name_registration_new (LassoServer *server, + lassoProviderType provider_type); + +LASSO_EXPORT gint lasso_name_registration_build_request_msg (LassoNameRegistration *name_registration); + +LASSO_EXPORT gint lasso_name_registration_build_response_msg (LassoNameRegistration *name_registration); + +LASSO_EXPORT void lasso_name_registration_destroy (LassoNameRegistration *name_registration); + +LASSO_EXPORT gint lasso_name_registration_init_request (LassoNameRegistration *name_registration, + gchar *remote_providerID); + +LASSO_EXPORT gint lasso_name_registration_process_request_msg (LassoNameRegistration *name_registration, + gchar *request_msg, + lassoHttpMethod request_method); + +LASSO_EXPORT gint lasso_name_registration_validate_request (LassoNameRegistration *name_registration); + +LASSO_EXPORT gint lasso_name_registration_process_response_msg (LassoNameRegistration *name_registration, + gchar *response_msg, + lassoHttpMethod response_method); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __LASSO_NAME_REGISTRATION_H__ */ |
