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/librpc/gen_ndr/ndr_krb5pac.h"
9 #include "bin/default/librpc/gen_ndr/ndr_krb5pac_c.h"
11 #include "librpc/gen_ndr/security.h"
12 #include "librpc/gen_ndr/lsa.h"
13 #include "librpc/gen_ndr/netlogon.h"
14 #include "librpc/gen_ndr/samr.h"
15 staticforward PyTypeObject PAC_LOGON_NAME_Type;
16 staticforward PyTypeObject PAC_SIGNATURE_DATA_Type;
17 staticforward PyTypeObject PAC_LOGON_INFO_Type;
18 staticforward PyTypeObject PAC_CONSTRAINED_DELEGATION_Type;
19 staticforward PyTypeObject PAC_UPN_DNS_INFO_Type;
20 staticforward PyTypeObject PAC_LOGON_INFO_CTR_Type;
21 staticforward PyTypeObject PAC_CONSTRAINED_DELEGATION_CTR_Type;
22 staticforward PyTypeObject DATA_BLOB_REM_Type;
23 staticforward PyTypeObject PAC_BUFFER_Type;
24 staticforward PyTypeObject PAC_DATA_Type;
25 staticforward PyTypeObject PAC_BUFFER_RAW_Type;
26 staticforward PyTypeObject PAC_DATA_RAW_Type;
27 staticforward PyTypeObject PAC_Validate_Type;
28 staticforward PyTypeObject netsamlogoncache_entry_Type;
29 staticforward PyTypeObject krb5pac_InterfaceType;
31 void initkrb5pac(void);static PyTypeObject *lsa_String_Type;
32 static PyTypeObject *dom_sid_Type;
33 static PyTypeObject *netr_SamInfo3_Type;
34 static PyTypeObject *Object_Type;
35 static PyTypeObject *ClientConnection_Type;
36 static PyTypeObject *samr_RidWithAttributeArray_Type;
38 static PyObject *py_PAC_LOGON_NAME_get_logon_time(PyObject *obj, void *closure)
40 struct PAC_LOGON_NAME *object = (struct PAC_LOGON_NAME *)pytalloc_get_ptr(obj);
41 PyObject *py_logon_time;
42 py_logon_time = PyLong_FromLongLong(object->logon_time);
46 static int py_PAC_LOGON_NAME_set_logon_time(PyObject *py_obj, PyObject *value, void *closure)
48 struct PAC_LOGON_NAME *object = (struct PAC_LOGON_NAME *)pytalloc_get_ptr(py_obj);
49 if (PyLong_Check(value)) {
50 object->logon_time = PyLong_AsLongLong(value);
51 } else if (PyInt_Check(value)) {
52 object->logon_time = PyInt_AsLong(value);
54 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
55 PyInt_Type.tp_name, PyLong_Type.tp_name);
61 static PyObject *py_PAC_LOGON_NAME_get_size(PyObject *obj, void *closure)
63 struct PAC_LOGON_NAME *object = (struct PAC_LOGON_NAME *)pytalloc_get_ptr(obj);
65 py_size = PyInt_FromLong(object->size);
69 static int py_PAC_LOGON_NAME_set_size(PyObject *py_obj, PyObject *value, void *closure)
71 struct PAC_LOGON_NAME *object = (struct PAC_LOGON_NAME *)pytalloc_get_ptr(py_obj);
72 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
73 object->size = PyInt_AsLong(value);
77 static PyObject *py_PAC_LOGON_NAME_get_account_name(PyObject *obj, void *closure)
79 struct PAC_LOGON_NAME *object = (struct PAC_LOGON_NAME *)pytalloc_get_ptr(obj);
80 PyObject *py_account_name;
81 if (object->account_name == NULL) {
82 py_account_name = Py_None;
83 Py_INCREF(py_account_name);
85 py_account_name = PyUnicode_Decode(object->account_name, strlen(object->account_name), "utf-8", "ignore");
87 return py_account_name;
90 static int py_PAC_LOGON_NAME_set_account_name(PyObject *py_obj, PyObject *value, void *closure)
92 struct PAC_LOGON_NAME *object = (struct PAC_LOGON_NAME *)pytalloc_get_ptr(py_obj);
93 if (PyUnicode_Check(value)) {
94 object->account_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
95 } else if (PyString_Check(value)) {
96 object->account_name = PyString_AS_STRING(value);
98 PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
104 static PyGetSetDef py_PAC_LOGON_NAME_getsetters[] = {
105 { discard_const_p(char, "logon_time"), py_PAC_LOGON_NAME_get_logon_time, py_PAC_LOGON_NAME_set_logon_time },
106 { discard_const_p(char, "size"), py_PAC_LOGON_NAME_get_size, py_PAC_LOGON_NAME_set_size },
107 { discard_const_p(char, "account_name"), py_PAC_LOGON_NAME_get_account_name, py_PAC_LOGON_NAME_set_account_name },
111 static PyObject *py_PAC_LOGON_NAME_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
113 return pytalloc_new(struct PAC_LOGON_NAME, type);
117 static PyTypeObject PAC_LOGON_NAME_Type = {
118 PyObject_HEAD_INIT(NULL) 0,
119 .tp_name = "krb5pac.PAC_LOGON_NAME",
120 .tp_getset = py_PAC_LOGON_NAME_getsetters,
122 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
123 .tp_basicsize = sizeof(pytalloc_Object),
124 .tp_new = py_PAC_LOGON_NAME_new,
128 static PyObject *py_PAC_SIGNATURE_DATA_get_type(PyObject *obj, void *closure)
130 struct PAC_SIGNATURE_DATA *object = (struct PAC_SIGNATURE_DATA *)pytalloc_get_ptr(obj);
132 py_type = PyInt_FromLong(object->type);
136 static int py_PAC_SIGNATURE_DATA_set_type(PyObject *py_obj, PyObject *value, void *closure)
138 struct PAC_SIGNATURE_DATA *object = (struct PAC_SIGNATURE_DATA *)pytalloc_get_ptr(py_obj);
139 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
140 object->type = PyInt_AsLong(value);
144 static PyObject *py_PAC_SIGNATURE_DATA_get_signature(PyObject *obj, void *closure)
146 struct PAC_SIGNATURE_DATA *object = (struct PAC_SIGNATURE_DATA *)pytalloc_get_ptr(obj);
147 PyObject *py_signature;
148 py_signature = PyString_FromStringAndSize((char *)(object->signature).data, (object->signature).length);
152 static int py_PAC_SIGNATURE_DATA_set_signature(PyObject *py_obj, PyObject *value, void *closure)
154 struct PAC_SIGNATURE_DATA *object = (struct PAC_SIGNATURE_DATA *)pytalloc_get_ptr(py_obj);
155 object->signature = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value));
159 static PyGetSetDef py_PAC_SIGNATURE_DATA_getsetters[] = {
160 { discard_const_p(char, "type"), py_PAC_SIGNATURE_DATA_get_type, py_PAC_SIGNATURE_DATA_set_type },
161 { discard_const_p(char, "signature"), py_PAC_SIGNATURE_DATA_get_signature, py_PAC_SIGNATURE_DATA_set_signature },
165 static PyObject *py_PAC_SIGNATURE_DATA_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
167 return pytalloc_new(struct PAC_SIGNATURE_DATA, type);
170 static PyObject *py_PAC_SIGNATURE_DATA_ndr_pack(PyObject *py_obj)
172 struct PAC_SIGNATURE_DATA *object = (struct PAC_SIGNATURE_DATA *)pytalloc_get_ptr(py_obj);
174 enum ndr_err_code err;
175 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_PAC_SIGNATURE_DATA);
176 if (err != NDR_ERR_SUCCESS) {
177 PyErr_SetNdrError(err);
181 return PyString_FromStringAndSize((char *)blob.data, blob.length);
184 static PyObject *py_PAC_SIGNATURE_DATA_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
186 struct PAC_SIGNATURE_DATA *object = (struct PAC_SIGNATURE_DATA *)pytalloc_get_ptr(py_obj);
189 enum ndr_err_code err;
190 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
191 PyObject *allow_remaining_obj = NULL;
192 bool allow_remaining = false;
194 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
195 discard_const_p(char *, kwnames),
196 &blob.data, &blob_length,
197 &allow_remaining_obj)) {
200 blob.length = blob_length;
202 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
203 allow_remaining = true;
206 if (allow_remaining) {
207 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_SIGNATURE_DATA);
209 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_SIGNATURE_DATA);
211 if (err != NDR_ERR_SUCCESS) {
212 PyErr_SetNdrError(err);
219 static PyObject *py_PAC_SIGNATURE_DATA_ndr_print(PyObject *py_obj)
221 struct PAC_SIGNATURE_DATA *object = (struct PAC_SIGNATURE_DATA *)pytalloc_get_ptr(py_obj);
225 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_PAC_SIGNATURE_DATA, "PAC_SIGNATURE_DATA", object);
226 ret = PyString_FromString(retstr);
232 static PyMethodDef py_PAC_SIGNATURE_DATA_methods[] = {
233 { "__ndr_pack__", (PyCFunction)py_PAC_SIGNATURE_DATA_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
234 { "__ndr_unpack__", (PyCFunction)py_PAC_SIGNATURE_DATA_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
235 { "__ndr_print__", (PyCFunction)py_PAC_SIGNATURE_DATA_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
236 { NULL, NULL, 0, NULL }
240 static PyTypeObject PAC_SIGNATURE_DATA_Type = {
241 PyObject_HEAD_INIT(NULL) 0,
242 .tp_name = "krb5pac.PAC_SIGNATURE_DATA",
243 .tp_getset = py_PAC_SIGNATURE_DATA_getsetters,
244 .tp_methods = py_PAC_SIGNATURE_DATA_methods,
245 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
246 .tp_basicsize = sizeof(pytalloc_Object),
247 .tp_new = py_PAC_SIGNATURE_DATA_new,
251 static PyObject *py_PAC_LOGON_INFO_get_info3(PyObject *obj, void *closure)
253 struct PAC_LOGON_INFO *object = (struct PAC_LOGON_INFO *)pytalloc_get_ptr(obj);
255 py_info3 = pytalloc_reference_ex(netr_SamInfo3_Type, pytalloc_get_mem_ctx(obj), &object->info3);
259 static int py_PAC_LOGON_INFO_set_info3(PyObject *py_obj, PyObject *value, void *closure)
261 struct PAC_LOGON_INFO *object = (struct PAC_LOGON_INFO *)pytalloc_get_ptr(py_obj);
262 PY_CHECK_TYPE(netr_SamInfo3_Type, value, return -1;);
263 if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
267 object->info3 = *(struct netr_SamInfo3 *)pytalloc_get_ptr(value);
271 static PyObject *py_PAC_LOGON_INFO_get_res_group_dom_sid(PyObject *obj, void *closure)
273 struct PAC_LOGON_INFO *object = (struct PAC_LOGON_INFO *)pytalloc_get_ptr(obj);
274 PyObject *py_res_group_dom_sid;
275 if (object->res_group_dom_sid == NULL) {
276 py_res_group_dom_sid = Py_None;
277 Py_INCREF(py_res_group_dom_sid);
279 py_res_group_dom_sid = pytalloc_reference_ex(dom_sid_Type, object->res_group_dom_sid, object->res_group_dom_sid);
281 return py_res_group_dom_sid;
284 static int py_PAC_LOGON_INFO_set_res_group_dom_sid(PyObject *py_obj, PyObject *value, void *closure)
286 struct PAC_LOGON_INFO *object = (struct PAC_LOGON_INFO *)pytalloc_get_ptr(py_obj);
287 talloc_unlink(pytalloc_get_mem_ctx(py_obj), object->res_group_dom_sid);
288 if (value == Py_None) {
289 object->res_group_dom_sid = NULL;
291 object->res_group_dom_sid = NULL;
292 PY_CHECK_TYPE(dom_sid_Type, value, return -1;);
293 if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
297 object->res_group_dom_sid = (struct dom_sid *)pytalloc_get_ptr(value);
302 static PyObject *py_PAC_LOGON_INFO_get_res_groups(PyObject *obj, void *closure)
304 struct PAC_LOGON_INFO *object = (struct PAC_LOGON_INFO *)pytalloc_get_ptr(obj);
305 PyObject *py_res_groups;
306 py_res_groups = pytalloc_reference_ex(samr_RidWithAttributeArray_Type, pytalloc_get_mem_ctx(obj), &object->res_groups);
307 return py_res_groups;
310 static int py_PAC_LOGON_INFO_set_res_groups(PyObject *py_obj, PyObject *value, void *closure)
312 struct PAC_LOGON_INFO *object = (struct PAC_LOGON_INFO *)pytalloc_get_ptr(py_obj);
313 PY_CHECK_TYPE(samr_RidWithAttributeArray_Type, value, return -1;);
314 if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
318 object->res_groups = *(struct samr_RidWithAttributeArray *)pytalloc_get_ptr(value);
322 static PyGetSetDef py_PAC_LOGON_INFO_getsetters[] = {
323 { discard_const_p(char, "info3"), py_PAC_LOGON_INFO_get_info3, py_PAC_LOGON_INFO_set_info3 },
324 { discard_const_p(char, "res_group_dom_sid"), py_PAC_LOGON_INFO_get_res_group_dom_sid, py_PAC_LOGON_INFO_set_res_group_dom_sid },
325 { discard_const_p(char, "res_groups"), py_PAC_LOGON_INFO_get_res_groups, py_PAC_LOGON_INFO_set_res_groups },
329 static PyObject *py_PAC_LOGON_INFO_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
331 return pytalloc_new(struct PAC_LOGON_INFO, type);
335 static PyTypeObject PAC_LOGON_INFO_Type = {
336 PyObject_HEAD_INIT(NULL) 0,
337 .tp_name = "krb5pac.PAC_LOGON_INFO",
338 .tp_getset = py_PAC_LOGON_INFO_getsetters,
340 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
341 .tp_basicsize = sizeof(pytalloc_Object),
342 .tp_new = py_PAC_LOGON_INFO_new,
346 static PyObject *py_PAC_CONSTRAINED_DELEGATION_get_proxy_target(PyObject *obj, void *closure)
348 struct PAC_CONSTRAINED_DELEGATION *object = (struct PAC_CONSTRAINED_DELEGATION *)pytalloc_get_ptr(obj);
349 PyObject *py_proxy_target;
350 py_proxy_target = pytalloc_reference_ex(lsa_String_Type, pytalloc_get_mem_ctx(obj), &object->proxy_target);
351 return py_proxy_target;
354 static int py_PAC_CONSTRAINED_DELEGATION_set_proxy_target(PyObject *py_obj, PyObject *value, void *closure)
356 struct PAC_CONSTRAINED_DELEGATION *object = (struct PAC_CONSTRAINED_DELEGATION *)pytalloc_get_ptr(py_obj);
357 PY_CHECK_TYPE(lsa_String_Type, value, return -1;);
358 if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
362 object->proxy_target = *(struct lsa_String *)pytalloc_get_ptr(value);
366 static PyObject *py_PAC_CONSTRAINED_DELEGATION_get_num_transited_services(PyObject *obj, void *closure)
368 struct PAC_CONSTRAINED_DELEGATION *object = (struct PAC_CONSTRAINED_DELEGATION *)pytalloc_get_ptr(obj);
369 PyObject *py_num_transited_services;
370 py_num_transited_services = PyInt_FromLong(object->num_transited_services);
371 return py_num_transited_services;
374 static int py_PAC_CONSTRAINED_DELEGATION_set_num_transited_services(PyObject *py_obj, PyObject *value, void *closure)
376 struct PAC_CONSTRAINED_DELEGATION *object = (struct PAC_CONSTRAINED_DELEGATION *)pytalloc_get_ptr(py_obj);
377 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
378 object->num_transited_services = PyInt_AsLong(value);
382 static PyObject *py_PAC_CONSTRAINED_DELEGATION_get_transited_services(PyObject *obj, void *closure)
384 struct PAC_CONSTRAINED_DELEGATION *object = (struct PAC_CONSTRAINED_DELEGATION *)pytalloc_get_ptr(obj);
385 PyObject *py_transited_services;
386 if (object->transited_services == NULL) {
387 py_transited_services = Py_None;
388 Py_INCREF(py_transited_services);
390 py_transited_services = PyList_New(object->num_transited_services);
391 if (py_transited_services == NULL) {
395 int transited_services_cntr_1;
396 for (transited_services_cntr_1 = 0; transited_services_cntr_1 < object->num_transited_services; transited_services_cntr_1++) {
397 PyObject *py_transited_services_1;
398 py_transited_services_1 = pytalloc_reference_ex(lsa_String_Type, object->transited_services, &object->transited_services[transited_services_cntr_1]);
399 PyList_SetItem(py_transited_services, transited_services_cntr_1, py_transited_services_1);
403 return py_transited_services;
406 static int py_PAC_CONSTRAINED_DELEGATION_set_transited_services(PyObject *py_obj, PyObject *value, void *closure)
408 struct PAC_CONSTRAINED_DELEGATION *object = (struct PAC_CONSTRAINED_DELEGATION *)pytalloc_get_ptr(py_obj);
409 talloc_unlink(pytalloc_get_mem_ctx(py_obj), object->transited_services);
410 if (value == Py_None) {
411 object->transited_services = NULL;
413 object->transited_services = NULL;
414 PY_CHECK_TYPE(&PyList_Type, value, return -1;);
416 int transited_services_cntr_1;
417 object->transited_services = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->transited_services, PyList_GET_SIZE(value));
418 if (!object->transited_services) { return -1;; }
419 talloc_set_name_const(object->transited_services, "ARRAY: object->transited_services");
420 for (transited_services_cntr_1 = 0; transited_services_cntr_1 < PyList_GET_SIZE(value); transited_services_cntr_1++) {
421 PY_CHECK_TYPE(lsa_String_Type, PyList_GET_ITEM(value, transited_services_cntr_1), return -1;);
422 if (talloc_reference(object->transited_services, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, transited_services_cntr_1))) == NULL) {
426 object->transited_services[transited_services_cntr_1] = *(struct lsa_String *)pytalloc_get_ptr(PyList_GET_ITEM(value, transited_services_cntr_1));
433 static PyGetSetDef py_PAC_CONSTRAINED_DELEGATION_getsetters[] = {
434 { discard_const_p(char, "proxy_target"), py_PAC_CONSTRAINED_DELEGATION_get_proxy_target, py_PAC_CONSTRAINED_DELEGATION_set_proxy_target },
435 { discard_const_p(char, "num_transited_services"), py_PAC_CONSTRAINED_DELEGATION_get_num_transited_services, py_PAC_CONSTRAINED_DELEGATION_set_num_transited_services },
436 { discard_const_p(char, "transited_services"), py_PAC_CONSTRAINED_DELEGATION_get_transited_services, py_PAC_CONSTRAINED_DELEGATION_set_transited_services },
440 static PyObject *py_PAC_CONSTRAINED_DELEGATION_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
442 return pytalloc_new(struct PAC_CONSTRAINED_DELEGATION, type);
446 static PyTypeObject PAC_CONSTRAINED_DELEGATION_Type = {
447 PyObject_HEAD_INIT(NULL) 0,
448 .tp_name = "krb5pac.PAC_CONSTRAINED_DELEGATION",
449 .tp_getset = py_PAC_CONSTRAINED_DELEGATION_getsetters,
451 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
452 .tp_basicsize = sizeof(pytalloc_Object),
453 .tp_new = py_PAC_CONSTRAINED_DELEGATION_new,
457 static PyObject *py_PAC_UPN_DNS_INFO_get_upn_size(PyObject *obj, void *closure)
459 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(obj);
460 PyObject *py_upn_size;
461 py_upn_size = PyInt_FromLong(object->upn_size);
465 static int py_PAC_UPN_DNS_INFO_set_upn_size(PyObject *py_obj, PyObject *value, void *closure)
467 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(py_obj);
468 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
469 object->upn_size = PyInt_AsLong(value);
473 static PyObject *py_PAC_UPN_DNS_INFO_get_upn_offset(PyObject *obj, void *closure)
475 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(obj);
476 PyObject *py_upn_offset;
477 py_upn_offset = PyInt_FromLong(object->upn_offset);
478 return py_upn_offset;
481 static int py_PAC_UPN_DNS_INFO_set_upn_offset(PyObject *py_obj, PyObject *value, void *closure)
483 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(py_obj);
484 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
485 object->upn_offset = PyInt_AsLong(value);
489 static PyObject *py_PAC_UPN_DNS_INFO_get_domain_size(PyObject *obj, void *closure)
491 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(obj);
492 PyObject *py_domain_size;
493 py_domain_size = PyInt_FromLong(object->domain_size);
494 return py_domain_size;
497 static int py_PAC_UPN_DNS_INFO_set_domain_size(PyObject *py_obj, PyObject *value, void *closure)
499 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(py_obj);
500 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
501 object->domain_size = PyInt_AsLong(value);
505 static PyObject *py_PAC_UPN_DNS_INFO_get_domain_offset(PyObject *obj, void *closure)
507 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(obj);
508 PyObject *py_domain_offset;
509 py_domain_offset = PyInt_FromLong(object->domain_offset);
510 return py_domain_offset;
513 static int py_PAC_UPN_DNS_INFO_set_domain_offset(PyObject *py_obj, PyObject *value, void *closure)
515 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(py_obj);
516 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
517 object->domain_offset = PyInt_AsLong(value);
521 static PyObject *py_PAC_UPN_DNS_INFO_get_flags(PyObject *obj, void *closure)
523 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(obj);
525 py_flags = PyInt_FromLong(object->flags);
529 static int py_PAC_UPN_DNS_INFO_set_flags(PyObject *py_obj, PyObject *value, void *closure)
531 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(py_obj);
532 if (PyLong_Check(value)) {
533 object->flags = PyLong_AsLongLong(value);
534 } else if (PyInt_Check(value)) {
535 object->flags = PyInt_AsLong(value);
537 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
538 PyInt_Type.tp_name, PyLong_Type.tp_name);
544 static PyObject *py_PAC_UPN_DNS_INFO_get_padding(PyObject *obj, void *closure)
546 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(obj);
547 PyObject *py_padding;
548 py_padding = PyInt_FromLong(object->padding);
552 static int py_PAC_UPN_DNS_INFO_set_padding(PyObject *py_obj, PyObject *value, void *closure)
554 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(py_obj);
555 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
556 object->padding = PyInt_AsLong(value);
560 static PyObject *py_PAC_UPN_DNS_INFO_get_upn_name(PyObject *obj, void *closure)
562 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(obj);
563 PyObject *py_upn_name;
564 if (object->upn_name == NULL) {
565 py_upn_name = Py_None;
566 Py_INCREF(py_upn_name);
568 py_upn_name = PyUnicode_Decode(object->upn_name, strlen(object->upn_name), "utf-8", "ignore");
573 static int py_PAC_UPN_DNS_INFO_set_upn_name(PyObject *py_obj, PyObject *value, void *closure)
575 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(py_obj);
576 if (PyUnicode_Check(value)) {
577 object->upn_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
578 } else if (PyString_Check(value)) {
579 object->upn_name = PyString_AS_STRING(value);
581 PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
587 static PyObject *py_PAC_UPN_DNS_INFO_get_domain_name(PyObject *obj, void *closure)
589 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(obj);
590 PyObject *py_domain_name;
591 if (object->domain_name == NULL) {
592 py_domain_name = Py_None;
593 Py_INCREF(py_domain_name);
595 py_domain_name = PyUnicode_Decode(object->domain_name, strlen(object->domain_name), "utf-8", "ignore");
597 return py_domain_name;
600 static int py_PAC_UPN_DNS_INFO_set_domain_name(PyObject *py_obj, PyObject *value, void *closure)
602 struct PAC_UPN_DNS_INFO *object = (struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(py_obj);
603 if (PyUnicode_Check(value)) {
604 object->domain_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
605 } else if (PyString_Check(value)) {
606 object->domain_name = PyString_AS_STRING(value);
608 PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
614 static PyGetSetDef py_PAC_UPN_DNS_INFO_getsetters[] = {
615 { discard_const_p(char, "upn_size"), py_PAC_UPN_DNS_INFO_get_upn_size, py_PAC_UPN_DNS_INFO_set_upn_size },
616 { discard_const_p(char, "upn_offset"), py_PAC_UPN_DNS_INFO_get_upn_offset, py_PAC_UPN_DNS_INFO_set_upn_offset },
617 { discard_const_p(char, "domain_size"), py_PAC_UPN_DNS_INFO_get_domain_size, py_PAC_UPN_DNS_INFO_set_domain_size },
618 { discard_const_p(char, "domain_offset"), py_PAC_UPN_DNS_INFO_get_domain_offset, py_PAC_UPN_DNS_INFO_set_domain_offset },
619 { discard_const_p(char, "flags"), py_PAC_UPN_DNS_INFO_get_flags, py_PAC_UPN_DNS_INFO_set_flags },
620 { discard_const_p(char, "padding"), py_PAC_UPN_DNS_INFO_get_padding, py_PAC_UPN_DNS_INFO_set_padding },
621 { discard_const_p(char, "upn_name"), py_PAC_UPN_DNS_INFO_get_upn_name, py_PAC_UPN_DNS_INFO_set_upn_name },
622 { discard_const_p(char, "domain_name"), py_PAC_UPN_DNS_INFO_get_domain_name, py_PAC_UPN_DNS_INFO_set_domain_name },
626 static PyObject *py_PAC_UPN_DNS_INFO_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
628 return pytalloc_new(struct PAC_UPN_DNS_INFO, type);
632 static PyTypeObject PAC_UPN_DNS_INFO_Type = {
633 PyObject_HEAD_INIT(NULL) 0,
634 .tp_name = "krb5pac.PAC_UPN_DNS_INFO",
635 .tp_getset = py_PAC_UPN_DNS_INFO_getsetters,
637 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
638 .tp_basicsize = sizeof(pytalloc_Object),
639 .tp_new = py_PAC_UPN_DNS_INFO_new,
643 static PyObject *py_PAC_LOGON_INFO_CTR_get_info(PyObject *obj, void *closure)
645 struct PAC_LOGON_INFO_CTR *object = (struct PAC_LOGON_INFO_CTR *)pytalloc_get_ptr(obj);
647 if (object->info == NULL) {
651 py_info = pytalloc_reference_ex(&PAC_LOGON_INFO_Type, object->info, object->info);
656 static int py_PAC_LOGON_INFO_CTR_set_info(PyObject *py_obj, PyObject *value, void *closure)
658 struct PAC_LOGON_INFO_CTR *object = (struct PAC_LOGON_INFO_CTR *)pytalloc_get_ptr(py_obj);
659 talloc_unlink(pytalloc_get_mem_ctx(py_obj), object->info);
660 if (value == Py_None) {
664 PY_CHECK_TYPE(&PAC_LOGON_INFO_Type, value, return -1;);
665 if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
669 object->info = (struct PAC_LOGON_INFO *)pytalloc_get_ptr(value);
674 static PyGetSetDef py_PAC_LOGON_INFO_CTR_getsetters[] = {
675 { discard_const_p(char, "info"), py_PAC_LOGON_INFO_CTR_get_info, py_PAC_LOGON_INFO_CTR_set_info },
679 static PyObject *py_PAC_LOGON_INFO_CTR_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
681 return pytalloc_new(struct PAC_LOGON_INFO_CTR, type);
684 static PyObject *py_PAC_LOGON_INFO_CTR_ndr_pack(PyObject *py_obj)
686 struct PAC_LOGON_INFO_CTR *object = (struct PAC_LOGON_INFO_CTR *)pytalloc_get_ptr(py_obj);
688 enum ndr_err_code err;
689 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_PAC_LOGON_INFO_CTR);
690 if (err != NDR_ERR_SUCCESS) {
691 PyErr_SetNdrError(err);
695 return PyString_FromStringAndSize((char *)blob.data, blob.length);
698 static PyObject *py_PAC_LOGON_INFO_CTR_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
700 struct PAC_LOGON_INFO_CTR *object = (struct PAC_LOGON_INFO_CTR *)pytalloc_get_ptr(py_obj);
703 enum ndr_err_code err;
704 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
705 PyObject *allow_remaining_obj = NULL;
706 bool allow_remaining = false;
708 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
709 discard_const_p(char *, kwnames),
710 &blob.data, &blob_length,
711 &allow_remaining_obj)) {
714 blob.length = blob_length;
716 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
717 allow_remaining = true;
720 if (allow_remaining) {
721 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_LOGON_INFO_CTR);
723 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_LOGON_INFO_CTR);
725 if (err != NDR_ERR_SUCCESS) {
726 PyErr_SetNdrError(err);
733 static PyObject *py_PAC_LOGON_INFO_CTR_ndr_print(PyObject *py_obj)
735 struct PAC_LOGON_INFO_CTR *object = (struct PAC_LOGON_INFO_CTR *)pytalloc_get_ptr(py_obj);
739 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_PAC_LOGON_INFO_CTR, "PAC_LOGON_INFO_CTR", object);
740 ret = PyString_FromString(retstr);
746 static PyMethodDef py_PAC_LOGON_INFO_CTR_methods[] = {
747 { "__ndr_pack__", (PyCFunction)py_PAC_LOGON_INFO_CTR_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
748 { "__ndr_unpack__", (PyCFunction)py_PAC_LOGON_INFO_CTR_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
749 { "__ndr_print__", (PyCFunction)py_PAC_LOGON_INFO_CTR_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
750 { NULL, NULL, 0, NULL }
754 static PyTypeObject PAC_LOGON_INFO_CTR_Type = {
755 PyObject_HEAD_INIT(NULL) 0,
756 .tp_name = "krb5pac.PAC_LOGON_INFO_CTR",
757 .tp_getset = py_PAC_LOGON_INFO_CTR_getsetters,
758 .tp_methods = py_PAC_LOGON_INFO_CTR_methods,
759 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
760 .tp_basicsize = sizeof(pytalloc_Object),
761 .tp_new = py_PAC_LOGON_INFO_CTR_new,
765 static PyObject *py_PAC_CONSTRAINED_DELEGATION_CTR_get_info(PyObject *obj, void *closure)
767 struct PAC_CONSTRAINED_DELEGATION_CTR *object = (struct PAC_CONSTRAINED_DELEGATION_CTR *)pytalloc_get_ptr(obj);
769 if (object->info == NULL) {
773 py_info = pytalloc_reference_ex(&PAC_CONSTRAINED_DELEGATION_Type, object->info, object->info);
778 static int py_PAC_CONSTRAINED_DELEGATION_CTR_set_info(PyObject *py_obj, PyObject *value, void *closure)
780 struct PAC_CONSTRAINED_DELEGATION_CTR *object = (struct PAC_CONSTRAINED_DELEGATION_CTR *)pytalloc_get_ptr(py_obj);
781 talloc_unlink(pytalloc_get_mem_ctx(py_obj), object->info);
782 if (value == Py_None) {
786 PY_CHECK_TYPE(&PAC_CONSTRAINED_DELEGATION_Type, value, return -1;);
787 if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
791 object->info = (struct PAC_CONSTRAINED_DELEGATION *)pytalloc_get_ptr(value);
796 static PyGetSetDef py_PAC_CONSTRAINED_DELEGATION_CTR_getsetters[] = {
797 { discard_const_p(char, "info"), py_PAC_CONSTRAINED_DELEGATION_CTR_get_info, py_PAC_CONSTRAINED_DELEGATION_CTR_set_info },
801 static PyObject *py_PAC_CONSTRAINED_DELEGATION_CTR_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
803 return pytalloc_new(struct PAC_CONSTRAINED_DELEGATION_CTR, type);
806 static PyObject *py_PAC_CONSTRAINED_DELEGATION_CTR_ndr_pack(PyObject *py_obj)
808 struct PAC_CONSTRAINED_DELEGATION_CTR *object = (struct PAC_CONSTRAINED_DELEGATION_CTR *)pytalloc_get_ptr(py_obj);
810 enum ndr_err_code err;
811 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_PAC_CONSTRAINED_DELEGATION_CTR);
812 if (err != NDR_ERR_SUCCESS) {
813 PyErr_SetNdrError(err);
817 return PyString_FromStringAndSize((char *)blob.data, blob.length);
820 static PyObject *py_PAC_CONSTRAINED_DELEGATION_CTR_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
822 struct PAC_CONSTRAINED_DELEGATION_CTR *object = (struct PAC_CONSTRAINED_DELEGATION_CTR *)pytalloc_get_ptr(py_obj);
825 enum ndr_err_code err;
826 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
827 PyObject *allow_remaining_obj = NULL;
828 bool allow_remaining = false;
830 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
831 discard_const_p(char *, kwnames),
832 &blob.data, &blob_length,
833 &allow_remaining_obj)) {
836 blob.length = blob_length;
838 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
839 allow_remaining = true;
842 if (allow_remaining) {
843 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_CONSTRAINED_DELEGATION_CTR);
845 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_CONSTRAINED_DELEGATION_CTR);
847 if (err != NDR_ERR_SUCCESS) {
848 PyErr_SetNdrError(err);
855 static PyObject *py_PAC_CONSTRAINED_DELEGATION_CTR_ndr_print(PyObject *py_obj)
857 struct PAC_CONSTRAINED_DELEGATION_CTR *object = (struct PAC_CONSTRAINED_DELEGATION_CTR *)pytalloc_get_ptr(py_obj);
861 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_PAC_CONSTRAINED_DELEGATION_CTR, "PAC_CONSTRAINED_DELEGATION_CTR", object);
862 ret = PyString_FromString(retstr);
868 static PyMethodDef py_PAC_CONSTRAINED_DELEGATION_CTR_methods[] = {
869 { "__ndr_pack__", (PyCFunction)py_PAC_CONSTRAINED_DELEGATION_CTR_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
870 { "__ndr_unpack__", (PyCFunction)py_PAC_CONSTRAINED_DELEGATION_CTR_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
871 { "__ndr_print__", (PyCFunction)py_PAC_CONSTRAINED_DELEGATION_CTR_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
872 { NULL, NULL, 0, NULL }
876 static PyTypeObject PAC_CONSTRAINED_DELEGATION_CTR_Type = {
877 PyObject_HEAD_INIT(NULL) 0,
878 .tp_name = "krb5pac.PAC_CONSTRAINED_DELEGATION_CTR",
879 .tp_getset = py_PAC_CONSTRAINED_DELEGATION_CTR_getsetters,
880 .tp_methods = py_PAC_CONSTRAINED_DELEGATION_CTR_methods,
881 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
882 .tp_basicsize = sizeof(pytalloc_Object),
883 .tp_new = py_PAC_CONSTRAINED_DELEGATION_CTR_new,
887 static PyObject *py_DATA_BLOB_REM_get_remaining(PyObject *obj, void *closure)
889 struct DATA_BLOB_REM *object = (struct DATA_BLOB_REM *)pytalloc_get_ptr(obj);
890 PyObject *py_remaining;
891 py_remaining = PyString_FromStringAndSize((char *)(object->remaining).data, (object->remaining).length);
895 static int py_DATA_BLOB_REM_set_remaining(PyObject *py_obj, PyObject *value, void *closure)
897 struct DATA_BLOB_REM *object = (struct DATA_BLOB_REM *)pytalloc_get_ptr(py_obj);
898 object->remaining = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value));
902 static PyGetSetDef py_DATA_BLOB_REM_getsetters[] = {
903 { discard_const_p(char, "remaining"), py_DATA_BLOB_REM_get_remaining, py_DATA_BLOB_REM_set_remaining },
907 static PyObject *py_DATA_BLOB_REM_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
909 return pytalloc_new(struct DATA_BLOB_REM, type);
913 static PyTypeObject DATA_BLOB_REM_Type = {
914 PyObject_HEAD_INIT(NULL) 0,
915 .tp_name = "krb5pac.DATA_BLOB_REM",
916 .tp_getset = py_DATA_BLOB_REM_getsetters,
918 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
919 .tp_basicsize = sizeof(pytalloc_Object),
920 .tp_new = py_DATA_BLOB_REM_new,
923 PyObject *py_import_PAC_INFO(TALLOC_CTX *mem_ctx, int level, union PAC_INFO *in)
928 case PAC_TYPE_LOGON_INFO:
929 ret = pytalloc_reference_ex(&PAC_LOGON_INFO_CTR_Type, mem_ctx, &in->logon_info);
932 case PAC_TYPE_SRV_CHECKSUM:
933 ret = pytalloc_reference_ex(&PAC_SIGNATURE_DATA_Type, mem_ctx, &in->srv_cksum);
936 case PAC_TYPE_KDC_CHECKSUM:
937 ret = pytalloc_reference_ex(&PAC_SIGNATURE_DATA_Type, mem_ctx, &in->kdc_cksum);
940 case PAC_TYPE_LOGON_NAME:
941 ret = pytalloc_reference_ex(&PAC_LOGON_NAME_Type, mem_ctx, &in->logon_name);
944 case PAC_TYPE_CONSTRAINED_DELEGATION:
945 ret = pytalloc_reference_ex(&PAC_CONSTRAINED_DELEGATION_CTR_Type, mem_ctx, &in->constrained_delegation);
948 case PAC_TYPE_UPN_DNS_INFO:
949 ret = pytalloc_reference_ex(&PAC_UPN_DNS_INFO_Type, mem_ctx, &in->upn_dns_info);
953 ret = pytalloc_reference_ex(&DATA_BLOB_REM_Type, mem_ctx, &in->unknown);
957 PyErr_SetString(PyExc_TypeError, "unknown union level");
961 union PAC_INFO *py_export_PAC_INFO(TALLOC_CTX *mem_ctx, int level, PyObject *in)
963 union PAC_INFO *ret = talloc_zero(mem_ctx, union PAC_INFO);
965 case PAC_TYPE_LOGON_INFO:
966 PY_CHECK_TYPE(&PAC_LOGON_INFO_CTR_Type, in, talloc_free(ret); return NULL;);
967 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
969 talloc_free(ret); return NULL;
971 ret->logon_info = *(struct PAC_LOGON_INFO_CTR *)pytalloc_get_ptr(in);
974 case PAC_TYPE_SRV_CHECKSUM:
975 PY_CHECK_TYPE(&PAC_SIGNATURE_DATA_Type, in, talloc_free(ret); return NULL;);
976 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
978 talloc_free(ret); return NULL;
980 ret->srv_cksum = *(struct PAC_SIGNATURE_DATA *)pytalloc_get_ptr(in);
983 case PAC_TYPE_KDC_CHECKSUM:
984 PY_CHECK_TYPE(&PAC_SIGNATURE_DATA_Type, in, talloc_free(ret); return NULL;);
985 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
987 talloc_free(ret); return NULL;
989 ret->kdc_cksum = *(struct PAC_SIGNATURE_DATA *)pytalloc_get_ptr(in);
992 case PAC_TYPE_LOGON_NAME:
993 PY_CHECK_TYPE(&PAC_LOGON_NAME_Type, in, talloc_free(ret); return NULL;);
994 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
996 talloc_free(ret); return NULL;
998 ret->logon_name = *(struct PAC_LOGON_NAME *)pytalloc_get_ptr(in);
1001 case PAC_TYPE_CONSTRAINED_DELEGATION:
1002 PY_CHECK_TYPE(&PAC_CONSTRAINED_DELEGATION_CTR_Type, in, talloc_free(ret); return NULL;);
1003 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
1005 talloc_free(ret); return NULL;
1007 ret->constrained_delegation = *(struct PAC_CONSTRAINED_DELEGATION_CTR *)pytalloc_get_ptr(in);
1010 case PAC_TYPE_UPN_DNS_INFO:
1011 PY_CHECK_TYPE(&PAC_UPN_DNS_INFO_Type, in, talloc_free(ret); return NULL;);
1012 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
1014 talloc_free(ret); return NULL;
1016 ret->upn_dns_info = *(struct PAC_UPN_DNS_INFO *)pytalloc_get_ptr(in);
1020 PY_CHECK_TYPE(&DATA_BLOB_REM_Type, in, talloc_free(ret); return NULL;);
1021 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
1023 talloc_free(ret); return NULL;
1025 ret->unknown = *(struct DATA_BLOB_REM *)pytalloc_get_ptr(in);
1034 static PyObject *py_PAC_BUFFER_get_type(PyObject *obj, void *closure)
1036 struct PAC_BUFFER *object = (struct PAC_BUFFER *)pytalloc_get_ptr(obj);
1038 py_type = PyInt_FromLong(object->type);
1042 static int py_PAC_BUFFER_set_type(PyObject *py_obj, PyObject *value, void *closure)
1044 struct PAC_BUFFER *object = (struct PAC_BUFFER *)pytalloc_get_ptr(py_obj);
1045 if (PyLong_Check(value)) {
1046 object->type = PyLong_AsLongLong(value);
1047 } else if (PyInt_Check(value)) {
1048 object->type = PyInt_AsLong(value);
1050 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
1051 PyInt_Type.tp_name, PyLong_Type.tp_name);
1057 static PyObject *py_PAC_BUFFER_get__ndr_size(PyObject *obj, void *closure)
1059 struct PAC_BUFFER *object = (struct PAC_BUFFER *)pytalloc_get_ptr(obj);
1060 PyObject *py__ndr_size;
1061 py__ndr_size = PyInt_FromLong(object->_ndr_size);
1062 return py__ndr_size;
1065 static int py_PAC_BUFFER_set__ndr_size(PyObject *py_obj, PyObject *value, void *closure)
1067 struct PAC_BUFFER *object = (struct PAC_BUFFER *)pytalloc_get_ptr(py_obj);
1068 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1069 object->_ndr_size = PyInt_AsLong(value);
1073 static PyObject *py_PAC_BUFFER_get_info(PyObject *obj, void *closure)
1075 struct PAC_BUFFER *object = (struct PAC_BUFFER *)pytalloc_get_ptr(obj);
1077 if (object->info == NULL) {
1081 py_info = py_import_PAC_INFO(object->info, object->type, object->info);
1082 if (py_info == NULL) {
1089 static int py_PAC_BUFFER_set_info(PyObject *py_obj, PyObject *value, void *closure)
1091 struct PAC_BUFFER *object = (struct PAC_BUFFER *)pytalloc_get_ptr(py_obj);
1092 talloc_unlink(pytalloc_get_mem_ctx(py_obj), object->info);
1093 if (value == Py_None) {
1094 object->info = NULL;
1096 object->info = NULL;
1098 union PAC_INFO *info_switch_2;
1099 info_switch_2 = py_export_PAC_INFO(pytalloc_get_mem_ctx(py_obj), object->type, value);
1100 if (info_switch_2 == NULL) {
1103 object->info = info_switch_2;
1109 static PyObject *py_PAC_BUFFER_get__pad(PyObject *obj, void *closure)
1111 struct PAC_BUFFER *object = (struct PAC_BUFFER *)pytalloc_get_ptr(obj);
1113 py__pad = PyInt_FromLong(object->_pad);
1117 static int py_PAC_BUFFER_set__pad(PyObject *py_obj, PyObject *value, void *closure)
1119 struct PAC_BUFFER *object = (struct PAC_BUFFER *)pytalloc_get_ptr(py_obj);
1120 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1121 object->_pad = PyInt_AsLong(value);
1125 static PyGetSetDef py_PAC_BUFFER_getsetters[] = {
1126 { discard_const_p(char, "type"), py_PAC_BUFFER_get_type, py_PAC_BUFFER_set_type },
1127 { discard_const_p(char, "_ndr_size"), py_PAC_BUFFER_get__ndr_size, py_PAC_BUFFER_set__ndr_size },
1128 { discard_const_p(char, "info"), py_PAC_BUFFER_get_info, py_PAC_BUFFER_set_info },
1129 { discard_const_p(char, "_pad"), py_PAC_BUFFER_get__pad, py_PAC_BUFFER_set__pad },
1133 static PyObject *py_PAC_BUFFER_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1135 return pytalloc_new(struct PAC_BUFFER, type);
1138 static PyObject *py_PAC_BUFFER_ndr_pack(PyObject *py_obj)
1140 struct PAC_BUFFER *object = (struct PAC_BUFFER *)pytalloc_get_ptr(py_obj);
1142 enum ndr_err_code err;
1143 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_PAC_BUFFER);
1144 if (err != NDR_ERR_SUCCESS) {
1145 PyErr_SetNdrError(err);
1149 return PyString_FromStringAndSize((char *)blob.data, blob.length);
1152 static PyObject *py_PAC_BUFFER_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
1154 struct PAC_BUFFER *object = (struct PAC_BUFFER *)pytalloc_get_ptr(py_obj);
1156 int blob_length = 0;
1157 enum ndr_err_code err;
1158 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
1159 PyObject *allow_remaining_obj = NULL;
1160 bool allow_remaining = false;
1162 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
1163 discard_const_p(char *, kwnames),
1164 &blob.data, &blob_length,
1165 &allow_remaining_obj)) {
1168 blob.length = blob_length;
1170 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
1171 allow_remaining = true;
1174 if (allow_remaining) {
1175 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_BUFFER);
1177 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_BUFFER);
1179 if (err != NDR_ERR_SUCCESS) {
1180 PyErr_SetNdrError(err);
1187 static PyObject *py_PAC_BUFFER_ndr_print(PyObject *py_obj)
1189 struct PAC_BUFFER *object = (struct PAC_BUFFER *)pytalloc_get_ptr(py_obj);
1193 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_PAC_BUFFER, "PAC_BUFFER", object);
1194 ret = PyString_FromString(retstr);
1195 talloc_free(retstr);
1200 static PyMethodDef py_PAC_BUFFER_methods[] = {
1201 { "__ndr_pack__", (PyCFunction)py_PAC_BUFFER_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
1202 { "__ndr_unpack__", (PyCFunction)py_PAC_BUFFER_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
1203 { "__ndr_print__", (PyCFunction)py_PAC_BUFFER_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
1204 { NULL, NULL, 0, NULL }
1208 static PyTypeObject PAC_BUFFER_Type = {
1209 PyObject_HEAD_INIT(NULL) 0,
1210 .tp_name = "krb5pac.PAC_BUFFER",
1211 .tp_getset = py_PAC_BUFFER_getsetters,
1212 .tp_methods = py_PAC_BUFFER_methods,
1213 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1214 .tp_basicsize = sizeof(pytalloc_Object),
1215 .tp_new = py_PAC_BUFFER_new,
1219 static PyObject *py_PAC_DATA_get_num_buffers(PyObject *obj, void *closure)
1221 struct PAC_DATA *object = (struct PAC_DATA *)pytalloc_get_ptr(obj);
1222 PyObject *py_num_buffers;
1223 py_num_buffers = PyInt_FromLong(object->num_buffers);
1224 return py_num_buffers;
1227 static int py_PAC_DATA_set_num_buffers(PyObject *py_obj, PyObject *value, void *closure)
1229 struct PAC_DATA *object = (struct PAC_DATA *)pytalloc_get_ptr(py_obj);
1230 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1231 object->num_buffers = PyInt_AsLong(value);
1235 static PyObject *py_PAC_DATA_get_version(PyObject *obj, void *closure)
1237 struct PAC_DATA *object = (struct PAC_DATA *)pytalloc_get_ptr(obj);
1238 PyObject *py_version;
1239 py_version = PyInt_FromLong(object->version);
1243 static int py_PAC_DATA_set_version(PyObject *py_obj, PyObject *value, void *closure)
1245 struct PAC_DATA *object = (struct PAC_DATA *)pytalloc_get_ptr(py_obj);
1246 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1247 object->version = PyInt_AsLong(value);
1251 static PyObject *py_PAC_DATA_get_buffers(PyObject *obj, void *closure)
1253 struct PAC_DATA *object = (struct PAC_DATA *)pytalloc_get_ptr(obj);
1254 PyObject *py_buffers;
1255 py_buffers = PyList_New(object->num_buffers);
1256 if (py_buffers == NULL) {
1261 for (buffers_cntr_0 = 0; buffers_cntr_0 < object->num_buffers; buffers_cntr_0++) {
1262 PyObject *py_buffers_0;
1263 py_buffers_0 = pytalloc_reference_ex(&PAC_BUFFER_Type, object->buffers, &object->buffers[buffers_cntr_0]);
1264 PyList_SetItem(py_buffers, buffers_cntr_0, py_buffers_0);
1270 static int py_PAC_DATA_set_buffers(PyObject *py_obj, PyObject *value, void *closure)
1272 struct PAC_DATA *object = (struct PAC_DATA *)pytalloc_get_ptr(py_obj);
1273 PY_CHECK_TYPE(&PyList_Type, value, return -1;);
1276 object->buffers = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->buffers, PyList_GET_SIZE(value));
1277 if (!object->buffers) { return -1;; }
1278 talloc_set_name_const(object->buffers, "ARRAY: object->buffers");
1279 for (buffers_cntr_0 = 0; buffers_cntr_0 < PyList_GET_SIZE(value); buffers_cntr_0++) {
1280 PY_CHECK_TYPE(&PAC_BUFFER_Type, PyList_GET_ITEM(value, buffers_cntr_0), return -1;);
1281 if (talloc_reference(object->buffers, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, buffers_cntr_0))) == NULL) {
1285 object->buffers[buffers_cntr_0] = *(struct PAC_BUFFER *)pytalloc_get_ptr(PyList_GET_ITEM(value, buffers_cntr_0));
1291 static PyGetSetDef py_PAC_DATA_getsetters[] = {
1292 { discard_const_p(char, "num_buffers"), py_PAC_DATA_get_num_buffers, py_PAC_DATA_set_num_buffers },
1293 { discard_const_p(char, "version"), py_PAC_DATA_get_version, py_PAC_DATA_set_version },
1294 { discard_const_p(char, "buffers"), py_PAC_DATA_get_buffers, py_PAC_DATA_set_buffers },
1298 static PyObject *py_PAC_DATA_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1300 return pytalloc_new(struct PAC_DATA, type);
1303 static PyObject *py_PAC_DATA_ndr_pack(PyObject *py_obj)
1305 struct PAC_DATA *object = (struct PAC_DATA *)pytalloc_get_ptr(py_obj);
1307 enum ndr_err_code err;
1308 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_PAC_DATA);
1309 if (err != NDR_ERR_SUCCESS) {
1310 PyErr_SetNdrError(err);
1314 return PyString_FromStringAndSize((char *)blob.data, blob.length);
1317 static PyObject *py_PAC_DATA_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
1319 struct PAC_DATA *object = (struct PAC_DATA *)pytalloc_get_ptr(py_obj);
1321 int blob_length = 0;
1322 enum ndr_err_code err;
1323 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
1324 PyObject *allow_remaining_obj = NULL;
1325 bool allow_remaining = false;
1327 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
1328 discard_const_p(char *, kwnames),
1329 &blob.data, &blob_length,
1330 &allow_remaining_obj)) {
1333 blob.length = blob_length;
1335 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
1336 allow_remaining = true;
1339 if (allow_remaining) {
1340 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_DATA);
1342 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_DATA);
1344 if (err != NDR_ERR_SUCCESS) {
1345 PyErr_SetNdrError(err);
1352 static PyObject *py_PAC_DATA_ndr_print(PyObject *py_obj)
1354 struct PAC_DATA *object = (struct PAC_DATA *)pytalloc_get_ptr(py_obj);
1358 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_PAC_DATA, "PAC_DATA", object);
1359 ret = PyString_FromString(retstr);
1360 talloc_free(retstr);
1365 static PyMethodDef py_PAC_DATA_methods[] = {
1366 { "__ndr_pack__", (PyCFunction)py_PAC_DATA_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
1367 { "__ndr_unpack__", (PyCFunction)py_PAC_DATA_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
1368 { "__ndr_print__", (PyCFunction)py_PAC_DATA_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
1369 { NULL, NULL, 0, NULL }
1373 static PyTypeObject PAC_DATA_Type = {
1374 PyObject_HEAD_INIT(NULL) 0,
1375 .tp_name = "krb5pac.PAC_DATA",
1376 .tp_getset = py_PAC_DATA_getsetters,
1377 .tp_methods = py_PAC_DATA_methods,
1378 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1379 .tp_basicsize = sizeof(pytalloc_Object),
1380 .tp_new = py_PAC_DATA_new,
1384 static PyObject *py_PAC_BUFFER_RAW_get_type(PyObject *obj, void *closure)
1386 struct PAC_BUFFER_RAW *object = (struct PAC_BUFFER_RAW *)pytalloc_get_ptr(obj);
1388 py_type = PyInt_FromLong(object->type);
1392 static int py_PAC_BUFFER_RAW_set_type(PyObject *py_obj, PyObject *value, void *closure)
1394 struct PAC_BUFFER_RAW *object = (struct PAC_BUFFER_RAW *)pytalloc_get_ptr(py_obj);
1395 if (PyLong_Check(value)) {
1396 object->type = PyLong_AsLongLong(value);
1397 } else if (PyInt_Check(value)) {
1398 object->type = PyInt_AsLong(value);
1400 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
1401 PyInt_Type.tp_name, PyLong_Type.tp_name);
1407 static PyObject *py_PAC_BUFFER_RAW_get_ndr_size(PyObject *obj, void *closure)
1409 struct PAC_BUFFER_RAW *object = (struct PAC_BUFFER_RAW *)pytalloc_get_ptr(obj);
1410 PyObject *py_ndr_size;
1411 py_ndr_size = PyInt_FromLong(object->ndr_size);
1415 static int py_PAC_BUFFER_RAW_set_ndr_size(PyObject *py_obj, PyObject *value, void *closure)
1417 struct PAC_BUFFER_RAW *object = (struct PAC_BUFFER_RAW *)pytalloc_get_ptr(py_obj);
1418 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1419 object->ndr_size = PyInt_AsLong(value);
1423 static PyObject *py_PAC_BUFFER_RAW_get_info(PyObject *obj, void *closure)
1425 struct PAC_BUFFER_RAW *object = (struct PAC_BUFFER_RAW *)pytalloc_get_ptr(obj);
1427 if (object->info == NULL) {
1431 py_info = pytalloc_reference_ex(&DATA_BLOB_REM_Type, object->info, object->info);
1436 static int py_PAC_BUFFER_RAW_set_info(PyObject *py_obj, PyObject *value, void *closure)
1438 struct PAC_BUFFER_RAW *object = (struct PAC_BUFFER_RAW *)pytalloc_get_ptr(py_obj);
1439 talloc_unlink(pytalloc_get_mem_ctx(py_obj), object->info);
1440 if (value == Py_None) {
1441 object->info = NULL;
1443 object->info = NULL;
1444 PY_CHECK_TYPE(&DATA_BLOB_REM_Type, value, return -1;);
1445 if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
1449 object->info = (struct DATA_BLOB_REM *)pytalloc_get_ptr(value);
1454 static PyObject *py_PAC_BUFFER_RAW_get__pad(PyObject *obj, void *closure)
1456 struct PAC_BUFFER_RAW *object = (struct PAC_BUFFER_RAW *)pytalloc_get_ptr(obj);
1458 py__pad = PyInt_FromLong(object->_pad);
1462 static int py_PAC_BUFFER_RAW_set__pad(PyObject *py_obj, PyObject *value, void *closure)
1464 struct PAC_BUFFER_RAW *object = (struct PAC_BUFFER_RAW *)pytalloc_get_ptr(py_obj);
1465 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1466 object->_pad = PyInt_AsLong(value);
1470 static PyGetSetDef py_PAC_BUFFER_RAW_getsetters[] = {
1471 { discard_const_p(char, "type"), py_PAC_BUFFER_RAW_get_type, py_PAC_BUFFER_RAW_set_type },
1472 { discard_const_p(char, "ndr_size"), py_PAC_BUFFER_RAW_get_ndr_size, py_PAC_BUFFER_RAW_set_ndr_size },
1473 { discard_const_p(char, "info"), py_PAC_BUFFER_RAW_get_info, py_PAC_BUFFER_RAW_set_info },
1474 { discard_const_p(char, "_pad"), py_PAC_BUFFER_RAW_get__pad, py_PAC_BUFFER_RAW_set__pad },
1478 static PyObject *py_PAC_BUFFER_RAW_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1480 return pytalloc_new(struct PAC_BUFFER_RAW, type);
1483 static PyObject *py_PAC_BUFFER_RAW_ndr_pack(PyObject *py_obj)
1485 struct PAC_BUFFER_RAW *object = (struct PAC_BUFFER_RAW *)pytalloc_get_ptr(py_obj);
1487 enum ndr_err_code err;
1488 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_PAC_BUFFER_RAW);
1489 if (err != NDR_ERR_SUCCESS) {
1490 PyErr_SetNdrError(err);
1494 return PyString_FromStringAndSize((char *)blob.data, blob.length);
1497 static PyObject *py_PAC_BUFFER_RAW_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
1499 struct PAC_BUFFER_RAW *object = (struct PAC_BUFFER_RAW *)pytalloc_get_ptr(py_obj);
1501 int blob_length = 0;
1502 enum ndr_err_code err;
1503 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
1504 PyObject *allow_remaining_obj = NULL;
1505 bool allow_remaining = false;
1507 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
1508 discard_const_p(char *, kwnames),
1509 &blob.data, &blob_length,
1510 &allow_remaining_obj)) {
1513 blob.length = blob_length;
1515 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
1516 allow_remaining = true;
1519 if (allow_remaining) {
1520 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_BUFFER_RAW);
1522 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_BUFFER_RAW);
1524 if (err != NDR_ERR_SUCCESS) {
1525 PyErr_SetNdrError(err);
1532 static PyObject *py_PAC_BUFFER_RAW_ndr_print(PyObject *py_obj)
1534 struct PAC_BUFFER_RAW *object = (struct PAC_BUFFER_RAW *)pytalloc_get_ptr(py_obj);
1538 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_PAC_BUFFER_RAW, "PAC_BUFFER_RAW", object);
1539 ret = PyString_FromString(retstr);
1540 talloc_free(retstr);
1545 static PyMethodDef py_PAC_BUFFER_RAW_methods[] = {
1546 { "__ndr_pack__", (PyCFunction)py_PAC_BUFFER_RAW_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
1547 { "__ndr_unpack__", (PyCFunction)py_PAC_BUFFER_RAW_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
1548 { "__ndr_print__", (PyCFunction)py_PAC_BUFFER_RAW_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
1549 { NULL, NULL, 0, NULL }
1553 static PyTypeObject PAC_BUFFER_RAW_Type = {
1554 PyObject_HEAD_INIT(NULL) 0,
1555 .tp_name = "krb5pac.PAC_BUFFER_RAW",
1556 .tp_getset = py_PAC_BUFFER_RAW_getsetters,
1557 .tp_methods = py_PAC_BUFFER_RAW_methods,
1558 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1559 .tp_basicsize = sizeof(pytalloc_Object),
1560 .tp_new = py_PAC_BUFFER_RAW_new,
1564 static PyObject *py_PAC_DATA_RAW_get_num_buffers(PyObject *obj, void *closure)
1566 struct PAC_DATA_RAW *object = (struct PAC_DATA_RAW *)pytalloc_get_ptr(obj);
1567 PyObject *py_num_buffers;
1568 py_num_buffers = PyInt_FromLong(object->num_buffers);
1569 return py_num_buffers;
1572 static int py_PAC_DATA_RAW_set_num_buffers(PyObject *py_obj, PyObject *value, void *closure)
1574 struct PAC_DATA_RAW *object = (struct PAC_DATA_RAW *)pytalloc_get_ptr(py_obj);
1575 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1576 object->num_buffers = PyInt_AsLong(value);
1580 static PyObject *py_PAC_DATA_RAW_get_version(PyObject *obj, void *closure)
1582 struct PAC_DATA_RAW *object = (struct PAC_DATA_RAW *)pytalloc_get_ptr(obj);
1583 PyObject *py_version;
1584 py_version = PyInt_FromLong(object->version);
1588 static int py_PAC_DATA_RAW_set_version(PyObject *py_obj, PyObject *value, void *closure)
1590 struct PAC_DATA_RAW *object = (struct PAC_DATA_RAW *)pytalloc_get_ptr(py_obj);
1591 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1592 object->version = PyInt_AsLong(value);
1596 static PyObject *py_PAC_DATA_RAW_get_buffers(PyObject *obj, void *closure)
1598 struct PAC_DATA_RAW *object = (struct PAC_DATA_RAW *)pytalloc_get_ptr(obj);
1599 PyObject *py_buffers;
1600 py_buffers = PyList_New(object->num_buffers);
1601 if (py_buffers == NULL) {
1606 for (buffers_cntr_0 = 0; buffers_cntr_0 < object->num_buffers; buffers_cntr_0++) {
1607 PyObject *py_buffers_0;
1608 py_buffers_0 = pytalloc_reference_ex(&PAC_BUFFER_RAW_Type, object->buffers, &object->buffers[buffers_cntr_0]);
1609 PyList_SetItem(py_buffers, buffers_cntr_0, py_buffers_0);
1615 static int py_PAC_DATA_RAW_set_buffers(PyObject *py_obj, PyObject *value, void *closure)
1617 struct PAC_DATA_RAW *object = (struct PAC_DATA_RAW *)pytalloc_get_ptr(py_obj);
1618 PY_CHECK_TYPE(&PyList_Type, value, return -1;);
1621 object->buffers = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->buffers, PyList_GET_SIZE(value));
1622 if (!object->buffers) { return -1;; }
1623 talloc_set_name_const(object->buffers, "ARRAY: object->buffers");
1624 for (buffers_cntr_0 = 0; buffers_cntr_0 < PyList_GET_SIZE(value); buffers_cntr_0++) {
1625 PY_CHECK_TYPE(&PAC_BUFFER_RAW_Type, PyList_GET_ITEM(value, buffers_cntr_0), return -1;);
1626 if (talloc_reference(object->buffers, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, buffers_cntr_0))) == NULL) {
1630 object->buffers[buffers_cntr_0] = *(struct PAC_BUFFER_RAW *)pytalloc_get_ptr(PyList_GET_ITEM(value, buffers_cntr_0));
1636 static PyGetSetDef py_PAC_DATA_RAW_getsetters[] = {
1637 { discard_const_p(char, "num_buffers"), py_PAC_DATA_RAW_get_num_buffers, py_PAC_DATA_RAW_set_num_buffers },
1638 { discard_const_p(char, "version"), py_PAC_DATA_RAW_get_version, py_PAC_DATA_RAW_set_version },
1639 { discard_const_p(char, "buffers"), py_PAC_DATA_RAW_get_buffers, py_PAC_DATA_RAW_set_buffers },
1643 static PyObject *py_PAC_DATA_RAW_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1645 return pytalloc_new(struct PAC_DATA_RAW, type);
1648 static PyObject *py_PAC_DATA_RAW_ndr_pack(PyObject *py_obj)
1650 struct PAC_DATA_RAW *object = (struct PAC_DATA_RAW *)pytalloc_get_ptr(py_obj);
1652 enum ndr_err_code err;
1653 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_PAC_DATA_RAW);
1654 if (err != NDR_ERR_SUCCESS) {
1655 PyErr_SetNdrError(err);
1659 return PyString_FromStringAndSize((char *)blob.data, blob.length);
1662 static PyObject *py_PAC_DATA_RAW_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
1664 struct PAC_DATA_RAW *object = (struct PAC_DATA_RAW *)pytalloc_get_ptr(py_obj);
1666 int blob_length = 0;
1667 enum ndr_err_code err;
1668 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
1669 PyObject *allow_remaining_obj = NULL;
1670 bool allow_remaining = false;
1672 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
1673 discard_const_p(char *, kwnames),
1674 &blob.data, &blob_length,
1675 &allow_remaining_obj)) {
1678 blob.length = blob_length;
1680 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
1681 allow_remaining = true;
1684 if (allow_remaining) {
1685 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_DATA_RAW);
1687 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_DATA_RAW);
1689 if (err != NDR_ERR_SUCCESS) {
1690 PyErr_SetNdrError(err);
1697 static PyObject *py_PAC_DATA_RAW_ndr_print(PyObject *py_obj)
1699 struct PAC_DATA_RAW *object = (struct PAC_DATA_RAW *)pytalloc_get_ptr(py_obj);
1703 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_PAC_DATA_RAW, "PAC_DATA_RAW", object);
1704 ret = PyString_FromString(retstr);
1705 talloc_free(retstr);
1710 static PyMethodDef py_PAC_DATA_RAW_methods[] = {
1711 { "__ndr_pack__", (PyCFunction)py_PAC_DATA_RAW_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
1712 { "__ndr_unpack__", (PyCFunction)py_PAC_DATA_RAW_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
1713 { "__ndr_print__", (PyCFunction)py_PAC_DATA_RAW_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
1714 { NULL, NULL, 0, NULL }
1718 static PyTypeObject PAC_DATA_RAW_Type = {
1719 PyObject_HEAD_INIT(NULL) 0,
1720 .tp_name = "krb5pac.PAC_DATA_RAW",
1721 .tp_getset = py_PAC_DATA_RAW_getsetters,
1722 .tp_methods = py_PAC_DATA_RAW_methods,
1723 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1724 .tp_basicsize = sizeof(pytalloc_Object),
1725 .tp_new = py_PAC_DATA_RAW_new,
1729 static PyObject *py_PAC_Validate_get_MessageType(PyObject *obj, void *closure)
1731 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(obj);
1732 PyObject *py_MessageType;
1733 py_MessageType = PyInt_FromLong(object->MessageType);
1734 return py_MessageType;
1737 static int py_PAC_Validate_set_MessageType(PyObject *py_obj, PyObject *value, void *closure)
1739 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(py_obj);
1740 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1741 object->MessageType = PyInt_AsLong(value);
1745 static PyObject *py_PAC_Validate_get_ChecksumLength(PyObject *obj, void *closure)
1747 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(obj);
1748 PyObject *py_ChecksumLength;
1749 py_ChecksumLength = PyInt_FromLong(object->ChecksumLength);
1750 return py_ChecksumLength;
1753 static int py_PAC_Validate_set_ChecksumLength(PyObject *py_obj, PyObject *value, void *closure)
1755 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(py_obj);
1756 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1757 object->ChecksumLength = PyInt_AsLong(value);
1761 static PyObject *py_PAC_Validate_get_SignatureType(PyObject *obj, void *closure)
1763 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(obj);
1764 PyObject *py_SignatureType;
1765 py_SignatureType = PyInt_FromLong(object->SignatureType);
1766 return py_SignatureType;
1769 static int py_PAC_Validate_set_SignatureType(PyObject *py_obj, PyObject *value, void *closure)
1771 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(py_obj);
1772 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1773 object->SignatureType = PyInt_AsLong(value);
1777 static PyObject *py_PAC_Validate_get_SignatureLength(PyObject *obj, void *closure)
1779 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(obj);
1780 PyObject *py_SignatureLength;
1781 py_SignatureLength = PyInt_FromLong(object->SignatureLength);
1782 return py_SignatureLength;
1785 static int py_PAC_Validate_set_SignatureLength(PyObject *py_obj, PyObject *value, void *closure)
1787 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(py_obj);
1788 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1789 object->SignatureLength = PyInt_AsLong(value);
1793 static PyObject *py_PAC_Validate_get_ChecksumAndSignature(PyObject *obj, void *closure)
1795 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(obj);
1796 PyObject *py_ChecksumAndSignature;
1797 py_ChecksumAndSignature = PyString_FromStringAndSize((char *)(object->ChecksumAndSignature).data, (object->ChecksumAndSignature).length);
1798 return py_ChecksumAndSignature;
1801 static int py_PAC_Validate_set_ChecksumAndSignature(PyObject *py_obj, PyObject *value, void *closure)
1803 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(py_obj);
1804 object->ChecksumAndSignature = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value));
1808 static PyGetSetDef py_PAC_Validate_getsetters[] = {
1809 { discard_const_p(char, "MessageType"), py_PAC_Validate_get_MessageType, py_PAC_Validate_set_MessageType },
1810 { discard_const_p(char, "ChecksumLength"), py_PAC_Validate_get_ChecksumLength, py_PAC_Validate_set_ChecksumLength },
1811 { discard_const_p(char, "SignatureType"), py_PAC_Validate_get_SignatureType, py_PAC_Validate_set_SignatureType },
1812 { discard_const_p(char, "SignatureLength"), py_PAC_Validate_get_SignatureLength, py_PAC_Validate_set_SignatureLength },
1813 { discard_const_p(char, "ChecksumAndSignature"), py_PAC_Validate_get_ChecksumAndSignature, py_PAC_Validate_set_ChecksumAndSignature },
1817 static PyObject *py_PAC_Validate_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1819 return pytalloc_new(struct PAC_Validate, type);
1822 static PyObject *py_PAC_Validate_ndr_pack(PyObject *py_obj)
1824 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(py_obj);
1826 enum ndr_err_code err;
1827 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_PAC_Validate);
1828 if (err != NDR_ERR_SUCCESS) {
1829 PyErr_SetNdrError(err);
1833 return PyString_FromStringAndSize((char *)blob.data, blob.length);
1836 static PyObject *py_PAC_Validate_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
1838 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(py_obj);
1840 int blob_length = 0;
1841 enum ndr_err_code err;
1842 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
1843 PyObject *allow_remaining_obj = NULL;
1844 bool allow_remaining = false;
1846 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
1847 discard_const_p(char *, kwnames),
1848 &blob.data, &blob_length,
1849 &allow_remaining_obj)) {
1852 blob.length = blob_length;
1854 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
1855 allow_remaining = true;
1858 if (allow_remaining) {
1859 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_Validate);
1861 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_PAC_Validate);
1863 if (err != NDR_ERR_SUCCESS) {
1864 PyErr_SetNdrError(err);
1871 static PyObject *py_PAC_Validate_ndr_print(PyObject *py_obj)
1873 struct PAC_Validate *object = (struct PAC_Validate *)pytalloc_get_ptr(py_obj);
1877 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_PAC_Validate, "PAC_Validate", object);
1878 ret = PyString_FromString(retstr);
1879 talloc_free(retstr);
1884 static PyMethodDef py_PAC_Validate_methods[] = {
1885 { "__ndr_pack__", (PyCFunction)py_PAC_Validate_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
1886 { "__ndr_unpack__", (PyCFunction)py_PAC_Validate_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
1887 { "__ndr_print__", (PyCFunction)py_PAC_Validate_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
1888 { NULL, NULL, 0, NULL }
1892 static PyTypeObject PAC_Validate_Type = {
1893 PyObject_HEAD_INIT(NULL) 0,
1894 .tp_name = "krb5pac.PAC_Validate",
1895 .tp_getset = py_PAC_Validate_getsetters,
1896 .tp_methods = py_PAC_Validate_methods,
1897 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1898 .tp_basicsize = sizeof(pytalloc_Object),
1899 .tp_new = py_PAC_Validate_new,
1903 static PyObject *py_netsamlogoncache_entry_get_timestamp(PyObject *obj, void *closure)
1905 struct netsamlogoncache_entry *object = (struct netsamlogoncache_entry *)pytalloc_get_ptr(obj);
1906 PyObject *py_timestamp;
1907 py_timestamp = PyInt_FromLong(object->timestamp);
1908 return py_timestamp;
1911 static int py_netsamlogoncache_entry_set_timestamp(PyObject *py_obj, PyObject *value, void *closure)
1913 struct netsamlogoncache_entry *object = (struct netsamlogoncache_entry *)pytalloc_get_ptr(py_obj);
1914 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1915 object->timestamp = PyInt_AsLong(value);
1919 static PyObject *py_netsamlogoncache_entry_get_info3(PyObject *obj, void *closure)
1921 struct netsamlogoncache_entry *object = (struct netsamlogoncache_entry *)pytalloc_get_ptr(obj);
1923 py_info3 = pytalloc_reference_ex(netr_SamInfo3_Type, pytalloc_get_mem_ctx(obj), &object->info3);
1927 static int py_netsamlogoncache_entry_set_info3(PyObject *py_obj, PyObject *value, void *closure)
1929 struct netsamlogoncache_entry *object = (struct netsamlogoncache_entry *)pytalloc_get_ptr(py_obj);
1930 PY_CHECK_TYPE(netr_SamInfo3_Type, value, return -1;);
1931 if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
1935 object->info3 = *(struct netr_SamInfo3 *)pytalloc_get_ptr(value);
1939 static PyGetSetDef py_netsamlogoncache_entry_getsetters[] = {
1940 { discard_const_p(char, "timestamp"), py_netsamlogoncache_entry_get_timestamp, py_netsamlogoncache_entry_set_timestamp },
1941 { discard_const_p(char, "info3"), py_netsamlogoncache_entry_get_info3, py_netsamlogoncache_entry_set_info3 },
1945 static PyObject *py_netsamlogoncache_entry_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1947 return pytalloc_new(struct netsamlogoncache_entry, type);
1950 static PyObject *py_netsamlogoncache_entry_ndr_pack(PyObject *py_obj)
1952 struct netsamlogoncache_entry *object = (struct netsamlogoncache_entry *)pytalloc_get_ptr(py_obj);
1954 enum ndr_err_code err;
1955 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_netsamlogoncache_entry);
1956 if (err != NDR_ERR_SUCCESS) {
1957 PyErr_SetNdrError(err);
1961 return PyString_FromStringAndSize((char *)blob.data, blob.length);
1964 static PyObject *py_netsamlogoncache_entry_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
1966 struct netsamlogoncache_entry *object = (struct netsamlogoncache_entry *)pytalloc_get_ptr(py_obj);
1968 int blob_length = 0;
1969 enum ndr_err_code err;
1970 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
1971 PyObject *allow_remaining_obj = NULL;
1972 bool allow_remaining = false;
1974 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
1975 discard_const_p(char *, kwnames),
1976 &blob.data, &blob_length,
1977 &allow_remaining_obj)) {
1980 blob.length = blob_length;
1982 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
1983 allow_remaining = true;
1986 if (allow_remaining) {
1987 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_netsamlogoncache_entry);
1989 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_netsamlogoncache_entry);
1991 if (err != NDR_ERR_SUCCESS) {
1992 PyErr_SetNdrError(err);
1999 static PyObject *py_netsamlogoncache_entry_ndr_print(PyObject *py_obj)
2001 struct netsamlogoncache_entry *object = (struct netsamlogoncache_entry *)pytalloc_get_ptr(py_obj);
2005 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_netsamlogoncache_entry, "netsamlogoncache_entry", object);
2006 ret = PyString_FromString(retstr);
2007 talloc_free(retstr);
2012 static PyMethodDef py_netsamlogoncache_entry_methods[] = {
2013 { "__ndr_pack__", (PyCFunction)py_netsamlogoncache_entry_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
2014 { "__ndr_unpack__", (PyCFunction)py_netsamlogoncache_entry_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
2015 { "__ndr_print__", (PyCFunction)py_netsamlogoncache_entry_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
2016 { NULL, NULL, 0, NULL }
2020 static PyTypeObject netsamlogoncache_entry_Type = {
2021 PyObject_HEAD_INIT(NULL) 0,
2022 .tp_name = "krb5pac.netsamlogoncache_entry",
2023 .tp_getset = py_netsamlogoncache_entry_getsetters,
2024 .tp_methods = py_netsamlogoncache_entry_methods,
2025 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
2026 .tp_basicsize = sizeof(pytalloc_Object),
2027 .tp_new = py_netsamlogoncache_entry_new,
2031 const struct PyNdrRpcMethodDef py_ndr_krb5pac_methods[] = {
2035 static PyObject *interface_krb5pac_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
2037 return py_dcerpc_interface_init_helper(type, args, kwargs, &ndr_table_krb5pac);
2040 #define PY_DOC_KRB5PAC "Active Directory KRB5 PAC"
2041 static PyTypeObject krb5pac_InterfaceType = {
2042 PyObject_HEAD_INIT(NULL) 0,
2043 .tp_name = "krb5pac.krb5pac",
2044 .tp_basicsize = sizeof(dcerpc_InterfaceObject),
2045 .tp_doc = "krb5pac(binding, lp_ctx=None, credentials=None) -> connection\n"
2047 "binding should be a DCE/RPC binding string (for example: ncacn_ip_tcp:127.0.0.1)\n"
2048 "lp_ctx should be a path to a smb.conf file or a param.LoadParm object\n"
2049 "credentials should be a credentials.Credentials object.\n\n"PY_DOC_KRB5PAC,
2050 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
2051 .tp_new = interface_krb5pac_new,
2054 static PyMethodDef krb5pac_methods[] = {
2055 { NULL, NULL, 0, NULL }
2058 void initkrb5pac(void)
2061 PyObject *dep_samba_dcerpc_samr;
2062 PyObject *dep_samba_dcerpc_security;
2063 PyObject *dep_talloc;
2064 PyObject *dep_samba_dcerpc_base;
2065 PyObject *dep_samba_dcerpc_netlogon;
2066 PyObject *dep_samba_dcerpc_lsa;
2068 dep_samba_dcerpc_samr = PyImport_ImportModule("samba.dcerpc.samr");
2069 if (dep_samba_dcerpc_samr == NULL)
2072 dep_samba_dcerpc_security = PyImport_ImportModule("samba.dcerpc.security");
2073 if (dep_samba_dcerpc_security == NULL)
2076 dep_talloc = PyImport_ImportModule("talloc");
2077 if (dep_talloc == NULL)
2080 dep_samba_dcerpc_base = PyImport_ImportModule("samba.dcerpc.base");
2081 if (dep_samba_dcerpc_base == NULL)
2084 dep_samba_dcerpc_netlogon = PyImport_ImportModule("samba.dcerpc.netlogon");
2085 if (dep_samba_dcerpc_netlogon == NULL)
2088 dep_samba_dcerpc_lsa = PyImport_ImportModule("samba.dcerpc.lsa");
2089 if (dep_samba_dcerpc_lsa == NULL)
2092 lsa_String_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_lsa, "String");
2093 if (lsa_String_Type == NULL)
2096 dom_sid_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_security, "dom_sid");
2097 if (dom_sid_Type == NULL)
2100 netr_SamInfo3_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_netlogon, "netr_SamInfo3");
2101 if (netr_SamInfo3_Type == NULL)
2104 Object_Type = (PyTypeObject *)PyObject_GetAttrString(dep_talloc, "Object");
2105 if (Object_Type == NULL)
2108 ClientConnection_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_base, "ClientConnection");
2109 if (ClientConnection_Type == NULL)
2112 samr_RidWithAttributeArray_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_samr, "RidWithAttributeArray");
2113 if (samr_RidWithAttributeArray_Type == NULL)
2116 PAC_LOGON_NAME_Type.tp_base = Object_Type;
2118 PAC_SIGNATURE_DATA_Type.tp_base = Object_Type;
2120 PAC_LOGON_INFO_Type.tp_base = Object_Type;
2122 PAC_CONSTRAINED_DELEGATION_Type.tp_base = Object_Type;
2124 PAC_UPN_DNS_INFO_Type.tp_base = Object_Type;
2126 PAC_LOGON_INFO_CTR_Type.tp_base = Object_Type;
2128 PAC_CONSTRAINED_DELEGATION_CTR_Type.tp_base = Object_Type;
2130 DATA_BLOB_REM_Type.tp_base = Object_Type;
2132 PAC_BUFFER_Type.tp_base = Object_Type;
2134 PAC_DATA_Type.tp_base = Object_Type;
2136 PAC_BUFFER_RAW_Type.tp_base = Object_Type;
2138 PAC_DATA_RAW_Type.tp_base = Object_Type;
2140 PAC_Validate_Type.tp_base = Object_Type;
2142 netsamlogoncache_entry_Type.tp_base = Object_Type;
2144 krb5pac_InterfaceType.tp_base = ClientConnection_Type;
2146 if (PyType_Ready(&PAC_LOGON_NAME_Type) < 0)
2148 if (PyType_Ready(&PAC_SIGNATURE_DATA_Type) < 0)
2150 if (PyType_Ready(&PAC_LOGON_INFO_Type) < 0)
2152 if (PyType_Ready(&PAC_CONSTRAINED_DELEGATION_Type) < 0)
2154 if (PyType_Ready(&PAC_UPN_DNS_INFO_Type) < 0)
2156 if (PyType_Ready(&PAC_LOGON_INFO_CTR_Type) < 0)
2158 if (PyType_Ready(&PAC_CONSTRAINED_DELEGATION_CTR_Type) < 0)
2160 if (PyType_Ready(&DATA_BLOB_REM_Type) < 0)
2162 if (PyType_Ready(&PAC_BUFFER_Type) < 0)
2164 if (PyType_Ready(&PAC_DATA_Type) < 0)
2166 if (PyType_Ready(&PAC_BUFFER_RAW_Type) < 0)
2168 if (PyType_Ready(&PAC_DATA_RAW_Type) < 0)
2170 if (PyType_Ready(&PAC_Validate_Type) < 0)
2172 if (PyType_Ready(&netsamlogoncache_entry_Type) < 0)
2174 if (PyType_Ready(&krb5pac_InterfaceType) < 0)
2176 if (!PyInterface_AddNdrRpcMethods(&krb5pac_InterfaceType, py_ndr_krb5pac_methods))
2179 #ifdef PY_PAC_LOGON_NAME_PATCH
2180 PY_PAC_LOGON_NAME_PATCH(&PAC_LOGON_NAME_Type);
2182 #ifdef PY_PAC_SIGNATURE_DATA_PATCH
2183 PY_PAC_SIGNATURE_DATA_PATCH(&PAC_SIGNATURE_DATA_Type);
2185 #ifdef PY_PAC_LOGON_INFO_PATCH
2186 PY_PAC_LOGON_INFO_PATCH(&PAC_LOGON_INFO_Type);
2188 #ifdef PY_PAC_CONSTRAINED_DELEGATION_PATCH
2189 PY_PAC_CONSTRAINED_DELEGATION_PATCH(&PAC_CONSTRAINED_DELEGATION_Type);
2191 #ifdef PY_PAC_UPN_DNS_INFO_PATCH
2192 PY_PAC_UPN_DNS_INFO_PATCH(&PAC_UPN_DNS_INFO_Type);
2194 #ifdef PY_PAC_LOGON_INFO_CTR_PATCH
2195 PY_PAC_LOGON_INFO_CTR_PATCH(&PAC_LOGON_INFO_CTR_Type);
2197 #ifdef PY_PAC_CONSTRAINED_DELEGATION_CTR_PATCH
2198 PY_PAC_CONSTRAINED_DELEGATION_CTR_PATCH(&PAC_CONSTRAINED_DELEGATION_CTR_Type);
2200 #ifdef PY_DATA_BLOB_REM_PATCH
2201 PY_DATA_BLOB_REM_PATCH(&DATA_BLOB_REM_Type);
2203 #ifdef PY_PAC_BUFFER_PATCH
2204 PY_PAC_BUFFER_PATCH(&PAC_BUFFER_Type);
2206 #ifdef PY_PAC_DATA_PATCH
2207 PY_PAC_DATA_PATCH(&PAC_DATA_Type);
2209 #ifdef PY_PAC_BUFFER_RAW_PATCH
2210 PY_PAC_BUFFER_RAW_PATCH(&PAC_BUFFER_RAW_Type);
2212 #ifdef PY_PAC_DATA_RAW_PATCH
2213 PY_PAC_DATA_RAW_PATCH(&PAC_DATA_RAW_Type);
2215 #ifdef PY_PAC_VALIDATE_PATCH
2216 PY_PAC_VALIDATE_PATCH(&PAC_Validate_Type);
2218 #ifdef PY_NETSAMLOGONCACHE_ENTRY_PATCH
2219 PY_NETSAMLOGONCACHE_ENTRY_PATCH(&netsamlogoncache_entry_Type);
2221 #ifdef PY_KRB5PAC_PATCH
2222 PY_KRB5PAC_PATCH(&krb5pac_InterfaceType);
2225 m = Py_InitModule3("krb5pac", krb5pac_methods, "krb5pac DCE/RPC");
2229 PyModule_AddObject(m, "NETLOGON_GENERIC_KRB5_PAC_VALIDATE", PyInt_FromLong(3));
2230 PyModule_AddObject(m, "PAC_TYPE_LOGON_INFO", PyInt_FromLong(PAC_TYPE_LOGON_INFO));
2231 PyModule_AddObject(m, "PAC_TYPE_CONSTRAINED_DELEGATION", PyInt_FromLong(PAC_TYPE_CONSTRAINED_DELEGATION));
2232 PyModule_AddObject(m, "PAC_TYPE_SRV_CHECKSUM", PyInt_FromLong(PAC_TYPE_SRV_CHECKSUM));
2233 PyModule_AddObject(m, "PAC_TYPE_KDC_CHECKSUM", PyInt_FromLong(PAC_TYPE_KDC_CHECKSUM));
2234 PyModule_AddObject(m, "PAC_TYPE_LOGON_NAME", PyInt_FromLong(PAC_TYPE_LOGON_NAME));
2235 PyModule_AddObject(m, "PAC_TYPE_UPN_DNS_INFO", PyInt_FromLong(PAC_TYPE_UPN_DNS_INFO));
2236 PyModule_AddObject(m, "UDI_ACCT_HAS_NO_UPN", PyInt_FromLong(UDI_ACCT_HAS_NO_UPN));
2237 Py_INCREF((PyObject *)(void *)&PAC_LOGON_NAME_Type);
2238 PyModule_AddObject(m, "PAC_LOGON_NAME", (PyObject *)(void *)&PAC_LOGON_NAME_Type);
2239 Py_INCREF((PyObject *)(void *)&PAC_SIGNATURE_DATA_Type);
2240 PyModule_AddObject(m, "PAC_SIGNATURE_DATA", (PyObject *)(void *)&PAC_SIGNATURE_DATA_Type);
2241 Py_INCREF((PyObject *)(void *)&PAC_LOGON_INFO_Type);
2242 PyModule_AddObject(m, "PAC_LOGON_INFO", (PyObject *)(void *)&PAC_LOGON_INFO_Type);
2243 Py_INCREF((PyObject *)(void *)&PAC_CONSTRAINED_DELEGATION_Type);
2244 PyModule_AddObject(m, "PAC_CONSTRAINED_DELEGATION", (PyObject *)(void *)&PAC_CONSTRAINED_DELEGATION_Type);
2245 Py_INCREF((PyObject *)(void *)&PAC_UPN_DNS_INFO_Type);
2246 PyModule_AddObject(m, "PAC_UPN_DNS_INFO", (PyObject *)(void *)&PAC_UPN_DNS_INFO_Type);
2247 Py_INCREF((PyObject *)(void *)&PAC_LOGON_INFO_CTR_Type);
2248 PyModule_AddObject(m, "PAC_LOGON_INFO_CTR", (PyObject *)(void *)&PAC_LOGON_INFO_CTR_Type);
2249 Py_INCREF((PyObject *)(void *)&PAC_CONSTRAINED_DELEGATION_CTR_Type);
2250 PyModule_AddObject(m, "PAC_CONSTRAINED_DELEGATION_CTR", (PyObject *)(void *)&PAC_CONSTRAINED_DELEGATION_CTR_Type);
2251 Py_INCREF((PyObject *)(void *)&DATA_BLOB_REM_Type);
2252 PyModule_AddObject(m, "DATA_BLOB_REM", (PyObject *)(void *)&DATA_BLOB_REM_Type);
2253 Py_INCREF((PyObject *)(void *)&PAC_BUFFER_Type);
2254 PyModule_AddObject(m, "PAC_BUFFER", (PyObject *)(void *)&PAC_BUFFER_Type);
2255 Py_INCREF((PyObject *)(void *)&PAC_DATA_Type);
2256 PyModule_AddObject(m, "PAC_DATA", (PyObject *)(void *)&PAC_DATA_Type);
2257 Py_INCREF((PyObject *)(void *)&PAC_BUFFER_RAW_Type);
2258 PyModule_AddObject(m, "PAC_BUFFER_RAW", (PyObject *)(void *)&PAC_BUFFER_RAW_Type);
2259 Py_INCREF((PyObject *)(void *)&PAC_DATA_RAW_Type);
2260 PyModule_AddObject(m, "PAC_DATA_RAW", (PyObject *)(void *)&PAC_DATA_RAW_Type);
2261 Py_INCREF((PyObject *)(void *)&PAC_Validate_Type);
2262 PyModule_AddObject(m, "PAC_Validate", (PyObject *)(void *)&PAC_Validate_Type);
2263 Py_INCREF((PyObject *)(void *)&netsamlogoncache_entry_Type);
2264 PyModule_AddObject(m, "netsamlogoncache_entry", (PyObject *)(void *)&netsamlogoncache_entry_Type);
2265 Py_INCREF((PyObject *)(void *)&krb5pac_InterfaceType);
2266 PyModule_AddObject(m, "krb5pac", (PyObject *)(void *)&krb5pac_InterfaceType);
2267 #ifdef PY_MOD_KRB5PAC_PATCH
2268 PY_MOD_KRB5PAC_PATCH(m);