From 12556d66a893d4e30df2e6d90a7178d63e4fb4e8 Mon Sep 17 00:00:00 2001 From: Maxim Koltsov Date: Fri, 4 Nov 2011 20:58:12 +0000 Subject: Add dev-python/pykerberos-1.1, bug #388965. Thanks to slepnoga. Package-Manager: portage-2.1.10.32/cvs/Linux x86_64 --- dev-python/pykerberos/ChangeLog | 10 ++ dev-python/pykerberos/Manifest | 5 + .../pykerberos/files/PyKerberos-delegation.patch | 136 +++++++++++++++++++++ dev-python/pykerberos/metadata.xml | 12 ++ dev-python/pykerberos/pykerberos-1.1.ebuild | 37 ++++++ 5 files changed, 200 insertions(+) create mode 100644 dev-python/pykerberos/ChangeLog create mode 100644 dev-python/pykerberos/Manifest create mode 100644 dev-python/pykerberos/files/PyKerberos-delegation.patch create mode 100644 dev-python/pykerberos/metadata.xml create mode 100644 dev-python/pykerberos/pykerberos-1.1.ebuild (limited to 'dev-python/pykerberos') diff --git a/dev-python/pykerberos/ChangeLog b/dev-python/pykerberos/ChangeLog new file mode 100644 index 000000000000..121257bf0f33 --- /dev/null +++ b/dev-python/pykerberos/ChangeLog @@ -0,0 +1,10 @@ +# ChangeLog for dev-python/pykerberos +# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/dev-python/pykerberos/ChangeLog,v 1.1 2011/11/04 20:58:12 maksbotan Exp $ + +*pykerberos-1.1 (04 Nov 2011) + + 04 Nov 2011; Maxim Koltsov +pykerberos-1.1.ebuild, + +files/PyKerberos-delegation.patch, +metadata.xml: + Add dev-python/pykerberos-1.1, bug #388965. Thanks to slepnoga. + diff --git a/dev-python/pykerberos/Manifest b/dev-python/pykerberos/Manifest new file mode 100644 index 000000000000..d13d40c0ad98 --- /dev/null +++ b/dev-python/pykerberos/Manifest @@ -0,0 +1,5 @@ +AUX PyKerberos-delegation.patch 6200 RMD160 568a9316388dab95108c2a9a50e1ca653c23e104 SHA1 1186bcee10a27ae2473013148005e4fee94b215d SHA256 94e995b10ebcccdde7f40b58ed199807790d5543947162b530d22179b3071784 +DIST pykerberos-1.1.tar.bz2 25099 RMD160 75ca4b0c1b75e06cf9d33f347872341dca6da22d SHA1 ac606aadfc9ca670d03dee03e1b100ac3182449c SHA256 bdfde0871c6330ef32fbd2a009c60afee8204909253a807f596c33317e163be7 +EBUILD pykerberos-1.1.ebuild 1200 RMD160 19983b970cc8ed25d3f470eea786dbc50c70be71 SHA1 3230bd589293cd15d46be40db4fd80b4f7271563 SHA256 577a7bc81c77b87c2b863f9a1f155146c10360fe177183dbf98dfa9746a55b2b +MISC ChangeLog 445 RMD160 2e38f16b1af1e1e45aca52ce8421d2ad96404117 SHA1 fa3979f8040ce6f5f8901b856355bfeed87bbd06 SHA256 d6ceb82134cf751712e1c95030dbf0b1880ace61d865257f84e845dc0ce06735 +MISC metadata.xml 327 RMD160 4d929f82166d31d5710f17e78f8c66f8fecef407 SHA1 cde31cdfff5ff2543719f2d83cf074261e06910a SHA256 ad8f529f9a202f44af4371b094874e9cd0857e8325396676a189b91e5dd544fc diff --git a/dev-python/pykerberos/files/PyKerberos-delegation.patch b/dev-python/pykerberos/files/PyKerberos-delegation.patch new file mode 100644 index 000000000000..be6d05b48a44 --- /dev/null +++ b/dev-python/pykerberos/files/PyKerberos-delegation.patch @@ -0,0 +1,136 @@ +diff -uPr python-kerberos-1.1/pysrc/kerberos.py python-kerberos-1.1-gssflags/pysrc/kerberos.py +--- python-kerberos-1.1/pysrc/kerberos.py 2008-09-17 07:17:15.000000000 -0400 ++++ python-kerberos-1.1-gssflags/pysrc/kerberos.py 2008-12-15 09:21:42.000000000 -0500 +@@ -90,7 +90,18 @@ + AUTH_GSS_CONTINUE=0 + AUTH_GSS_COMPLETE=1 + +-def authGSSClientInit(service): ++#Some useful gss flags ++GSS_C_DELEG_FLAG=1 ++GSS_C_MUTUAL_FLAG=2 ++GSS_C_REPLAY_FLAG=4 ++GSS_C_SEQUENCE_FLAG=8 ++GSS_C_CONF_FLAG=16 ++GSS_C_INTEG_FLAG=32 ++GSS_C_ANON_FLAG=64 ++GSS_C_PROT_READY_FLAG=128 ++GSS_C_TRANS_FLAG=256 ++ ++def authGSSClientInit(service, gssflags=GSS_C_MUTUAL_FLAG|GSS_C_SEQUENCE_FLAG): + """ + Initializes a context for GSSAPI client-side authentication with the given service principal. + authGSSClientClean must be called after this function returns an OK result to dispose of +@@ -98,6 +109,9 @@ + + @param service: a string containing the service principal in the form 'type@fqdn' + (e.g. 'imap@mail.apple.com'). ++ @param gssflags: optional integer used to set GSS flags. ++ (e.g. GSS_C_DELEG_FLAG|GSS_C_MUTUAL_FLAG|GSS_C_SEQUENCE_FLAG will allow ++ to forward credentials to the remote host) + @return: a tuple of (result, context) where result is the result code (see above) and + context is an opaque value that will need to be passed to subsequent functions. + """ +diff -uPr python-kerberos-1.1/src/kerberos.c python-kerberos-1.1-gssflags/src/kerberos.c +--- python-kerberos-1.1/src/kerberos.c 2008-09-17 05:38:55.000000000 -0400 ++++ python-kerberos-1.1-gssflags/src/kerberos.c 2008-12-15 09:26:39.000000000 -0500 +@@ -84,20 +84,22 @@ + return NULL; + } + +-static PyObject* authGSSClientInit(PyObject* self, PyObject* args) ++static PyObject* authGSSClientInit(PyObject* self, PyObject* args, PyObject* keywds) + { + const char *service; + gss_client_state *state; + PyObject *pystate; ++ static char *kwlist[] = {"service", "gssflags", NULL}; ++ long int gss_flags = GSS_C_MUTUAL_FLAG|GSS_C_SEQUENCE_FLAG; + int result = 0; + +- if (!PyArg_ParseTuple(args, "s", &service)) ++ if (!PyArg_ParseTupleAndKeywords(args, keywds, "s|l", kwlist, &service, &gss_flags)) + return NULL; + + state = (gss_client_state *) malloc(sizeof(gss_client_state)); + pystate = PyCObject_FromVoidPtr(state, NULL); + +- result = authenticate_gss_client_init(service, state); ++ result = authenticate_gss_client_init(service, gss_flags, state); + if (result == AUTH_GSS_ERROR) + return NULL; + +@@ -367,7 +369,7 @@ + "Change the user password."}, + {"getServerPrincipalDetails", getServerPrincipalDetails, METH_VARARGS, + "Return the service principal for a given service and hostname."}, +- {"authGSSClientInit", authGSSClientInit, METH_VARARGS, ++ {"authGSSClientInit", (PyCFunction)authGSSClientInit, METH_VARARGS|METH_KEYWORDS, + "Initialize client-side GSSAPI operations."}, + {"authGSSClientClean", authGSSClientClean, METH_VARARGS, + "Terminate client-side GSSAPI operations."}, +@@ -427,6 +429,15 @@ + PyDict_SetItemString(d, "AUTH_GSS_COMPLETE", PyInt_FromLong(AUTH_GSS_COMPLETE)); + PyDict_SetItemString(d, "AUTH_GSS_CONTINUE", PyInt_FromLong(AUTH_GSS_CONTINUE)); + ++ PyDict_SetItemString(d, "GSS_C_DELEG_FLAG", PyInt_FromLong(GSS_C_DELEG_FLAG)); ++ PyDict_SetItemString(d, "GSS_C_MUTUAL_FLAG", PyInt_FromLong(GSS_C_MUTUAL_FLAG)); ++ PyDict_SetItemString(d, "GSS_C_REPLAY_FLAG", PyInt_FromLong(GSS_C_REPLAY_FLAG)); ++ PyDict_SetItemString(d, "GSS_C_SEQUENCE_FLAG", PyInt_FromLong(GSS_C_SEQUENCE_FLAG)); ++ PyDict_SetItemString(d, "GSS_C_CONF_FLAG", PyInt_FromLong(GSS_C_CONF_FLAG)); ++ PyDict_SetItemString(d, "GSS_C_INTEG_FLAG", PyInt_FromLong(GSS_C_INTEG_FLAG)); ++ PyDict_SetItemString(d, "GSS_C_ANON_FLAG", PyInt_FromLong(GSS_C_ANON_FLAG)); ++ PyDict_SetItemString(d, "GSS_C_PROT_READY_FLAG", PyInt_FromLong(GSS_C_PROT_READY_FLAG)); ++ PyDict_SetItemString(d, "GSS_C_TRANS_FLAG", PyInt_FromLong(GSS_C_TRANS_FLAG)); + error: + if (PyErr_Occurred()) + PyErr_SetString(PyExc_ImportError, "kerberos: init failed"); +diff -uPr python-kerberos-1.1/src/kerberosgss.c python-kerberos-1.1-gssflags/src/kerberosgss.c +--- python-kerberos-1.1/src/kerberosgss.c 2008-09-17 06:35:15.000000000 -0400 ++++ python-kerberos-1.1-gssflags/src/kerberosgss.c 2008-12-15 09:21:42.000000000 -0500 +@@ -108,7 +108,7 @@ + return result; + } + +-int authenticate_gss_client_init(const char* service, gss_client_state* state) ++int authenticate_gss_client_init(const char* service, long int gss_flags, gss_client_state* state) + { + OM_uint32 maj_stat; + OM_uint32 min_stat; +@@ -119,6 +119,7 @@ + state->context = GSS_C_NO_CONTEXT; + state->username = NULL; + state->response = NULL; ++ state->gss_flags = gss_flags; + + // Import server name first + name_token.length = strlen(service); +@@ -190,7 +191,7 @@ + &state->context, + state->server_name, + GSS_C_NO_OID, +- GSS_C_MUTUAL_FLAG | GSS_C_SEQUENCE_FLAG, ++ (OM_uint32)state->gss_flags, + 0, + GSS_C_NO_CHANNEL_BINDINGS, + &input_token, +diff -uPr python-kerberos-1.1/src/kerberosgss.h python-kerberos-1.1-gssflags/src/kerberosgss.h +--- python-kerberos-1.1/src/kerberosgss.h 2008-05-23 12:40:38.000000000 -0400 ++++ python-kerberos-1.1-gssflags/src/kerberosgss.h 2008-12-15 09:21:42.000000000 -0500 +@@ -33,6 +33,7 @@ + typedef struct { + gss_ctx_id_t context; + gss_name_t server_name; ++ long int gss_flags; + char* username; + char* response; + } gss_client_state; +@@ -49,7 +50,7 @@ + + char* server_principal_details(const char* service, const char* hostname); + +-int authenticate_gss_client_init(const char* service, gss_client_state* state); ++int authenticate_gss_client_init(const char* service, long int gss_flags, gss_client_state* state); + int authenticate_gss_client_clean(gss_client_state *state); + int authenticate_gss_client_step(gss_client_state *state, const char *challenge); + int authenticate_gss_client_unwrap(gss_client_state* state, const char* challenge); diff --git a/dev-python/pykerberos/metadata.xml b/dev-python/pykerberos/metadata.xml new file mode 100644 index 000000000000..c0e52e1baa3d --- /dev/null +++ b/dev-python/pykerberos/metadata.xml @@ -0,0 +1,12 @@ + + + +proxy-maintainers + + spamslepnoga@inbox.ru + + + maksbotan@gentoo.org + Maxim Koltsov + + diff --git a/dev-python/pykerberos/pykerberos-1.1.ebuild b/dev-python/pykerberos/pykerberos-1.1.ebuild new file mode 100644 index 000000000000..66329ed12206 --- /dev/null +++ b/dev-python/pykerberos/pykerberos-1.1.ebuild @@ -0,0 +1,37 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-python/pykerberos/pykerberos-1.1.ebuild,v 1.1 2011/11/04 20:58:12 maksbotan Exp $ + +EAPI="4" + +PYTHON_DEPEND="2" +SUPPORT_PYTHON_ABIS="1" +RESTRICT_PYTHON_ABIS="3.*" + +inherit distutils + +MY_P="PyKerberos-${PV}" + +DESCRIPTION="A high-level Python wrapper for Kerberos/GSSAPI operations" +HOMEPAGE="http://trac.calendarserver.org/" +SRC_URI="http://dev.gentoo.org/~maksbotan/${P}.tar.bz2" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~x86 ~amd64" +IUSE="" + +DEPEND="app-crypt/mit-krb5" +RDEPEND="${DEPEND}" + +# Pull from SVN +# svn export +# http://svn.calendarserver.org/repository/calendarserver/PyKerberos/tags/release/PyKerberos-1.1/ +# python-kerberos-1.1 +# tar czf python-kerberos-%{version}.tar.gz python-kerberos-%{version} + +src_prepare(){ + #Needed for freeipa, http://trac.calendarserver.org/ticket/311 + epatch "${FILESDIR}"/PyKerberos-delegation.patch + default +} -- cgit v1.2.3-65-gdbad