Add dev-python/pykerberos-1.1, bug #388965. Thanks to slepnoga.
authorMaxim Koltsov <maksbotan@gentoo.org>
Fri, 4 Nov 2011 20:58:12 +0000 (20:58 +0000)
committerMaxim Koltsov <maksbotan@gentoo.org>
Fri, 4 Nov 2011 20:58:12 +0000 (20:58 +0000)
Package-Manager: portage-2.1.10.32/cvs/Linux x86_64

dev-python/pykerberos/ChangeLog [new file with mode: 0644]
dev-python/pykerberos/Manifest [new file with mode: 0644]
dev-python/pykerberos/files/PyKerberos-delegation.patch [new file with mode: 0644]
dev-python/pykerberos/metadata.xml [new file with mode: 0644]
dev-python/pykerberos/pykerberos-1.1.ebuild [new file with mode: 0644]

diff --git a/dev-python/pykerberos/ChangeLog b/dev-python/pykerberos/ChangeLog
new file mode 100644 (file)
index 0000000..121257b
--- /dev/null
@@ -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 <maksbotan@gentoo.org> +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 (file)
index 0000000..d13d40c
--- /dev/null
@@ -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 (file)
index 0000000..be6d05b
--- /dev/null
@@ -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 (file)
index 0000000..c0e52e1
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>proxy-maintainers</herd>
+<maintainer>
+       <email>spamslepnoga@inbox.ru</email>
+</maintainer>
+<maintainer>
+       <email>maksbotan@gentoo.org</email>
+       <name>Maxim Koltsov</name>
+</maintainer>
+</pkgmetadata>
diff --git a/dev-python/pykerberos/pykerberos-1.1.ebuild b/dev-python/pykerberos/pykerberos-1.1.ebuild
new file mode 100644 (file)
index 0000000..66329ed
--- /dev/null
@@ -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
+}