diff options
| author | Frederic Peters <fpeters@entrouvert.com> | 2004-11-01 18:23:20 +0000 |
|---|---|---|
| committer | Frederic Peters <fpeters@entrouvert.com> | 2004-11-01 18:23:20 +0000 |
| commit | 34dd2e5653f0ed661de3a6d702e3b6655218c8f5 (patch) | |
| tree | f6bcda05d547b09b28229cc8d50690bdab4997e9 | |
| parent | 2a5761ccbdd0375677b4621ea85e3eba8d7466e4 (diff) | |
LECP converted to new tree
| -rw-r--r-- | lasso/id-ff/lecp.c | 510 | ||||
| -rw-r--r-- | lasso/id-ff/lecp.h | 49 | ||||
| -rw-r--r-- | lasso/id-ff/login.c | 2 | ||||
| -rw-r--r-- | lasso/id-ff/login.h | 4 | ||||
| -rw-r--r-- | lasso/xml/lib_authn_request_envelope.c | 17 | ||||
| -rw-r--r-- | lasso/xml/lib_authn_request_envelope.h | 8 | ||||
| -rw-r--r-- | lasso/xml/lib_authn_response_envelope.c | 4 | ||||
| -rw-r--r-- | lasso/xml/lib_authn_response_envelope.h | 4 |
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); |
