summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2004-12-18 18:36:54 +0000
committerFrederic Peters <fpeters@entrouvert.com>2004-12-18 18:36:54 +0000
commit2e0efac99e7aa3790eab774ccad59deceb03e169 (patch)
tree3b6ea66d0eac4213388ea6cd4d580b2de7e87072
parent539cd7daa1d767dba06d91427a120fa0f24bac21 (diff)
downloadlasso-2e0efac99e7aa3790eab774ccad59deceb03e169.tar.gz
lasso-2e0efac99e7aa3790eab774ccad59deceb03e169.tar.xz
lasso-2e0efac99e7aa3790eab774ccad59deceb03e169.zip
Moved LassoProfile->nameIdentifier from char* to LassoSamlNameIdentifier*,
gaining back access to the nameFormat added late before 0.5. There are no bindings for LassoSamlNameIdentifier; as a temporary and compatible measure; profile->nameIdentifier in bindings continues to return a char* (profile->nameIdentifier->content). At the same time the same change has been done for LassoNameRegistration->oldNameIdentifier.
-rw-r--r--lasso/id-ff/defederation.c6
-rw-r--r--lasso/id-ff/login.c14
-rw-r--r--lasso/id-ff/logout.c6
-rw-r--r--lasso/id-ff/name_identifier_mapping.c4
-rw-r--r--lasso/id-ff/name_registration.c36
-rw-r--r--lasso/id-ff/name_registration.h2
-rw-r--r--lasso/id-ff/profile.c3
-rw-r--r--lasso/id-ff/profile.h2
-rw-r--r--swig/Lasso.i28
9 files changed, 58 insertions, 43 deletions
diff --git a/lasso/id-ff/defederation.c b/lasso/id-ff/defederation.c
index 23ca522b..ef8fa1b2 100644
--- a/lasso/id-ff/defederation.c
+++ b/lasso/id-ff/defederation.c
@@ -213,7 +213,7 @@ lasso_defederation_init_notification(LassoDefederation *defederation, gchar *rem
}
/* Set the nameIdentifier attribute from content local variable */
- profile->nameIdentifier = g_strdup(nameIdentifier->content);
+ profile->nameIdentifier = g_object_ref(nameIdentifier);
/* remove federation with remote provider id */
if (profile->identity == NULL) {
@@ -289,8 +289,8 @@ lasso_defederation_process_notification_msg(LassoDefederation *defederation, cha
if (format == LASSO_MESSAGE_FORMAT_QUERY)
profile->http_request_method = LASSO_HTTP_METHOD_REDIRECT;
- profile->nameIdentifier = g_strdup(LASSO_LIB_FEDERATION_TERMINATION_NOTIFICATION(
- profile->request)->NameIdentifier->content);
+ profile->nameIdentifier = g_object_ref(LASSO_LIB_FEDERATION_TERMINATION_NOTIFICATION(
+ profile->request)->NameIdentifier);
/* get the RelayState (only available in redirect mode) */
if (LASSO_LIB_FEDERATION_TERMINATION_NOTIFICATION(profile->request)->RelayState)
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index 4f8841d6..090bfdea 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -104,7 +104,7 @@ lasso_login_build_assertion(LassoLogin *login,
as = lasso_lib_authentication_statement_new_full(authenticationMethod,
authenticationInstant, reauthenticateOnOrAfter,
NULL, nameIdentifier);
- profile->nameIdentifier = g_strdup(nameIdentifier->content);
+ profile->nameIdentifier = nameIdentifier;
} else {
as = lasso_lib_authentication_statement_new_full(authenticationMethod,
authenticationInstant, reauthenticateOnOrAfter,
@@ -257,8 +257,8 @@ lasso_login_process_federation(LassoLogin *login, gboolean is_consent_obtained)
return LASSO_LOGIN_ERROR_FEDERATION_NOT_FOUND;
}
- LASSO_PROFILE(login)->nameIdentifier = g_strdup(
- LASSO_SAML_NAME_IDENTIFIER(federation->local_nameIdentifier)->content);
+ LASSO_PROFILE(login)->nameIdentifier = g_object_ref(
+ LASSO_SAML_NAME_IDENTIFIER(federation->local_nameIdentifier));
return 0;
}
@@ -302,7 +302,7 @@ lasso_login_process_federation(LassoLogin *login, gboolean is_consent_obtained)
}
LASSO_PROFILE(login)->nameIdentifier =
- g_strdup(LASSO_SAML_NAME_IDENTIFIER(federation->local_nameIdentifier)->content);
+ g_object_ref(LASSO_SAML_NAME_IDENTIFIER(federation->local_nameIdentifier));
return ret;
}
@@ -351,9 +351,9 @@ lasso_login_process_response_status_and_assertion(LassoLogin *login)
return LASSO_ERROR_UNDEFINED;
}
- profile->nameIdentifier = LASSO_SAML_SUBJECT_STATEMENT_ABSTRACT(
- response->Assertion->AuthenticationStatement
- )->Subject->NameIdentifier->content;
+ profile->nameIdentifier = g_object_ref(LASSO_SAML_SUBJECT_STATEMENT_ABSTRACT(
+ response->Assertion->AuthenticationStatement
+ )->Subject->NameIdentifier);
if (LASSO_PROFILE(login)->nameIdentifier == NULL)
return LASSO_ERROR_UNDEFINED;
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index afbf48af..6af090f1 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -363,7 +363,7 @@ lasso_logout_init_request(LassoLogout *logout, char *remote_providerID,
}
/* Set the name identifier attribute with content local variable */
- profile->nameIdentifier = g_strdup(nameIdentifier->content);
+ profile->nameIdentifier = g_object_ref(nameIdentifier);
/* if logout request from a SP and if an HTTP Redirect/GET method, then remove assertion */
if (remote_provider->role == LASSO_PROVIDER_ROLE_IDP && is_http_redirect_get_method) {
@@ -426,8 +426,8 @@ gint lasso_logout_process_request_msg(LassoLogout *logout, char *request_msg)
if (format == LASSO_MESSAGE_FORMAT_QUERY)
profile->http_request_method = LASSO_HTTP_METHOD_REDIRECT;
- profile->nameIdentifier = g_strdup(
- LASSO_LIB_LOGOUT_REQUEST(profile->request)->NameIdentifier->content);
+ profile->nameIdentifier = g_object_ref(
+ LASSO_LIB_LOGOUT_REQUEST(profile->request)->NameIdentifier);
return profile->signature_status;
}
diff --git a/lasso/id-ff/name_identifier_mapping.c b/lasso/id-ff/name_identifier_mapping.c
index 620c8c09..8768418e 100644
--- a/lasso/id-ff/name_identifier_mapping.c
+++ b/lasso/id-ff/name_identifier_mapping.c
@@ -227,8 +227,8 @@ lasso_name_identifier_mapping_process_request_msg(LassoNameIdentifierMapping *ma
profile->http_request_method = LASSO_HTTP_METHOD_SOAP;
- profile->nameIdentifier = g_strdup(LASSO_LIB_NAME_IDENTIFIER_MAPPING_REQUEST(
- profile->request)->NameIdentifier->content);
+ profile->nameIdentifier = g_object_ref(LASSO_LIB_NAME_IDENTIFIER_MAPPING_REQUEST(
+ profile->request)->NameIdentifier);
return profile->signature_status;
}
diff --git a/lasso/id-ff/name_registration.c b/lasso/id-ff/name_registration.c
index 3e78e627..83868056 100644
--- a/lasso/id-ff/name_registration.c
+++ b/lasso/id-ff/name_registration.c
@@ -215,8 +215,8 @@ lasso_name_registration_init_request(LassoNameRegistration *name_registration,
oldNameIdentifier = g_object_ref(idpNameIdentifier);
}
- profile->nameIdentifier = g_strdup(spNameIdentifier->content);
- name_registration->oldNameIdentifier = g_strdup(oldNameIdentifier->content);
+ profile->nameIdentifier = g_object_ref(spNameIdentifier);
+ name_registration->oldNameIdentifier = g_object_ref(oldNameIdentifier);
} else { /* if (remote_provider->role == LASSO_PROVIDER_ROLE_SP) { */
if (federation->local_nameIdentifier == NULL) {
message(G_LOG_LEVEL_CRITICAL, "Local name identifier not found");
@@ -236,12 +236,11 @@ lasso_name_registration_init_request(LassoNameRegistration *name_registration,
idpNameIdentifier->Format = g_strdup(LASSO_LIB_NAME_IDENTIFIER_FORMAT_FEDERATED);
if (spNameIdentifier) {
- profile->nameIdentifier = g_strdup(spNameIdentifier->content);
- name_registration->oldNameIdentifier = g_strdup(profile->nameIdentifier);
+ profile->nameIdentifier = g_object_ref(spNameIdentifier);
+ name_registration->oldNameIdentifier = g_object_ref(spNameIdentifier);
} else {
- profile->nameIdentifier = g_strdup(idpNameIdentifier->content);
- name_registration->oldNameIdentifier = g_strdup(
- oldNameIdentifier->content);
+ profile->nameIdentifier = g_object_ref(idpNameIdentifier);
+ name_registration->oldNameIdentifier = g_object_ref(oldNameIdentifier);
}
}
@@ -325,22 +324,23 @@ gint lasso_name_registration_process_request_msg(LassoNameRegistration *name_reg
profile->request)->SPProvidedNameIdentifier;
if (remote_provider->role == LASSO_PROVIDER_ROLE_IDP) {
if (nameIdentifier) {
- profile->nameIdentifier = g_strdup(nameIdentifier->content);
- name_registration->oldNameIdentifier = g_strdup(profile->nameIdentifier);
+ profile->nameIdentifier = g_object_ref(nameIdentifier);
+ name_registration->oldNameIdentifier = g_object_ref(
+ profile->nameIdentifier);
} else {
- profile->nameIdentifier = g_strdup(
+ profile->nameIdentifier = g_object_ref(
LASSO_LIB_REGISTER_NAME_IDENTIFIER_REQUEST(
- profile->request)->IDPProvidedNameIdentifier->content);
- name_registration->oldNameIdentifier = g_strdup(
+ profile->request)->IDPProvidedNameIdentifier);
+ name_registration->oldNameIdentifier = g_object_ref(
LASSO_LIB_REGISTER_NAME_IDENTIFIER_REQUEST(
- profile->request)->OldProvidedNameIdentifier->content);
+ profile->request)->OldProvidedNameIdentifier);
}
}
if (remote_provider->role == LASSO_PROVIDER_ROLE_SP) {
- profile->nameIdentifier = g_strdup(nameIdentifier->content);
- name_registration->oldNameIdentifier = g_strdup(
- LASSO_LIB_REGISTER_NAME_IDENTIFIER_REQUEST(
- profile->request)->OldProvidedNameIdentifier->content);
+ profile->nameIdentifier = g_object_ref(nameIdentifier);
+ name_registration->oldNameIdentifier = g_object_ref(
+ LASSO_LIB_REGISTER_NAME_IDENTIFIER_REQUEST(
+ profile->request)->OldProvidedNameIdentifier);
}
@@ -522,7 +522,7 @@ lasso_name_registration_validate_request(LassoNameRegistration *name_registratio
/*****************************************************************************/
static struct XmlSnippet schema_snippets[] = {
- { "OldNameIdentifier", SNIPPET_CONTENT,
+ { "OldNameIdentifier", SNIPPET_NODE_IN_CHILD,
G_STRUCT_OFFSET(LassoNameRegistration, oldNameIdentifier) },
{ NULL, 0, 0}
};
diff --git a/lasso/id-ff/name_registration.h b/lasso/id-ff/name_registration.h
index 60a461d6..8ddeef45 100644
--- a/lasso/id-ff/name_registration.h
+++ b/lasso/id-ff/name_registration.h
@@ -53,7 +53,7 @@ typedef struct _LassoNameRegistrationClass LassoNameRegistrationClass;
struct _LassoNameRegistration {
LassoProfile parent;
- gchar *oldNameIdentifier;
+ LassoSamlNameIdentifier *oldNameIdentifier;
};
struct _LassoNameRegistrationClass {
diff --git a/lasso/id-ff/profile.c b/lasso/id-ff/profile.c
index b0989e3f..822504fc 100644
--- a/lasso/id-ff/profile.c
+++ b/lasso/id-ff/profile.c
@@ -263,7 +263,8 @@ lasso_profile_set_session_from_dump(LassoProfile *ctx, const gchar *dump)
static struct XmlSnippet schema_snippets[] = {
{ "Request", SNIPPET_NODE_IN_CHILD, G_STRUCT_OFFSET(LassoProfile, request) },
{ "Response", SNIPPET_NODE_IN_CHILD, G_STRUCT_OFFSET(LassoProfile, response) },
- { "NameIdentifier", SNIPPET_CONTENT, G_STRUCT_OFFSET(LassoProfile, nameIdentifier) },
+ { "NameIdentifier", SNIPPET_NODE_IN_CHILD,
+ G_STRUCT_OFFSET(LassoProfile, nameIdentifier) },
{ "RemoteProviderID", SNIPPET_CONTENT, G_STRUCT_OFFSET(LassoProfile, remote_providerID) },
{ "MsgUrl", SNIPPET_CONTENT, G_STRUCT_OFFSET(LassoProfile, msg_url) },
{ "MsgBody", SNIPPET_CONTENT, G_STRUCT_OFFSET(LassoProfile, msg_body) },
diff --git a/lasso/id-ff/profile.h b/lasso/id-ff/profile.h
index f151251b..f42c8aac 100644
--- a/lasso/id-ff/profile.h
+++ b/lasso/id-ff/profile.h
@@ -77,7 +77,7 @@ struct _LassoProfile {
LassoNode *request;
LassoNode *response;
- gchar *nameIdentifier; /* XXX: shouldn't it be LassoSamlNameIdentifier ? */
+ LassoSamlNameIdentifier *nameIdentifier;
gchar *remote_providerID;
diff --git a/swig/Lasso.i b/swig/Lasso.i
index 2ef10ac0..73cbbd32 100644
--- a/swig/Lasso.i
+++ b/swig/Lasso.i
@@ -1510,7 +1510,9 @@ gchar *LassoDefederation_msgUrl_get(LassoDefederation *self) {
/* nameIdentifier */
#define LassoDefederation_get_nameIdentifier LassoDefederation_nameIdentifier_get
gchar *LassoDefederation_nameIdentifier_get(LassoDefederation *self) {
- return LASSO_PROFILE(self)->nameIdentifier;
+ if (LASSO_PROFILE(self)->nameIdentifier)
+ return g_strdup(LASSO_PROFILE(self)->nameIdentifier->content);
+ return NULL;
}
/* remoteProviderId */
@@ -1795,7 +1797,9 @@ gchar *LassoLogin_msgUrl_get(LassoLogin *self) {
/* nameIdentifier */
#define LassoLogin_get_nameIdentifier LassoLogin_nameIdentifier_get
gchar *LassoLogin_nameIdentifier_get(LassoLogin *self) {
- return LASSO_PROFILE(self)->nameIdentifier;
+ if (LASSO_PROFILE(self)->nameIdentifier)
+ return g_strdup(LASSO_PROFILE(self)->nameIdentifier->content);
+ return NULL;
}
/* remoteProviderId */
@@ -2044,7 +2048,9 @@ gchar *LassoLogout_msgUrl_get(LassoLogout *self) {
/* nameIdentifier */
#define LassoLogout_get_nameIdentifier LassoLogout_nameIdentifier_get
gchar *LassoLogout_nameIdentifier_get(LassoLogout *self) {
- return LASSO_PROFILE(self)->nameIdentifier;
+ if (LASSO_PROFILE(self)->nameIdentifier)
+ return g_strdup(LASSO_PROFILE(self)->nameIdentifier->content);
+ return NULL;
}
/* remoteProviderId */
@@ -2309,7 +2315,9 @@ gchar *LassoLecp_msgUrl_get(LassoLecp *self) {
/* nameIdentifier */
#define LassoLecp_get_nameIdentifier LassoLecp_nameIdentifier_get
gchar *LassoLecp_nameIdentifier_get(LassoLecp *self) {
- return LASSO_PROFILE(self)->nameIdentifier;
+ if (LASSO_PROFILE(self)->nameIdentifier)
+ return g_strdup(LASSO_PROFILE(self)->nameIdentifier->content);
+ return NULL;
}
/* remoteProviderId */
@@ -2519,7 +2527,9 @@ gchar *LassoNameIdentifierMapping_msgUrl_get(LassoNameIdentifierMapping *self) {
/* nameIdentifier */
#define LassoNameIdentifierMapping_get_nameIdentifier LassoNameIdentifierMapping_nameIdentifier_get
gchar *LassoNameIdentifierMapping_nameIdentifier_get(LassoNameIdentifierMapping *self) {
- return LASSO_PROFILE(self)->nameIdentifier;
+ if (LASSO_PROFILE(self)->nameIdentifier)
+ return g_strdup(LASSO_PROFILE(self)->nameIdentifier->content);
+ return NULL;
}
/* targetNameIdentifier */
@@ -2724,13 +2734,17 @@ gchar *LassoNameRegistration_msgUrl_get(LassoNameRegistration *self) {
/* nameIdentifier */
#define LassoNameRegistration_get_nameIdentifier LassoNameRegistration_nameIdentifier_get
gchar *LassoNameRegistration_nameIdentifier_get(LassoNameRegistration *self) {
- return LASSO_PROFILE(self)->nameIdentifier;
+ if (LASSO_PROFILE(self)->nameIdentifier)
+ return g_strdup(LASSO_PROFILE(self)->nameIdentifier->content);
+ return NULL;
}
/* oldNameIdentifier */
#define LassoNameRegistration_get_oldNameIdentifier LassoNameRegistration_oldNameIdentifier_get
gchar *LassoNameRegistration_oldNameIdentifier_get(LassoNameRegistration *self) {
- return self->oldNameIdentifier;
+ if (self->oldNameIdentifier)
+ return g_strdup(self->oldNameIdentifier->content);
+ return NULL;
}
/* remoteProviderId */