2 /* Python wrapper functions auto-generated by pidl */
6 #include "librpc/rpc/pyrpc.h"
7 #include "librpc/rpc/pyrpc_util.h"
8 #include "bin/default/source4/librpc/gen_ndr/ndr_ntp_signd.h"
9 #include "bin/default/source4/librpc/gen_ndr/ndr_ntp_signd_c.h"
11 staticforward PyTypeObject sign_request_Type;
12 staticforward PyTypeObject signed_reply_Type;
13 staticforward PyTypeObject ntp_signd_InterfaceType;
15 void initntp_signd(void);static PyTypeObject *Object_Type;
16 static PyTypeObject *ClientConnection_Type;
18 static PyObject *py_sign_request_get_version(PyObject *obj, void *closure)
20 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(obj);
22 py_version = PyInt_FromLong(object->version);
26 static int py_sign_request_set_version(PyObject *py_obj, PyObject *value, void *closure)
28 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(py_obj);
29 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
30 object->version = PyInt_AsLong(value);
34 static PyObject *py_sign_request_get_op(PyObject *obj, void *closure)
36 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(obj);
38 py_op = PyInt_FromLong(object->op);
42 static int py_sign_request_set_op(PyObject *py_obj, PyObject *value, void *closure)
44 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(py_obj);
45 if (PyLong_Check(value)) {
46 object->op = PyLong_AsLongLong(value);
47 } else if (PyInt_Check(value)) {
48 object->op = PyInt_AsLong(value);
50 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
51 PyInt_Type.tp_name, PyLong_Type.tp_name);
57 static PyObject *py_sign_request_get_packet_id(PyObject *obj, void *closure)
59 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(obj);
60 PyObject *py_packet_id;
61 py_packet_id = PyInt_FromLong(object->packet_id);
65 static int py_sign_request_set_packet_id(PyObject *py_obj, PyObject *value, void *closure)
67 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(py_obj);
68 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
69 object->packet_id = PyInt_AsLong(value);
73 static PyObject *py_sign_request_get_key_id(PyObject *obj, void *closure)
75 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(obj);
77 py_key_id = PyInt_FromLong(object->key_id);
81 static int py_sign_request_set_key_id(PyObject *py_obj, PyObject *value, void *closure)
83 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(py_obj);
84 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
85 object->key_id = PyInt_AsLong(value);
89 static PyObject *py_sign_request_get_packet_to_sign(PyObject *obj, void *closure)
91 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(obj);
92 PyObject *py_packet_to_sign;
93 py_packet_to_sign = PyString_FromStringAndSize((char *)(object->packet_to_sign).data, (object->packet_to_sign).length);
94 return py_packet_to_sign;
97 static int py_sign_request_set_packet_to_sign(PyObject *py_obj, PyObject *value, void *closure)
99 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(py_obj);
100 object->packet_to_sign = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value));
104 static PyGetSetDef py_sign_request_getsetters[] = {
105 { discard_const_p(char, "version"), py_sign_request_get_version, py_sign_request_set_version },
106 { discard_const_p(char, "op"), py_sign_request_get_op, py_sign_request_set_op },
107 { discard_const_p(char, "packet_id"), py_sign_request_get_packet_id, py_sign_request_set_packet_id },
108 { discard_const_p(char, "key_id"), py_sign_request_get_key_id, py_sign_request_set_key_id },
109 { discard_const_p(char, "packet_to_sign"), py_sign_request_get_packet_to_sign, py_sign_request_set_packet_to_sign },
113 static PyObject *py_sign_request_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
115 return pytalloc_new(struct sign_request, type);
118 static PyObject *py_sign_request_ndr_pack(PyObject *py_obj)
120 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(py_obj);
122 enum ndr_err_code err;
123 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_sign_request);
124 if (err != NDR_ERR_SUCCESS) {
125 PyErr_SetNdrError(err);
129 return PyString_FromStringAndSize((char *)blob.data, blob.length);
132 static PyObject *py_sign_request_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
134 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(py_obj);
137 enum ndr_err_code err;
138 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
139 PyObject *allow_remaining_obj = NULL;
140 bool allow_remaining = false;
142 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
143 discard_const_p(char *, kwnames),
144 &blob.data, &blob_length,
145 &allow_remaining_obj)) {
148 blob.length = blob_length;
150 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
151 allow_remaining = true;
154 if (allow_remaining) {
155 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_sign_request);
157 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_sign_request);
159 if (err != NDR_ERR_SUCCESS) {
160 PyErr_SetNdrError(err);
167 static PyObject *py_sign_request_ndr_print(PyObject *py_obj)
169 struct sign_request *object = (struct sign_request *)pytalloc_get_ptr(py_obj);
173 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_sign_request, "sign_request", object);
174 ret = PyString_FromString(retstr);
180 static PyMethodDef py_sign_request_methods[] = {
181 { "__ndr_pack__", (PyCFunction)py_sign_request_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
182 { "__ndr_unpack__", (PyCFunction)py_sign_request_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
183 { "__ndr_print__", (PyCFunction)py_sign_request_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
184 { NULL, NULL, 0, NULL }
188 static PyTypeObject sign_request_Type = {
189 PyObject_HEAD_INIT(NULL) 0,
190 .tp_name = "ntp_signd.sign_request",
191 .tp_getset = py_sign_request_getsetters,
192 .tp_methods = py_sign_request_methods,
193 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
194 .tp_basicsize = sizeof(pytalloc_Object),
195 .tp_new = py_sign_request_new,
199 static PyObject *py_signed_reply_get_version(PyObject *obj, void *closure)
201 struct signed_reply *object = (struct signed_reply *)pytalloc_get_ptr(obj);
202 PyObject *py_version;
203 py_version = PyInt_FromLong(object->version);
207 static int py_signed_reply_set_version(PyObject *py_obj, PyObject *value, void *closure)
209 struct signed_reply *object = (struct signed_reply *)pytalloc_get_ptr(py_obj);
210 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
211 object->version = PyInt_AsLong(value);
215 static PyObject *py_signed_reply_get_op(PyObject *obj, void *closure)
217 struct signed_reply *object = (struct signed_reply *)pytalloc_get_ptr(obj);
219 py_op = PyInt_FromLong(object->op);
223 static int py_signed_reply_set_op(PyObject *py_obj, PyObject *value, void *closure)
225 struct signed_reply *object = (struct signed_reply *)pytalloc_get_ptr(py_obj);
226 if (PyLong_Check(value)) {
227 object->op = PyLong_AsLongLong(value);
228 } else if (PyInt_Check(value)) {
229 object->op = PyInt_AsLong(value);
231 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
232 PyInt_Type.tp_name, PyLong_Type.tp_name);
238 static PyObject *py_signed_reply_get_packet_id(PyObject *obj, void *closure)
240 struct signed_reply *object = (struct signed_reply *)pytalloc_get_ptr(obj);
241 PyObject *py_packet_id;
242 py_packet_id = PyInt_FromLong(object->packet_id);
246 static int py_signed_reply_set_packet_id(PyObject *py_obj, PyObject *value, void *closure)
248 struct signed_reply *object = (struct signed_reply *)pytalloc_get_ptr(py_obj);
249 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
250 object->packet_id = PyInt_AsLong(value);
254 static PyObject *py_signed_reply_get_signed_packet(PyObject *obj, void *closure)
256 struct signed_reply *object = (struct signed_reply *)pytalloc_get_ptr(obj);
257 PyObject *py_signed_packet;
258 py_signed_packet = PyString_FromStringAndSize((char *)(object->signed_packet).data, (object->signed_packet).length);
259 return py_signed_packet;
262 static int py_signed_reply_set_signed_packet(PyObject *py_obj, PyObject *value, void *closure)
264 struct signed_reply *object = (struct signed_reply *)pytalloc_get_ptr(py_obj);
265 object->signed_packet = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value));
269 static PyGetSetDef py_signed_reply_getsetters[] = {
270 { discard_const_p(char, "version"), py_signed_reply_get_version, py_signed_reply_set_version },
271 { discard_const_p(char, "op"), py_signed_reply_get_op, py_signed_reply_set_op },
272 { discard_const_p(char, "packet_id"), py_signed_reply_get_packet_id, py_signed_reply_set_packet_id },
273 { discard_const_p(char, "signed_packet"), py_signed_reply_get_signed_packet, py_signed_reply_set_signed_packet },
277 static PyObject *py_signed_reply_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
279 return pytalloc_new(struct signed_reply, type);
282 static PyObject *py_signed_reply_ndr_pack(PyObject *py_obj)
284 struct signed_reply *object = (struct signed_reply *)pytalloc_get_ptr(py_obj);
286 enum ndr_err_code err;
287 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_signed_reply);
288 if (err != NDR_ERR_SUCCESS) {
289 PyErr_SetNdrError(err);
293 return PyString_FromStringAndSize((char *)blob.data, blob.length);
296 static PyObject *py_signed_reply_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
298 struct signed_reply *object = (struct signed_reply *)pytalloc_get_ptr(py_obj);
301 enum ndr_err_code err;
302 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
303 PyObject *allow_remaining_obj = NULL;
304 bool allow_remaining = false;
306 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
307 discard_const_p(char *, kwnames),
308 &blob.data, &blob_length,
309 &allow_remaining_obj)) {
312 blob.length = blob_length;
314 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
315 allow_remaining = true;
318 if (allow_remaining) {
319 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_signed_reply);
321 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_signed_reply);
323 if (err != NDR_ERR_SUCCESS) {
324 PyErr_SetNdrError(err);
331 static PyObject *py_signed_reply_ndr_print(PyObject *py_obj)
333 struct signed_reply *object = (struct signed_reply *)pytalloc_get_ptr(py_obj);
337 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_signed_reply, "signed_reply", object);
338 ret = PyString_FromString(retstr);
344 static PyMethodDef py_signed_reply_methods[] = {
345 { "__ndr_pack__", (PyCFunction)py_signed_reply_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
346 { "__ndr_unpack__", (PyCFunction)py_signed_reply_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
347 { "__ndr_print__", (PyCFunction)py_signed_reply_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
348 { NULL, NULL, 0, NULL }
352 static PyTypeObject signed_reply_Type = {
353 PyObject_HEAD_INIT(NULL) 0,
354 .tp_name = "ntp_signd.signed_reply",
355 .tp_getset = py_signed_reply_getsetters,
356 .tp_methods = py_signed_reply_methods,
357 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
358 .tp_basicsize = sizeof(pytalloc_Object),
359 .tp_new = py_signed_reply_new,
363 static bool pack_py_decode_sign_requst_args_in(PyObject *args, PyObject *kwargs, struct decode_sign_requst *r)
365 PyObject *py_request;
366 const char *kwnames[] = {
370 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:decode_sign_requst", discard_const_p(char *, kwnames), &py_request)) {
374 PY_CHECK_TYPE(&sign_request_Type, py_request, return false;);
375 if (talloc_reference(r, pytalloc_get_mem_ctx(py_request)) == NULL) {
379 r->in.request = *(struct sign_request *)pytalloc_get_ptr(py_request);
383 static PyObject *unpack_py_decode_sign_requst_args_out(struct decode_sign_requst *r)
391 const struct PyNdrRpcMethodDef py_ndr_ntp_signd_methods[] = {
392 { "decode_sign_requst", "S.decode_sign_requst(request) -> None", (py_dcerpc_call_fn)dcerpc_decode_sign_requst_r, (py_data_pack_fn)pack_py_decode_sign_requst_args_in, (py_data_unpack_fn)unpack_py_decode_sign_requst_args_out, 0, &ndr_table_ntp_signd },
396 static PyObject *interface_ntp_signd_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
398 return py_dcerpc_interface_init_helper(type, args, kwargs, &ndr_table_ntp_signd);
401 static PyTypeObject ntp_signd_InterfaceType = {
402 PyObject_HEAD_INIT(NULL) 0,
403 .tp_name = "ntp_signd.ntp_signd",
404 .tp_basicsize = sizeof(dcerpc_InterfaceObject),
405 .tp_doc = "ntp_signd(binding, lp_ctx=None, credentials=None) -> connection\n"
407 "binding should be a DCE/RPC binding string (for example: ncacn_ip_tcp:127.0.0.1)\n"
408 "lp_ctx should be a path to a smb.conf file or a param.LoadParm object\n"
409 "credentials should be a credentials.Credentials object.\n\n",
410 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
411 .tp_new = interface_ntp_signd_new,
414 static PyMethodDef ntp_signd_methods[] = {
415 { NULL, NULL, 0, NULL }
418 void initntp_signd(void)
421 PyObject *dep_talloc;
422 PyObject *dep_samba_dcerpc_base;
424 dep_talloc = PyImport_ImportModule("talloc");
425 if (dep_talloc == NULL)
428 dep_samba_dcerpc_base = PyImport_ImportModule("samba.dcerpc.base");
429 if (dep_samba_dcerpc_base == NULL)
432 Object_Type = (PyTypeObject *)PyObject_GetAttrString(dep_talloc, "Object");
433 if (Object_Type == NULL)
436 ClientConnection_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_base, "ClientConnection");
437 if (ClientConnection_Type == NULL)
440 sign_request_Type.tp_base = Object_Type;
442 signed_reply_Type.tp_base = Object_Type;
444 ntp_signd_InterfaceType.tp_base = ClientConnection_Type;
446 if (PyType_Ready(&sign_request_Type) < 0)
448 if (PyType_Ready(&signed_reply_Type) < 0)
450 if (PyType_Ready(&ntp_signd_InterfaceType) < 0)
452 if (!PyInterface_AddNdrRpcMethods(&ntp_signd_InterfaceType, py_ndr_ntp_signd_methods))
455 #ifdef PY_SIGN_REQUEST_PATCH
456 PY_SIGN_REQUEST_PATCH(&sign_request_Type);
458 #ifdef PY_SIGNED_REPLY_PATCH
459 PY_SIGNED_REPLY_PATCH(&signed_reply_Type);
461 #ifdef PY_NTP_SIGND_PATCH
462 PY_NTP_SIGND_PATCH(&ntp_signd_InterfaceType);
465 m = Py_InitModule3("ntp_signd", ntp_signd_methods, "ntp_signd DCE/RPC");
469 PyModule_AddObject(m, "SIGNING_SUCCESS", PyInt_FromLong(SIGNING_SUCCESS));
470 PyModule_AddObject(m, "SIGN_TO_CLIENT", PyInt_FromLong(SIGN_TO_CLIENT));
471 PyModule_AddObject(m, "NTP_SIGND_PROTOCOL_VERSION_0", PyInt_FromLong(0));
472 PyModule_AddObject(m, "SIGNING_FAILURE", PyInt_FromLong(SIGNING_FAILURE));
473 PyModule_AddObject(m, "CHECK_SERVER_SIGNATURE", PyInt_FromLong(CHECK_SERVER_SIGNATURE));
474 PyModule_AddObject(m, "ASK_SERVER_TO_SIGN", PyInt_FromLong(ASK_SERVER_TO_SIGN));
475 Py_INCREF((PyObject *)(void *)&sign_request_Type);
476 PyModule_AddObject(m, "sign_request", (PyObject *)(void *)&sign_request_Type);
477 Py_INCREF((PyObject *)(void *)&signed_reply_Type);
478 PyModule_AddObject(m, "signed_reply", (PyObject *)(void *)&signed_reply_Type);
479 Py_INCREF((PyObject *)(void *)&ntp_signd_InterfaceType);
480 PyModule_AddObject(m, "ntp_signd", (PyObject *)(void *)&ntp_signd_InterfaceType);
481 #ifdef PY_MOD_NTP_SIGND_PATCH
482 PY_MOD_NTP_SIGND_PATCH(m);