diff options
author | Andrew Bartlett <abartlet@samba.org> | 2017-07-06 14:47:01 +1200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2017-07-28 00:25:13 +0200 |
commit | 9dd89361c2bca656ee113b25f41c8a9fb3bbabeb (patch) | |
tree | eda0a6544c0ead5ef240f22bb8049ece174d8551 | |
parent | 35cbed2934ded2ea1ebc27b893526e3d7d2da6de (diff) | |
download | samba-9dd89361c2bca656ee113b25f41c8a9fb3bbabeb.tar.gz |
pycredentials: Add get_name() for a credentials cache
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
-rw-r--r-- | auth/credentials/pycredentials.c | 30 |
1 files changed, 30 insertions, 0 deletions
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 <tevent.h> #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) |