Hello community, here is the log from the commit of package python-pykerberos for openSUSE:Factory checked in at 2017-08-22 11:11:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pykerberos (Old) and /work/SRC/openSUSE:Factory/.python-pykerberos.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pykerberos" Tue Aug 22 11:11:14 2017 rev:3 rq:518029 version:1.1.14 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pykerberos/python-pykerberos.changes 2016-09-28 11:29:56.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python-pykerberos.new/python-pykerberos.changes 2017-08-22 11:11:16.082524563 +0200 @@ -1,0 +2,6 @@ +Tue Aug 22 04:35:01 UTC 2017 - [email protected] + +- update to 1.1.14 +- convert to singlespec + +------------------------------------------------------------------- Old: ---- pykerberos-1.1.13.tar.gz New: ---- pykerberos-1.1.14.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pykerberos.spec ++++++ --- /var/tmp/diff_new_pack.yLWVkK/_old 2017-08-22 11:11:16.810422071 +0200 +++ /var/tmp/diff_new_pack.yLWVkK/_new 2017-08-22 11:11:16.814421507 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-pykerberos # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,24 +16,25 @@ # +%{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-pykerberos -Version: 1.1.13 +Version: 1.1.14 Release: 0 Summary: High-level interface to Kerberos License: Apache-2.0 Group: Development/Languages/Python Url: https://github.com/02strich/pykerberos/ Source: https://pypi.io/packages/source/p/pykerberos/pykerberos-%{version}.tar.gz -BuildRequires: python-devel -BuildRequires: python-setuptools +BuildRequires: %{python_module devel} +BuildRequires: %{python_module setuptools} +BuildRequires: python-rpm-macros BuildRequires: pkgconfig(krb5) # https://github.com/02strich/pykerberos/issues/17 Conflicts: python-kerberos Requires: krb5 BuildRoot: %{_tmppath}/%{name}-%{version}-build -%if 0%{?suse_version} && 0%{?suse_version} <= 1110 -%{!?python_sitearch: %global python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} -%endif + +%python_subpackages %description This Python package is a high-level wrapper for Kerberos (GSSAPI) operations. @@ -45,12 +46,13 @@ %setup -q -n pykerberos-%{version} %build -CFLAGS="%{optflags}" python setup.py build +export CFLAGS="%{optflags}" +%python_build %install -python setup.py install --prefix=%{_prefix} --root=%{buildroot} +%python_install -%files +%files %{python_files} %defattr(-,root,root,-) %doc README.txt LICENSE %{python_sitearch}/* ++++++ pykerberos-1.1.13.tar.gz -> pykerberos-1.1.14.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pykerberos-1.1.13/PKG-INFO new/pykerberos-1.1.14/PKG-INFO --- old/pykerberos-1.1.13/PKG-INFO 2016-06-03 04:21:48.000000000 +0200 +++ new/pykerberos-1.1.14/PKG-INFO 2017-01-26 08:32:40.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pykerberos -Version: 1.1.13 +Version: 1.1.14 Summary: High-level interface to Kerberos Home-page: UNKNOWN Author: UNKNOWN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pykerberos-1.1.13/pykerberos.egg-info/PKG-INFO new/pykerberos-1.1.14/pykerberos.egg-info/PKG-INFO --- old/pykerberos-1.1.13/pykerberos.egg-info/PKG-INFO 2016-06-03 04:21:48.000000000 +0200 +++ new/pykerberos-1.1.14/pykerberos.egg-info/PKG-INFO 2017-01-26 08:32:40.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pykerberos -Version: 1.1.13 +Version: 1.1.14 Summary: High-level interface to Kerberos Home-page: UNKNOWN Author: UNKNOWN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pykerberos-1.1.13/pysrc/kerberos.py new/pykerberos-1.1.14/pysrc/kerberos.py --- old/pykerberos-1.1.13/pysrc/kerberos.py 2016-05-30 07:38:36.000000000 +0200 +++ new/pykerberos-1.1.14/pysrc/kerberos.py 2017-01-26 08:32:32.000000000 +0100 @@ -101,7 +101,7 @@ GSS_C_PROT_READY_FLAG = 128 GSS_C_TRANS_FLAG = 256 -def authGSSClientInit(service, principal=None, gssflags=GSS_C_MUTUAL_FLAG|GSS_C_SEQUENCE_FLAG): +def authGSSClientInit(service, principal=None, gssflags=GSS_C_MUTUAL_FLAG|GSS_C_SEQUENCE_FLAG, mech_oid=None): """ 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 @@ -114,6 +114,8 @@ @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 for forwarding credentials to the remote host) + @param mech_oid: Optional GSS mech OID. Defaults to None (GSS_C_NO_OID). + Other possible values are GSS_MECH_OID_KRB5, GSS_MECH_OID_SPNEGO. @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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pykerberos-1.1.13/setup.py new/pykerberos-1.1.14/setup.py --- old/pykerberos-1.1.13/setup.py 2016-06-03 04:21:00.000000000 +0200 +++ new/pykerberos-1.1.14/setup.py 2017-01-26 08:32:32.000000000 +0100 @@ -58,7 +58,7 @@ setup ( name = "pykerberos", - version = "1.1.13", + version = "1.1.14", description = "High-level interface to Kerberos", long_description=long_description, license="ASL 2.0", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pykerberos-1.1.13/src/kerberos.c new/pykerberos-1.1.14/src/kerberos.c --- old/pykerberos-1.1.13/src/kerberos.c 2016-05-30 07:38:36.000000000 +0200 +++ new/pykerberos-1.1.14/src/kerberos.c 2017-01-26 08:32:32.000000000 +0100 @@ -34,6 +34,12 @@ #define PyClear(object) PyCObject_SetVoidPtr(object, NULL) #endif +static char krb5_mech_oid_bytes [] = "\x2a\x86\x48\x86\xf7\x12\x01\x02\x02"; +gss_OID_desc krb5_mech_oid = { 9, &krb5_mech_oid_bytes }; + +static char spnego_mech_oid_bytes[] = "\x2b\x06\x01\x05\x05\x02"; +gss_OID_desc spnego_mech_oid = { 6, &spnego_mech_oid_bytes }; + PyObject *KrbException_class; PyObject *BasicAuthException_class; PyObject *PwdChangeException_class; @@ -120,18 +126,32 @@ const char *principal = NULL; gss_client_state *state; PyObject *pystate; - static char *kwlist[] = {"service", "principal", "gssflags", NULL}; + gss_OID mech_oid = GSS_C_NO_OID; + PyObject *pymech_oid = NULL; + static char *kwlist[] = {"service", "principal", "gssflags", "mech_oid", NULL}; long int gss_flags = GSS_C_MUTUAL_FLAG | GSS_C_SEQUENCE_FLAG; int result = 0; - if (!PyArg_ParseTupleAndKeywords(args, keywds, "s|zl", kwlist, &service, &principal, &gss_flags)) { + if (!PyArg_ParseTupleAndKeywords(args, keywds, "s|zlO", kwlist, &service, &principal, &gss_flags, &pymech_oid)) { return NULL; } + if (pymech_oid != NULL) { + if (!PyCheck(pymech_oid)) { + PyErr_SetString(PyExc_TypeError, "Invalid type for mech_oid"); + return NULL; + } + mech_oid = PyGet(pymech_oid, gss_OID_desc); + if (mech_oid == NULL) { + PyErr_SetString(PyExc_TypeError, "Invalid value for mech_oid"); + return NULL; + } + } + state = (gss_client_state *) malloc(sizeof(gss_client_state)); pystate = PyNew(state, &destruct_client); - result = authenticate_gss_client_init(service, principal, gss_flags, state); + result = authenticate_gss_client_init(service, principal, gss_flags, mech_oid, state); if (result == AUTH_GSS_ERROR) { return NULL; } @@ -597,6 +617,8 @@ 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)); + PyDict_SetItemString(d, "GSS_MECH_OID_KRB5", PyNew(&krb5_mech_oid, NULL)); + PyDict_SetItemString(d, "GSS_MECH_OID_SPNEGO", PyNew(&spnego_mech_oid, NULL)); error: if (PyErr_Occurred()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pykerberos-1.1.13/src/kerberosgss.c new/pykerberos-1.1.14/src/kerberosgss.c --- old/pykerberos-1.1.13/src/kerberosgss.c 2016-05-27 03:39:58.000000000 +0200 +++ new/pykerberos-1.1.14/src/kerberosgss.c 2017-01-26 08:32:32.000000000 +0100 @@ -106,7 +106,7 @@ return result; } -int authenticate_gss_client_init(const char* service, const char* principal, long int gss_flags, gss_client_state* state) +int authenticate_gss_client_init(const char* service, const char* principal, long int gss_flags, gss_OID mech_oid, gss_client_state* state) { OM_uint32 maj_stat; OM_uint32 min_stat; @@ -116,6 +116,7 @@ gss_OID mech; state->server_name = GSS_C_NO_NAME; + state->mech_oid = mech_oid; state->context = GSS_C_NO_CONTEXT; state->gss_flags = gss_flags; state->client_creds = GSS_C_NO_CREDENTIAL; @@ -234,7 +235,7 @@ state->client_creds, &state->context, state->server_name, - GSS_C_NO_OID, + state->mech_oid, (OM_uint32)state->gss_flags, 0, NULL, //GSS_C_NO_CHANNEL_BINDINGS, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pykerberos-1.1.13/src/kerberosgss.h new/pykerberos-1.1.14/src/kerberosgss.h --- old/pykerberos-1.1.13/src/kerberosgss.h 2015-04-14 07:01:38.000000000 +0200 +++ new/pykerberos-1.1.14/src/kerberosgss.h 2017-01-26 08:32:32.000000000 +0100 @@ -33,6 +33,7 @@ typedef struct { gss_ctx_id_t context; gss_name_t server_name; + gss_OID mech_oid; long int gss_flags; gss_cred_id_t client_creds; char* username; @@ -53,7 +54,7 @@ char* server_principal_details(const char* service, const char* hostname); -int authenticate_gss_client_init(const char* service, const char* principal, long int gss_flags, gss_client_state* state); +int authenticate_gss_client_init(const char* service, const char* principal, long int gss_flags, gss_OID mech_oid, 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);
