diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2008-08-01 14:08:29 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2008-08-01 14:08:29 +0000 |
| commit | 2c2c50e952b4d5065ab8f7a66c5937cb9874d64d (patch) | |
| tree | 1a1610bd2d8d69930bcf4cd0872d5a1bf293abd2 | |
| parent | 99a2c411477f2dbc376fcb194a15a8938868ba39 (diff) | |
move and export matching function for disco description into lasso/xml/disco_description.c
| -rw-r--r-- | lasso/xml/disco_description.c | 66 | ||||
| -rw-r--r-- | lasso/xml/disco_description.h | 6 |
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 */ |
