summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-08-01 14:08:29 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-08-01 14:08:29 +0000
commit2c2c50e952b4d5065ab8f7a66c5937cb9874d64d (patch)
tree1a1610bd2d8d69930bcf4cd0872d5a1bf293abd2
parent99a2c411477f2dbc376fcb194a15a8938868ba39 (diff)
move and export matching function for disco description into lasso/xml/disco_description.c
-rw-r--r--lasso/xml/disco_description.c66
-rw-r--r--lasso/xml/disco_description.h6
2 files changed, 72 insertions, 0 deletions
diff --git a/lasso/xml/disco_description.c b/lasso/xml/disco_description.c
index eb2e2241..098cd5d1 100644
--- a/lasso/xml/disco_description.c
+++ b/lasso/xml/disco_description.c
@@ -223,3 +223,69 @@ lasso_disco_description_copy(LassoDiscoDescription *description)
return newDescription;
}
+
+/**
+ * lasso_disco_description_has_saml_authentication:
+ * @profile: a #LassoDiscoDescription
+ *
+ * Checks if the given description supports any security mechanism using
+ * SAML authentication.
+ *
+ * Returns: %TRUE if SAML is supported by the service description, FALSE if it
+ * is not supported of if description is not a valid #LassoDiscoDescription.
+ */
+gboolean
+lasso_disco_description_has_saml_authentication(LassoDiscoDescription *description)
+{
+ GList *iter;
+ gchar *security_mech_id;
+
+ g_return_val_if_invalid_param(DISCO_DESCRIPTION, description,
+ FALSE);
+
+ iter = description->SecurityMechID;
+ while (iter) {
+ security_mech_id = iter->data;
+ if (lasso_security_mech_id_is_saml_authentication(
+ security_mech_id)) {
+ return TRUE;
+ }
+ iter = g_list_next(iter);
+ }
+
+ return FALSE;
+}
+
+/**
+ * lasso_disco_description_has_x509_authentication:
+ * @profile: a #LassoDiscoDescription
+ *
+ * Checks if the given description supports any security mechanism using
+ * X509 authentication.
+ *
+ * Returns: %TRUE if X509 is supported by the service description, FALSE if it
+ * is not supported of if description is not a valid #LassoDiscoDescription.
+ */
+gboolean
+lasso_disco_description_has_x509_authentication(LassoDiscoDescription *description)
+{
+ GList *iter;
+ gchar *security_mech_id;
+
+ g_return_val_if_invalid_param(DISCO_DESCRIPTION, description,
+ FALSE);
+
+ iter = description->SecurityMechID;
+ while (iter) {
+ security_mech_id = iter->data;
+ if (strcmp(security_mech_id, LASSO_SECURITY_MECH_CLIENT_TLS_X509) == 0 ||
+ strcmp(security_mech_id, LASSO_SECURITY_MECH_TLS_X509) == 0 ||
+ strcmp(security_mech_id, LASSO_SECURITY_MECH_X509) == 0) {
+ return TRUE;
+ }
+ iter = g_list_next(iter);
+ }
+
+ return FALSE;
+}
+
diff --git a/lasso/xml/disco_description.h b/lasso/xml/disco_description.h
index d37a50ff..b083d5c8 100644
--- a/lasso/xml/disco_description.h
+++ b/lasso/xml/disco_description.h
@@ -94,6 +94,12 @@ LASSO_EXPORT LassoDiscoDescription* lasso_disco_description_new_with_BriefSoapHt
const gchar *endpoint,
const gchar *soapAction);
+LASSO_EXPORT gboolean lasso_disco_description_has_saml_authentication(
+ LassoDiscoDescription *description);
+
+LASSO_EXPORT gboolean lasso_disco_description_has_x509_authentication(
+ LassoDiscoDescription *description);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */