diff options
| -rw-r--r-- | lasso/Attic/protocols/logout_response.c | 7 | ||||
| -rw-r--r-- | python/lasso.py | 11 | ||||
| -rw-r--r-- | python/lassomod.c | 8 | ||||
| -rw-r--r-- | python/protocols/py_logout_request.c | 43 | ||||
| -rw-r--r-- | python/protocols/py_logout_request.h | 5 |
5 files changed, 70 insertions, 4 deletions
diff --git a/lasso/Attic/protocols/logout_response.c b/lasso/Attic/protocols/logout_response.c index 5f00aa0b..e59eb7b7 100644 --- a/lasso/Attic/protocols/logout_response.c +++ b/lasso/Attic/protocols/logout_response.c @@ -72,7 +72,7 @@ lasso_logout_response_new(const xmlChar *providerID, LassoNode *request) { LassoNode *response, *ss, *ssc; - xmlChar *inResponseTo, *recipient; + xmlChar *inResponseTo, *recipient, *relayState; response = LASSO_NODE(g_object_new(LASSO_TYPE_LOGOUT_RESPONSE, NULL)); @@ -102,6 +102,11 @@ lasso_logout_response_new(const xmlChar *providerID, lasso_samlp_response_abstract_set_recipient(LASSO_SAMLP_RESPONSE_ABSTRACT(response), recipient); + relayState = lasso_node_get_content(lasso_node_get_child(request, "RelayState")); + if(relayState!=NULL) + lasso_lib_status_response_set_relayState(LASSO_LIB_STATUS_RESPONSE(response), + relayState); + ss = lasso_samlp_status_new(); ssc = lasso_samlp_status_code_new(); lasso_samlp_status_code_set_value(LASSO_SAMLP_STATUS_CODE(ssc), statusCodeValue); diff --git a/python/lasso.py b/python/lasso.py index 07d7a206..af61242a 100644 --- a/python/lasso.py +++ b/python/lasso.py @@ -241,11 +241,11 @@ class Response: def add_assertion(self, assertion): return lassomod.response_add_assertion(self, assertion) - class LogoutRequest(Node): def __init__(self, providerID, nameIdentifier, nameQualifier, format, + sessionIndex = None, relayState = None, consent = None, _obj=None): """ """ @@ -258,6 +258,15 @@ class LogoutRequest(Node): format) if self._o is None: raise Error('lasso_logout_request() failed') + if sessionIndex: + lassomod.logout_request_set_sessionIndex(self, sessionIndex) + + if relayState: + lassomod.logout_request_set_relayState(self, relayState) + + if consent: + lassomod.logout_request_set_consent(self, consent) + def __isprivate(self, name): return name == '_o' diff --git a/python/lassomod.c b/python/lassomod.c index 3fb18552..e177ad9c 100644 --- a/python/lassomod.c +++ b/python/lassomod.c @@ -51,8 +51,12 @@ static PyMethodDef lasso_methods[] = { /* protocols */ /* py_logout_request.h */ - {"logout_request_getattr", logout_request_getattr, METH_VARARGS}, - {"logout_request", logout_request, METH_VARARGS}, + {"logout_request_getattr", logout_request_getattr, METH_VARARGS}, + {"logout_request", logout_request, METH_VARARGS}, + + {"logout_request_set_sessionIndex", logout_request_set_sessionIndex, METH_VARARGS}, + {"logout_request_set_relayState", logout_request_set_relayState, METH_VARARGS}, + {"logout_request_set_consent", logout_request_set_consent, METH_VARARGS}, /* py_logout_response.h */ {"logout_response_getattr", logout_response_getattr, METH_VARARGS}, diff --git a/python/protocols/py_logout_request.c b/python/protocols/py_logout_request.c index d89a3ae0..f876e325 100644 --- a/python/protocols/py_logout_request.c +++ b/python/protocols/py_logout_request.c @@ -78,3 +78,46 @@ PyObject *logout_request(PyObject *self, PyObject *args) { return (lassoLogoutRequest_wrap(request)); } + +PyObject *logout_request_set_sessionIndex(PyObject *self, PyObject *args){ + PyObject *request_obj; + const xmlChar *sessionIndex; + + if(!PyArg_ParseTuple(args, (char *) "Os:logout_request_set_sessionIndex", + &request_obj, &sessionIndex)) + return NULL; + + lasso_lib_logout_request_set_sessionIndex(lassoLogoutRequest_get(request_obj), + sessionIndex); + + return (int_wrap(1)); +} + +PyObject *logout_request_set_relayState(PyObject *self, PyObject *args){ + PyObject *request_obj; + const xmlChar *relayState; + + if(!PyArg_ParseTuple(args, (char *) "Os:logout_request_set_relayState", + &request_obj, &relayState)) + return NULL; + + lasso_lib_logout_request_set_relayState(lassoLogoutRequest_get(request_obj), + relayState); + + return (int_wrap(1)); +} + +PyObject *logout_request_set_consent(PyObject *self, PyObject *args){ + PyObject *request_obj; + const xmlChar *consent; + + + if(!PyArg_ParseTuple(args, (char *) "Os:logout_request_set_consent", + &request_obj, &consent)) + return NULL; + + lasso_lib_logout_request_set_consent(lassoLogoutRequest_get(request_obj), + consent); + + return (int_wrap(1)); +} diff --git a/python/protocols/py_logout_request.h b/python/protocols/py_logout_request.h index d28794d7..af305e34 100644 --- a/python/protocols/py_logout_request.h +++ b/python/protocols/py_logout_request.h @@ -27,6 +27,7 @@ #define __PYLASSO_PY_LOGOUT_REQUEST_H__ #include <lasso/protocols/logout_request.h> +#include <lasso/xml/lib_logout_request.h> typedef struct { PyObject_HEAD @@ -39,4 +40,8 @@ PyObject *lassoLogoutRequest_wrap(LassoLogoutRequest *request); PyObject *logout_request_getattr(PyObject *self, PyObject *args); PyObject *logout_request(PyObject *self, PyObject *args); +PyObject *logout_request_set_sessionIndex(PyObject *self, PyObject *args); +PyObject *logout_request_set_relayState(PyObject *self, PyObject *args); +PyObject *logout_request_set_consent(PyObject *self, PyObject *args); + #endif /* __PYLASSO_PY_LOGOUT_REQUEST_H__ */ |
