summaryrefslogtreecommitdiffstats
path: root/python/protocols
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-05-02 20:58:33 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-05-02 20:58:33 +0000
commit15fe54cf78177b462ffbbbca46db568470eef0cb (patch)
tree8e10f7dc03791dfa5b02e09a8c1a48e4215d7639 /python/protocols
parent071ee4be43259b82ee49b6a7c49049e29f76ac16 (diff)
downloadlasso-15fe54cf78177b462ffbbbca46db568470eef0cb.tar.gz
lasso-15fe54cf78177b462ffbbbca46db568470eef0cb.tar.xz
lasso-15fe54cf78177b462ffbbbca46db568470eef0cb.zip
Initial commit
Diffstat (limited to 'python/protocols')
-rw-r--r--python/protocols/elements/py_assertion.c59
-rw-r--r--python/protocols/elements/py_assertion.h41
-rw-r--r--python/protocols/elements/py_authentication_statement.c77
-rw-r--r--python/protocols/elements/py_authentication_statement.h41
-rw-r--r--python/protocols/py_authn_response.c167
-rw-r--r--python/protocols/py_authn_response.h47
6 files changed, 432 insertions, 0 deletions
diff --git a/python/protocols/elements/py_assertion.c b/python/protocols/elements/py_assertion.c
new file mode 100644
index 00000000..8d7584e4
--- /dev/null
+++ b/python/protocols/elements/py_assertion.c
@@ -0,0 +1,59 @@
+/* $Id$
+ *
+ * PyLasso -- Python bindings for Lasso library
+ *
+ * Copyright (C) 2004 Entr'ouvert
+ * http://lasso.labs.libre-entreprise.org
+ *
+ * Authors: Valery Febvre <vfebvre@easter-eggs.com>
+ * Nicolas Clapies <nclapies@entrouvert.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "../../lassomod.h"
+
+#include "py_assertion.h"
+
+PyObject *LassoAssertion_wrap(LassoAssertion *assertion) {
+ PyObject *ret;
+
+ if (assertion == NULL) {
+ Py_INCREF(Py_None);
+ return (Py_None);
+ }
+ ret = PyCObject_FromVoidPtrAndDesc((void *) assertion,
+ (char *) "LassoAssertion *", NULL);
+ return (ret);
+}
+
+/******************************************************************************/
+
+PyObject *assertion_new(PyObject *self, PyObject *args) {
+ const xmlChar *issuer;
+ xmlChar *requestID;
+ LassoNode *assertion;
+
+ if (CheckArgs(args, "SS:assertion_new")) {
+ if(!PyArg_ParseTuple(args, (char *) "ss:assertion_new",
+ &issuer, &requestID))
+ return NULL;
+ }
+ else return NULL;
+
+ assertion = lasso_assertion_new(issuer, requestID);
+
+ return (LassoAssertion_wrap(LASSO_ASSERTION(assertion)));
+}
diff --git a/python/protocols/elements/py_assertion.h b/python/protocols/elements/py_assertion.h
new file mode 100644
index 00000000..df8c3afe
--- /dev/null
+++ b/python/protocols/elements/py_assertion.h
@@ -0,0 +1,41 @@
+/* $Id$
+ *
+ * PyLasso -- Python bindings for Lasso library
+ *
+ * Copyright (C) 2004 Entr'ouvert
+ * http://lasso.labs.libre-entreprise.org
+ *
+ * Authors: Valery Febvre <vfebvre@easter-eggs.com>
+ * Nicolas Clapies <nclapies@entrouvert.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __PYLASSO_PY_ASSERTION_H__
+#define __PYLASSO_PY_ASSERTION_H__
+
+#include <lasso/protocols/elements/assertion.h>
+
+typedef struct {
+ PyObject_HEAD
+ LassoAssertion *obj;
+} LassoAssertion_object;
+
+#define LassoAssertion_get(v) (((v) == Py_None) ? NULL : (((LassoAssertion_object *)(PyObject_GetAttr(v, PyString_FromString("_o"))))->obj))
+PyObject *LassoAssertion_wrap(LassoAssertion *assertion);
+
+PyObject *assertion_new(PyObject *self, PyObject *args);
+
+#endif /* __PYLASSO_PY_ASSERTION_H__ */
diff --git a/python/protocols/elements/py_authentication_statement.c b/python/protocols/elements/py_authentication_statement.c
new file mode 100644
index 00000000..16ed4e13
--- /dev/null
+++ b/python/protocols/elements/py_authentication_statement.c
@@ -0,0 +1,77 @@
+/* $Id$
+ *
+ * PyLasso -- Python bindings for Lasso library
+ *
+ * Copyright (C) 2004 Entr'ouvert
+ * http://lasso.labs.libre-entreprise.org
+ *
+ * Authors: Valery Febvre <vfebvre@easter-eggs.com>
+ * Nicolas Clapies <nclapies@entrouvert.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "../../lassomod.h"
+
+#include "py_authentication_statement.h"
+
+PyObject *LassoAuthenticationStatement_wrap(LassoAuthenticationStatement *statement) {
+ PyObject *ret;
+
+ if (statement == NULL) {
+ Py_INCREF(Py_None);
+ return (Py_None);
+ }
+ ret = PyCObject_FromVoidPtrAndDesc((void *) statement,
+ (char *) "LassoAuthenticationStatement *", NULL);
+ return (ret);
+}
+
+/******************************************************************************/
+
+PyObject *authentication_statement_new(PyObject *self, PyObject *args) {
+ const xmlChar *authenticationMethod;
+ const xmlChar *sessionIndex;
+ const xmlChar *reauthenticateOnOrAfter;
+ xmlChar *nameIdentifier;
+ const xmlChar *nameQualifier;
+ const xmlChar *format;
+ xmlChar *idp_nameIdentifier;
+ const xmlChar *idp_nameQualifier;
+ const xmlChar *idp_format;
+ const xmlChar *confirmationMethod;
+ LassoNode *statement;
+
+ if(!PyArg_ParseTuple(args, (char *) "ssssssssss:authentication_statement_new",
+ &authenticationMethod, &sessionIndex,
+ &reauthenticateOnOrAfter,
+ &nameIdentifier, &nameQualifier, &format,
+ &idp_nameIdentifier, &idp_nameQualifier, &idp_format,
+ &confirmationMethod))
+ return NULL;
+
+ statement = lasso_authentication_statement_new(authenticationMethod,
+ sessionIndex,
+ reauthenticateOnOrAfter,
+ nameIdentifier,
+ nameQualifier,
+ format,
+ idp_nameIdentifier,
+ idp_nameQualifier,
+ idp_format,
+ confirmationMethod);
+
+ return (LassoAuthenticationStatement_wrap(LASSO_AUTHENTICATION_STATEMENT(statement)));
+}
diff --git a/python/protocols/elements/py_authentication_statement.h b/python/protocols/elements/py_authentication_statement.h
new file mode 100644
index 00000000..2f7641e4
--- /dev/null
+++ b/python/protocols/elements/py_authentication_statement.h
@@ -0,0 +1,41 @@
+/* $Id$
+ *
+ * PyLasso -- Python bindings for Lasso library
+ *
+ * Copyright (C) 2004 Entr'ouvert
+ * http://lasso.labs.libre-entreprise.org
+ *
+ * Authors: Valery Febvre <vfebvre@easter-eggs.com>
+ * Nicolas Clapies <nclapies@entrouvert.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __PYLASSO_PY_AUTHENTICATION_STATEMENT_H__
+#define __PYLASSO_PY_AUTHENTICATION_STATEMENT_H__
+
+#include <lasso/protocols/elements/authentication_statement.h>
+
+typedef struct {
+ PyObject_HEAD
+ LassoAuthenticationStatement *obj;
+} LassoAuthenticationStatement_object;
+
+#define LassoAuthenticationStatement_get(v) (((v) == Py_None) ? NULL : (((LassoAuthenticationStatement_object *)(PyObject_GetAttr(v, PyString_FromString("_o"))))->obj))
+PyObject *LassoAuthenticationStatement_wrap(LassoAuthenticationStatement *statement);
+
+PyObject *authentication_statement_new(PyObject *self, PyObject *args);
+
+#endif /* __PYLASSO_PY_AUTHENTICATION_STATEMENT_H__ */
diff --git a/python/protocols/py_authn_response.c b/python/protocols/py_authn_response.c
new file mode 100644
index 00000000..69cf9653
--- /dev/null
+++ b/python/protocols/py_authn_response.c
@@ -0,0 +1,167 @@
+/* $Id$
+ *
+ * PyLasso -- Python bindings for Lasso library
+ *
+ * Copyright (C) 2004 Entr'ouvert
+ * http://lasso.labs.libre-entreprise.org
+ *
+ * Authors: Valery Febvre <vfebvre@easter-eggs.com>
+ * Nicolas Clapies <nclapies@entrouvert.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "../lassomod.h"
+
+#include "../xml/py_xml.h"
+#include "py_authn_response.h"
+
+/******************************************************************************/
+/* LassoAuthnResponse */
+/******************************************************************************/
+
+PyObject *LassoAuthnResponse_wrap(LassoAuthnResponse *response) {
+ PyObject *ret;
+
+ if (response == NULL) {
+ Py_INCREF(Py_None);
+ return (Py_None);
+ }
+ ret = PyCObject_FromVoidPtrAndDesc((void *) response,
+ (char *) "LassoAuthnResponse *", NULL);
+ return (ret);
+}
+
+/******************************************************************************/
+
+PyObject *authn_response_getattr(PyObject *self, PyObject *args) {
+ PyObject *reponse_obj;
+ LassoAuthnResponse *reponse;
+ const char *attr;
+
+ if (CheckArgs(args, "OS:authn_response_get_attr")) {
+ if (!PyArg_ParseTuple(args, "Os:authn_response_get_attr", &reponse_obj, &attr))
+ return NULL;
+ }
+ else return NULL;
+
+ reponse = LassoAuthnResponse_get(reponse_obj);
+
+ if (!strcmp(attr, "__members__"))
+ return Py_BuildValue("[ss]", "requestID", "query");
+ if (!strcmp(attr, "requestID"))
+ return (xmlCharPtr_wrap(reponse->requestID));
+ if (!strcmp(attr, "query"))
+ return (xmlCharPtr_wrap(reponse->query));
+
+ Py_INCREF(Py_None);
+ return (Py_None);
+}
+
+/******************************************************************************/
+
+PyObject *authn_response_new(PyObject *self, PyObject *args) {
+ xmlChar *query;
+ const xmlChar *providerID;
+ LassoNode *response;
+
+ if (CheckArgs(args, "SS:authn_response_new")) {
+ if(!PyArg_ParseTuple(args, (char *) "ss:authn_response_new", &query,
+ &providerID))
+ return NULL;
+ }
+ else return NULL;
+
+ response = lasso_authn_response_new(query, providerID);
+
+ return (LassoAuthnResponse_wrap(LASSO_AUTHN_RESPONSE(response)));
+}
+
+PyObject *authn_response_add_assertion(PyObject *self, PyObject *args) {
+ PyObject *response_obj, *assertion_obj;
+ const xmlChar *private_key_file;
+ const xmlChar *certificate_file;
+
+ if (CheckArgs(args, "OOSS:authn_response_add_assertion")) {
+ if(!PyArg_ParseTuple(args, (char *) "OOss:authn_response_add_assertion",
+ &response_obj, &assertion_obj,
+ &private_key_file, &certificate_file))
+ return NULL;
+ }
+ else return NULL;
+
+ lasso_authn_response_add_assertion(LassoAuthnResponse_get(response_obj),
+ LassoAssertion_get(assertion_obj),
+ private_key_file,
+ certificate_file);
+
+ Py_INCREF(Py_None);
+ return (Py_None);
+}
+
+PyObject *authn_response_must_authenticate(PyObject *self, PyObject *args) {
+ PyObject *response_obj;
+ gboolean is_authenticated;
+ gboolean ret;
+
+ if (CheckArgs(args, "OI:authn_response_must_authenticate")) {
+ if(!PyArg_ParseTuple(args, (char *) "Oi:authn_response_must_authenticate",
+ &response_obj, &is_authenticated))
+ return NULL;
+ }
+ else return NULL;
+
+ ret = lasso_authn_response_must_authenticate(LassoAuthnResponse_get(response_obj),
+ is_authenticated);
+
+ return (int_wrap(ret));
+}
+
+PyObject *authn_response_process_authentication_result(PyObject *self, PyObject *args) {
+ PyObject *response_obj;
+ gboolean authentication_result;
+
+ if (CheckArgs(args, "OI:authn_response_process_authentication_result")) {
+ if(!PyArg_ParseTuple(args, (char *) "Oi:authn_response_process_authentication_result",
+ &response_obj, &authentication_result))
+ return NULL;
+ }
+ else return NULL;
+
+ lasso_authn_response_process_authentication_result(LassoAuthnResponse_get(response_obj),
+ authentication_result);
+
+ Py_INCREF(Py_None);
+ return (Py_None);
+}
+
+PyObject *authn_response_verify_signature(PyObject *self, PyObject *args) {
+ PyObject *response_obj;
+ xmlChar *public_key_file;
+ xmlChar *private_key_file;
+ gboolean ret;
+
+ if (CheckArgs(args, "OSS:authn_response_verify_signature")) {
+ if(!PyArg_ParseTuple(args, (char *) "Oss:authn_response_verify_signature",
+ &response_obj, &public_key_file, &private_key_file))
+ return NULL;
+ }
+ else return NULL;
+
+ ret = lasso_authn_response_verify_signature(LassoAuthnResponse_get(response_obj),
+ public_key_file, private_key_file);
+
+ return (int_wrap(ret));
+}
diff --git a/python/protocols/py_authn_response.h b/python/protocols/py_authn_response.h
new file mode 100644
index 00000000..fe85e839
--- /dev/null
+++ b/python/protocols/py_authn_response.h
@@ -0,0 +1,47 @@
+/* $Id$
+ *
+ * PyLasso -- Python bindings for Lasso library
+ *
+ * Copyright (C) 2004 Entr'ouvert
+ * http://lasso.labs.libre-entreprise.org
+ *
+ * Authors: Valery Febvre <vfebvre@easter-eggs.com>
+ * Nicolas Clapies <nclapies@entrouvert.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __PYLASSO_PY_AUTHN_RESPONSE_H__
+#define __PYLASSO_PY_AUTHN_RESPONSE_H__
+
+#include <lasso/protocols/authn_response.h>
+#include "elements/py_assertion.h"
+
+typedef struct {
+ PyObject_HEAD
+ LassoAuthnResponse *obj;
+} LassoAuthnResponse_object;
+
+#define LassoAuthnResponse_get(v) (((v) == Py_None) ? NULL : (((LassoAuthnResponse_object *)(PyObject_GetAttr(v, PyString_FromString("_o"))))->obj))
+PyObject *LassoAuthnResponse_wrap(LassoAuthnResponse *response);
+
+PyObject *authn_response_getattr(PyObject *self, PyObject *args);
+PyObject *authn_response_new(PyObject *self, PyObject *args);
+PyObject *authn_response_add_assertion(PyObject *self, PyObject *args);
+PyObject *authn_response_must_authenticate(PyObject *self, PyObject *args);
+PyObject *authn_response_process_authentication_result(PyObject *self, PyObject *args);
+PyObject *authn_response_verify_signature(PyObject *self, PyObject *args);
+
+#endif /* __PYLASSO_PY_AUTHN_RESPONSE_H__ */