diff options
author | Nicolas Clapies <nclapies@entrouvert.com> | 2004-08-23 14:07:13 +0000 |
---|---|---|
committer | Nicolas Clapies <nclapies@entrouvert.com> | 2004-08-23 14:07:13 +0000 |
commit | 2b6c10a47ac0f3c5ebbc7da96fac93261aeab304 (patch) | |
tree | d8561609a11d85fc46b6695bf9e2b1749e1ae25b /lasso/id-ff | |
parent | 4fb5358591677388e15c62ef3b428bae62317afe (diff) | |
download | lasso-2b6c10a47ac0f3c5ebbc7da96fac93261aeab304.tar.gz lasso-2b6c10a47ac0f3c5ebbc7da96fac93261aeab304.tar.xz lasso-2b6c10a47ac0f3c5ebbc7da96fac93261aeab304.zip |
updpated process of protocol profile
Diffstat (limited to 'lasso/id-ff')
-rw-r--r-- | lasso/id-ff/federation_termination.c | 68 | ||||
-rw-r--r-- | lasso/id-ff/federation_termination.h | 4 | ||||
-rw-r--r-- | lasso/id-ff/register_name_identifier.h | 22 |
3 files changed, 71 insertions, 23 deletions
diff --git a/lasso/id-ff/federation_termination.c b/lasso/id-ff/federation_termination.c index c8f2b3d1..0963e11f 100644 --- a/lasso/id-ff/federation_termination.c +++ b/lasso/id-ff/federation_termination.c @@ -65,14 +65,14 @@ lasso_federation_termination_build_notification_msg(LassoFederationTermination * /* get the protocol profile of the remote provider ( if the notifier is a IDP, then get with IDP type else if IDP, SP ) */ if (profile->provider_type == lassoProviderTypeSp) { - protocolProfile = lasso_provider_get_federationTerminationNotificationProtocolProfile(provider, - lassoProviderTypeIdp, - NULL); + protocolProfile = lasso_provider_get_federationTerminationNotificationProtocolProfile(provider, + lassoProviderTypeIdp, + NULL); } else if (profile->provider_type == lassoProviderTypeIdp) { - protocolProfile = lasso_provider_get_federationTerminationNotificationProtocolProfile(provider, - lassoProviderTypeSp, - NULL); + protocolProfile = lasso_provider_get_federationTerminationNotificationProtocolProfile(provider, + lassoProviderTypeSp, + NULL); } else { message(G_LOG_LEVEL_CRITICAL, "Invalid provider type\n"); @@ -173,9 +173,11 @@ lasso_federation_termination_init_notification(LassoFederationTermination *defed gchar *remote_providerID) { LassoProfile *profile; + LassoProvider *provider; LassoFederation *federation; LassoNode *nameIdentifier = NULL; xmlChar *content = NULL, *nameQualifier = NULL, *format = NULL; + xmlChar *federationTerminationProtocolProfile; gint ret = 0; g_return_val_if_fail(LASSO_IS_FEDERATION_TERMINATION(defederation), -1); @@ -233,10 +235,56 @@ lasso_federation_termination_init_notification(LassoFederationTermination *defed content = lasso_node_get_content(nameIdentifier, NULL); nameQualifier = lasso_node_get_attr_value(nameIdentifier, "NameQualifier", NULL); format = lasso_node_get_attr_value(nameIdentifier, "Format", NULL); - profile->request = lasso_federation_termination_notification_new(profile->server->providerID, - content, - nameQualifier, - format); + + /* get the protocol profile and set a new federation termination notification object */ + 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; + } + + if (profile->provider_type == lassoProviderTypeIdp) { + federationTerminationProtocolProfile = lasso_provider_get_federationTerminationNotificationProtocolProfile(provider, + lassoProviderTypeSp, + NULL); + } + else if (profile->provider_type == lassoProviderTypeSp) { + federationTerminationProtocolProfile = lasso_provider_get_federationTerminationNotificationProtocolProfile(provider, + lassoProviderTypeIdp, + NULL); + + } + + if (federationTerminationProtocolProfile == NULL) { + message(G_LOG_LEVEL_CRITICAL, "Federation termination notification protocol profile not found\n"); + ret = -1; + goto done; + } + + if (xmlStrEqual(federationTerminationProtocolProfile, lassoLibProtocolProfileFedTermSpSoap) || \ + xmlStrEqual(federationTerminationProtocolProfile, lassoLibProtocolProfileFedTermIdpSoap)) { + profile->request = lasso_federation_termination_notification_new(profile->server->providerID, + content, + nameQualifier, + format, + lassoSignatureTypeWithX509, + lassoSignatureMethodRsaSha1); + } + else if (xmlStrEqual(federationTerminationProtocolProfile, lassoLibProtocolProfileFedTermSpHttp) || \ + xmlStrEqual(federationTerminationProtocolProfile, lassoLibProtocolProfileFedTermIdpHttp)) { + profile->request = lasso_federation_termination_notification_new(profile->server->providerID, + content, + nameQualifier, + format, + lassoSignatureTypeNone, + 0); + } + else { + message(G_LOG_LEVEL_CRITICAL, "Invalid federation termination notification protocol profile\n"); + ret = -1; + goto done; + } if (profile->request == NULL) { message(G_LOG_LEVEL_CRITICAL, "Error while creating the notification\n"); diff --git a/lasso/id-ff/federation_termination.h b/lasso/id-ff/federation_termination.h index e28e6441..5a253049 100644 --- a/lasso/id-ff/federation_termination.h +++ b/lasso/id-ff/federation_termination.h @@ -68,8 +68,8 @@ LASSO_EXPORT gint lasso_federation_termination_init_notification (LassoFe gchar *remote_providerID); LASSO_EXPORT gint lasso_federation_termination_process_notification_msg (LassoFederationTermination *defederation, - gchar *request_msg, - lassoHttpMethod request_method); + gchar *notification_msg, + lassoHttpMethod notification_method); LASSO_EXPORT gint lasso_federation_termination_validate_notification (LassoFederationTermination *defederation); diff --git a/lasso/id-ff/register_name_identifier.h b/lasso/id-ff/register_name_identifier.h index bf4ac1e8..7784319f 100644 --- a/lasso/id-ff/register_name_identifier.h +++ b/lasso/id-ff/register_name_identifier.h @@ -61,24 +61,24 @@ LASSO_EXPORT GType lasso_register_name_identifier_get_typ LASSO_EXPORT LassoRegisterNameIdentifier* lasso_register_name_identifier_new (LassoServer *server, lassoProviderType provider_type); -LASSO_EXPORT gint lasso_register_name_identifier_build_request_msg (LassoRegisterNameIdentifier *register_name_identifier); +LASSO_EXPORT gint lasso_register_name_identifier_build_request_msg (LassoRegisterNameIdentifier *register_name_identifier); -LASSO_EXPORT gint lasso_register_name_identifier_build_response_msg (LassoRegisterNameIdentifier *register_name_identifier); +LASSO_EXPORT gint lasso_register_name_identifier_build_response_msg (LassoRegisterNameIdentifier *register_name_identifier); -LASSO_EXPORT void lasso_register_name_identifier_destroy (LassoRegisterNameIdentifier *register_name_identifier); +LASSO_EXPORT void lasso_register_name_identifier_destroy (LassoRegisterNameIdentifier *register_name_identifier); -LASSO_EXPORT gint lasso_register_name_identifier_init_request (LassoRegisterNameIdentifier *register_name_identifier, - gchar *remote_providerID); +LASSO_EXPORT gint lasso_register_name_identifier_init_request (LassoRegisterNameIdentifier *register_name_identifier, + gchar *remote_providerID); -LASSO_EXPORT gint lasso_register_name_identifier_process_request_msg (LassoRegisterNameIdentifier *register_name_identifier, - gchar *request_msg, - lassoHttpMethod request_method); +LASSO_EXPORT gint lasso_register_name_identifier_process_request_msg (LassoRegisterNameIdentifier *register_name_identifier, + gchar *request_msg, + lassoHttpMethod request_method); LASSO_EXPORT gint lasso_register_name_identifier_validate_request (LassoRegisterNameIdentifier *register_name_identifier); -LASSO_EXPORT gint lasso_register_name_identifier_process_response_msg (LassoRegisterNameIdentifier *register_name_identifier, - gchar *response_msg, - lassoHttpMethod response_method); +LASSO_EXPORT gint lasso_register_name_identifier_process_response_msg (LassoRegisterNameIdentifier *register_name_identifier, + gchar *response_msg, + lassoHttpMethod response_method); #ifdef __cplusplus } |