1 /* parser auto-generated by pidl */
4 #include "librpc/gen_ndr/ndr_krb5pac.h"
6 #include "librpc/gen_ndr/ndr_security.h"
7 #include "librpc/gen_ndr/ndr_netlogon.h"
8 #include "librpc/gen_ndr/ndr_samr.h"
9 static enum ndr_err_code ndr_push_PAC_LOGON_NAME(struct ndr_push *ndr, int ndr_flags, const struct PAC_LOGON_NAME *r)
11 if (ndr_flags & NDR_SCALARS) {
12 NDR_CHECK(ndr_push_align(ndr, 4));
13 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->logon_time));
14 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 2 * strlen_m(r->account_name)));
15 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->account_name, 2 * strlen_m(r->account_name), sizeof(uint8_t), CH_UTF16));
17 if (ndr_flags & NDR_BUFFERS) {
19 return NDR_ERR_SUCCESS;
22 static enum ndr_err_code ndr_pull_PAC_LOGON_NAME(struct ndr_pull *ndr, int ndr_flags, struct PAC_LOGON_NAME *r)
24 if (ndr_flags & NDR_SCALARS) {
25 NDR_CHECK(ndr_pull_align(ndr, 4));
26 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->logon_time));
27 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
28 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->account_name, r->size, sizeof(uint8_t), CH_UTF16));
30 if (ndr_flags & NDR_BUFFERS) {
32 return NDR_ERR_SUCCESS;
35 _PUBLIC_ void ndr_print_PAC_LOGON_NAME(struct ndr_print *ndr, const char *name, const struct PAC_LOGON_NAME *r)
37 ndr_print_struct(ndr, name, "PAC_LOGON_NAME");
39 ndr_print_NTTIME(ndr, "logon_time", r->logon_time);
40 ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2 * strlen_m(r->account_name):r->size);
41 ndr_print_string(ndr, "account_name", r->account_name);
45 _PUBLIC_ enum ndr_err_code ndr_push_PAC_SIGNATURE_DATA(struct ndr_push *ndr, int ndr_flags, const struct PAC_SIGNATURE_DATA *r)
48 uint32_t _flags_save_STRUCT = ndr->flags;
49 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
50 if (ndr_flags & NDR_SCALARS) {
51 NDR_CHECK(ndr_push_align(ndr, 4));
52 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
54 uint32_t _flags_save_DATA_BLOB = ndr->flags;
55 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
56 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->signature));
57 ndr->flags = _flags_save_DATA_BLOB;
60 if (ndr_flags & NDR_BUFFERS) {
62 ndr->flags = _flags_save_STRUCT;
64 return NDR_ERR_SUCCESS;
67 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_SIGNATURE_DATA(struct ndr_pull *ndr, int ndr_flags, struct PAC_SIGNATURE_DATA *r)
70 uint32_t _flags_save_STRUCT = ndr->flags;
71 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
72 if (ndr_flags & NDR_SCALARS) {
73 NDR_CHECK(ndr_pull_align(ndr, 4));
74 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
76 uint32_t _flags_save_DATA_BLOB = ndr->flags;
77 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
78 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->signature));
79 ndr->flags = _flags_save_DATA_BLOB;
82 if (ndr_flags & NDR_BUFFERS) {
84 ndr->flags = _flags_save_STRUCT;
86 return NDR_ERR_SUCCESS;
89 _PUBLIC_ void ndr_print_PAC_SIGNATURE_DATA(struct ndr_print *ndr, const char *name, const struct PAC_SIGNATURE_DATA *r)
91 ndr_print_struct(ndr, name, "PAC_SIGNATURE_DATA");
93 uint32_t _flags_save_STRUCT = ndr->flags;
94 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
96 ndr_print_uint32(ndr, "type", r->type);
97 ndr_print_DATA_BLOB(ndr, "signature", r->signature);
99 ndr->flags = _flags_save_STRUCT;
103 static enum ndr_err_code ndr_push_PAC_LOGON_INFO(struct ndr_push *ndr, int ndr_flags, const struct PAC_LOGON_INFO *r)
105 if (ndr_flags & NDR_SCALARS) {
106 NDR_CHECK(ndr_push_align(ndr, 4));
107 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS, &r->info3));
108 NDR_CHECK(ndr_push_unique_ptr(ndr, r->res_group_dom_sid));
109 NDR_CHECK(ndr_push_samr_RidWithAttributeArray(ndr, NDR_SCALARS, &r->res_groups));
111 if (ndr_flags & NDR_BUFFERS) {
112 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info3));
113 if (r->res_group_dom_sid) {
114 NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->res_group_dom_sid));
116 NDR_CHECK(ndr_push_samr_RidWithAttributeArray(ndr, NDR_BUFFERS, &r->res_groups));
118 return NDR_ERR_SUCCESS;
121 static enum ndr_err_code ndr_pull_PAC_LOGON_INFO(struct ndr_pull *ndr, int ndr_flags, struct PAC_LOGON_INFO *r)
123 uint32_t _ptr_res_group_dom_sid;
124 TALLOC_CTX *_mem_save_res_group_dom_sid_0;
125 if (ndr_flags & NDR_SCALARS) {
126 NDR_CHECK(ndr_pull_align(ndr, 4));
127 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS, &r->info3));
128 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_res_group_dom_sid));
129 if (_ptr_res_group_dom_sid) {
130 NDR_PULL_ALLOC(ndr, r->res_group_dom_sid);
132 r->res_group_dom_sid = NULL;
134 NDR_CHECK(ndr_pull_samr_RidWithAttributeArray(ndr, NDR_SCALARS, &r->res_groups));
136 if (ndr_flags & NDR_BUFFERS) {
137 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info3));
138 if (r->res_group_dom_sid) {
139 _mem_save_res_group_dom_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
140 NDR_PULL_SET_MEM_CTX(ndr, r->res_group_dom_sid, 0);
141 NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->res_group_dom_sid));
142 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_res_group_dom_sid_0, 0);
144 NDR_CHECK(ndr_pull_samr_RidWithAttributeArray(ndr, NDR_BUFFERS, &r->res_groups));
146 return NDR_ERR_SUCCESS;
149 _PUBLIC_ void ndr_print_PAC_LOGON_INFO(struct ndr_print *ndr, const char *name, const struct PAC_LOGON_INFO *r)
151 ndr_print_struct(ndr, name, "PAC_LOGON_INFO");
153 ndr_print_netr_SamInfo3(ndr, "info3", &r->info3);
154 ndr_print_ptr(ndr, "res_group_dom_sid", r->res_group_dom_sid);
156 if (r->res_group_dom_sid) {
157 ndr_print_dom_sid2(ndr, "res_group_dom_sid", r->res_group_dom_sid);
160 ndr_print_samr_RidWithAttributeArray(ndr, "res_groups", &r->res_groups);
164 static size_t ndr_size_PAC_LOGON_INFO(const struct PAC_LOGON_INFO *r, int flags)
166 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_PAC_LOGON_INFO);
169 _PUBLIC_ enum ndr_err_code ndr_push_PAC_LOGON_INFO_CTR(struct ndr_push *ndr, int ndr_flags, const struct PAC_LOGON_INFO_CTR *r)
171 if (ndr_flags & NDR_SCALARS) {
172 NDR_CHECK(ndr_push_align(ndr, 4));
173 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info));
175 if (ndr_flags & NDR_BUFFERS) {
177 NDR_CHECK(ndr_push_PAC_LOGON_INFO(ndr, NDR_SCALARS|NDR_BUFFERS, r->info));
180 return NDR_ERR_SUCCESS;
183 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_LOGON_INFO_CTR(struct ndr_pull *ndr, int ndr_flags, struct PAC_LOGON_INFO_CTR *r)
186 TALLOC_CTX *_mem_save_info_0;
187 if (ndr_flags & NDR_SCALARS) {
188 NDR_CHECK(ndr_pull_align(ndr, 4));
189 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
191 NDR_PULL_ALLOC(ndr, r->info);
196 if (ndr_flags & NDR_BUFFERS) {
198 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
199 NDR_PULL_SET_MEM_CTX(ndr, r->info, 0);
200 NDR_CHECK(ndr_pull_PAC_LOGON_INFO(ndr, NDR_SCALARS|NDR_BUFFERS, r->info));
201 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
204 return NDR_ERR_SUCCESS;
207 _PUBLIC_ void ndr_print_PAC_LOGON_INFO_CTR(struct ndr_print *ndr, const char *name, const struct PAC_LOGON_INFO_CTR *r)
209 ndr_print_struct(ndr, name, "PAC_LOGON_INFO_CTR");
211 ndr_print_ptr(ndr, "info", r->info);
214 ndr_print_PAC_LOGON_INFO(ndr, "info", r->info);
220 _PUBLIC_ enum ndr_err_code ndr_push_PAC_TYPE(struct ndr_push *ndr, int ndr_flags, enum PAC_TYPE r)
222 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
223 return NDR_ERR_SUCCESS;
226 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_TYPE(struct ndr_pull *ndr, int ndr_flags, enum PAC_TYPE *r)
229 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
231 return NDR_ERR_SUCCESS;
234 _PUBLIC_ void ndr_print_PAC_TYPE(struct ndr_print *ndr, const char *name, enum PAC_TYPE r)
236 const char *val = NULL;
239 case PAC_TYPE_LOGON_INFO: val = "PAC_TYPE_LOGON_INFO"; break;
240 case PAC_TYPE_SRV_CHECKSUM: val = "PAC_TYPE_SRV_CHECKSUM"; break;
241 case PAC_TYPE_KDC_CHECKSUM: val = "PAC_TYPE_KDC_CHECKSUM"; break;
242 case PAC_TYPE_LOGON_NAME: val = "PAC_TYPE_LOGON_NAME"; break;
243 case PAC_TYPE_CONSTRAINED_DELEGATION: val = "PAC_TYPE_CONSTRAINED_DELEGATION"; break;
244 case PAC_TYPE_UNKNOWN_12: val = "PAC_TYPE_UNKNOWN_12"; break;
246 ndr_print_enum(ndr, name, "ENUM", val, r);
249 static enum ndr_err_code ndr_push_DATA_BLOB_REM(struct ndr_push *ndr, int ndr_flags, const struct DATA_BLOB_REM *r)
251 if (ndr_flags & NDR_SCALARS) {
252 NDR_CHECK(ndr_push_align(ndr, 4));
254 uint32_t _flags_save_DATA_BLOB = ndr->flags;
255 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
256 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->remaining));
257 ndr->flags = _flags_save_DATA_BLOB;
260 if (ndr_flags & NDR_BUFFERS) {
262 return NDR_ERR_SUCCESS;
265 static enum ndr_err_code ndr_pull_DATA_BLOB_REM(struct ndr_pull *ndr, int ndr_flags, struct DATA_BLOB_REM *r)
267 if (ndr_flags & NDR_SCALARS) {
268 NDR_CHECK(ndr_pull_align(ndr, 4));
270 uint32_t _flags_save_DATA_BLOB = ndr->flags;
271 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
272 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->remaining));
273 ndr->flags = _flags_save_DATA_BLOB;
276 if (ndr_flags & NDR_BUFFERS) {
278 return NDR_ERR_SUCCESS;
281 _PUBLIC_ void ndr_print_DATA_BLOB_REM(struct ndr_print *ndr, const char *name, const struct DATA_BLOB_REM *r)
283 ndr_print_struct(ndr, name, "DATA_BLOB_REM");
285 ndr_print_DATA_BLOB(ndr, "remaining", r->remaining);
289 _PUBLIC_ enum ndr_err_code ndr_push_PAC_INFO(struct ndr_push *ndr, int ndr_flags, const union PAC_INFO *r)
291 if (ndr_flags & NDR_SCALARS) {
292 int level = ndr_push_get_switch_value(ndr, r);
294 case PAC_TYPE_LOGON_INFO: {
296 struct ndr_push *_ndr_logon_info;
297 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_logon_info, 0xFFFFFC01, -1));
298 NDR_CHECK(ndr_push_PAC_LOGON_INFO_CTR(_ndr_logon_info, NDR_SCALARS|NDR_BUFFERS, &r->logon_info));
299 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_logon_info, 0xFFFFFC01, -1));
303 case PAC_TYPE_SRV_CHECKSUM: {
304 NDR_CHECK(ndr_push_PAC_SIGNATURE_DATA(ndr, NDR_SCALARS, &r->srv_cksum));
307 case PAC_TYPE_KDC_CHECKSUM: {
308 NDR_CHECK(ndr_push_PAC_SIGNATURE_DATA(ndr, NDR_SCALARS, &r->kdc_cksum));
311 case PAC_TYPE_LOGON_NAME: {
312 NDR_CHECK(ndr_push_PAC_LOGON_NAME(ndr, NDR_SCALARS, &r->logon_name));
317 struct ndr_push *_ndr_unknown;
318 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_unknown, 0, -1));
319 NDR_CHECK(ndr_push_DATA_BLOB_REM(_ndr_unknown, NDR_SCALARS, &r->unknown));
320 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_unknown, 0, -1));
326 if (ndr_flags & NDR_BUFFERS) {
327 int level = ndr_push_get_switch_value(ndr, r);
329 case PAC_TYPE_LOGON_INFO:
332 case PAC_TYPE_SRV_CHECKSUM:
335 case PAC_TYPE_KDC_CHECKSUM:
338 case PAC_TYPE_LOGON_NAME:
346 return NDR_ERR_SUCCESS;
349 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_INFO(struct ndr_pull *ndr, int ndr_flags, union PAC_INFO *r)
352 level = ndr_pull_get_switch_value(ndr, r);
353 if (ndr_flags & NDR_SCALARS) {
355 case PAC_TYPE_LOGON_INFO: {
357 struct ndr_pull *_ndr_logon_info;
358 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_logon_info, 0xFFFFFC01, -1));
359 NDR_CHECK(ndr_pull_PAC_LOGON_INFO_CTR(_ndr_logon_info, NDR_SCALARS|NDR_BUFFERS, &r->logon_info));
360 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_logon_info, 0xFFFFFC01, -1));
364 case PAC_TYPE_SRV_CHECKSUM: {
365 NDR_CHECK(ndr_pull_PAC_SIGNATURE_DATA(ndr, NDR_SCALARS, &r->srv_cksum));
368 case PAC_TYPE_KDC_CHECKSUM: {
369 NDR_CHECK(ndr_pull_PAC_SIGNATURE_DATA(ndr, NDR_SCALARS, &r->kdc_cksum));
372 case PAC_TYPE_LOGON_NAME: {
373 NDR_CHECK(ndr_pull_PAC_LOGON_NAME(ndr, NDR_SCALARS, &r->logon_name));
378 struct ndr_pull *_ndr_unknown;
379 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_unknown, 0, -1));
380 NDR_CHECK(ndr_pull_DATA_BLOB_REM(_ndr_unknown, NDR_SCALARS, &r->unknown));
381 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_unknown, 0, -1));
387 if (ndr_flags & NDR_BUFFERS) {
389 case PAC_TYPE_LOGON_INFO:
392 case PAC_TYPE_SRV_CHECKSUM:
395 case PAC_TYPE_KDC_CHECKSUM:
398 case PAC_TYPE_LOGON_NAME:
406 return NDR_ERR_SUCCESS;
409 _PUBLIC_ void ndr_print_PAC_INFO(struct ndr_print *ndr, const char *name, const union PAC_INFO *r)
412 level = ndr_print_get_switch_value(ndr, r);
413 ndr_print_union(ndr, name, level, "PAC_INFO");
415 case PAC_TYPE_LOGON_INFO:
416 ndr_print_PAC_LOGON_INFO_CTR(ndr, "logon_info", &r->logon_info);
419 case PAC_TYPE_SRV_CHECKSUM:
420 ndr_print_PAC_SIGNATURE_DATA(ndr, "srv_cksum", &r->srv_cksum);
423 case PAC_TYPE_KDC_CHECKSUM:
424 ndr_print_PAC_SIGNATURE_DATA(ndr, "kdc_cksum", &r->kdc_cksum);
427 case PAC_TYPE_LOGON_NAME:
428 ndr_print_PAC_LOGON_NAME(ndr, "logon_name", &r->logon_name);
432 ndr_print_DATA_BLOB_REM(ndr, "unknown", &r->unknown);
438 _PUBLIC_ size_t ndr_size_PAC_INFO(const union PAC_INFO *r, uint32_t level, int flags)
440 return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_PAC_INFO);
443 _PUBLIC_ enum ndr_err_code ndr_push_PAC_DATA(struct ndr_push *ndr, int ndr_flags, const struct PAC_DATA *r)
445 uint32_t cntr_buffers_0;
446 if (ndr_flags & NDR_SCALARS) {
447 NDR_CHECK(ndr_push_align(ndr, 4));
448 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_buffers));
449 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
450 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
451 NDR_CHECK(ndr_push_PAC_BUFFER(ndr, NDR_SCALARS, &r->buffers[cntr_buffers_0]));
454 if (ndr_flags & NDR_BUFFERS) {
455 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
456 NDR_CHECK(ndr_push_PAC_BUFFER(ndr, NDR_BUFFERS, &r->buffers[cntr_buffers_0]));
459 return NDR_ERR_SUCCESS;
462 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_DATA(struct ndr_pull *ndr, int ndr_flags, struct PAC_DATA *r)
464 uint32_t cntr_buffers_0;
465 TALLOC_CTX *_mem_save_buffers_0;
466 if (ndr_flags & NDR_SCALARS) {
467 NDR_CHECK(ndr_pull_align(ndr, 4));
468 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_buffers));
469 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
470 NDR_PULL_ALLOC_N(ndr, r->buffers, r->num_buffers);
471 _mem_save_buffers_0 = NDR_PULL_GET_MEM_CTX(ndr);
472 NDR_PULL_SET_MEM_CTX(ndr, r->buffers, 0);
473 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
474 NDR_CHECK(ndr_pull_PAC_BUFFER(ndr, NDR_SCALARS, &r->buffers[cntr_buffers_0]));
476 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffers_0, 0);
478 if (ndr_flags & NDR_BUFFERS) {
479 _mem_save_buffers_0 = NDR_PULL_GET_MEM_CTX(ndr);
480 NDR_PULL_SET_MEM_CTX(ndr, r->buffers, 0);
481 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
482 NDR_CHECK(ndr_pull_PAC_BUFFER(ndr, NDR_BUFFERS, &r->buffers[cntr_buffers_0]));
484 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffers_0, 0);
486 return NDR_ERR_SUCCESS;
489 _PUBLIC_ void ndr_print_PAC_DATA(struct ndr_print *ndr, const char *name, const struct PAC_DATA *r)
491 uint32_t cntr_buffers_0;
492 ndr_print_struct(ndr, name, "PAC_DATA");
494 ndr_print_uint32(ndr, "num_buffers", r->num_buffers);
495 ndr_print_uint32(ndr, "version", r->version);
496 ndr->print(ndr, "%s: ARRAY(%d)", "buffers", (int)r->num_buffers);
498 for (cntr_buffers_0=0;cntr_buffers_0<r->num_buffers;cntr_buffers_0++) {
500 if (asprintf(&idx_0, "[%d]", cntr_buffers_0) != -1) {
501 ndr_print_PAC_BUFFER(ndr, "buffers", &r->buffers[cntr_buffers_0]);
509 _PUBLIC_ enum ndr_err_code ndr_push_PAC_BUFFER_RAW(struct ndr_push *ndr, int ndr_flags, const struct PAC_BUFFER_RAW *r)
511 if (ndr_flags & NDR_SCALARS) {
512 NDR_CHECK(ndr_push_align(ndr, 4));
513 NDR_CHECK(ndr_push_PAC_TYPE(ndr, NDR_SCALARS, r->type));
514 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ndr_size));
516 uint32_t _flags_save_DATA_BLOB_REM = ndr->flags;
517 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN8);
518 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->info));
519 ndr->flags = _flags_save_DATA_BLOB_REM;
521 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
523 if (ndr_flags & NDR_BUFFERS) {
525 uint32_t _flags_save_DATA_BLOB_REM = ndr->flags;
526 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN8);
528 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->info));
530 struct ndr_push *_ndr_info;
531 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info, 0, NDR_ROUND(r->ndr_size, 8)));
532 NDR_CHECK(ndr_push_DATA_BLOB_REM(_ndr_info, NDR_SCALARS, r->info));
533 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 0, NDR_ROUND(r->ndr_size, 8)));
536 ndr->flags = _flags_save_DATA_BLOB_REM;
539 return NDR_ERR_SUCCESS;
542 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_BUFFER_RAW(struct ndr_pull *ndr, int ndr_flags, struct PAC_BUFFER_RAW *r)
545 TALLOC_CTX *_mem_save_info_0;
546 if (ndr_flags & NDR_SCALARS) {
547 NDR_CHECK(ndr_pull_align(ndr, 4));
548 NDR_CHECK(ndr_pull_PAC_TYPE(ndr, NDR_SCALARS, &r->type));
549 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ndr_size));
551 uint32_t _flags_save_DATA_BLOB_REM = ndr->flags;
552 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN8);
553 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
555 NDR_PULL_ALLOC(ndr, r->info);
556 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->info, _ptr_info));
560 ndr->flags = _flags_save_DATA_BLOB_REM;
562 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_pad));
564 if (ndr_flags & NDR_BUFFERS) {
566 uint32_t _flags_save_DATA_BLOB_REM = ndr->flags;
567 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN8);
569 uint32_t _relative_save_offset;
570 _relative_save_offset = ndr->offset;
571 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->info));
572 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
573 NDR_PULL_SET_MEM_CTX(ndr, r->info, 0);
575 struct ndr_pull *_ndr_info;
576 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info, 0, NDR_ROUND(r->ndr_size, 8)));
577 NDR_CHECK(ndr_pull_DATA_BLOB_REM(_ndr_info, NDR_SCALARS, r->info));
578 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info, 0, NDR_ROUND(r->ndr_size, 8)));
580 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
581 ndr->offset = _relative_save_offset;
583 ndr->flags = _flags_save_DATA_BLOB_REM;
586 return NDR_ERR_SUCCESS;
589 _PUBLIC_ void ndr_print_PAC_BUFFER_RAW(struct ndr_print *ndr, const char *name, const struct PAC_BUFFER_RAW *r)
591 ndr_print_struct(ndr, name, "PAC_BUFFER_RAW");
593 ndr_print_PAC_TYPE(ndr, "type", r->type);
594 ndr_print_uint32(ndr, "ndr_size", r->ndr_size);
595 ndr_print_ptr(ndr, "info", r->info);
598 ndr_print_DATA_BLOB_REM(ndr, "info", r->info);
601 ndr_print_uint32(ndr, "_pad", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->_pad);
605 _PUBLIC_ enum ndr_err_code ndr_push_PAC_DATA_RAW(struct ndr_push *ndr, int ndr_flags, const struct PAC_DATA_RAW *r)
607 uint32_t cntr_buffers_0;
608 if (ndr_flags & NDR_SCALARS) {
609 NDR_CHECK(ndr_push_align(ndr, 4));
610 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_buffers));
611 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
612 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
613 NDR_CHECK(ndr_push_PAC_BUFFER_RAW(ndr, NDR_SCALARS, &r->buffers[cntr_buffers_0]));
616 if (ndr_flags & NDR_BUFFERS) {
617 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
618 NDR_CHECK(ndr_push_PAC_BUFFER_RAW(ndr, NDR_BUFFERS, &r->buffers[cntr_buffers_0]));
621 return NDR_ERR_SUCCESS;
624 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_DATA_RAW(struct ndr_pull *ndr, int ndr_flags, struct PAC_DATA_RAW *r)
626 uint32_t cntr_buffers_0;
627 TALLOC_CTX *_mem_save_buffers_0;
628 if (ndr_flags & NDR_SCALARS) {
629 NDR_CHECK(ndr_pull_align(ndr, 4));
630 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_buffers));
631 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
632 NDR_PULL_ALLOC_N(ndr, r->buffers, r->num_buffers);
633 _mem_save_buffers_0 = NDR_PULL_GET_MEM_CTX(ndr);
634 NDR_PULL_SET_MEM_CTX(ndr, r->buffers, 0);
635 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
636 NDR_CHECK(ndr_pull_PAC_BUFFER_RAW(ndr, NDR_SCALARS, &r->buffers[cntr_buffers_0]));
638 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffers_0, 0);
640 if (ndr_flags & NDR_BUFFERS) {
641 _mem_save_buffers_0 = NDR_PULL_GET_MEM_CTX(ndr);
642 NDR_PULL_SET_MEM_CTX(ndr, r->buffers, 0);
643 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
644 NDR_CHECK(ndr_pull_PAC_BUFFER_RAW(ndr, NDR_BUFFERS, &r->buffers[cntr_buffers_0]));
646 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffers_0, 0);
648 return NDR_ERR_SUCCESS;
651 _PUBLIC_ void ndr_print_PAC_DATA_RAW(struct ndr_print *ndr, const char *name, const struct PAC_DATA_RAW *r)
653 uint32_t cntr_buffers_0;
654 ndr_print_struct(ndr, name, "PAC_DATA_RAW");
656 ndr_print_uint32(ndr, "num_buffers", r->num_buffers);
657 ndr_print_uint32(ndr, "version", r->version);
658 ndr->print(ndr, "%s: ARRAY(%d)", "buffers", (int)r->num_buffers);
660 for (cntr_buffers_0=0;cntr_buffers_0<r->num_buffers;cntr_buffers_0++) {
662 if (asprintf(&idx_0, "[%d]", cntr_buffers_0) != -1) {
663 ndr_print_PAC_BUFFER_RAW(ndr, "buffers", &r->buffers[cntr_buffers_0]);
671 _PUBLIC_ enum ndr_err_code ndr_push_PAC_Validate(struct ndr_push *ndr, int ndr_flags, const struct PAC_Validate *r)
673 if (ndr_flags & NDR_SCALARS) {
674 NDR_CHECK(ndr_push_align(ndr, 4));
675 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, NETLOGON_GENERIC_KRB5_PAC_VALIDATE));
676 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ChecksumLength));
677 NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->SignatureType));
678 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SignatureLength));
680 uint32_t _flags_save_DATA_BLOB = ndr->flags;
681 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
682 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->ChecksumAndSignature));
683 ndr->flags = _flags_save_DATA_BLOB;
686 if (ndr_flags & NDR_BUFFERS) {
688 return NDR_ERR_SUCCESS;
691 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_Validate(struct ndr_pull *ndr, int ndr_flags, struct PAC_Validate *r)
693 if (ndr_flags & NDR_SCALARS) {
694 NDR_CHECK(ndr_pull_align(ndr, 4));
695 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->MessageType));
696 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ChecksumLength));
697 NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->SignatureType));
698 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SignatureLength));
700 uint32_t _flags_save_DATA_BLOB = ndr->flags;
701 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
702 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->ChecksumAndSignature));
703 ndr->flags = _flags_save_DATA_BLOB;
706 if (ndr_flags & NDR_BUFFERS) {
708 return NDR_ERR_SUCCESS;
711 _PUBLIC_ void ndr_print_PAC_Validate(struct ndr_print *ndr, const char *name, const struct PAC_Validate *r)
713 ndr_print_struct(ndr, name, "PAC_Validate");
715 ndr_print_uint32(ndr, "MessageType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NETLOGON_GENERIC_KRB5_PAC_VALIDATE:r->MessageType);
716 ndr_print_uint32(ndr, "ChecksumLength", r->ChecksumLength);
717 ndr_print_int32(ndr, "SignatureType", r->SignatureType);
718 ndr_print_uint32(ndr, "SignatureLength", r->SignatureLength);
719 ndr_print_DATA_BLOB(ndr, "ChecksumAndSignature", r->ChecksumAndSignature);
723 _PUBLIC_ enum ndr_err_code ndr_push_netsamlogoncache_entry(struct ndr_push *ndr, int ndr_flags, const struct netsamlogoncache_entry *r)
725 if (ndr_flags & NDR_SCALARS) {
726 NDR_CHECK(ndr_push_align(ndr, 4));
727 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->timestamp));
728 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS, &r->info3));
730 if (ndr_flags & NDR_BUFFERS) {
731 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info3));
733 return NDR_ERR_SUCCESS;
736 _PUBLIC_ enum ndr_err_code ndr_pull_netsamlogoncache_entry(struct ndr_pull *ndr, int ndr_flags, struct netsamlogoncache_entry *r)
738 if (ndr_flags & NDR_SCALARS) {
739 NDR_CHECK(ndr_pull_align(ndr, 4));
740 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->timestamp));
741 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS, &r->info3));
743 if (ndr_flags & NDR_BUFFERS) {
744 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info3));
746 return NDR_ERR_SUCCESS;
749 _PUBLIC_ void ndr_print_netsamlogoncache_entry(struct ndr_print *ndr, const char *name, const struct netsamlogoncache_entry *r)
751 ndr_print_struct(ndr, name, "netsamlogoncache_entry");
753 ndr_print_time_t(ndr, "timestamp", r->timestamp);
754 ndr_print_netr_SamInfo3(ndr, "info3", &r->info3);
758 static enum ndr_err_code ndr_push_decode_pac(struct ndr_push *ndr, int flags, const struct decode_pac *r)
760 if (flags & NDR_IN) {
761 NDR_CHECK(ndr_push_PAC_DATA(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.pac));
763 if (flags & NDR_OUT) {
765 return NDR_ERR_SUCCESS;
768 static enum ndr_err_code ndr_pull_decode_pac(struct ndr_pull *ndr, int flags, struct decode_pac *r)
770 if (flags & NDR_IN) {
771 NDR_CHECK(ndr_pull_PAC_DATA(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.pac));
773 if (flags & NDR_OUT) {
775 return NDR_ERR_SUCCESS;
778 _PUBLIC_ void ndr_print_decode_pac(struct ndr_print *ndr, const char *name, int flags, const struct decode_pac *r)
780 ndr_print_struct(ndr, name, "decode_pac");
782 if (flags & NDR_SET_VALUES) {
783 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
785 if (flags & NDR_IN) {
786 ndr_print_struct(ndr, "in", "decode_pac");
788 ndr_print_PAC_DATA(ndr, "pac", &r->in.pac);
791 if (flags & NDR_OUT) {
792 ndr_print_struct(ndr, "out", "decode_pac");
799 static enum ndr_err_code ndr_push_decode_pac_raw(struct ndr_push *ndr, int flags, const struct decode_pac_raw *r)
801 if (flags & NDR_IN) {
802 NDR_CHECK(ndr_push_PAC_DATA_RAW(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.pac));
804 if (flags & NDR_OUT) {
806 return NDR_ERR_SUCCESS;
809 static enum ndr_err_code ndr_pull_decode_pac_raw(struct ndr_pull *ndr, int flags, struct decode_pac_raw *r)
811 if (flags & NDR_IN) {
812 NDR_CHECK(ndr_pull_PAC_DATA_RAW(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.pac));
814 if (flags & NDR_OUT) {
816 return NDR_ERR_SUCCESS;
819 _PUBLIC_ void ndr_print_decode_pac_raw(struct ndr_print *ndr, const char *name, int flags, const struct decode_pac_raw *r)
821 ndr_print_struct(ndr, name, "decode_pac_raw");
823 if (flags & NDR_SET_VALUES) {
824 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
826 if (flags & NDR_IN) {
827 ndr_print_struct(ndr, "in", "decode_pac_raw");
829 ndr_print_PAC_DATA_RAW(ndr, "pac", &r->in.pac);
832 if (flags & NDR_OUT) {
833 ndr_print_struct(ndr, "out", "decode_pac_raw");
840 static enum ndr_err_code ndr_push_decode_login_info(struct ndr_push *ndr, int flags, const struct decode_login_info *r)
842 if (flags & NDR_IN) {
843 NDR_CHECK(ndr_push_PAC_LOGON_INFO(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon_info));
845 if (flags & NDR_OUT) {
847 return NDR_ERR_SUCCESS;
850 static enum ndr_err_code ndr_pull_decode_login_info(struct ndr_pull *ndr, int flags, struct decode_login_info *r)
852 if (flags & NDR_IN) {
853 NDR_CHECK(ndr_pull_PAC_LOGON_INFO(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon_info));
855 if (flags & NDR_OUT) {
857 return NDR_ERR_SUCCESS;
860 _PUBLIC_ void ndr_print_decode_login_info(struct ndr_print *ndr, const char *name, int flags, const struct decode_login_info *r)
862 ndr_print_struct(ndr, name, "decode_login_info");
864 if (flags & NDR_SET_VALUES) {
865 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
867 if (flags & NDR_IN) {
868 ndr_print_struct(ndr, "in", "decode_login_info");
870 ndr_print_PAC_LOGON_INFO(ndr, "logon_info", &r->in.logon_info);
873 if (flags & NDR_OUT) {
874 ndr_print_struct(ndr, "out", "decode_login_info");
881 static enum ndr_err_code ndr_push_decode_pac_validate(struct ndr_push *ndr, int flags, const struct decode_pac_validate *r)
883 if (flags & NDR_IN) {
884 NDR_CHECK(ndr_push_PAC_Validate(ndr, NDR_SCALARS, &r->in.pac_validate));
886 if (flags & NDR_OUT) {
888 return NDR_ERR_SUCCESS;
891 static enum ndr_err_code ndr_pull_decode_pac_validate(struct ndr_pull *ndr, int flags, struct decode_pac_validate *r)
893 if (flags & NDR_IN) {
894 NDR_CHECK(ndr_pull_PAC_Validate(ndr, NDR_SCALARS, &r->in.pac_validate));
896 if (flags & NDR_OUT) {
898 return NDR_ERR_SUCCESS;
901 _PUBLIC_ void ndr_print_decode_pac_validate(struct ndr_print *ndr, const char *name, int flags, const struct decode_pac_validate *r)
903 ndr_print_struct(ndr, name, "decode_pac_validate");
905 if (flags & NDR_SET_VALUES) {
906 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
908 if (flags & NDR_IN) {
909 ndr_print_struct(ndr, "in", "decode_pac_validate");
911 ndr_print_PAC_Validate(ndr, "pac_validate", &r->in.pac_validate);
914 if (flags & NDR_OUT) {
915 ndr_print_struct(ndr, "out", "decode_pac_validate");
922 static const struct ndr_interface_call krb5pac_calls[] = {
925 sizeof(struct decode_pac),
926 (ndr_push_flags_fn_t) ndr_push_decode_pac,
927 (ndr_pull_flags_fn_t) ndr_pull_decode_pac,
928 (ndr_print_function_t) ndr_print_decode_pac,
933 sizeof(struct decode_pac_raw),
934 (ndr_push_flags_fn_t) ndr_push_decode_pac_raw,
935 (ndr_pull_flags_fn_t) ndr_pull_decode_pac_raw,
936 (ndr_print_function_t) ndr_print_decode_pac_raw,
941 sizeof(struct decode_login_info),
942 (ndr_push_flags_fn_t) ndr_push_decode_login_info,
943 (ndr_pull_flags_fn_t) ndr_pull_decode_login_info,
944 (ndr_print_function_t) ndr_print_decode_login_info,
948 "decode_pac_validate",
949 sizeof(struct decode_pac_validate),
950 (ndr_push_flags_fn_t) ndr_push_decode_pac_validate,
951 (ndr_pull_flags_fn_t) ndr_pull_decode_pac_validate,
952 (ndr_print_function_t) ndr_print_decode_pac_validate,
955 { NULL, 0, NULL, NULL, NULL, false }
958 static const char * const krb5pac_endpoint_strings[] = {
959 "ncacn_np:[\\pipe\\krb5pac]",
962 static const struct ndr_interface_string_array krb5pac_endpoints = {
964 .names = krb5pac_endpoint_strings
967 static const char * const krb5pac_authservice_strings[] = {
971 static const struct ndr_interface_string_array krb5pac_authservices = {
973 .names = krb5pac_authservice_strings
977 const struct ndr_interface_table ndr_table_krb5pac = {
980 {0x12345778,0x1234,0xabcd,{0x00,0x00},{0x00,0x00,0x00,0x00}},
983 .helpstring = NDR_KRB5PAC_HELPSTRING,
985 .calls = krb5pac_calls,
986 .endpoints = &krb5pac_endpoints,
987 .authservices = &krb5pac_authservices