From 9dd89361c2bca656ee113b25f41c8a9fb3bbabeb Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 6 Jul 2017 14:47:01 +1200 Subject: pycredentials: Add get_name() for a credentials cache Signed-off-by: Andrew Bartlett Reviewed-by: Jeremy Allison Reviewed-by: Andreas Schneider --- auth/credentials/pycredentials.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'auth') diff --git a/auth/credentials/pycredentials.c b/auth/credentials/pycredentials.c index 0a29c586322..a55529141b5 100644 --- a/auth/credentials/pycredentials.c +++ b/auth/credentials/pycredentials.c @@ -31,6 +31,8 @@ #include #include "libcli/auth/libcli_auth.h" #include "auth/credentials/credentials_internal.h" +#include "system/kerberos.h" +#include "auth/kerberos/kerberos.h" void initcredentials(void); @@ -793,10 +795,38 @@ PyTypeObject PyCredentials = { .tp_methods = py_creds_methods, }; +static PyObject *py_ccache_name(PyObject *self, PyObject *unused) +{ + struct ccache_container *ccc = NULL; + char *name = NULL; + PyObject *py_name = NULL; + int ret; + + ccc = pytalloc_get_type(self, struct ccache_container); + + ret = krb5_cc_get_full_name(ccc->smb_krb5_context->krb5_context, + ccc->ccache, &name); + if (ret == 0) { + py_name = PyString_FromStringOrNULL(name); + SAFE_FREE(name); + } else { + PyErr_SetString(PyExc_RuntimeError, + "Failed to get ccache name"); + return NULL; + } + return py_name; +} + +static PyMethodDef py_ccache_container_methods[] = { + { "get_name", py_ccache_name, METH_NOARGS, + "S.get_name() -> name\nObtain KRB5 credentials cache name." }, + { NULL } +}; PyTypeObject PyCredentialCacheContainer = { .tp_name = "credentials.CredentialCacheContainer", .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_methods = py_ccache_container_methods, }; MODULE_INIT_FUNC(credentials) -- cgit v1.2.1