Port Python bindings of samba.credentials module to
Python3-compatible form using macros from py3compat.h.
Signed-off-by: Lumir Balhar <lbalhar@redhat.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+#include "python/py3compat.h"
#include "includes.h"
#include "pycredentials.h"
#include "param/param.h"
#include "includes.h"
#include "pycredentials.h"
#include "param/param.h"
{
if (str == NULL)
Py_RETURN_NONE;
{
if (str == NULL)
Py_RETURN_NONE;
- return PyString_FromString(str);
+ return PyStr_FromString(str);
}
static PyObject *py_creds_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
}
static PyObject *py_creds_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
struct samr_Password *ntpw = cli_credentials_get_nt_hash(creds, creds);
struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
struct samr_Password *ntpw = cli_credentials_get_nt_hash(creds, creds);
- ret = PyString_FromStringAndSize(discard_const_p(char, ntpw->hash), 16);
+ ret = PyBytes_FromStringAndSize(discard_const_p(char, ntpw->hash), 16);
TALLOC_FREE(ntpw);
return ret;
}
TALLOC_FREE(ntpw);
return ret;
}
+static struct PyModuleDef moduledef = {
+ PyModuleDef_HEAD_INIT,
+ .m_name = "credentials",
+ .m_doc = "Credentials management.",
+ .m_size = -1,
+ .m_methods = py_creds_methods,
+};
+
PyTypeObject PyCredentials = {
.tp_name = "credentials.Credentials",
.tp_new = py_creds_new,
PyTypeObject PyCredentials = {
.tp_name = "credentials.Credentials",
.tp_new = py_creds_new,
.tp_flags = Py_TPFLAGS_DEFAULT,
};
.tp_flags = Py_TPFLAGS_DEFAULT,
};
-void initcredentials(void)
+MODULE_INIT_FUNC(credentials)
{
PyObject *m;
if (pytalloc_BaseObject_PyType_Ready(&PyCredentials) < 0)
{
PyObject *m;
if (pytalloc_BaseObject_PyType_Ready(&PyCredentials) < 0)
if (pytalloc_BaseObject_PyType_Ready(&PyCredentialCacheContainer) < 0)
if (pytalloc_BaseObject_PyType_Ready(&PyCredentialCacheContainer) < 0)
- m = Py_InitModule3("credentials", NULL, "Credentials management.");
+ m = PyModule_Create(&moduledef);
PyModule_AddObject(m, "UNINITIALISED", PyInt_FromLong(CRED_UNINITIALISED));
PyModule_AddObject(m, "CALLBACK", PyInt_FromLong(CRED_CALLBACK));
PyModule_AddObject(m, "UNINITIALISED", PyInt_FromLong(CRED_UNINITIALISED));
PyModule_AddObject(m, "CALLBACK", PyInt_FromLong(CRED_CALLBACK));
PyModule_AddObject(m, "Credentials", (PyObject *)&PyCredentials);
Py_INCREF(&PyCredentialCacheContainer);
PyModule_AddObject(m, "CredentialCacheContainer", (PyObject *)&PyCredentialCacheContainer);
PyModule_AddObject(m, "Credentials", (PyObject *)&PyCredentials);
Py_INCREF(&PyCredentialCacheContainer);
PyModule_AddObject(m, "CredentialCacheContainer", (PyObject *)&PyCredentialCacheContainer);