rerun 'make samba3-idl'
[Samba.git] / librpc / gen_ndr / ndr_krb5pac.c
blobfa8c97fe9262f7b85b09813edb0d1871e46413e9
1 /* parser auto-generated by pidl */
3 #include "includes.h"
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 uint32_t size_account_name_0 = 0;
25 if (ndr_flags & NDR_SCALARS) {
26 NDR_CHECK(ndr_pull_align(ndr, 4));
27 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->logon_time));
28 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
29 size_account_name_0 = r->size;
30 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->account_name, size_account_name_0, sizeof(uint8_t), CH_UTF16));
32 if (ndr_flags & NDR_BUFFERS) {
34 return NDR_ERR_SUCCESS;
37 _PUBLIC_ void ndr_print_PAC_LOGON_NAME(struct ndr_print *ndr, const char *name, const struct PAC_LOGON_NAME *r)
39 ndr_print_struct(ndr, name, "PAC_LOGON_NAME");
40 ndr->depth++;
41 ndr_print_NTTIME(ndr, "logon_time", r->logon_time);
42 ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2 * strlen_m(r->account_name):r->size);
43 ndr_print_string(ndr, "account_name", r->account_name);
44 ndr->depth--;
47 _PUBLIC_ enum ndr_err_code ndr_push_PAC_SIGNATURE_DATA(struct ndr_push *ndr, int ndr_flags, const struct PAC_SIGNATURE_DATA *r)
50 uint32_t _flags_save_STRUCT = ndr->flags;
51 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
52 if (ndr_flags & NDR_SCALARS) {
53 NDR_CHECK(ndr_push_align(ndr, 4));
54 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
56 uint32_t _flags_save_DATA_BLOB = ndr->flags;
57 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
58 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->signature));
59 ndr->flags = _flags_save_DATA_BLOB;
62 if (ndr_flags & NDR_BUFFERS) {
64 ndr->flags = _flags_save_STRUCT;
66 return NDR_ERR_SUCCESS;
69 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_SIGNATURE_DATA(struct ndr_pull *ndr, int ndr_flags, struct PAC_SIGNATURE_DATA *r)
72 uint32_t _flags_save_STRUCT = ndr->flags;
73 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
74 if (ndr_flags & NDR_SCALARS) {
75 NDR_CHECK(ndr_pull_align(ndr, 4));
76 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
78 uint32_t _flags_save_DATA_BLOB = ndr->flags;
79 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
80 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->signature));
81 ndr->flags = _flags_save_DATA_BLOB;
84 if (ndr_flags & NDR_BUFFERS) {
86 ndr->flags = _flags_save_STRUCT;
88 return NDR_ERR_SUCCESS;
91 _PUBLIC_ void ndr_print_PAC_SIGNATURE_DATA(struct ndr_print *ndr, const char *name, const struct PAC_SIGNATURE_DATA *r)
93 ndr_print_struct(ndr, name, "PAC_SIGNATURE_DATA");
95 uint32_t _flags_save_STRUCT = ndr->flags;
96 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
97 ndr->depth++;
98 ndr_print_uint32(ndr, "type", r->type);
99 ndr_print_DATA_BLOB(ndr, "signature", r->signature);
100 ndr->depth--;
101 ndr->flags = _flags_save_STRUCT;
105 static enum ndr_err_code ndr_push_PAC_LOGON_INFO(struct ndr_push *ndr, int ndr_flags, const struct PAC_LOGON_INFO *r)
107 if (ndr_flags & NDR_SCALARS) {
108 NDR_CHECK(ndr_push_align(ndr, 4));
109 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS, &r->info3));
110 NDR_CHECK(ndr_push_unique_ptr(ndr, r->res_group_dom_sid));
111 NDR_CHECK(ndr_push_samr_RidWithAttributeArray(ndr, NDR_SCALARS, &r->res_groups));
113 if (ndr_flags & NDR_BUFFERS) {
114 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info3));
115 if (r->res_group_dom_sid) {
116 NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->res_group_dom_sid));
118 NDR_CHECK(ndr_push_samr_RidWithAttributeArray(ndr, NDR_BUFFERS, &r->res_groups));
120 return NDR_ERR_SUCCESS;
123 static enum ndr_err_code ndr_pull_PAC_LOGON_INFO(struct ndr_pull *ndr, int ndr_flags, struct PAC_LOGON_INFO *r)
125 uint32_t _ptr_res_group_dom_sid;
126 TALLOC_CTX *_mem_save_res_group_dom_sid_0;
127 if (ndr_flags & NDR_SCALARS) {
128 NDR_CHECK(ndr_pull_align(ndr, 4));
129 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS, &r->info3));
130 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_res_group_dom_sid));
131 if (_ptr_res_group_dom_sid) {
132 NDR_PULL_ALLOC(ndr, r->res_group_dom_sid);
133 } else {
134 r->res_group_dom_sid = NULL;
136 NDR_CHECK(ndr_pull_samr_RidWithAttributeArray(ndr, NDR_SCALARS, &r->res_groups));
138 if (ndr_flags & NDR_BUFFERS) {
139 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info3));
140 if (r->res_group_dom_sid) {
141 _mem_save_res_group_dom_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
142 NDR_PULL_SET_MEM_CTX(ndr, r->res_group_dom_sid, 0);
143 NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->res_group_dom_sid));
144 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_res_group_dom_sid_0, 0);
146 NDR_CHECK(ndr_pull_samr_RidWithAttributeArray(ndr, NDR_BUFFERS, &r->res_groups));
148 return NDR_ERR_SUCCESS;
151 _PUBLIC_ void ndr_print_PAC_LOGON_INFO(struct ndr_print *ndr, const char *name, const struct PAC_LOGON_INFO *r)
153 ndr_print_struct(ndr, name, "PAC_LOGON_INFO");
154 ndr->depth++;
155 ndr_print_netr_SamInfo3(ndr, "info3", &r->info3);
156 ndr_print_ptr(ndr, "res_group_dom_sid", r->res_group_dom_sid);
157 ndr->depth++;
158 if (r->res_group_dom_sid) {
159 ndr_print_dom_sid2(ndr, "res_group_dom_sid", r->res_group_dom_sid);
161 ndr->depth--;
162 ndr_print_samr_RidWithAttributeArray(ndr, "res_groups", &r->res_groups);
163 ndr->depth--;
166 _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)
168 if (ndr_flags & NDR_SCALARS) {
169 NDR_CHECK(ndr_push_align(ndr, 4));
170 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info));
172 if (ndr_flags & NDR_BUFFERS) {
173 if (r->info) {
174 NDR_CHECK(ndr_push_PAC_LOGON_INFO(ndr, NDR_SCALARS|NDR_BUFFERS, r->info));
177 return NDR_ERR_SUCCESS;
180 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_LOGON_INFO_CTR(struct ndr_pull *ndr, int ndr_flags, struct PAC_LOGON_INFO_CTR *r)
182 uint32_t _ptr_info;
183 TALLOC_CTX *_mem_save_info_0;
184 if (ndr_flags & NDR_SCALARS) {
185 NDR_CHECK(ndr_pull_align(ndr, 4));
186 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
187 if (_ptr_info) {
188 NDR_PULL_ALLOC(ndr, r->info);
189 } else {
190 r->info = NULL;
193 if (ndr_flags & NDR_BUFFERS) {
194 if (r->info) {
195 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
196 NDR_PULL_SET_MEM_CTX(ndr, r->info, 0);
197 NDR_CHECK(ndr_pull_PAC_LOGON_INFO(ndr, NDR_SCALARS|NDR_BUFFERS, r->info));
198 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
201 return NDR_ERR_SUCCESS;
204 _PUBLIC_ void ndr_print_PAC_LOGON_INFO_CTR(struct ndr_print *ndr, const char *name, const struct PAC_LOGON_INFO_CTR *r)
206 ndr_print_struct(ndr, name, "PAC_LOGON_INFO_CTR");
207 ndr->depth++;
208 ndr_print_ptr(ndr, "info", r->info);
209 ndr->depth++;
210 if (r->info) {
211 ndr_print_PAC_LOGON_INFO(ndr, "info", r->info);
213 ndr->depth--;
214 ndr->depth--;
217 _PUBLIC_ enum ndr_err_code ndr_push_PAC_TYPE(struct ndr_push *ndr, int ndr_flags, enum PAC_TYPE r)
219 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
220 return NDR_ERR_SUCCESS;
223 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_TYPE(struct ndr_pull *ndr, int ndr_flags, enum PAC_TYPE *r)
225 uint32_t v;
226 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
227 *r = v;
228 return NDR_ERR_SUCCESS;
231 _PUBLIC_ void ndr_print_PAC_TYPE(struct ndr_print *ndr, const char *name, enum PAC_TYPE r)
233 const char *val = NULL;
235 switch (r) {
236 case PAC_TYPE_LOGON_INFO: val = "PAC_TYPE_LOGON_INFO"; break;
237 case PAC_TYPE_SRV_CHECKSUM: val = "PAC_TYPE_SRV_CHECKSUM"; break;
238 case PAC_TYPE_KDC_CHECKSUM: val = "PAC_TYPE_KDC_CHECKSUM"; break;
239 case PAC_TYPE_LOGON_NAME: val = "PAC_TYPE_LOGON_NAME"; break;
240 case PAC_TYPE_CONSTRAINED_DELEGATION: val = "PAC_TYPE_CONSTRAINED_DELEGATION"; break;
241 case PAC_TYPE_UNKNOWN_12: val = "PAC_TYPE_UNKNOWN_12"; break;
243 ndr_print_enum(ndr, name, "ENUM", val, r);
246 static enum ndr_err_code ndr_push_DATA_BLOB_REM(struct ndr_push *ndr, int ndr_flags, const struct DATA_BLOB_REM *r)
248 if (ndr_flags & NDR_SCALARS) {
249 NDR_CHECK(ndr_push_align(ndr, 4));
251 uint32_t _flags_save_DATA_BLOB = ndr->flags;
252 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
253 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->remaining));
254 ndr->flags = _flags_save_DATA_BLOB;
257 if (ndr_flags & NDR_BUFFERS) {
259 return NDR_ERR_SUCCESS;
262 static enum ndr_err_code ndr_pull_DATA_BLOB_REM(struct ndr_pull *ndr, int ndr_flags, struct DATA_BLOB_REM *r)
264 if (ndr_flags & NDR_SCALARS) {
265 NDR_CHECK(ndr_pull_align(ndr, 4));
267 uint32_t _flags_save_DATA_BLOB = ndr->flags;
268 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
269 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->remaining));
270 ndr->flags = _flags_save_DATA_BLOB;
273 if (ndr_flags & NDR_BUFFERS) {
275 return NDR_ERR_SUCCESS;
278 _PUBLIC_ void ndr_print_DATA_BLOB_REM(struct ndr_print *ndr, const char *name, const struct DATA_BLOB_REM *r)
280 ndr_print_struct(ndr, name, "DATA_BLOB_REM");
281 ndr->depth++;
282 ndr_print_DATA_BLOB(ndr, "remaining", r->remaining);
283 ndr->depth--;
286 _PUBLIC_ enum ndr_err_code ndr_push_PAC_INFO(struct ndr_push *ndr, int ndr_flags, const union PAC_INFO *r)
288 if (ndr_flags & NDR_SCALARS) {
289 int level = ndr_push_get_switch_value(ndr, r);
290 switch (level) {
291 case PAC_TYPE_LOGON_INFO: {
293 struct ndr_push *_ndr_logon_info;
294 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_logon_info, 0xFFFFFC01, -1));
295 NDR_CHECK(ndr_push_PAC_LOGON_INFO_CTR(_ndr_logon_info, NDR_SCALARS|NDR_BUFFERS, &r->logon_info));
296 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_logon_info, 0xFFFFFC01, -1));
298 break; }
300 case PAC_TYPE_SRV_CHECKSUM: {
301 NDR_CHECK(ndr_push_PAC_SIGNATURE_DATA(ndr, NDR_SCALARS, &r->srv_cksum));
302 break; }
304 case PAC_TYPE_KDC_CHECKSUM: {
305 NDR_CHECK(ndr_push_PAC_SIGNATURE_DATA(ndr, NDR_SCALARS, &r->kdc_cksum));
306 break; }
308 case PAC_TYPE_LOGON_NAME: {
309 NDR_CHECK(ndr_push_PAC_LOGON_NAME(ndr, NDR_SCALARS, &r->logon_name));
310 break; }
312 default: {
314 struct ndr_push *_ndr_unknown;
315 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_unknown, 0, -1));
316 NDR_CHECK(ndr_push_DATA_BLOB_REM(_ndr_unknown, NDR_SCALARS, &r->unknown));
317 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_unknown, 0, -1));
319 break; }
323 if (ndr_flags & NDR_BUFFERS) {
324 int level = ndr_push_get_switch_value(ndr, r);
325 switch (level) {
326 case PAC_TYPE_LOGON_INFO:
327 break;
329 case PAC_TYPE_SRV_CHECKSUM:
330 break;
332 case PAC_TYPE_KDC_CHECKSUM:
333 break;
335 case PAC_TYPE_LOGON_NAME:
336 break;
338 default:
339 break;
343 return NDR_ERR_SUCCESS;
346 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_INFO(struct ndr_pull *ndr, int ndr_flags, union PAC_INFO *r)
348 int level;
349 level = ndr_pull_get_switch_value(ndr, r);
350 if (ndr_flags & NDR_SCALARS) {
351 switch (level) {
352 case PAC_TYPE_LOGON_INFO: {
354 struct ndr_pull *_ndr_logon_info;
355 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_logon_info, 0xFFFFFC01, -1));
356 NDR_CHECK(ndr_pull_PAC_LOGON_INFO_CTR(_ndr_logon_info, NDR_SCALARS|NDR_BUFFERS, &r->logon_info));
357 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_logon_info, 0xFFFFFC01, -1));
359 break; }
361 case PAC_TYPE_SRV_CHECKSUM: {
362 NDR_CHECK(ndr_pull_PAC_SIGNATURE_DATA(ndr, NDR_SCALARS, &r->srv_cksum));
363 break; }
365 case PAC_TYPE_KDC_CHECKSUM: {
366 NDR_CHECK(ndr_pull_PAC_SIGNATURE_DATA(ndr, NDR_SCALARS, &r->kdc_cksum));
367 break; }
369 case PAC_TYPE_LOGON_NAME: {
370 NDR_CHECK(ndr_pull_PAC_LOGON_NAME(ndr, NDR_SCALARS, &r->logon_name));
371 break; }
373 default: {
375 struct ndr_pull *_ndr_unknown;
376 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_unknown, 0, -1));
377 NDR_CHECK(ndr_pull_DATA_BLOB_REM(_ndr_unknown, NDR_SCALARS, &r->unknown));
378 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_unknown, 0, -1));
380 break; }
384 if (ndr_flags & NDR_BUFFERS) {
385 switch (level) {
386 case PAC_TYPE_LOGON_INFO:
387 break;
389 case PAC_TYPE_SRV_CHECKSUM:
390 break;
392 case PAC_TYPE_KDC_CHECKSUM:
393 break;
395 case PAC_TYPE_LOGON_NAME:
396 break;
398 default:
399 break;
403 return NDR_ERR_SUCCESS;
406 _PUBLIC_ void ndr_print_PAC_INFO(struct ndr_print *ndr, const char *name, const union PAC_INFO *r)
408 int level;
409 level = ndr_print_get_switch_value(ndr, r);
410 ndr_print_union(ndr, name, level, "PAC_INFO");
411 switch (level) {
412 case PAC_TYPE_LOGON_INFO:
413 ndr_print_PAC_LOGON_INFO_CTR(ndr, "logon_info", &r->logon_info);
414 break;
416 case PAC_TYPE_SRV_CHECKSUM:
417 ndr_print_PAC_SIGNATURE_DATA(ndr, "srv_cksum", &r->srv_cksum);
418 break;
420 case PAC_TYPE_KDC_CHECKSUM:
421 ndr_print_PAC_SIGNATURE_DATA(ndr, "kdc_cksum", &r->kdc_cksum);
422 break;
424 case PAC_TYPE_LOGON_NAME:
425 ndr_print_PAC_LOGON_NAME(ndr, "logon_name", &r->logon_name);
426 break;
428 default:
429 ndr_print_DATA_BLOB_REM(ndr, "unknown", &r->unknown);
430 break;
435 _PUBLIC_ size_t ndr_size_PAC_INFO(const union PAC_INFO *r, uint32_t level, struct smb_iconv_convenience *ic, int flags)
437 return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_PAC_INFO, ic);
440 _PUBLIC_ enum ndr_err_code ndr_push_PAC_DATA(struct ndr_push *ndr, int ndr_flags, const struct PAC_DATA *r)
442 uint32_t cntr_buffers_0;
443 if (ndr_flags & NDR_SCALARS) {
444 NDR_CHECK(ndr_push_align(ndr, 4));
445 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_buffers));
446 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
447 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
448 NDR_CHECK(ndr_push_PAC_BUFFER(ndr, NDR_SCALARS, &r->buffers[cntr_buffers_0]));
451 if (ndr_flags & NDR_BUFFERS) {
452 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
453 NDR_CHECK(ndr_push_PAC_BUFFER(ndr, NDR_BUFFERS, &r->buffers[cntr_buffers_0]));
456 return NDR_ERR_SUCCESS;
459 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_DATA(struct ndr_pull *ndr, int ndr_flags, struct PAC_DATA *r)
461 uint32_t size_buffers_0 = 0;
462 uint32_t cntr_buffers_0;
463 TALLOC_CTX *_mem_save_buffers_0;
464 if (ndr_flags & NDR_SCALARS) {
465 NDR_CHECK(ndr_pull_align(ndr, 4));
466 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_buffers));
467 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
468 size_buffers_0 = r->num_buffers;
469 NDR_PULL_ALLOC_N(ndr, r->buffers, size_buffers_0);
470 _mem_save_buffers_0 = NDR_PULL_GET_MEM_CTX(ndr);
471 NDR_PULL_SET_MEM_CTX(ndr, r->buffers, 0);
472 for (cntr_buffers_0 = 0; cntr_buffers_0 < size_buffers_0; cntr_buffers_0++) {
473 NDR_CHECK(ndr_pull_PAC_BUFFER(ndr, NDR_SCALARS, &r->buffers[cntr_buffers_0]));
475 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffers_0, 0);
477 if (ndr_flags & NDR_BUFFERS) {
478 size_buffers_0 = r->num_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 < size_buffers_0; 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");
493 ndr->depth++;
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);
497 ndr->depth++;
498 for (cntr_buffers_0=0;cntr_buffers_0<r->num_buffers;cntr_buffers_0++) {
499 char *idx_0=NULL;
500 if (asprintf(&idx_0, "[%d]", cntr_buffers_0) != -1) {
501 ndr_print_PAC_BUFFER(ndr, "buffers", &r->buffers[cntr_buffers_0]);
502 free(idx_0);
505 ndr->depth--;
506 ndr->depth--;
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);
527 if (r->info) {
528 NDR_CHECK(ndr_push_relative_ptr2_start(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)));
535 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->info));
537 ndr->flags = _flags_save_DATA_BLOB_REM;
540 return NDR_ERR_SUCCESS;
543 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_BUFFER_RAW(struct ndr_pull *ndr, int ndr_flags, struct PAC_BUFFER_RAW *r)
545 uint32_t _ptr_info;
546 TALLOC_CTX *_mem_save_info_0;
547 if (ndr_flags & NDR_SCALARS) {
548 NDR_CHECK(ndr_pull_align(ndr, 4));
549 NDR_CHECK(ndr_pull_PAC_TYPE(ndr, NDR_SCALARS, &r->type));
550 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ndr_size));
552 uint32_t _flags_save_DATA_BLOB_REM = ndr->flags;
553 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN8);
554 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
555 if (_ptr_info) {
556 NDR_PULL_ALLOC(ndr, r->info);
557 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->info, _ptr_info));
558 } else {
559 r->info = NULL;
561 ndr->flags = _flags_save_DATA_BLOB_REM;
563 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_pad));
565 if (ndr_flags & NDR_BUFFERS) {
567 uint32_t _flags_save_DATA_BLOB_REM = ndr->flags;
568 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN8);
569 if (r->info) {
570 uint32_t _relative_save_offset;
571 _relative_save_offset = ndr->offset;
572 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->info));
573 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
574 NDR_PULL_SET_MEM_CTX(ndr, r->info, 0);
576 struct ndr_pull *_ndr_info;
577 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info, 0, NDR_ROUND(r->ndr_size, 8)));
578 NDR_CHECK(ndr_pull_DATA_BLOB_REM(_ndr_info, NDR_SCALARS, r->info));
579 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info, 0, NDR_ROUND(r->ndr_size, 8)));
581 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
582 ndr->offset = _relative_save_offset;
584 ndr->flags = _flags_save_DATA_BLOB_REM;
587 return NDR_ERR_SUCCESS;
590 _PUBLIC_ void ndr_print_PAC_BUFFER_RAW(struct ndr_print *ndr, const char *name, const struct PAC_BUFFER_RAW *r)
592 ndr_print_struct(ndr, name, "PAC_BUFFER_RAW");
593 ndr->depth++;
594 ndr_print_PAC_TYPE(ndr, "type", r->type);
595 ndr_print_uint32(ndr, "ndr_size", r->ndr_size);
596 ndr_print_ptr(ndr, "info", r->info);
597 ndr->depth++;
598 if (r->info) {
599 ndr_print_DATA_BLOB_REM(ndr, "info", r->info);
601 ndr->depth--;
602 ndr_print_uint32(ndr, "_pad", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->_pad);
603 ndr->depth--;
606 _PUBLIC_ enum ndr_err_code ndr_push_PAC_DATA_RAW(struct ndr_push *ndr, int ndr_flags, const struct PAC_DATA_RAW *r)
608 uint32_t cntr_buffers_0;
609 if (ndr_flags & NDR_SCALARS) {
610 NDR_CHECK(ndr_push_align(ndr, 4));
611 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_buffers));
612 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
613 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
614 NDR_CHECK(ndr_push_PAC_BUFFER_RAW(ndr, NDR_SCALARS, &r->buffers[cntr_buffers_0]));
617 if (ndr_flags & NDR_BUFFERS) {
618 for (cntr_buffers_0 = 0; cntr_buffers_0 < r->num_buffers; cntr_buffers_0++) {
619 NDR_CHECK(ndr_push_PAC_BUFFER_RAW(ndr, NDR_BUFFERS, &r->buffers[cntr_buffers_0]));
622 return NDR_ERR_SUCCESS;
625 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_DATA_RAW(struct ndr_pull *ndr, int ndr_flags, struct PAC_DATA_RAW *r)
627 uint32_t size_buffers_0 = 0;
628 uint32_t cntr_buffers_0;
629 TALLOC_CTX *_mem_save_buffers_0;
630 if (ndr_flags & NDR_SCALARS) {
631 NDR_CHECK(ndr_pull_align(ndr, 4));
632 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_buffers));
633 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
634 size_buffers_0 = r->num_buffers;
635 NDR_PULL_ALLOC_N(ndr, r->buffers, size_buffers_0);
636 _mem_save_buffers_0 = NDR_PULL_GET_MEM_CTX(ndr);
637 NDR_PULL_SET_MEM_CTX(ndr, r->buffers, 0);
638 for (cntr_buffers_0 = 0; cntr_buffers_0 < size_buffers_0; cntr_buffers_0++) {
639 NDR_CHECK(ndr_pull_PAC_BUFFER_RAW(ndr, NDR_SCALARS, &r->buffers[cntr_buffers_0]));
641 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffers_0, 0);
643 if (ndr_flags & NDR_BUFFERS) {
644 size_buffers_0 = r->num_buffers;
645 _mem_save_buffers_0 = NDR_PULL_GET_MEM_CTX(ndr);
646 NDR_PULL_SET_MEM_CTX(ndr, r->buffers, 0);
647 for (cntr_buffers_0 = 0; cntr_buffers_0 < size_buffers_0; cntr_buffers_0++) {
648 NDR_CHECK(ndr_pull_PAC_BUFFER_RAW(ndr, NDR_BUFFERS, &r->buffers[cntr_buffers_0]));
650 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffers_0, 0);
652 return NDR_ERR_SUCCESS;
655 _PUBLIC_ void ndr_print_PAC_DATA_RAW(struct ndr_print *ndr, const char *name, const struct PAC_DATA_RAW *r)
657 uint32_t cntr_buffers_0;
658 ndr_print_struct(ndr, name, "PAC_DATA_RAW");
659 ndr->depth++;
660 ndr_print_uint32(ndr, "num_buffers", r->num_buffers);
661 ndr_print_uint32(ndr, "version", r->version);
662 ndr->print(ndr, "%s: ARRAY(%d)", "buffers", (int)r->num_buffers);
663 ndr->depth++;
664 for (cntr_buffers_0=0;cntr_buffers_0<r->num_buffers;cntr_buffers_0++) {
665 char *idx_0=NULL;
666 if (asprintf(&idx_0, "[%d]", cntr_buffers_0) != -1) {
667 ndr_print_PAC_BUFFER_RAW(ndr, "buffers", &r->buffers[cntr_buffers_0]);
668 free(idx_0);
671 ndr->depth--;
672 ndr->depth--;
675 _PUBLIC_ enum ndr_err_code ndr_push_PAC_Validate(struct ndr_push *ndr, int ndr_flags, const struct PAC_Validate *r)
677 if (ndr_flags & NDR_SCALARS) {
678 NDR_CHECK(ndr_push_align(ndr, 4));
679 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, NETLOGON_GENERIC_KRB5_PAC_VALIDATE));
680 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ChecksumLength));
681 NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->SignatureType));
682 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SignatureLength));
684 uint32_t _flags_save_DATA_BLOB = ndr->flags;
685 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
686 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->ChecksumAndSignature));
687 ndr->flags = _flags_save_DATA_BLOB;
690 if (ndr_flags & NDR_BUFFERS) {
692 return NDR_ERR_SUCCESS;
695 _PUBLIC_ enum ndr_err_code ndr_pull_PAC_Validate(struct ndr_pull *ndr, int ndr_flags, struct PAC_Validate *r)
697 if (ndr_flags & NDR_SCALARS) {
698 NDR_CHECK(ndr_pull_align(ndr, 4));
699 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->MessageType));
700 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ChecksumLength));
701 NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->SignatureType));
702 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SignatureLength));
704 uint32_t _flags_save_DATA_BLOB = ndr->flags;
705 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
706 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->ChecksumAndSignature));
707 ndr->flags = _flags_save_DATA_BLOB;
710 if (ndr_flags & NDR_BUFFERS) {
712 return NDR_ERR_SUCCESS;
715 _PUBLIC_ void ndr_print_PAC_Validate(struct ndr_print *ndr, const char *name, const struct PAC_Validate *r)
717 ndr_print_struct(ndr, name, "PAC_Validate");
718 ndr->depth++;
719 ndr_print_uint32(ndr, "MessageType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NETLOGON_GENERIC_KRB5_PAC_VALIDATE:r->MessageType);
720 ndr_print_uint32(ndr, "ChecksumLength", r->ChecksumLength);
721 ndr_print_int32(ndr, "SignatureType", r->SignatureType);
722 ndr_print_uint32(ndr, "SignatureLength", r->SignatureLength);
723 ndr_print_DATA_BLOB(ndr, "ChecksumAndSignature", r->ChecksumAndSignature);
724 ndr->depth--;
727 _PUBLIC_ enum ndr_err_code ndr_push_netsamlogoncache_entry(struct ndr_push *ndr, int ndr_flags, const struct netsamlogoncache_entry *r)
729 if (ndr_flags & NDR_SCALARS) {
730 NDR_CHECK(ndr_push_align(ndr, 4));
731 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->timestamp));
732 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS, &r->info3));
734 if (ndr_flags & NDR_BUFFERS) {
735 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info3));
737 return NDR_ERR_SUCCESS;
740 _PUBLIC_ enum ndr_err_code ndr_pull_netsamlogoncache_entry(struct ndr_pull *ndr, int ndr_flags, struct netsamlogoncache_entry *r)
742 if (ndr_flags & NDR_SCALARS) {
743 NDR_CHECK(ndr_pull_align(ndr, 4));
744 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->timestamp));
745 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS, &r->info3));
747 if (ndr_flags & NDR_BUFFERS) {
748 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info3));
750 return NDR_ERR_SUCCESS;
753 _PUBLIC_ void ndr_print_netsamlogoncache_entry(struct ndr_print *ndr, const char *name, const struct netsamlogoncache_entry *r)
755 ndr_print_struct(ndr, name, "netsamlogoncache_entry");
756 ndr->depth++;
757 ndr_print_time_t(ndr, "timestamp", r->timestamp);
758 ndr_print_netr_SamInfo3(ndr, "info3", &r->info3);
759 ndr->depth--;
762 static enum ndr_err_code ndr_push_decode_pac(struct ndr_push *ndr, int flags, const struct decode_pac *r)
764 if (flags & NDR_IN) {
765 NDR_CHECK(ndr_push_PAC_DATA(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.pac));
767 if (flags & NDR_OUT) {
769 return NDR_ERR_SUCCESS;
772 static enum ndr_err_code ndr_pull_decode_pac(struct ndr_pull *ndr, int flags, struct decode_pac *r)
774 if (flags & NDR_IN) {
775 NDR_CHECK(ndr_pull_PAC_DATA(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.pac));
777 if (flags & NDR_OUT) {
779 return NDR_ERR_SUCCESS;
782 _PUBLIC_ void ndr_print_decode_pac(struct ndr_print *ndr, const char *name, int flags, const struct decode_pac *r)
784 ndr_print_struct(ndr, name, "decode_pac");
785 ndr->depth++;
786 if (flags & NDR_SET_VALUES) {
787 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
789 if (flags & NDR_IN) {
790 ndr_print_struct(ndr, "in", "decode_pac");
791 ndr->depth++;
792 ndr_print_PAC_DATA(ndr, "pac", &r->in.pac);
793 ndr->depth--;
795 if (flags & NDR_OUT) {
796 ndr_print_struct(ndr, "out", "decode_pac");
797 ndr->depth++;
798 ndr->depth--;
800 ndr->depth--;
803 static enum ndr_err_code ndr_push_decode_pac_raw(struct ndr_push *ndr, int flags, const struct decode_pac_raw *r)
805 if (flags & NDR_IN) {
806 NDR_CHECK(ndr_push_PAC_DATA_RAW(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.pac));
808 if (flags & NDR_OUT) {
810 return NDR_ERR_SUCCESS;
813 static enum ndr_err_code ndr_pull_decode_pac_raw(struct ndr_pull *ndr, int flags, struct decode_pac_raw *r)
815 if (flags & NDR_IN) {
816 NDR_CHECK(ndr_pull_PAC_DATA_RAW(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.pac));
818 if (flags & NDR_OUT) {
820 return NDR_ERR_SUCCESS;
823 _PUBLIC_ void ndr_print_decode_pac_raw(struct ndr_print *ndr, const char *name, int flags, const struct decode_pac_raw *r)
825 ndr_print_struct(ndr, name, "decode_pac_raw");
826 ndr->depth++;
827 if (flags & NDR_SET_VALUES) {
828 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
830 if (flags & NDR_IN) {
831 ndr_print_struct(ndr, "in", "decode_pac_raw");
832 ndr->depth++;
833 ndr_print_PAC_DATA_RAW(ndr, "pac", &r->in.pac);
834 ndr->depth--;
836 if (flags & NDR_OUT) {
837 ndr_print_struct(ndr, "out", "decode_pac_raw");
838 ndr->depth++;
839 ndr->depth--;
841 ndr->depth--;
844 static enum ndr_err_code ndr_push_decode_login_info(struct ndr_push *ndr, int flags, const struct decode_login_info *r)
846 if (flags & NDR_IN) {
847 NDR_CHECK(ndr_push_PAC_LOGON_INFO(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon_info));
849 if (flags & NDR_OUT) {
851 return NDR_ERR_SUCCESS;
854 static enum ndr_err_code ndr_pull_decode_login_info(struct ndr_pull *ndr, int flags, struct decode_login_info *r)
856 if (flags & NDR_IN) {
857 NDR_CHECK(ndr_pull_PAC_LOGON_INFO(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon_info));
859 if (flags & NDR_OUT) {
861 return NDR_ERR_SUCCESS;
864 _PUBLIC_ void ndr_print_decode_login_info(struct ndr_print *ndr, const char *name, int flags, const struct decode_login_info *r)
866 ndr_print_struct(ndr, name, "decode_login_info");
867 ndr->depth++;
868 if (flags & NDR_SET_VALUES) {
869 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
871 if (flags & NDR_IN) {
872 ndr_print_struct(ndr, "in", "decode_login_info");
873 ndr->depth++;
874 ndr_print_PAC_LOGON_INFO(ndr, "logon_info", &r->in.logon_info);
875 ndr->depth--;
877 if (flags & NDR_OUT) {
878 ndr_print_struct(ndr, "out", "decode_login_info");
879 ndr->depth++;
880 ndr->depth--;
882 ndr->depth--;
885 static enum ndr_err_code ndr_push_decode_pac_validate(struct ndr_push *ndr, int flags, const struct decode_pac_validate *r)
887 if (flags & NDR_IN) {
888 NDR_CHECK(ndr_push_PAC_Validate(ndr, NDR_SCALARS, &r->in.pac_validate));
890 if (flags & NDR_OUT) {
892 return NDR_ERR_SUCCESS;
895 static enum ndr_err_code ndr_pull_decode_pac_validate(struct ndr_pull *ndr, int flags, struct decode_pac_validate *r)
897 if (flags & NDR_IN) {
898 NDR_CHECK(ndr_pull_PAC_Validate(ndr, NDR_SCALARS, &r->in.pac_validate));
900 if (flags & NDR_OUT) {
902 return NDR_ERR_SUCCESS;
905 _PUBLIC_ void ndr_print_decode_pac_validate(struct ndr_print *ndr, const char *name, int flags, const struct decode_pac_validate *r)
907 ndr_print_struct(ndr, name, "decode_pac_validate");
908 ndr->depth++;
909 if (flags & NDR_SET_VALUES) {
910 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
912 if (flags & NDR_IN) {
913 ndr_print_struct(ndr, "in", "decode_pac_validate");
914 ndr->depth++;
915 ndr_print_PAC_Validate(ndr, "pac_validate", &r->in.pac_validate);
916 ndr->depth--;
918 if (flags & NDR_OUT) {
919 ndr_print_struct(ndr, "out", "decode_pac_validate");
920 ndr->depth++;
921 ndr->depth--;
923 ndr->depth--;
926 static const struct ndr_interface_call krb5pac_calls[] = {
928 "decode_pac",
929 sizeof(struct decode_pac),
930 (ndr_push_flags_fn_t) ndr_push_decode_pac,
931 (ndr_pull_flags_fn_t) ndr_pull_decode_pac,
932 (ndr_print_function_t) ndr_print_decode_pac,
933 false,
936 "decode_pac_raw",
937 sizeof(struct decode_pac_raw),
938 (ndr_push_flags_fn_t) ndr_push_decode_pac_raw,
939 (ndr_pull_flags_fn_t) ndr_pull_decode_pac_raw,
940 (ndr_print_function_t) ndr_print_decode_pac_raw,
941 false,
944 "decode_login_info",
945 sizeof(struct decode_login_info),
946 (ndr_push_flags_fn_t) ndr_push_decode_login_info,
947 (ndr_pull_flags_fn_t) ndr_pull_decode_login_info,
948 (ndr_print_function_t) ndr_print_decode_login_info,
949 false,
952 "decode_pac_validate",
953 sizeof(struct decode_pac_validate),
954 (ndr_push_flags_fn_t) ndr_push_decode_pac_validate,
955 (ndr_pull_flags_fn_t) ndr_pull_decode_pac_validate,
956 (ndr_print_function_t) ndr_print_decode_pac_validate,
957 false,
959 { NULL, 0, NULL, NULL, NULL, false }
962 static const char * const krb5pac_endpoint_strings[] = {
963 "ncacn_np:[\\pipe\\krb5pac]",
966 static const struct ndr_interface_string_array krb5pac_endpoints = {
967 .count = 1,
968 .names = krb5pac_endpoint_strings
971 static const char * const krb5pac_authservice_strings[] = {
972 "host",
975 static const struct ndr_interface_string_array krb5pac_authservices = {
976 .count = 1,
977 .names = krb5pac_authservice_strings
981 const struct ndr_interface_table ndr_table_krb5pac = {
982 .name = "krb5pac",
983 .syntax_id = {
984 {0x12345778,0x1234,0xabcd,{0x00,0x00},{0x00,0x00,0x00,0x00}},
985 NDR_KRB5PAC_VERSION
987 .helpstring = NDR_KRB5PAC_HELPSTRING,
988 .num_calls = 4,
989 .calls = krb5pac_calls,
990 .endpoints = &krb5pac_endpoints,
991 .authservices = &krb5pac_authservices