s4-netlogon: implement dcesrv_netr_DsRAddressToSitenamesExW
[Samba/aatanasov.git] / librpc / gen_ndr / ndr_ntlmssp.c
blob0221d440c80bf7e7297747acf1259412d854e2f1
1 /* parser auto-generated by pidl */
3 #include "includes.h"
4 #include "../librpc/gen_ndr/ndr_ntlmssp.h"
6 static enum ndr_err_code ndr_push_ntlmssp_MessageType(struct ndr_push *ndr, int ndr_flags, enum ntlmssp_MessageType r)
8 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
9 return NDR_ERR_SUCCESS;
12 static enum ndr_err_code ndr_pull_ntlmssp_MessageType(struct ndr_pull *ndr, int ndr_flags, enum ntlmssp_MessageType *r)
14 uint32_t v;
15 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v));
16 *r = v;
17 return NDR_ERR_SUCCESS;
20 _PUBLIC_ void ndr_print_ntlmssp_MessageType(struct ndr_print *ndr, const char *name, enum ntlmssp_MessageType r)
22 const char *val = NULL;
24 switch (r) {
25 case NtLmNegotiate: val = "NtLmNegotiate"; break;
26 case NtLmChallenge: val = "NtLmChallenge"; break;
27 case NtLmAuthenticate: val = "NtLmAuthenticate"; break;
29 ndr_print_enum(ndr, name, "ENUM", val, r);
32 static enum ndr_err_code ndr_push_NEGOTIATE(struct ndr_push *ndr, int ndr_flags, uint32_t r)
34 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
35 return NDR_ERR_SUCCESS;
38 static enum ndr_err_code ndr_pull_NEGOTIATE(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
40 uint32_t v;
41 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
42 *r = v;
43 return NDR_ERR_SUCCESS;
46 _PUBLIC_ void ndr_print_NEGOTIATE(struct ndr_print *ndr, const char *name, uint32_t r)
48 ndr_print_uint32(ndr, name, r);
49 ndr->depth++;
50 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_UNICODE", NTLMSSP_NEGOTIATE_UNICODE, r);
51 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_OEM", NTLMSSP_NEGOTIATE_OEM, r);
52 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_REQUEST_TARGET", NTLMSSP_REQUEST_TARGET, r);
53 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_SIGN", NTLMSSP_NEGOTIATE_SIGN, r);
54 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_SEAL", NTLMSSP_NEGOTIATE_SEAL, r);
55 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_DATAGRAM", NTLMSSP_NEGOTIATE_DATAGRAM, r);
56 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_LM_KEY", NTLMSSP_NEGOTIATE_LM_KEY, r);
57 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_NETWARE", NTLMSSP_NEGOTIATE_NETWARE, r);
58 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_NTLM", NTLMSSP_NEGOTIATE_NTLM, r);
59 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_NT_ONLY", NTLMSSP_NEGOTIATE_NT_ONLY, r);
60 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_ANONYMOUS", NTLMSSP_ANONYMOUS, r);
61 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED", NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED, r);
62 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED", NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED, r);
63 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL", NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL, r);
64 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_ALWAYS_SIGN", NTLMSSP_NEGOTIATE_ALWAYS_SIGN, r);
65 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_TARGET_TYPE_DOMAIN", NTLMSSP_TARGET_TYPE_DOMAIN, r);
66 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_TARGET_TYPE_SERVER", NTLMSSP_TARGET_TYPE_SERVER, r);
67 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_TARGET_TYPE_SHARE", NTLMSSP_TARGET_TYPE_SHARE, r);
68 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY", NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY, r);
69 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_IDENTIFY", NTLMSSP_NEGOTIATE_IDENTIFY, r);
70 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_REQUEST_NON_NT_SESSION_KEY", NTLMSSP_REQUEST_NON_NT_SESSION_KEY, r);
71 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_TARGET_INFO", NTLMSSP_NEGOTIATE_TARGET_INFO, r);
72 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_VERSION", NTLMSSP_NEGOTIATE_VERSION, r);
73 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_128", NTLMSSP_NEGOTIATE_128, r);
74 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_KEY_EXCH", NTLMSSP_NEGOTIATE_KEY_EXCH, r);
75 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_56", NTLMSSP_NEGOTIATE_56, r);
76 ndr->depth--;
79 static enum ndr_err_code ndr_push_ntlmssp_WindowsMajorVersion(struct ndr_push *ndr, int ndr_flags, enum ntlmssp_WindowsMajorVersion r)
81 NDR_CHECK(ndr_push_enum_uint8(ndr, NDR_SCALARS, r));
82 return NDR_ERR_SUCCESS;
85 static enum ndr_err_code ndr_pull_ntlmssp_WindowsMajorVersion(struct ndr_pull *ndr, int ndr_flags, enum ntlmssp_WindowsMajorVersion *r)
87 uint8_t v;
88 NDR_CHECK(ndr_pull_enum_uint8(ndr, NDR_SCALARS, &v));
89 *r = v;
90 return NDR_ERR_SUCCESS;
93 _PUBLIC_ void ndr_print_ntlmssp_WindowsMajorVersion(struct ndr_print *ndr, const char *name, enum ntlmssp_WindowsMajorVersion r)
95 const char *val = NULL;
97 switch (r) {
98 case NTLMSSP_WINDOWS_MAJOR_VERSION_5: val = "NTLMSSP_WINDOWS_MAJOR_VERSION_5"; break;
99 case NTLMSSP_WINDOWS_MAJOR_VERSION_6: val = "NTLMSSP_WINDOWS_MAJOR_VERSION_6"; break;
101 ndr_print_enum(ndr, name, "ENUM", val, r);
104 static enum ndr_err_code ndr_push_ntlmssp_WindowsMinorVersion(struct ndr_push *ndr, int ndr_flags, enum ntlmssp_WindowsMinorVersion r)
106 NDR_CHECK(ndr_push_enum_uint8(ndr, NDR_SCALARS, r));
107 return NDR_ERR_SUCCESS;
110 static enum ndr_err_code ndr_pull_ntlmssp_WindowsMinorVersion(struct ndr_pull *ndr, int ndr_flags, enum ntlmssp_WindowsMinorVersion *r)
112 uint8_t v;
113 NDR_CHECK(ndr_pull_enum_uint8(ndr, NDR_SCALARS, &v));
114 *r = v;
115 return NDR_ERR_SUCCESS;
118 _PUBLIC_ void ndr_print_ntlmssp_WindowsMinorVersion(struct ndr_print *ndr, const char *name, enum ntlmssp_WindowsMinorVersion r)
120 const char *val = NULL;
122 switch (r) {
123 case NTLMSSP_WINDOWS_MINOR_VERSION_0: val = "NTLMSSP_WINDOWS_MINOR_VERSION_0"; break;
124 case NTLMSSP_WINDOWS_MINOR_VERSION_1: val = "NTLMSSP_WINDOWS_MINOR_VERSION_1"; break;
125 case NTLMSSP_WINDOWS_MINOR_VERSION_2: val = "NTLMSSP_WINDOWS_MINOR_VERSION_2"; break;
127 ndr_print_enum(ndr, name, "ENUM", val, r);
130 static enum ndr_err_code ndr_push_ntlmssp_NTLMRevisionCurrent(struct ndr_push *ndr, int ndr_flags, enum ntlmssp_NTLMRevisionCurrent r)
132 NDR_CHECK(ndr_push_enum_uint8(ndr, NDR_SCALARS, r));
133 return NDR_ERR_SUCCESS;
136 static enum ndr_err_code ndr_pull_ntlmssp_NTLMRevisionCurrent(struct ndr_pull *ndr, int ndr_flags, enum ntlmssp_NTLMRevisionCurrent *r)
138 uint8_t v;
139 NDR_CHECK(ndr_pull_enum_uint8(ndr, NDR_SCALARS, &v));
140 *r = v;
141 return NDR_ERR_SUCCESS;
144 _PUBLIC_ void ndr_print_ntlmssp_NTLMRevisionCurrent(struct ndr_print *ndr, const char *name, enum ntlmssp_NTLMRevisionCurrent r)
146 const char *val = NULL;
148 switch (r) {
149 case NTLMSSP_REVISION_W2K3_RC1: val = "NTLMSSP_REVISION_W2K3_RC1"; break;
150 case NTLMSSP_REVISION_W2K3: val = "NTLMSSP_REVISION_W2K3"; break;
152 ndr_print_enum(ndr, name, "ENUM", val, r);
155 static enum ndr_err_code ndr_push_VERSION(struct ndr_push *ndr, int ndr_flags, const struct VERSION *r)
157 if (ndr_flags & NDR_SCALARS) {
158 NDR_CHECK(ndr_push_align(ndr, 2));
159 NDR_CHECK(ndr_push_ntlmssp_WindowsMajorVersion(ndr, NDR_SCALARS, r->ProductMajorVersion));
160 NDR_CHECK(ndr_push_ntlmssp_WindowsMinorVersion(ndr, NDR_SCALARS, r->ProductMinorVersion));
161 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->ProductBuild));
162 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Reserved, 3));
163 NDR_CHECK(ndr_push_ntlmssp_NTLMRevisionCurrent(ndr, NDR_SCALARS, r->NTLMRevisionCurrent));
165 if (ndr_flags & NDR_BUFFERS) {
167 return NDR_ERR_SUCCESS;
170 static enum ndr_err_code ndr_pull_VERSION(struct ndr_pull *ndr, int ndr_flags, struct VERSION *r)
172 if (ndr_flags & NDR_SCALARS) {
173 NDR_CHECK(ndr_pull_align(ndr, 2));
174 NDR_CHECK(ndr_pull_ntlmssp_WindowsMajorVersion(ndr, NDR_SCALARS, &r->ProductMajorVersion));
175 NDR_CHECK(ndr_pull_ntlmssp_WindowsMinorVersion(ndr, NDR_SCALARS, &r->ProductMinorVersion));
176 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->ProductBuild));
177 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Reserved, 3));
178 NDR_CHECK(ndr_pull_ntlmssp_NTLMRevisionCurrent(ndr, NDR_SCALARS, &r->NTLMRevisionCurrent));
180 if (ndr_flags & NDR_BUFFERS) {
182 return NDR_ERR_SUCCESS;
185 _PUBLIC_ void ndr_print_VERSION(struct ndr_print *ndr, const char *name, const struct VERSION *r)
187 ndr_print_struct(ndr, name, "VERSION");
188 ndr->depth++;
189 ndr_print_ntlmssp_WindowsMajorVersion(ndr, "ProductMajorVersion", r->ProductMajorVersion);
190 ndr_print_ntlmssp_WindowsMinorVersion(ndr, "ProductMinorVersion", r->ProductMinorVersion);
191 ndr_print_uint16(ndr, "ProductBuild", r->ProductBuild);
192 ndr_print_array_uint8(ndr, "Reserved", r->Reserved, 3);
193 ndr_print_ntlmssp_NTLMRevisionCurrent(ndr, "NTLMRevisionCurrent", r->NTLMRevisionCurrent);
194 ndr->depth--;
197 static enum ndr_err_code ndr_push_ntlmssp_Version(struct ndr_push *ndr, int ndr_flags, const union ntlmssp_Version *r)
199 if (ndr_flags & NDR_SCALARS) {
200 int level = ndr_push_get_switch_value(ndr, r);
201 switch (level) {
202 case NTLMSSP_NEGOTIATE_VERSION: {
203 NDR_CHECK(ndr_push_VERSION(ndr, NDR_SCALARS, &r->version));
204 break; }
206 default: {
207 break; }
211 if (ndr_flags & NDR_BUFFERS) {
212 int level = ndr_push_get_switch_value(ndr, r);
213 switch (level) {
214 case NTLMSSP_NEGOTIATE_VERSION:
215 break;
217 default:
218 break;
222 return NDR_ERR_SUCCESS;
225 static enum ndr_err_code ndr_pull_ntlmssp_Version(struct ndr_pull *ndr, int ndr_flags, union ntlmssp_Version *r)
227 int level;
228 level = ndr_pull_get_switch_value(ndr, r);
229 if (ndr_flags & NDR_SCALARS) {
230 switch (level) {
231 case NTLMSSP_NEGOTIATE_VERSION: {
232 NDR_CHECK(ndr_pull_VERSION(ndr, NDR_SCALARS, &r->version));
233 break; }
235 default: {
236 break; }
240 if (ndr_flags & NDR_BUFFERS) {
241 switch (level) {
242 case NTLMSSP_NEGOTIATE_VERSION:
243 break;
245 default:
246 break;
250 return NDR_ERR_SUCCESS;
253 _PUBLIC_ enum ndr_err_code ndr_push_NEGOTIATE_MESSAGE(struct ndr_push *ndr, int ndr_flags, const struct NEGOTIATE_MESSAGE *r)
255 if (ndr_flags & NDR_SCALARS) {
256 NDR_CHECK(ndr_push_align(ndr, 5));
257 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS));
258 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr, NDR_SCALARS, NtLmNegotiate));
259 NDR_CHECK(ndr_push_NEGOTIATE(ndr, NDR_SCALARS, r->NegotiateFlags));
260 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen(r->DomainName)));
261 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen(r->DomainName)));
263 uint32_t _flags_save_string = ndr->flags;
264 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
265 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->DomainName));
266 ndr->flags = _flags_save_string;
268 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen(r->Workstation)));
269 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen(r->Workstation)));
271 uint32_t _flags_save_string = ndr->flags;
272 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
273 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->Workstation));
274 ndr->flags = _flags_save_string;
276 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
277 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
279 if (ndr_flags & NDR_BUFFERS) {
281 uint32_t _flags_save_string = ndr->flags;
282 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
283 if (r->DomainName) {
284 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->DomainName));
286 struct ndr_push *_ndr_DomainName;
287 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_DomainName, 0, strlen(r->DomainName)));
288 NDR_CHECK(ndr_push_string(_ndr_DomainName, NDR_SCALARS, r->DomainName));
289 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_DomainName, 0, strlen(r->DomainName)));
292 ndr->flags = _flags_save_string;
295 uint32_t _flags_save_string = ndr->flags;
296 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
297 if (r->Workstation) {
298 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->Workstation));
300 struct ndr_push *_ndr_Workstation;
301 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_Workstation, 0, strlen(r->Workstation)));
302 NDR_CHECK(ndr_push_string(_ndr_Workstation, NDR_SCALARS, r->Workstation));
303 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_Workstation, 0, strlen(r->Workstation)));
306 ndr->flags = _flags_save_string;
308 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
310 return NDR_ERR_SUCCESS;
313 _PUBLIC_ enum ndr_err_code ndr_pull_NEGOTIATE_MESSAGE(struct ndr_pull *ndr, int ndr_flags, struct NEGOTIATE_MESSAGE *r)
315 uint32_t _ptr_DomainName;
316 TALLOC_CTX *_mem_save_DomainName_0;
317 uint32_t _ptr_Workstation;
318 TALLOC_CTX *_mem_save_Workstation_0;
319 if (ndr_flags & NDR_SCALARS) {
320 NDR_CHECK(ndr_pull_align(ndr, 5));
321 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->Signature, 8, sizeof(uint8_t), CH_DOS));
322 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr, NDR_SCALARS, &r->MessageType));
323 NDR_CHECK(ndr_pull_NEGOTIATE(ndr, NDR_SCALARS, &r->NegotiateFlags));
324 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->DomainNameLen));
325 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->DomainNameMaxLen));
327 uint32_t _flags_save_string = ndr->flags;
328 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
329 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DomainName));
330 if (_ptr_DomainName) {
331 NDR_PULL_ALLOC(ndr, r->DomainName);
332 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->DomainName, _ptr_DomainName));
333 } else {
334 r->DomainName = NULL;
336 ndr->flags = _flags_save_string;
338 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->WorkstationLen));
339 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->WorkstationMaxLen));
341 uint32_t _flags_save_string = ndr->flags;
342 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
343 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Workstation));
344 if (_ptr_Workstation) {
345 NDR_PULL_ALLOC(ndr, r->Workstation);
346 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->Workstation, _ptr_Workstation));
347 } else {
348 r->Workstation = NULL;
350 ndr->flags = _flags_save_string;
352 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
353 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
355 if (ndr_flags & NDR_BUFFERS) {
357 uint32_t _flags_save_string = ndr->flags;
358 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
359 if (r->DomainName) {
360 uint32_t _relative_save_offset;
361 _relative_save_offset = ndr->offset;
362 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->DomainName));
363 _mem_save_DomainName_0 = NDR_PULL_GET_MEM_CTX(ndr);
364 NDR_PULL_SET_MEM_CTX(ndr, r->DomainName, 0);
366 struct ndr_pull *_ndr_DomainName;
367 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_DomainName, 0, r->DomainNameLen));
368 NDR_CHECK(ndr_pull_string(_ndr_DomainName, NDR_SCALARS, &r->DomainName));
369 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_DomainName, 0, r->DomainNameLen));
371 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DomainName_0, 0);
372 ndr->offset = _relative_save_offset;
374 ndr->flags = _flags_save_string;
377 uint32_t _flags_save_string = ndr->flags;
378 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
379 if (r->Workstation) {
380 uint32_t _relative_save_offset;
381 _relative_save_offset = ndr->offset;
382 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->Workstation));
383 _mem_save_Workstation_0 = NDR_PULL_GET_MEM_CTX(ndr);
384 NDR_PULL_SET_MEM_CTX(ndr, r->Workstation, 0);
386 struct ndr_pull *_ndr_Workstation;
387 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_Workstation, 0, r->WorkstationLen));
388 NDR_CHECK(ndr_pull_string(_ndr_Workstation, NDR_SCALARS, &r->Workstation));
389 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_Workstation, 0, r->WorkstationLen));
391 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Workstation_0, 0);
392 ndr->offset = _relative_save_offset;
394 ndr->flags = _flags_save_string;
396 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
398 return NDR_ERR_SUCCESS;
401 _PUBLIC_ void ndr_print_NEGOTIATE_MESSAGE(struct ndr_print *ndr, const char *name, const struct NEGOTIATE_MESSAGE *r)
403 ndr_print_struct(ndr, name, "NEGOTIATE_MESSAGE");
404 ndr->depth++;
405 ndr_print_string(ndr, "Signature", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?"NTLMSSP":r->Signature);
406 ndr_print_ntlmssp_MessageType(ndr, "MessageType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NtLmNegotiate:r->MessageType);
407 ndr_print_NEGOTIATE(ndr, "NegotiateFlags", r->NegotiateFlags);
408 ndr_print_uint16(ndr, "DomainNameLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen(r->DomainName):r->DomainNameLen);
409 ndr_print_uint16(ndr, "DomainNameMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->DomainNameLen:r->DomainNameMaxLen);
410 ndr_print_ptr(ndr, "DomainName", r->DomainName);
411 ndr->depth++;
412 if (r->DomainName) {
413 ndr_print_string(ndr, "DomainName", r->DomainName);
415 ndr->depth--;
416 ndr_print_uint16(ndr, "WorkstationLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen(r->Workstation):r->WorkstationLen);
417 ndr_print_uint16(ndr, "WorkstationMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->WorkstationLen:r->WorkstationMaxLen);
418 ndr_print_ptr(ndr, "Workstation", r->Workstation);
419 ndr->depth++;
420 if (r->Workstation) {
421 ndr_print_string(ndr, "Workstation", r->Workstation);
423 ndr->depth--;
424 ndr_print_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION);
425 ndr_print_ntlmssp_Version(ndr, "Version", &r->Version);
426 ndr->depth--;
429 static enum ndr_err_code ndr_push_ntlmssp_AvId(struct ndr_push *ndr, int ndr_flags, enum ntlmssp_AvId r)
431 NDR_CHECK(ndr_push_enum_uint16(ndr, NDR_SCALARS, r));
432 return NDR_ERR_SUCCESS;
435 static enum ndr_err_code ndr_pull_ntlmssp_AvId(struct ndr_pull *ndr, int ndr_flags, enum ntlmssp_AvId *r)
437 uint16_t v;
438 NDR_CHECK(ndr_pull_enum_uint16(ndr, NDR_SCALARS, &v));
439 *r = v;
440 return NDR_ERR_SUCCESS;
443 _PUBLIC_ void ndr_print_ntlmssp_AvId(struct ndr_print *ndr, const char *name, enum ntlmssp_AvId r)
445 const char *val = NULL;
447 switch (r) {
448 case MsvAvEOL: val = "MsvAvEOL"; break;
449 case MsvAvNbComputerName: val = "MsvAvNbComputerName"; break;
450 case MsvAvNbDomainName: val = "MsvAvNbDomainName"; break;
451 case MsvAvDnsComputerName: val = "MsvAvDnsComputerName"; break;
452 case MsvAvDnsDomainName: val = "MsvAvDnsDomainName"; break;
453 case MsvAvDnsTreeName: val = "MsvAvDnsTreeName"; break;
454 case MsvAvFlags: val = "MsvAvFlags"; break;
455 case MsvAvTimestamp: val = "MsvAvTimestamp"; break;
456 case MsAvRestrictions: val = "MsAvRestrictions"; break;
457 case MsvAvTargetName: val = "MsvAvTargetName"; break;
458 case MsvChannelBindings: val = "MsvChannelBindings"; break;
460 ndr_print_enum(ndr, name, "ENUM", val, r);
463 static enum ndr_err_code ndr_push_Restriction_Encoding(struct ndr_push *ndr, int ndr_flags, const struct Restriction_Encoding *r)
465 if (ndr_flags & NDR_SCALARS) {
466 NDR_CHECK(ndr_push_align(ndr, 4));
467 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->Size));
468 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
469 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->IntegrityLevel));
470 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SubjectIntegrityLevel));
471 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->MachineId, 32));
473 if (ndr_flags & NDR_BUFFERS) {
475 return NDR_ERR_SUCCESS;
478 static enum ndr_err_code ndr_pull_Restriction_Encoding(struct ndr_pull *ndr, int ndr_flags, struct Restriction_Encoding *r)
480 if (ndr_flags & NDR_SCALARS) {
481 NDR_CHECK(ndr_pull_align(ndr, 4));
482 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Size));
483 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Z4));
484 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->IntegrityLevel));
485 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SubjectIntegrityLevel));
486 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->MachineId, 32));
488 if (ndr_flags & NDR_BUFFERS) {
490 return NDR_ERR_SUCCESS;
493 _PUBLIC_ void ndr_print_Restriction_Encoding(struct ndr_print *ndr, const char *name, const struct Restriction_Encoding *r)
495 ndr_print_struct(ndr, name, "Restriction_Encoding");
496 ndr->depth++;
497 ndr_print_uint32(ndr, "Size", r->Size);
498 ndr_print_uint32(ndr, "Z4", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->Z4);
499 ndr_print_uint32(ndr, "IntegrityLevel", r->IntegrityLevel);
500 ndr_print_uint32(ndr, "SubjectIntegrityLevel", r->SubjectIntegrityLevel);
501 ndr_print_array_uint8(ndr, "MachineId", r->MachineId, 32);
502 ndr->depth--;
505 static enum ndr_err_code ndr_push_ntlmssp_AvFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
507 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
508 return NDR_ERR_SUCCESS;
511 static enum ndr_err_code ndr_pull_ntlmssp_AvFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
513 uint32_t v;
514 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
515 *r = v;
516 return NDR_ERR_SUCCESS;
519 _PUBLIC_ void ndr_print_ntlmssp_AvFlags(struct ndr_print *ndr, const char *name, uint32_t r)
521 ndr_print_uint32(ndr, name, r);
522 ndr->depth++;
523 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_AVFLAG_CONSTRAINTED_ACCOUNT", NTLMSSP_AVFLAG_CONSTRAINTED_ACCOUNT, r);
524 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_AVFLAG_MIC_IN_AUTHENTICATE_MESSAGE", NTLMSSP_AVFLAG_MIC_IN_AUTHENTICATE_MESSAGE, r);
525 ndr->depth--;
528 static enum ndr_err_code ndr_push_ntlmssp_AvValue(struct ndr_push *ndr, int ndr_flags, const union ntlmssp_AvValue *r)
531 uint32_t _flags_save_UNION = ndr->flags;
532 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
533 if (ndr_flags & NDR_SCALARS) {
534 int level = ndr_push_get_switch_value(ndr, r);
535 switch (level) {
536 case MsvAvEOL: {
537 break; }
539 case MsvAvNbComputerName: {
541 uint32_t _flags_save_string = ndr->flags;
542 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
543 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvNbComputerName));
544 ndr->flags = _flags_save_string;
546 break; }
548 case MsvAvNbDomainName: {
550 uint32_t _flags_save_string = ndr->flags;
551 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
552 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvNbDomainName));
553 ndr->flags = _flags_save_string;
555 break; }
557 case MsvAvDnsComputerName: {
559 uint32_t _flags_save_string = ndr->flags;
560 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
561 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvDnsComputerName));
562 ndr->flags = _flags_save_string;
564 break; }
566 case MsvAvDnsDomainName: {
568 uint32_t _flags_save_string = ndr->flags;
569 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
570 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvDnsDomainName));
571 ndr->flags = _flags_save_string;
573 break; }
575 case MsvAvDnsTreeName: {
577 uint32_t _flags_save_string = ndr->flags;
578 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
579 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvDnsTreeName));
580 ndr->flags = _flags_save_string;
582 break; }
584 case MsvAvFlags: {
585 NDR_CHECK(ndr_push_ntlmssp_AvFlags(ndr, NDR_SCALARS, r->AvFlags));
586 break; }
588 case MsvAvTimestamp: {
589 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->AvTimestamp));
590 break; }
592 case MsAvRestrictions: {
593 NDR_CHECK(ndr_push_Restriction_Encoding(ndr, NDR_SCALARS, &r->AvRestrictions));
594 break; }
596 case MsvAvTargetName: {
598 uint32_t _flags_save_string = ndr->flags;
599 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
600 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvTargetName));
601 ndr->flags = _flags_save_string;
603 break; }
605 case MsvChannelBindings: {
606 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->ChannelBindings, 16));
607 break; }
609 default: {
611 uint32_t _flags_save_DATA_BLOB = ndr->flags;
612 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
613 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->blob));
614 ndr->flags = _flags_save_DATA_BLOB;
616 break; }
620 if (ndr_flags & NDR_BUFFERS) {
621 int level = ndr_push_get_switch_value(ndr, r);
622 switch (level) {
623 case MsvAvEOL:
624 break;
626 case MsvAvNbComputerName:
627 break;
629 case MsvAvNbDomainName:
630 break;
632 case MsvAvDnsComputerName:
633 break;
635 case MsvAvDnsDomainName:
636 break;
638 case MsvAvDnsTreeName:
639 break;
641 case MsvAvFlags:
642 break;
644 case MsvAvTimestamp:
645 break;
647 case MsAvRestrictions:
648 break;
650 case MsvAvTargetName:
651 break;
653 case MsvChannelBindings:
654 break;
656 default:
657 break;
661 ndr->flags = _flags_save_UNION;
663 return NDR_ERR_SUCCESS;
666 static enum ndr_err_code ndr_pull_ntlmssp_AvValue(struct ndr_pull *ndr, int ndr_flags, union ntlmssp_AvValue *r)
668 int level;
670 uint32_t _flags_save_UNION = ndr->flags;
671 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
672 level = ndr_pull_get_switch_value(ndr, r);
673 if (ndr_flags & NDR_SCALARS) {
674 switch (level) {
675 case MsvAvEOL: {
676 break; }
678 case MsvAvNbComputerName: {
680 uint32_t _flags_save_string = ndr->flags;
681 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
682 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvNbComputerName));
683 ndr->flags = _flags_save_string;
685 break; }
687 case MsvAvNbDomainName: {
689 uint32_t _flags_save_string = ndr->flags;
690 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
691 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvNbDomainName));
692 ndr->flags = _flags_save_string;
694 break; }
696 case MsvAvDnsComputerName: {
698 uint32_t _flags_save_string = ndr->flags;
699 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
700 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvDnsComputerName));
701 ndr->flags = _flags_save_string;
703 break; }
705 case MsvAvDnsDomainName: {
707 uint32_t _flags_save_string = ndr->flags;
708 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
709 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvDnsDomainName));
710 ndr->flags = _flags_save_string;
712 break; }
714 case MsvAvDnsTreeName: {
716 uint32_t _flags_save_string = ndr->flags;
717 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
718 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvDnsTreeName));
719 ndr->flags = _flags_save_string;
721 break; }
723 case MsvAvFlags: {
724 NDR_CHECK(ndr_pull_ntlmssp_AvFlags(ndr, NDR_SCALARS, &r->AvFlags));
725 break; }
727 case MsvAvTimestamp: {
728 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->AvTimestamp));
729 break; }
731 case MsAvRestrictions: {
732 NDR_CHECK(ndr_pull_Restriction_Encoding(ndr, NDR_SCALARS, &r->AvRestrictions));
733 break; }
735 case MsvAvTargetName: {
737 uint32_t _flags_save_string = ndr->flags;
738 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
739 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvTargetName));
740 ndr->flags = _flags_save_string;
742 break; }
744 case MsvChannelBindings: {
745 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->ChannelBindings, 16));
746 break; }
748 default: {
750 uint32_t _flags_save_DATA_BLOB = ndr->flags;
751 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
752 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->blob));
753 ndr->flags = _flags_save_DATA_BLOB;
755 break; }
759 if (ndr_flags & NDR_BUFFERS) {
760 switch (level) {
761 case MsvAvEOL:
762 break;
764 case MsvAvNbComputerName:
765 break;
767 case MsvAvNbDomainName:
768 break;
770 case MsvAvDnsComputerName:
771 break;
773 case MsvAvDnsDomainName:
774 break;
776 case MsvAvDnsTreeName:
777 break;
779 case MsvAvFlags:
780 break;
782 case MsvAvTimestamp:
783 break;
785 case MsAvRestrictions:
786 break;
788 case MsvAvTargetName:
789 break;
791 case MsvChannelBindings:
792 break;
794 default:
795 break;
799 ndr->flags = _flags_save_UNION;
801 return NDR_ERR_SUCCESS;
804 _PUBLIC_ void ndr_print_ntlmssp_AvValue(struct ndr_print *ndr, const char *name, const union ntlmssp_AvValue *r)
806 int level;
808 uint32_t _flags_save_UNION = ndr->flags;
809 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
810 level = ndr_print_get_switch_value(ndr, r);
811 ndr_print_union(ndr, name, level, "ntlmssp_AvValue");
812 switch (level) {
813 case MsvAvEOL:
814 break;
816 case MsvAvNbComputerName:
817 ndr_print_string(ndr, "AvNbComputerName", r->AvNbComputerName);
818 break;
820 case MsvAvNbDomainName:
821 ndr_print_string(ndr, "AvNbDomainName", r->AvNbDomainName);
822 break;
824 case MsvAvDnsComputerName:
825 ndr_print_string(ndr, "AvDnsComputerName", r->AvDnsComputerName);
826 break;
828 case MsvAvDnsDomainName:
829 ndr_print_string(ndr, "AvDnsDomainName", r->AvDnsDomainName);
830 break;
832 case MsvAvDnsTreeName:
833 ndr_print_string(ndr, "AvDnsTreeName", r->AvDnsTreeName);
834 break;
836 case MsvAvFlags:
837 ndr_print_ntlmssp_AvFlags(ndr, "AvFlags", r->AvFlags);
838 break;
840 case MsvAvTimestamp:
841 ndr_print_NTTIME(ndr, "AvTimestamp", r->AvTimestamp);
842 break;
844 case MsAvRestrictions:
845 ndr_print_Restriction_Encoding(ndr, "AvRestrictions", &r->AvRestrictions);
846 break;
848 case MsvAvTargetName:
849 ndr_print_string(ndr, "AvTargetName", r->AvTargetName);
850 break;
852 case MsvChannelBindings:
853 ndr_print_array_uint8(ndr, "ChannelBindings", r->ChannelBindings, 16);
854 break;
856 default:
857 ndr_print_DATA_BLOB(ndr, "blob", r->blob);
858 break;
861 ndr->flags = _flags_save_UNION;
865 static size_t ndr_size_ntlmssp_AvValue(const union ntlmssp_AvValue *r, uint32_t level, struct smb_iconv_convenience *ic, int flags)
867 flags |= LIBNDR_FLAG_NOALIGN;
868 return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_ntlmssp_AvValue, ic);
871 _PUBLIC_ enum ndr_err_code ndr_push_AV_PAIR(struct ndr_push *ndr, int ndr_flags, const struct AV_PAIR *r)
874 uint32_t _flags_save_STRUCT = ndr->flags;
875 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
876 if (ndr_flags & NDR_SCALARS) {
877 NDR_CHECK(ndr_push_align(ndr, 4));
878 NDR_CHECK(ndr_push_ntlmssp_AvId(ndr, NDR_SCALARS, r->AvId));
879 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_size_ntlmssp_AvValue(&r->Value, r->AvId, ndr->iconv_convenience, 0)));
881 struct ndr_push *_ndr_Value;
882 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_Value, 0, ndr_size_ntlmssp_AvValue(&r->Value, r->AvId, ndr->iconv_convenience, 0)));
883 NDR_CHECK(ndr_push_set_switch_value(_ndr_Value, &r->Value, r->AvId));
884 NDR_CHECK(ndr_push_ntlmssp_AvValue(_ndr_Value, NDR_SCALARS|NDR_BUFFERS, &r->Value));
885 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_Value, 0, ndr_size_ntlmssp_AvValue(&r->Value, r->AvId, ndr->iconv_convenience, 0)));
888 if (ndr_flags & NDR_BUFFERS) {
890 ndr->flags = _flags_save_STRUCT;
892 return NDR_ERR_SUCCESS;
895 _PUBLIC_ enum ndr_err_code ndr_pull_AV_PAIR(struct ndr_pull *ndr, int ndr_flags, struct AV_PAIR *r)
898 uint32_t _flags_save_STRUCT = ndr->flags;
899 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
900 if (ndr_flags & NDR_SCALARS) {
901 NDR_CHECK(ndr_pull_align(ndr, 4));
902 NDR_CHECK(ndr_pull_ntlmssp_AvId(ndr, NDR_SCALARS, &r->AvId));
903 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->AvLen));
905 struct ndr_pull *_ndr_Value;
906 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_Value, 0, r->AvLen));
907 NDR_CHECK(ndr_pull_set_switch_value(_ndr_Value, &r->Value, r->AvId));
908 NDR_CHECK(ndr_pull_ntlmssp_AvValue(_ndr_Value, NDR_SCALARS|NDR_BUFFERS, &r->Value));
909 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_Value, 0, r->AvLen));
912 if (ndr_flags & NDR_BUFFERS) {
914 ndr->flags = _flags_save_STRUCT;
916 return NDR_ERR_SUCCESS;
919 _PUBLIC_ void ndr_print_AV_PAIR(struct ndr_print *ndr, const char *name, const struct AV_PAIR *r)
921 ndr_print_struct(ndr, name, "AV_PAIR");
923 uint32_t _flags_save_STRUCT = ndr->flags;
924 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
925 ndr->depth++;
926 ndr_print_ntlmssp_AvId(ndr, "AvId", r->AvId);
927 ndr_print_uint16(ndr, "AvLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_ntlmssp_AvValue(&r->Value, r->AvId, ndr->iconv_convenience, 0):r->AvLen);
928 ndr_print_set_switch_value(ndr, &r->Value, r->AvId);
929 ndr_print_ntlmssp_AvValue(ndr, "Value", &r->Value);
930 ndr->depth--;
931 ndr->flags = _flags_save_STRUCT;
935 _PUBLIC_ void ndr_print_AV_PAIR_LIST(struct ndr_print *ndr, const char *name, const struct AV_PAIR_LIST *r)
937 uint32_t cntr_pair_0;
938 ndr_print_struct(ndr, name, "AV_PAIR_LIST");
940 uint32_t _flags_save_STRUCT = ndr->flags;
941 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
942 ndr->depth++;
943 ndr_print_uint32(ndr, "count", r->count);
944 ndr->print(ndr, "%s: ARRAY(%d)", "pair", (int)r->count);
945 ndr->depth++;
946 for (cntr_pair_0=0;cntr_pair_0<r->count;cntr_pair_0++) {
947 char *idx_0=NULL;
948 if (asprintf(&idx_0, "[%d]", cntr_pair_0) != -1) {
949 ndr_print_AV_PAIR(ndr, "pair", &r->pair[cntr_pair_0]);
950 free(idx_0);
953 ndr->depth--;
954 ndr->depth--;
955 ndr->flags = _flags_save_STRUCT;
959 static size_t ndr_size_AV_PAIR_LIST(const struct AV_PAIR_LIST *r, struct smb_iconv_convenience *ic, int flags)
961 flags |= LIBNDR_FLAG_NOALIGN;
962 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_AV_PAIR_LIST, ic);
965 _PUBLIC_ enum ndr_err_code ndr_push_CHALLENGE_MESSAGE(struct ndr_push *ndr, int ndr_flags, const struct CHALLENGE_MESSAGE *r)
968 uint32_t _flags_save_STRUCT = ndr->flags;
969 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
970 if (ndr_flags & NDR_SCALARS) {
971 NDR_CHECK(ndr_push_align(ndr, 5));
972 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS));
973 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr, NDR_SCALARS, NtLmChallenge));
974 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName)));
975 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName)));
977 uint32_t _flags_save_string = ndr->flags;
978 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
979 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->TargetName));
980 ndr->flags = _flags_save_string;
982 NDR_CHECK(ndr_push_NEGOTIATE(ndr, NDR_SCALARS, r->NegotiateFlags));
983 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->ServerChallenge, 8));
984 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Reserved, 8));
985 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_size_AV_PAIR_LIST(r->TargetInfo, ndr->iconv_convenience, ndr->flags)));
986 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_size_AV_PAIR_LIST(r->TargetInfo, ndr->iconv_convenience, ndr->flags)));
987 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->TargetInfo));
988 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
989 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
991 if (ndr_flags & NDR_BUFFERS) {
993 uint32_t _flags_save_string = ndr->flags;
994 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
995 if (r->TargetName) {
996 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->TargetName));
998 struct ndr_push *_ndr_TargetName;
999 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_TargetName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName)));
1000 NDR_CHECK(ndr_push_string(_ndr_TargetName, NDR_SCALARS, r->TargetName));
1001 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_TargetName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName)));
1004 ndr->flags = _flags_save_string;
1006 if (r->TargetInfo) {
1007 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->TargetInfo));
1009 struct ndr_push *_ndr_TargetInfo;
1010 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_TargetInfo, 0, ndr_size_AV_PAIR_LIST(r->TargetInfo, ndr->iconv_convenience, ndr->flags)));
1011 NDR_CHECK(ndr_push_AV_PAIR_LIST(_ndr_TargetInfo, NDR_SCALARS|NDR_BUFFERS, r->TargetInfo));
1012 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_TargetInfo, 0, ndr_size_AV_PAIR_LIST(r->TargetInfo, ndr->iconv_convenience, ndr->flags)));
1015 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
1017 ndr->flags = _flags_save_STRUCT;
1019 return NDR_ERR_SUCCESS;
1022 _PUBLIC_ enum ndr_err_code ndr_pull_CHALLENGE_MESSAGE(struct ndr_pull *ndr, int ndr_flags, struct CHALLENGE_MESSAGE *r)
1024 uint32_t _ptr_TargetName;
1025 TALLOC_CTX *_mem_save_TargetName_0;
1026 uint32_t _ptr_TargetInfo;
1027 TALLOC_CTX *_mem_save_TargetInfo_0;
1029 uint32_t _flags_save_STRUCT = ndr->flags;
1030 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1031 if (ndr_flags & NDR_SCALARS) {
1032 NDR_CHECK(ndr_pull_align(ndr, 5));
1033 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->Signature, 8, sizeof(uint8_t), CH_DOS));
1034 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr, NDR_SCALARS, &r->MessageType));
1035 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->TargetNameLen));
1036 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->TargetNameMaxLen));
1038 uint32_t _flags_save_string = ndr->flags;
1039 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1040 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TargetName));
1041 if (_ptr_TargetName) {
1042 NDR_PULL_ALLOC(ndr, r->TargetName);
1043 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->TargetName, _ptr_TargetName));
1044 } else {
1045 r->TargetName = NULL;
1047 ndr->flags = _flags_save_string;
1049 NDR_CHECK(ndr_pull_NEGOTIATE(ndr, NDR_SCALARS, &r->NegotiateFlags));
1050 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->ServerChallenge, 8));
1051 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Reserved, 8));
1052 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->TargetInfoLen));
1053 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->TargetNameInfoMaxLen));
1054 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TargetInfo));
1055 if (_ptr_TargetInfo) {
1056 NDR_PULL_ALLOC(ndr, r->TargetInfo);
1057 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->TargetInfo, _ptr_TargetInfo));
1058 } else {
1059 r->TargetInfo = NULL;
1061 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
1062 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
1064 if (ndr_flags & NDR_BUFFERS) {
1066 uint32_t _flags_save_string = ndr->flags;
1067 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1068 if (r->TargetName) {
1069 uint32_t _relative_save_offset;
1070 _relative_save_offset = ndr->offset;
1071 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->TargetName));
1072 _mem_save_TargetName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1073 NDR_PULL_SET_MEM_CTX(ndr, r->TargetName, 0);
1075 struct ndr_pull *_ndr_TargetName;
1076 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_TargetName, 0, r->TargetNameLen));
1077 NDR_CHECK(ndr_pull_string(_ndr_TargetName, NDR_SCALARS, &r->TargetName));
1078 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_TargetName, 0, r->TargetNameLen));
1080 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TargetName_0, 0);
1081 ndr->offset = _relative_save_offset;
1083 ndr->flags = _flags_save_string;
1085 if (r->TargetInfo) {
1086 uint32_t _relative_save_offset;
1087 _relative_save_offset = ndr->offset;
1088 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->TargetInfo));
1089 _mem_save_TargetInfo_0 = NDR_PULL_GET_MEM_CTX(ndr);
1090 NDR_PULL_SET_MEM_CTX(ndr, r->TargetInfo, 0);
1092 struct ndr_pull *_ndr_TargetInfo;
1093 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_TargetInfo, 0, r->TargetInfoLen));
1094 NDR_CHECK(ndr_pull_AV_PAIR_LIST(_ndr_TargetInfo, NDR_SCALARS|NDR_BUFFERS, r->TargetInfo));
1095 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_TargetInfo, 0, r->TargetInfoLen));
1097 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TargetInfo_0, 0);
1098 ndr->offset = _relative_save_offset;
1100 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
1102 ndr->flags = _flags_save_STRUCT;
1104 return NDR_ERR_SUCCESS;
1107 _PUBLIC_ void ndr_print_CHALLENGE_MESSAGE(struct ndr_print *ndr, const char *name, const struct CHALLENGE_MESSAGE *r)
1109 ndr_print_struct(ndr, name, "CHALLENGE_MESSAGE");
1111 uint32_t _flags_save_STRUCT = ndr->flags;
1112 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1113 ndr->depth++;
1114 ndr_print_string(ndr, "Signature", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?"NTLMSSP":r->Signature);
1115 ndr_print_ntlmssp_MessageType(ndr, "MessageType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NtLmChallenge:r->MessageType);
1116 ndr_print_uint16(ndr, "TargetNameLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName):r->TargetNameLen);
1117 ndr_print_uint16(ndr, "TargetNameMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->TargetNameLen:r->TargetNameMaxLen);
1118 ndr_print_ptr(ndr, "TargetName", r->TargetName);
1119 ndr->depth++;
1120 if (r->TargetName) {
1121 ndr_print_string(ndr, "TargetName", r->TargetName);
1123 ndr->depth--;
1124 ndr_print_NEGOTIATE(ndr, "NegotiateFlags", r->NegotiateFlags);
1125 ndr_print_array_uint8(ndr, "ServerChallenge", r->ServerChallenge, 8);
1126 ndr_print_array_uint8(ndr, "Reserved", r->Reserved, 8);
1127 ndr_print_uint16(ndr, "TargetInfoLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_AV_PAIR_LIST(r->TargetInfo, ndr->iconv_convenience, ndr->flags):r->TargetInfoLen);
1128 ndr_print_uint16(ndr, "TargetNameInfoMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->TargetInfoLen:r->TargetNameInfoMaxLen);
1129 ndr_print_ptr(ndr, "TargetInfo", r->TargetInfo);
1130 ndr->depth++;
1131 if (r->TargetInfo) {
1132 ndr_print_AV_PAIR_LIST(ndr, "TargetInfo", r->TargetInfo);
1134 ndr->depth--;
1135 ndr_print_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION);
1136 ndr_print_ntlmssp_Version(ndr, "Version", &r->Version);
1137 ndr->depth--;
1138 ndr->flags = _flags_save_STRUCT;
1142 _PUBLIC_ enum ndr_err_code ndr_push_LM_RESPONSE(struct ndr_push *ndr, int ndr_flags, const struct LM_RESPONSE *r)
1145 uint32_t _flags_save_STRUCT = ndr->flags;
1146 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1147 if (ndr_flags & NDR_SCALARS) {
1148 NDR_CHECK(ndr_push_align(ndr, 1));
1149 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Response, 24));
1151 if (ndr_flags & NDR_BUFFERS) {
1153 ndr->flags = _flags_save_STRUCT;
1155 return NDR_ERR_SUCCESS;
1158 _PUBLIC_ enum ndr_err_code ndr_pull_LM_RESPONSE(struct ndr_pull *ndr, int ndr_flags, struct LM_RESPONSE *r)
1161 uint32_t _flags_save_STRUCT = ndr->flags;
1162 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1163 if (ndr_flags & NDR_SCALARS) {
1164 NDR_CHECK(ndr_pull_align(ndr, 1));
1165 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Response, 24));
1167 if (ndr_flags & NDR_BUFFERS) {
1169 ndr->flags = _flags_save_STRUCT;
1171 return NDR_ERR_SUCCESS;
1174 _PUBLIC_ void ndr_print_LM_RESPONSE(struct ndr_print *ndr, const char *name, const struct LM_RESPONSE *r)
1176 ndr_print_struct(ndr, name, "LM_RESPONSE");
1178 uint32_t _flags_save_STRUCT = ndr->flags;
1179 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1180 ndr->depth++;
1181 ndr_print_array_uint8(ndr, "Response", r->Response, 24);
1182 ndr->depth--;
1183 ndr->flags = _flags_save_STRUCT;
1187 _PUBLIC_ enum ndr_err_code ndr_push_LMv2_RESPONSE(struct ndr_push *ndr, int ndr_flags, const struct LMv2_RESPONSE *r)
1190 uint32_t _flags_save_STRUCT = ndr->flags;
1191 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1192 if (ndr_flags & NDR_SCALARS) {
1193 NDR_CHECK(ndr_push_align(ndr, 1));
1194 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Response, 16));
1195 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->ChallengeFromClient, 8));
1197 if (ndr_flags & NDR_BUFFERS) {
1199 ndr->flags = _flags_save_STRUCT;
1201 return NDR_ERR_SUCCESS;
1204 _PUBLIC_ enum ndr_err_code ndr_pull_LMv2_RESPONSE(struct ndr_pull *ndr, int ndr_flags, struct LMv2_RESPONSE *r)
1207 uint32_t _flags_save_STRUCT = ndr->flags;
1208 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1209 if (ndr_flags & NDR_SCALARS) {
1210 NDR_CHECK(ndr_pull_align(ndr, 1));
1211 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Response, 16));
1212 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->ChallengeFromClient, 8));
1214 if (ndr_flags & NDR_BUFFERS) {
1216 ndr->flags = _flags_save_STRUCT;
1218 return NDR_ERR_SUCCESS;
1221 _PUBLIC_ void ndr_print_LMv2_RESPONSE(struct ndr_print *ndr, const char *name, const struct LMv2_RESPONSE *r)
1223 ndr_print_struct(ndr, name, "LMv2_RESPONSE");
1225 uint32_t _flags_save_STRUCT = ndr->flags;
1226 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1227 ndr->depth++;
1228 ndr_print_array_uint8(ndr, "Response", r->Response, 16);
1229 ndr_print_array_uint8(ndr, "ChallengeFromClient", r->ChallengeFromClient, 8);
1230 ndr->depth--;
1231 ndr->flags = _flags_save_STRUCT;
1235 static enum ndr_err_code ndr_push_ntlmssp_LM_RESPONSE(struct ndr_push *ndr, int ndr_flags, const union ntlmssp_LM_RESPONSE *r)
1237 if (ndr_flags & NDR_SCALARS) {
1238 int level = ndr_push_get_switch_value(ndr, r);
1239 switch (level) {
1240 case 24: {
1241 NDR_CHECK(ndr_push_LM_RESPONSE(ndr, NDR_SCALARS, &r->v1));
1242 break; }
1244 default: {
1245 break; }
1249 if (ndr_flags & NDR_BUFFERS) {
1250 int level = ndr_push_get_switch_value(ndr, r);
1251 switch (level) {
1252 case 24:
1253 break;
1255 default:
1256 break;
1260 return NDR_ERR_SUCCESS;
1263 static enum ndr_err_code ndr_pull_ntlmssp_LM_RESPONSE(struct ndr_pull *ndr, int ndr_flags, union ntlmssp_LM_RESPONSE *r)
1265 int level;
1266 level = ndr_pull_get_switch_value(ndr, r);
1267 if (ndr_flags & NDR_SCALARS) {
1268 switch (level) {
1269 case 24: {
1270 NDR_CHECK(ndr_pull_LM_RESPONSE(ndr, NDR_SCALARS, &r->v1));
1271 break; }
1273 default: {
1274 break; }
1278 if (ndr_flags & NDR_BUFFERS) {
1279 switch (level) {
1280 case 24:
1281 break;
1283 default:
1284 break;
1288 return NDR_ERR_SUCCESS;
1291 _PUBLIC_ void ndr_print_ntlmssp_LM_RESPONSE(struct ndr_print *ndr, const char *name, const union ntlmssp_LM_RESPONSE *r)
1293 int level;
1294 level = ndr_print_get_switch_value(ndr, r);
1295 ndr_print_union(ndr, name, level, "ntlmssp_LM_RESPONSE");
1296 switch (level) {
1297 case 24:
1298 ndr_print_LM_RESPONSE(ndr, "v1", &r->v1);
1299 break;
1301 default:
1302 break;
1307 _PUBLIC_ enum ndr_err_code ndr_push_NTLM_RESPONSE(struct ndr_push *ndr, int ndr_flags, const struct NTLM_RESPONSE *r)
1310 uint32_t _flags_save_STRUCT = ndr->flags;
1311 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1312 if (ndr_flags & NDR_SCALARS) {
1313 NDR_CHECK(ndr_push_align(ndr, 1));
1314 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Response, 24));
1316 if (ndr_flags & NDR_BUFFERS) {
1318 ndr->flags = _flags_save_STRUCT;
1320 return NDR_ERR_SUCCESS;
1323 _PUBLIC_ enum ndr_err_code ndr_pull_NTLM_RESPONSE(struct ndr_pull *ndr, int ndr_flags, struct NTLM_RESPONSE *r)
1326 uint32_t _flags_save_STRUCT = ndr->flags;
1327 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1328 if (ndr_flags & NDR_SCALARS) {
1329 NDR_CHECK(ndr_pull_align(ndr, 1));
1330 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Response, 24));
1332 if (ndr_flags & NDR_BUFFERS) {
1334 ndr->flags = _flags_save_STRUCT;
1336 return NDR_ERR_SUCCESS;
1339 _PUBLIC_ void ndr_print_NTLM_RESPONSE(struct ndr_print *ndr, const char *name, const struct NTLM_RESPONSE *r)
1341 ndr_print_struct(ndr, name, "NTLM_RESPONSE");
1343 uint32_t _flags_save_STRUCT = ndr->flags;
1344 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1345 ndr->depth++;
1346 ndr_print_array_uint8(ndr, "Response", r->Response, 24);
1347 ndr->depth--;
1348 ndr->flags = _flags_save_STRUCT;
1352 static enum ndr_err_code ndr_push_NTLMv2_CLIENT_CHALLENGE(struct ndr_push *ndr, int ndr_flags, const struct NTLMv2_CLIENT_CHALLENGE *r)
1355 uint32_t _flags_save_STRUCT = ndr->flags;
1356 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1357 if (ndr_flags & NDR_SCALARS) {
1358 NDR_CHECK(ndr_push_align(ndr, 4));
1359 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, 1));
1360 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, 1));
1361 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->Reserved1));
1362 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->Reserved2));
1363 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->TimeStamp));
1364 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->ChallengeFromClient, 8));
1365 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->Reserved3));
1367 uint32_t _flags_save_AV_PAIR_LIST = ndr->flags;
1368 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1370 struct ndr_push *_ndr_AvPairs;
1371 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_AvPairs, 0, -1));
1372 NDR_CHECK(ndr_push_AV_PAIR_LIST(_ndr_AvPairs, NDR_SCALARS|NDR_BUFFERS, &r->AvPairs));
1373 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_AvPairs, 0, -1));
1375 ndr->flags = _flags_save_AV_PAIR_LIST;
1378 if (ndr_flags & NDR_BUFFERS) {
1380 uint32_t _flags_save_AV_PAIR_LIST = ndr->flags;
1381 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1382 ndr->flags = _flags_save_AV_PAIR_LIST;
1385 ndr->flags = _flags_save_STRUCT;
1387 return NDR_ERR_SUCCESS;
1390 static enum ndr_err_code ndr_pull_NTLMv2_CLIENT_CHALLENGE(struct ndr_pull *ndr, int ndr_flags, struct NTLMv2_CLIENT_CHALLENGE *r)
1393 uint32_t _flags_save_STRUCT = ndr->flags;
1394 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1395 if (ndr_flags & NDR_SCALARS) {
1396 NDR_CHECK(ndr_pull_align(ndr, 4));
1397 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->RespType));
1398 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->HiRespType));
1399 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->Reserved1));
1400 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Reserved2));
1401 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->TimeStamp));
1402 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->ChallengeFromClient, 8));
1403 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Reserved3));
1405 uint32_t _flags_save_AV_PAIR_LIST = ndr->flags;
1406 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1408 struct ndr_pull *_ndr_AvPairs;
1409 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_AvPairs, 0, -1));
1410 NDR_CHECK(ndr_pull_AV_PAIR_LIST(_ndr_AvPairs, NDR_SCALARS|NDR_BUFFERS, &r->AvPairs));
1411 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_AvPairs, 0, -1));
1413 ndr->flags = _flags_save_AV_PAIR_LIST;
1416 if (ndr_flags & NDR_BUFFERS) {
1418 uint32_t _flags_save_AV_PAIR_LIST = ndr->flags;
1419 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1420 ndr->flags = _flags_save_AV_PAIR_LIST;
1423 ndr->flags = _flags_save_STRUCT;
1425 return NDR_ERR_SUCCESS;
1428 _PUBLIC_ void ndr_print_NTLMv2_CLIENT_CHALLENGE(struct ndr_print *ndr, const char *name, const struct NTLMv2_CLIENT_CHALLENGE *r)
1430 ndr_print_struct(ndr, name, "NTLMv2_CLIENT_CHALLENGE");
1432 uint32_t _flags_save_STRUCT = ndr->flags;
1433 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1434 ndr->depth++;
1435 ndr_print_uint8(ndr, "RespType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?1:r->RespType);
1436 ndr_print_uint8(ndr, "HiRespType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?1:r->HiRespType);
1437 ndr_print_uint16(ndr, "Reserved1", r->Reserved1);
1438 ndr_print_uint32(ndr, "Reserved2", r->Reserved2);
1439 ndr_print_NTTIME(ndr, "TimeStamp", r->TimeStamp);
1440 ndr_print_array_uint8(ndr, "ChallengeFromClient", r->ChallengeFromClient, 8);
1441 ndr_print_uint32(ndr, "Reserved3", r->Reserved3);
1442 ndr_print_AV_PAIR_LIST(ndr, "AvPairs", &r->AvPairs);
1443 ndr->depth--;
1444 ndr->flags = _flags_save_STRUCT;
1448 _PUBLIC_ enum ndr_err_code ndr_push_NTLMv2_RESPONSE(struct ndr_push *ndr, int ndr_flags, const struct NTLMv2_RESPONSE *r)
1451 uint32_t _flags_save_STRUCT = ndr->flags;
1452 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1453 if (ndr_flags & NDR_SCALARS) {
1454 NDR_CHECK(ndr_push_align(ndr, 4));
1455 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Response, 16));
1456 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_SCALARS, &r->Challenge));
1458 if (ndr_flags & NDR_BUFFERS) {
1459 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_BUFFERS, &r->Challenge));
1461 ndr->flags = _flags_save_STRUCT;
1463 return NDR_ERR_SUCCESS;
1466 _PUBLIC_ enum ndr_err_code ndr_pull_NTLMv2_RESPONSE(struct ndr_pull *ndr, int ndr_flags, struct NTLMv2_RESPONSE *r)
1469 uint32_t _flags_save_STRUCT = ndr->flags;
1470 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1471 if (ndr_flags & NDR_SCALARS) {
1472 NDR_CHECK(ndr_pull_align(ndr, 4));
1473 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Response, 16));
1474 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_SCALARS, &r->Challenge));
1476 if (ndr_flags & NDR_BUFFERS) {
1477 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_BUFFERS, &r->Challenge));
1479 ndr->flags = _flags_save_STRUCT;
1481 return NDR_ERR_SUCCESS;
1484 _PUBLIC_ void ndr_print_NTLMv2_RESPONSE(struct ndr_print *ndr, const char *name, const struct NTLMv2_RESPONSE *r)
1486 ndr_print_struct(ndr, name, "NTLMv2_RESPONSE");
1488 uint32_t _flags_save_STRUCT = ndr->flags;
1489 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1490 ndr->depth++;
1491 ndr_print_array_uint8(ndr, "Response", r->Response, 16);
1492 ndr_print_NTLMv2_CLIENT_CHALLENGE(ndr, "Challenge", &r->Challenge);
1493 ndr->depth--;
1494 ndr->flags = _flags_save_STRUCT;
1498 _PUBLIC_ enum ndr_err_code ndr_push_ntlmssp_NTLM_RESPONSE(struct ndr_push *ndr, int ndr_flags, const union ntlmssp_NTLM_RESPONSE *r)
1500 if (ndr_flags & NDR_SCALARS) {
1501 int level = ndr_push_get_switch_value(ndr, r);
1502 switch (level) {
1503 case 0: {
1504 break; }
1506 case 0x18: {
1507 NDR_CHECK(ndr_push_NTLM_RESPONSE(ndr, NDR_SCALARS, &r->v1));
1508 break; }
1510 default: {
1511 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr, NDR_SCALARS, &r->v2));
1512 break; }
1516 if (ndr_flags & NDR_BUFFERS) {
1517 int level = ndr_push_get_switch_value(ndr, r);
1518 switch (level) {
1519 case 0:
1520 break;
1522 case 0x18:
1523 break;
1525 default:
1526 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr, NDR_BUFFERS, &r->v2));
1527 break;
1531 return NDR_ERR_SUCCESS;
1534 _PUBLIC_ enum ndr_err_code ndr_pull_ntlmssp_NTLM_RESPONSE(struct ndr_pull *ndr, int ndr_flags, union ntlmssp_NTLM_RESPONSE *r)
1536 int level;
1537 level = ndr_pull_get_switch_value(ndr, r);
1538 if (ndr_flags & NDR_SCALARS) {
1539 switch (level) {
1540 case 0: {
1541 break; }
1543 case 0x18: {
1544 NDR_CHECK(ndr_pull_NTLM_RESPONSE(ndr, NDR_SCALARS, &r->v1));
1545 break; }
1547 default: {
1548 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr, NDR_SCALARS, &r->v2));
1549 break; }
1553 if (ndr_flags & NDR_BUFFERS) {
1554 switch (level) {
1555 case 0:
1556 break;
1558 case 0x18:
1559 break;
1561 default:
1562 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr, NDR_BUFFERS, &r->v2));
1563 break;
1567 return NDR_ERR_SUCCESS;
1570 _PUBLIC_ void ndr_print_ntlmssp_NTLM_RESPONSE(struct ndr_print *ndr, const char *name, const union ntlmssp_NTLM_RESPONSE *r)
1572 int level;
1573 level = ndr_print_get_switch_value(ndr, r);
1574 ndr_print_union(ndr, name, level, "ntlmssp_NTLM_RESPONSE");
1575 switch (level) {
1576 case 0:
1577 break;
1579 case 0x18:
1580 ndr_print_NTLM_RESPONSE(ndr, "v1", &r->v1);
1581 break;
1583 default:
1584 ndr_print_NTLMv2_RESPONSE(ndr, "v2", &r->v2);
1585 break;
1590 _PUBLIC_ enum ndr_err_code ndr_push_AUTHENTICATE_MESSAGE(struct ndr_push *ndr, int ndr_flags, const struct AUTHENTICATE_MESSAGE *r)
1593 uint32_t _flags_save_STRUCT = ndr->flags;
1594 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1595 if (ndr_flags & NDR_SCALARS) {
1596 NDR_CHECK(ndr_push_align(ndr, 5));
1597 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS));
1598 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr, NDR_SCALARS, NtLmAuthenticate));
1599 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->LmChallengeResponseLen));
1600 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->LmChallengeResponseLen));
1601 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->LmChallengeResponse));
1602 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->NtChallengeResponseLen));
1603 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->NtChallengeResponseLen));
1604 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->NtChallengeResponse));
1605 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName)));
1606 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName)));
1608 uint32_t _flags_save_string = ndr->flags;
1609 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1610 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->DomainName));
1611 ndr->flags = _flags_save_string;
1613 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName)));
1614 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName)));
1616 uint32_t _flags_save_string = ndr->flags;
1617 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1618 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->UserName));
1619 ndr->flags = _flags_save_string;
1621 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation)));
1622 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation)));
1624 uint32_t _flags_save_string = ndr->flags;
1625 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1626 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->Workstation));
1627 ndr->flags = _flags_save_string;
1629 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->EncryptedRandomSessionKey->length));
1630 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->EncryptedRandomSessionKey->length));
1631 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->EncryptedRandomSessionKey));
1632 NDR_CHECK(ndr_push_NEGOTIATE(ndr, NDR_SCALARS, r->NegotiateFlags));
1633 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
1634 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
1636 if (ndr_flags & NDR_BUFFERS) {
1637 if (r->LmChallengeResponse) {
1638 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->LmChallengeResponse));
1640 struct ndr_push *_ndr_LmChallengeResponse;
1641 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_LmChallengeResponse, 0, r->LmChallengeResponseLen));
1642 NDR_CHECK(ndr_push_set_switch_value(_ndr_LmChallengeResponse, r->LmChallengeResponse, r->LmChallengeResponseLen));
1643 NDR_CHECK(ndr_push_ntlmssp_LM_RESPONSE(_ndr_LmChallengeResponse, NDR_SCALARS|NDR_BUFFERS, r->LmChallengeResponse));
1644 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_LmChallengeResponse, 0, r->LmChallengeResponseLen));
1647 if (r->NtChallengeResponse) {
1648 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->NtChallengeResponse));
1650 struct ndr_push *_ndr_NtChallengeResponse;
1651 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_NtChallengeResponse, 0, r->NtChallengeResponseLen));
1652 NDR_CHECK(ndr_push_set_switch_value(_ndr_NtChallengeResponse, r->NtChallengeResponse, r->NtChallengeResponseLen));
1653 NDR_CHECK(ndr_push_ntlmssp_NTLM_RESPONSE(_ndr_NtChallengeResponse, NDR_SCALARS|NDR_BUFFERS, r->NtChallengeResponse));
1654 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_NtChallengeResponse, 0, r->NtChallengeResponseLen));
1658 uint32_t _flags_save_string = ndr->flags;
1659 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1660 if (r->DomainName) {
1661 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->DomainName));
1663 struct ndr_push *_ndr_DomainName;
1664 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_DomainName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName)));
1665 NDR_CHECK(ndr_push_string(_ndr_DomainName, NDR_SCALARS, r->DomainName));
1666 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_DomainName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName)));
1669 ndr->flags = _flags_save_string;
1672 uint32_t _flags_save_string = ndr->flags;
1673 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1674 if (r->UserName) {
1675 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->UserName));
1677 struct ndr_push *_ndr_UserName;
1678 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_UserName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName)));
1679 NDR_CHECK(ndr_push_string(_ndr_UserName, NDR_SCALARS, r->UserName));
1680 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_UserName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName)));
1683 ndr->flags = _flags_save_string;
1686 uint32_t _flags_save_string = ndr->flags;
1687 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1688 if (r->Workstation) {
1689 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->Workstation));
1691 struct ndr_push *_ndr_Workstation;
1692 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_Workstation, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation)));
1693 NDR_CHECK(ndr_push_string(_ndr_Workstation, NDR_SCALARS, r->Workstation));
1694 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_Workstation, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation)));
1697 ndr->flags = _flags_save_string;
1699 if (r->EncryptedRandomSessionKey) {
1700 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->EncryptedRandomSessionKey));
1702 struct ndr_push *_ndr_EncryptedRandomSessionKey;
1703 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_EncryptedRandomSessionKey, 0, r->EncryptedRandomSessionKey->length));
1704 NDR_CHECK(ndr_push_DATA_BLOB(_ndr_EncryptedRandomSessionKey, NDR_SCALARS, *r->EncryptedRandomSessionKey));
1705 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_EncryptedRandomSessionKey, 0, r->EncryptedRandomSessionKey->length));
1708 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
1710 ndr->flags = _flags_save_STRUCT;
1712 return NDR_ERR_SUCCESS;
1715 _PUBLIC_ enum ndr_err_code ndr_pull_AUTHENTICATE_MESSAGE(struct ndr_pull *ndr, int ndr_flags, struct AUTHENTICATE_MESSAGE *r)
1717 uint32_t _ptr_LmChallengeResponse;
1718 TALLOC_CTX *_mem_save_LmChallengeResponse_0;
1719 uint32_t _ptr_NtChallengeResponse;
1720 TALLOC_CTX *_mem_save_NtChallengeResponse_0;
1721 uint32_t _ptr_DomainName;
1722 TALLOC_CTX *_mem_save_DomainName_0;
1723 uint32_t _ptr_UserName;
1724 TALLOC_CTX *_mem_save_UserName_0;
1725 uint32_t _ptr_Workstation;
1726 TALLOC_CTX *_mem_save_Workstation_0;
1727 uint32_t _ptr_EncryptedRandomSessionKey;
1728 TALLOC_CTX *_mem_save_EncryptedRandomSessionKey_0;
1730 uint32_t _flags_save_STRUCT = ndr->flags;
1731 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1732 if (ndr_flags & NDR_SCALARS) {
1733 NDR_CHECK(ndr_pull_align(ndr, 5));
1734 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->Signature, 8, sizeof(uint8_t), CH_DOS));
1735 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr, NDR_SCALARS, &r->MessageType));
1736 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->LmChallengeResponseLen));
1737 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->LmChallengeResponseMaxLen));
1738 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LmChallengeResponse));
1739 if (_ptr_LmChallengeResponse) {
1740 NDR_PULL_ALLOC(ndr, r->LmChallengeResponse);
1741 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->LmChallengeResponse, _ptr_LmChallengeResponse));
1742 } else {
1743 r->LmChallengeResponse = NULL;
1745 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->NtChallengeResponseLen));
1746 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->NtChallengeResponseMaxLen));
1747 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_NtChallengeResponse));
1748 if (_ptr_NtChallengeResponse) {
1749 NDR_PULL_ALLOC(ndr, r->NtChallengeResponse);
1750 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->NtChallengeResponse, _ptr_NtChallengeResponse));
1751 } else {
1752 r->NtChallengeResponse = NULL;
1754 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->DomainNameLen));
1755 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->DomainNameMaxLen));
1757 uint32_t _flags_save_string = ndr->flags;
1758 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1759 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DomainName));
1760 if (_ptr_DomainName) {
1761 NDR_PULL_ALLOC(ndr, r->DomainName);
1762 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->DomainName, _ptr_DomainName));
1763 } else {
1764 r->DomainName = NULL;
1766 ndr->flags = _flags_save_string;
1768 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->UserNameLen));
1769 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->UserNameMaxLen));
1771 uint32_t _flags_save_string = ndr->flags;
1772 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1773 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_UserName));
1774 if (_ptr_UserName) {
1775 NDR_PULL_ALLOC(ndr, r->UserName);
1776 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->UserName, _ptr_UserName));
1777 } else {
1778 r->UserName = NULL;
1780 ndr->flags = _flags_save_string;
1782 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->WorkstationLen));
1783 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->WorkstationMaxLen));
1785 uint32_t _flags_save_string = ndr->flags;
1786 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1787 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Workstation));
1788 if (_ptr_Workstation) {
1789 NDR_PULL_ALLOC(ndr, r->Workstation);
1790 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->Workstation, _ptr_Workstation));
1791 } else {
1792 r->Workstation = NULL;
1794 ndr->flags = _flags_save_string;
1796 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->EncryptedRandomSessionKeyLen));
1797 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->EncryptedRandomSessionKeyMaxLen));
1798 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_EncryptedRandomSessionKey));
1799 if (_ptr_EncryptedRandomSessionKey) {
1800 NDR_PULL_ALLOC(ndr, r->EncryptedRandomSessionKey);
1801 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->EncryptedRandomSessionKey, _ptr_EncryptedRandomSessionKey));
1802 } else {
1803 r->EncryptedRandomSessionKey = NULL;
1805 NDR_CHECK(ndr_pull_NEGOTIATE(ndr, NDR_SCALARS, &r->NegotiateFlags));
1806 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
1807 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
1809 if (ndr_flags & NDR_BUFFERS) {
1810 if (r->LmChallengeResponse) {
1811 uint32_t _relative_save_offset;
1812 _relative_save_offset = ndr->offset;
1813 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->LmChallengeResponse));
1814 _mem_save_LmChallengeResponse_0 = NDR_PULL_GET_MEM_CTX(ndr);
1815 NDR_PULL_SET_MEM_CTX(ndr, r->LmChallengeResponse, 0);
1817 struct ndr_pull *_ndr_LmChallengeResponse;
1818 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_LmChallengeResponse, 0, r->LmChallengeResponseLen));
1819 NDR_CHECK(ndr_pull_set_switch_value(_ndr_LmChallengeResponse, r->LmChallengeResponse, r->LmChallengeResponseLen));
1820 NDR_CHECK(ndr_pull_ntlmssp_LM_RESPONSE(_ndr_LmChallengeResponse, NDR_SCALARS|NDR_BUFFERS, r->LmChallengeResponse));
1821 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_LmChallengeResponse, 0, r->LmChallengeResponseLen));
1823 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LmChallengeResponse_0, 0);
1824 ndr->offset = _relative_save_offset;
1826 if (r->NtChallengeResponse) {
1827 uint32_t _relative_save_offset;
1828 _relative_save_offset = ndr->offset;
1829 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->NtChallengeResponse));
1830 _mem_save_NtChallengeResponse_0 = NDR_PULL_GET_MEM_CTX(ndr);
1831 NDR_PULL_SET_MEM_CTX(ndr, r->NtChallengeResponse, 0);
1833 struct ndr_pull *_ndr_NtChallengeResponse;
1834 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_NtChallengeResponse, 0, r->NtChallengeResponseMaxLen));
1835 NDR_CHECK(ndr_pull_set_switch_value(_ndr_NtChallengeResponse, r->NtChallengeResponse, r->NtChallengeResponseLen));
1836 NDR_CHECK(ndr_pull_ntlmssp_NTLM_RESPONSE(_ndr_NtChallengeResponse, NDR_SCALARS|NDR_BUFFERS, r->NtChallengeResponse));
1837 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_NtChallengeResponse, 0, r->NtChallengeResponseMaxLen));
1839 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_NtChallengeResponse_0, 0);
1840 ndr->offset = _relative_save_offset;
1843 uint32_t _flags_save_string = ndr->flags;
1844 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1845 if (r->DomainName) {
1846 uint32_t _relative_save_offset;
1847 _relative_save_offset = ndr->offset;
1848 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->DomainName));
1849 _mem_save_DomainName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1850 NDR_PULL_SET_MEM_CTX(ndr, r->DomainName, 0);
1852 struct ndr_pull *_ndr_DomainName;
1853 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_DomainName, 0, r->DomainNameLen));
1854 NDR_CHECK(ndr_pull_string(_ndr_DomainName, NDR_SCALARS, &r->DomainName));
1855 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_DomainName, 0, r->DomainNameLen));
1857 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DomainName_0, 0);
1858 ndr->offset = _relative_save_offset;
1860 ndr->flags = _flags_save_string;
1863 uint32_t _flags_save_string = ndr->flags;
1864 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1865 if (r->UserName) {
1866 uint32_t _relative_save_offset;
1867 _relative_save_offset = ndr->offset;
1868 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->UserName));
1869 _mem_save_UserName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1870 NDR_PULL_SET_MEM_CTX(ndr, r->UserName, 0);
1872 struct ndr_pull *_ndr_UserName;
1873 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_UserName, 0, r->UserNameLen));
1874 NDR_CHECK(ndr_pull_string(_ndr_UserName, NDR_SCALARS, &r->UserName));
1875 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_UserName, 0, r->UserNameLen));
1877 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_UserName_0, 0);
1878 ndr->offset = _relative_save_offset;
1880 ndr->flags = _flags_save_string;
1883 uint32_t _flags_save_string = ndr->flags;
1884 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1885 if (r->Workstation) {
1886 uint32_t _relative_save_offset;
1887 _relative_save_offset = ndr->offset;
1888 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->Workstation));
1889 _mem_save_Workstation_0 = NDR_PULL_GET_MEM_CTX(ndr);
1890 NDR_PULL_SET_MEM_CTX(ndr, r->Workstation, 0);
1892 struct ndr_pull *_ndr_Workstation;
1893 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_Workstation, 0, r->WorkstationLen));
1894 NDR_CHECK(ndr_pull_string(_ndr_Workstation, NDR_SCALARS, &r->Workstation));
1895 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_Workstation, 0, r->WorkstationLen));
1897 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Workstation_0, 0);
1898 ndr->offset = _relative_save_offset;
1900 ndr->flags = _flags_save_string;
1902 if (r->EncryptedRandomSessionKey) {
1903 uint32_t _relative_save_offset;
1904 _relative_save_offset = ndr->offset;
1905 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->EncryptedRandomSessionKey));
1906 _mem_save_EncryptedRandomSessionKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
1907 NDR_PULL_SET_MEM_CTX(ndr, r->EncryptedRandomSessionKey, 0);
1909 struct ndr_pull *_ndr_EncryptedRandomSessionKey;
1910 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_EncryptedRandomSessionKey, 0, r->EncryptedRandomSessionKeyLen));
1911 NDR_CHECK(ndr_pull_DATA_BLOB(_ndr_EncryptedRandomSessionKey, NDR_SCALARS, r->EncryptedRandomSessionKey));
1912 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_EncryptedRandomSessionKey, 0, r->EncryptedRandomSessionKeyLen));
1914 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_EncryptedRandomSessionKey_0, 0);
1915 ndr->offset = _relative_save_offset;
1917 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
1919 ndr->flags = _flags_save_STRUCT;
1921 return NDR_ERR_SUCCESS;
1924 _PUBLIC_ void ndr_print_AUTHENTICATE_MESSAGE(struct ndr_print *ndr, const char *name, const struct AUTHENTICATE_MESSAGE *r)
1926 ndr_print_struct(ndr, name, "AUTHENTICATE_MESSAGE");
1928 uint32_t _flags_save_STRUCT = ndr->flags;
1929 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1930 ndr->depth++;
1931 ndr_print_string(ndr, "Signature", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?"NTLMSSP":r->Signature);
1932 ndr_print_ntlmssp_MessageType(ndr, "MessageType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NtLmAuthenticate:r->MessageType);
1933 ndr_print_uint16(ndr, "LmChallengeResponseLen", r->LmChallengeResponseLen);
1934 ndr_print_uint16(ndr, "LmChallengeResponseMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->LmChallengeResponseLen:r->LmChallengeResponseMaxLen);
1935 ndr_print_ptr(ndr, "LmChallengeResponse", r->LmChallengeResponse);
1936 ndr->depth++;
1937 if (r->LmChallengeResponse) {
1938 ndr_print_set_switch_value(ndr, r->LmChallengeResponse, r->LmChallengeResponseLen);
1939 ndr_print_ntlmssp_LM_RESPONSE(ndr, "LmChallengeResponse", r->LmChallengeResponse);
1941 ndr->depth--;
1942 ndr_print_uint16(ndr, "NtChallengeResponseLen", r->NtChallengeResponseLen);
1943 ndr_print_uint16(ndr, "NtChallengeResponseMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->NtChallengeResponseLen:r->NtChallengeResponseMaxLen);
1944 ndr_print_ptr(ndr, "NtChallengeResponse", r->NtChallengeResponse);
1945 ndr->depth++;
1946 if (r->NtChallengeResponse) {
1947 ndr_print_set_switch_value(ndr, r->NtChallengeResponse, r->NtChallengeResponseLen);
1948 ndr_print_ntlmssp_NTLM_RESPONSE(ndr, "NtChallengeResponse", r->NtChallengeResponse);
1950 ndr->depth--;
1951 ndr_print_uint16(ndr, "DomainNameLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName):r->DomainNameLen);
1952 ndr_print_uint16(ndr, "DomainNameMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->DomainNameLen:r->DomainNameMaxLen);
1953 ndr_print_ptr(ndr, "DomainName", r->DomainName);
1954 ndr->depth++;
1955 if (r->DomainName) {
1956 ndr_print_string(ndr, "DomainName", r->DomainName);
1958 ndr->depth--;
1959 ndr_print_uint16(ndr, "UserNameLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName):r->UserNameLen);
1960 ndr_print_uint16(ndr, "UserNameMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->UserNameLen:r->UserNameMaxLen);
1961 ndr_print_ptr(ndr, "UserName", r->UserName);
1962 ndr->depth++;
1963 if (r->UserName) {
1964 ndr_print_string(ndr, "UserName", r->UserName);
1966 ndr->depth--;
1967 ndr_print_uint16(ndr, "WorkstationLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation):r->WorkstationLen);
1968 ndr_print_uint16(ndr, "WorkstationMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->WorkstationLen:r->WorkstationMaxLen);
1969 ndr_print_ptr(ndr, "Workstation", r->Workstation);
1970 ndr->depth++;
1971 if (r->Workstation) {
1972 ndr_print_string(ndr, "Workstation", r->Workstation);
1974 ndr->depth--;
1975 ndr_print_uint16(ndr, "EncryptedRandomSessionKeyLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->EncryptedRandomSessionKey->length:r->EncryptedRandomSessionKeyLen);
1976 ndr_print_uint16(ndr, "EncryptedRandomSessionKeyMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->EncryptedRandomSessionKeyLen:r->EncryptedRandomSessionKeyMaxLen);
1977 ndr_print_ptr(ndr, "EncryptedRandomSessionKey", r->EncryptedRandomSessionKey);
1978 ndr->depth++;
1979 if (r->EncryptedRandomSessionKey) {
1980 ndr_print_DATA_BLOB(ndr, "EncryptedRandomSessionKey", *r->EncryptedRandomSessionKey);
1982 ndr->depth--;
1983 ndr_print_NEGOTIATE(ndr, "NegotiateFlags", r->NegotiateFlags);
1984 ndr_print_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION);
1985 ndr_print_ntlmssp_Version(ndr, "Version", &r->Version);
1986 ndr->depth--;
1987 ndr->flags = _flags_save_STRUCT;
1991 _PUBLIC_ enum ndr_err_code ndr_push_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_push *ndr, int ndr_flags, const struct NTLMSSP_MESSAGE_SIGNATURE *r)
1993 if (ndr_flags & NDR_SCALARS) {
1994 NDR_CHECK(ndr_push_align(ndr, 4));
1995 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, NTLMSSP_SIGN_VERSION));
1996 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->RandomPad));
1997 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->Checksum));
1998 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SeqNum));
2000 if (ndr_flags & NDR_BUFFERS) {
2002 return NDR_ERR_SUCCESS;
2005 _PUBLIC_ enum ndr_err_code ndr_pull_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_pull *ndr, int ndr_flags, struct NTLMSSP_MESSAGE_SIGNATURE *r)
2007 if (ndr_flags & NDR_SCALARS) {
2008 NDR_CHECK(ndr_pull_align(ndr, 4));
2009 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Version));
2010 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->RandomPad));
2011 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Checksum));
2012 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SeqNum));
2014 if (ndr_flags & NDR_BUFFERS) {
2016 return NDR_ERR_SUCCESS;
2019 _PUBLIC_ void ndr_print_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_print *ndr, const char *name, const struct NTLMSSP_MESSAGE_SIGNATURE *r)
2021 ndr_print_struct(ndr, name, "NTLMSSP_MESSAGE_SIGNATURE");
2022 ndr->depth++;
2023 ndr_print_uint32(ndr, "Version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NTLMSSP_SIGN_VERSION:r->Version);
2024 ndr_print_uint32(ndr, "RandomPad", r->RandomPad);
2025 ndr_print_uint32(ndr, "Checksum", r->Checksum);
2026 ndr_print_uint32(ndr, "SeqNum", r->SeqNum);
2027 ndr->depth--;
2030 _PUBLIC_ enum ndr_err_code ndr_push_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_push *ndr, int ndr_flags, const struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2 *r)
2033 uint32_t _flags_save_STRUCT = ndr->flags;
2034 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2035 if (ndr_flags & NDR_SCALARS) {
2036 NDR_CHECK(ndr_push_align(ndr, 4));
2037 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, NTLMSSP_SIGN_VERSION));
2038 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Checksum, 8));
2039 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SeqNum));
2041 if (ndr_flags & NDR_BUFFERS) {
2043 ndr->flags = _flags_save_STRUCT;
2045 return NDR_ERR_SUCCESS;
2048 _PUBLIC_ enum ndr_err_code ndr_pull_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_pull *ndr, int ndr_flags, struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2 *r)
2051 uint32_t _flags_save_STRUCT = ndr->flags;
2052 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2053 if (ndr_flags & NDR_SCALARS) {
2054 NDR_CHECK(ndr_pull_align(ndr, 4));
2055 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Version));
2056 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Checksum, 8));
2057 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SeqNum));
2059 if (ndr_flags & NDR_BUFFERS) {
2061 ndr->flags = _flags_save_STRUCT;
2063 return NDR_ERR_SUCCESS;
2066 _PUBLIC_ void ndr_print_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_print *ndr, const char *name, const struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2 *r)
2068 ndr_print_struct(ndr, name, "NTLMSSP_MESSAGE_SIGNATURE_NTLMv2");
2070 uint32_t _flags_save_STRUCT = ndr->flags;
2071 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2072 ndr->depth++;
2073 ndr_print_uint32(ndr, "Version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NTLMSSP_SIGN_VERSION:r->Version);
2074 ndr_print_array_uint8(ndr, "Checksum", r->Checksum, 8);
2075 ndr_print_uint32(ndr, "SeqNum", r->SeqNum);
2076 ndr->depth--;
2077 ndr->flags = _flags_save_STRUCT;
2081 static enum ndr_err_code ndr_push_decode_NEGOTIATE_MESSAGE(struct ndr_push *ndr, int flags, const struct decode_NEGOTIATE_MESSAGE *r)
2083 if (flags & NDR_IN) {
2084 NDR_CHECK(ndr_push_NEGOTIATE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.negotiate));
2086 if (flags & NDR_OUT) {
2088 return NDR_ERR_SUCCESS;
2091 static enum ndr_err_code ndr_pull_decode_NEGOTIATE_MESSAGE(struct ndr_pull *ndr, int flags, struct decode_NEGOTIATE_MESSAGE *r)
2093 if (flags & NDR_IN) {
2094 NDR_CHECK(ndr_pull_NEGOTIATE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.negotiate));
2096 if (flags & NDR_OUT) {
2098 return NDR_ERR_SUCCESS;
2101 _PUBLIC_ void ndr_print_decode_NEGOTIATE_MESSAGE(struct ndr_print *ndr, const char *name, int flags, const struct decode_NEGOTIATE_MESSAGE *r)
2103 ndr_print_struct(ndr, name, "decode_NEGOTIATE_MESSAGE");
2104 ndr->depth++;
2105 if (flags & NDR_SET_VALUES) {
2106 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2108 if (flags & NDR_IN) {
2109 ndr_print_struct(ndr, "in", "decode_NEGOTIATE_MESSAGE");
2110 ndr->depth++;
2111 ndr_print_NEGOTIATE_MESSAGE(ndr, "negotiate", &r->in.negotiate);
2112 ndr->depth--;
2114 if (flags & NDR_OUT) {
2115 ndr_print_struct(ndr, "out", "decode_NEGOTIATE_MESSAGE");
2116 ndr->depth++;
2117 ndr->depth--;
2119 ndr->depth--;
2122 static enum ndr_err_code ndr_push_decode_CHALLENGE_MESSAGE(struct ndr_push *ndr, int flags, const struct decode_CHALLENGE_MESSAGE *r)
2124 if (flags & NDR_IN) {
2125 NDR_CHECK(ndr_push_CHALLENGE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.challenge));
2127 if (flags & NDR_OUT) {
2129 return NDR_ERR_SUCCESS;
2132 static enum ndr_err_code ndr_pull_decode_CHALLENGE_MESSAGE(struct ndr_pull *ndr, int flags, struct decode_CHALLENGE_MESSAGE *r)
2134 if (flags & NDR_IN) {
2135 NDR_CHECK(ndr_pull_CHALLENGE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.challenge));
2137 if (flags & NDR_OUT) {
2139 return NDR_ERR_SUCCESS;
2142 _PUBLIC_ void ndr_print_decode_CHALLENGE_MESSAGE(struct ndr_print *ndr, const char *name, int flags, const struct decode_CHALLENGE_MESSAGE *r)
2144 ndr_print_struct(ndr, name, "decode_CHALLENGE_MESSAGE");
2145 ndr->depth++;
2146 if (flags & NDR_SET_VALUES) {
2147 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2149 if (flags & NDR_IN) {
2150 ndr_print_struct(ndr, "in", "decode_CHALLENGE_MESSAGE");
2151 ndr->depth++;
2152 ndr_print_CHALLENGE_MESSAGE(ndr, "challenge", &r->in.challenge);
2153 ndr->depth--;
2155 if (flags & NDR_OUT) {
2156 ndr_print_struct(ndr, "out", "decode_CHALLENGE_MESSAGE");
2157 ndr->depth++;
2158 ndr->depth--;
2160 ndr->depth--;
2163 static enum ndr_err_code ndr_push_decode_AUTHENTICATE_MESSAGE(struct ndr_push *ndr, int flags, const struct decode_AUTHENTICATE_MESSAGE *r)
2165 if (flags & NDR_IN) {
2166 NDR_CHECK(ndr_push_AUTHENTICATE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.authenticate));
2168 if (flags & NDR_OUT) {
2170 return NDR_ERR_SUCCESS;
2173 static enum ndr_err_code ndr_pull_decode_AUTHENTICATE_MESSAGE(struct ndr_pull *ndr, int flags, struct decode_AUTHENTICATE_MESSAGE *r)
2175 if (flags & NDR_IN) {
2176 NDR_CHECK(ndr_pull_AUTHENTICATE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.authenticate));
2178 if (flags & NDR_OUT) {
2180 return NDR_ERR_SUCCESS;
2183 _PUBLIC_ void ndr_print_decode_AUTHENTICATE_MESSAGE(struct ndr_print *ndr, const char *name, int flags, const struct decode_AUTHENTICATE_MESSAGE *r)
2185 ndr_print_struct(ndr, name, "decode_AUTHENTICATE_MESSAGE");
2186 ndr->depth++;
2187 if (flags & NDR_SET_VALUES) {
2188 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2190 if (flags & NDR_IN) {
2191 ndr_print_struct(ndr, "in", "decode_AUTHENTICATE_MESSAGE");
2192 ndr->depth++;
2193 ndr_print_AUTHENTICATE_MESSAGE(ndr, "authenticate", &r->in.authenticate);
2194 ndr->depth--;
2196 if (flags & NDR_OUT) {
2197 ndr_print_struct(ndr, "out", "decode_AUTHENTICATE_MESSAGE");
2198 ndr->depth++;
2199 ndr->depth--;
2201 ndr->depth--;
2204 static enum ndr_err_code ndr_push_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_push *ndr, int flags, const struct decode_NTLMv2_CLIENT_CHALLENGE *r)
2206 if (flags & NDR_IN) {
2207 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.challenge));
2209 if (flags & NDR_OUT) {
2211 return NDR_ERR_SUCCESS;
2214 static enum ndr_err_code ndr_pull_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_pull *ndr, int flags, struct decode_NTLMv2_CLIENT_CHALLENGE *r)
2216 if (flags & NDR_IN) {
2217 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.challenge));
2219 if (flags & NDR_OUT) {
2221 return NDR_ERR_SUCCESS;
2224 _PUBLIC_ void ndr_print_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_print *ndr, const char *name, int flags, const struct decode_NTLMv2_CLIENT_CHALLENGE *r)
2226 ndr_print_struct(ndr, name, "decode_NTLMv2_CLIENT_CHALLENGE");
2227 ndr->depth++;
2228 if (flags & NDR_SET_VALUES) {
2229 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2231 if (flags & NDR_IN) {
2232 ndr_print_struct(ndr, "in", "decode_NTLMv2_CLIENT_CHALLENGE");
2233 ndr->depth++;
2234 ndr_print_NTLMv2_CLIENT_CHALLENGE(ndr, "challenge", &r->in.challenge);
2235 ndr->depth--;
2237 if (flags & NDR_OUT) {
2238 ndr_print_struct(ndr, "out", "decode_NTLMv2_CLIENT_CHALLENGE");
2239 ndr->depth++;
2240 ndr->depth--;
2242 ndr->depth--;
2245 static const struct ndr_interface_call ntlmssp_calls[] = {
2247 "decode_NEGOTIATE_MESSAGE",
2248 sizeof(struct decode_NEGOTIATE_MESSAGE),
2249 (ndr_push_flags_fn_t) ndr_push_decode_NEGOTIATE_MESSAGE,
2250 (ndr_pull_flags_fn_t) ndr_pull_decode_NEGOTIATE_MESSAGE,
2251 (ndr_print_function_t) ndr_print_decode_NEGOTIATE_MESSAGE,
2252 false,
2255 "decode_CHALLENGE_MESSAGE",
2256 sizeof(struct decode_CHALLENGE_MESSAGE),
2257 (ndr_push_flags_fn_t) ndr_push_decode_CHALLENGE_MESSAGE,
2258 (ndr_pull_flags_fn_t) ndr_pull_decode_CHALLENGE_MESSAGE,
2259 (ndr_print_function_t) ndr_print_decode_CHALLENGE_MESSAGE,
2260 false,
2263 "decode_AUTHENTICATE_MESSAGE",
2264 sizeof(struct decode_AUTHENTICATE_MESSAGE),
2265 (ndr_push_flags_fn_t) ndr_push_decode_AUTHENTICATE_MESSAGE,
2266 (ndr_pull_flags_fn_t) ndr_pull_decode_AUTHENTICATE_MESSAGE,
2267 (ndr_print_function_t) ndr_print_decode_AUTHENTICATE_MESSAGE,
2268 false,
2271 "decode_NTLMv2_CLIENT_CHALLENGE",
2272 sizeof(struct decode_NTLMv2_CLIENT_CHALLENGE),
2273 (ndr_push_flags_fn_t) ndr_push_decode_NTLMv2_CLIENT_CHALLENGE,
2274 (ndr_pull_flags_fn_t) ndr_pull_decode_NTLMv2_CLIENT_CHALLENGE,
2275 (ndr_print_function_t) ndr_print_decode_NTLMv2_CLIENT_CHALLENGE,
2276 false,
2278 { NULL, 0, NULL, NULL, NULL, false }
2281 static const char * const ntlmssp_endpoint_strings[] = {
2282 "ncacn_np:[\\pipe\\ntlmssp]",
2285 static const struct ndr_interface_string_array ntlmssp_endpoints = {
2286 .count = 1,
2287 .names = ntlmssp_endpoint_strings
2290 static const char * const ntlmssp_authservice_strings[] = {
2291 "host",
2294 static const struct ndr_interface_string_array ntlmssp_authservices = {
2295 .count = 1,
2296 .names = ntlmssp_authservice_strings
2300 const struct ndr_interface_table ndr_table_ntlmssp = {
2301 .name = "ntlmssp",
2302 .syntax_id = {
2303 {0x6e746c6d,0x7373,0x700a,{0x00,0x00},{0x00,0x00,0x00,0x00}},
2304 NDR_NTLMSSP_VERSION
2306 .helpstring = NDR_NTLMSSP_HELPSTRING,
2307 .num_calls = 4,
2308 .calls = ntlmssp_calls,
2309 .endpoints = &ntlmssp_endpoints,
2310 .authservices = &ntlmssp_authservices