diff options
author | Andrew Bartlett <abartlet@samba.org> | 2017-07-06 14:51:22 +1200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2017-07-28 00:25:14 +0200 |
commit | dc940ad0e0dfd62d4c7375edaa6bf70a2c9efe1e (patch) | |
tree | 4d68e9deca5baab53282826b539f2368104f6693 /auth | |
parent | a5f62958cccdef7f4938f64c1033cd263b1f2e0e (diff) | |
download | samba-dc940ad0e0dfd62d4c7375edaa6bf70a2c9efe1e.tar.gz |
pycredentials: Add set_named_ccache()
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Diffstat (limited to 'auth')
-rw-r--r-- | auth/credentials/pycredentials.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/auth/credentials/pycredentials.c b/auth/credentials/pycredentials.c index a55529141b5..638ae8de2ed 100644 --- a/auth/credentials/pycredentials.c +++ b/auth/credentials/pycredentials.c @@ -571,6 +571,48 @@ static PyObject *py_creds_get_named_ccache(PyObject *self, PyObject *args) return NULL; } +static PyObject *py_creds_set_named_ccache(PyObject *self, PyObject *args) +{ + struct loadparm_context *lp_ctx = NULL; + enum credentials_obtained obt = CRED_SPECIFIED; + const char *error_string = NULL; + TALLOC_CTX *mem_ctx = NULL; + char *newval = NULL; + PyObject *py_lp_ctx = Py_None; + int _obt = obt; + int ret; + + if (!PyArg_ParseTuple(args, "s|iO", &newval, &_obt, &py_lp_ctx)) + return NULL; + + mem_ctx = talloc_new(NULL); + if (mem_ctx == NULL) { + PyErr_NoMemory(); + return NULL; + } + + lp_ctx = lpcfg_from_py_object(mem_ctx, py_lp_ctx); + if (lp_ctx == NULL) { + talloc_free(mem_ctx); + return NULL; + } + + ret = cli_credentials_set_ccache(PyCredentials_AsCliCredentials(self), + lp_ctx, + newval, CRED_SPECIFIED, + &error_string); + + if (ret != 0) { + PyErr_SetString(PyExc_RuntimeError, + error_string != NULL ? error_string : "NULL"); + talloc_free(mem_ctx); + return NULL; + } + + talloc_free(mem_ctx); + Py_RETURN_NONE; +} + static PyObject *py_creds_set_gensec_features(PyObject *self, PyObject *args) { unsigned int gensec_features; @@ -756,6 +798,9 @@ static PyMethodDef py_creds_methods[] = { { "guess", py_creds_guess, METH_VARARGS, NULL }, { "set_machine_account", py_creds_set_machine_account, METH_VARARGS, NULL }, { "get_named_ccache", py_creds_get_named_ccache, METH_VARARGS, NULL }, + { "set_named_ccache", py_creds_set_named_ccache, METH_VARARGS, + "S.set_named_ccache(krb5_ccache_name, obtained, lp) -> None\n" + "Set credentials to KRB5 Credentials Cache (by name)." }, { "set_gensec_features", py_creds_set_gensec_features, METH_VARARGS, NULL }, { "get_gensec_features", py_creds_get_gensec_features, METH_NOARGS, NULL }, { "get_forced_sasl_mech", py_creds_get_forced_sasl_mech, METH_NOARGS, |