diff options
-rw-r--r-- | lasso/id-ff/lecp.c | 24 | ||||
-rw-r--r-- | lasso/id-ff/lecp.h | 4 | ||||
-rw-r--r-- | python/environs/py_lecp.c | 23 |
3 files changed, 26 insertions, 25 deletions
diff --git a/lasso/id-ff/lecp.c b/lasso/id-ff/lecp.c index 634847b6..88d4de43 100644 --- a/lasso/id-ff/lecp.c +++ b/lasso/id-ff/lecp.c @@ -97,19 +97,24 @@ lasso_lecp_destroy(LassoLecp *lecp) gint lasso_lecp_init_authn_request_envelope(LassoLecp *lecp, - LassoServer *server, LassoAuthnRequest *authnRequest) { gchar *assertionConsumerServiceURL; g_return_val_if_fail(LASSO_IS_LECP(lecp), -1); + g_return_val_if_fail(LASSO_IS_AUTHN_REQUEST(authnRequest), -1); - assertionConsumerServiceURL = lasso_provider_get_assertionConsumerServiceURL(LASSO_PROVIDER(server), + assertionConsumerServiceURL = lasso_provider_get_assertionConsumerServiceURL(LASSO_PROVIDER(lecp->server), lassoProviderTypeSp, NULL); + if(assertionConsumerServiceURL==NULL){ + message(G_LOG_LEVEL_CRITICAL, "AssertionConsumerServiceURL not found\n"); + return(-1); + } + lecp->request = lasso_authn_request_envelope_new(authnRequest, - server->providerID, + lecp->server->providerID, assertionConsumerServiceURL); if(lecp->request==NULL){ message(G_LOG_LEVEL_CRITICAL, "Error while building request\n"); @@ -123,7 +128,6 @@ lasso_lecp_init_authn_request_envelope(LassoLecp *lecp, gint lasso_lecp_init_authn_response_envelope(LassoLecp *lecp, - LassoServer *server, LassoAuthnRequest *authnRequest, LassoAuthnResponse *authnResponse) { @@ -133,7 +137,6 @@ lasso_lecp_init_authn_response_envelope(LassoLecp *lecp, g_return_val_if_fail(LASSO_IS_LECP(lecp), -1); g_return_val_if_fail(LASSO_IS_AUTHN_REQUEST(authnRequest), -1); - lecp->server = lasso_server_copy(server); providerID = lasso_node_get_child_content(LASSO_NODE(authnRequest), "ProviderID", NULL, NULL); if(providerID == NULL) { @@ -187,15 +190,12 @@ lasso_lecp_process_authn_response_envelope_msg(LassoLecp *lecp, g_return_val_if_fail(LASSO_IS_LECP(lecp), -1); g_return_val_if_fail(response_msg!=NULL, -2); - printf("------------------- process authn response : %s\n", response_msg); lecp->response = lasso_authn_response_envelope_new_from_export(response_msg, lassoNodeExportTypeSoap); if (lecp->response == NULL) { message(G_LOG_LEVEL_CRITICAL, "Error while building the authentication response envelope\n"); return(-3); } - printf("apres new_from_dump : %s\n", lasso_node_export(lecp->response)); - lecp->authnResponse = lasso_authn_response_envelope_get_authnResponse(LASSO_AUTHN_RESPONSE_ENVELOPE(lecp->response)); if (lecp->authnResponse == NULL) { message(G_LOG_LEVEL_CRITICAL, "AuthnResponse not found\n"); @@ -231,6 +231,7 @@ lasso_lecp_finalize(LassoLecp *lecp) static void lasso_lecp_instance_init(LassoLecp *lecp) { + lecp->server = NULL; lecp->request = NULL; lecp->authnRequest = NULL; lecp->response = NULL; @@ -272,11 +273,16 @@ GType lasso_lecp_get_type() { } LassoLecp * -lasso_lecp_new() +lasso_lecp_new(LassoServer *server) { LassoLecp *lecp; lecp = g_object_new(LASSO_TYPE_LECP, NULL); + if(LASSO_IS_SERVER(server)){ + debug("Add server to lecp object\n"); + lecp->server = lasso_server_copy(server); + } + return(lecp); } diff --git a/lasso/id-ff/lecp.h b/lasso/id-ff/lecp.h index 8d2e3991..985ca5a3 100644 --- a/lasso/id-ff/lecp.h +++ b/lasso/id-ff/lecp.h @@ -72,7 +72,7 @@ struct _LassoLecpClass { LASSO_EXPORT GType lasso_lecp_get_type (void); -LASSO_EXPORT LassoLecp* lasso_lecp_new (void); +LASSO_EXPORT LassoLecp* lasso_lecp_new (LassoServer *server); LASSO_EXPORT gint lasso_lecp_build_authn_request_msg (LassoLecp *lecp); @@ -85,11 +85,9 @@ LASSO_EXPORT gint lasso_lecp_build_authn_response_envelope_msg (LassoLec LASSO_EXPORT void lasso_lecp_destroy (LassoLecp *lecp); LASSO_EXPORT gint lasso_lecp_init_authn_request_envelope (LassoLecp *lecp, - LassoServer *server, LassoAuthnRequest *authnRequest); LASSO_EXPORT gint lasso_lecp_init_authn_response_envelope (LassoLecp *lecp, - LassoServer *server, LassoAuthnRequest *authnRequest, LassoAuthnResponse *authnResponse); diff --git a/python/environs/py_lecp.c b/python/environs/py_lecp.c index 60792585..942ff945 100644 --- a/python/environs/py_lecp.c +++ b/python/environs/py_lecp.c @@ -69,14 +69,15 @@ PyObject *lecp_getattr(PyObject *self, PyObject *args) { PyObject *lecp_new(PyObject *self, PyObject *args) { LassoLecp *lecp; + PyObject *server_obj; - if (CheckArgs(args, ":lecp_new")) { - if(!PyArg_ParseTuple(args, (char *) ":lecp_new")) + if (CheckArgs(args, "o:lecp_new")) { + if(!PyArg_ParseTuple(args, (char *) "|O:lecp_new", &server_obj)) return NULL; } else return NULL; - lecp = lasso_lecp_new(); + lecp = lasso_lecp_new(LassoServer_get(server_obj)); return (LassoLecp_wrap(lecp)); } @@ -163,20 +164,18 @@ PyObject *lecp_destroy(PyObject *self, PyObject *args){ PyObject *lecp_init_authn_request_envelope(PyObject *self, PyObject *args){ PyObject *lecp_obj; - PyObject *server_obj; PyObject *authnRequest_obj; gint codeError = 0; - if (CheckArgs(args, "OOO:lecp_init_authn_request_envelope")) { - if(!PyArg_ParseTuple(args, (char *) "OOO:lecp_init_authn_request_envelope", - &lecp_obj, &server_obj, &authnRequest_obj)) + if (CheckArgs(args, "OO:lecp_init_authn_request_envelope")) { + if(!PyArg_ParseTuple(args, (char *) "OO:lecp_init_authn_request_envelope", + &lecp_obj, &authnRequest_obj)) return NULL; } else return NULL; codeError = lasso_lecp_init_authn_request_envelope(LassoLecp_get(lecp_obj), - LassoServer_get(server_obj), LassoAuthnRequest_get(authnRequest_obj)); return(int_wrap(codeError)); @@ -184,21 +183,19 @@ PyObject *lecp_init_authn_request_envelope(PyObject *self, PyObject *args){ PyObject *lecp_init_authn_response_envelope(PyObject *self, PyObject *args){ PyObject *lecp_obj; - PyObject *server_obj; PyObject *authnRequest_obj; PyObject *authnResponse_obj; gint codeError = 0; - if (CheckArgs(args, "OOOO:lecp_init_authn_response_envelope")) { - if(!PyArg_ParseTuple(args, (char *) "OOOO:lecp_init_authn_response_envelope", - &lecp_obj, &server_obj, &authnRequest_obj, &authnResponse_obj)) + if (CheckArgs(args, "OOO:lecp_init_authn_response_envelope")) { + if(!PyArg_ParseTuple(args, (char *) "OOO:lecp_init_authn_response_envelope", + &lecp_obj, &authnRequest_obj, &authnResponse_obj)) return NULL; } else return NULL; codeError = lasso_lecp_init_authn_response_envelope(LassoLecp_get(lecp_obj), - LassoServer_get(server_obj), LassoAuthnRequest_get(authnRequest_obj), LassoAuthnResponse_get(authnResponse_obj)); |