diff --git a/NEWS b/NEWS
index 91fb3b99..25b8d386 100644
--- a/NEWS
+++ b/NEWS
@@ -1,7 +1,40 @@
NEWS
====
-2.3.2 - Septembre 7th 2010
+2.3.3 - October 1st 2010
+------------------------
+
+44 commits, 264 files changed, 858 insertions, 401 deletions
+
+Generic:
+ * Fixed a lot of memleaks thanks to valgrind, the greatest tool on earth (with
+ coccinelle).
+ * Add missing annotation creating memleaks in python binding (on lasso_*_dump king of methods).
+ * Fix bad inclusion of an ID-WSF include file when ID-WSF support is not enabled
+ * Benchmarking program was updated to measure each part of a WebSSO
+ independently (AuthnRequest generation/processing, AuthnResponse
+ generation/processing).
+ * Add new macro lasso_strisequal and lasso_strisnotequal to avoid errors with
+ strcmp. (Thanks to coccinelle semantic patches).
+
+SAMLv2:
+ * Add uniform support for LassoProfileVerifySignatureHint for other profiles
+ than WebSSO.
+ * Report signature errors in response to NameIDNanagement requests
+ * Fix wrong use of macro lasso_foreach breaking the mecanism for finding a
+ default assertion consumer.
+ * Behaviour of lasso_login_build_assertion was modified:
+ - when the NameIDPolicy lacks a Format attribute or the Format attribute is
+ the unspecified format (see the spec for the corresponding URN). Now it
+ results in a transient nameid being generated. If you want it to be
+ persistent you must change it before calling this method.
+ - the setting of the SubjectConfirmationData->NotOnOrAfter attribute was
+ restored as it is mandated by the WebSSO profile. It's the same value as
+ Conditions->NotOnOrAfter.
+ * Fix missing initialization of Destination attribute on Samlp2StatusResponse
+ object for synchronous bindings (Redirect & Post)
+
+2.3.2 - September 7th 2010
--------------------------
* Fix bug in increment of the libtool version info, increasing the SONAME
diff --git a/bindings/bindings.py b/bindings/bindings.py
index e60a5f33..1f8c6dc3 100644
--- a/bindings/bindings.py
+++ b/bindings/bindings.py
@@ -549,8 +549,8 @@ def parse_header(header_file):
def parse_headers(srcdir):
wsf_prefixes = ['disco_', 'dst_', 'is_', 'profile_service_', 'discovery_',
- 'wsf_', 'interaction_', 'utility_', 'sa_', 'soap_', 'authentication_',
- 'wsse_', 'sec_', 'idwsf2_', 'wsf2_', 'wsa_', 'wsu']
+ 'wsf_', 'interaction_', 'utility_', 'sa_', 'authentication_',
+ 'wsse_', 'sec_', 'idwsf2_', 'wsf2_', 'wsa_', 'wsu', 'soap_binding']
srcdir = os.path.abspath(srcdir)
parentdir = os.path.dirname(srcdir)
diff --git a/bindings/java/wrapper_top.c b/bindings/java/wrapper_top.c
index e83a2737..dfdec346 100644
--- a/bindings/java/wrapper_top.c
+++ b/bindings/java/wrapper_top.c
@@ -8,6 +8,7 @@
#include "../ghashtable.h"
#include "../../lasso/utils.h"
#include "../utils.c"
+#include "../../lasso/backward_comp.h"
#define LASSO_ROOT "com/entrouvert/lasso/"
#define check_exception (*env)->ExceptionCheck(env)
@@ -544,7 +545,7 @@ remove_from_list_of_strings(JNIEnv *env, GList **list, jstring jstr) {
g_error_if_fail(env && list);
lasso_return_val_if_fail(jstr, 1);
lasso_return_val_if_fail(jstring_to_local_string(env, jstr, &local_string), 0);
- found = g_list_find_custom(*list, local_string, (GCompareFunc)strcmp);
+ found = g_list_find_custom(*list, local_string, (GCompareFunc)g_strcmp0);
if (found) {
g_free(found->data);
*list = g_list_delete_link(*list, found);
diff --git a/configure.ac b/configure.ac
index 7089136e..59c0a1f9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -15,7 +15,7 @@ dnl - Second number is the number of supported API versions where API version >
dnl first number.
dnl - Third number is the current API version implementation version number.
dnl See libtool explanations about current, age and release, later in this file.
-AC_INIT([lasso], 2.3.2, lasso-devel@lists.labs.libre-entreprise.org)
+AC_INIT([lasso], 2.3.3, lasso-devel@lists.labs.libre-entreprise.org)
dnl Check if autoconf ver > 2.53
AC_PREREQ(2.53)
AC_CONFIG_MACRO_DIR([m4])
@@ -184,7 +184,7 @@ dnl - interfaces removed -> AGE = 0
# m = a
# r = r
current=`expr $VERSION_MAJOR + $VERSION_MINOR`
-LASSO_VERSION_INFO="12:0:9"
+LASSO_VERSION_INFO="12:1:9"
AC_SUBST(LASSO_VERSION_INFO)
dnl Compute the minimal supported ABI version for Win32 scripts and resources files.
diff --git a/lasso.doap b/lasso.doap
index 18323cbe..81d9fe85 100644
--- a/lasso.doap
+++ b/lasso.doap
@@ -61,6 +61,10 @@
+
+ 2010-10-01
+ 2.3.3
+
2010-09-07
2.3.2
diff --git a/lasso/id-ff/identity.c b/lasso/id-ff/identity.c
index 8582b5b4..872909c2 100644
--- a/lasso/id-ff/identity.c
+++ b/lasso/id-ff/identity.c
@@ -377,7 +377,7 @@ lasso_identity_new_from_dump(const gchar *dump)
*
* Dumps @identity content to an XML string.
*
- * Return value: the dump string. It must be freed by the caller.
+ * Return value:(transfer full): the dump string. It must be freed by the caller.
**/
gchar*
lasso_identity_dump(LassoIdentity *identity)
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index b098dbfe..85deb368 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -2413,7 +2413,7 @@ lasso_login_new_from_dump(LassoServer *server, const gchar *dump)
*
* Dumps @login content to an XML string.
*
- * Return value: the dump string. It must be freed by the caller.
+ * Return value:(transfer full): the dump string. It must be freed by the caller.
**/
gchar*
lasso_login_dump(LassoLogin *login)
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index 2e6a2d81..44555060 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -1405,7 +1405,7 @@ lasso_logout_new_from_dump(LassoServer *server, const char *dump)
*
* Dumps @logout content to an XML string.
*
- * Return value: the dump string. It must be freed by the caller.
+ * Return value:(transfer full): the dump string. It must be freed by the caller.
**/
gchar*
lasso_logout_dump(LassoLogout *logout)
diff --git a/lasso/id-ff/name_registration.c b/lasso/id-ff/name_registration.c
index 056d6295..c98ad63a 100644
--- a/lasso/id-ff/name_registration.c
+++ b/lasso/id-ff/name_registration.c
@@ -770,7 +770,7 @@ lasso_name_registration_new_from_dump(LassoServer *server, const char *dump)
*
* Dumps @name_registration content to an XML string.
*
- * Return value: the dump string. It must be freed by the caller.
+ * Return value:(transfer full): the dump string. It must be freed by the caller.
**/
gchar *
lasso_name_registration_dump(LassoNameRegistration *name_registration)
diff --git a/lasso/id-ff/profile.c b/lasso/id-ff/profile.c
index 549e803c..a0b24aa9 100644
--- a/lasso/id-ff/profile.c
+++ b/lasso/id-ff/profile.c
@@ -49,6 +49,10 @@
#include "../xml/soap-1.1/soap_fault.h"
#include "../utils.h"
#include "../debug.h"
+#ifdef LASSO_WSF_ENABLED
+#include "../xml/idwsf_strings.h"
+#include "../xml/id-wsf-2.0/idwsf2_strings.h"
+#endif
/*****************************************************************************/
/* public functions */
@@ -201,6 +205,9 @@ lasso_profile_get_request_type_from_soap_msg(const gchar *soap)
type = LASSO_REQUEST_TYPE_NAME_IDENTIFIER_MAPPING;
} else if (strcmp(name, "AuthnRequest") == 0) {
type = LASSO_REQUEST_TYPE_LECP;
+ } else if (strcmp(name, "ManageNameIDRequest") == 0) {
+ type = LASSO_REQUEST_TYPE_NAME_ID_MANAGEMENT;
+#ifdef LASSO_WSF_ENABLED
} else if (strcmp(name, "Query") == 0) {
if (strcmp((char*)ns->href, LASSO_DISCO_HREF) == 0) {
type = LASSO_REQUEST_TYPE_DISCO_QUERY;
@@ -217,12 +224,11 @@ lasso_profile_get_request_type_from_soap_msg(const gchar *soap)
}
} else if (strcmp(name, "SASLRequest") == 0) {
type = LASSO_REQUEST_TYPE_SASL_REQUEST;
- } else if (strcmp(name, "ManageNameIDRequest") == 0) {
- type = LASSO_REQUEST_TYPE_NAME_ID_MANAGEMENT;
} else if (strcmp(name, "SvcMDRegister") == 0) {
type = LASSO_REQUEST_TYPE_IDWSF2_DISCO_SVCMD_REGISTER;
} else if (strcmp(name, "SvcMDAssociationAdd") == 0) {
type = LASSO_REQUEST_TYPE_IDWSF2_DISCO_SVCMD_ASSOCIATION_ADD;
+#endif
} else {
message(G_LOG_LEVEL_WARNING, "Unknown node name : %s", name);
}
@@ -743,7 +749,7 @@ LassoProviderRole lasso_profile_sso_role_with(LassoProfile *profile, const char
return LASSO_PROVIDER_ROLE_NONE;
/* coherency check */
- g_return_val_if_fail(g_strcmp0(federation->remote_providerID, remote_provider_id) == 0,
+ g_return_val_if_fail(lasso_strisequal(federation->remote_providerID,remote_provider_id),
LASSO_PROVIDER_ROLE_NONE);
if (LASSO_IS_SAML2_NAME_ID(federation->local_nameIdentifier)) {
@@ -758,9 +764,9 @@ LassoProviderRole lasso_profile_sso_role_with(LassoProfile *profile, const char
message(G_LOG_LEVEL_WARNING, "a federation without a NameID was found");
return LASSO_PROVIDER_ROLE_NONE;
}
- if (g_strcmp0(remote_provider_id, name_qualifier) == 0) {
+ if (lasso_strisequal(remote_provider_id,name_qualifier)) {
return LASSO_PROVIDER_ROLE_SP;
- } else if (g_strcmp0(provider_id, name_qualifier) == 0) {
+ } else if (lasso_strisequal(provider_id,name_qualifier)) {
return LASSO_PROVIDER_ROLE_IDP;
}
return LASSO_PROVIDER_ROLE_NONE;
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c
index 91abebcc..fe3f42be 100644
--- a/lasso/id-ff/provider.c
+++ b/lasso/id-ff/provider.c
@@ -632,7 +632,7 @@ _lasso_provider_load_key_descriptor(LassoProvider *provider, xmlNode *key_descri
private_data = provider->private_data;
use = xmlGetProp(key_descriptor, (xmlChar*)"use");
- if (use == NULL || g_strcmp0((char*)use, "signing") == 0) {
+ if (use == NULL || lasso_strisequal((char *)use,"signing")) {
lasso_assign_xml_node(private_data->signing_key_descriptor, key_descriptor);
}
if (use == NULL || strcmp((char*)use, "encryption") == 0) {
@@ -789,6 +789,16 @@ free_list_strings(GList *list)
lasso_release_list_of_strings(list);
}
+static void
+lasso_endpoint_free(EndpointType *endpoint_type) {
+ g_free(endpoint_type->binding);
+ g_free(endpoint_type->url);
+ g_free(endpoint_type->kind);
+ g_free(endpoint_type->return_url);
+ g_free(endpoint_type);
+}
+
+
static void
dispose(GObject *object)
{
@@ -840,6 +850,7 @@ dispose(GObject *object)
provider->private_data->affiliation_id = NULL;
lasso_release(provider->private_data->affiliation_owner_id);
provider->private_data->affiliation_owner_id = NULL;
+ lasso_release_list_of_full(provider->private_data->endpoints, lasso_endpoint_free);
G_OBJECT_CLASS(parent_class)->dispose(G_OBJECT(provider));
}
@@ -859,15 +870,6 @@ finalize(GObject *object)
/* instance and class init functions */
/*****************************************************************************/
-void
-lasso_endpoint_free(EndpointType *endpoint_type) {
- g_free(endpoint_type->binding);
- g_free(endpoint_type->url);
- g_free(endpoint_type->kind);
- g_free(endpoint_type->return_url);
- g_free(endpoint_type);
-}
-
static void
instance_init(LassoProvider *provider)
{
@@ -889,7 +891,6 @@ instance_init(LassoProvider *provider)
provider->private_data->encryption_public_key = NULL;
provider->private_data->encryption_mode = LASSO_ENCRYPTION_MODE_NONE;
provider->private_data->encryption_sym_key_type = LASSO_ENCRYPTION_SYM_KEY_TYPE_AES_128;
- lasso_release_list_of_full(provider->private_data->endpoints, lasso_endpoint_free);
/* no value_destroy_func since it shouldn't destroy the GList on insert */
provider->private_data->Descriptors = g_hash_table_new_full(
diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c
index b5d9a3a2..b40ee5b2 100644
--- a/lasso/id-ff/server.c
+++ b/lasso/id-ff/server.c
@@ -703,7 +703,7 @@ lasso_server_new_from_dump(const gchar *dump)
*
* Dumps @server content to an XML string.
*
- * Return value: the dump string. It must be freed by the caller.
+ * Return value:(transfer full): the dump string. It must be freed by the caller.
**/
gchar*
lasso_server_dump(LassoServer *server)
diff --git a/lasso/id-ff/session.c b/lasso/id-ff/session.c
index 2625818a..3e60c015 100644
--- a/lasso/id-ff/session.c
+++ b/lasso/id-ff/session.c
@@ -376,7 +376,7 @@ lasso_session_is_dirty(LassoSession *session)
gint
lasso_session_remove_assertion(LassoSession *session, const gchar *providerID)
{
- if (! LASSO_IS_SESSION(session) || lasso_is_empty_string(providerID)) {
+ if (! LASSO_IS_SESSION(session) || lasso_strisempty(providerID)) {
return LASSO_PARAM_ERROR_INVALID_VALUE;
}
@@ -756,7 +756,7 @@ lasso_session_new_from_dump(const gchar *dump)
*
* Dumps @session content to an XML string.
*
- * Return value: the dump string. It must be freed by the caller.
+ * Return value:(transfer full): the dump string. It must be freed by the caller.
**/
gchar*
lasso_session_dump(LassoSession *session)
diff --git a/lasso/id-wsf-2.0/data_service.c b/lasso/id-wsf-2.0/data_service.c
index c024008e..8f4012e6 100644
--- a/lasso/id-wsf-2.0/data_service.c
+++ b/lasso/id-wsf-2.0/data_service.c
@@ -35,6 +35,7 @@
#include
#include "./data_service.h"
+#include "../xml/id-wsf-2.0/idwsf2_strings.h"
#include "../xml/id-wsf-2.0/disco_service_type.h"
#include "../xml/id-wsf-2.0/dstref_query.h"
@@ -99,8 +100,8 @@ gint
lasso_idwsf2_data_service_set_service_type(LassoIdWsf2DataService *service, const char *prefix,
const char *service_type)
{
- if (!LASSO_IS_IDWSF2_DATA_SERVICE(service) || lasso_is_empty_string(prefix)
- || lasso_is_empty_string(service_type))
+ if (!LASSO_IS_IDWSF2_DATA_SERVICE(service) || lasso_strisempty(prefix)
+ || lasso_strisempty(service_type))
return LASSO_PARAM_ERROR_INVALID_VALUE;
lasso_assign_string(service->private_data->service_type_prefix, prefix);
lasso_assign_string(service->private_data->service_type, service_type);
@@ -258,7 +259,7 @@ lasso_idwsf2_data_service_add_query_item(LassoIdWsf2DataService *service, const
/* Check duplicates */
lasso_foreach(i, service->private_data->query_items) {
LassoIdWsf2DstRefQueryItem *old_item = (LassoIdWsf2DstRefQueryItem *)i->data;
- if (g_strcmp0(old_item->parent.parent.itemID, item_id) == 0) {
+ if (lasso_strisequal(old_item->parent.parent.itemID,item_id)) {
return LASSO_IDWSF2_DST_ERROR_DUPLICATE_ITEM;
}
}
@@ -297,7 +298,7 @@ lasso_idwsf2_data_service_add_modify_item(LassoIdWsf2DataService *service, const
}
lasso_foreach(i, service->private_data->modify_items) {
LassoIdWsf2DstRefModifyItem *old_item = (LassoIdWsf2DstRefModifyItem *)i->data;
- if (g_strcmp0(old_item->id, item_id) == 0) {
+ if (lasso_strisequal(old_item->id,item_id)) {
return LASSO_IDWSF2_DST_ERROR_DUPLICATE_ITEM;
}
}
@@ -390,7 +391,7 @@ lasso_idwsf2_data_service_get_item(LassoIdWsf2DataService *service,
}
lasso_foreach(i, service->private_data->query_items) {
LassoIdWsf2DstRefQueryItem *old_item = (LassoIdWsf2DstRefQueryItem *)i->data;
- if (g_strcmp0(old_item->parent.parent.itemID, item_id) == 0) {
+ if (lasso_strisequal(old_item->parent.parent.itemID,item_id)) {
return (LassoNode*)old_item;
}
}
@@ -404,7 +405,7 @@ lasso_idwsf2_data_service_get_item(LassoIdWsf2DataService *service,
}
lasso_foreach(i, service->private_data->modify_items) {
LassoIdWsf2DstRefModifyItem *old_item = (LassoIdWsf2DstRefModifyItem *)i->data;
- if (g_strcmp0(old_item->id, item_id) == 0) {
+ if (lasso_strisequal(old_item->id,item_id)) {
return (LassoNode*)old_item;
}
}
@@ -427,12 +428,12 @@ gint
lasso_idwsf2_data_service_add_namespace(LassoIdWsf2DataService *service, const char *prefix,
const char *href)
{
- if (xmlValidateNCName(BAD_CAST prefix, 0) && ! lasso_is_empty_string(href))
+ if (xmlValidateNCName(BAD_CAST prefix, 0) && ! lasso_strisempty(href))
return LASSO_PARAM_ERROR_INVALID_VALUE;
if (g_hash_table_lookup(service->private_data->namespaces, prefix) != NULL ||
- g_strcmp0(service->private_data->service_type_prefix, prefix) == 0 ||
- g_strcmp0(prefix, LASSO_IDWSF2_DSTREF_PREFIX) == 0) {
+ lasso_strisequal(service->private_data->service_type_prefix,prefix) ||
+ lasso_strisequal(prefix,LASSO_IDWSF2_DSTREF_PREFIX)) {
return LASSO_PARAM_ERROR_INVALID_VALUE;
}
@@ -832,13 +833,13 @@ lasso_idwsf2_data_service_process_response_msg(
if (! status || ! status->code) {
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_MISSING_STATUS_CODE);
}
- if (g_strcmp0(status->code, LASSO_DST2_STATUS_CODE1_FAILED) == 0) {
+ if (lasso_strisequal(status->code,LASSO_DST2_STATUS_CODE1_FAILED)) {
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_STATUS_NOT_SUCCESS);
}
- if (g_strcmp0(status->code, LASSO_DST2_STATUS_CODE1_PARTIAL) == 0) {
+ if (lasso_strisequal(status->code,LASSO_DST2_STATUS_CODE1_PARTIAL)) {
rc = LASSO_IDWSF2_DST_ERROR_PARTIAL_FAILURE;
}
- if (g_strcmp0(status->code, LASSO_DST2_STATUS_CODE1_OK) != 0) {
+ if (lasso_strisnotequal(status->code,LASSO_DST2_STATUS_CODE1_OK)) {
rc = LASSO_IDWSF2_DST_ERROR_UNKNOWN_STATUS_CODE;
}
@@ -909,7 +910,7 @@ lasso_idwsf2_data_service_get_query_item_result(LassoIdWsf2DataService *service,
}
lasso_foreach(i, service->private_data->query_datas) {
LassoIdWsf2DstRefData *data = (LassoIdWsf2DstRefData*)i->data;
- if (g_strcmp0(data->parent.itemIDRef, item_id) == 0) {
+ if (lasso_strisequal(data->parent.itemIDRef,item_id)) {
return data;
}
}
diff --git a/lasso/id-wsf-2.0/discovery.c b/lasso/id-wsf-2.0/discovery.c
index 4b9eb0c1..bc8e58fe 100644
--- a/lasso/id-wsf-2.0/discovery.c
+++ b/lasso/id-wsf-2.0/discovery.c
@@ -83,6 +83,7 @@
#include "../id-ff/providerprivate.h"
#include "./discovery.h"
+#include "../xml/id-wsf-2.0/idwsf2_strings.h"
#include "./soap_binding.h"
#include "./idwsf2_helper.h"
#include "./saml2_login.h"
@@ -226,7 +227,7 @@ lasso_idwsf2_discovery_status2rc(LassoIdWsf2UtilStatus *status)
return LASSO_PROFILE_ERROR_MISSING_STATUS_CODE;
for (i = 0; i < G_N_ELEMENTS(code2rc); ++i) {
- if (g_strcmp0(status->code, code2rc[i].code) == 0) {
+ if (lasso_strisequal(status->code,code2rc[i].code)) {
rc = code2rc[i].rc;
}
}
@@ -571,7 +572,7 @@ lasso_idwsf2_discovery_build_request_msg(LassoIdWsf2Discovery *discovery,
GList *i;
lasso_foreach(i, discovery->private_data->metadatas) {
LassoIdWsf2DiscoSvcMetadata *metadata = (LassoIdWsf2DiscoSvcMetadata *)i->data;
- if (lasso_is_empty_string(metadata->svcMDID)) {
+ if (lasso_strisempty(metadata->svcMDID)) {
message(G_LOG_LEVEL_WARNING, "disco:MetadataReplace method called with " \
"non registered metadatas " \
"(svcMDID attribute is missing)");
@@ -826,7 +827,7 @@ _string_list_intersect(GList *a, GList *b)
lasso_foreach(i, a)
{
lasso_foreach(j, b)
- if (g_strcmp0(i->data, j->data) == 0) {
+ if (lasso_strisequal(i->data,j->data)) {
return TRUE;
}
}
@@ -841,7 +842,7 @@ _string_list_contains(GList *a, const char *str)
if (a == NULL)
return TRUE;
lasso_foreach(i, a)
- if (g_strcmp0(i->data, str) == 0) {
+ if (lasso_strisequal(i->data,str)) {
return TRUE;
}
return FALSE;
@@ -916,7 +917,7 @@ lasso_idwsf2_discovery_match_request_service_and_metadata2(
gboolean has20 = FALSE;
lasso_foreach (k, endpoint_context->Framework) {
LassoIdWsf2SbfFramework *framework = k->data;
- if (LASSO_IS_IDWSF2_SBF_FRAMEWORK(framework) && g_strcmp0(framework->version, "2.0") == 0)
+ if (LASSO_IS_IDWSF2_SBF_FRAMEWORK(framework) && lasso_strisequal(framework->version,"2.0"))
has20 = TRUE;
}
result = result && has20;
@@ -1033,7 +1034,7 @@ lasso_idwsf2_discovery_validate_md_register(LassoIdWsf2Discovery *discovery)
response = lasso_idwsf2_disco_svc_md_register_response_new();
response->Status =
- lasso_idwsf2_util_status_new_with_code(LASSO_DISCO_STATUS_CODE_OK, NULL);
+ lasso_idwsf2_util_status_new_with_code(LASSO_IDWSF2_DISCOVERY_STATUS_CODE_OK, NULL);
for (SvcMDs = discovery->private_data->metadatas; SvcMDs != NULL; SvcMDs = g_list_next(SvcMDs)) {
lasso_list_add_string(response->SvcMDID,
LASSO_IDWSF2_DISCO_SVC_METADATA(SvcMDs->data)->svcMDID);
diff --git a/lasso/id-wsf-2.0/identity.c b/lasso/id-wsf-2.0/identity.c
index 6133bf5f..dadbff8d 100644
--- a/lasso/id-wsf-2.0/identity.c
+++ b/lasso/id-wsf-2.0/identity.c
@@ -23,6 +23,7 @@
*/
#include "identity.h"
+#include "../xml/id-wsf-2.0/idwsf2_strings.h"
#include "../utils.h"
#include "../id-ff/identity.h"
#include "../id-ff/identityprivate.h"
diff --git a/lasso/id-wsf-2.0/idwsf2_helper.c b/lasso/id-wsf-2.0/idwsf2_helper.c
index e7b4a2a0..f8577ed9 100644
--- a/lasso/id-wsf-2.0/idwsf2_helper.c
+++ b/lasso/id-wsf-2.0/idwsf2_helper.c
@@ -23,6 +23,7 @@
*/
#include "./idwsf2_helper.h"
+#include "../xml/id-wsf-2.0/idwsf2_strings.h"
#include "../xml/id-wsf-2.0/disco_abstract.h"
#include "../xml/id-wsf-2.0/disco_service_type.h"
#include "../xml/id-wsf-2.0/disco_provider_id.h"
@@ -114,7 +115,7 @@ lasso_wsa_endpoint_reference_get_idwsf2_security_context_for_security_mechanism(
lasso_foreach_full_begin(LassoIdWsf2DiscoSecurityContext*, context, it1, epr->Metadata->any);
if (LASSO_IS_IDWSF2_DISCO_SECURITY_CONTEXT (context)) {
lasso_foreach_full_begin(char*, textnode, it2, context->SecurityMechID);
- if (g_strcmp0 (textnode, security_mech_id) == 0 || sech_mech_predicate(textnode)) {
+ if (lasso_strisequal(textnode,security_mech_id) || sech_mech_predicate(textnode)) {
return context;
}
lasso_foreach_full_end()
@@ -164,7 +165,7 @@ lasso_wsa_endpoint_reference_get_token_by_usage(
epr, sec_mech_predicate, security_mech_id, TRUE);
lasso_foreach_full_begin (LassoIdWsf2SecToken*, token, iter, security_context->Token);
if (LASSO_IS_IDWSF2_SEC_TOKEN (token)) {
- if (usage && g_strcmp0(token->usage, usage) == 0) {
+ if (usage && lasso_strisequal(token->usage,usage)) {
if (LASSO_IS_NODE(token->any)) {
return (LassoNode*)token->any;
} else if (token->ref) {
diff --git a/lasso/id-wsf-2.0/profile.c b/lasso/id-wsf-2.0/profile.c
index d1c96436..489c5899 100644
--- a/lasso/id-wsf-2.0/profile.c
+++ b/lasso/id-wsf-2.0/profile.c
@@ -38,6 +38,8 @@
#include "../saml-2.0/profileprivate.h"
#include "profile.h"
+#include "../xml/id-wsf-2.0/idwsf2_strings.h"
+#include "../xml/idwsf_strings.h"
#include "session.h"
#include "../xml/soap-1.1/soap_fault.h"
@@ -433,7 +435,7 @@ lasso_idwsf2_profile_check_security_mechanism(LassoIdWsf2Profile *profile,
name_qualifier = assertion->Subject->NameID->NameQualifier;
sp_name_qualifier = assertion->Subject->NameID->SPNameQualifier;
}
- if (! name_qualifier || g_strcmp0(name_qualifier, issuer->ProviderID) != 0)
+ if (! name_qualifier || lasso_strisnotequal(name_qualifier,issuer->ProviderID))
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_INVALID_ASSERTION);
/* There is two cases for the NameID of the security assertion:
* - we are the IdP and the Wsp, so the NameQualifier is us and the SPNameQualifier is the
@@ -447,10 +449,10 @@ lasso_idwsf2_profile_check_security_mechanism(LassoIdWsf2Profile *profile,
sender_id = lasso_soap_envelope_sb2_get_provider_id(envelope);
if (! sender_id)
goto_cleanup_with_rc(LASSO_WSF_PROFILE_ERROR_MISSING_SENDER_ID);
- if (local_service_id && g_strcmp0(local_service_id, name_qualifier) == 0 &&
- sp_name_qualifier && g_strcmp0(sp_name_qualifier, sender_id) == 0) {
+ if (local_service_id && lasso_strisequal(local_service_id,name_qualifier) &&
+ sp_name_qualifier && lasso_strisequal(sp_name_qualifier,sender_id)) {
/* Ok. */
- } else if (sp_name_qualifier && g_strcmp0(sp_name_qualifier, local_service_id) == 0) {
+ } else if (sp_name_qualifier && lasso_strisequal(sp_name_qualifier,local_service_id)) {
/* Ok. */
} else {
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_INVALID_ASSERTION);
diff --git a/lasso/id-wsf-2.0/saml2_login.c b/lasso/id-wsf-2.0/saml2_login.c
index 49e81287..fc0f074b 100644
--- a/lasso/id-wsf-2.0/saml2_login.c
+++ b/lasso/id-wsf-2.0/saml2_login.c
@@ -23,6 +23,7 @@
*/
#include "./saml2_login.h"
+#include "../xml/id-wsf-2.0/idwsf2_strings.h"
#include "identity.h"
#include "server.h"
#include "session.h"
@@ -240,7 +241,7 @@ lasso_saml2_assertion_idwsf2_get_discovery_bootstrap_epr(LassoSaml2Assertion *as
continue;
attribute = LASSO_SAML2_ATTRIBUTE(j->data);
- if (g_strcmp0(attribute->Name, LASSO_SAML2_ATTRIBUTE_NAME_EPR) != 0)
+ if (lasso_strisnotequal(attribute->Name,LASSO_SAML2_ATTRIBUTE_NAME_EPR))
continue;
/* There should only one attribute value, and the EPR should be the first
* contained node */
diff --git a/lasso/id-wsf-2.0/server.c b/lasso/id-wsf-2.0/server.c
index b0d9b817..dbe04d12 100644
--- a/lasso/id-wsf-2.0/server.c
+++ b/lasso/id-wsf-2.0/server.c
@@ -23,6 +23,7 @@
*/
#include "server.h"
+#include "../xml/id-wsf-2.0/idwsf2_strings.h"
#include "../id-ff/server.h"
#include "../id-ff/serverprivate.h"
#include "../xml/id-wsf-2.0/disco_svc_metadata.h"
diff --git a/lasso/id-wsf-2.0/session.c b/lasso/id-wsf-2.0/session.c
index 0b0756a4..d226cabc 100644
--- a/lasso/id-wsf-2.0/session.c
+++ b/lasso/id-wsf-2.0/session.c
@@ -26,6 +26,7 @@
* SECTION:idwsf2-session-extension
*/
#include "session.h"
+#include "../xml/id-wsf-2.0/idwsf2_strings.h"
#include "../utils.h"
#include "../id-ff/session.h"
#include "../id-ff/sessionprivate.h"
diff --git a/lasso/id-wsf-2.0/soap_binding.c b/lasso/id-wsf-2.0/soap_binding.c
index b9c7bb96..347a1513 100644
--- a/lasso/id-wsf-2.0/soap_binding.c
+++ b/lasso/id-wsf-2.0/soap_binding.c
@@ -23,6 +23,8 @@
*/
#include "./soap_binding.h"
+#include "../xml/idwsf_strings.h"
+#include "../xml/id-wsf-2.0/idwsf2_strings.h"
#include "../xml/id-wsf-2.0/sb2_sender.h"
#include "../xml/id-wsf-2.0/sb2_redirect_request.h"
#include "../xml/id-wsf-2.0/sb2_user_interaction_header.h"
@@ -238,7 +240,7 @@ lasso_soap_envelope_get_action(LassoSoapEnvelope *soap_envelope)
lasso_foreach(i, soap_envelope->Header->Other) {
if (LASSO_IS_WSA_ATTRIBUTED_URI(i->data)
- && g_strcmp0(lasso_node_get_name((LassoNode*)i->data), "Action")) {
+ && lasso_strisequal(lasso_node_get_name((LassoNode *)i->data),"Action")) {
return ((LassoWsAddrAttributedURI*)i->data)->content;
}
}
@@ -271,9 +273,9 @@ _get_node(GList **list, GType node_type, const char *node_name, const char *node
if (LASSO_IS_NODE(node) &&
(! node_type || ( G_IS_OBJECT(node) && G_OBJECT_TYPE(node) == node_type)) &&
- (! node_name || g_strcmp0(lasso_node_get_name(node), node_name) == 0) &&
+ (! node_name || lasso_strisequal(lasso_node_get_name(node),node_name)) &&
(! node_namespace ||
- g_strcmp0(lasso_node_get_namespace(node), node_namespace) == 0)) {
+ lasso_strisequal(lasso_node_get_namespace(node),node_namespace))) {
return node;
}
}
@@ -282,10 +284,10 @@ _get_node(GList **list, GType node_type, const char *node_name, const char *node
if (! node) {
return NULL;
}
- if (g_strcmp0(lasso_node_get_name(node), node_name) != 0) {
+ if (lasso_strisnotequal(lasso_node_get_name(node),node_name)) {
lasso_node_set_custom_nodename(node, node_name);
}
- if (g_strcmp0(lasso_node_get_namespace(node), node_namespace) == 0) {
+ if (lasso_strisequal(lasso_node_get_namespace(node),node_namespace)) {
lasso_node_set_custom_namespace(node, node_namespace, node_prefix);
}
lasso_list_add_new_gobject(*list, node);
@@ -435,11 +437,11 @@ lasso_soap_envelope_get_sb2_user_interaction_hint(LassoSoapEnvelope *soap_envelo
header = lasso_soap_envelope_get_sb2_user_interaction_header(soap_envelope, FALSE);
if (header) {
hint = header->interact;
- if (g_strcmp0(hint, LASSO_SB2_USER_INTERACTION_INTERACT_IF_NEEDED) == 0)
+ if (lasso_strisequal(hint,LASSO_SB2_USER_INTERACTION_INTERACT_IF_NEEDED))
return LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_INTERACT_IF_NEEDED;
- if (g_strcmp0(hint, LASSO_SB2_USER_INTERACTION_DO_NOT_INTERACT) == 0)
+ if (lasso_strisequal(hint,LASSO_SB2_USER_INTERACTION_DO_NOT_INTERACT))
return LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_DO_NOT_INTERACT;
- if (g_strcmp0(hint, LASSO_SB2_USER_INTERACTION_DO_NOT_INTERACT_FOR_DATA) == 0)
+ if (lasso_strisequal(hint,LASSO_SB2_USER_INTERACTION_DO_NOT_INTERACT_FOR_DATA))
return LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_DO_NOT_INTERACT_FOR_DATA;
}
diff --git a/lasso/id-wsf/authentication.c b/lasso/id-wsf/authentication.c
index 0dee1e29..c922f368 100644
--- a/lasso/id-wsf/authentication.c
+++ b/lasso/id-wsf/authentication.c
@@ -24,6 +24,7 @@
#include "../utils.h"
#include "./authentication.h"
+#include "../xml/idwsf_strings.h"
#include "../xml/private.h"
#include "../xml/sa_sasl_request.h"
#include "../xml/sa_sasl_response.h"
diff --git a/lasso/id-wsf/data_service.c b/lasso/id-wsf/data_service.c
index 37d71287..3a404e03 100644
--- a/lasso/id-wsf/data_service.c
+++ b/lasso/id-wsf/data_service.c
@@ -63,6 +63,7 @@
#include "./discovery.h"
#include "./data_service.h"
+#include "../xml/idwsf_strings.h"
#include "../xml/dst_query.h"
#include "../xml/dst_query_response.h"
#include "../xml/dst_modify.h"
@@ -236,8 +237,8 @@ lasso_data_service_get_query_item(LassoDataService *service,
{
LassoDstQueryItem *query_item = NULL;
lasso_extract_node_or_fail(query_item, query_items->data, DST_QUERY_ITEM, LASSO_ERROR_CAST_FAILED);
- if ((select && g_strcmp0(select, query_item->Select) == 0) ||
- (item_id && g_strcmp0(item_id, query_item->itemID) == 0))
+ if ((select && lasso_strisequal(select,query_item->Select)) ||
+ (item_id && lasso_strisequal(item_id,query_item->itemID)))
{
if (output) {
lasso_assign_new_gobject(*output, query_item);
@@ -430,7 +431,7 @@ lasso_data_service_get_answers_by_select(LassoDataService *service, const char *
if (datas) {
lasso_extract_node_or_fail(data, datas->data, DST_DATA,
LASSO_ERROR_CAST_FAILED);
- if (g_strcmp0(select, query_item->Select) != 0) {
+ if (lasso_strisnotequal(select,query_item->Select)) {
data = NULL;
rc = LASSO_DST_ERROR_QUERY_NOT_FOUND;
}
@@ -443,7 +444,7 @@ lasso_data_service_get_answers_by_select(LassoDataService *service, const char *
while (iter) {
lasso_extract_node_or_fail(query_item, iter->data, DST_QUERY_ITEM,
LASSO_ERROR_CAST_FAILED);
- if (g_strcmp0(query_item->Select, select) == 0) {
+ if (lasso_strisequal(query_item->Select,select)) {
break;
}
query_item = NULL;
@@ -456,7 +457,7 @@ lasso_data_service_get_answers_by_select(LassoDataService *service, const char *
while (datas) {
lasso_extract_node_or_fail(data, datas->data, DST_DATA,
LASSO_ERROR_CAST_FAILED);
- if (g_strcmp0(data->itemIDRef, query_item->itemID) == 0) {
+ if (lasso_strisequal(data->itemIDRef,query_item->itemID)) {
break;
}
data = NULL;
@@ -509,7 +510,7 @@ lasso_data_service_get_answers_by_item_id(LassoDataService *service, const char
datas = query_response->Data;
while (datas) {
lasso_extract_node_or_fail(data, datas->data, DST_DATA, LASSO_ERROR_CAST_FAILED);
- if (g_strcmp0(data->itemIDRef, item_id) == 0) {
+ if (lasso_strisequal(data->itemIDRef,item_id)) {
break;
}
data = NULL;
@@ -1039,6 +1040,7 @@ lasso_data_service_apply_queries(LassoDataService *service, LassoDstQueryRespons
LassoWsfProfile *wsf_profile = NULL;
xmlDoc *doc = NULL;
xmlXPathContext *xpathCtx = NULL;
+ GList *query = NULL;
lasso_bad_param(DATA_SERVICE, service);
g_return_val_if_fail(service->private_data, LASSO_PARAM_ERROR_NON_INITIALIZED_OBJECT);
@@ -1066,8 +1068,8 @@ lasso_data_service_apply_queries(LassoDataService *service, LassoDstQueryRespons
xpathCtx = xmlXPathNewContext(doc);
lasso_register_idwsf_xpath_namespaces(xpathCtx);
- lasso_foreach (queries, queries) {
- LassoDstQueryItem *item = queries->data;
+ lasso_foreach (query, queries) {
+ LassoDstQueryItem *item = query->data;
goto_cleanup_if_fail_with_rc(lasso_data_service_apply_query(service, query_response,
xpathCtx, item) == 0, query_response->Data ?
diff --git a/lasso/id-wsf/discovery.c b/lasso/id-wsf/discovery.c
index 7f5102e6..eb00e98c 100644
--- a/lasso/id-wsf/discovery.c
+++ b/lasso/id-wsf/discovery.c
@@ -75,6 +75,7 @@
#include "../xml/saml_attribute_value.h"
#include "../xml/disco_modify.h"
#include "../xml/saml_assertion.h"
+#include "../xml/idwsf_strings.h"
#include "../id-ff/server.h"
#include "../id-ff/provider.h"
@@ -85,6 +86,7 @@
#include "./wsf_profile_private.h"
#include "./wsf_utils.h"
#include "../utils.h"
+#include "./discovery.h"
struct _LassoDiscoveryPrivate
{
diff --git a/lasso/id-wsf/id_ff_extensions.c b/lasso/id-wsf/id_ff_extensions.c
index 4d2acc29..503cc409 100644
--- a/lasso/id-wsf/id_ff_extensions.c
+++ b/lasso/id-wsf/id_ff_extensions.c
@@ -25,6 +25,7 @@
*/
#include "id_ff_extensions.h"
+#include "../xml/idwsf_strings.h"
#include "id_ff_extensions_private.h"
#include "../xml/disco_description.h"
#include "../xml/disco_resource_offering.h"
diff --git a/lasso/id-wsf/interaction_profile_service.c b/lasso/id-wsf/interaction_profile_service.c
index c390de94..206bc7ab 100644
--- a/lasso/id-wsf/interaction_profile_service.c
+++ b/lasso/id-wsf/interaction_profile_service.c
@@ -23,6 +23,7 @@
*/
#include "./interaction_profile_service.h"
+#include "../xml/idwsf_strings.h"
#include "./wsf_profile.h"
#include "../xml/soap-1.1/soap_detail.h"
#include "../xml/soap-1.1/soap_fault.h"
diff --git a/lasso/id-wsf/personal_profile_service.c b/lasso/id-wsf/personal_profile_service.c
index 6970c108..3aa558c8 100644
--- a/lasso/id-wsf/personal_profile_service.c
+++ b/lasso/id-wsf/personal_profile_service.c
@@ -24,6 +24,7 @@
#include "../xml/private.h"
#include "./personal_profile_service.h"
+#include "../xml/idwsf_strings.h"
#include "./data_service.h"
#include "./wsf_profile_private.h"
#include "./discovery.h"
@@ -45,7 +46,7 @@ lasso_personal_profile_service_get_email(LassoPersonalProfileService *service)
xmlNode *xmlnode, *child;
xmlChar *msgAccount = NULL, *msgProvider = NULL;
char *email;
- GList *answers = NULL;
+ GList *answers = NULL, *answer = NULL;
gint rc = 0;
g_return_val_if_fail(LASSO_IS_PERSONAL_PROFILE_SERVICE(service) == TRUE, NULL);
@@ -53,9 +54,9 @@ lasso_personal_profile_service_get_email(LassoPersonalProfileService *service)
rc = lasso_data_service_get_answers_by_select(LASSO_DATA_SERVICE(service),
"/pp:PP/pp:MsgContact", &answers);
- lasso_foreach(answers, answers)
+ lasso_foreach(answer, answers)
{
- xmlnode = (xmlNode*)answers->data;
+ xmlnode = (xmlNode*)answer->data;
child = xmlnode->children;
while (child != NULL) {
if (child->type != XML_ELEMENT_NODE) {
diff --git a/lasso/id-wsf/wsf_profile.c b/lasso/id-wsf/wsf_profile.c
index 79075ff8..f1840bb7 100644
--- a/lasso/id-wsf/wsf_profile.c
+++ b/lasso/id-wsf/wsf_profile.c
@@ -35,6 +35,7 @@
#include "../utils.h"
#include "./wsf_profile.h"
+#include "../xml/idwsf_strings.h"
#include "./wsf_profile_private.h"
#include "./discovery.h"
#include "./wsf_utils.h"
@@ -989,12 +990,14 @@ lasso_wsf_profile_process_soap_response_msg(LassoWsfProfile *profile, const gcha
LASSO_WSF_PROFILE_ERROR_MISSING_CORRELATION);
/* Check message ID */
- goto_cleanup_if_fail_with_rc(
- g_strcmp0(lasso_wsf_profile_utils_get_message_id(
- profile->soap_envelope_request),
- lasso_wsf_profile_utils_get_ref_message_id(
- profile->soap_envelope_response)) == 0,
- LASSO_WSF_PROFILE_ERROR_INVALID_OR_MISSING_REFERENCE_TO_MESSAGE_ID);
+ {
+ const char *message_id =
+ lasso_wsf_profile_utils_get_message_id(profile->soap_envelope_request);
+ const char *ref_message_id =
+ lasso_wsf_profile_utils_get_ref_message_id(profile->soap_envelope_response);
+ goto_cleanup_if_fail_with_rc(lasso_strisequal(message_id, ref_message_id),
+ LASSO_WSF_PROFILE_ERROR_INVALID_OR_MISSING_REFERENCE_TO_MESSAGE_ID);
+ }
/* Signal soap fault specifically,
* find soap redirects. */
diff --git a/lasso/id-wsf/wsf_utils.c b/lasso/id-wsf/wsf_utils.c
index e3594be4..efa88995 100644
--- a/lasso/id-wsf/wsf_utils.c
+++ b/lasso/id-wsf/wsf_utils.c
@@ -44,6 +44,7 @@
#include
#include "../xml/strings.h"
+#include "../xml/idwsf_strings.h"
/**
* lasso_security_mech_id_is_null_authentication:
diff --git a/lasso/lasso.c b/lasso/lasso.c
index d35e072d..28e60fb6 100644
--- a/lasso/lasso.c
+++ b/lasso/lasso.c
@@ -286,23 +286,23 @@ void lasso_set_flag(char *flag) {
}
do {
- if (g_strcmp0(flag, "verify-signature") == 0) {
+ if (lasso_strisequal(flag,"verify-signature")) {
lasso_flag_verify_signature = value;
continue;
}
- if (g_strcmp0(flag,"memory-debug") == 0) {
+ if (lasso_strisequal(flag,"memory-debug")) {
lasso_flag_memory_debug = value;
continue;
}
- if (g_strcmp0(flag,"strict-checking") == 0) {
+ if (lasso_strisequal(flag,"strict-checking")) {
lasso_flag_strict_checking = value;
continue;
}
- if (g_strcmp0(flag,"add-signature") == 0) {
+ if (lasso_strisequal(flag,"add-signature")) {
lasso_flag_add_signature = value;
continue;
}
- if (g_strcmp0(flag, "sign-messages") == 0) {
+ if (lasso_strisequal(flag,"sign-messages")) {
lasso_flag_sign_messages = value;
continue;
}
diff --git a/lasso/registry.c b/lasso/registry.c
index 9b3f338c..0816c0c1 100644
--- a/lasso/registry.c
+++ b/lasso/registry.c
@@ -96,7 +96,8 @@ void lasso_registry_default_shutdown()
*
* Return value: TRUE if all field of record1 are equal to record2.
*/
-gboolean lasso_registry_direct_mapping_equal(LassoRegistryDirectMappingRecord *record1, LassoRegistryDirectMappingRecord *record2)
+gboolean lasso_registry_direct_mapping_equal(LassoRegistryDirectMappingRecord *record1,
+ LassoRegistryDirectMappingRecord *record2)
{
return record1->from_namespace == record2->from_namespace
&& record1->from_name == record2->from_name
@@ -113,7 +114,8 @@ gboolean lasso_registry_direct_mapping_equal(LassoRegistryDirectMappingRecord *r
*
* Return value: TRUE if record1 is equal to record2
*/
-gboolean lasso_registry_functional_mapping_equal(LassoRegistryFunctionalMappingRecord *record1, LassoRegistryFunctionalMappingRecord *record2)
+gboolean lasso_registry_functional_mapping_equal(LassoRegistryFunctionalMappingRecord *record1,
+ LassoRegistryFunctionalMappingRecord *record2)
{
return record1->from_namespace == record2->from_namespace &&
record1->to_namespace == record2->to_namespace;
diff --git a/lasso/saml-2.0/assertion_query.c b/lasso/saml-2.0/assertion_query.c
index 3b15d484..3e08d5bc 100644
--- a/lasso/saml-2.0/assertion_query.c
+++ b/lasso/saml-2.0/assertion_query.c
@@ -270,28 +270,20 @@ lasso_assertion_query_process_request_msg(LassoAssertionQuery *assertion_query,
LassoProfile *profile = NULL;
LassoSamlp2SubjectQueryAbstract *subject_query = NULL;
LassoSaml2Subject *subject = NULL;
- int rc = 0, rc1 = 0, rc2 = 0;
+ int rc = 0;
g_return_val_if_fail(LASSO_IS_ASSERTION_QUERY(assertion_query),
LASSO_PARAM_ERROR_INVALID_VALUE);
profile = LASSO_PROFILE(assertion_query);
- rc1 = lasso_saml20_profile_process_soap_request(profile, request_msg);
-
+ lasso_check_good_rc(lasso_saml20_profile_process_soap_request(profile, request_msg));
lasso_extract_node_or_fail(subject_query, profile->request, SAMLP2_SUBJECT_QUERY_ABSTRACT,
LASSO_PROFILE_ERROR_INVALID_MSG);
lasso_extract_node_or_fail(subject, subject_query->Subject, SAML2_SUBJECT,
LASSO_PROFILE_ERROR_MISSING_SUBJECT);
+ lasso_check_good_rc(lasso_saml20_profile_process_name_identifier_decryption(profile, &subject->NameID, &subject->EncryptedID));
- rc2 = lasso_saml20_profile_process_name_identifier_decryption(profile, &subject->NameID, &subject->EncryptedID);
-
- rc = rc1;
- if (rc == 0)
- rc = rc2;
- if (rc == 0)
- rc = profile->signature_status;
cleanup:
-
return rc;
}
@@ -384,16 +376,15 @@ lasso_assertion_query_process_response_msg(
LassoAssertionQuery *assertion_query,
gchar *response_msg)
{
- LassoProfile *profile;
- LassoSamlp2StatusResponse *response;
+ LassoProfile *profile = NULL;
+ LassoSamlp2StatusResponse *response = NULL;
int rc = 0;
lasso_bad_param(ASSERTION_QUERY, assertion_query);
profile = &assertion_query->parent;
- response = (LassoSamlp2StatusResponse*)lasso_samlp2_response_new();
- lasso_check_good_rc(lasso_saml20_profile_process_any_response(profile,
- response, NULL, response_msg));
+ lasso_check_good_rc(lasso_saml20_profile_process_soap_response(profile,
+ response_msg));
cleanup:
lasso_release_gobject(response);
@@ -415,8 +406,8 @@ lasso_assertion_query_lookup_attribute(LassoAssertionQuery *assertion_query, cha
lasso_foreach_full_begin(LassoSaml2Attribute*, attribute, it, query->Attribute)
{
if (LASSO_IS_SAML2_ATTRIBUTE(attribute) &&
- g_strcmp0(attribute->NameFormat, format) == 0 &&
- g_strcmp0(attribute->Name, name) == 0)
+ lasso_strisequal(attribute->NameFormat,format) &&
+ lasso_strisequal(attribute->Name,name))
{
result = attribute;
break;
diff --git a/lasso/saml-2.0/login.c b/lasso/saml-2.0/login.c
index 80b98131..aa892315 100644
--- a/lasso/saml-2.0/login.c
+++ b/lasso/saml-2.0/login.c
@@ -112,24 +112,28 @@ cleanup:
static gboolean want_authn_request_signed(LassoProvider *provider) {
char *s;
+ gboolean rc = TRUE;
s = lasso_provider_get_metadata_one_for_role(provider, LASSO_PROVIDER_ROLE_IDP,
LASSO_SAML2_METADATA_ATTRIBUTE_WANT_AUTHN_REQUEST_SIGNED);
- if (g_strcmp0(s, "false") == 0) {
- return FALSE;
+ if (lasso_strisequal(s,"false")) {
+ rc = FALSE;
}
- return TRUE;
+ lasso_release_string(s);
+ return rc;
}
static gboolean authn_request_signed(LassoProvider *provider) {
char *s;
+ gboolean rc = FALSE;
s = lasso_provider_get_metadata_one_for_role(provider, LASSO_PROVIDER_ROLE_SP,
LASSO_SAML2_METADATA_ATTRIBUTE_AUTHN_REQUEST_SIGNED);
- if (g_strcmp0(s, "true") == 0) {
- return TRUE;
+ if (lasso_strisequal(s,"true")) {
+ rc = TRUE;
}
- return FALSE;
+ lasso_release_string(s);
+ return rc;
}
static gboolean
@@ -243,8 +247,7 @@ lasso_saml20_login_build_authn_request_msg(LassoLogin *login)
/* support old way of doing PAOS */
if (login->http_method == LASSO_HTTP_METHOD_SOAP
- && g_strcmp0(authn_request->ProtocolBinding,
- LASSO_SAML2_METADATA_BINDING_PAOS) == 0) {
+ && lasso_strisequal(authn_request->ProtocolBinding,LASSO_SAML2_METADATA_BINDING_PAOS)) {
login->http_method = LASSO_HTTP_METHOD_PAOS;
/* PAOS is special, the url passed to build_request is the AssertionConsumerServiceURL of
* this SP, not the destination. */
@@ -279,7 +282,7 @@ lasso_saml20_login_process_authn_request_msg(LassoLogin *login, const char *auth
/* AuthnRequest already set by .._init_idp_initiated_authn_request, or from a
* previously failed call to process_authn_request that we retry. */
- request = profile->request;
+ request = lasso_ref(profile->request);
} else {
request = lasso_samlp2_authn_request_new();
lasso_check_good_rc(lasso_saml20_profile_process_any_request(profile, request, authn_request_msg));
@@ -332,15 +335,15 @@ lasso_saml20_login_process_authn_request_msg(LassoLogin *login, const char *auth
if (binding == NULL) {
if (service_index == -1)
return LASSO_LOGIN_ERROR_NO_DEFAULT_ENDPOINT;
- } else if (g_strcmp0(binding, "HTTP-Artifact") == 0) {
+ } else if (lasso_strisequal(binding,"HTTP-Artifact")) {
login->protocolProfile = LASSO_LOGIN_PROTOCOL_PROFILE_BRWS_ART;
- } else if (g_strcmp0(binding, "HTTP-POST") == 0) {
+ } else if (lasso_strisequal(binding,"HTTP-POST")) {
login->protocolProfile = LASSO_LOGIN_PROTOCOL_PROFILE_BRWS_POST;
- } else if (g_strcmp0(binding, "HTTP-Redirect") == 0) {
+ } else if (lasso_strisequal(binding,"HTTP-Redirect")) {
login->protocolProfile = LASSO_LOGIN_PROTOCOL_PROFILE_REDIRECT;
- } else if (g_strcmp0(binding, "SOAP") == 0) {
+ } else if (lasso_strisequal(binding,"SOAP")) {
login->protocolProfile = LASSO_LOGIN_PROTOCOL_PROFILE_BRWS_LECP;
- } else if (g_strcmp0(binding, "PAOS") == 0) {
+ } else if (lasso_strisequal(binding,"PAOS")) {
login->protocolProfile = LASSO_LOGIN_PROTOCOL_PROFILE_BRWS_LECP;
}
lasso_release_string(binding);
@@ -352,17 +355,16 @@ lasso_saml20_login_process_authn_request_msg(LassoLogin *login, const char *auth
remote_provider,
authn_request->AssertionConsumerServiceURL);
}
- if (g_strcmp0(protocol_binding, LASSO_SAML2_METADATA_BINDING_ARTIFACT) == 0) {
+ if (lasso_strisequal(protocol_binding,LASSO_SAML2_METADATA_BINDING_ARTIFACT)) {
login->protocolProfile = LASSO_LOGIN_PROTOCOL_PROFILE_BRWS_ART;
- } else if (g_strcmp0(protocol_binding, LASSO_SAML2_METADATA_BINDING_POST) == 0) {
+ } else if (lasso_strisequal(protocol_binding,LASSO_SAML2_METADATA_BINDING_POST)) {
login->protocolProfile = LASSO_LOGIN_PROTOCOL_PROFILE_BRWS_POST;
- } else if (g_strcmp0(protocol_binding, LASSO_SAML2_METADATA_BINDING_SOAP) == 0) {
+ } else if (lasso_strisequal(protocol_binding,LASSO_SAML2_METADATA_BINDING_SOAP)) {
login->protocolProfile = LASSO_LOGIN_PROTOCOL_PROFILE_BRWS_LECP;
- } else if (g_strcmp0(protocol_binding,
- LASSO_SAML2_METADATA_BINDING_REDIRECT) == 0) {
+ } else if (lasso_strisequal(protocol_binding,LASSO_SAML2_METADATA_BINDING_REDIRECT)) {
login->protocolProfile = LASSO_LOGIN_PROTOCOL_PROFILE_REDIRECT;
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_INVALID_PROTOCOLPROFILE);
- } else if (g_strcmp0(protocol_binding, LASSO_SAML2_METADATA_BINDING_PAOS) == 0) {
+ } else if (lasso_strisequal(protocol_binding,LASSO_SAML2_METADATA_BINDING_PAOS)) {
login->protocolProfile = LASSO_LOGIN_PROTOCOL_PROFILE_BRWS_LECP;
} else {
rc = LASSO_PROFILE_ERROR_INVALID_PROTOCOLPROFILE;
@@ -383,6 +385,7 @@ lasso_saml20_login_process_authn_request_msg(LassoLogin *login, const char *auth
lasso_saml20_profile_init_response(profile, response,
status1, status2);
cleanup:
+ lasso_release_gobject(request);
lasso_release_gobject(response);
return rc;
}
@@ -410,15 +413,15 @@ lasso_saml20_login_must_authenticate(LassoLogin *login)
GList *t1, *t2;
int compa;
- if (comparison == NULL || g_strcmp0(comparison, "exact") == 0) {
+ if (comparison == NULL || lasso_strisequal(comparison,"exact")) {
compa = 0;
- } else if (g_strcmp0(comparison, "minimum") == 0) {
+ } else if (lasso_strisequal(comparison,"minimum")) {
message(G_LOG_LEVEL_CRITICAL, "'minimum' comparison is not implemented");
compa = 0;
- } else if (g_strcmp0(comparison, "better") == 0) {
+ } else if (lasso_strisequal(comparison,"better")) {
message(G_LOG_LEVEL_CRITICAL, "'better' comparison is not implemented");
compa = 0;
- } else if (g_strcmp0(comparison, "maximum") == 0) {
+ } else if (lasso_strisequal(comparison,"maximum")) {
message(G_LOG_LEVEL_CRITICAL, "'maximum' comparison is not implemented");
compa = 0;
}
@@ -458,7 +461,7 @@ lasso_saml20_login_must_authenticate(LassoLogin *login)
method = as->AuthnContext->AuthnContextClassRef;
if (compa == 0) { /* exact */
- if (g_strcmp0(method, class_ref) == 0) {
+ if (lasso_strisequal(method,class_ref)) {
matched = TRUE;
break;
}
@@ -506,7 +509,7 @@ lasso_saml20_login_must_ask_for_consent_private(LassoLogin *login)
if (name_id_policy) {
char *format = name_id_policy->Format;
- if (g_strcmp0(format, LASSO_SAML2_NAME_IDENTIFIER_FORMAT_TRANSIENT) == 0) {
+ if (lasso_strisequal(format,LASSO_SAML2_NAME_IDENTIFIER_FORMAT_TRANSIENT)) {
goto_cleanup_with_rc (FALSE)
}
if (name_id_policy->AllowCreate == FALSE) {
@@ -533,22 +536,22 @@ lasso_saml20_login_must_ask_for_consent_private(LassoLogin *login)
if (consent == NULL)
goto_cleanup_with_rc (FALSE)
- if (g_strcmp0(consent, LASSO_SAML2_CONSENT_OBTAINED) == 0)
+ if (lasso_strisequal(consent,LASSO_SAML2_CONSENT_OBTAINED))
goto_cleanup_with_rc (FALSE)
- if (g_strcmp0(consent, LASSO_SAML2_CONSENT_PRIOR) == 0)
+ if (lasso_strisequal(consent,LASSO_SAML2_CONSENT_PRIOR))
goto_cleanup_with_rc (FALSE)
- if (g_strcmp0(consent, LASSO_SAML2_CONSENT_IMPLICIT) == 0)
+ if (lasso_strisequal(consent,LASSO_SAML2_CONSENT_IMPLICIT))
goto_cleanup_with_rc (FALSE)
- if (g_strcmp0(consent, LASSO_SAML2_CONSENT_EXPLICIT) == 0)
+ if (lasso_strisequal(consent,LASSO_SAML2_CONSENT_EXPLICIT))
goto_cleanup_with_rc (FALSE)
- if (g_strcmp0(consent, LASSO_SAML2_CONSENT_UNAVAILABLE) == 0)
+ if (lasso_strisequal(consent,LASSO_SAML2_CONSENT_UNAVAILABLE))
goto_cleanup_with_rc (TRUE)
- if (g_strcmp0(consent, LASSO_SAML2_CONSENT_INAPPLICABLE) == 0)
+ if (lasso_strisequal(consent,LASSO_SAML2_CONSENT_INAPPLICABLE))
goto_cleanup_with_rc (TRUE)
cleanup:
@@ -651,8 +654,7 @@ lasso_saml20_login_process_federation(LassoLogin *login, gboolean is_consent_obt
if (lasso_saml20_login_must_ask_for_consent_private(login) && !is_consent_obtained) {
goto_cleanup_with_rc (LASSO_LOGIN_ERROR_CONSENT_NOT_OBTAINED)
}
- if (g_strcmp0(name_id_policy_format,
- LASSO_SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT) != 0) {
+ if (lasso_strisnotequal(name_id_policy_format,LASSO_SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT)) {
/* non persistent case, TRANSIENT is handled by lasso_login_build_assertion() and
* other format are the sole responsibility of the caller */
goto_cleanup_with_rc (0)
@@ -760,6 +762,12 @@ lasso_saml20_login_build_assertion(LassoLogin *login,
assertion->Subject->SubjectConfirmation->SubjectConfirmationData =
LASSO_SAML2_SUBJECT_CONFIRMATION_DATA(
lasso_saml2_subject_confirmation_data_new());
+ lasso_assign_string(
+ assertion->Subject->SubjectConfirmation->SubjectConfirmationData->NotBefore,
+ notBefore);
+ lasso_assign_string(
+ assertion->Subject->SubjectConfirmation->SubjectConfirmationData->NotOnOrAfter,
+ notOnOrAfter);
/* If request is present, refer to it in the response */
if (authn_request) {
@@ -776,8 +784,9 @@ lasso_saml20_login_build_assertion(LassoLogin *login,
name_id_policy = authn_request->NameIDPolicy;
}
/* TRANSIENT */
- if (!name_id_policy || g_strcmp0(name_id_policy->Format,
- LASSO_SAML2_NAME_IDENTIFIER_FORMAT_TRANSIENT) == 0) {
+ if (!name_id_policy || name_id_policy->Format == NULL ||
+ lasso_strisequal(name_id_policy->Format,LASSO_SAML2_NAME_IDENTIFIER_FORMAT_UNSPECIFIED) ||
+ lasso_strisequal(name_id_policy->Format,LASSO_SAML2_NAME_IDENTIFIER_FORMAT_TRANSIENT)) {
char *id = lasso_build_unique_id(32);
name_id = (LassoSaml2NameID*)lasso_saml2_name_id_new_with_string(id);
@@ -787,18 +796,18 @@ lasso_saml20_login_build_assertion(LassoLogin *login,
lasso_assign_string(name_id->Format, LASSO_SAML2_NAME_IDENTIFIER_FORMAT_TRANSIENT);
assertion->Subject->NameID = name_id;
/* FEDERATED */
- } else if (g_strcmp0(name_id_policy->Format,
- LASSO_SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT) == 0 ||
- g_strcmp0(name_id_policy->Format,
- LASSO_SAML2_NAME_IDENTIFIER_FORMAT_ENCRYPTED) == 0) {
+ } else if (lasso_strisequal(name_id_policy->Format,
+ LASSO_SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT) ||
+ lasso_strisequal(name_id_policy->Format,
+ LASSO_SAML2_NAME_IDENTIFIER_FORMAT_ENCRYPTED))
+ {
LassoFederation *federation;
federation = _lasso_login_saml20_get_federation(login);
goto_cleanup_if_fail_with_rc(federation != NULL,
LASSO_PROFILE_ERROR_FEDERATION_NOT_FOUND);
- if (g_strcmp0(name_id_policy->Format,
- LASSO_SAML2_NAME_IDENTIFIER_FORMAT_ENCRYPTED) == 0) {
+ if (lasso_strisequal(name_id_policy->Format,LASSO_SAML2_NAME_IDENTIFIER_FORMAT_ENCRYPTED)) {
do_encrypt_nameid = TRUE;
}
lasso_assign_gobject(assertion->Subject->NameID,
@@ -1106,7 +1115,7 @@ lasso_saml20_login_check_assertion_signature(LassoLogin *login,
if (! Issuer || /* No issuer */
! Issuer->content || /* No issuer content */
(Issuer->Format &&
- g_strcmp0(Issuer->Format, LASSO_SAML2_NAME_IDENTIFIER_FORMAT_ENTITY) != 0))
+ lasso_strisnotequal(Issuer->Format,LASSO_SAML2_NAME_IDENTIFIER_FORMAT_ENTITY)))
/* Issuer format is not entity */
{
rc = LASSO_PROFILE_ERROR_MISSING_ISSUER;
@@ -1154,7 +1163,7 @@ _lasso_check_assertion_issuer(LassoSaml2Assertion *assertion, const gchar *provi
if (! assertion->Issuer || ! assertion->Issuer->content)
return FALSE;
- return g_strcmp0(assertion->Issuer->content, provider_id) == 0;
+ return lasso_strisequal(assertion->Issuer->content,provider_id);
}
static gint
@@ -1235,21 +1244,19 @@ lasso_saml20_login_process_response_status_and_assertion(LassoLogin *login)
}
status_value = response->Status->StatusCode->Value;
- if (status_value && g_strcmp0(status_value, LASSO_SAML2_STATUS_CODE_SUCCESS) != 0) {
- if (g_strcmp0(status_value, LASSO_SAML2_STATUS_CODE_REQUEST_DENIED) == 0)
+ if (status_value && lasso_strisnotequal(status_value,LASSO_SAML2_STATUS_CODE_SUCCESS)) {
+ if (lasso_strisequal(status_value,LASSO_SAML2_STATUS_CODE_REQUEST_DENIED))
return LASSO_LOGIN_ERROR_REQUEST_DENIED;
- if (g_strcmp0(status_value, LASSO_SAML2_STATUS_CODE_RESPONDER) == 0 ||
- g_strcmp0(status_value, LASSO_SAML2_STATUS_CODE_REQUESTER)) {
+ if (lasso_strisequal(status_value,LASSO_SAML2_STATUS_CODE_RESPONDER) ||
+ lasso_strisequal(status_value,LASSO_SAML2_STATUS_CODE_REQUESTER)) {
/* samlp:Responder */
if (response->Status->StatusCode->StatusCode &&
response->Status->StatusCode->StatusCode->Value) {
status_value = response->Status->StatusCode->StatusCode->Value;
- if (g_strcmp0(status_value,
- LASSO_LIB_STATUS_CODE_FEDERATION_DOES_NOT_EXIST) == 0) {
+ if (lasso_strisequal(status_value,LASSO_LIB_STATUS_CODE_FEDERATION_DOES_NOT_EXIST)) {
return LASSO_LOGIN_ERROR_FEDERATION_NOT_FOUND;
}
- if (g_strcmp0(status_value,
- LASSO_LIB_STATUS_CODE_UNKNOWN_PRINCIPAL) == 0) {
+ if (lasso_strisequal(status_value,LASSO_LIB_STATUS_CODE_UNKNOWN_PRINCIPAL)) {
return LASSO_LOGIN_ERROR_UNKNOWN_PRINCIPAL;
}
}
@@ -1292,7 +1299,7 @@ lasso_saml20_login_process_response_status_and_assertion(LassoLogin *login)
if (login->private_data->request_id) {
const char *in_response_to = lasso_saml2_assertion_get_in_response_to(assertion);
- if (g_strcmp0(in_response_to, login->private_data->request_id) != 0) {
+ if (lasso_strisnotequal(in_response_to,login->private_data->request_id)) {
rc = LASSO_LOGIN_ERROR_ASSERTION_DOES_NOT_MATCH_REQUEST_ID;
goto cleanup;
}
@@ -1349,7 +1356,7 @@ lasso_saml20_login_accept_sso(LassoLogin *login)
ta = t->data;
- if (g_strcmp0(ta->ID, assertion->ID) == 0) {
+ if (lasso_strisequal(ta->ID,assertion->ID)) {
lasso_release_list(previous_assertions);
return LASSO_LOGIN_ERROR_ASSERTION_REPLAY;
}
@@ -1367,8 +1374,7 @@ lasso_saml20_login_accept_sso(LassoLogin *login)
/* create federation, only if nameidentifier format is Federated */
if (ni && ni->Format
- && g_strcmp0(ni->Format,
- LASSO_SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT) == 0) {
+ && lasso_strisequal(ni->Format,LASSO_SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT)) {
federation = lasso_federation_new(LASSO_PROFILE(login)->remote_providerID);
lasso_assign_gobject(federation->local_nameIdentifier, ni);
diff --git a/lasso/saml-2.0/logout.c b/lasso/saml-2.0/logout.c
index fd7f5335..7f677aa2 100644
--- a/lasso/saml-2.0/logout.c
+++ b/lasso/saml-2.0/logout.c
@@ -121,7 +121,7 @@ lasso_saml20_logout_process_request_msg(LassoLogout *logout, char *request_msg)
{
LassoProfile *profile = NULL;
LassoSamlp2LogoutRequest *logout_request = NULL;
- int rc1 = 0, rc2 = 0;
+ int rc1 = 0, rc2 = 0, rc = 0;
lasso_bad_param(LOGOUT, logout);
lasso_null_param(request_msg);
@@ -130,26 +130,19 @@ lasso_saml20_logout_process_request_msg(LassoLogout *logout, char *request_msg)
logout_request = (LassoSamlp2LogoutRequest*) lasso_samlp2_logout_request_new();
rc1 = lasso_saml20_profile_process_any_request(profile, (LassoNode*)logout_request,
request_msg);
+ goto_cleanup_if_fail_with_rc(rc1 == 0, rc1);
- logout_request = (LassoSamlp2LogoutRequest*)profile->request;
- if (rc1 && ! logout_request) {
- return rc1;
- }
/* remember initial request method, for setting it for generating response */
logout->initial_http_request_method = profile->http_request_method;
-
rc2 = lasso_saml20_profile_process_name_identifier_decryption(profile,
&logout_request->NameID,
&logout_request->EncryptedID);
+ goto_cleanup_if_fail_with_rc(rc2 == 0, rc2);
+ lasso_check_good_rc(lasso_saml20_profile_check_signature_status(profile));
+cleanup:
lasso_release_gobject(logout_request);
- if (profile->signature_status) {
- return profile->signature_status;
- }
- if (rc1) {
- return rc1;
- }
- return rc2;
+ return rc;
}
int
@@ -182,13 +175,6 @@ lasso_saml20_logout_validate_request(LassoLogout *logout)
lasso_check_good_rc(lasso_saml20_profile_init_response(profile, response,
LASSO_SAML2_STATUS_CODE_SUCCESS, NULL));
- /* verify signature status */
- if (profile->signature_status != 0) {
- lasso_saml20_profile_set_response_status_requester(profile,
- LASSO_LIB_STATUS_CODE_INVALID_SIGNATURE);
- return profile->signature_status;
- }
-
/* Get the name identifier */
name_id = LASSO_SAMLP2_LOGOUT_REQUEST(profile->request)->NameID;
if (name_id == NULL) {
@@ -236,7 +222,7 @@ lasso_saml20_logout_validate_request(LassoLogout *logout)
}
assertion_SessionIndex =
((LassoSaml2AuthnStatement*)assertion->AuthnStatement->data)->SessionIndex;
- if (g_strcmp0(logout_request->SessionIndex, assertion_SessionIndex) != 0) {
+ if (lasso_strisnotequal(logout_request->SessionIndex,assertion_SessionIndex)) {
lasso_saml20_profile_set_response_status_responder(profile,
LASSO_SAML2_STATUS_CODE_REQUEST_DENIED);
return LASSO_LOGOUT_ERROR_UNKNOWN_PRINCIPAL;
@@ -346,9 +332,16 @@ lasso_saml20_logout_build_response_msg(LassoLogout *logout)
if (! LASSO_IS_SAMLP2_STATUS_RESPONSE(profile->response)) {
/* no response set here means request denied */
response = (LassoSamlp2StatusResponse*) lasso_samlp2_logout_response_new();
- lasso_check_good_rc(lasso_saml20_profile_init_response(profile, response,
- LASSO_SAML2_STATUS_CODE_RESPONDER,
- LASSO_SAML2_STATUS_CODE_REQUEST_DENIED));
+ /* verify signature status */
+ if (lasso_saml20_profile_check_signature_status(profile) != 0) {
+ lasso_check_good_rc(lasso_saml20_profile_init_response(profile, response,
+ LASSO_SAML2_STATUS_CODE_REQUESTER,
+ LASSO_LIB_STATUS_CODE_INVALID_SIGNATURE));
+ } else {
+ lasso_check_good_rc(lasso_saml20_profile_init_response(profile, response,
+ LASSO_SAML2_STATUS_CODE_RESPONDER,
+ LASSO_SAML2_STATUS_CODE_REQUEST_DENIED));
+ }
}
/* build logout response message */
@@ -375,6 +368,13 @@ lasso_saml20_logout_process_response_msg(LassoLogout *logout, const char *respon
lasso_check_good_rc(lasso_saml20_profile_process_any_response(profile, response,
&response_method, response_msg));
+ /* only if asked we report, otherwise we do not care */
+ if (profile->signature_status && lasso_profile_get_signature_verify_hint(profile) ==
+ LASSO_PROFILE_SIGNATURE_HINT_FORCE)
+ {
+ goto_cleanup_with_rc(profile->signature_status);
+ }
+
remote_provider = lasso_server_get_provider(logout->parent.server,
logout->parent.remote_providerID);
goto_cleanup_if_fail_with_rc(LASSO_IS_PROVIDER(remote_provider),
@@ -392,11 +392,11 @@ cleanup:
value = sub_status_code->Value;
- if (g_strcmp0(value, LASSO_SAML2_STATUS_CODE_REQUEST_DENIED) == 0) {
+ if (lasso_strisequal(value,LASSO_SAML2_STATUS_CODE_REQUEST_DENIED)) {
rc = LASSO_LOGOUT_ERROR_REQUEST_DENIED;
break;
}
- if (g_strcmp0(value, LASSO_SAML2_STATUS_CODE_UNKNOWN_PRINCIPAL) == 0) {
+ if (lasso_strisequal(value,LASSO_SAML2_STATUS_CODE_UNKNOWN_PRINCIPAL)) {
rc = LASSO_LOGOUT_ERROR_UNKNOWN_PRINCIPAL;
break;
}
diff --git a/lasso/saml-2.0/name_id_management.c b/lasso/saml-2.0/name_id_management.c
index 2fdb6754..0c28106a 100644
--- a/lasso/saml-2.0/name_id_management.c
+++ b/lasso/saml-2.0/name_id_management.c
@@ -159,38 +159,25 @@ gint
lasso_name_id_management_process_request_msg(LassoNameIdManagement *name_id_management,
char *request_msg)
{
- int rc1 = 0, rc2 = 0;
LassoProfile *profile = NULL;
LassoSamlp2ManageNameIDRequest *request = NULL;
+ int rc = 0;
lasso_bad_param(NAME_ID_MANAGEMENT, name_id_management);
lasso_null_param(request_msg);
- /* Parsing */
profile = LASSO_PROFILE(name_id_management);
request = (LassoSamlp2ManageNameIDRequest*)lasso_samlp2_manage_name_id_request_new();
- rc1 = lasso_saml20_profile_process_any_request(profile,
+ lasso_check_good_rc(lasso_saml20_profile_process_any_request(profile,
(LassoNode*)request,
- request_msg);
-
- if (! LASSO_IS_SAMLP2_MANAGE_NAME_ID_REQUEST(profile->request)) {
- return LASSO_PROFILE_ERROR_MISSING_REQUEST;
- }
-
- /* NameID treatment */
- rc2 = lasso_saml20_profile_process_name_identifier_decryption(profile,
- &request->NameID, &request->EncryptedID);
+ request_msg));
+ lasso_check_good_rc(lasso_saml20_profile_process_name_identifier_decryption(profile,
+ &request->NameID, &request->EncryptedID));
+ lasso_check_good_rc(lasso_saml20_profile_check_signature_status(profile));
+cleanup:
lasso_release_gobject(request);
- if (profile->signature_status) {
- return profile->signature_status;
- }
- if (rc1)
- return rc1;
- if (rc2)
- return rc2;
-
- return 0;
+ return rc;
}
@@ -303,6 +290,7 @@ lasso_name_id_management_build_response_msg(LassoNameIdManagement *name_id_manag
{
LassoProfile *profile = NULL;
LassoSamlp2StatusResponse *response;
+ int rc = 0;
lasso_bad_param(NAME_ID_MANAGEMENT, name_id_management);
profile = &name_id_management->parent;
@@ -310,13 +298,22 @@ lasso_name_id_management_build_response_msg(LassoNameIdManagement *name_id_manag
/* no response set here means request denied */
if (! LASSO_IS_SAMLP2_STATUS_RESPONSE(profile->response)) {
response = (LassoSamlp2StatusResponse*)lasso_samlp2_manage_name_id_response_new();
- lasso_saml20_profile_init_response(profile, response, LASSO_SAML2_STATUS_CODE_RESPONDER,
- LASSO_SAML2_STATUS_CODE_REQUEST_DENIED);
+ if (lasso_saml20_profile_check_signature_status(profile)) {
+ lasso_check_good_rc(lasso_saml20_profile_init_response(profile, response,
+ LASSO_SAML2_STATUS_CODE_REQUESTER,
+ LASSO_LIB_STATUS_CODE_INVALID_SIGNATURE));
+ } else {
+ lasso_check_good_rc(lasso_saml20_profile_init_response(profile, response,
+ LASSO_SAML2_STATUS_CODE_RESPONDER,
+ LASSO_SAML2_STATUS_CODE_REQUEST_DENIED));
+ }
lasso_release_gobject(response);
}
/* use the same binding as for the request */
- return lasso_saml20_profile_build_response_msg(profile, "ManageNameIDService", profile->http_request_method, NULL);
+ rc = lasso_saml20_profile_build_response_msg(profile, "ManageNameIDService", profile->http_request_method, NULL);
+cleanup:
+ return rc;
}
@@ -348,7 +345,7 @@ lasso_name_id_management_process_response_msg(
lasso_check_good_rc(lasso_saml20_profile_process_any_response(profile, response, NULL, response_msg));
/* Stop here if signature validation failed. */
- goto_cleanup_if_fail_with_rc(profile->signature_status == 0, profile->signature_status);
+ lasso_check_good_rc(lasso_saml20_profile_check_signature_status(profile));
if (LASSO_SAMLP2_MANAGE_NAME_ID_REQUEST(profile->request)->Terminate) {
lasso_identity_remove_federation(profile->identity, profile->remote_providerID);
@@ -530,7 +527,7 @@ lasso_name_id_management_new_from_dump(LassoServer *server, const char *dump)
*
* Dumps @name_id_management content to an XML string.
*
- * Return value: the dump string. It must be freed by the caller.
+ * Return value:(transfer full): the dump string. It must be freed by the caller.
**/
gchar*
lasso_name_id_management_dump(LassoNameIdManagement *name_id_management)
diff --git a/lasso/saml-2.0/profile.c b/lasso/saml-2.0/profile.c
index 083d05ac..18f7d64c 100644
--- a/lasso/saml-2.0/profile.c
+++ b/lasso/saml-2.0/profile.c
@@ -605,8 +605,9 @@ cleanup:
* validation fails no error code will be returned, you must explicitely verify the
* profile->signature_status code.
*
- * Return value: 0 if parsing is successful (even if signature validation fails), and error code
- * otherwise.
+ * Return value: 0 if parsing is successful (even if signature validation fails), and otherwise,
+ * LASSO_PROFILE_ERROR_INVALID_MSG, LASSO_PROFILE_ERROR_UNSUPPORTED_PROFILE, *
+ * LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND.
*/
int
lasso_saml20_profile_process_any_request(LassoProfile *profile,
@@ -704,13 +705,15 @@ lasso_saml20_profile_process_soap_request(LassoProfile *profile,
remote_provider, request_msg, "ID", LASSO_MESSAGE_FORMAT_SOAP);
switch (lasso_profile_get_signature_verify_hint(profile)) {
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_FORCE:
case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_MAYBE:
rc = profile->signature_status;
break;
case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_IGNORE:
break;
- default:
- g_assert(0);
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_LAST:
+ g_assert_not_reached();
+ break;
}
cleanup:
@@ -1245,6 +1248,11 @@ lasso_saml20_profile_build_response_msg(LassoProfile *profile, char *service,
}
}
+ if (url) {
+ lasso_assign_string(((LassoSamlp2StatusResponse*)profile->response)->Destination,
+ url);
+ }
+
switch (method) {
case LASSO_HTTP_METHOD_POST:
rc = lasso_saml20_profile_build_post_response_msg(profile, url);
@@ -1276,7 +1284,9 @@ _lasso_saml20_is_valid_issuer(LassoSaml2NameID *name_id) {
if (! LASSO_IS_SAML2_NAME_ID(name_id))
return FALSE;
- if (name_id->Format && g_strcmp0(name_id->Format, LASSO_SAML2_NAME_IDENTIFIER_FORMAT_ENTITY) != 0) {
+ if (name_id->Format &&
+ lasso_strisnotequal(name_id->Format,LASSO_SAML2_NAME_IDENTIFIER_FORMAT_ENTITY))
+ {
return FALSE;
}
return TRUE;
@@ -1377,8 +1387,7 @@ lasso_saml20_profile_process_any_response(LassoProfile *profile,
LASSO_PROFILE_ERROR_MISSING_STATUS_CODE);
lasso_extract_node_or_fail(status_code1, status->StatusCode, SAMLP2_STATUS_CODE,
LASSO_PROFILE_ERROR_MISSING_STATUS_CODE);
- if (g_strcmp0(status_code1->Value,
- LASSO_SAML2_STATUS_CODE_SUCCESS) != 0)
+ if (lasso_strisnotequal(status_code1->Value,LASSO_SAML2_STATUS_CODE_SUCCESS))
{
LassoSamlp2StatusCode *status_code2 = status_code1->StatusCode;
rc = LASSO_PROFILE_ERROR_STATUS_NOT_SUCCESS;
@@ -1604,3 +1613,28 @@ lasso_saml20_profile_setup_encrypted_node(LassoProvider *provider,
lasso_release_gobject(*node_to_encrypt);
return 0;
}
+
+/**
+ * Check the profile->signature_status flag, if signature validation is activated, report it as an
+ * error, if not not return 0.
+ */
+int
+lasso_saml20_profile_check_signature_status(LassoProfile *profile) {
+ int rc = 0;
+
+ if (profile->signature_status) {
+ switch (lasso_profile_get_signature_verify_hint(profile)) {
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_MAYBE:
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_FORCE:
+ rc = profile->signature_status;
+ break;
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_IGNORE:
+ break;
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_LAST:
+ g_assert_not_reached();
+ break;
+ }
+ }
+
+ return rc;
+}
diff --git a/lasso/saml-2.0/profileprivate.h b/lasso/saml-2.0/profileprivate.h
index 54e3a336..c5b9047c 100644
--- a/lasso/saml-2.0/profileprivate.h
+++ b/lasso/saml-2.0/profileprivate.h
@@ -78,6 +78,7 @@ gint lasso_profile_saml20_setup_message_signature(LassoProfile *profile,
gint lasso_saml20_profile_setup_encrypted_node(LassoProvider *provider,
LassoNode **node_to_encrypt, LassoNode **node_destination);
int lasso_saml20_profile_setup_subject(LassoProfile *profile, LassoSaml2Subject *subject);
+int lasso_saml20_profile_check_signature_status(LassoProfile *profile);
#ifdef __cplusplus
}
diff --git a/lasso/saml-2.0/provider.c b/lasso/saml-2.0/provider.c
index 064fe24e..bc9e70f1 100644
--- a/lasso/saml-2.0/provider.c
+++ b/lasso/saml-2.0/provider.c
@@ -186,10 +186,10 @@ compare_endpoint_type(const EndpointType *a, const EndpointType *b) {
return -1;
if (a->role > b->role)
return +1;
- c = g_strcmp0(a->kind, b->kind);
+ c = g_strcmp0(a->kind,b->kind);
if (c != 0)
return c;
- c = g_strcmp0(a->binding, b->binding);
+ c = g_strcmp0(a->binding,b->binding);
if (c != 0)
return c;
if (a->is_default && ! b->is_default)
@@ -347,7 +347,7 @@ load_descriptor(xmlNode *xmlnode, LassoProvider *provider, LassoProviderRole rol
break;
token = strtok_r(NULL, " ", &saveptr);
}
- if (g_strcmp0(token, LASSO_SAML2_PROTOCOL_HREF) != 0) {
+ if (lasso_strisnotequal(token,LASSO_SAML2_PROTOCOL_HREF)) {
lasso_release_xml_string(value);
return FALSE;
}
@@ -507,7 +507,7 @@ lasso_saml20_provider_get_first_http_method(G_GNUC_UNUSED LassoProvider *provide
lasso_foreach(t, remote_provider->private_data->endpoints) {
EndpointType *endpoint_type = (EndpointType*)t->data;
- if (endpoint_type && g_strcmp0(endpoint_type->kind, kind) == 0) {
+ if (endpoint_type && lasso_strisequal(endpoint_type->kind, kind)) {
result = binding_uri_to_http_method(endpoint_type->binding);
if (result) break;
}
@@ -535,7 +535,7 @@ lasso_saml20_provider_accept_http_method(G_GNUC_UNUSED LassoProvider *provider,
lasso_foreach(t, remote_provider->private_data->endpoints) {
EndpointType *endpoint_type = (EndpointType*)t->data;
if (endpoint_type && endpoint_type->role == remote_provider->role &&
- g_strcmp0(endpoint_type->kind, kind) == 0) {
+ lasso_strisequal(endpoint_type->kind, kind)) {
if (binding_uri_to_http_method(endpoint_type->binding) == http_method) {
return TRUE;
}
@@ -550,11 +550,11 @@ lasso_saml20_provider_check_assertion_consumer_service_url(LassoProvider *provid
{
GList *t = NULL;
- lasso_foreach (provider->private_data->endpoints, t) {
+ lasso_foreach (t, provider->private_data->endpoints) {
EndpointType *endpoint_type = (EndpointType*) t->data;
if (endpoint_type && endpoint_type->role == LASSO_PROVIDER_ROLE_SP
- && g_strcmp0(endpoint_type->url, url) == 0
- && g_strcmp0(endpoint_type->binding, binding) == 0)
+ && lasso_strisequal(endpoint_type->url,url)
+ && lasso_strisequal(endpoint_type->binding,binding))
{
return TRUE;
}
@@ -569,7 +569,7 @@ static gboolean match_any(const char *key, const char *array[]) {
const char **t = array;
while (*t) {
- if (g_strcmp0(key, *t) == 0) {
+ if (lasso_strisequal(key,*t)) {
return TRUE;
}
t++;
@@ -590,7 +590,7 @@ lasso_saml20_provider_get_assertion_consumer_service(LassoProvider *provider, in
if (! endpoint_type)
continue;
if (endpoint_type->role == LASSO_PROVIDER_ROLE_SP &&
- g_strcmp0(endpoint_type->kind, kind) == 0 &&
+ lasso_strisequal(endpoint_type->kind,kind) &&
endpoint_type->index == service_id)
{
result = endpoint_type;
@@ -603,7 +603,7 @@ lasso_saml20_provider_get_assertion_consumer_service(LassoProvider *provider, in
if (! endpoint_type)
continue;
if (endpoint_type->role == LASSO_PROVIDER_ROLE_SP &&
- g_strcmp0(endpoint_type->kind, kind) == 0 &&
+ lasso_strisequal(endpoint_type->kind,kind) &&
match_any(endpoint_type->binding,
supported_assertion_consumer_bindings))
{
@@ -651,8 +651,8 @@ lasso_saml20_provider_get_assertion_consumer_service_binding_by_url(LassoProvide
if (! endpoint_type)
continue;
if (endpoint_type->role == LASSO_PROVIDER_ROLE_SP &&
- g_strcmp0(endpoint_type->kind, kind) == 0 &&
- g_strcmp0(endpoint_type->url, url) == 0)
+ lasso_strisequal(endpoint_type->kind,kind) &&
+ lasso_strisequal(endpoint_type->url,url))
{
return endpoint_type->binding;
}
@@ -672,8 +672,8 @@ lasso_saml20_provider_get_assertion_consumer_service_url_by_binding(LassoProvide
if (! endpoint_type)
continue;
if (endpoint_type->role == LASSO_PROVIDER_ROLE_SP &&
- g_strcmp0(endpoint_type->kind, kind) == 0 &&
- g_strcmp0(endpoint_type->binding, binding) == 0)
+ lasso_strisequal(endpoint_type->kind,kind) &&
+ lasso_strisequal(endpoint_type->binding,binding))
{
return endpoint_type->url;
}
diff --git a/lasso/saml-2.0/saml2_helper.c b/lasso/saml-2.0/saml2_helper.c
index cccc293c..3d835962 100644
--- a/lasso/saml-2.0/saml2_helper.c
+++ b/lasso/saml-2.0/saml2_helper.c
@@ -87,7 +87,7 @@ lasso_saml2_assertion_is_audience_restricted(LassoSaml2Assertion *saml2_assertio
if (LASSO_IS_SAML2_AUDIENCE_RESTRICTION(it->data)) {
LassoSaml2AudienceRestriction *saml2_audience_restriction;
saml2_audience_restriction = (LassoSaml2AudienceRestriction*)it->data;
- if (g_strcmp0(saml2_audience_restriction->Audience, providerID) == 0)
+ if (lasso_strisequal(saml2_audience_restriction->Audience,providerID))
return TRUE;
}
}
@@ -564,7 +564,7 @@ lasso_saml2_assertion_allows_proxying_to(LassoSaml2Assertion *saml2_assertion, c
return LASSO_SAML2_ASSERTION_VALID;
/* FIXME: Change saml2:ProxyRestriction class */
- if (g_strcmp0(proxy_restriction->Audience, audience) != 0) {
+ if (lasso_strisnotequal(proxy_restriction->Audience,audience)) {
return LASSO_SAML2_ASSERTION_INVALID;
}
@@ -597,7 +597,7 @@ lasso_saml2_assertion_validate_audience(LassoSaml2Assertion *saml2_assertion,
lasso_foreach_full_begin (LassoSaml2AudienceRestriction*, saml2_audience_restriction, it,
saml2_conditions->AudienceRestriction)
did_audience = TRUE;
- if (g_strcmp0(saml2_audience_restriction->Audience, audience) == 0) {
+ if (lasso_strisequal(saml2_audience_restriction->Audience,audience)) {
found_audience = TRUE;
}
lasso_foreach_full_end()
@@ -654,10 +654,11 @@ lasso_saml2_assertion_get_issuer_provider(const LassoSaml2Assertion *saml2_asser
g_return_val_if_fail (LASSO_IS_SAML2_ASSERTION (saml2_assertion), NULL);
issuer = saml2_assertion->Issuer;
g_return_val_if_fail (LASSO_IS_SAML2_NAME_ID (issuer), NULL);
- g_return_val_if_fail (issuer->Format == NULL || g_strcmp0(issuer->Format,
- LASSO_SAML2_NAME_IDENTIFIER_FORMAT_ENTITY) == 0, NULL);
+ g_return_val_if_fail (issuer->Format == NULL ||
+ lasso_strisequal(issuer->Format,LASSO_SAML2_NAME_IDENTIFIER_FORMAT_ENTITY),
+ NULL);
g_return_val_if_fail (LASSO_IS_SERVER(server), NULL);
- if (g_strcmp0(server->parent.ProviderID, issuer->content) == 0) {
+ if (lasso_strisequal(server->parent.ProviderID,issuer->content)) {
return (LassoProvider*)&server->parent;
}
return lasso_server_get_provider (server, issuer->content);
diff --git a/lasso/utils.h b/lasso/utils.h
index aa84e77f..3c840963 100644
--- a/lasso/utils.h
+++ b/lasso/utils.h
@@ -477,11 +477,6 @@
#define lasso_null_param(name) \
g_return_val_if_fail(name != NULL, LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
-inline static gboolean
-lasso_is_empty_string(const char *str) {
- return ((str) == NULL || (str)[0] == '\0');
-}
-
/**
* lasso_check_non_empty_string:
* @str: a char pointer
@@ -490,7 +485,7 @@ lasso_is_empty_string(const char *str) {
* LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ.
*/
#define lasso_check_non_empty_string(str) \
- goto_cleanup_if_fail_with_rc(! lasso_is_empty_string(str), \
+ goto_cleanup_if_fail_with_rc(! lasso_strisempty(str), \
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
/*
@@ -659,4 +654,22 @@ GObject * lasso_extract_gtype_from_list_or_new(GType type, GList **list, gboolea
fprintf(stderr, ## args); \
}
+/* Lasso string data helpers */
+inline static gboolean
+lasso_strisequal(const char *a, const char *b) {
+ return (g_strcmp0(a,b) == 0);
+}
+inline static gboolean
+lasso_strisnotequal(const char *a, const char *b) {
+ return ! lasso_strisequal(a,b);
+}
+inline static gboolean
+lasso_strisempty(const char *str) {
+ return ((str) == NULL || (str)[0] == '\0');
+}
+inline static gboolean
+lasso_xmlstrisnotequal(const xmlChar *a, const xmlChar *b) {
+ return lasso_strisnotequal((char*)a, (char*)b);
+}
+
#endif /* __LASSO_UTILS_H__ */
diff --git a/lasso/xml/Makefile.am b/lasso/xml/Makefile.am
index c8513620..bcf0d77d 100644
--- a/lasso/xml/Makefile.am
+++ b/lasso/xml/Makefile.am
@@ -76,6 +76,7 @@ WSF_C_FILES = \
utility_status.c
WSF_H_FILES = \
+ idwsf_strings.h \
disco_authenticate_requester.h \
disco_authenticate_session_context.h \
disco_authorize_requester.h \
@@ -193,7 +194,6 @@ liblasso_xml_la_SOURCES = \
liblassoinclude_HEADERS = \
strings.h \
- idwsf_strings.h \
xml.h \
ds_key_info.h \
ds_key_value.h \
diff --git a/lasso/xml/disco_authenticate_requester.c b/lasso/xml/disco_authenticate_requester.c
index bde9215e..4455e3d2 100644
--- a/lasso/xml/disco_authenticate_requester.c
+++ b/lasso/xml/disco_authenticate_requester.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_authenticate_requester.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_authenticate_requester
diff --git a/lasso/xml/disco_authenticate_session_context.c b/lasso/xml/disco_authenticate_session_context.c
index d71c0cd6..0013f200 100644
--- a/lasso/xml/disco_authenticate_session_context.c
+++ b/lasso/xml/disco_authenticate_session_context.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_authenticate_session_context.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_authenticate_session_context
diff --git a/lasso/xml/disco_authorize_requester.c b/lasso/xml/disco_authorize_requester.c
index ef1d05ad..098fe33f 100644
--- a/lasso/xml/disco_authorize_requester.c
+++ b/lasso/xml/disco_authorize_requester.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_authorize_requester.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_authorize_requester
diff --git a/lasso/xml/disco_credentials.c b/lasso/xml/disco_credentials.c
index b244c27e..89dd0017 100644
--- a/lasso/xml/disco_credentials.c
+++ b/lasso/xml/disco_credentials.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_credentials.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_credentials
diff --git a/lasso/xml/disco_description.c b/lasso/xml/disco_description.c
index 151e202d..37f3410c 100644
--- a/lasso/xml/disco_description.c
+++ b/lasso/xml/disco_description.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_description.h"
+#include "./idwsf_strings.h"
#include "../id-wsf/wsf_utils.h"
#include "../utils.h"
diff --git a/lasso/xml/disco_encrypt_resource_id.c b/lasso/xml/disco_encrypt_resource_id.c
index 5e06c687..f0409a09 100644
--- a/lasso/xml/disco_encrypt_resource_id.c
+++ b/lasso/xml/disco_encrypt_resource_id.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_encrypt_resource_id.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_encrypt_resource_id
diff --git a/lasso/xml/disco_encrypted_resource_id.c b/lasso/xml/disco_encrypted_resource_id.c
index b4747d0e..025a951c 100644
--- a/lasso/xml/disco_encrypted_resource_id.c
+++ b/lasso/xml/disco_encrypted_resource_id.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_encrypted_resource_id.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_encrypted_resource_id
diff --git a/lasso/xml/disco_generate_bearer_token.c b/lasso/xml/disco_generate_bearer_token.c
index 927ede51..b35e9600 100644
--- a/lasso/xml/disco_generate_bearer_token.c
+++ b/lasso/xml/disco_generate_bearer_token.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_generate_bearer_token.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_generate_bearer_token
diff --git a/lasso/xml/disco_insert_entry.c b/lasso/xml/disco_insert_entry.c
index 3fe5adc8..acd861fd 100644
--- a/lasso/xml/disco_insert_entry.c
+++ b/lasso/xml/disco_insert_entry.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_insert_entry.h"
+#include "./idwsf_strings.h"
#include "../utils.h"
/**
diff --git a/lasso/xml/disco_modify.c b/lasso/xml/disco_modify.c
index 7951ec19..a7b2d1a3 100644
--- a/lasso/xml/disco_modify.c
+++ b/lasso/xml/disco_modify.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_modify.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_modify
diff --git a/lasso/xml/disco_modify_response.c b/lasso/xml/disco_modify_response.c
index 80c140eb..15d5b015 100644
--- a/lasso/xml/disco_modify_response.c
+++ b/lasso/xml/disco_modify_response.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_modify_response.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_modify_response
diff --git a/lasso/xml/disco_options.c b/lasso/xml/disco_options.c
index bfae9526..23d04d6d 100644
--- a/lasso/xml/disco_options.c
+++ b/lasso/xml/disco_options.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_options.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_options
diff --git a/lasso/xml/disco_query.c b/lasso/xml/disco_query.c
index 303bd39b..c364ce45 100644
--- a/lasso/xml/disco_query.c
+++ b/lasso/xml/disco_query.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_query.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_query
diff --git a/lasso/xml/disco_query_response.c b/lasso/xml/disco_query_response.c
index 945c7f5c..e11eeccc 100644
--- a/lasso/xml/disco_query_response.c
+++ b/lasso/xml/disco_query_response.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_query_response.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_query_response
diff --git a/lasso/xml/disco_remove_entry.c b/lasso/xml/disco_remove_entry.c
index 0c34f039..f833c8af 100644
--- a/lasso/xml/disco_remove_entry.c
+++ b/lasso/xml/disco_remove_entry.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_remove_entry.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_remove_entry
diff --git a/lasso/xml/disco_requested_service_type.c b/lasso/xml/disco_requested_service_type.c
index c0a077bf..054793cb 100644
--- a/lasso/xml/disco_requested_service_type.c
+++ b/lasso/xml/disco_requested_service_type.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_requested_service_type.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_requested_service_type
diff --git a/lasso/xml/disco_resource_id.c b/lasso/xml/disco_resource_id.c
index 48534acf..61e89e8f 100644
--- a/lasso/xml/disco_resource_id.c
+++ b/lasso/xml/disco_resource_id.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_resource_id.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_resource_id
diff --git a/lasso/xml/disco_resource_offering.c b/lasso/xml/disco_resource_offering.c
index 3d0402da..c46f953c 100644
--- a/lasso/xml/disco_resource_offering.c
+++ b/lasso/xml/disco_resource_offering.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_resource_offering.h"
+#include "./idwsf_strings.h"
#include "../utils.h"
/**
diff --git a/lasso/xml/disco_send_single_logout.c b/lasso/xml/disco_send_single_logout.c
index 8113777b..155c5939 100644
--- a/lasso/xml/disco_send_single_logout.c
+++ b/lasso/xml/disco_send_single_logout.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_send_single_logout.h"
+#include "./idwsf_strings.h"
#include "../registry.h"
/**
diff --git a/lasso/xml/disco_service_instance.c b/lasso/xml/disco_service_instance.c
index 8351cd49..9dddb8f3 100644
--- a/lasso/xml/disco_service_instance.c
+++ b/lasso/xml/disco_service_instance.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "disco_service_instance.h"
+#include "./idwsf_strings.h"
/**
* SECTION:disco_service_instance
diff --git a/lasso/xml/dst_data.c b/lasso/xml/dst_data.c
index 0fe42c09..a8af8762 100644
--- a/lasso/xml/dst_data.c
+++ b/lasso/xml/dst_data.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "dst_data.h"
+#include "./idwsf_strings.h"
/**
* SECTION:dst_data
diff --git a/lasso/xml/dst_modification.c b/lasso/xml/dst_modification.c
index 1a89ecd0..9329b3c4 100644
--- a/lasso/xml/dst_modification.c
+++ b/lasso/xml/dst_modification.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "dst_modification.h"
+#include "./idwsf_strings.h"
/**
* SECTION:dst_modification
diff --git a/lasso/xml/dst_modify.c b/lasso/xml/dst_modify.c
index 7e8c64ff..46d26dab 100644
--- a/lasso/xml/dst_modify.c
+++ b/lasso/xml/dst_modify.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "dst_modify.h"
+#include "./idwsf_strings.h"
/**
* SECTION:dst_modify
diff --git a/lasso/xml/dst_modify_response.c b/lasso/xml/dst_modify_response.c
index d0af68bc..2d060c52 100644
--- a/lasso/xml/dst_modify_response.c
+++ b/lasso/xml/dst_modify_response.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "dst_modify_response.h"
+#include "./idwsf_strings.h"
/**
* SECTION:dst_modify_response
diff --git a/lasso/xml/dst_new_data.c b/lasso/xml/dst_new_data.c
index 92ee96a1..da264bda 100644
--- a/lasso/xml/dst_new_data.c
+++ b/lasso/xml/dst_new_data.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "dst_new_data.h"
+#include "./idwsf_strings.h"
/**
* SECTION:dst_new_data
diff --git a/lasso/xml/dst_query.c b/lasso/xml/dst_query.c
index 3a7c0724..e77b04cf 100644
--- a/lasso/xml/dst_query.c
+++ b/lasso/xml/dst_query.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "dst_query.h"
+#include "./idwsf_strings.h"
/**
* SECTION:dst_query
diff --git a/lasso/xml/dst_query_item.c b/lasso/xml/dst_query_item.c
index 66e2014d..8aee38dd 100644
--- a/lasso/xml/dst_query_item.c
+++ b/lasso/xml/dst_query_item.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "dst_query_item.h"
+#include "./idwsf_strings.h"
/**
* SECTION:dst_query_item
diff --git a/lasso/xml/dst_query_response.c b/lasso/xml/dst_query_response.c
index f1ac4b5c..d1a80781 100644
--- a/lasso/xml/dst_query_response.c
+++ b/lasso/xml/dst_query_response.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "dst_query_response.h"
+#include "./idwsf_strings.h"
/**
* SECTION:dst_query_response
diff --git a/lasso/xml/id-wsf-2.0/disco_abstract.c b/lasso/xml/id-wsf-2.0/disco_abstract.c
index 3011a987..268f231f 100644
--- a/lasso/xml/id-wsf-2.0/disco_abstract.c
+++ b/lasso/xml/id-wsf-2.0/disco_abstract.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_abstract.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_abstract
diff --git a/lasso/xml/id-wsf-2.0/disco_endpoint_context.c b/lasso/xml/id-wsf-2.0/disco_endpoint_context.c
index b4d33a30..ed6aa27c 100644
--- a/lasso/xml/id-wsf-2.0/disco_endpoint_context.c
+++ b/lasso/xml/id-wsf-2.0/disco_endpoint_context.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_endpoint_context.h"
+#include "./idwsf2_strings.h"
#include "sbf_framework.h"
/**
diff --git a/lasso/xml/id-wsf-2.0/disco_keys.c b/lasso/xml/id-wsf-2.0/disco_keys.c
index 9c7ba5b2..2f809a06 100644
--- a/lasso/xml/id-wsf-2.0/disco_keys.c
+++ b/lasso/xml/id-wsf-2.0/disco_keys.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_keys.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_keys
diff --git a/lasso/xml/id-wsf-2.0/disco_options.c b/lasso/xml/id-wsf-2.0/disco_options.c
index bff87685..f0eb1f3b 100644
--- a/lasso/xml/id-wsf-2.0/disco_options.c
+++ b/lasso/xml/id-wsf-2.0/disco_options.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_options.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_options
diff --git a/lasso/xml/id-wsf-2.0/disco_provider_id.c b/lasso/xml/id-wsf-2.0/disco_provider_id.c
index 66a8e0e4..30cc1211 100644
--- a/lasso/xml/id-wsf-2.0/disco_provider_id.c
+++ b/lasso/xml/id-wsf-2.0/disco_provider_id.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_provider_id.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_provider_id
diff --git a/lasso/xml/id-wsf-2.0/disco_query.c b/lasso/xml/id-wsf-2.0/disco_query.c
index 5f502b71..3cc347fe 100644
--- a/lasso/xml/id-wsf-2.0/disco_query.c
+++ b/lasso/xml/id-wsf-2.0/disco_query.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_query.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_query
diff --git a/lasso/xml/id-wsf-2.0/disco_query_response.c b/lasso/xml/id-wsf-2.0/disco_query_response.c
index 402ad0e4..7c6d50ae 100644
--- a/lasso/xml/id-wsf-2.0/disco_query_response.c
+++ b/lasso/xml/id-wsf-2.0/disco_query_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_query_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_query_response
diff --git a/lasso/xml/id-wsf-2.0/disco_requested_service.c b/lasso/xml/id-wsf-2.0/disco_requested_service.c
index 562590ff..e49d84ca 100644
--- a/lasso/xml/id-wsf-2.0/disco_requested_service.c
+++ b/lasso/xml/id-wsf-2.0/disco_requested_service.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_requested_service.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_requested_service
diff --git a/lasso/xml/id-wsf-2.0/disco_security_context.c b/lasso/xml/id-wsf-2.0/disco_security_context.c
index fb89493a..1a7f3829 100644
--- a/lasso/xml/id-wsf-2.0/disco_security_context.c
+++ b/lasso/xml/id-wsf-2.0/disco_security_context.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_security_context.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_security_context
diff --git a/lasso/xml/id-wsf-2.0/disco_service_context.c b/lasso/xml/id-wsf-2.0/disco_service_context.c
index 8ccf85e6..2515618a 100644
--- a/lasso/xml/id-wsf-2.0/disco_service_context.c
+++ b/lasso/xml/id-wsf-2.0/disco_service_context.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_service_context.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_service_context
diff --git a/lasso/xml/id-wsf-2.0/disco_service_type.c b/lasso/xml/id-wsf-2.0/disco_service_type.c
index 6e611b26..1c789bb0 100644
--- a/lasso/xml/id-wsf-2.0/disco_service_type.c
+++ b/lasso/xml/id-wsf-2.0/disco_service_type.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_service_type.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_service_type
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_association_add.c b/lasso/xml/id-wsf-2.0/disco_svc_md_association_add.c
index 1a880ac0..9b9707b5 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_association_add.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_association_add.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_association_add.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_association_add
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_association_add_response.c b/lasso/xml/id-wsf-2.0/disco_svc_md_association_add_response.c
index 0285a973..41407a56 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_association_add_response.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_association_add_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_association_add_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_association_add_response
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_association_delete.c b/lasso/xml/id-wsf-2.0/disco_svc_md_association_delete.c
index f5a179f7..33328100 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_association_delete.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_association_delete.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_association_delete.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_association_delete
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_association_delete_response.c b/lasso/xml/id-wsf-2.0/disco_svc_md_association_delete_response.c
index 05f875aa..c82ba12b 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_association_delete_response.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_association_delete_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_association_delete_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_association_delete_response
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_association_query.c b/lasso/xml/id-wsf-2.0/disco_svc_md_association_query.c
index 9b00bcb5..6236b37c 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_association_query.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_association_query.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_association_query.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_association_query
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_association_query_response.c b/lasso/xml/id-wsf-2.0/disco_svc_md_association_query_response.c
index ab750355..c38f9cf2 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_association_query_response.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_association_query_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_association_query_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_association_query_response
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_delete.c b/lasso/xml/id-wsf-2.0/disco_svc_md_delete.c
index 97dcb794..dbe6883d 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_delete.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_delete.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_delete.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_delete
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_delete_response.c b/lasso/xml/id-wsf-2.0/disco_svc_md_delete_response.c
index 95018dc3..9e9e52ec 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_delete_response.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_delete_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_delete_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_delete_response
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_query.c b/lasso/xml/id-wsf-2.0/disco_svc_md_query.c
index 824a6c9a..7b607ac2 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_query.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_query.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_query.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_query
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_query_response.c b/lasso/xml/id-wsf-2.0/disco_svc_md_query_response.c
index c1def88b..e09d9dd9 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_query_response.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_query_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_query_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_query_response
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_register.c b/lasso/xml/id-wsf-2.0/disco_svc_md_register.c
index 5f67c19d..da02327c 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_register.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_register.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_register.h"
+#include "./idwsf2_strings.h"
#include "disco_svc_metadata.h"
/**
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_register_response.c b/lasso/xml/id-wsf-2.0/disco_svc_md_register_response.c
index 0e05d852..3f4b8a7e 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_register_response.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_register_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_register_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_register_response
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_replace.c b/lasso/xml/id-wsf-2.0/disco_svc_md_replace.c
index 97d5309e..197bbf7d 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_replace.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_replace.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_replace.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_replace
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_md_replace_response.c b/lasso/xml/id-wsf-2.0/disco_svc_md_replace_response.c
index d0c5e5ff..24aa97dc 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_md_replace_response.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_md_replace_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_md_replace_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:disco_svc_md_replace_response
diff --git a/lasso/xml/id-wsf-2.0/disco_svc_metadata.c b/lasso/xml/id-wsf-2.0/disco_svc_metadata.c
index cc8117e9..cb2be49c 100644
--- a/lasso/xml/id-wsf-2.0/disco_svc_metadata.c
+++ b/lasso/xml/id-wsf-2.0/disco_svc_metadata.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "disco_svc_metadata.h"
+#include "./idwsf2_strings.h"
#include "disco_endpoint_context.h"
#include "disco_service_context.h"
diff --git a/lasso/xml/id-wsf-2.0/dst_data_response_base.c b/lasso/xml/id-wsf-2.0/dst_data_response_base.c
index ddb58df6..c0be1c9e 100644
--- a/lasso/xml/id-wsf-2.0/dst_data_response_base.c
+++ b/lasso/xml/id-wsf-2.0/dst_data_response_base.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dst_data_response_base.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dst_data_response_base
diff --git a/lasso/xml/id-wsf-2.0/dst_delete_item_base.c b/lasso/xml/id-wsf-2.0/dst_delete_item_base.c
index cef97647..853857d3 100644
--- a/lasso/xml/id-wsf-2.0/dst_delete_item_base.c
+++ b/lasso/xml/id-wsf-2.0/dst_delete_item_base.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dst_delete_item_base.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dst_delete_item_base
diff --git a/lasso/xml/id-wsf-2.0/dst_delete_response.c b/lasso/xml/id-wsf-2.0/dst_delete_response.c
index 7910c547..1a75b324 100644
--- a/lasso/xml/id-wsf-2.0/dst_delete_response.c
+++ b/lasso/xml/id-wsf-2.0/dst_delete_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dst_delete_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dst_delete_response
diff --git a/lasso/xml/id-wsf-2.0/dst_request.c b/lasso/xml/id-wsf-2.0/dst_request.c
index 473bfd53..6980dd0b 100644
--- a/lasso/xml/id-wsf-2.0/dst_request.c
+++ b/lasso/xml/id-wsf-2.0/dst_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dst_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dst_request
diff --git a/lasso/xml/id-wsf-2.0/dst_result_query_base.c b/lasso/xml/id-wsf-2.0/dst_result_query_base.c
index f640379a..8c423654 100644
--- a/lasso/xml/id-wsf-2.0/dst_result_query_base.c
+++ b/lasso/xml/id-wsf-2.0/dst_result_query_base.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dst_result_query_base.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dst_result_query_base
diff --git a/lasso/xml/id-wsf-2.0/dst_test_item_base.c b/lasso/xml/id-wsf-2.0/dst_test_item_base.c
index 3816c974..1e0c856c 100644
--- a/lasso/xml/id-wsf-2.0/dst_test_item_base.c
+++ b/lasso/xml/id-wsf-2.0/dst_test_item_base.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dst_test_item_base.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dst_test_item_base
diff --git a/lasso/xml/id-wsf-2.0/dstref_app_data.c b/lasso/xml/id-wsf-2.0/dstref_app_data.c
index 310e4b8b..39e88306 100644
--- a/lasso/xml/id-wsf-2.0/dstref_app_data.c
+++ b/lasso/xml/id-wsf-2.0/dstref_app_data.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_app_data.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_app_data
diff --git a/lasso/xml/id-wsf-2.0/dstref_create.c b/lasso/xml/id-wsf-2.0/dstref_create.c
index 39b8899a..f1524c8d 100644
--- a/lasso/xml/id-wsf-2.0/dstref_create.c
+++ b/lasso/xml/id-wsf-2.0/dstref_create.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_create.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_create
diff --git a/lasso/xml/id-wsf-2.0/dstref_create_item.c b/lasso/xml/id-wsf-2.0/dstref_create_item.c
index 50fffbaa..d0f8fca5 100644
--- a/lasso/xml/id-wsf-2.0/dstref_create_item.c
+++ b/lasso/xml/id-wsf-2.0/dstref_create_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_create_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_create_item
diff --git a/lasso/xml/id-wsf-2.0/dstref_create_response.c b/lasso/xml/id-wsf-2.0/dstref_create_response.c
index 6dfc740e..d5709257 100644
--- a/lasso/xml/id-wsf-2.0/dstref_create_response.c
+++ b/lasso/xml/id-wsf-2.0/dstref_create_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_create_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_create_response
diff --git a/lasso/xml/id-wsf-2.0/dstref_data.c b/lasso/xml/id-wsf-2.0/dstref_data.c
index afa13556..56c55a46 100644
--- a/lasso/xml/id-wsf-2.0/dstref_data.c
+++ b/lasso/xml/id-wsf-2.0/dstref_data.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_data.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_data
diff --git a/lasso/xml/id-wsf-2.0/dstref_data_response.c b/lasso/xml/id-wsf-2.0/dstref_data_response.c
index 2aefadec..c93d3630 100644
--- a/lasso/xml/id-wsf-2.0/dstref_data_response.c
+++ b/lasso/xml/id-wsf-2.0/dstref_data_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_data_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_data_response
diff --git a/lasso/xml/id-wsf-2.0/dstref_delete.c b/lasso/xml/id-wsf-2.0/dstref_delete.c
index d93bb31d..50e54d28 100644
--- a/lasso/xml/id-wsf-2.0/dstref_delete.c
+++ b/lasso/xml/id-wsf-2.0/dstref_delete.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_delete.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_delete
diff --git a/lasso/xml/id-wsf-2.0/dstref_delete_item.c b/lasso/xml/id-wsf-2.0/dstref_delete_item.c
index 2a222e52..6eb7099e 100644
--- a/lasso/xml/id-wsf-2.0/dstref_delete_item.c
+++ b/lasso/xml/id-wsf-2.0/dstref_delete_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_delete_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_delete_item
diff --git a/lasso/xml/id-wsf-2.0/dstref_delete_response.c b/lasso/xml/id-wsf-2.0/dstref_delete_response.c
index 78d581c3..76d99b4a 100644
--- a/lasso/xml/id-wsf-2.0/dstref_delete_response.c
+++ b/lasso/xml/id-wsf-2.0/dstref_delete_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_delete_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_delete_response
diff --git a/lasso/xml/id-wsf-2.0/dstref_item_data.c b/lasso/xml/id-wsf-2.0/dstref_item_data.c
index f2deb087..112f35c3 100644
--- a/lasso/xml/id-wsf-2.0/dstref_item_data.c
+++ b/lasso/xml/id-wsf-2.0/dstref_item_data.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_item_data.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_item_data
diff --git a/lasso/xml/id-wsf-2.0/dstref_modify.c b/lasso/xml/id-wsf-2.0/dstref_modify.c
index 49fc4c09..0e74d2cf 100644
--- a/lasso/xml/id-wsf-2.0/dstref_modify.c
+++ b/lasso/xml/id-wsf-2.0/dstref_modify.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_modify.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_modify
diff --git a/lasso/xml/id-wsf-2.0/dstref_modify_item.c b/lasso/xml/id-wsf-2.0/dstref_modify_item.c
index 7e445311..77b62f16 100644
--- a/lasso/xml/id-wsf-2.0/dstref_modify_item.c
+++ b/lasso/xml/id-wsf-2.0/dstref_modify_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_modify_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_modify_item
diff --git a/lasso/xml/id-wsf-2.0/dstref_modify_response.c b/lasso/xml/id-wsf-2.0/dstref_modify_response.c
index ad7b014c..93c02e3a 100644
--- a/lasso/xml/id-wsf-2.0/dstref_modify_response.c
+++ b/lasso/xml/id-wsf-2.0/dstref_modify_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_modify_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_modify_response
diff --git a/lasso/xml/id-wsf-2.0/dstref_query.c b/lasso/xml/id-wsf-2.0/dstref_query.c
index ead6bbb0..5fef25d4 100644
--- a/lasso/xml/id-wsf-2.0/dstref_query.c
+++ b/lasso/xml/id-wsf-2.0/dstref_query.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_query.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_query
diff --git a/lasso/xml/id-wsf-2.0/dstref_query_item.c b/lasso/xml/id-wsf-2.0/dstref_query_item.c
index f067d3ff..7e680e9a 100644
--- a/lasso/xml/id-wsf-2.0/dstref_query_item.c
+++ b/lasso/xml/id-wsf-2.0/dstref_query_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_query_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_query_item
diff --git a/lasso/xml/id-wsf-2.0/dstref_query_response.c b/lasso/xml/id-wsf-2.0/dstref_query_response.c
index fccb4c5a..26eb0e75 100644
--- a/lasso/xml/id-wsf-2.0/dstref_query_response.c
+++ b/lasso/xml/id-wsf-2.0/dstref_query_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_query_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_query_response
diff --git a/lasso/xml/id-wsf-2.0/dstref_result_query.c b/lasso/xml/id-wsf-2.0/dstref_result_query.c
index a0bafcdc..a2703e17 100644
--- a/lasso/xml/id-wsf-2.0/dstref_result_query.c
+++ b/lasso/xml/id-wsf-2.0/dstref_result_query.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_result_query.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_result_query
diff --git a/lasso/xml/id-wsf-2.0/dstref_test_item.c b/lasso/xml/id-wsf-2.0/dstref_test_item.c
index 8a62d413..5302397a 100644
--- a/lasso/xml/id-wsf-2.0/dstref_test_item.c
+++ b/lasso/xml/id-wsf-2.0/dstref_test_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "dstref_test_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:dstref_test_item
diff --git a/lasso/xml/id-wsf-2.0/ims_identity_mapping_request.c b/lasso/xml/id-wsf-2.0/ims_identity_mapping_request.c
index e29ae42f..09950d0c 100644
--- a/lasso/xml/id-wsf-2.0/ims_identity_mapping_request.c
+++ b/lasso/xml/id-wsf-2.0/ims_identity_mapping_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ims_identity_mapping_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ims_identity_mapping_request
diff --git a/lasso/xml/id-wsf-2.0/ims_identity_mapping_response.c b/lasso/xml/id-wsf-2.0/ims_identity_mapping_response.c
index c51e88c4..5393ff2c 100644
--- a/lasso/xml/id-wsf-2.0/ims_identity_mapping_response.c
+++ b/lasso/xml/id-wsf-2.0/ims_identity_mapping_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ims_identity_mapping_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ims_identity_mapping_response
diff --git a/lasso/xml/id-wsf-2.0/ims_mapping_input.c b/lasso/xml/id-wsf-2.0/ims_mapping_input.c
index 4a6856f0..d32b9ea6 100644
--- a/lasso/xml/id-wsf-2.0/ims_mapping_input.c
+++ b/lasso/xml/id-wsf-2.0/ims_mapping_input.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ims_mapping_input.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ims_mapping_input
diff --git a/lasso/xml/id-wsf-2.0/ims_mapping_output.c b/lasso/xml/id-wsf-2.0/ims_mapping_output.c
index ac6e6d75..22c533e9 100644
--- a/lasso/xml/id-wsf-2.0/ims_mapping_output.c
+++ b/lasso/xml/id-wsf-2.0/ims_mapping_output.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ims_mapping_output.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ims_mapping_output
diff --git a/lasso/xml/id-wsf-2.0/is_help.c b/lasso/xml/id-wsf-2.0/is_help.c
index 4f562521..60b1e8b4 100644
--- a/lasso/xml/id-wsf-2.0/is_help.c
+++ b/lasso/xml/id-wsf-2.0/is_help.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "is_help.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:is_help
diff --git a/lasso/xml/id-wsf-2.0/is_inquiry.c b/lasso/xml/id-wsf-2.0/is_inquiry.c
index ecd842e9..5e841abc 100644
--- a/lasso/xml/id-wsf-2.0/is_inquiry.c
+++ b/lasso/xml/id-wsf-2.0/is_inquiry.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "is_inquiry.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:is_inquiry
diff --git a/lasso/xml/id-wsf-2.0/is_inquiry_element.c b/lasso/xml/id-wsf-2.0/is_inquiry_element.c
index ac5e3f71..bf2a7b0e 100644
--- a/lasso/xml/id-wsf-2.0/is_inquiry_element.c
+++ b/lasso/xml/id-wsf-2.0/is_inquiry_element.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "is_inquiry_element.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:is_inquiry_element
diff --git a/lasso/xml/id-wsf-2.0/is_interaction_request.c b/lasso/xml/id-wsf-2.0/is_interaction_request.c
index 11595bcd..26236aef 100644
--- a/lasso/xml/id-wsf-2.0/is_interaction_request.c
+++ b/lasso/xml/id-wsf-2.0/is_interaction_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "is_interaction_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:is_interaction_request
diff --git a/lasso/xml/id-wsf-2.0/is_interaction_response.c b/lasso/xml/id-wsf-2.0/is_interaction_response.c
index 25e0ae1d..2158fdd6 100644
--- a/lasso/xml/id-wsf-2.0/is_interaction_response.c
+++ b/lasso/xml/id-wsf-2.0/is_interaction_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "is_interaction_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:is_interaction_response
diff --git a/lasso/xml/id-wsf-2.0/is_interaction_statement.c b/lasso/xml/id-wsf-2.0/is_interaction_statement.c
index 4c499537..3142b882 100644
--- a/lasso/xml/id-wsf-2.0/is_interaction_statement.c
+++ b/lasso/xml/id-wsf-2.0/is_interaction_statement.c
@@ -28,6 +28,7 @@
#include
#include "is_interaction_statement.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:is_interaction_statement
diff --git a/lasso/xml/id-wsf-2.0/is_item.c b/lasso/xml/id-wsf-2.0/is_item.c
index 128499b8..6dc0eba7 100644
--- a/lasso/xml/id-wsf-2.0/is_item.c
+++ b/lasso/xml/id-wsf-2.0/is_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "is_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:is_item
diff --git a/lasso/xml/id-wsf-2.0/is_parameter.c b/lasso/xml/id-wsf-2.0/is_parameter.c
index 144b9a89..4146fd4c 100644
--- a/lasso/xml/id-wsf-2.0/is_parameter.c
+++ b/lasso/xml/id-wsf-2.0/is_parameter.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "is_parameter.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:is_parameter
diff --git a/lasso/xml/id-wsf-2.0/is_select.c b/lasso/xml/id-wsf-2.0/is_select.c
index dd8f605c..bf0120e8 100644
--- a/lasso/xml/id-wsf-2.0/is_select.c
+++ b/lasso/xml/id-wsf-2.0/is_select.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "is_select.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:is_select
diff --git a/lasso/xml/id-wsf-2.0/is_text.c b/lasso/xml/id-wsf-2.0/is_text.c
index 01f2c40b..a514ec85 100644
--- a/lasso/xml/id-wsf-2.0/is_text.c
+++ b/lasso/xml/id-wsf-2.0/is_text.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "is_text.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:is_text
diff --git a/lasso/xml/id-wsf-2.0/ps_add_collection_request.c b/lasso/xml/id-wsf-2.0/ps_add_collection_request.c
index 935b5dea..ebaaba22 100644
--- a/lasso/xml/id-wsf-2.0/ps_add_collection_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_add_collection_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_add_collection_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_add_collection_request
diff --git a/lasso/xml/id-wsf-2.0/ps_add_collection_response.c b/lasso/xml/id-wsf-2.0/ps_add_collection_response.c
index f6e4b030..0c6f7649 100644
--- a/lasso/xml/id-wsf-2.0/ps_add_collection_response.c
+++ b/lasso/xml/id-wsf-2.0/ps_add_collection_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_add_collection_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_add_collection_response
diff --git a/lasso/xml/id-wsf-2.0/ps_add_entity_request.c b/lasso/xml/id-wsf-2.0/ps_add_entity_request.c
index 8bc65eda..a6d4f5ee 100644
--- a/lasso/xml/id-wsf-2.0/ps_add_entity_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_add_entity_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_add_entity_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_add_entity_request
diff --git a/lasso/xml/id-wsf-2.0/ps_add_entity_response.c b/lasso/xml/id-wsf-2.0/ps_add_entity_response.c
index f0c62b65..490455b8 100644
--- a/lasso/xml/id-wsf-2.0/ps_add_entity_response.c
+++ b/lasso/xml/id-wsf-2.0/ps_add_entity_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_add_entity_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_add_entity_response
diff --git a/lasso/xml/id-wsf-2.0/ps_add_known_entity_request.c b/lasso/xml/id-wsf-2.0/ps_add_known_entity_request.c
index bb22ae19..3b651508 100644
--- a/lasso/xml/id-wsf-2.0/ps_add_known_entity_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_add_known_entity_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_add_known_entity_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_add_known_entity_request
diff --git a/lasso/xml/id-wsf-2.0/ps_add_known_entity_response.c b/lasso/xml/id-wsf-2.0/ps_add_known_entity_response.c
index 0ef7b74e..e586dac7 100644
--- a/lasso/xml/id-wsf-2.0/ps_add_known_entity_response.c
+++ b/lasso/xml/id-wsf-2.0/ps_add_known_entity_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_add_known_entity_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_add_known_entity_response
diff --git a/lasso/xml/id-wsf-2.0/ps_add_to_collection_request.c b/lasso/xml/id-wsf-2.0/ps_add_to_collection_request.c
index 78c17604..e0f7b8c1 100644
--- a/lasso/xml/id-wsf-2.0/ps_add_to_collection_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_add_to_collection_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_add_to_collection_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_add_to_collection_request
diff --git a/lasso/xml/id-wsf-2.0/ps_get_object_info_request.c b/lasso/xml/id-wsf-2.0/ps_get_object_info_request.c
index 3539135e..e7b5eaee 100644
--- a/lasso/xml/id-wsf-2.0/ps_get_object_info_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_get_object_info_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_get_object_info_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_get_object_info_request
diff --git a/lasso/xml/id-wsf-2.0/ps_get_object_info_response.c b/lasso/xml/id-wsf-2.0/ps_get_object_info_response.c
index ea8bd3b9..17321d21 100644
--- a/lasso/xml/id-wsf-2.0/ps_get_object_info_response.c
+++ b/lasso/xml/id-wsf-2.0/ps_get_object_info_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_get_object_info_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_get_object_info_response
diff --git a/lasso/xml/id-wsf-2.0/ps_item_data.c b/lasso/xml/id-wsf-2.0/ps_item_data.c
index 31f80fd8..c7e8903f 100644
--- a/lasso/xml/id-wsf-2.0/ps_item_data.c
+++ b/lasso/xml/id-wsf-2.0/ps_item_data.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_item_data.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_item_data
diff --git a/lasso/xml/id-wsf-2.0/ps_list_members_request.c b/lasso/xml/id-wsf-2.0/ps_list_members_request.c
index b1a6ec24..83be47c1 100644
--- a/lasso/xml/id-wsf-2.0/ps_list_members_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_list_members_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_list_members_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_list_members_request
diff --git a/lasso/xml/id-wsf-2.0/ps_list_members_response.c b/lasso/xml/id-wsf-2.0/ps_list_members_response.c
index 67f5e84b..1a2618d0 100644
--- a/lasso/xml/id-wsf-2.0/ps_list_members_response.c
+++ b/lasso/xml/id-wsf-2.0/ps_list_members_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_list_members_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_list_members_response
diff --git a/lasso/xml/id-wsf-2.0/ps_notification.c b/lasso/xml/id-wsf-2.0/ps_notification.c
index 2de0af96..fbb4b718 100644
--- a/lasso/xml/id-wsf-2.0/ps_notification.c
+++ b/lasso/xml/id-wsf-2.0/ps_notification.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_notification.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_notification
diff --git a/lasso/xml/id-wsf-2.0/ps_notify.c b/lasso/xml/id-wsf-2.0/ps_notify.c
index 259018ac..623a7ede 100644
--- a/lasso/xml/id-wsf-2.0/ps_notify.c
+++ b/lasso/xml/id-wsf-2.0/ps_notify.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_notify.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_notify
diff --git a/lasso/xml/id-wsf-2.0/ps_object.c b/lasso/xml/id-wsf-2.0/ps_object.c
index 2301db99..c0f9c6d9 100644
--- a/lasso/xml/id-wsf-2.0/ps_object.c
+++ b/lasso/xml/id-wsf-2.0/ps_object.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_object.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_object
diff --git a/lasso/xml/id-wsf-2.0/ps_query_objects_request.c b/lasso/xml/id-wsf-2.0/ps_query_objects_request.c
index 27efab22..017a1110 100644
--- a/lasso/xml/id-wsf-2.0/ps_query_objects_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_query_objects_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_query_objects_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_query_objects_request
diff --git a/lasso/xml/id-wsf-2.0/ps_query_objects_response.c b/lasso/xml/id-wsf-2.0/ps_query_objects_response.c
index 970d47d1..42d7efb6 100644
--- a/lasso/xml/id-wsf-2.0/ps_query_objects_response.c
+++ b/lasso/xml/id-wsf-2.0/ps_query_objects_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_query_objects_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_query_objects_response
diff --git a/lasso/xml/id-wsf-2.0/ps_remove_collection_request.c b/lasso/xml/id-wsf-2.0/ps_remove_collection_request.c
index 8631a246..05b88305 100644
--- a/lasso/xml/id-wsf-2.0/ps_remove_collection_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_remove_collection_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_remove_collection_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_remove_collection_request
diff --git a/lasso/xml/id-wsf-2.0/ps_remove_entity_request.c b/lasso/xml/id-wsf-2.0/ps_remove_entity_request.c
index b893b293..fb2c27ba 100644
--- a/lasso/xml/id-wsf-2.0/ps_remove_entity_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_remove_entity_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_remove_entity_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_remove_entity_request
diff --git a/lasso/xml/id-wsf-2.0/ps_remove_from_collection_request.c b/lasso/xml/id-wsf-2.0/ps_remove_from_collection_request.c
index d1468c7b..624c2671 100644
--- a/lasso/xml/id-wsf-2.0/ps_remove_from_collection_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_remove_from_collection_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_remove_from_collection_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_remove_from_collection_request
diff --git a/lasso/xml/id-wsf-2.0/ps_request_abstract.c b/lasso/xml/id-wsf-2.0/ps_request_abstract.c
index 22594a49..a62e4e57 100644
--- a/lasso/xml/id-wsf-2.0/ps_request_abstract.c
+++ b/lasso/xml/id-wsf-2.0/ps_request_abstract.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_request_abstract.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_request_abstract
diff --git a/lasso/xml/id-wsf-2.0/ps_resolve_identifier_request.c b/lasso/xml/id-wsf-2.0/ps_resolve_identifier_request.c
index c8ac20e7..f2f70c90 100644
--- a/lasso/xml/id-wsf-2.0/ps_resolve_identifier_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_resolve_identifier_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_resolve_identifier_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_resolve_identifier_request
diff --git a/lasso/xml/id-wsf-2.0/ps_resolve_identifier_response.c b/lasso/xml/id-wsf-2.0/ps_resolve_identifier_response.c
index 0aec5af0..038ae251 100644
--- a/lasso/xml/id-wsf-2.0/ps_resolve_identifier_response.c
+++ b/lasso/xml/id-wsf-2.0/ps_resolve_identifier_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_resolve_identifier_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_resolve_identifier_response
diff --git a/lasso/xml/id-wsf-2.0/ps_resolve_input.c b/lasso/xml/id-wsf-2.0/ps_resolve_input.c
index ca1e9e0a..d7512173 100644
--- a/lasso/xml/id-wsf-2.0/ps_resolve_input.c
+++ b/lasso/xml/id-wsf-2.0/ps_resolve_input.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_resolve_input.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_resolve_input
diff --git a/lasso/xml/id-wsf-2.0/ps_response_abstract.c b/lasso/xml/id-wsf-2.0/ps_response_abstract.c
index ede95e91..6baa41f9 100644
--- a/lasso/xml/id-wsf-2.0/ps_response_abstract.c
+++ b/lasso/xml/id-wsf-2.0/ps_response_abstract.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_response_abstract.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_response_abstract
diff --git a/lasso/xml/id-wsf-2.0/ps_set_object_info_request.c b/lasso/xml/id-wsf-2.0/ps_set_object_info_request.c
index d834ad43..114be6fc 100644
--- a/lasso/xml/id-wsf-2.0/ps_set_object_info_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_set_object_info_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_set_object_info_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_set_object_info_request
diff --git a/lasso/xml/id-wsf-2.0/ps_test_membership_request.c b/lasso/xml/id-wsf-2.0/ps_test_membership_request.c
index 49cd97e8..d458b50d 100644
--- a/lasso/xml/id-wsf-2.0/ps_test_membership_request.c
+++ b/lasso/xml/id-wsf-2.0/ps_test_membership_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_test_membership_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_test_membership_request
diff --git a/lasso/xml/id-wsf-2.0/ps_test_membership_response.c b/lasso/xml/id-wsf-2.0/ps_test_membership_response.c
index a554f0c3..68b80342 100644
--- a/lasso/xml/id-wsf-2.0/ps_test_membership_response.c
+++ b/lasso/xml/id-wsf-2.0/ps_test_membership_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "ps_test_membership_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:ps_test_membership_response
diff --git a/lasso/xml/id-wsf-2.0/sb2_consent.c b/lasso/xml/id-wsf-2.0/sb2_consent.c
index d79dfd83..f8e64ba3 100644
--- a/lasso/xml/id-wsf-2.0/sb2_consent.c
+++ b/lasso/xml/id-wsf-2.0/sb2_consent.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sb2_consent.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sb2_consent
diff --git a/lasso/xml/id-wsf-2.0/sb2_credentials_context.c b/lasso/xml/id-wsf-2.0/sb2_credentials_context.c
index d823a5c6..907cf1f2 100644
--- a/lasso/xml/id-wsf-2.0/sb2_credentials_context.c
+++ b/lasso/xml/id-wsf-2.0/sb2_credentials_context.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sb2_credentials_context.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sb2_credentials_context
diff --git a/lasso/xml/id-wsf-2.0/sb2_endpoint_update.c b/lasso/xml/id-wsf-2.0/sb2_endpoint_update.c
index 2fa372e0..9835cfad 100644
--- a/lasso/xml/id-wsf-2.0/sb2_endpoint_update.c
+++ b/lasso/xml/id-wsf-2.0/sb2_endpoint_update.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sb2_endpoint_update.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sb2_endpoint_update
diff --git a/lasso/xml/id-wsf-2.0/sb2_redirect_request.c b/lasso/xml/id-wsf-2.0/sb2_redirect_request.c
index 00f9f20b..92ffb20d 100644
--- a/lasso/xml/id-wsf-2.0/sb2_redirect_request.c
+++ b/lasso/xml/id-wsf-2.0/sb2_redirect_request.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sb2_redirect_request.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sb2_redirect_request
diff --git a/lasso/xml/id-wsf-2.0/sb2_sender.c b/lasso/xml/id-wsf-2.0/sb2_sender.c
index f970fc63..49297ece 100644
--- a/lasso/xml/id-wsf-2.0/sb2_sender.c
+++ b/lasso/xml/id-wsf-2.0/sb2_sender.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sb2_sender.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sb2_sender
diff --git a/lasso/xml/id-wsf-2.0/sb2_target_identity.c b/lasso/xml/id-wsf-2.0/sb2_target_identity.c
index 3c566698..47a5a888 100644
--- a/lasso/xml/id-wsf-2.0/sb2_target_identity.c
+++ b/lasso/xml/id-wsf-2.0/sb2_target_identity.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sb2_target_identity.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sb2_target_identity
diff --git a/lasso/xml/id-wsf-2.0/sb2_timeout.c b/lasso/xml/id-wsf-2.0/sb2_timeout.c
index e4369ab5..d8deead6 100644
--- a/lasso/xml/id-wsf-2.0/sb2_timeout.c
+++ b/lasso/xml/id-wsf-2.0/sb2_timeout.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sb2_timeout.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sb2_timeout
diff --git a/lasso/xml/id-wsf-2.0/sb2_usage_directive.c b/lasso/xml/id-wsf-2.0/sb2_usage_directive.c
index b0f06989..245c54ae 100644
--- a/lasso/xml/id-wsf-2.0/sb2_usage_directive.c
+++ b/lasso/xml/id-wsf-2.0/sb2_usage_directive.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sb2_usage_directive.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sb2_usage_directive
diff --git a/lasso/xml/id-wsf-2.0/sb2_user_interaction_header.c b/lasso/xml/id-wsf-2.0/sb2_user_interaction_header.c
index f046f987..fed08990 100644
--- a/lasso/xml/id-wsf-2.0/sb2_user_interaction_header.c
+++ b/lasso/xml/id-wsf-2.0/sb2_user_interaction_header.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sb2_user_interaction_header.h"
+#include "./idwsf2_strings.h"
#include "../../registry.h"
/**
diff --git a/lasso/xml/id-wsf-2.0/sbf_framework.c b/lasso/xml/id-wsf-2.0/sbf_framework.c
index 81e8c7db..b8a77cf8 100644
--- a/lasso/xml/id-wsf-2.0/sbf_framework.c
+++ b/lasso/xml/id-wsf-2.0/sbf_framework.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sbf_framework.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sbf_framework
diff --git a/lasso/xml/id-wsf-2.0/sec_token.c b/lasso/xml/id-wsf-2.0/sec_token.c
index 316d29ac..a9977080 100644
--- a/lasso/xml/id-wsf-2.0/sec_token.c
+++ b/lasso/xml/id-wsf-2.0/sec_token.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sec_token.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sec_token
diff --git a/lasso/xml/id-wsf-2.0/sec_token_policy.c b/lasso/xml/id-wsf-2.0/sec_token_policy.c
index 21551b2f..936fcada 100644
--- a/lasso/xml/id-wsf-2.0/sec_token_policy.c
+++ b/lasso/xml/id-wsf-2.0/sec_token_policy.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sec_token_policy.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sec_token_policy
diff --git a/lasso/xml/id-wsf-2.0/sec_transited_provider_path.c b/lasso/xml/id-wsf-2.0/sec_transited_provider_path.c
index 45ef9381..0c689d46 100644
--- a/lasso/xml/id-wsf-2.0/sec_transited_provider_path.c
+++ b/lasso/xml/id-wsf-2.0/sec_transited_provider_path.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "sec_transited_provider_path.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:sec_transited_provider_path
diff --git a/lasso/xml/id-wsf-2.0/subs_notification.c b/lasso/xml/id-wsf-2.0/subs_notification.c
index 0c44468c..60b14d25 100644
--- a/lasso/xml/id-wsf-2.0/subs_notification.c
+++ b/lasso/xml/id-wsf-2.0/subs_notification.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subs_notification.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subs_notification
diff --git a/lasso/xml/id-wsf-2.0/subs_notify_response.c b/lasso/xml/id-wsf-2.0/subs_notify_response.c
index 5d6111ea..7d652565 100644
--- a/lasso/xml/id-wsf-2.0/subs_notify_response.c
+++ b/lasso/xml/id-wsf-2.0/subs_notify_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subs_notify_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subs_notify_response
diff --git a/lasso/xml/id-wsf-2.0/subs_ref_item.c b/lasso/xml/id-wsf-2.0/subs_ref_item.c
index 649b6455..d0d0db64 100644
--- a/lasso/xml/id-wsf-2.0/subs_ref_item.c
+++ b/lasso/xml/id-wsf-2.0/subs_ref_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subs_ref_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subs_ref_item
diff --git a/lasso/xml/id-wsf-2.0/subs_subscription.c b/lasso/xml/id-wsf-2.0/subs_subscription.c
index 560935fd..89f0a79a 100644
--- a/lasso/xml/id-wsf-2.0/subs_subscription.c
+++ b/lasso/xml/id-wsf-2.0/subs_subscription.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subs_subscription.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subs_subscription
diff --git a/lasso/xml/id-wsf-2.0/subsref_app_data.c b/lasso/xml/id-wsf-2.0/subsref_app_data.c
index b8a36594..d19c0872 100644
--- a/lasso/xml/id-wsf-2.0/subsref_app_data.c
+++ b/lasso/xml/id-wsf-2.0/subsref_app_data.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_app_data.h"
+#include "./idwsf2_strings.h"
#include "../../registry.h"
/**
diff --git a/lasso/xml/id-wsf-2.0/subsref_create.c b/lasso/xml/id-wsf-2.0/subsref_create.c
index 30632793..a0351054 100644
--- a/lasso/xml/id-wsf-2.0/subsref_create.c
+++ b/lasso/xml/id-wsf-2.0/subsref_create.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_create.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_create
diff --git a/lasso/xml/id-wsf-2.0/subsref_create_item.c b/lasso/xml/id-wsf-2.0/subsref_create_item.c
index 428cacdb..8c34ab6b 100644
--- a/lasso/xml/id-wsf-2.0/subsref_create_item.c
+++ b/lasso/xml/id-wsf-2.0/subsref_create_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_create_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_create_item
diff --git a/lasso/xml/id-wsf-2.0/subsref_create_response.c b/lasso/xml/id-wsf-2.0/subsref_create_response.c
index 777db44c..027c6a7f 100644
--- a/lasso/xml/id-wsf-2.0/subsref_create_response.c
+++ b/lasso/xml/id-wsf-2.0/subsref_create_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_create_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_create_response
diff --git a/lasso/xml/id-wsf-2.0/subsref_data.c b/lasso/xml/id-wsf-2.0/subsref_data.c
index 0eed93c4..5dd459ca 100644
--- a/lasso/xml/id-wsf-2.0/subsref_data.c
+++ b/lasso/xml/id-wsf-2.0/subsref_data.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_data.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_data
diff --git a/lasso/xml/id-wsf-2.0/subsref_data_response.c b/lasso/xml/id-wsf-2.0/subsref_data_response.c
index ba216857..e84ba41d 100644
--- a/lasso/xml/id-wsf-2.0/subsref_data_response.c
+++ b/lasso/xml/id-wsf-2.0/subsref_data_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_data_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_data_response
diff --git a/lasso/xml/id-wsf-2.0/subsref_delete.c b/lasso/xml/id-wsf-2.0/subsref_delete.c
index 2f863635..2de5c558 100644
--- a/lasso/xml/id-wsf-2.0/subsref_delete.c
+++ b/lasso/xml/id-wsf-2.0/subsref_delete.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_delete.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_delete
diff --git a/lasso/xml/id-wsf-2.0/subsref_delete_item.c b/lasso/xml/id-wsf-2.0/subsref_delete_item.c
index a2de9bca..626de918 100644
--- a/lasso/xml/id-wsf-2.0/subsref_delete_item.c
+++ b/lasso/xml/id-wsf-2.0/subsref_delete_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_delete_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_delete_item
diff --git a/lasso/xml/id-wsf-2.0/subsref_delete_response.c b/lasso/xml/id-wsf-2.0/subsref_delete_response.c
index 232aa158..8f3c523d 100644
--- a/lasso/xml/id-wsf-2.0/subsref_delete_response.c
+++ b/lasso/xml/id-wsf-2.0/subsref_delete_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_delete_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_delete_response
diff --git a/lasso/xml/id-wsf-2.0/subsref_item_data.c b/lasso/xml/id-wsf-2.0/subsref_item_data.c
index 81de1ff3..b32f9816 100644
--- a/lasso/xml/id-wsf-2.0/subsref_item_data.c
+++ b/lasso/xml/id-wsf-2.0/subsref_item_data.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_item_data.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_item_data
diff --git a/lasso/xml/id-wsf-2.0/subsref_modify.c b/lasso/xml/id-wsf-2.0/subsref_modify.c
index a8841b38..f5aa5094 100644
--- a/lasso/xml/id-wsf-2.0/subsref_modify.c
+++ b/lasso/xml/id-wsf-2.0/subsref_modify.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_modify.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_modify
diff --git a/lasso/xml/id-wsf-2.0/subsref_modify_item.c b/lasso/xml/id-wsf-2.0/subsref_modify_item.c
index ed260af7..6edebd20 100644
--- a/lasso/xml/id-wsf-2.0/subsref_modify_item.c
+++ b/lasso/xml/id-wsf-2.0/subsref_modify_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_modify_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_modify_item
diff --git a/lasso/xml/id-wsf-2.0/subsref_modify_response.c b/lasso/xml/id-wsf-2.0/subsref_modify_response.c
index c09dd128..043bb748 100644
--- a/lasso/xml/id-wsf-2.0/subsref_modify_response.c
+++ b/lasso/xml/id-wsf-2.0/subsref_modify_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_modify_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_modify_response
diff --git a/lasso/xml/id-wsf-2.0/subsref_notification.c b/lasso/xml/id-wsf-2.0/subsref_notification.c
index 2230de18..40d2a60e 100644
--- a/lasso/xml/id-wsf-2.0/subsref_notification.c
+++ b/lasso/xml/id-wsf-2.0/subsref_notification.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_notification.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_notification
diff --git a/lasso/xml/id-wsf-2.0/subsref_notify.c b/lasso/xml/id-wsf-2.0/subsref_notify.c
index 66359ab4..ad2af64e 100644
--- a/lasso/xml/id-wsf-2.0/subsref_notify.c
+++ b/lasso/xml/id-wsf-2.0/subsref_notify.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_notify.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_notify
diff --git a/lasso/xml/id-wsf-2.0/subsref_notify_response.c b/lasso/xml/id-wsf-2.0/subsref_notify_response.c
index bf0e39aa..7f9873ce 100644
--- a/lasso/xml/id-wsf-2.0/subsref_notify_response.c
+++ b/lasso/xml/id-wsf-2.0/subsref_notify_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_notify_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_notify_response
diff --git a/lasso/xml/id-wsf-2.0/subsref_query.c b/lasso/xml/id-wsf-2.0/subsref_query.c
index be2d439a..3fa66270 100644
--- a/lasso/xml/id-wsf-2.0/subsref_query.c
+++ b/lasso/xml/id-wsf-2.0/subsref_query.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_query.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_query
diff --git a/lasso/xml/id-wsf-2.0/subsref_query_item.c b/lasso/xml/id-wsf-2.0/subsref_query_item.c
index 94f53d8e..d2fd60ec 100644
--- a/lasso/xml/id-wsf-2.0/subsref_query_item.c
+++ b/lasso/xml/id-wsf-2.0/subsref_query_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_query_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_query_item
diff --git a/lasso/xml/id-wsf-2.0/subsref_query_response.c b/lasso/xml/id-wsf-2.0/subsref_query_response.c
index cb5d903c..9c25c176 100644
--- a/lasso/xml/id-wsf-2.0/subsref_query_response.c
+++ b/lasso/xml/id-wsf-2.0/subsref_query_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_query_response.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_query_response
diff --git a/lasso/xml/id-wsf-2.0/subsref_result_query.c b/lasso/xml/id-wsf-2.0/subsref_result_query.c
index c1d8c2b3..5e927ac2 100644
--- a/lasso/xml/id-wsf-2.0/subsref_result_query.c
+++ b/lasso/xml/id-wsf-2.0/subsref_result_query.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_result_query.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_result_query
diff --git a/lasso/xml/id-wsf-2.0/subsref_subscription.c b/lasso/xml/id-wsf-2.0/subsref_subscription.c
index 5f4f29eb..cdee8528 100644
--- a/lasso/xml/id-wsf-2.0/subsref_subscription.c
+++ b/lasso/xml/id-wsf-2.0/subsref_subscription.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_subscription.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_subscription
diff --git a/lasso/xml/id-wsf-2.0/subsref_test_item.c b/lasso/xml/id-wsf-2.0/subsref_test_item.c
index 87607a89..b6eb2b80 100644
--- a/lasso/xml/id-wsf-2.0/subsref_test_item.c
+++ b/lasso/xml/id-wsf-2.0/subsref_test_item.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "subsref_test_item.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:subsref_test_item
diff --git a/lasso/xml/id-wsf-2.0/util_empty.c b/lasso/xml/id-wsf-2.0/util_empty.c
index a6abff87..580218e0 100644
--- a/lasso/xml/id-wsf-2.0/util_empty.c
+++ b/lasso/xml/id-wsf-2.0/util_empty.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "util_empty.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:util_empty
diff --git a/lasso/xml/id-wsf-2.0/util_extension.c b/lasso/xml/id-wsf-2.0/util_extension.c
index d9facdf1..ce92a2c6 100644
--- a/lasso/xml/id-wsf-2.0/util_extension.c
+++ b/lasso/xml/id-wsf-2.0/util_extension.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "util_extension.h"
+#include "./idwsf2_strings.h"
/**
* SECTION:util_extension
diff --git a/lasso/xml/id-wsf-2.0/util_response.c b/lasso/xml/id-wsf-2.0/util_response.c
index bea09585..93146e90 100644
--- a/lasso/xml/id-wsf-2.0/util_response.c
+++ b/lasso/xml/id-wsf-2.0/util_response.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "util_response.h"
+#include "./idwsf2_strings.h"
#include "../../utils.h"
/**
diff --git a/lasso/xml/id-wsf-2.0/util_status.c b/lasso/xml/id-wsf-2.0/util_status.c
index 1464097f..b0bf328b 100644
--- a/lasso/xml/id-wsf-2.0/util_status.c
+++ b/lasso/xml/id-wsf-2.0/util_status.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "util_status.h"
+#include "./idwsf2_strings.h"
#include "../../utils.h"
/**
diff --git a/lasso/xml/idwsf_strings.h b/lasso/xml/idwsf_strings.h
index 09fce002..e462f27c 100644
--- a/lasso/xml/idwsf_strings.h
+++ b/lasso/xml/idwsf_strings.h
@@ -41,8 +41,6 @@
#ifndef __LASSO_IDWSF_STRINGS_H__
#define __LASSO_IDWSF_STRINGS_H__
-#include "./id-wsf-2.0/idwsf2_strings.h"
-
/*****************************************************************************/
/* Liberty Alliance ID-WSF */
/*****************************************************************************/
@@ -402,26 +400,6 @@
#define LASSO_WSSE_USERNAME_TOKEN_PROFILE_PASSWORD_TEXT \
LASSO_WSSE_USERNAME_TOKEN_PROFILE_HREF "#PasswordText"
-/*
- * WS-Security Utility
- */
-
-/**
- * LASSO_WSUTIL1_HREF:
- *
- * Namespace for FIXME
- *
- */
-#define LASSO_WSUTIL1_HREF \
- "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
-/**
- * LASSO_WSUTIL1_PREFIX:
- *
- * Preferred prefix for namespace of FIXME
- *
- */
-#define LASSO_WSUTIL1_PREFIX "wsutil"
-
/* WS-Addressing */
/**
* LASSO_WSA_HREF:
diff --git a/lasso/xml/is_help.c b/lasso/xml/is_help.c
index f9ceed75..d93ae609 100644
--- a/lasso/xml/is_help.c
+++ b/lasso/xml/is_help.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_help.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_help
diff --git a/lasso/xml/is_inquiry.c b/lasso/xml/is_inquiry.c
index d4ac0d74..d6ee8a3b 100644
--- a/lasso/xml/is_inquiry.c
+++ b/lasso/xml/is_inquiry.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_inquiry.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_inquiry
diff --git a/lasso/xml/is_inquiry_element.c b/lasso/xml/is_inquiry_element.c
index ae8b4ec8..5eb8f7c7 100644
--- a/lasso/xml/is_inquiry_element.c
+++ b/lasso/xml/is_inquiry_element.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_inquiry_element.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_inquiry_element
diff --git a/lasso/xml/is_interaction_request.c b/lasso/xml/is_interaction_request.c
index 8b3a9079..55cd40f7 100644
--- a/lasso/xml/is_interaction_request.c
+++ b/lasso/xml/is_interaction_request.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_interaction_request.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_interaction_request
diff --git a/lasso/xml/is_interaction_response.c b/lasso/xml/is_interaction_response.c
index 8b176b36..f4f5c358 100644
--- a/lasso/xml/is_interaction_response.c
+++ b/lasso/xml/is_interaction_response.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_interaction_response.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_interaction_response
diff --git a/lasso/xml/is_interaction_statement.c b/lasso/xml/is_interaction_statement.c
index bc587668..1defe3db 100644
--- a/lasso/xml/is_interaction_statement.c
+++ b/lasso/xml/is_interaction_statement.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_interaction_statement.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_interaction_statement
diff --git a/lasso/xml/is_item.c b/lasso/xml/is_item.c
index 4e2b3975..ab78e6bf 100644
--- a/lasso/xml/is_item.c
+++ b/lasso/xml/is_item.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_item.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_item
diff --git a/lasso/xml/is_parameter.c b/lasso/xml/is_parameter.c
index 387c5ef5..14f35e6d 100644
--- a/lasso/xml/is_parameter.c
+++ b/lasso/xml/is_parameter.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_parameter.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_parameter
diff --git a/lasso/xml/is_redirect_request.c b/lasso/xml/is_redirect_request.c
index fcdb4cdd..e8936cfe 100644
--- a/lasso/xml/is_redirect_request.c
+++ b/lasso/xml/is_redirect_request.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_redirect_request.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_redirect_request
diff --git a/lasso/xml/is_select.c b/lasso/xml/is_select.c
index e3f2a03e..cf0523bf 100644
--- a/lasso/xml/is_select.c
+++ b/lasso/xml/is_select.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_select.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_select
diff --git a/lasso/xml/is_text.c b/lasso/xml/is_text.c
index 83093caa..60087e03 100644
--- a/lasso/xml/is_text.c
+++ b/lasso/xml/is_text.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_text.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_text
diff --git a/lasso/xml/is_user_interaction.c b/lasso/xml/is_user_interaction.c
index 3c53558e..4f214192 100644
--- a/lasso/xml/is_user_interaction.c
+++ b/lasso/xml/is_user_interaction.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "is_user_interaction.h"
+#include "./idwsf_strings.h"
/**
* SECTION:is_user_interaction
diff --git a/lasso/xml/sa_credentials.c b/lasso/xml/sa_credentials.c
index 13a468b3..ee7aefd1 100644
--- a/lasso/xml/sa_credentials.c
+++ b/lasso/xml/sa_credentials.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "sa_credentials.h"
+#include "./idwsf_strings.h"
/**
* SECTION:sa_credentials
diff --git a/lasso/xml/sa_parameter.c b/lasso/xml/sa_parameter.c
index 27212073..147b8166 100644
--- a/lasso/xml/sa_parameter.c
+++ b/lasso/xml/sa_parameter.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "sa_parameter.h"
+#include "./idwsf_strings.h"
/**
* SECTION:sa_parameter
diff --git a/lasso/xml/sa_password_transforms.c b/lasso/xml/sa_password_transforms.c
index f9862ec4..4f09cf2e 100644
--- a/lasso/xml/sa_password_transforms.c
+++ b/lasso/xml/sa_password_transforms.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "sa_password_transforms.h"
+#include "./idwsf_strings.h"
/**
* SECTION:sa_password_transforms
diff --git a/lasso/xml/sa_sasl_request.c b/lasso/xml/sa_sasl_request.c
index 65b41a16..467e1f8b 100644
--- a/lasso/xml/sa_sasl_request.c
+++ b/lasso/xml/sa_sasl_request.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "sa_sasl_request.h"
+#include "./idwsf_strings.h"
/**
* SECTION:sa_sasl_request
diff --git a/lasso/xml/sa_sasl_response.c b/lasso/xml/sa_sasl_response.c
index 64769935..4dfcf3a0 100644
--- a/lasso/xml/sa_sasl_response.c
+++ b/lasso/xml/sa_sasl_response.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "sa_sasl_response.h"
+#include "./idwsf_strings.h"
/**
* SECTION:sa_sasl_response
diff --git a/lasso/xml/sa_transform.c b/lasso/xml/sa_transform.c
index 1204166a..b27a5f88 100644
--- a/lasso/xml/sa_transform.c
+++ b/lasso/xml/sa_transform.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "sa_transform.h"
+#include "./idwsf_strings.h"
/**
* SECTION:sa_transform
diff --git a/lasso/xml/saml-2.0/saml2_name_id.c b/lasso/xml/saml-2.0/saml2_name_id.c
index 698cec0d..8405c47d 100644
--- a/lasso/xml/saml-2.0/saml2_name_id.c
+++ b/lasso/xml/saml-2.0/saml2_name_id.c
@@ -163,13 +163,13 @@ lasso_saml2_name_id_equals(LassoSaml2NameID *name_id, LassoSaml2NameID *other_na
return FALSE;
/* check optional content */
- if (g_strcmp0(name_id->Format, other_name_id->Format) != 0)
+ if (lasso_strisnotequal(name_id->Format,other_name_id->Format))
return FALSE;
- if (g_strcmp0(name_id->SPProvidedID, other_name_id->SPProvidedID) != 0)
+ if (lasso_strisnotequal(name_id->SPProvidedID,other_name_id->SPProvidedID))
return FALSE;
- if (g_strcmp0(name_id->NameQualifier, other_name_id->NameQualifier) != 0)
+ if (lasso_strisnotequal(name_id->NameQualifier,other_name_id->NameQualifier))
return FALSE;
- if (g_strcmp0(name_id->SPNameQualifier, other_name_id->SPNameQualifier) != 0)
+ if (lasso_strisnotequal(name_id->SPNameQualifier,other_name_id->SPNameQualifier))
return FALSE;
return TRUE;
diff --git a/lasso/xml/saml-2.0/samlp2_logout_request.c b/lasso/xml/saml-2.0/samlp2_logout_request.c
index 3d7e3ad8..a4576685 100644
--- a/lasso/xml/saml-2.0/samlp2_logout_request.c
+++ b/lasso/xml/saml-2.0/samlp2_logout_request.c
@@ -127,6 +127,7 @@ get_xmlNode(LassoNode *node, gboolean lasso_dump)
#endif
}
((LassoSamlp2LogoutRequest*)node)->SessionIndex = keep_session_index;
+ lasso_release_list_of_strings(other_session_index);
return xmlnode;
}
diff --git a/lasso/xml/saml-2.0/samlp2_response.c b/lasso/xml/saml-2.0/samlp2_response.c
index 3299e644..056ea948 100644
--- a/lasso/xml/saml-2.0/samlp2_response.c
+++ b/lasso/xml/saml-2.0/samlp2_response.c
@@ -84,7 +84,7 @@ get_xmlNode(LassoNode *node, gboolean lasso_dump)
if (encrypted_element != NULL) {
lasso_list_add_new_gobject(response->EncryptedAssertion, encrypted_element);
} else {
- lasso_list_add_new_gobject(response->Assertion, assertions->data);
+ lasso_list_add_gobject(response->Assertion, assertions->data);
}
}
}
@@ -93,7 +93,7 @@ get_xmlNode(LassoNode *node, gboolean lasso_dump)
if (lasso_dump == FALSE) {
lasso_release_list_of_gobjects(response->EncryptedAssertion);
- lasso_assign_list(response->Assertion, Assertion_save);
+ lasso_assign_new_list_of_gobjects(response->Assertion, Assertion_save);
}
return result;
diff --git a/lasso/xml/sec_resource_access_statement.c b/lasso/xml/sec_resource_access_statement.c
index 34810a5e..6f1578d1 100644
--- a/lasso/xml/sec_resource_access_statement.c
+++ b/lasso/xml/sec_resource_access_statement.c
@@ -24,6 +24,7 @@
#include "private.h"
#include "sec_resource_access_statement.h"
+#include "./idwsf_strings.h"
/*
* value->id != xmlSecOpenSSLKeyDataRsaId) {
ret = critical_error(LASSO_DS_ERROR_PUBLIC_KEY_LOAD_FAILED);
goto done;
@@ -834,7 +834,7 @@ lasso_saml2_query_verify_signature(const char *query, const xmlSecKey *sender_pu
goto done;
}
key_size = RSA_size(rsa);
- } else if (g_strcmp0(usig_alg, (char*)xmlSecHrefDsaSha1) == 0) {
+ } else if (lasso_strisequal(usig_alg,(char *)xmlSecHrefDsaSha1)) {
if (sender_public_key->value->id != xmlSecOpenSSLKeyDataDsaId) {
ret = critical_error(LASSO_DS_ERROR_PUBLIC_KEY_LOAD_FAILED);
goto done;
@@ -2130,6 +2130,7 @@ next:
}
cleanup:
+ lasso_release_key_manager(keys_mngr);
return result;
}
diff --git a/lasso/xml/ws/wsa_attributed_any.c b/lasso/xml/ws/wsa_attributed_any.c
index 294912c5..dd47df52 100644
--- a/lasso/xml/ws/wsa_attributed_any.c
+++ b/lasso/xml/ws/wsa_attributed_any.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsa_attributed_any.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (ws-addr.xsd):
diff --git a/lasso/xml/ws/wsa_attributed_qname.c b/lasso/xml/ws/wsa_attributed_qname.c
index 012fac3a..5b71af91 100644
--- a/lasso/xml/ws/wsa_attributed_qname.c
+++ b/lasso/xml/ws/wsa_attributed_qname.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsa_attributed_qname.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (ws-addr.xsd):
diff --git a/lasso/xml/ws/wsa_attributed_unsigned_long.c b/lasso/xml/ws/wsa_attributed_unsigned_long.c
index 156a5215..5d25bdaf 100644
--- a/lasso/xml/ws/wsa_attributed_unsigned_long.c
+++ b/lasso/xml/ws/wsa_attributed_unsigned_long.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsa_attributed_unsigned_long.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (ws-addr.xsd):
diff --git a/lasso/xml/ws/wsa_attributed_uri.c b/lasso/xml/ws/wsa_attributed_uri.c
index 06b56e01..37be4ab5 100644
--- a/lasso/xml/ws/wsa_attributed_uri.c
+++ b/lasso/xml/ws/wsa_attributed_uri.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsa_attributed_uri.h"
+#include "../idwsf_strings.h"
#include "../../registry.h"
/*
diff --git a/lasso/xml/ws/wsa_endpoint_reference.c b/lasso/xml/ws/wsa_endpoint_reference.c
index a55a7e74..3bb1b1a4 100644
--- a/lasso/xml/ws/wsa_endpoint_reference.c
+++ b/lasso/xml/ws/wsa_endpoint_reference.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsa_endpoint_reference.h"
+#include "../idwsf_strings.h"
#include "../../registry.h"
/*
diff --git a/lasso/xml/ws/wsa_metadata.c b/lasso/xml/ws/wsa_metadata.c
index 54efb525..e3c4dc4b 100644
--- a/lasso/xml/ws/wsa_metadata.c
+++ b/lasso/xml/ws/wsa_metadata.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsa_metadata.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (ws-addr.xsd):
diff --git a/lasso/xml/ws/wsa_problem_action.c b/lasso/xml/ws/wsa_problem_action.c
index 1957e408..5ad135da 100644
--- a/lasso/xml/ws/wsa_problem_action.c
+++ b/lasso/xml/ws/wsa_problem_action.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsa_problem_action.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (ws-addr.xsd):
diff --git a/lasso/xml/ws/wsa_reference_parameters.c b/lasso/xml/ws/wsa_reference_parameters.c
index 279e0977..8a4d95fe 100644
--- a/lasso/xml/ws/wsa_reference_parameters.c
+++ b/lasso/xml/ws/wsa_reference_parameters.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsa_reference_parameters.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (ws-addr.xsd):
diff --git a/lasso/xml/ws/wsa_relates_to.c b/lasso/xml/ws/wsa_relates_to.c
index dc657380..13cb4aec 100644
--- a/lasso/xml/ws/wsa_relates_to.c
+++ b/lasso/xml/ws/wsa_relates_to.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsa_relates_to.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (ws-addr.xsd):
diff --git a/lasso/xml/ws/wsse_embedded.c b/lasso/xml/ws/wsse_embedded.c
index c8efcb58..e219c1b6 100644
--- a/lasso/xml/ws/wsse_embedded.c
+++ b/lasso/xml/ws/wsse_embedded.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsse_embedded.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (oasis-200401-wss-wssecurity-secext-1.0.xsd):
diff --git a/lasso/xml/ws/wsse_reference.c b/lasso/xml/ws/wsse_reference.c
index 21a0dfdd..556dd4b4 100644
--- a/lasso/xml/ws/wsse_reference.c
+++ b/lasso/xml/ws/wsse_reference.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsse_reference.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (oasis-200401-wss-wssecurity-secext-1.0.xsd):
diff --git a/lasso/xml/ws/wsse_security_header.c b/lasso/xml/ws/wsse_security_header.c
index 07ec44f3..1d33f6e6 100644
--- a/lasso/xml/ws/wsse_security_header.c
+++ b/lasso/xml/ws/wsse_security_header.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsse_security_header.h"
+#include "../idwsf_strings.h"
#include "../../registry.h"
/*
diff --git a/lasso/xml/ws/wsse_security_token_reference.c b/lasso/xml/ws/wsse_security_token_reference.c
index 51d7201b..0748c77a 100644
--- a/lasso/xml/ws/wsse_security_token_reference.c
+++ b/lasso/xml/ws/wsse_security_token_reference.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsse_security_token_reference.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (oasis-200401-wss-wssecurity-secext-1.0.xsd):
diff --git a/lasso/xml/ws/wsse_transformation_parameters.c b/lasso/xml/ws/wsse_transformation_parameters.c
index 1f06b0b8..4bc2d0b4 100644
--- a/lasso/xml/ws/wsse_transformation_parameters.c
+++ b/lasso/xml/ws/wsse_transformation_parameters.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsse_transformation_parameters.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (oasis-200401-wss-wssecurity-secext-1.0.xsd):
diff --git a/lasso/xml/ws/wsse_username_token.c b/lasso/xml/ws/wsse_username_token.c
index 3f8c81bb..26a72e9c 100644
--- a/lasso/xml/ws/wsse_username_token.c
+++ b/lasso/xml/ws/wsse_username_token.c
@@ -40,6 +40,7 @@
*/
#include "./wsse_username_token.h"
+#include "../idwsf_strings.h"
#include
#include
#include
diff --git a/lasso/xml/ws/wsu_timestamp.c b/lasso/xml/ws/wsu_timestamp.c
index 62bdb60f..e9bbed2c 100644
--- a/lasso/xml/ws/wsu_timestamp.c
+++ b/lasso/xml/ws/wsu_timestamp.c
@@ -24,6 +24,7 @@
#include "../private.h"
#include "wsu_timestamp.h"
+#include "../idwsf_strings.h"
/*
* Schema fragment (oasis-200401-wss-wssecurity-utility-1.0.xsd):
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c
index eff4e98c..e143bbff 100644
--- a/lasso/xml/xml.c
+++ b/lasso/xml/xml.c
@@ -50,6 +50,9 @@
#include "../debug.h"
#include "./soap-1.1/soap_envelope.h"
#include "./soap-1.1/soap_body.h"
+#if LASSO_WSF_ENABLED
+#include "./idwsf_strings.h"
+#endif
static void lasso_node_build_xmlNode_from_snippets(LassoNode *node, xmlNode *xmlnode,
struct XmlSnippet *snippets, gboolean lasso_dump);
@@ -158,7 +161,7 @@ _lasso_node_export_to_xml(LassoNode *node, gboolean format, gboolean dump, int l
*
* Dumps @node. All datas in object are dumped in an XML format.
*
- * Return value: a full XML dump of @node. The string must be freed by the
+ * Return value:(transfer full): a full XML dump of @node. The string must be freed by the
* caller.
**/
char*
@@ -175,7 +178,7 @@ lasso_node_dump(LassoNode *node)
* Create a debug dump for @node, it is pretty printed so any contained signature will be
* uncheckable.
*
- * Return value: a full indented and so human readable dump of @node. The string must be freed by
+ * Return value:(transfer full): a full indented and so human readable dump of @node. The string must be freed by
* the caller.
*/
char*
@@ -467,6 +470,7 @@ lasso_node_export_to_soap(LassoNode *node)
lasso_list_add_gobject(body->any, node);
ret = lasso_node_export_to_xml((LassoNode*)envelope);
lasso_release_gobject(envelope);
+ lasso_release_gobject(body);
return ret;
}
@@ -861,6 +865,9 @@ _lasso_node_free_custom_element(struct _CustomElement *custom_element)
lasso_release_string(custom_element->href);
lasso_release_string(custom_element->nodename);
lasso_release_ghashtable(custom_element->namespaces);
+ lasso_release_string(custom_element->private_key);
+ lasso_release_string(custom_element->private_key_password);
+ lasso_release_string(custom_element->certificate);
}
lasso_release(custom_element);
}
@@ -1559,7 +1566,7 @@ _xmlnode_add_custom_namespace(const char *prefix, const char *href, xmlNode *xml
existing = xmlSearchNs(NULL, xmlnode, BAD_CAST prefix);
if (existing) {
- if (g_strcmp0((char*)existing->href, href) != 0) {
+ if (lasso_strisnotequal((char *)existing->href,href)) {
message(G_LOG_LEVEL_CRITICAL, "Cannot add namespace %s='%s' to node %s, "
"namespace already exists with another href", prefix, href,
(char*)xmlnode->name);
@@ -1967,9 +1974,11 @@ lasso_node_new_from_soap(const char *soap)
*
*/
static const char *
-prefix_from_href_and_nodename(const xmlChar *href, const xmlChar *nodename) {
+prefix_from_href_and_nodename(const xmlChar *href, G_GNUC_UNUSED const xmlChar *nodename) {
char *prefix = NULL;
- char *tmp = NULL;
+#ifdef LASSO_WSF_ENABLED
+ char *tmp = NULL
+#endif
if (strcmp((char*)href, LASSO_LASSO_HREF) == 0)
prefix = "";
@@ -1985,6 +1994,7 @@ prefix_from_href_and_nodename(const xmlChar *href, const xmlChar *nodename) {
prefix = "Samlp2";
else if (strcmp((char*)href, LASSO_SOAP_ENV_HREF) == 0)
prefix = "Soap";
+#ifdef LASSO_WSF_ENABLED
else if (strcmp((char*)href, LASSO_SOAP_BINDING_HREF) == 0)
prefix = "SoapBinding";
else if (strcmp((char*)href, LASSO_SOAP_BINDING_EXT_HREF) == 0)
@@ -2046,6 +2056,7 @@ prefix_from_href_and_nodename(const xmlChar *href, const xmlChar *nodename) {
prefix = "Utility";
else if (prefix != NULL && strcmp(prefix, "Sa") == 0 && strcmp((char*)nodename, "Status") == 0)
prefix = "Utility";
+#endif
return prefix;
}
@@ -2161,16 +2172,19 @@ lasso_node_new_from_xmlNode(xmlNode *xmlnode)
if (! fromXsi) {
/* if the typename was not obtained via xsi:type but through mapping of the element
* name then keep the element name */
- if (LASSO_NODE_GET_CLASS(node)->node_data && LASSO_NODE_GET_CLASS(node)->node_data->node_name && g_strcmp0((char*)xmlnode->name,
- LASSO_NODE_GET_CLASS(node)->node_data->node_name) != 0) {
+ if (LASSO_NODE_GET_CLASS(node)->node_data &&
+ LASSO_NODE_GET_CLASS(node)->node_data->node_name &&
+ lasso_strisnotequal((char*)xmlnode->name,
+ LASSO_NODE_GET_CLASS(node)->node_data->node_name))
+ {
lasso_node_set_custom_nodename(node, (char*)xmlnode->name);
}
if (xmlnode->ns && (LASSO_NODE_GET_CLASS(node)->node_data == NULL ||
LASSO_NODE_GET_CLASS(node)->node_data->ns == NULL ||
- g_strcmp0((char*)xmlnode->ns->href,
- (char*)LASSO_NODE_GET_CLASS(node)->node_data->ns->href)
- != 0)) {
+ lasso_xmlstrisnotequal(xmlnode->ns->href,
+ LASSO_NODE_GET_CLASS(node)->node_data->ns->href)))
+ {
lasso_node_set_custom_namespace(node, (char*)xmlnode->ns->prefix,
(char*)xmlnode->ns->href);
}
@@ -3117,7 +3131,7 @@ xml_insure_namespace(xmlNode *xmlnode, xmlNs *ns, gboolean force, gchar *ns_href
if (ns == NULL) {
for (ns = xmlnode->nsDef; ns; ns = ns->next) {
- if (ns->href && g_strcmp0((gchar*)ns->href, ns_href) == 0) {
+ if (ns->href && lasso_strisequal((gchar *)ns->href,ns_href)) {
break;
}
}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 20b408b0..7414dfb8 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -20,7 +20,7 @@ INCLUDES = \
$(CHECK_CFLAGS)
-tests_SOURCES = tests.c login_tests.c basic_tests.c random_tests.c metadata_tests.c login_tests_saml2.c assertion_query_saml2.c $(WSF_TESTS)
+tests_SOURCES = tests.c login_tests.c basic_tests.c non_regression_tests.c random_tests.c metadata_tests.c login_tests_saml2.c assertion_query_saml2.c $(WSF_TESTS)
tests_LDADD = \
$(top_builddir)/lasso/liblasso.la \
@@ -40,6 +40,29 @@ perfs_SOURCES = perfs.c
perfs_LDADD = $(top_builddir)/lasso/liblasso.la $(LASSO_LIBS)
perfs_LDFLAGS = -rpath `cd $(top_builddir)/lasso/.libs/; pwd`
+.PHONY: valgrind
+
+LEAKCHECK = G_DEBUG=gc-friendly MALLOC_CHECK_=2 G_SLICE=always-malloc CK_FORK=no \
+ valgrind --leak-check=full --log-file=valgrind.log \
+ --suppressions=$(top_srcdir)/tests/valgrind/glib.supp \
+ --suppressions=$(top_srcdir)/tests/valgrind/openssl.supp \
+ --suppressions=$(top_srcdir)/tests/valgrind/lasso.supp \
+ --num-callers=50
+
+LEAKCHECK_REACHABLE = $(LEAKCHECK) --show-reachable=yes
+
+MASSIF = G_DEBUG=gc-friendly MALLOC_CHECK_=2 G_SLICE=always-malloc CK_FORK=no \
+ valgrind --tool=massif
+
+leakcheck:
+ $(LEAKCHECK) ./tests
+
+leakcheck-reachable:
+ $(LEAKCHECK_REACHABLE) ./tests
+
+massif:
+ $(MASSIF) ./tests
+
endif
EXTRA_DIST = metadata valgrind tests.h $(tests_SOURCES)
diff --git a/tests/login_tests.c b/tests/login_tests.c
index 54a2d554..43718620 100644
--- a/tests/login_tests.c
+++ b/tests/login_tests.c
@@ -196,7 +196,7 @@ START_TEST(test02_serviceProviderLogin)
"lasso_login_must_ask_for_consent() should be FALSE");
fail_unless(idpLoginContext->parent.msg_relayState != NULL,
"lasso_login_process_authn_request_msg should restore the RelayState parameter");
- fail_unless(g_strcmp0(idpLoginContext->parent.msg_relayState, relayState) == 0,
+ fail_unless(lasso_strisequal(idpLoginContext->parent.msg_relayState,relayState),
"lasso_login_process_authn_request_msg should restore the same RelayState thant sent in the request");
rc = lasso_login_validate_request_msg(idpLoginContext,
1, /* authentication_result */
@@ -242,7 +242,7 @@ START_TEST(test02_serviceProviderLogin)
LASSO_HTTP_METHOD_REDIRECT);
fail_unless(spLoginContext->parent.msg_relayState != NULL,
"lasso_login_init_request should restore the RelayState parameter");
- fail_unless(g_strcmp0(spLoginContext->parent.msg_relayState, relayState) == 0,
+ fail_unless(lasso_strisequal(spLoginContext->parent.msg_relayState,relayState),
"lasso_login_init_request should restore the same RelayState thant sent in the request");
fail_unless(rc == 0, "lasso_login_init_request failed");
rc = lasso_login_build_request_msg(spLoginContext);
diff --git a/tests/login_tests_saml2.c b/tests/login_tests_saml2.c
index 4482448b..0864ec17 100644
--- a/tests/login_tests_saml2.c
+++ b/tests/login_tests_saml2.c
@@ -58,6 +58,7 @@ generateIdentityProviderContextDump()
ret = lasso_server_dump(serverContext);
g_object_unref(serverContext);
+ g_list_free(providers);
return ret;
}
@@ -196,7 +197,7 @@ START_TEST(test02_saml2_serviceProviderLogin)
check_equals(idpLoginContext->protocolProfile, LASSO_LOGIN_PROTOCOL_PROFILE_BRWS_ART);
check_false(lasso_login_must_ask_for_consent(idpLoginContext));
check_not_null(idpLoginContext->parent.msg_relayState);
- check_equals(g_strcmp0(idpLoginContext->parent.msg_relayState, relayState), 0);
+ check_equals(lasso_strisnotequal(idpLoginContext->parent.msg_relayState,relayState), 0);
check_good_rc(lasso_login_validate_request_msg(idpLoginContext,
1, /* authentication_result */
0 /* is_consent_obtained */
@@ -238,7 +239,7 @@ START_TEST(test02_saml2_serviceProviderLogin)
responseQuery,
LASSO_HTTP_METHOD_ARTIFACT_GET));
check_not_null(spLoginContext->parent.msg_relayState);
- check_equals(g_strcmp0(spLoginContext->parent.msg_relayState, relayState), 0);
+ check_equals(lasso_strisnotequal(spLoginContext->parent.msg_relayState,relayState), 0);
check_good_rc(lasso_login_build_request_msg(spLoginContext));
soapRequestMsg = LASSO_PROFILE(spLoginContext)->msg_body;
check_not_null(soapRequestMsg);
@@ -542,7 +543,7 @@ START_TEST(test04_sso_then_slo_soap)
check_equals(idpLoginContext->protocolProfile, LASSO_LOGIN_PROTOCOL_PROFILE_BRWS_ART);
check_false(lasso_login_must_ask_for_consent(idpLoginContext));
check_not_null(idpLoginContext->parent.msg_relayState);
- check_equals(g_strcmp0(idpLoginContext->parent.msg_relayState, relayState), 0);
+ check_equals(lasso_strisnotequal(idpLoginContext->parent.msg_relayState,relayState), 0);
check_good_rc(lasso_login_validate_request_msg(idpLoginContext,
1, /* authentication_result */
0 /* is_consent_obtained */
@@ -584,7 +585,7 @@ START_TEST(test04_sso_then_slo_soap)
responseQuery,
LASSO_HTTP_METHOD_ARTIFACT_GET));
check_not_null(spLoginContext->parent.msg_relayState);
- check_equals(g_strcmp0(spLoginContext->parent.msg_relayState, relayState), 0);
+ check_equals(lasso_strisnotequal(spLoginContext->parent.msg_relayState,relayState), 0);
check_good_rc(lasso_login_build_request_msg(spLoginContext));
soapRequestMsg = LASSO_PROFILE(spLoginContext)->msg_body;
check_not_null(soapRequestMsg);
@@ -656,6 +657,7 @@ START_TEST(test04_sso_then_slo_soap)
check_null(spLogoutContext->parent.msg_relayState);
lasso_assign_string(logoutResponseSoapMessage, spLogoutContext->parent.msg_body);
lasso_release_gobject(spLogoutContext);
+ lasso_release_gobject(idpLogoutContext);
/* process the response */
check_not_null(idpLogoutContext = lasso_logout_new(idpContext));
diff --git a/tests/non_regression_tests.c b/tests/non_regression_tests.c
new file mode 100644
index 00000000..208bc30d
--- /dev/null
+++ b/tests/non_regression_tests.c
@@ -0,0 +1,105 @@
+/*
+ * Lasso library C unit tests
+ *
+ * Copyright (C) 2004-2007 Entr'ouvert
+ * http://lasso.entrouvert.org
+ *
+ * Authors: See AUTHORS file in top-level directory.
+ *
+ * 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
+#include
+
+#include
+
+#include <../lasso/lasso.h>
+#include "./tests.h"
+#include <../lasso/xml/lib_assertion.h>
+#include <../lasso/xml/lib_authentication_statement.h>
+#include <../lasso/xml/saml_name_identifier.h>
+#include <../lasso/xml/samlp_response.h>
+#include "../lasso/utils.h"
+
+
+Suite* non_regression_suite();
+
+START_TEST(test01_googleapps_27092010)
+{
+
+/*
+ * Here the decoded request:
+ *
+ * char *gapp_request = "\n\
+google.com"; */
+ char *b64_encoded_request = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNhbWxwOkF1dGhuUmVxdWVzdCB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIgpJRD0ibGZub2VoY2ZnYWdmYmVmaWFpamFlZmRwbmRlcHBnbWZsbGVuZWxpayIgVmVyc2lvbj0iMi4wIgpJc3N1ZUluc3RhbnQ9IjIwMTAtMDktMjdUMTI6NTU6MjlaIgpQcm90b2NvbEJpbmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpiaW5kaW5nczpIVFRQLVBPU1QiClByb3ZpZGVyTmFtZT0iZ29vZ2xlLmNvbSIgSXNQYXNzaXZlPSJmYWxzZSIKQXNzZXJ0aW9uQ29uc3VtZXJTZXJ2aWNlVVJMPSJodHRwczovL3d3dy5nb29nbGUuY29tL2EvbGluaWQub3JnL2FjcyI+PHNhbWw6SXNzdWVyCnhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmdvb2dsZS5jb208L3NhbWw6SXNzdWVyPjxzYW1scDpOYW1lSURQb2xpY3kKQWxsb3dDcmVhdGU9InRydWUiCkZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiCi8+PC9zYW1scDpBdXRoblJlcXVlc3Q+Cg==";
+ char *metadata = "\n\
+\n\
+\n\
+urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\n\
+\n\
+\n";
+ LassoServer *server = NULL;
+ LassoLogin *login = NULL;
+ check_not_null(server = lasso_server_new(TESTSDATADIR "/idp5-saml2/metadata.xml",
+ TESTSDATADIR "/idp5-saml2/private-key.pem", NULL, NULL));
+ check_good_rc(lasso_server_add_provider_from_buffer(server, LASSO_PROVIDER_ROLE_SP,
+ metadata, NULL, NULL));
+ check_not_null(login = lasso_login_new(server));
+ lasso_profile_set_signature_verify_hint(&login->parent,
+ LASSO_PROFILE_SIGNATURE_VERIFY_HINT_IGNORE);
+ check_good_rc(lasso_login_process_authn_request_msg(login, b64_encoded_request));
+ check_good_rc(lasso_login_validate_request_msg(login, TRUE, TRUE));
+ check_good_rc(lasso_login_build_authn_response_msg(login));
+ check_not_null(LASSO_PROFILE(login)->msg_url);
+ check_not_null(LASSO_PROFILE(login)->msg_body);
+ lasso_release_gobject(login);
+ lasso_release_gobject(server);
+
+}
+END_TEST
+
+struct {
+ char *name;
+ void *function;
+} tests[] = {
+ { "Googleapps error from coudot@ on 27-09-2010", test01_googleapps_27092010}
+};
+
+Suite*
+non_regression_suite()
+{
+ Suite *s = suite_create("Non regression tests");
+ unsigned int i = 0;
+
+ for (i = 0 ; i < G_N_ELEMENTS(tests); i++) {
+ TCase *c = tcase_create(tests[i].name);
+ void *f = tests[i].function;
+ tcase_add_test(c, f);
+ suite_add_tcase(s, c);
+ }
+
+ return s;
+}
diff --git a/tests/perfs.c b/tests/perfs.c
index 6f60275b..17d2795b 100644
--- a/tests/perfs.c
+++ b/tests/perfs.c
@@ -25,131 +25,148 @@
#include
#include <../lasso/lasso.h>
+#include <../lasso/xml/saml-2.0/samlp2_response.h>
+#include <../lasso/xml/saml-2.0/samlp2_authn_request.h>
+
+#define INDEX "5"
+#define PROTO "saml2"
+#define IDP_METADATA TESTSDATADIR "/idp" INDEX "-" PROTO "/metadata.xml"
+#define IDP_PKEY TESTSDATADIR "/idp" INDEX "-" PROTO "/private-key.pem"
+#define SP_METADATA TESTSDATADIR "/sp" INDEX "-" PROTO "/metadata.xml"
+#define SP_PKEY TESTSDATADIR "/sp" INDEX "-" PROTO "/private-key.pem"
char* create_authn_response_msg(char *query);
-char*
-create_authn_response_msg(char *query)
+#define check_good_rc(what) \
+ { \
+ int _rc = (what); \
+ if (_rc != 0) { \
+ printf("Error: %s: %s", #what, lasso_strerror(_rc)); \
+ exit(-1); \
+ } \
+ }
+
+void create_authn_request(LassoLogin *sp_login, G_GNUC_UNUSED LassoLogin *idp_login)
{
- LassoServer *server;
- LassoLogin *login;
- char *t;
- int rc = 0;
- server = lasso_server_new(
- TESTSDATADIR "/idp1-la/metadata.xml",
- TESTSDATADIR "/idp1-la/private-key-raw.pem",
- NULL, /* Secret key to unlock private key */
- TESTSDATADIR "/idp1-la/certificate.pem");
- lasso_server_add_provider(
- server,
- LASSO_PROVIDER_ROLE_SP,
- TESTSDATADIR "/sp1-la/metadata.xml",
- TESTSDATADIR "/sp1-la/public-key.pem",
- TESTSDATADIR "/ca1-la/certificate.pem");
+ check_good_rc(lasso_login_init_authn_request(sp_login, NULL, LASSO_HTTP_METHOD_REDIRECT));
+ LASSO_SAMLP2_AUTHN_REQUEST(sp_login->parent.request)->ProtocolBinding = g_strdup(LASSO_SAML2_METADATA_BINDING_POST);
+ check_good_rc(lasso_login_build_authn_request_msg(sp_login));
+}
- login = lasso_login_new(server);
- rc = lasso_login_process_authn_request_msg(login, strchr(query, '?')+1);
+void
+process_authn_request(LassoLogin *sp_login, LassoLogin *idp_login)
+{
+ check_good_rc(lasso_login_process_authn_request_msg(idp_login, strchr(sp_login->parent.msg_url, '?')+1));
- rc = lasso_login_validate_request_msg(login, 1, 0);
- rc = lasso_login_build_assertion(login,
+}
+
+void
+create_authn_response(G_GNUC_UNUSED LassoLogin *sp_login, LassoLogin *idp_login)
+{
+ if (LASSO_SAMLP2_RESPONSE(idp_login->parent.response)->Assertion) {
+ g_object_unref(LASSO_SAMLP2_RESPONSE(idp_login->parent.response)->Assertion->data);
+ g_list_free(LASSO_SAMLP2_RESPONSE(idp_login->parent.response)->Assertion);
+ LASSO_SAMLP2_RESPONSE(idp_login->parent.response)->Assertion = NULL;
+ }
+ check_good_rc(lasso_login_validate_request_msg(idp_login, 1, 0));
+ lasso_login_build_assertion(idp_login,
LASSO_SAML_AUTHENTICATION_METHOD_PASSWORD,
"FIXME: authenticationInstant",
"FIXME: reauthenticateOnOrAfter",
"FIXME: notBefore",
"FIXME: notOnOrAfter");
- rc = lasso_login_build_authn_response_msg(login);
+#if 0 /* activate for simulating simple signature at the assertion level, request/response
+ production should be at the same speed */
+ lasso_profile_set_signature_hint(&idp_login->parent, LASSO_PROFILE_SIGNATURE_HINT_FORBID);
+#endif
+ check_good_rc(lasso_login_build_authn_response_msg(idp_login));
+}
- t = g_strdup(LASSO_PROFILE(login)->msg_body);
- lasso_login_destroy(login);
- lasso_server_destroy(server);
+void
+process_authn_response(LassoLogin *sp_login, LassoLogin *idp_login)
+{
+#if 0
+ lasso_profile_set_signature_verify_hint(&sp_login->parent, LASSO_PROFILE_SIGNATURE_VERIFY_HINT_FORCE);
+#endif
+ check_good_rc(lasso_login_process_authn_response_msg(sp_login, idp_login->parent.msg_body));
+ if (sp_login->parent.session) {
+ g_object_unref(sp_login->parent.session);
+ sp_login->parent.session = NULL;
+ }
+ check_good_rc(lasso_login_accept_sso(sp_login));
+}
- return t;
+void timing(int n, char *text, void (*f)(LassoLogin *sp_login, LassoLogin *idp_login), LassoLogin
+ *sp_login, LassoLogin *idp_login)
+{
+ int i;
+ struct timeval start, end;
+ int usec;
+ fprintf(stdout, text, n);
+ gettimeofday(&start, NULL);
+
+ for (i = 0; i < n; i++) {
+ f(sp_login, idp_login);
+ }
+ gettimeofday(&end, NULL);
+ usec = (end.tv_sec*1000000+end.tv_usec)-(start.tv_sec*1000000+start.tv_usec);
+ fprintf(stdout, " total: %.4f seconds (%f request/second) (%.2f ms/request)\n",
+ (double)usec/1000000,
+ (double)n/usec*1000000,
+ (double)usec/1000/n);
}
int
main(int argc, char *argv[])
{
- LassoServer *server;
- LassoLogin *login;
- LassoLibAuthnRequest *request;
- int i, n;
- struct timeval start, end;
- int usec;
- char *authn_response_msg;
+ LassoServer *sp_server, *idp_server;
+ LassoLogin *sp_login, *idp_login;
+ int n;
lasso_init();
- server = lasso_server_new(
- TESTSDATADIR "/sp1-la/metadata.xml",
- TESTSDATADIR "/sp1-la/private-key-raw.pem",
+ sp_server = lasso_server_new(
+ SP_METADATA,
+ SP_PKEY,
NULL, /* Secret key to unlock private key */
- TESTSDATADIR "/sp1-la/certificate.pem");
+ NULL);
lasso_server_add_provider(
- server,
+ sp_server,
LASSO_PROVIDER_ROLE_IDP,
- TESTSDATADIR "/idp1-la/metadata.xml",
- TESTSDATADIR "/idp1-la/public-key.pem",
- TESTSDATADIR "/ca1-la/certificate.pem");
+ IDP_METADATA,
+ IDP_PKEY,
+ NULL);
+ idp_server = lasso_server_new(
+ IDP_METADATA,
+ IDP_PKEY,
+ NULL, /* Secret key to unlock private key */
+ NULL);
+ lasso_server_add_provider(
+ idp_server,
+ LASSO_PROVIDER_ROLE_SP,
+ SP_METADATA,
+ SP_PKEY,
+ NULL);
n = 100;
if (argc == 2) {
n = atoi(argv[1]);
}
- login = lasso_login_new(server);
-
- fprintf(stdout, "Generating %d AuthnRequest...\n", n);
- gettimeofday(&start, NULL);
- for (i=0; i < n; i++) {
- fprintf(stderr, ".");
- lasso_login_init_authn_request(login, "https://idp1/metadata",
- LASSO_HTTP_METHOD_REDIRECT);
- request = LASSO_LIB_AUTHN_REQUEST(LASSO_PROFILE(login)->request);
- request->IsPassive = 0;
- request->NameIDPolicy = g_strdup(LASSO_LIB_NAMEID_POLICY_TYPE_FEDERATED);
- request->consent = g_strdup(LASSO_LIB_CONSENT_OBTAINED);
- request->ProtocolProfile = g_strdup(LASSO_LIB_PROTOCOL_PROFILE_BRWS_POST);
- lasso_login_build_authn_request_msg(login);
- if ((i+1)%70 == 0) {
- fprintf(stderr, " %d \n", i+1);
- }
- }
- if ((i)%70 != 0) {
- fprintf(stderr, " %d \n", i);
- }
- gettimeofday(&end, NULL);
- usec = (end.tv_sec*1000000+end.tv_usec)-(start.tv_sec*1000000+start.tv_usec);
- fprintf(stdout, " total: %.4f seconds (%f request/second) (%.2f ms/request)\n",
- (double)usec/1000000,
- (double)n/usec*1000000,
- (double)usec/1000/n);
-
- authn_response_msg = create_authn_response_msg(LASSO_PROFILE(login)->msg_url);
-
- fprintf(stdout, "Processing %d AuthnResponse...\n", n);
- gettimeofday(&start, NULL);
- for (i=0; i < n; i++) {
- fprintf(stderr, ".");
- lasso_login_process_authn_response_msg(login, authn_response_msg);
- lasso_login_accept_sso(login);
- if ((i+1)%70 == 0) {
- fprintf(stderr, " %d \n", i+1);
- }
- }
- if ((i)%70 != 0) {
- fprintf(stderr, " %d \n", i);
- }
- gettimeofday(&end, NULL);
- usec = (end.tv_sec*1000000+end.tv_usec)-(start.tv_sec*1000000+start.tv_usec);
- fprintf(stdout, " total: %.4f seconds (%f request/second) (%.2f ms/request)\n",
- (double)usec/1000000,
- (double)n/usec*1000000,
- (double)usec/1000/n);
-
- g_free(authn_response_msg);
-
+ sp_login = lasso_login_new(sp_server);
+ idp_login = lasso_login_new(idp_server);
+ timing(n, "Generating %d AuthnRequest...\n", create_authn_request, sp_login, idp_login);
+#if 0
+ printf("%s\n", lasso_node_export_to_xml(sp_login->parent.request));
+#endif
+ timing(n, "Processing %d AuthnRequest...\n", process_authn_request, sp_login, idp_login);
+ timing(n, "Generating %d AuthnResponse...\n", create_authn_response, sp_login, idp_login);
+#if 0
+ printf("%s\n", lasso_node_export_to_xml(idp_login->parent.response));
+#endif
+ timing(n, "Processing %d AuthnResponse...\n", process_authn_response, sp_login, idp_login);
return 0;
}
diff --git a/tests/random_tests.c b/tests/random_tests.c
index 8a0f488d..100d5f6b 100644
--- a/tests/random_tests.c
+++ b/tests/random_tests.c
@@ -125,6 +125,7 @@ START_TEST(test01_server_new)
fail_unless(provider->ca_cert_chain == NULL);
g_object_unref(server);
lasso_release_string(dump);
+ lasso_release_string(content);
}
END_TEST
diff --git a/tests/tests.c b/tests/tests.c
index 3b0267f1..a32d32e9 100644
--- a/tests/tests.c
+++ b/tests/tests.c
@@ -35,6 +35,7 @@ extern Suite* login_saml2_suite();
extern Suite* random_suite();
extern Suite* metadata_suite();
extern Suite* assertion_query_suite();
+extern Suite* non_regression_suite();
#ifdef LASSO_WSF_ENABLED
extern Suite* idwsf2_suite();
#endif
@@ -48,6 +49,7 @@ SuiteFunction suites[] = {
random_suite,
metadata_suite,
assertion_query_suite,
+ non_regression_suite,
#ifdef LASSO_WSF_ENABLED
idwsf2_suite,
#endif
diff --git a/tests/valgrind/lasso.supp b/tests/valgrind/lasso.supp
index d888fe84..b4d22161 100644
--- a/tests/valgrind/lasso.supp
+++ b/tests/valgrind/lasso.supp
@@ -165,13 +165,3 @@
fun:g_hash_table_new
fun:g_quark_from_static_string
}
-{
- suppression 134
- Memcheck:Leak
- fun:calloc
- fun:g_slice_alloc
- fun:g_string_sized_new
- fun:g_log_default_handler
- fun:g_logv
- fun:g_log
-}
diff --git a/website/web/doap.rdf b/website/web/doap.rdf
index 18323cbe..81d9fe85 100644
--- a/website/web/doap.rdf
+++ b/website/web/doap.rdf
@@ -61,6 +61,10 @@
+
+ 2010-10-01
+ 2.3.3
+
2010-09-07
2.3.2
diff --git a/website/web/index.xml b/website/web/index.xml
index 074fca3a..cf2e521d 100644
--- a/website/web/index.xml
+++ b/website/web/index.xml
@@ -46,7 +46,7 @@
- The most recent version of Lasso is 2.3.2. You can
+ The most recent version of Lasso is 2.3.3. You can
download
the 2.3.2 tarball here or get more options on the general