summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2004-11-01 18:23:20 +0000
committerFrederic Peters <fpeters@entrouvert.com>2004-11-01 18:23:20 +0000
commit34dd2e5653f0ed661de3a6d702e3b6655218c8f5 (patch)
treef6bcda05d547b09b28229cc8d50690bdab4997e9
parent2a5761ccbdd0375677b4621ea85e3eba8d7466e4 (diff)
LECP converted to new tree
-rw-r--r--lasso/id-ff/lecp.c510
-rw-r--r--lasso/id-ff/lecp.h49
-rw-r--r--lasso/id-ff/login.c2
-rw-r--r--lasso/id-ff/login.h4
-rw-r--r--lasso/xml/lib_authn_request_envelope.c17
-rw-r--r--lasso/xml/lib_authn_request_envelope.h8
-rw-r--r--lasso/xml/lib_authn_response_envelope.c4
-rw-r--r--lasso/xml/lib_authn_response_envelope.h4
8 files changed, 298 insertions, 300 deletions
diff --git a/lasso/id-ff/lecp.c b/lasso/id-ff/lecp.c
index 90f87ed3..08bf2bee 100644
--- a/lasso/id-ff/lecp.c
+++ b/lasso/id-ff/lecp.c
@@ -25,8 +25,6 @@
#include <lasso/environs/lecp.h>
-static GObjectClass *parent_class = NULL;
-
/*****************************************************************************/
/* public methods */
/*****************************************************************************/
@@ -34,45 +32,42 @@ static GObjectClass *parent_class = NULL;
gint
lasso_lecp_build_authn_request_envelope_msg(LassoLecp *lecp)
{
- LassoProfile *profile;
- gchar *assertionConsumerServiceURL;
-
- g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
-
- profile = LASSO_PROFILE(lecp);
-
- assertionConsumerServiceURL = lasso_provider_get_metadata_one(
- LASSO_PROVIDER(profile->server), "AssertionConsumerServiceURL");
- if (assertionConsumerServiceURL == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "AssertionConsumerServiceURL not found");
- return -1;
- }
-
- if (profile->request == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "AuthnRequest not found");
- return -1;
- }
-
-#if 0
- lecp->authnRequestEnvelope = lasso_authn_request_envelope_new(
- LASSO_LIB_AUTHN_REQUEST(profile->request),
- LASSO_PROVIDER(profile->server)->ProviderID,
- assertionConsumerServiceURL);
-#endif
- if (lecp->authnRequestEnvelope == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Error while building AuthnRequestEnvelope");
- return -1;
- }
-
-#if 0 /* XXX: dump to xml ? */
- profile->msg_body = lasso_node_export(lecp->authnRequestEnvelope);
-#endif
- if (profile->msg_body == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Error while exporting the AuthnRequestEnvelope to POST msg");
- return -1;
- }
-
- return 0;
+ LassoProfile *profile;
+ gchar *assertionConsumerServiceURL;
+
+ g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
+
+ profile = LASSO_PROFILE(lecp);
+
+ assertionConsumerServiceURL = lasso_provider_get_metadata_one(
+ LASSO_PROVIDER(profile->server), "AssertionConsumerServiceURL");
+ if (assertionConsumerServiceURL == NULL) {
+ message(G_LOG_LEVEL_CRITICAL, "AssertionConsumerServiceURL not found");
+ return -1;
+ }
+
+ if (profile->request == NULL) {
+ message(G_LOG_LEVEL_CRITICAL, "AuthnRequest not found");
+ return -1;
+ }
+
+ lecp->authnRequestEnvelope = lasso_lib_authn_request_envelope_new_full(
+ LASSO_LIB_AUTHN_REQUEST(profile->request),
+ LASSO_PROVIDER(profile->server)->ProviderID,
+ assertionConsumerServiceURL);
+ if (lecp->authnRequestEnvelope == NULL) {
+ message(G_LOG_LEVEL_CRITICAL, "Error while building AuthnRequestEnvelope");
+ return -1;
+ }
+
+ profile->msg_body = lasso_node_dump(LASSO_NODE(lecp->authnRequestEnvelope), "utf-8", 0);
+ if (profile->msg_body == NULL) {
+ message(G_LOG_LEVEL_CRITICAL,
+ "Error while exporting the AuthnRequestEnvelope to POST msg");
+ return -1;
+ }
+
+ return 0;
}
/**
@@ -86,234 +81,227 @@ lasso_lecp_build_authn_request_envelope_msg(LassoLecp *lecp)
*
* Return value: 0 on success and a negative value otherwise.
**/
-gint
-lasso_lecp_build_authn_request_msg(LassoLecp *lecp,
- const gchar *remote_providerID)
+int
+lasso_lecp_build_authn_request_msg(LassoLecp *lecp, const char *remote_providerID)
{
- LassoProfile *profile;
- LassoProvider *remote_provider;
-
- g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
-
- profile = LASSO_PROFILE(lecp);
- if (remote_providerID == NULL) {
-/* profile->remote_providerID = lasso_server_get_first_providerID(profile->server); */
- }
- else {
- profile->remote_providerID = g_strdup(remote_providerID);
- }
-
- remote_provider = g_hash_table_lookup(profile->server->providers, profile->remote_providerID);
-
- profile->msg_url = lasso_provider_get_metadata_one(remote_provider, "SingleSignOnServiceURL");
- profile->msg_body = lasso_node_export_to_soap(profile->request, NULL, NULL);
- if (profile->msg_body == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Error while building the AuthnRequest SOAP message");
- return -1;
- }
-
- return 0;
+ LassoProfile *profile;
+ LassoProvider *remote_provider;
+
+ g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
+
+ profile = LASSO_PROFILE(lecp);
+ if (remote_providerID == NULL) {
+ profile->remote_providerID = lasso_server_get_first_providerID(profile->server);
+ } else {
+ profile->remote_providerID = g_strdup(remote_providerID);
+ }
+
+ remote_provider = g_hash_table_lookup(profile->server->providers,
+ profile->remote_providerID);
+
+ profile->msg_url = lasso_provider_get_metadata_one(
+ remote_provider, "SingleSignOnServiceURL");
+ profile->msg_body = lasso_node_export_to_soap(profile->request, NULL, NULL);
+ if (profile->msg_body == NULL) {
+ message(G_LOG_LEVEL_CRITICAL,
+ "Error while building the AuthnRequest SOAP message");
+ return -1;
+ }
+
+ return 0;
}
-gint
+int
lasso_lecp_build_authn_response_msg(LassoLecp *lecp)
{
- LassoProfile *profile;
-
- g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
-
- profile = LASSO_PROFILE(lecp);
- profile->msg_url = g_strdup(lecp->assertionConsumerServiceURL);
- if (profile->msg_url == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "AssertionConsumerServiceURL not found");
- return -1;
- }
- profile->msg_body = lasso_node_export_to_base64(profile->response);
- if (profile->msg_body == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "AuthnResponse Base64 msg not found");
- return -1;
- }
-
- return 0;
+ LassoProfile *profile;
+
+ g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
+
+ profile = LASSO_PROFILE(lecp);
+ profile->msg_url = g_strdup(lecp->assertionConsumerServiceURL);
+ if (profile->msg_url == NULL) {
+ message(G_LOG_LEVEL_CRITICAL, "AssertionConsumerServiceURL not found");
+ return -1;
+ }
+ profile->msg_body = lasso_node_export_to_base64(profile->response);
+ if (profile->msg_body == NULL) {
+ message(G_LOG_LEVEL_CRITICAL, "AuthnResponse Base64 msg not found");
+ return -1;
+ }
+
+ return 0;
}
gint
lasso_lecp_build_authn_response_envelope_msg(LassoLecp *lecp,
gint authentication_result,
- gboolean is_consent_obtained,
+ gboolean is_consent_obtained,
const char *authenticationMethod,
const char *authenticationInstant,
const char *reauthenticateOnOrAfter,
const char *notBefore,
const char *notOnOrAfter)
{
- LassoProfile *profile;
- LassoProvider *provider;
- gchar *assertionConsumerServiceURL;
-
- g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
-
- profile = LASSO_PROFILE(lecp);
-
- if (LASSO_IS_LIB_AUTHN_RESPONSE(profile->response) == FALSE) {
- message(G_LOG_LEVEL_CRITICAL, "AuthnResponse not found");
- return -1;
- }
-
- provider = g_hash_table_lookup(profile->server->providers, profile->remote_providerID);
- if (provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Provider %s not found", profile->remote_providerID);
- return -1;
- }
-
- /* build lib:AuthnResponse */
- lasso_login_build_authn_response_msg(LASSO_LOGIN(lecp),
- authentication_result,
- is_consent_obtained,
- authenticationMethod,
- authenticationInstant,
- reauthenticateOnOrAfter,
- notBefore,
- notOnOrAfter);
-
- assertionConsumerServiceURL = lasso_provider_get_metadata_one(
- provider, "AssertionConsumerServiceURL");
- if (assertionConsumerServiceURL == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "AssertionConsumerServiceURL not found");
- return -1;
- }
-
- xmlFree(LASSO_PROFILE(lecp)->msg_body);
- LASSO_PROFILE(lecp)->msg_body = NULL;
- xmlFree(LASSO_PROFILE(lecp)->msg_url);
- LASSO_PROFILE(lecp)->msg_url = NULL;
- lecp->authnResponseEnvelope = lasso_lib_authn_response_envelope_new(
- LASSO_LIB_AUTHN_RESPONSE(profile->response),
- assertionConsumerServiceURL);
- LASSO_PROFILE(lecp)->msg_body = lasso_node_export_to_soap(lecp->authnResponseEnvelope, NULL, NULL);
-
- if (LASSO_PROFILE(lecp)->msg_body == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Error while exporting the AuthnResponseEnvelope to SOAP msg");
- return -1;
- }
-
- return 0;
+ LassoProfile *profile;
+ LassoProvider *provider;
+ gchar *assertionConsumerServiceURL;
+
+ g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
+
+ profile = LASSO_PROFILE(lecp);
+
+ if (LASSO_IS_LIB_AUTHN_RESPONSE(profile->response) == FALSE) {
+ message(G_LOG_LEVEL_CRITICAL, "AuthnResponse not found");
+ return -1;
+ }
+
+ provider = g_hash_table_lookup(profile->server->providers, profile->remote_providerID);
+ if (provider == NULL) {
+ message(G_LOG_LEVEL_CRITICAL, "Provider %s not found", profile->remote_providerID);
+ return -1;
+ }
+
+ /* build lib:AuthnResponse */
+ lasso_login_build_authn_response_msg(LASSO_LOGIN(lecp),
+ authentication_result, is_consent_obtained,
+ authenticationMethod, authenticationInstant, reauthenticateOnOrAfter,
+ notBefore, notOnOrAfter);
+
+ assertionConsumerServiceURL = lasso_provider_get_metadata_one(
+ provider, "AssertionConsumerServiceURL");
+ if (assertionConsumerServiceURL == NULL) {
+ message(G_LOG_LEVEL_CRITICAL, "AssertionConsumerServiceURL not found");
+ return -1;
+ }
+
+ if (LASSO_PROFILE(lecp)->msg_body)
+ g_free(LASSO_PROFILE(lecp)->msg_body);
+
+ if (LASSO_PROFILE(lecp)->msg_url)
+ g_free(LASSO_PROFILE(lecp)->msg_url);
+
+ lecp->authnResponseEnvelope = lasso_lib_authn_response_envelope_new(
+ LASSO_LIB_AUTHN_RESPONSE(profile->response),
+ assertionConsumerServiceURL);
+ LASSO_PROFILE(lecp)->msg_body = lasso_node_export_to_soap(
+ LASSO_NODE(lecp->authnResponseEnvelope), NULL, NULL);
+
+ if (LASSO_PROFILE(lecp)->msg_body == NULL) {
+ message(G_LOG_LEVEL_CRITICAL,
+ "Error while exporting the AuthnResponseEnvelope to SOAP msg");
+ return -1;
+ }
+
+ return 0;
}
-gint
+int
lasso_lecp_init_authn_request(LassoLecp *lecp)
{
- gint res;
+ gint res;
- g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
+ g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
- /* FIXME : BAD usage of http_method
- using POST method so that the lib:AuthnRequest is initialize with
- a signature template */
- res = lasso_login_init_authn_request(LASSO_LOGIN(lecp), LASSO_HTTP_METHOD_POST);
+ /* FIXME : BAD usage of http_method
+ using POST method so that the lib:AuthnRequest is initialize with
+ a signature template */
+ res = lasso_login_init_authn_request(LASSO_LOGIN(lecp), LASSO_HTTP_METHOD_POST);
- return res;
+ return res;
}
-gint
-lasso_lecp_process_authn_request_msg(LassoLecp *lecp,
- gchar *authn_request_msg)
+int
+lasso_lecp_process_authn_request_msg(LassoLecp *lecp, const char *authn_request_msg)
{
- lassoHttpMethod authn_request_method = 0; /* XXX: update to CVS */
- gint res;
-
- g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
- g_return_val_if_fail(authn_request_msg!=NULL, -1);
-
- if (authn_request_method != LASSO_HTTP_METHOD_SOAP) {
- message(G_LOG_LEVEL_CRITICAL, "Invalid authentication request method");
- return -1;
- }
- res = lasso_login_process_authn_request_msg(LASSO_LOGIN(lecp), authn_request_msg);
- return res;
+ g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
+ g_return_val_if_fail(authn_request_msg != NULL, -1);
+
+ return lasso_login_process_authn_request_msg(LASSO_LOGIN(lecp), authn_request_msg);
}
-gint
-lasso_lecp_process_authn_request_envelope_msg(LassoLecp *lecp,
- gchar *request_msg)
+int
+lasso_lecp_process_authn_request_envelope_msg(LassoLecp *lecp, const char *request_msg)
{
- g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
- g_return_val_if_fail(request_msg!=NULL, -1);
-
-#if 0 /* XXX */
- lecp->authnRequestEnvelope = lasso_authn_request_envelope_new_from_export(request_msg, LASSO_NODE_EXPORT_TYPE_XML);
-#endif
- if (lecp->authnRequestEnvelope == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Error while building the authentication request envelope");
- return -1;
- }
-
-#if 0
- LASSO_PROFILE(lecp)->request = lasso_authn_request_envelope_get_authnRequest(LASSO_AUTHN_REQUEST_ENVELOPE(lecp->authnRequestEnvelope));
-#endif
- if (LASSO_PROFILE(lecp)->request == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "AuthnRequest not found");
- return -1;
- }
-
- return 0;
+ LassoMessageFormat format;
+
+ g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
+ g_return_val_if_fail(request_msg!=NULL, -1);
+
+ lecp->authnRequestEnvelope = lasso_lib_authn_request_envelope_new();
+ format = lasso_node_init_from_message(LASSO_NODE(lecp->authnRequestEnvelope), request_msg);
+ if (format != LASSO_MESSAGE_FORMAT_XML) {
+ message(G_LOG_LEVEL_CRITICAL,
+ "Error while building the authentication request envelope");
+ return -1;
+ }
+
+ LASSO_PROFILE(lecp)->request = LASSO_NODE(g_object_ref(
+ lecp->authnRequestEnvelope->AuthnRequest));
+ if (LASSO_PROFILE(lecp)->request == NULL) {
+ message(G_LOG_LEVEL_CRITICAL, "AuthnRequest not found");
+ return -1;
+ }
+
+ return 0;
}
-gint
-lasso_lecp_process_authn_response_envelope_msg(LassoLecp *lecp,
- gchar *response_msg)
+int
+lasso_lecp_process_authn_response_envelope_msg(LassoLecp *lecp, const char *response_msg)
{
- LassoProfile *profile;
-
- g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
- g_return_val_if_fail(response_msg!=NULL, -2);
-
- profile = LASSO_PROFILE(lecp);
-
- lecp->authnResponseEnvelope = lasso_lib_authn_response_envelope_new(NULL, NULL);
- lasso_node_init_from_message(lecp->authnResponseEnvelope, response_msg);
- if (lecp->authnResponseEnvelope == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Error while building AuthnResponseEnvelope");
- return -1;
- }
-
-#if 0 /* XXX */
- profile->response = lasso_authn_response_envelope_get_authnResponse(LASSO_AUTHN_RESPONSE_ENVELOPE(lecp->authnResponseEnvelope));
- if (profile->response == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "AuthnResponse not found");
- return -1;
- }
-#endif
-
-#if 0 /* XXX */
- lecp->assertionConsumerServiceURL = lasso_authn_response_envelope_get_assertionConsumerServiceURL(
- LASSO_AUTHN_RESPONSE_ENVELOPE(lecp->authnResponseEnvelope));
- if (lecp->assertionConsumerServiceURL == NULL){
- message(G_LOG_LEVEL_CRITICAL, "AssertionConsumerServiceURL not found");
- return -1;
- }
-#endif
-
- return 0;
+ LassoProfile *profile;
+ LassoMessageFormat format;
+
+ g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
+ g_return_val_if_fail(response_msg!=NULL, -2);
+
+ profile = LASSO_PROFILE(lecp);
+
+ lecp->authnResponseEnvelope = lasso_lib_authn_response_envelope_new(NULL, NULL);
+ format = lasso_node_init_from_message(LASSO_NODE(lecp->authnResponseEnvelope),
+ response_msg);
+ if (format == LASSO_MESSAGE_FORMAT_UNKNOWN) {
+ message(G_LOG_LEVEL_CRITICAL, "Error while building AuthnResponseEnvelope");
+ return -1;
+ }
+
+ profile->response = g_object_ref(lecp->authnResponseEnvelope->AuthnResponse);
+ if (profile->response == NULL) {
+ message(G_LOG_LEVEL_CRITICAL, "AuthnResponse not found");
+ return -1;
+ }
+
+ lecp->assertionConsumerServiceURL = g_strdup(
+ lecp->authnResponseEnvelope->AssertionConsumerServiceURL);
+ if (lecp->assertionConsumerServiceURL == NULL){
+ message(G_LOG_LEVEL_CRITICAL, "AssertionConsumerServiceURL not found");
+ return -1;
+ }
+
+ return 0;
}
void
lasso_lecp_destroy(LassoLecp *lecp)
{
- g_object_unref(G_OBJECT(lecp));
+ g_object_unref(G_OBJECT(lecp));
}
+/*****************************************************************************/
+/* private methods */
+/*****************************************************************************/
+
+static LassoNodeClass *parent_class = NULL;
/*****************************************************************************/
/* overrided parent class methods */
/*****************************************************************************/
static void
-lasso_lecp_finalize(LassoLecp *lecp)
+finalize(GObject *object)
{
- debug("Lecp object 0x%x finalized ...", lecp);
-
- parent_class->finalize(G_OBJECT(lecp));
+ debug("Lecp object 0x%x finalized ...", object);
+ G_OBJECT_CLASS(parent_class)->finalize(object);
}
/*****************************************************************************/
@@ -321,58 +309,52 @@ lasso_lecp_finalize(LassoLecp *lecp)
/*****************************************************************************/
static void
-lasso_lecp_instance_init(LassoLecp *lecp)
+instance_init(LassoLecp *lecp)
{
- lecp->authnRequestEnvelope = NULL;
- lecp->authnResponseEnvelope = NULL;
- lecp->assertionConsumerServiceURL = NULL;
+ lecp->authnRequestEnvelope = NULL;
+ lecp->authnResponseEnvelope = NULL;
+ lecp->assertionConsumerServiceURL = NULL;
}
static void
-lasso_lecp_class_init(LassoLecpClass *class)
+class_init(LassoLecpClass *klass)
{
- GObjectClass *gobject_class = G_OBJECT_CLASS(class);
-
- parent_class = g_type_class_peek_parent(class);
- /* override parent class methods */
- gobject_class->finalize = (void *)lasso_lecp_finalize;
+ parent_class = g_type_class_peek_parent(klass);
+
+ G_OBJECT_CLASS(klass)->finalize = finalize;
}
-GType lasso_lecp_get_type() {
- static GType this_type = 0;
-
- if (!this_type) {
- static const GTypeInfo this_info = {
- sizeof (LassoLecpClass),
- NULL,
- NULL,
- (GClassInitFunc) lasso_lecp_class_init,
- NULL,
- NULL,
- sizeof(LassoLecp),
- 0,
- (GInstanceInitFunc) lasso_lecp_instance_init,
- };
-
- this_type = g_type_register_static(LASSO_TYPE_LOGIN,
- "LassoLecp",
- &this_info, 0);
- }
- return this_type;
+GType
+lasso_lecp_get_type()
+{
+ static GType this_type = 0;
+
+ if (!this_type) {
+ static const GTypeInfo this_info = {
+ sizeof (LassoLecpClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) class_init,
+ NULL,
+ NULL,
+ sizeof(LassoLecp),
+ 0,
+ (GInstanceInitFunc) instance_init,
+ };
+
+ this_type = g_type_register_static(LASSO_TYPE_LOGIN,
+ "LassoLecp", &this_info, 0);
+ }
+ return this_type;
}
-LassoLecp *
+LassoLecp*
lasso_lecp_new(LassoServer *server)
{
- LassoLecp *lecp;
-
- lecp = g_object_new(LASSO_TYPE_LECP, NULL);
+ LassoLecp *lecp;
- if (LASSO_IS_SERVER(server)) {
- debug("Add server to lecp object");
- /* XXX LASSO_PROFILE(lecp)->server = lasso_server_copy(server); */
- }
-
+ lecp = g_object_new(LASSO_TYPE_LECP, NULL);
+ LASSO_PROFILE(lecp)->server = server;
- return lecp;
+ return lecp;
}
diff --git a/lasso/id-ff/lecp.h b/lasso/id-ff/lecp.h
index 0316d6e5..44024792 100644
--- a/lasso/id-ff/lecp.h
+++ b/lasso/id-ff/lecp.h
@@ -48,53 +48,50 @@ typedef struct _LassoLecp LassoLecp;
typedef struct _LassoLecpClass LassoLecpClass;
struct _LassoLecp {
- LassoLogin parent;
+ LassoLogin parent;
- /*< public >*/
- LassoNode *authnRequestEnvelope;
- LassoNode *authnResponseEnvelope;
+ LassoLibAuthnRequestEnvelope *authnRequestEnvelope;
+ LassoLibAuthnResponseEnvelope *authnResponseEnvelope;
- gchar *assertionConsumerServiceURL;
-
- /*< private >*/
+ char *assertionConsumerServiceURL;
};
struct _LassoLecpClass {
- LassoLoginClass parent_class;
+ LassoLoginClass parent_class;
};
-LASSO_EXPORT GType lasso_lecp_get_type (void);
+LASSO_EXPORT GType lasso_lecp_get_type(void);
-LASSO_EXPORT LassoLecp* lasso_lecp_new (LassoServer *server);
+LASSO_EXPORT LassoLecp* lasso_lecp_new(LassoServer *server);
-LASSO_EXPORT gint lasso_lecp_build_authn_request_envelope_msg (LassoLecp *lecp);
+LASSO_EXPORT int lasso_lecp_build_authn_request_envelope_msg(LassoLecp *lecp);
-LASSO_EXPORT gint lasso_lecp_build_authn_request_msg (LassoLecp *lecp,
- const gchar *remote_providerID);
+LASSO_EXPORT int lasso_lecp_build_authn_request_msg(LassoLecp *lecp,
+ const char *remote_providerID);
-LASSO_EXPORT gint lasso_lecp_build_authn_response_msg (LassoLecp *lecp);
+LASSO_EXPORT int lasso_lecp_build_authn_response_msg(LassoLecp *lecp);
-LASSO_EXPORT gint lasso_lecp_build_authn_response_envelope_msg(LassoLecp *lecp,
- gint authentication_result,
- gboolean is_consent_obtained,
+LASSO_EXPORT int lasso_lecp_build_authn_response_envelope_msg(LassoLecp *lecp,
+ int authentication_result,
+ gboolean is_consent_obtained,
const char *authenticationMethod,
const char *authenticationInstant,
const char *reauthenticateOnOrAfter,
const char *notBefore,
const char *notOnOrAfter);
-LASSO_EXPORT void lasso_lecp_destroy (LassoLecp *lecp);
+LASSO_EXPORT void lasso_lecp_destroy(LassoLecp *lecp);
+
+LASSO_EXPORT int lasso_lecp_init_authn_request(LassoLecp *lecp);
-LASSO_EXPORT gint lasso_lecp_init_authn_request (LassoLecp *lecp);
+LASSO_EXPORT int lasso_lecp_process_authn_request_msg(LassoLecp *lecp,
+ const char *authn_request_msg);
-LASSO_EXPORT gint lasso_lecp_process_authn_request_msg (LassoLecp *lecp,
- gchar *authn_request_msg);
+LASSO_EXPORT int lasso_lecp_process_authn_request_envelope_msg(LassoLecp *lecp,
+ const char *request_msg);
-LASSO_EXPORT gint lasso_lecp_process_authn_request_envelope_msg (LassoLecp *lecp,
- gchar *request_msg);
-
-LASSO_EXPORT gint lasso_lecp_process_authn_response_envelope_msg (LassoLecp *lecp,
- gchar *response_msg);
+LASSO_EXPORT int lasso_lecp_process_authn_response_envelope_msg(LassoLecp *lecp,
+ const char *response_msg);
#ifdef __cplusplus
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index 167e01e8..723b587e 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -1077,7 +1077,7 @@ lasso_login_must_authenticate(LassoLogin *login)
}
gint
-lasso_login_process_authn_request_msg(LassoLogin *login, gchar *authn_request_msg)
+lasso_login_process_authn_request_msg(LassoLogin *login, const char *authn_request_msg)
{
lassoHttpMethod authn_request_http_method; /* XXX update to current CVS code */
LassoProvider *remote_provider;
diff --git a/lasso/id-ff/login.h b/lasso/id-ff/login.h
index 764f78e6..6b6d44d0 100644
--- a/lasso/id-ff/login.h
+++ b/lasso/id-ff/login.h
@@ -124,8 +124,8 @@ LASSO_EXPORT gboolean lasso_login_must_ask_for_consent (LassoLogin *log
LASSO_EXPORT gboolean lasso_login_must_authenticate (LassoLogin *login);
-LASSO_EXPORT gint lasso_login_process_authn_request_msg (LassoLogin *login,
- gchar *authn_request_msg);
+LASSO_EXPORT int lasso_login_process_authn_request_msg (LassoLogin *login,
+ const char *authn_request_msg);
LASSO_EXPORT gint lasso_login_process_authn_response_msg (LassoLogin *login,
gchar *authn_response_msg);
diff --git a/lasso/xml/lib_authn_request_envelope.c b/lasso/xml/lib_authn_request_envelope.c
index d31b155f..6ebf2266 100644
--- a/lasso/xml/lib_authn_request_envelope.c
+++ b/lasso/xml/lib_authn_request_envelope.c
@@ -184,8 +184,23 @@ lasso_lib_authn_request_envelope_get_type()
return this_type;
}
-LassoNode*
+LassoLibAuthnRequestEnvelope*
lasso_lib_authn_request_envelope_new()
{
return g_object_new(LASSO_TYPE_LIB_AUTHN_REQUEST_ENVELOPE, NULL);
}
+
+LassoLibAuthnRequestEnvelope*
+lasso_lib_authn_request_envelope_new_full(LassoLibAuthnRequest *authnRequest,
+ char *providerID, char *assertionConsumerServiceURL)
+{
+ LassoLibAuthnRequestEnvelope *request;
+
+ request = g_object_new(LASSO_TYPE_LIB_AUTHN_REQUEST_ENVELOPE, NULL);
+ request->AuthnRequest = g_object_ref(authnRequest);
+ request->ProviderID = g_strdup(providerID);
+ request->AssertionConsumerServiceURL = g_strdup(assertionConsumerServiceURL);
+
+ return request;
+}
+
diff --git a/lasso/xml/lib_authn_request_envelope.h b/lasso/xml/lib_authn_request_envelope.h
index 8f4b5f39..1575aa93 100644
--- a/lasso/xml/lib_authn_request_envelope.h
+++ b/lasso/xml/lib_authn_request_envelope.h
@@ -68,8 +68,12 @@ struct _LassoLibAuthnRequestEnvelopeClass {
LassoNodeClass parent;
};
-LASSO_EXPORT GType lasso_lib_authn_request_envelope_get_type (void);
-LASSO_EXPORT LassoNode* lasso_lib_authn_request_envelope_new (void);
+LASSO_EXPORT GType lasso_lib_authn_request_envelope_get_type(void);
+LASSO_EXPORT LassoLibAuthnRequestEnvelope* lasso_lib_authn_request_envelope_new(void);
+
+LASSO_EXPORT LassoLibAuthnRequestEnvelope* lasso_lib_authn_request_envelope_new_full(
+ LassoLibAuthnRequest *authnRequest,
+ char *providerID, char *assertionConsumerServiceURL);
#ifdef __cplusplus
}
diff --git a/lasso/xml/lib_authn_response_envelope.c b/lasso/xml/lib_authn_response_envelope.c
index 8fe4e9a1..085ba701 100644
--- a/lasso/xml/lib_authn_response_envelope.c
+++ b/lasso/xml/lib_authn_response_envelope.c
@@ -130,7 +130,7 @@ lasso_lib_authn_response_envelope_get_type()
return this_type;
}
-LassoNode*
+LassoLibAuthnResponseEnvelope*
lasso_lib_authn_response_envelope_new(LassoLibAuthnResponse *response,
char *assertionConsumerServiceURL)
{
@@ -142,6 +142,6 @@ lasso_lib_authn_response_envelope_new(LassoLibAuthnResponse *response,
envelope->AssertionConsumerServiceURL = g_strdup(assertionConsumerServiceURL);
}
- return LASSO_NODE(envelope);
+ return envelope;
}
diff --git a/lasso/xml/lib_authn_response_envelope.h b/lasso/xml/lib_authn_response_envelope.h
index f3a6721e..4fd15d46 100644
--- a/lasso/xml/lib_authn_response_envelope.h
+++ b/lasso/xml/lib_authn_response_envelope.h
@@ -54,8 +54,8 @@ struct _LassoLibAuthnResponseEnvelopeClass {
LassoNodeClass parent;
};
-LASSO_EXPORT GType lasso_lib_authn_response_envelope_get_type (void);
-LASSO_EXPORT LassoNode* lasso_lib_authn_response_envelope_new(
+LASSO_EXPORT GType lasso_lib_authn_response_envelope_get_type (void);
+LASSO_EXPORT LassoLibAuthnResponseEnvelope* lasso_lib_authn_response_envelope_new(
LassoLibAuthnResponse *response,
char *assertionConsumerServiceURL);