summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2005-09-27 08:07:10 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2005-09-27 08:07:10 +0000
commitb9f9d480804ec50f27a0cc82e997ca5443fbad82 (patch)
tree9e42cd28bb6f1cd4c96aaee60eacdbebe286288f
parent331dd328d542bcfd8c8006048b1dc84cb4b9076b (diff)
downloadlasso-b9f9d480804ec50f27a0cc82e997ca5443fbad82.tar.gz
lasso-b9f9d480804ec50f27a0cc82e997ca5443fbad82.tar.xz
lasso-b9f9d480804ec50f27a0cc82e997ca5443fbad82.zip
Discovery and DataSerivice can pass X509 authentication mecanism if needed.
-rw-r--r--lasso/id-wsf/data_service.c12
-rw-r--r--lasso/id-wsf/data_service.h2
-rw-r--r--lasso/id-wsf/discovery.c33
-rw-r--r--lasso/id-wsf/discovery.h30
4 files changed, 45 insertions, 32 deletions
diff --git a/lasso/id-wsf/data_service.c b/lasso/id-wsf/data_service.c
index 1214859c..55492e9e 100644
--- a/lasso/id-wsf/data_service.c
+++ b/lasso/id-wsf/data_service.c
@@ -224,7 +224,7 @@ lasso_data_service_process_query_msg(LassoDataService *service, const char *mess
int rc;
profile = LASSO_WSF_PROFILE(service);
- rc = lasso_wsf_profile_process_soap_request_msg(profile, message);
+ rc = lasso_wsf_profile_process_soap_request_msg(profile, message, security_mech_id);
if (rc) {
return rc;
}
@@ -486,8 +486,7 @@ lasso_data_service_process_query_response_msg(LassoDataService *service,
int rc;
LassoDstQueryResponse *response;
- rc = lasso_wsf_profile_process_soap_response_msg(
- LASSO_WSF_PROFILE(service), message);
+ rc = lasso_wsf_profile_process_soap_response_msg(LASSO_WSF_PROFILE(service), message);
if (rc) return rc;
if (! LASSO_IS_DST_QUERY_RESPONSE(LASSO_WSF_PROFILE(service)->response))
@@ -563,14 +562,14 @@ lasso_data_service_init_modify(LassoDataService *service, const gchar *select,
gint
lasso_data_service_process_modify_msg(LassoDataService *service,
- const gchar *modify_soap_msg)
+ const gchar *modify_soap_msg, const gchar *security_mech_id)
{
LassoDstModify *modify;
LassoWsfProfile *profile;
int rc;
profile = LASSO_WSF_PROFILE(service);
- rc = lasso_wsf_profile_process_soap_request_msg(profile, modify_soap_msg);
+ rc = lasso_wsf_profile_process_soap_request_msg(profile, modify_soap_msg, security_mech_id);
if (rc) {
return rc;
}
@@ -587,8 +586,7 @@ lasso_data_service_process_modify_msg(LassoDataService *service,
return 0;}
gint
-lasso_data_service_process_modify_response_msg(LassoDataService *service,
- const gchar *soap_msg)
+lasso_data_service_process_modify_response_msg(LassoDataService *service, const gchar *soap_msg)
{
LassoDstModifyResponse *response;
LassoSoapEnvelope *envelope;
diff --git a/lasso/id-wsf/data_service.h b/lasso/id-wsf/data_service.h
index 628d2005..2f162b02 100644
--- a/lasso/id-wsf/data_service.h
+++ b/lasso/id-wsf/data_service.h
@@ -112,7 +112,7 @@ LASSO_EXPORT LassoDstModification* lasso_data_service_add_modification(
LassoDataService *service, const gchar *select);
LASSO_EXPORT gint lasso_data_service_process_modify_msg(LassoDataService *service,
- const gchar *soap_msg);
+ const gchar *soap_msg, const gchar *security_mech_id);
LASSO_EXPORT gint lasso_data_service_process_modify_response_msg(LassoDataService *service,
const gchar *soap_msg);
diff --git a/lasso/id-wsf/discovery.c b/lasso/id-wsf/discovery.c
index 7156c4c3..ccf1ab90 100644
--- a/lasso/id-wsf/discovery.c
+++ b/lasso/id-wsf/discovery.c
@@ -31,10 +31,14 @@
#include <lasso/id-wsf/data_service.h>
#include <lasso/id-wsf/personal_profile_service.h>
+#include <lasso/id-wsf/discovery_private.h>
+#include <lasso/id-wsf/wsf_profile_private.h>
+
struct _LassoDiscoveryPrivate
{
gboolean dispose_has_run;
GList *new_entry_ids;
+ char *security_mech_id;
};
/*****************************************************************************/
@@ -412,6 +416,10 @@ lasso_discovery_init_insert(LassoDiscovery *discovery,
LASSO_WSF_PROFILE(discovery)->msg_url = g_strdup(description->Endpoint);
} /* XXX: else, description->WsdlURLI, get endpoint automatically */
+ if (lasso_security_mech_id_is_x509_authentication(security_mech_id) == TRUE)
+ lasso_wsf_profile_set_security_mech_id(LASSO_WSF_PROFILE(discovery),
+ security_mech_id);
+
return 0;
}
@@ -499,6 +507,10 @@ lasso_discovery_init_query(LassoDiscovery *discovery, const gchar *security_mech
LASSO_WSF_PROFILE(discovery)->msg_url = g_strdup(description->Endpoint);
} /* XXX: else, description->WsdlURLK, get endpoint automatically */
+ if (lasso_security_mech_id_is_x509_authentication(security_mech_id) == TRUE)
+ lasso_wsf_profile_set_security_mech_id(LASSO_WSF_PROFILE(discovery),
+ security_mech_id);
+
return 0;
}
@@ -514,14 +526,17 @@ lasso_discovery_init_query(LassoDiscovery *discovery, const gchar *security_mech
* Return value: 0 on success; or a negative value otherwise.
**/
gint
-lasso_discovery_process_modify_msg(LassoDiscovery *discovery, const gchar *message)
+lasso_discovery_process_modify_msg(LassoDiscovery *discovery, const gchar *message,
+ const gchar *security_mech_id)
{
LassoDiscoModify *request;
g_return_val_if_fail(LASSO_IS_DISCOVERY(discovery), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
- lasso_wsf_profile_process_soap_request_msg(LASSO_WSF_PROFILE(discovery), message);
+ if (lasso_wsf_profile_process_soap_request_msg(LASSO_WSF_PROFILE(discovery),
+ message, security_mech_id) < 0)
+ return -1;
request = LASSO_DISCO_MODIFY(LASSO_WSF_PROFILE(discovery)->request);
@@ -666,7 +681,8 @@ lasso_discovery_process_query_msg(LassoDiscovery *discovery, const gchar *messag
g_return_val_if_fail(LASSO_IS_DISCOVERY(discovery), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
- lasso_wsf_profile_process_soap_request_msg(LASSO_WSF_PROFILE(discovery), message);
+ lasso_wsf_profile_process_soap_request_msg(LASSO_WSF_PROFILE(discovery),
+ message, security_mech_id);
envelope = LASSO_WSF_PROFILE(discovery)->soap_envelope_response;
request = LASSO_DISCO_QUERY(LASSO_WSF_PROFILE(discovery)->request);
@@ -738,11 +754,12 @@ lasso_discovery_build_response_msg(LassoDiscovery *discovery)
iter3 = description->SecurityMechID;
while (iter3) {
if (lasso_security_mech_id_is_saml_authentication(
- iter3->data) == TRUE)
- credentialRef = lasso_discovery_build_credential(
- discovery, NULL);
- description->CredentialRef = g_list_append(
- description->CredentialRef, credentialRef);
+ iter3->data) == TRUE) {
+ credentialRef = lasso_discovery_build_credential(
+ discovery, NULL);
+ description->CredentialRef = g_list_append(
+ description->CredentialRef, credentialRef);
+ }
iter3 = g_list_next(iter3);
}
iter2 = g_list_next(iter2);
diff --git a/lasso/id-wsf/discovery.h b/lasso/id-wsf/discovery.h
index 34e166f3..60baa40b 100644
--- a/lasso/id-wsf/discovery.h
+++ b/lasso/id-wsf/discovery.h
@@ -81,51 +81,49 @@ LASSO_EXPORT GType lasso_discovery_get_type(void);
LASSO_EXPORT LassoDiscovery* lasso_discovery_new(LassoServer *server);
-LASSO_EXPORT LassoDiscoInsertEntry* lasso_discovery_add_insert_entry(
- LassoDiscovery *discovery,
- LassoDiscoServiceInstance *serviceInstance,
- LassoDiscoResourceID *resourceId);
+LASSO_EXPORT LassoDiscoInsertEntry* lasso_discovery_add_insert_entry(LassoDiscovery *discovery,
+ LassoDiscoServiceInstance *serviceInstance, LassoDiscoResourceID *resourceId);
LASSO_EXPORT gint lasso_discovery_add_remove_entry(LassoDiscovery *discovery,
- const gchar *entryID);
+ const gchar *entryID);
LASSO_EXPORT LassoDiscoRequestedServiceType* lasso_discovery_add_requested_service_type(
- LassoDiscovery *discovery, const gchar *service_type, const gchar *option);
+ LassoDiscovery *discovery, const gchar *service_type, const gchar *option);
LASSO_EXPORT void lasso_discovery_destroy(LassoDiscovery *discovery);
LASSO_EXPORT gint lasso_discovery_init_insert(LassoDiscovery *discovery,
- LassoDiscoResourceOffering *resourceOffering, const char *security_mech_id);
+ LassoDiscoResourceOffering *resourceOffering, const char *security_mech_id);
+
LASSO_EXPORT gint lasso_discovery_init_remove(LassoDiscovery *discovery, const char *entry_id);
LASSO_EXPORT gint lasso_discovery_build_response_msg(LassoDiscovery *discovery);
+
LASSO_EXPORT gint lasso_discovery_build_modify_response_msg(LassoDiscovery *discovery);
LASSO_EXPORT gint lasso_discovery_init_modify(LassoDiscovery *discovery,
- LassoDiscoResourceOffering *resourceOffering,
- LassoDiscoDescription *description);
+ LassoDiscoResourceOffering *resourceOffering, LassoDiscoDescription *description);
LASSO_EXPORT gint lasso_discovery_init_query(LassoDiscovery *discovery,
const gchar *security_mech_id);
LASSO_EXPORT gint lasso_discovery_process_modify_msg(LassoDiscovery *discovery,
- const gchar *message);
+ const gchar *message, const gchar *security_mech_id);
LASSO_EXPORT gint lasso_discovery_process_modify_response_msg(LassoDiscovery *discovery,
- const gchar *message);
+ const gchar *message);
LASSO_EXPORT gint lasso_discovery_process_query_msg(LassoDiscovery *discovery,
- const gchar *message, const char *security_mech_id);
+ const gchar *message, const char *security_mech_id);
LASSO_EXPORT gint lasso_discovery_process_query_response_msg(LassoDiscovery *discovery,
- const gchar *message);
+ const gchar *message);
LASSO_EXPORT LassoDataService* lasso_discovery_get_service(LassoDiscovery *discovery,
- const char *service_type);
+ const char *service_type);
LASSO_EXPORT LassoDataService* lasso_discovery_get_service_with_providerId(
- LassoDiscovery *discovery,
- const char *providerId);
+ LassoDiscovery *discovery, const char *providerId);
LASSO_EXPORT GList* lasso_discovery_get_services(LassoDiscovery *discovery);