rerun 'make samba3-idl'
[Samba.git] / librpc / gen_ndr / ndr_ntlmssp.c
blob0d54e4fb08b7d870585bb8c924c4eaad17897d02
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));
164 NDR_CHECK(ndr_push_trailer_align(ndr, 2));
166 if (ndr_flags & NDR_BUFFERS) {
168 return NDR_ERR_SUCCESS;
171 static enum ndr_err_code ndr_pull_VERSION(struct ndr_pull *ndr, int ndr_flags, struct VERSION *r)
173 uint32_t size_Reserved_0 = 0;
174 if (ndr_flags & NDR_SCALARS) {
175 NDR_CHECK(ndr_pull_align(ndr, 2));
176 NDR_CHECK(ndr_pull_ntlmssp_WindowsMajorVersion(ndr, NDR_SCALARS, &r->ProductMajorVersion));
177 NDR_CHECK(ndr_pull_ntlmssp_WindowsMinorVersion(ndr, NDR_SCALARS, &r->ProductMinorVersion));
178 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->ProductBuild));
179 size_Reserved_0 = 3;
180 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Reserved, size_Reserved_0));
181 NDR_CHECK(ndr_pull_ntlmssp_NTLMRevisionCurrent(ndr, NDR_SCALARS, &r->NTLMRevisionCurrent));
182 NDR_CHECK(ndr_pull_trailer_align(ndr, 2));
184 if (ndr_flags & NDR_BUFFERS) {
186 return NDR_ERR_SUCCESS;
189 _PUBLIC_ void ndr_print_VERSION(struct ndr_print *ndr, const char *name, const struct VERSION *r)
191 ndr_print_struct(ndr, name, "VERSION");
192 ndr->depth++;
193 ndr_print_ntlmssp_WindowsMajorVersion(ndr, "ProductMajorVersion", r->ProductMajorVersion);
194 ndr_print_ntlmssp_WindowsMinorVersion(ndr, "ProductMinorVersion", r->ProductMinorVersion);
195 ndr_print_uint16(ndr, "ProductBuild", r->ProductBuild);
196 ndr_print_array_uint8(ndr, "Reserved", r->Reserved, 3);
197 ndr_print_ntlmssp_NTLMRevisionCurrent(ndr, "NTLMRevisionCurrent", r->NTLMRevisionCurrent);
198 ndr->depth--;
201 static enum ndr_err_code ndr_push_ntlmssp_Version(struct ndr_push *ndr, int ndr_flags, const union ntlmssp_Version *r)
203 if (ndr_flags & NDR_SCALARS) {
204 int level = ndr_push_get_switch_value(ndr, r);
205 NDR_CHECK(ndr_push_union_align(ndr, 2));
206 switch (level) {
207 case NTLMSSP_NEGOTIATE_VERSION: {
208 NDR_CHECK(ndr_push_VERSION(ndr, NDR_SCALARS, &r->version));
209 break; }
211 default: {
212 break; }
216 if (ndr_flags & NDR_BUFFERS) {
217 int level = ndr_push_get_switch_value(ndr, r);
218 switch (level) {
219 case NTLMSSP_NEGOTIATE_VERSION:
220 break;
222 default:
223 break;
227 return NDR_ERR_SUCCESS;
230 static enum ndr_err_code ndr_pull_ntlmssp_Version(struct ndr_pull *ndr, int ndr_flags, union ntlmssp_Version *r)
232 int level;
233 level = ndr_pull_get_switch_value(ndr, r);
234 if (ndr_flags & NDR_SCALARS) {
235 NDR_CHECK(ndr_pull_union_align(ndr, 2));
236 switch (level) {
237 case NTLMSSP_NEGOTIATE_VERSION: {
238 NDR_CHECK(ndr_pull_VERSION(ndr, NDR_SCALARS, &r->version));
239 break; }
241 default: {
242 break; }
246 if (ndr_flags & NDR_BUFFERS) {
247 switch (level) {
248 case NTLMSSP_NEGOTIATE_VERSION:
249 break;
251 default:
252 break;
256 return NDR_ERR_SUCCESS;
259 _PUBLIC_ enum ndr_err_code ndr_push_NEGOTIATE_MESSAGE(struct ndr_push *ndr, int ndr_flags, const struct NEGOTIATE_MESSAGE *r)
261 if (ndr_flags & NDR_SCALARS) {
262 NDR_CHECK(ndr_push_align(ndr, 5));
263 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS));
264 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr, NDR_SCALARS, NtLmNegotiate));
265 NDR_CHECK(ndr_push_NEGOTIATE(ndr, NDR_SCALARS, r->NegotiateFlags));
266 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen(r->DomainName)));
267 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen(r->DomainName)));
269 uint32_t _flags_save_string = ndr->flags;
270 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
271 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->DomainName));
272 ndr->flags = _flags_save_string;
274 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen(r->Workstation)));
275 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen(r->Workstation)));
277 uint32_t _flags_save_string = ndr->flags;
278 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
279 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->Workstation));
280 ndr->flags = _flags_save_string;
282 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
283 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
284 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
286 if (ndr_flags & NDR_BUFFERS) {
288 uint32_t _flags_save_string = ndr->flags;
289 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
290 if (r->DomainName) {
291 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->DomainName));
293 struct ndr_push *_ndr_DomainName;
294 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_DomainName, 0, strlen(r->DomainName)));
295 NDR_CHECK(ndr_push_string(_ndr_DomainName, NDR_SCALARS, r->DomainName));
296 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_DomainName, 0, strlen(r->DomainName)));
298 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->DomainName));
300 ndr->flags = _flags_save_string;
303 uint32_t _flags_save_string = ndr->flags;
304 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
305 if (r->Workstation) {
306 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->Workstation));
308 struct ndr_push *_ndr_Workstation;
309 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_Workstation, 0, strlen(r->Workstation)));
310 NDR_CHECK(ndr_push_string(_ndr_Workstation, NDR_SCALARS, r->Workstation));
311 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_Workstation, 0, strlen(r->Workstation)));
313 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->Workstation));
315 ndr->flags = _flags_save_string;
317 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
319 return NDR_ERR_SUCCESS;
322 _PUBLIC_ enum ndr_err_code ndr_pull_NEGOTIATE_MESSAGE(struct ndr_pull *ndr, int ndr_flags, struct NEGOTIATE_MESSAGE *r)
324 uint32_t size_Signature_0 = 0;
325 uint32_t _ptr_DomainName;
326 TALLOC_CTX *_mem_save_DomainName_0;
327 uint32_t _ptr_Workstation;
328 TALLOC_CTX *_mem_save_Workstation_0;
329 if (ndr_flags & NDR_SCALARS) {
330 NDR_CHECK(ndr_pull_align(ndr, 5));
331 size_Signature_0 = 8;
332 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->Signature, size_Signature_0, sizeof(uint8_t), CH_DOS));
333 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr, NDR_SCALARS, &r->MessageType));
334 NDR_CHECK(ndr_pull_NEGOTIATE(ndr, NDR_SCALARS, &r->NegotiateFlags));
335 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->DomainNameLen));
336 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->DomainNameMaxLen));
338 uint32_t _flags_save_string = ndr->flags;
339 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
340 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DomainName));
341 if (_ptr_DomainName) {
342 NDR_PULL_ALLOC(ndr, r->DomainName);
343 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->DomainName, _ptr_DomainName));
344 } else {
345 r->DomainName = NULL;
347 ndr->flags = _flags_save_string;
349 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->WorkstationLen));
350 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->WorkstationMaxLen));
352 uint32_t _flags_save_string = ndr->flags;
353 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
354 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Workstation));
355 if (_ptr_Workstation) {
356 NDR_PULL_ALLOC(ndr, r->Workstation);
357 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->Workstation, _ptr_Workstation));
358 } else {
359 r->Workstation = NULL;
361 ndr->flags = _flags_save_string;
363 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
364 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
365 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
367 if (ndr_flags & NDR_BUFFERS) {
369 uint32_t _flags_save_string = ndr->flags;
370 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
371 if (r->DomainName) {
372 uint32_t _relative_save_offset;
373 _relative_save_offset = ndr->offset;
374 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->DomainName));
375 _mem_save_DomainName_0 = NDR_PULL_GET_MEM_CTX(ndr);
376 NDR_PULL_SET_MEM_CTX(ndr, r->DomainName, 0);
378 struct ndr_pull *_ndr_DomainName;
379 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_DomainName, 0, r->DomainNameLen));
380 NDR_CHECK(ndr_pull_string(_ndr_DomainName, NDR_SCALARS, &r->DomainName));
381 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_DomainName, 0, r->DomainNameLen));
383 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DomainName_0, 0);
384 ndr->offset = _relative_save_offset;
386 ndr->flags = _flags_save_string;
389 uint32_t _flags_save_string = ndr->flags;
390 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM));
391 if (r->Workstation) {
392 uint32_t _relative_save_offset;
393 _relative_save_offset = ndr->offset;
394 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->Workstation));
395 _mem_save_Workstation_0 = NDR_PULL_GET_MEM_CTX(ndr);
396 NDR_PULL_SET_MEM_CTX(ndr, r->Workstation, 0);
398 struct ndr_pull *_ndr_Workstation;
399 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_Workstation, 0, r->WorkstationLen));
400 NDR_CHECK(ndr_pull_string(_ndr_Workstation, NDR_SCALARS, &r->Workstation));
401 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_Workstation, 0, r->WorkstationLen));
403 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Workstation_0, 0);
404 ndr->offset = _relative_save_offset;
406 ndr->flags = _flags_save_string;
408 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
410 return NDR_ERR_SUCCESS;
413 _PUBLIC_ void ndr_print_NEGOTIATE_MESSAGE(struct ndr_print *ndr, const char *name, const struct NEGOTIATE_MESSAGE *r)
415 ndr_print_struct(ndr, name, "NEGOTIATE_MESSAGE");
416 ndr->depth++;
417 ndr_print_string(ndr, "Signature", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?"NTLMSSP":r->Signature);
418 ndr_print_ntlmssp_MessageType(ndr, "MessageType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NtLmNegotiate:r->MessageType);
419 ndr_print_NEGOTIATE(ndr, "NegotiateFlags", r->NegotiateFlags);
420 ndr_print_uint16(ndr, "DomainNameLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen(r->DomainName):r->DomainNameLen);
421 ndr_print_uint16(ndr, "DomainNameMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->DomainNameLen:r->DomainNameMaxLen);
422 ndr_print_ptr(ndr, "DomainName", r->DomainName);
423 ndr->depth++;
424 if (r->DomainName) {
425 ndr_print_string(ndr, "DomainName", r->DomainName);
427 ndr->depth--;
428 ndr_print_uint16(ndr, "WorkstationLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen(r->Workstation):r->WorkstationLen);
429 ndr_print_uint16(ndr, "WorkstationMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->WorkstationLen:r->WorkstationMaxLen);
430 ndr_print_ptr(ndr, "Workstation", r->Workstation);
431 ndr->depth++;
432 if (r->Workstation) {
433 ndr_print_string(ndr, "Workstation", r->Workstation);
435 ndr->depth--;
436 ndr_print_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION);
437 ndr_print_ntlmssp_Version(ndr, "Version", &r->Version);
438 ndr->depth--;
441 static enum ndr_err_code ndr_push_ntlmssp_AvId(struct ndr_push *ndr, int ndr_flags, enum ntlmssp_AvId r)
443 NDR_CHECK(ndr_push_enum_uint1632(ndr, NDR_SCALARS, r));
444 return NDR_ERR_SUCCESS;
447 static enum ndr_err_code ndr_pull_ntlmssp_AvId(struct ndr_pull *ndr, int ndr_flags, enum ntlmssp_AvId *r)
449 uint16_t v;
450 NDR_CHECK(ndr_pull_enum_uint1632(ndr, NDR_SCALARS, &v));
451 *r = v;
452 return NDR_ERR_SUCCESS;
455 _PUBLIC_ void ndr_print_ntlmssp_AvId(struct ndr_print *ndr, const char *name, enum ntlmssp_AvId r)
457 const char *val = NULL;
459 switch (r) {
460 case MsvAvEOL: val = "MsvAvEOL"; break;
461 case MsvAvNbComputerName: val = "MsvAvNbComputerName"; break;
462 case MsvAvNbDomainName: val = "MsvAvNbDomainName"; break;
463 case MsvAvDnsComputerName: val = "MsvAvDnsComputerName"; break;
464 case MsvAvDnsDomainName: val = "MsvAvDnsDomainName"; break;
465 case MsvAvDnsTreeName: val = "MsvAvDnsTreeName"; break;
466 case MsvAvFlags: val = "MsvAvFlags"; break;
467 case MsvAvTimestamp: val = "MsvAvTimestamp"; break;
468 case MsAvRestrictions: val = "MsAvRestrictions"; break;
469 case MsvAvTargetName: val = "MsvAvTargetName"; break;
470 case MsvChannelBindings: val = "MsvChannelBindings"; break;
472 ndr_print_enum(ndr, name, "ENUM", val, r);
475 static enum ndr_err_code ndr_push_Restriction_Encoding(struct ndr_push *ndr, int ndr_flags, const struct Restriction_Encoding *r)
477 if (ndr_flags & NDR_SCALARS) {
478 NDR_CHECK(ndr_push_align(ndr, 4));
479 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->Size));
480 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
481 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->IntegrityLevel));
482 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SubjectIntegrityLevel));
483 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->MachineId, 32));
484 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
486 if (ndr_flags & NDR_BUFFERS) {
488 return NDR_ERR_SUCCESS;
491 static enum ndr_err_code ndr_pull_Restriction_Encoding(struct ndr_pull *ndr, int ndr_flags, struct Restriction_Encoding *r)
493 uint32_t size_MachineId_0 = 0;
494 if (ndr_flags & NDR_SCALARS) {
495 NDR_CHECK(ndr_pull_align(ndr, 4));
496 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Size));
497 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Z4));
498 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->IntegrityLevel));
499 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SubjectIntegrityLevel));
500 size_MachineId_0 = 32;
501 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->MachineId, size_MachineId_0));
502 NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
504 if (ndr_flags & NDR_BUFFERS) {
506 return NDR_ERR_SUCCESS;
509 _PUBLIC_ void ndr_print_Restriction_Encoding(struct ndr_print *ndr, const char *name, const struct Restriction_Encoding *r)
511 ndr_print_struct(ndr, name, "Restriction_Encoding");
512 ndr->depth++;
513 ndr_print_uint32(ndr, "Size", r->Size);
514 ndr_print_uint32(ndr, "Z4", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->Z4);
515 ndr_print_uint32(ndr, "IntegrityLevel", r->IntegrityLevel);
516 ndr_print_uint32(ndr, "SubjectIntegrityLevel", r->SubjectIntegrityLevel);
517 ndr_print_array_uint8(ndr, "MachineId", r->MachineId, 32);
518 ndr->depth--;
521 static enum ndr_err_code ndr_push_ntlmssp_AvFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
523 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
524 return NDR_ERR_SUCCESS;
527 static enum ndr_err_code ndr_pull_ntlmssp_AvFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
529 uint32_t v;
530 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
531 *r = v;
532 return NDR_ERR_SUCCESS;
535 _PUBLIC_ void ndr_print_ntlmssp_AvFlags(struct ndr_print *ndr, const char *name, uint32_t r)
537 ndr_print_uint32(ndr, name, r);
538 ndr->depth++;
539 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_AVFLAG_CONSTRAINTED_ACCOUNT", NTLMSSP_AVFLAG_CONSTRAINTED_ACCOUNT, r);
540 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NTLMSSP_AVFLAG_MIC_IN_AUTHENTICATE_MESSAGE", NTLMSSP_AVFLAG_MIC_IN_AUTHENTICATE_MESSAGE, r);
541 ndr->depth--;
544 static enum ndr_err_code ndr_push_ntlmssp_AvValue(struct ndr_push *ndr, int ndr_flags, const union ntlmssp_AvValue *r)
547 uint32_t _flags_save_UNION = ndr->flags;
548 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
549 if (ndr_flags & NDR_SCALARS) {
550 int level = ndr_push_get_switch_value(ndr, r);
551 NDR_CHECK(ndr_push_union_align(ndr, 4));
552 switch (level) {
553 case MsvAvEOL: {
554 break; }
556 case MsvAvNbComputerName: {
558 uint32_t _flags_save_string = ndr->flags;
559 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
560 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvNbComputerName));
561 ndr->flags = _flags_save_string;
563 break; }
565 case MsvAvNbDomainName: {
567 uint32_t _flags_save_string = ndr->flags;
568 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
569 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvNbDomainName));
570 ndr->flags = _flags_save_string;
572 break; }
574 case MsvAvDnsComputerName: {
576 uint32_t _flags_save_string = ndr->flags;
577 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
578 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvDnsComputerName));
579 ndr->flags = _flags_save_string;
581 break; }
583 case MsvAvDnsDomainName: {
585 uint32_t _flags_save_string = ndr->flags;
586 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
587 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvDnsDomainName));
588 ndr->flags = _flags_save_string;
590 break; }
592 case MsvAvDnsTreeName: {
594 uint32_t _flags_save_string = ndr->flags;
595 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
596 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvDnsTreeName));
597 ndr->flags = _flags_save_string;
599 break; }
601 case MsvAvFlags: {
602 NDR_CHECK(ndr_push_ntlmssp_AvFlags(ndr, NDR_SCALARS, r->AvFlags));
603 break; }
605 case MsvAvTimestamp: {
606 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->AvTimestamp));
607 break; }
609 case MsAvRestrictions: {
610 NDR_CHECK(ndr_push_Restriction_Encoding(ndr, NDR_SCALARS, &r->AvRestrictions));
611 break; }
613 case MsvAvTargetName: {
615 uint32_t _flags_save_string = ndr->flags;
616 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
617 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->AvTargetName));
618 ndr->flags = _flags_save_string;
620 break; }
622 case MsvChannelBindings: {
623 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->ChannelBindings, 16));
624 break; }
626 default: {
628 uint32_t _flags_save_DATA_BLOB = ndr->flags;
629 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
630 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->blob));
631 ndr->flags = _flags_save_DATA_BLOB;
633 break; }
637 if (ndr_flags & NDR_BUFFERS) {
638 int level = ndr_push_get_switch_value(ndr, r);
639 switch (level) {
640 case MsvAvEOL:
641 break;
643 case MsvAvNbComputerName:
644 break;
646 case MsvAvNbDomainName:
647 break;
649 case MsvAvDnsComputerName:
650 break;
652 case MsvAvDnsDomainName:
653 break;
655 case MsvAvDnsTreeName:
656 break;
658 case MsvAvFlags:
659 break;
661 case MsvAvTimestamp:
662 break;
664 case MsAvRestrictions:
665 break;
667 case MsvAvTargetName:
668 break;
670 case MsvChannelBindings:
671 break;
673 default:
674 break;
678 ndr->flags = _flags_save_UNION;
680 return NDR_ERR_SUCCESS;
683 static enum ndr_err_code ndr_pull_ntlmssp_AvValue(struct ndr_pull *ndr, int ndr_flags, union ntlmssp_AvValue *r)
685 int level;
686 uint32_t size_ChannelBindings_0 = 0;
688 uint32_t _flags_save_UNION = ndr->flags;
689 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
690 level = ndr_pull_get_switch_value(ndr, r);
691 if (ndr_flags & NDR_SCALARS) {
692 NDR_CHECK(ndr_pull_union_align(ndr, 4));
693 switch (level) {
694 case MsvAvEOL: {
695 break; }
697 case MsvAvNbComputerName: {
699 uint32_t _flags_save_string = ndr->flags;
700 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
701 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvNbComputerName));
702 ndr->flags = _flags_save_string;
704 break; }
706 case MsvAvNbDomainName: {
708 uint32_t _flags_save_string = ndr->flags;
709 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
710 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvNbDomainName));
711 ndr->flags = _flags_save_string;
713 break; }
715 case MsvAvDnsComputerName: {
717 uint32_t _flags_save_string = ndr->flags;
718 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
719 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvDnsComputerName));
720 ndr->flags = _flags_save_string;
722 break; }
724 case MsvAvDnsDomainName: {
726 uint32_t _flags_save_string = ndr->flags;
727 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
728 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvDnsDomainName));
729 ndr->flags = _flags_save_string;
731 break; }
733 case MsvAvDnsTreeName: {
735 uint32_t _flags_save_string = ndr->flags;
736 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
737 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvDnsTreeName));
738 ndr->flags = _flags_save_string;
740 break; }
742 case MsvAvFlags: {
743 NDR_CHECK(ndr_pull_ntlmssp_AvFlags(ndr, NDR_SCALARS, &r->AvFlags));
744 break; }
746 case MsvAvTimestamp: {
747 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->AvTimestamp));
748 break; }
750 case MsAvRestrictions: {
751 NDR_CHECK(ndr_pull_Restriction_Encoding(ndr, NDR_SCALARS, &r->AvRestrictions));
752 break; }
754 case MsvAvTargetName: {
756 uint32_t _flags_save_string = ndr->flags;
757 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE));
758 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->AvTargetName));
759 ndr->flags = _flags_save_string;
761 break; }
763 case MsvChannelBindings: {
764 size_ChannelBindings_0 = 16;
765 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->ChannelBindings, size_ChannelBindings_0));
766 break; }
768 default: {
770 uint32_t _flags_save_DATA_BLOB = ndr->flags;
771 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
772 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->blob));
773 ndr->flags = _flags_save_DATA_BLOB;
775 break; }
779 if (ndr_flags & NDR_BUFFERS) {
780 switch (level) {
781 case MsvAvEOL:
782 break;
784 case MsvAvNbComputerName:
785 break;
787 case MsvAvNbDomainName:
788 break;
790 case MsvAvDnsComputerName:
791 break;
793 case MsvAvDnsDomainName:
794 break;
796 case MsvAvDnsTreeName:
797 break;
799 case MsvAvFlags:
800 break;
802 case MsvAvTimestamp:
803 break;
805 case MsAvRestrictions:
806 break;
808 case MsvAvTargetName:
809 break;
811 case MsvChannelBindings:
812 break;
814 default:
815 break;
819 ndr->flags = _flags_save_UNION;
821 return NDR_ERR_SUCCESS;
824 _PUBLIC_ void ndr_print_ntlmssp_AvValue(struct ndr_print *ndr, const char *name, const union ntlmssp_AvValue *r)
826 int level;
828 uint32_t _flags_save_UNION = ndr->flags;
829 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
830 level = ndr_print_get_switch_value(ndr, r);
831 ndr_print_union(ndr, name, level, "ntlmssp_AvValue");
832 switch (level) {
833 case MsvAvEOL:
834 break;
836 case MsvAvNbComputerName:
837 ndr_print_string(ndr, "AvNbComputerName", r->AvNbComputerName);
838 break;
840 case MsvAvNbDomainName:
841 ndr_print_string(ndr, "AvNbDomainName", r->AvNbDomainName);
842 break;
844 case MsvAvDnsComputerName:
845 ndr_print_string(ndr, "AvDnsComputerName", r->AvDnsComputerName);
846 break;
848 case MsvAvDnsDomainName:
849 ndr_print_string(ndr, "AvDnsDomainName", r->AvDnsDomainName);
850 break;
852 case MsvAvDnsTreeName:
853 ndr_print_string(ndr, "AvDnsTreeName", r->AvDnsTreeName);
854 break;
856 case MsvAvFlags:
857 ndr_print_ntlmssp_AvFlags(ndr, "AvFlags", r->AvFlags);
858 break;
860 case MsvAvTimestamp:
861 ndr_print_NTTIME(ndr, "AvTimestamp", r->AvTimestamp);
862 break;
864 case MsAvRestrictions:
865 ndr_print_Restriction_Encoding(ndr, "AvRestrictions", &r->AvRestrictions);
866 break;
868 case MsvAvTargetName:
869 ndr_print_string(ndr, "AvTargetName", r->AvTargetName);
870 break;
872 case MsvChannelBindings:
873 ndr_print_array_uint8(ndr, "ChannelBindings", r->ChannelBindings, 16);
874 break;
876 default:
877 ndr_print_DATA_BLOB(ndr, "blob", r->blob);
878 break;
881 ndr->flags = _flags_save_UNION;
885 static size_t ndr_size_ntlmssp_AvValue(const union ntlmssp_AvValue *r, uint32_t level, struct smb_iconv_convenience *ic, int flags)
887 flags |= LIBNDR_FLAG_NOALIGN;
888 return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_ntlmssp_AvValue, ic);
891 _PUBLIC_ enum ndr_err_code ndr_push_AV_PAIR(struct ndr_push *ndr, int ndr_flags, const struct AV_PAIR *r)
894 uint32_t _flags_save_STRUCT = ndr->flags;
895 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
896 if (ndr_flags & NDR_SCALARS) {
897 NDR_CHECK(ndr_push_align(ndr, 4));
898 NDR_CHECK(ndr_push_ntlmssp_AvId(ndr, NDR_SCALARS, r->AvId));
899 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_size_ntlmssp_AvValue(&r->Value, r->AvId, ndr->iconv_convenience, 0)));
901 struct ndr_push *_ndr_Value;
902 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_Value, 0, ndr_size_ntlmssp_AvValue(&r->Value, r->AvId, ndr->iconv_convenience, 0)));
903 NDR_CHECK(ndr_push_set_switch_value(_ndr_Value, &r->Value, r->AvId));
904 NDR_CHECK(ndr_push_ntlmssp_AvValue(_ndr_Value, NDR_SCALARS|NDR_BUFFERS, &r->Value));
905 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_Value, 0, ndr_size_ntlmssp_AvValue(&r->Value, r->AvId, ndr->iconv_convenience, 0)));
907 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
909 if (ndr_flags & NDR_BUFFERS) {
911 ndr->flags = _flags_save_STRUCT;
913 return NDR_ERR_SUCCESS;
916 _PUBLIC_ enum ndr_err_code ndr_pull_AV_PAIR(struct ndr_pull *ndr, int ndr_flags, struct AV_PAIR *r)
919 uint32_t _flags_save_STRUCT = ndr->flags;
920 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
921 if (ndr_flags & NDR_SCALARS) {
922 NDR_CHECK(ndr_pull_align(ndr, 4));
923 NDR_CHECK(ndr_pull_ntlmssp_AvId(ndr, NDR_SCALARS, &r->AvId));
924 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->AvLen));
926 struct ndr_pull *_ndr_Value;
927 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_Value, 0, r->AvLen));
928 NDR_CHECK(ndr_pull_set_switch_value(_ndr_Value, &r->Value, r->AvId));
929 NDR_CHECK(ndr_pull_ntlmssp_AvValue(_ndr_Value, NDR_SCALARS|NDR_BUFFERS, &r->Value));
930 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_Value, 0, r->AvLen));
932 NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
934 if (ndr_flags & NDR_BUFFERS) {
936 ndr->flags = _flags_save_STRUCT;
938 return NDR_ERR_SUCCESS;
941 _PUBLIC_ void ndr_print_AV_PAIR(struct ndr_print *ndr, const char *name, const struct AV_PAIR *r)
943 ndr_print_struct(ndr, name, "AV_PAIR");
945 uint32_t _flags_save_STRUCT = ndr->flags;
946 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
947 ndr->depth++;
948 ndr_print_ntlmssp_AvId(ndr, "AvId", r->AvId);
949 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);
950 ndr_print_set_switch_value(ndr, &r->Value, r->AvId);
951 ndr_print_ntlmssp_AvValue(ndr, "Value", &r->Value);
952 ndr->depth--;
953 ndr->flags = _flags_save_STRUCT;
957 _PUBLIC_ void ndr_print_AV_PAIR_LIST(struct ndr_print *ndr, const char *name, const struct AV_PAIR_LIST *r)
959 uint32_t cntr_pair_0;
960 ndr_print_struct(ndr, name, "AV_PAIR_LIST");
962 uint32_t _flags_save_STRUCT = ndr->flags;
963 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
964 ndr->depth++;
965 ndr_print_uint32(ndr, "count", r->count);
966 ndr->print(ndr, "%s: ARRAY(%d)", "pair", (int)r->count);
967 ndr->depth++;
968 for (cntr_pair_0=0;cntr_pair_0<r->count;cntr_pair_0++) {
969 char *idx_0=NULL;
970 if (asprintf(&idx_0, "[%d]", cntr_pair_0) != -1) {
971 ndr_print_AV_PAIR(ndr, "pair", &r->pair[cntr_pair_0]);
972 free(idx_0);
975 ndr->depth--;
976 ndr->depth--;
977 ndr->flags = _flags_save_STRUCT;
981 static size_t ndr_size_AV_PAIR_LIST(const struct AV_PAIR_LIST *r, struct smb_iconv_convenience *ic, int flags)
983 flags |= LIBNDR_FLAG_NOALIGN;
984 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_AV_PAIR_LIST, ic);
987 _PUBLIC_ enum ndr_err_code ndr_push_CHALLENGE_MESSAGE(struct ndr_push *ndr, int ndr_flags, const struct CHALLENGE_MESSAGE *r)
990 uint32_t _flags_save_STRUCT = ndr->flags;
991 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
992 if (ndr_flags & NDR_SCALARS) {
993 NDR_CHECK(ndr_push_align(ndr, 5));
994 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS));
995 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr, NDR_SCALARS, NtLmChallenge));
996 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName)));
997 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName)));
999 uint32_t _flags_save_string = ndr->flags;
1000 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1001 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->TargetName));
1002 ndr->flags = _flags_save_string;
1004 NDR_CHECK(ndr_push_NEGOTIATE(ndr, NDR_SCALARS, r->NegotiateFlags));
1005 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->ServerChallenge, 8));
1006 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Reserved, 8));
1007 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_size_AV_PAIR_LIST(r->TargetInfo, ndr->iconv_convenience, ndr->flags)));
1008 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_size_AV_PAIR_LIST(r->TargetInfo, ndr->iconv_convenience, ndr->flags)));
1009 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->TargetInfo));
1010 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
1011 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
1012 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
1014 if (ndr_flags & NDR_BUFFERS) {
1016 uint32_t _flags_save_string = ndr->flags;
1017 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1018 if (r->TargetName) {
1019 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->TargetName));
1021 struct ndr_push *_ndr_TargetName;
1022 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_TargetName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName)));
1023 NDR_CHECK(ndr_push_string(_ndr_TargetName, NDR_SCALARS, r->TargetName));
1024 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_TargetName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName)));
1026 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->TargetName));
1028 ndr->flags = _flags_save_string;
1030 if (r->TargetInfo) {
1031 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->TargetInfo));
1033 struct ndr_push *_ndr_TargetInfo;
1034 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_TargetInfo, 0, ndr_size_AV_PAIR_LIST(r->TargetInfo, ndr->iconv_convenience, ndr->flags)));
1035 NDR_CHECK(ndr_push_AV_PAIR_LIST(_ndr_TargetInfo, NDR_SCALARS|NDR_BUFFERS, r->TargetInfo));
1036 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_TargetInfo, 0, ndr_size_AV_PAIR_LIST(r->TargetInfo, ndr->iconv_convenience, ndr->flags)));
1038 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->TargetInfo));
1040 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
1042 ndr->flags = _flags_save_STRUCT;
1044 return NDR_ERR_SUCCESS;
1047 _PUBLIC_ enum ndr_err_code ndr_pull_CHALLENGE_MESSAGE(struct ndr_pull *ndr, int ndr_flags, struct CHALLENGE_MESSAGE *r)
1049 uint32_t size_Signature_0 = 0;
1050 uint32_t _ptr_TargetName;
1051 TALLOC_CTX *_mem_save_TargetName_0;
1052 uint32_t size_ServerChallenge_0 = 0;
1053 uint32_t size_Reserved_0 = 0;
1054 uint32_t _ptr_TargetInfo;
1055 TALLOC_CTX *_mem_save_TargetInfo_0;
1057 uint32_t _flags_save_STRUCT = ndr->flags;
1058 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1059 if (ndr_flags & NDR_SCALARS) {
1060 NDR_CHECK(ndr_pull_align(ndr, 5));
1061 size_Signature_0 = 8;
1062 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->Signature, size_Signature_0, sizeof(uint8_t), CH_DOS));
1063 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr, NDR_SCALARS, &r->MessageType));
1064 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->TargetNameLen));
1065 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->TargetNameMaxLen));
1067 uint32_t _flags_save_string = ndr->flags;
1068 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1069 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TargetName));
1070 if (_ptr_TargetName) {
1071 NDR_PULL_ALLOC(ndr, r->TargetName);
1072 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->TargetName, _ptr_TargetName));
1073 } else {
1074 r->TargetName = NULL;
1076 ndr->flags = _flags_save_string;
1078 NDR_CHECK(ndr_pull_NEGOTIATE(ndr, NDR_SCALARS, &r->NegotiateFlags));
1079 size_ServerChallenge_0 = 8;
1080 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->ServerChallenge, size_ServerChallenge_0));
1081 size_Reserved_0 = 8;
1082 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Reserved, size_Reserved_0));
1083 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->TargetInfoLen));
1084 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->TargetNameInfoMaxLen));
1085 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TargetInfo));
1086 if (_ptr_TargetInfo) {
1087 NDR_PULL_ALLOC(ndr, r->TargetInfo);
1088 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->TargetInfo, _ptr_TargetInfo));
1089 } else {
1090 r->TargetInfo = NULL;
1092 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
1093 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
1094 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
1096 if (ndr_flags & NDR_BUFFERS) {
1098 uint32_t _flags_save_string = ndr->flags;
1099 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1100 if (r->TargetName) {
1101 uint32_t _relative_save_offset;
1102 _relative_save_offset = ndr->offset;
1103 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->TargetName));
1104 _mem_save_TargetName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1105 NDR_PULL_SET_MEM_CTX(ndr, r->TargetName, 0);
1107 struct ndr_pull *_ndr_TargetName;
1108 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_TargetName, 0, r->TargetNameLen));
1109 NDR_CHECK(ndr_pull_string(_ndr_TargetName, NDR_SCALARS, &r->TargetName));
1110 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_TargetName, 0, r->TargetNameLen));
1112 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TargetName_0, 0);
1113 ndr->offset = _relative_save_offset;
1115 ndr->flags = _flags_save_string;
1117 if (r->TargetInfo) {
1118 uint32_t _relative_save_offset;
1119 _relative_save_offset = ndr->offset;
1120 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->TargetInfo));
1121 _mem_save_TargetInfo_0 = NDR_PULL_GET_MEM_CTX(ndr);
1122 NDR_PULL_SET_MEM_CTX(ndr, r->TargetInfo, 0);
1124 struct ndr_pull *_ndr_TargetInfo;
1125 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_TargetInfo, 0, r->TargetInfoLen));
1126 NDR_CHECK(ndr_pull_AV_PAIR_LIST(_ndr_TargetInfo, NDR_SCALARS|NDR_BUFFERS, r->TargetInfo));
1127 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_TargetInfo, 0, r->TargetInfoLen));
1129 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TargetInfo_0, 0);
1130 ndr->offset = _relative_save_offset;
1132 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
1134 ndr->flags = _flags_save_STRUCT;
1136 return NDR_ERR_SUCCESS;
1139 _PUBLIC_ void ndr_print_CHALLENGE_MESSAGE(struct ndr_print *ndr, const char *name, const struct CHALLENGE_MESSAGE *r)
1141 ndr_print_struct(ndr, name, "CHALLENGE_MESSAGE");
1143 uint32_t _flags_save_STRUCT = ndr->flags;
1144 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1145 ndr->depth++;
1146 ndr_print_string(ndr, "Signature", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?"NTLMSSP":r->Signature);
1147 ndr_print_ntlmssp_MessageType(ndr, "MessageType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NtLmChallenge:r->MessageType);
1148 ndr_print_uint16(ndr, "TargetNameLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_ntlmssp_string_length(r->NegotiateFlags, r->TargetName):r->TargetNameLen);
1149 ndr_print_uint16(ndr, "TargetNameMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->TargetNameLen:r->TargetNameMaxLen);
1150 ndr_print_ptr(ndr, "TargetName", r->TargetName);
1151 ndr->depth++;
1152 if (r->TargetName) {
1153 ndr_print_string(ndr, "TargetName", r->TargetName);
1155 ndr->depth--;
1156 ndr_print_NEGOTIATE(ndr, "NegotiateFlags", r->NegotiateFlags);
1157 ndr_print_array_uint8(ndr, "ServerChallenge", r->ServerChallenge, 8);
1158 ndr_print_array_uint8(ndr, "Reserved", r->Reserved, 8);
1159 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);
1160 ndr_print_uint16(ndr, "TargetNameInfoMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->TargetInfoLen:r->TargetNameInfoMaxLen);
1161 ndr_print_ptr(ndr, "TargetInfo", r->TargetInfo);
1162 ndr->depth++;
1163 if (r->TargetInfo) {
1164 ndr_print_AV_PAIR_LIST(ndr, "TargetInfo", r->TargetInfo);
1166 ndr->depth--;
1167 ndr_print_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION);
1168 ndr_print_ntlmssp_Version(ndr, "Version", &r->Version);
1169 ndr->depth--;
1170 ndr->flags = _flags_save_STRUCT;
1174 _PUBLIC_ enum ndr_err_code ndr_push_LM_RESPONSE(struct ndr_push *ndr, int ndr_flags, const struct LM_RESPONSE *r)
1177 uint32_t _flags_save_STRUCT = ndr->flags;
1178 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1179 if (ndr_flags & NDR_SCALARS) {
1180 NDR_CHECK(ndr_push_align(ndr, 1));
1181 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Response, 24));
1182 NDR_CHECK(ndr_push_trailer_align(ndr, 1));
1184 if (ndr_flags & NDR_BUFFERS) {
1186 ndr->flags = _flags_save_STRUCT;
1188 return NDR_ERR_SUCCESS;
1191 _PUBLIC_ enum ndr_err_code ndr_pull_LM_RESPONSE(struct ndr_pull *ndr, int ndr_flags, struct LM_RESPONSE *r)
1193 uint32_t size_Response_0 = 0;
1195 uint32_t _flags_save_STRUCT = ndr->flags;
1196 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1197 if (ndr_flags & NDR_SCALARS) {
1198 NDR_CHECK(ndr_pull_align(ndr, 1));
1199 size_Response_0 = 24;
1200 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Response, size_Response_0));
1201 NDR_CHECK(ndr_pull_trailer_align(ndr, 1));
1203 if (ndr_flags & NDR_BUFFERS) {
1205 ndr->flags = _flags_save_STRUCT;
1207 return NDR_ERR_SUCCESS;
1210 _PUBLIC_ void ndr_print_LM_RESPONSE(struct ndr_print *ndr, const char *name, const struct LM_RESPONSE *r)
1212 ndr_print_struct(ndr, name, "LM_RESPONSE");
1214 uint32_t _flags_save_STRUCT = ndr->flags;
1215 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1216 ndr->depth++;
1217 ndr_print_array_uint8(ndr, "Response", r->Response, 24);
1218 ndr->depth--;
1219 ndr->flags = _flags_save_STRUCT;
1223 _PUBLIC_ enum ndr_err_code ndr_push_LMv2_RESPONSE(struct ndr_push *ndr, int ndr_flags, const struct LMv2_RESPONSE *r)
1226 uint32_t _flags_save_STRUCT = ndr->flags;
1227 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1228 if (ndr_flags & NDR_SCALARS) {
1229 NDR_CHECK(ndr_push_align(ndr, 1));
1230 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Response, 16));
1231 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->ChallengeFromClient, 8));
1232 NDR_CHECK(ndr_push_trailer_align(ndr, 1));
1234 if (ndr_flags & NDR_BUFFERS) {
1236 ndr->flags = _flags_save_STRUCT;
1238 return NDR_ERR_SUCCESS;
1241 _PUBLIC_ enum ndr_err_code ndr_pull_LMv2_RESPONSE(struct ndr_pull *ndr, int ndr_flags, struct LMv2_RESPONSE *r)
1243 uint32_t size_Response_0 = 0;
1244 uint32_t size_ChallengeFromClient_0 = 0;
1246 uint32_t _flags_save_STRUCT = ndr->flags;
1247 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1248 if (ndr_flags & NDR_SCALARS) {
1249 NDR_CHECK(ndr_pull_align(ndr, 1));
1250 size_Response_0 = 16;
1251 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Response, size_Response_0));
1252 size_ChallengeFromClient_0 = 8;
1253 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->ChallengeFromClient, size_ChallengeFromClient_0));
1254 NDR_CHECK(ndr_pull_trailer_align(ndr, 1));
1256 if (ndr_flags & NDR_BUFFERS) {
1258 ndr->flags = _flags_save_STRUCT;
1260 return NDR_ERR_SUCCESS;
1263 _PUBLIC_ void ndr_print_LMv2_RESPONSE(struct ndr_print *ndr, const char *name, const struct LMv2_RESPONSE *r)
1265 ndr_print_struct(ndr, name, "LMv2_RESPONSE");
1267 uint32_t _flags_save_STRUCT = ndr->flags;
1268 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1269 ndr->depth++;
1270 ndr_print_array_uint8(ndr, "Response", r->Response, 16);
1271 ndr_print_array_uint8(ndr, "ChallengeFromClient", r->ChallengeFromClient, 8);
1272 ndr->depth--;
1273 ndr->flags = _flags_save_STRUCT;
1277 static enum ndr_err_code ndr_push_ntlmssp_LM_RESPONSE(struct ndr_push *ndr, int ndr_flags, const union ntlmssp_LM_RESPONSE *r)
1279 if (ndr_flags & NDR_SCALARS) {
1280 int level = ndr_push_get_switch_value(ndr, r);
1281 NDR_CHECK(ndr_push_union_align(ndr, 1));
1282 switch (level) {
1283 case 24: {
1284 NDR_CHECK(ndr_push_LM_RESPONSE(ndr, NDR_SCALARS, &r->v1));
1285 break; }
1287 default: {
1288 break; }
1292 if (ndr_flags & NDR_BUFFERS) {
1293 int level = ndr_push_get_switch_value(ndr, r);
1294 switch (level) {
1295 case 24:
1296 break;
1298 default:
1299 break;
1303 return NDR_ERR_SUCCESS;
1306 static enum ndr_err_code ndr_pull_ntlmssp_LM_RESPONSE(struct ndr_pull *ndr, int ndr_flags, union ntlmssp_LM_RESPONSE *r)
1308 int level;
1309 level = ndr_pull_get_switch_value(ndr, r);
1310 if (ndr_flags & NDR_SCALARS) {
1311 NDR_CHECK(ndr_pull_union_align(ndr, 1));
1312 switch (level) {
1313 case 24: {
1314 NDR_CHECK(ndr_pull_LM_RESPONSE(ndr, NDR_SCALARS, &r->v1));
1315 break; }
1317 default: {
1318 break; }
1322 if (ndr_flags & NDR_BUFFERS) {
1323 switch (level) {
1324 case 24:
1325 break;
1327 default:
1328 break;
1332 return NDR_ERR_SUCCESS;
1335 _PUBLIC_ void ndr_print_ntlmssp_LM_RESPONSE(struct ndr_print *ndr, const char *name, const union ntlmssp_LM_RESPONSE *r)
1337 int level;
1338 level = ndr_print_get_switch_value(ndr, r);
1339 ndr_print_union(ndr, name, level, "ntlmssp_LM_RESPONSE");
1340 switch (level) {
1341 case 24:
1342 ndr_print_LM_RESPONSE(ndr, "v1", &r->v1);
1343 break;
1345 default:
1346 break;
1351 _PUBLIC_ enum ndr_err_code ndr_push_NTLM_RESPONSE(struct ndr_push *ndr, int ndr_flags, const struct NTLM_RESPONSE *r)
1354 uint32_t _flags_save_STRUCT = ndr->flags;
1355 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1356 if (ndr_flags & NDR_SCALARS) {
1357 NDR_CHECK(ndr_push_align(ndr, 1));
1358 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Response, 24));
1359 NDR_CHECK(ndr_push_trailer_align(ndr, 1));
1361 if (ndr_flags & NDR_BUFFERS) {
1363 ndr->flags = _flags_save_STRUCT;
1365 return NDR_ERR_SUCCESS;
1368 _PUBLIC_ enum ndr_err_code ndr_pull_NTLM_RESPONSE(struct ndr_pull *ndr, int ndr_flags, struct NTLM_RESPONSE *r)
1370 uint32_t size_Response_0 = 0;
1372 uint32_t _flags_save_STRUCT = ndr->flags;
1373 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1374 if (ndr_flags & NDR_SCALARS) {
1375 NDR_CHECK(ndr_pull_align(ndr, 1));
1376 size_Response_0 = 24;
1377 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Response, size_Response_0));
1378 NDR_CHECK(ndr_pull_trailer_align(ndr, 1));
1380 if (ndr_flags & NDR_BUFFERS) {
1382 ndr->flags = _flags_save_STRUCT;
1384 return NDR_ERR_SUCCESS;
1387 _PUBLIC_ void ndr_print_NTLM_RESPONSE(struct ndr_print *ndr, const char *name, const struct NTLM_RESPONSE *r)
1389 ndr_print_struct(ndr, name, "NTLM_RESPONSE");
1391 uint32_t _flags_save_STRUCT = ndr->flags;
1392 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1393 ndr->depth++;
1394 ndr_print_array_uint8(ndr, "Response", r->Response, 24);
1395 ndr->depth--;
1396 ndr->flags = _flags_save_STRUCT;
1400 static enum ndr_err_code ndr_push_NTLMv2_CLIENT_CHALLENGE(struct ndr_push *ndr, int ndr_flags, const struct NTLMv2_CLIENT_CHALLENGE *r)
1403 uint32_t _flags_save_STRUCT = ndr->flags;
1404 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1405 if (ndr_flags & NDR_SCALARS) {
1406 NDR_CHECK(ndr_push_align(ndr, 4));
1407 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, 1));
1408 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, 1));
1409 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->Reserved1));
1410 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->Reserved2));
1411 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->TimeStamp));
1412 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->ChallengeFromClient, 8));
1413 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->Reserved3));
1415 uint32_t _flags_save_AV_PAIR_LIST = ndr->flags;
1416 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1418 struct ndr_push *_ndr_AvPairs;
1419 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_AvPairs, 0, -1));
1420 NDR_CHECK(ndr_push_AV_PAIR_LIST(_ndr_AvPairs, NDR_SCALARS|NDR_BUFFERS, &r->AvPairs));
1421 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_AvPairs, 0, -1));
1423 ndr->flags = _flags_save_AV_PAIR_LIST;
1425 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
1427 if (ndr_flags & NDR_BUFFERS) {
1429 uint32_t _flags_save_AV_PAIR_LIST = ndr->flags;
1430 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1431 ndr->flags = _flags_save_AV_PAIR_LIST;
1434 ndr->flags = _flags_save_STRUCT;
1436 return NDR_ERR_SUCCESS;
1439 static enum ndr_err_code ndr_pull_NTLMv2_CLIENT_CHALLENGE(struct ndr_pull *ndr, int ndr_flags, struct NTLMv2_CLIENT_CHALLENGE *r)
1441 uint32_t size_ChallengeFromClient_0 = 0;
1443 uint32_t _flags_save_STRUCT = ndr->flags;
1444 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1445 if (ndr_flags & NDR_SCALARS) {
1446 NDR_CHECK(ndr_pull_align(ndr, 4));
1447 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->RespType));
1448 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->HiRespType));
1449 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->Reserved1));
1450 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Reserved2));
1451 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->TimeStamp));
1452 size_ChallengeFromClient_0 = 8;
1453 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->ChallengeFromClient, size_ChallengeFromClient_0));
1454 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Reserved3));
1456 uint32_t _flags_save_AV_PAIR_LIST = ndr->flags;
1457 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1459 struct ndr_pull *_ndr_AvPairs;
1460 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_AvPairs, 0, -1));
1461 NDR_CHECK(ndr_pull_AV_PAIR_LIST(_ndr_AvPairs, NDR_SCALARS|NDR_BUFFERS, &r->AvPairs));
1462 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_AvPairs, 0, -1));
1464 ndr->flags = _flags_save_AV_PAIR_LIST;
1466 NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
1468 if (ndr_flags & NDR_BUFFERS) {
1470 uint32_t _flags_save_AV_PAIR_LIST = ndr->flags;
1471 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1472 ndr->flags = _flags_save_AV_PAIR_LIST;
1475 ndr->flags = _flags_save_STRUCT;
1477 return NDR_ERR_SUCCESS;
1480 _PUBLIC_ void ndr_print_NTLMv2_CLIENT_CHALLENGE(struct ndr_print *ndr, const char *name, const struct NTLMv2_CLIENT_CHALLENGE *r)
1482 ndr_print_struct(ndr, name, "NTLMv2_CLIENT_CHALLENGE");
1484 uint32_t _flags_save_STRUCT = ndr->flags;
1485 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1486 ndr->depth++;
1487 ndr_print_uint8(ndr, "RespType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?1:r->RespType);
1488 ndr_print_uint8(ndr, "HiRespType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?1:r->HiRespType);
1489 ndr_print_uint16(ndr, "Reserved1", r->Reserved1);
1490 ndr_print_uint32(ndr, "Reserved2", r->Reserved2);
1491 ndr_print_NTTIME(ndr, "TimeStamp", r->TimeStamp);
1492 ndr_print_array_uint8(ndr, "ChallengeFromClient", r->ChallengeFromClient, 8);
1493 ndr_print_uint32(ndr, "Reserved3", r->Reserved3);
1494 ndr_print_AV_PAIR_LIST(ndr, "AvPairs", &r->AvPairs);
1495 ndr->depth--;
1496 ndr->flags = _flags_save_STRUCT;
1500 _PUBLIC_ enum ndr_err_code ndr_push_NTLMv2_RESPONSE(struct ndr_push *ndr, int ndr_flags, const struct NTLMv2_RESPONSE *r)
1503 uint32_t _flags_save_STRUCT = ndr->flags;
1504 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1505 if (ndr_flags & NDR_SCALARS) {
1506 NDR_CHECK(ndr_push_align(ndr, 4));
1507 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Response, 16));
1508 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_SCALARS, &r->Challenge));
1509 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
1511 if (ndr_flags & NDR_BUFFERS) {
1512 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_BUFFERS, &r->Challenge));
1514 ndr->flags = _flags_save_STRUCT;
1516 return NDR_ERR_SUCCESS;
1519 _PUBLIC_ enum ndr_err_code ndr_pull_NTLMv2_RESPONSE(struct ndr_pull *ndr, int ndr_flags, struct NTLMv2_RESPONSE *r)
1521 uint32_t size_Response_0 = 0;
1523 uint32_t _flags_save_STRUCT = ndr->flags;
1524 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1525 if (ndr_flags & NDR_SCALARS) {
1526 NDR_CHECK(ndr_pull_align(ndr, 4));
1527 size_Response_0 = 16;
1528 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Response, size_Response_0));
1529 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_SCALARS, &r->Challenge));
1530 NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
1532 if (ndr_flags & NDR_BUFFERS) {
1533 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_BUFFERS, &r->Challenge));
1535 ndr->flags = _flags_save_STRUCT;
1537 return NDR_ERR_SUCCESS;
1540 _PUBLIC_ void ndr_print_NTLMv2_RESPONSE(struct ndr_print *ndr, const char *name, const struct NTLMv2_RESPONSE *r)
1542 ndr_print_struct(ndr, name, "NTLMv2_RESPONSE");
1544 uint32_t _flags_save_STRUCT = ndr->flags;
1545 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1546 ndr->depth++;
1547 ndr_print_array_uint8(ndr, "Response", r->Response, 16);
1548 ndr_print_NTLMv2_CLIENT_CHALLENGE(ndr, "Challenge", &r->Challenge);
1549 ndr->depth--;
1550 ndr->flags = _flags_save_STRUCT;
1554 _PUBLIC_ enum ndr_err_code ndr_push_ntlmssp_NTLM_RESPONSE(struct ndr_push *ndr, int ndr_flags, const union ntlmssp_NTLM_RESPONSE *r)
1556 if (ndr_flags & NDR_SCALARS) {
1557 int level = ndr_push_get_switch_value(ndr, r);
1558 NDR_CHECK(ndr_push_union_align(ndr, 4));
1559 switch (level) {
1560 case 0: {
1561 break; }
1563 case 0x18: {
1564 NDR_CHECK(ndr_push_NTLM_RESPONSE(ndr, NDR_SCALARS, &r->v1));
1565 break; }
1567 default: {
1568 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr, NDR_SCALARS, &r->v2));
1569 break; }
1573 if (ndr_flags & NDR_BUFFERS) {
1574 int level = ndr_push_get_switch_value(ndr, r);
1575 switch (level) {
1576 case 0:
1577 break;
1579 case 0x18:
1580 break;
1582 default:
1583 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr, NDR_BUFFERS, &r->v2));
1584 break;
1588 return NDR_ERR_SUCCESS;
1591 _PUBLIC_ enum ndr_err_code ndr_pull_ntlmssp_NTLM_RESPONSE(struct ndr_pull *ndr, int ndr_flags, union ntlmssp_NTLM_RESPONSE *r)
1593 int level;
1594 level = ndr_pull_get_switch_value(ndr, r);
1595 if (ndr_flags & NDR_SCALARS) {
1596 NDR_CHECK(ndr_pull_union_align(ndr, 4));
1597 switch (level) {
1598 case 0: {
1599 break; }
1601 case 0x18: {
1602 NDR_CHECK(ndr_pull_NTLM_RESPONSE(ndr, NDR_SCALARS, &r->v1));
1603 break; }
1605 default: {
1606 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr, NDR_SCALARS, &r->v2));
1607 break; }
1611 if (ndr_flags & NDR_BUFFERS) {
1612 switch (level) {
1613 case 0:
1614 break;
1616 case 0x18:
1617 break;
1619 default:
1620 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr, NDR_BUFFERS, &r->v2));
1621 break;
1625 return NDR_ERR_SUCCESS;
1628 _PUBLIC_ void ndr_print_ntlmssp_NTLM_RESPONSE(struct ndr_print *ndr, const char *name, const union ntlmssp_NTLM_RESPONSE *r)
1630 int level;
1631 level = ndr_print_get_switch_value(ndr, r);
1632 ndr_print_union(ndr, name, level, "ntlmssp_NTLM_RESPONSE");
1633 switch (level) {
1634 case 0:
1635 break;
1637 case 0x18:
1638 ndr_print_NTLM_RESPONSE(ndr, "v1", &r->v1);
1639 break;
1641 default:
1642 ndr_print_NTLMv2_RESPONSE(ndr, "v2", &r->v2);
1643 break;
1648 _PUBLIC_ enum ndr_err_code ndr_push_AUTHENTICATE_MESSAGE(struct ndr_push *ndr, int ndr_flags, const struct AUTHENTICATE_MESSAGE *r)
1651 uint32_t _flags_save_STRUCT = ndr->flags;
1652 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1653 if (ndr_flags & NDR_SCALARS) {
1654 NDR_CHECK(ndr_push_align(ndr, 5));
1655 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS));
1656 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr, NDR_SCALARS, NtLmAuthenticate));
1657 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->LmChallengeResponseLen));
1658 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->LmChallengeResponseLen));
1659 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->LmChallengeResponse));
1660 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->NtChallengeResponseLen));
1661 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->NtChallengeResponseLen));
1662 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->NtChallengeResponse));
1663 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName)));
1664 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName)));
1666 uint32_t _flags_save_string = ndr->flags;
1667 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1668 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->DomainName));
1669 ndr->flags = _flags_save_string;
1671 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName)));
1672 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName)));
1674 uint32_t _flags_save_string = ndr->flags;
1675 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1676 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->UserName));
1677 ndr->flags = _flags_save_string;
1679 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation)));
1680 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation)));
1682 uint32_t _flags_save_string = ndr->flags;
1683 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1684 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->Workstation));
1685 ndr->flags = _flags_save_string;
1687 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->EncryptedRandomSessionKey->length));
1688 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->EncryptedRandomSessionKey->length));
1689 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->EncryptedRandomSessionKey));
1690 NDR_CHECK(ndr_push_NEGOTIATE(ndr, NDR_SCALARS, r->NegotiateFlags));
1691 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
1692 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
1693 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
1695 if (ndr_flags & NDR_BUFFERS) {
1696 if (r->LmChallengeResponse) {
1697 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->LmChallengeResponse));
1699 struct ndr_push *_ndr_LmChallengeResponse;
1700 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_LmChallengeResponse, 0, r->LmChallengeResponseLen));
1701 NDR_CHECK(ndr_push_set_switch_value(_ndr_LmChallengeResponse, r->LmChallengeResponse, r->LmChallengeResponseLen));
1702 NDR_CHECK(ndr_push_ntlmssp_LM_RESPONSE(_ndr_LmChallengeResponse, NDR_SCALARS|NDR_BUFFERS, r->LmChallengeResponse));
1703 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_LmChallengeResponse, 0, r->LmChallengeResponseLen));
1705 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->LmChallengeResponse));
1707 if (r->NtChallengeResponse) {
1708 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->NtChallengeResponse));
1710 struct ndr_push *_ndr_NtChallengeResponse;
1711 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_NtChallengeResponse, 0, r->NtChallengeResponseLen));
1712 NDR_CHECK(ndr_push_set_switch_value(_ndr_NtChallengeResponse, r->NtChallengeResponse, r->NtChallengeResponseLen));
1713 NDR_CHECK(ndr_push_ntlmssp_NTLM_RESPONSE(_ndr_NtChallengeResponse, NDR_SCALARS|NDR_BUFFERS, r->NtChallengeResponse));
1714 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_NtChallengeResponse, 0, r->NtChallengeResponseLen));
1716 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->NtChallengeResponse));
1719 uint32_t _flags_save_string = ndr->flags;
1720 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1721 if (r->DomainName) {
1722 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->DomainName));
1724 struct ndr_push *_ndr_DomainName;
1725 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_DomainName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName)));
1726 NDR_CHECK(ndr_push_string(_ndr_DomainName, NDR_SCALARS, r->DomainName));
1727 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_DomainName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName)));
1729 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->DomainName));
1731 ndr->flags = _flags_save_string;
1734 uint32_t _flags_save_string = ndr->flags;
1735 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1736 if (r->UserName) {
1737 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->UserName));
1739 struct ndr_push *_ndr_UserName;
1740 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_UserName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName)));
1741 NDR_CHECK(ndr_push_string(_ndr_UserName, NDR_SCALARS, r->UserName));
1742 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_UserName, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName)));
1744 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->UserName));
1746 ndr->flags = _flags_save_string;
1749 uint32_t _flags_save_string = ndr->flags;
1750 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1751 if (r->Workstation) {
1752 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->Workstation));
1754 struct ndr_push *_ndr_Workstation;
1755 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_Workstation, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation)));
1756 NDR_CHECK(ndr_push_string(_ndr_Workstation, NDR_SCALARS, r->Workstation));
1757 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_Workstation, 0, ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation)));
1759 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->Workstation));
1761 ndr->flags = _flags_save_string;
1763 if (r->EncryptedRandomSessionKey) {
1764 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->EncryptedRandomSessionKey));
1766 struct ndr_push *_ndr_EncryptedRandomSessionKey;
1767 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_EncryptedRandomSessionKey, 0, r->EncryptedRandomSessionKey->length));
1768 NDR_CHECK(ndr_push_DATA_BLOB(_ndr_EncryptedRandomSessionKey, NDR_SCALARS, *r->EncryptedRandomSessionKey));
1769 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_EncryptedRandomSessionKey, 0, r->EncryptedRandomSessionKey->length));
1771 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->EncryptedRandomSessionKey));
1773 NDR_CHECK(ndr_push_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
1775 ndr->flags = _flags_save_STRUCT;
1777 return NDR_ERR_SUCCESS;
1780 _PUBLIC_ enum ndr_err_code ndr_pull_AUTHENTICATE_MESSAGE(struct ndr_pull *ndr, int ndr_flags, struct AUTHENTICATE_MESSAGE *r)
1782 uint32_t size_Signature_0 = 0;
1783 uint32_t _ptr_LmChallengeResponse;
1784 TALLOC_CTX *_mem_save_LmChallengeResponse_0;
1785 uint32_t _ptr_NtChallengeResponse;
1786 TALLOC_CTX *_mem_save_NtChallengeResponse_0;
1787 uint32_t _ptr_DomainName;
1788 TALLOC_CTX *_mem_save_DomainName_0;
1789 uint32_t _ptr_UserName;
1790 TALLOC_CTX *_mem_save_UserName_0;
1791 uint32_t _ptr_Workstation;
1792 TALLOC_CTX *_mem_save_Workstation_0;
1793 uint32_t _ptr_EncryptedRandomSessionKey;
1794 TALLOC_CTX *_mem_save_EncryptedRandomSessionKey_0;
1796 uint32_t _flags_save_STRUCT = ndr->flags;
1797 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1798 if (ndr_flags & NDR_SCALARS) {
1799 NDR_CHECK(ndr_pull_align(ndr, 5));
1800 size_Signature_0 = 8;
1801 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->Signature, size_Signature_0, sizeof(uint8_t), CH_DOS));
1802 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr, NDR_SCALARS, &r->MessageType));
1803 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->LmChallengeResponseLen));
1804 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->LmChallengeResponseMaxLen));
1805 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LmChallengeResponse));
1806 if (_ptr_LmChallengeResponse) {
1807 NDR_PULL_ALLOC(ndr, r->LmChallengeResponse);
1808 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->LmChallengeResponse, _ptr_LmChallengeResponse));
1809 } else {
1810 r->LmChallengeResponse = NULL;
1812 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->NtChallengeResponseLen));
1813 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->NtChallengeResponseMaxLen));
1814 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_NtChallengeResponse));
1815 if (_ptr_NtChallengeResponse) {
1816 NDR_PULL_ALLOC(ndr, r->NtChallengeResponse);
1817 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->NtChallengeResponse, _ptr_NtChallengeResponse));
1818 } else {
1819 r->NtChallengeResponse = NULL;
1821 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->DomainNameLen));
1822 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->DomainNameMaxLen));
1824 uint32_t _flags_save_string = ndr->flags;
1825 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1826 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DomainName));
1827 if (_ptr_DomainName) {
1828 NDR_PULL_ALLOC(ndr, r->DomainName);
1829 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->DomainName, _ptr_DomainName));
1830 } else {
1831 r->DomainName = NULL;
1833 ndr->flags = _flags_save_string;
1835 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->UserNameLen));
1836 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->UserNameMaxLen));
1838 uint32_t _flags_save_string = ndr->flags;
1839 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1840 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_UserName));
1841 if (_ptr_UserName) {
1842 NDR_PULL_ALLOC(ndr, r->UserName);
1843 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->UserName, _ptr_UserName));
1844 } else {
1845 r->UserName = NULL;
1847 ndr->flags = _flags_save_string;
1849 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->WorkstationLen));
1850 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->WorkstationMaxLen));
1852 uint32_t _flags_save_string = ndr->flags;
1853 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1854 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Workstation));
1855 if (_ptr_Workstation) {
1856 NDR_PULL_ALLOC(ndr, r->Workstation);
1857 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->Workstation, _ptr_Workstation));
1858 } else {
1859 r->Workstation = NULL;
1861 ndr->flags = _flags_save_string;
1863 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->EncryptedRandomSessionKeyLen));
1864 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->EncryptedRandomSessionKeyMaxLen));
1865 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_EncryptedRandomSessionKey));
1866 if (_ptr_EncryptedRandomSessionKey) {
1867 NDR_PULL_ALLOC(ndr, r->EncryptedRandomSessionKey);
1868 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->EncryptedRandomSessionKey, _ptr_EncryptedRandomSessionKey));
1869 } else {
1870 r->EncryptedRandomSessionKey = NULL;
1872 NDR_CHECK(ndr_pull_NEGOTIATE(ndr, NDR_SCALARS, &r->NegotiateFlags));
1873 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION));
1874 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_SCALARS, &r->Version));
1875 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
1877 if (ndr_flags & NDR_BUFFERS) {
1878 if (r->LmChallengeResponse) {
1879 uint32_t _relative_save_offset;
1880 _relative_save_offset = ndr->offset;
1881 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->LmChallengeResponse));
1882 _mem_save_LmChallengeResponse_0 = NDR_PULL_GET_MEM_CTX(ndr);
1883 NDR_PULL_SET_MEM_CTX(ndr, r->LmChallengeResponse, 0);
1885 struct ndr_pull *_ndr_LmChallengeResponse;
1886 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_LmChallengeResponse, 0, r->LmChallengeResponseLen));
1887 NDR_CHECK(ndr_pull_set_switch_value(_ndr_LmChallengeResponse, r->LmChallengeResponse, r->LmChallengeResponseLen));
1888 NDR_CHECK(ndr_pull_ntlmssp_LM_RESPONSE(_ndr_LmChallengeResponse, NDR_SCALARS|NDR_BUFFERS, r->LmChallengeResponse));
1889 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_LmChallengeResponse, 0, r->LmChallengeResponseLen));
1891 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LmChallengeResponse_0, 0);
1892 ndr->offset = _relative_save_offset;
1894 if (r->NtChallengeResponse) {
1895 uint32_t _relative_save_offset;
1896 _relative_save_offset = ndr->offset;
1897 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->NtChallengeResponse));
1898 _mem_save_NtChallengeResponse_0 = NDR_PULL_GET_MEM_CTX(ndr);
1899 NDR_PULL_SET_MEM_CTX(ndr, r->NtChallengeResponse, 0);
1901 struct ndr_pull *_ndr_NtChallengeResponse;
1902 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_NtChallengeResponse, 0, r->NtChallengeResponseMaxLen));
1903 NDR_CHECK(ndr_pull_set_switch_value(_ndr_NtChallengeResponse, r->NtChallengeResponse, r->NtChallengeResponseLen));
1904 NDR_CHECK(ndr_pull_ntlmssp_NTLM_RESPONSE(_ndr_NtChallengeResponse, NDR_SCALARS|NDR_BUFFERS, r->NtChallengeResponse));
1905 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_NtChallengeResponse, 0, r->NtChallengeResponseMaxLen));
1907 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_NtChallengeResponse_0, 0);
1908 ndr->offset = _relative_save_offset;
1911 uint32_t _flags_save_string = ndr->flags;
1912 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1913 if (r->DomainName) {
1914 uint32_t _relative_save_offset;
1915 _relative_save_offset = ndr->offset;
1916 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->DomainName));
1917 _mem_save_DomainName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1918 NDR_PULL_SET_MEM_CTX(ndr, r->DomainName, 0);
1920 struct ndr_pull *_ndr_DomainName;
1921 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_DomainName, 0, r->DomainNameLen));
1922 NDR_CHECK(ndr_pull_string(_ndr_DomainName, NDR_SCALARS, &r->DomainName));
1923 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_DomainName, 0, r->DomainNameLen));
1925 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DomainName_0, 0);
1926 ndr->offset = _relative_save_offset;
1928 ndr->flags = _flags_save_string;
1931 uint32_t _flags_save_string = ndr->flags;
1932 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1933 if (r->UserName) {
1934 uint32_t _relative_save_offset;
1935 _relative_save_offset = ndr->offset;
1936 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->UserName));
1937 _mem_save_UserName_0 = NDR_PULL_GET_MEM_CTX(ndr);
1938 NDR_PULL_SET_MEM_CTX(ndr, r->UserName, 0);
1940 struct ndr_pull *_ndr_UserName;
1941 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_UserName, 0, r->UserNameLen));
1942 NDR_CHECK(ndr_pull_string(_ndr_UserName, NDR_SCALARS, &r->UserName));
1943 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_UserName, 0, r->UserNameLen));
1945 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_UserName_0, 0);
1946 ndr->offset = _relative_save_offset;
1948 ndr->flags = _flags_save_string;
1951 uint32_t _flags_save_string = ndr->flags;
1952 ndr_set_flags(&ndr->flags, ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags));
1953 if (r->Workstation) {
1954 uint32_t _relative_save_offset;
1955 _relative_save_offset = ndr->offset;
1956 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->Workstation));
1957 _mem_save_Workstation_0 = NDR_PULL_GET_MEM_CTX(ndr);
1958 NDR_PULL_SET_MEM_CTX(ndr, r->Workstation, 0);
1960 struct ndr_pull *_ndr_Workstation;
1961 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_Workstation, 0, r->WorkstationLen));
1962 NDR_CHECK(ndr_pull_string(_ndr_Workstation, NDR_SCALARS, &r->Workstation));
1963 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_Workstation, 0, r->WorkstationLen));
1965 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Workstation_0, 0);
1966 ndr->offset = _relative_save_offset;
1968 ndr->flags = _flags_save_string;
1970 if (r->EncryptedRandomSessionKey) {
1971 uint32_t _relative_save_offset;
1972 _relative_save_offset = ndr->offset;
1973 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->EncryptedRandomSessionKey));
1974 _mem_save_EncryptedRandomSessionKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
1975 NDR_PULL_SET_MEM_CTX(ndr, r->EncryptedRandomSessionKey, 0);
1977 struct ndr_pull *_ndr_EncryptedRandomSessionKey;
1978 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_EncryptedRandomSessionKey, 0, r->EncryptedRandomSessionKeyLen));
1979 NDR_CHECK(ndr_pull_DATA_BLOB(_ndr_EncryptedRandomSessionKey, NDR_SCALARS, r->EncryptedRandomSessionKey));
1980 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_EncryptedRandomSessionKey, 0, r->EncryptedRandomSessionKeyLen));
1982 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_EncryptedRandomSessionKey_0, 0);
1983 ndr->offset = _relative_save_offset;
1985 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr, NDR_BUFFERS, &r->Version));
1987 ndr->flags = _flags_save_STRUCT;
1989 return NDR_ERR_SUCCESS;
1992 _PUBLIC_ void ndr_print_AUTHENTICATE_MESSAGE(struct ndr_print *ndr, const char *name, const struct AUTHENTICATE_MESSAGE *r)
1994 ndr_print_struct(ndr, name, "AUTHENTICATE_MESSAGE");
1996 uint32_t _flags_save_STRUCT = ndr->flags;
1997 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
1998 ndr->depth++;
1999 ndr_print_string(ndr, "Signature", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?"NTLMSSP":r->Signature);
2000 ndr_print_ntlmssp_MessageType(ndr, "MessageType", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NtLmAuthenticate:r->MessageType);
2001 ndr_print_uint16(ndr, "LmChallengeResponseLen", r->LmChallengeResponseLen);
2002 ndr_print_uint16(ndr, "LmChallengeResponseMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->LmChallengeResponseLen:r->LmChallengeResponseMaxLen);
2003 ndr_print_ptr(ndr, "LmChallengeResponse", r->LmChallengeResponse);
2004 ndr->depth++;
2005 if (r->LmChallengeResponse) {
2006 ndr_print_set_switch_value(ndr, r->LmChallengeResponse, r->LmChallengeResponseLen);
2007 ndr_print_ntlmssp_LM_RESPONSE(ndr, "LmChallengeResponse", r->LmChallengeResponse);
2009 ndr->depth--;
2010 ndr_print_uint16(ndr, "NtChallengeResponseLen", r->NtChallengeResponseLen);
2011 ndr_print_uint16(ndr, "NtChallengeResponseMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->NtChallengeResponseLen:r->NtChallengeResponseMaxLen);
2012 ndr_print_ptr(ndr, "NtChallengeResponse", r->NtChallengeResponse);
2013 ndr->depth++;
2014 if (r->NtChallengeResponse) {
2015 ndr_print_set_switch_value(ndr, r->NtChallengeResponse, r->NtChallengeResponseLen);
2016 ndr_print_ntlmssp_NTLM_RESPONSE(ndr, "NtChallengeResponse", r->NtChallengeResponse);
2018 ndr->depth--;
2019 ndr_print_uint16(ndr, "DomainNameLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_ntlmssp_string_length(r->NegotiateFlags, r->DomainName):r->DomainNameLen);
2020 ndr_print_uint16(ndr, "DomainNameMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->DomainNameLen:r->DomainNameMaxLen);
2021 ndr_print_ptr(ndr, "DomainName", r->DomainName);
2022 ndr->depth++;
2023 if (r->DomainName) {
2024 ndr_print_string(ndr, "DomainName", r->DomainName);
2026 ndr->depth--;
2027 ndr_print_uint16(ndr, "UserNameLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_ntlmssp_string_length(r->NegotiateFlags, r->UserName):r->UserNameLen);
2028 ndr_print_uint16(ndr, "UserNameMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->UserNameLen:r->UserNameMaxLen);
2029 ndr_print_ptr(ndr, "UserName", r->UserName);
2030 ndr->depth++;
2031 if (r->UserName) {
2032 ndr_print_string(ndr, "UserName", r->UserName);
2034 ndr->depth--;
2035 ndr_print_uint16(ndr, "WorkstationLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_ntlmssp_string_length(r->NegotiateFlags, r->Workstation):r->WorkstationLen);
2036 ndr_print_uint16(ndr, "WorkstationMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->WorkstationLen:r->WorkstationMaxLen);
2037 ndr_print_ptr(ndr, "Workstation", r->Workstation);
2038 ndr->depth++;
2039 if (r->Workstation) {
2040 ndr_print_string(ndr, "Workstation", r->Workstation);
2042 ndr->depth--;
2043 ndr_print_uint16(ndr, "EncryptedRandomSessionKeyLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->EncryptedRandomSessionKey->length:r->EncryptedRandomSessionKeyLen);
2044 ndr_print_uint16(ndr, "EncryptedRandomSessionKeyMaxLen", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->EncryptedRandomSessionKeyLen:r->EncryptedRandomSessionKeyMaxLen);
2045 ndr_print_ptr(ndr, "EncryptedRandomSessionKey", r->EncryptedRandomSessionKey);
2046 ndr->depth++;
2047 if (r->EncryptedRandomSessionKey) {
2048 ndr_print_DATA_BLOB(ndr, "EncryptedRandomSessionKey", *r->EncryptedRandomSessionKey);
2050 ndr->depth--;
2051 ndr_print_NEGOTIATE(ndr, "NegotiateFlags", r->NegotiateFlags);
2052 ndr_print_set_switch_value(ndr, &r->Version, r->NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION);
2053 ndr_print_ntlmssp_Version(ndr, "Version", &r->Version);
2054 ndr->depth--;
2055 ndr->flags = _flags_save_STRUCT;
2059 _PUBLIC_ enum ndr_err_code ndr_push_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_push *ndr, int ndr_flags, const struct NTLMSSP_MESSAGE_SIGNATURE *r)
2061 if (ndr_flags & NDR_SCALARS) {
2062 NDR_CHECK(ndr_push_align(ndr, 4));
2063 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, NTLMSSP_SIGN_VERSION));
2064 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->RandomPad));
2065 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->Checksum));
2066 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SeqNum));
2067 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
2069 if (ndr_flags & NDR_BUFFERS) {
2071 return NDR_ERR_SUCCESS;
2074 _PUBLIC_ enum ndr_err_code ndr_pull_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_pull *ndr, int ndr_flags, struct NTLMSSP_MESSAGE_SIGNATURE *r)
2076 if (ndr_flags & NDR_SCALARS) {
2077 NDR_CHECK(ndr_pull_align(ndr, 4));
2078 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Version));
2079 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->RandomPad));
2080 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Checksum));
2081 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SeqNum));
2082 NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
2084 if (ndr_flags & NDR_BUFFERS) {
2086 return NDR_ERR_SUCCESS;
2089 _PUBLIC_ void ndr_print_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_print *ndr, const char *name, const struct NTLMSSP_MESSAGE_SIGNATURE *r)
2091 ndr_print_struct(ndr, name, "NTLMSSP_MESSAGE_SIGNATURE");
2092 ndr->depth++;
2093 ndr_print_uint32(ndr, "Version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NTLMSSP_SIGN_VERSION:r->Version);
2094 ndr_print_uint32(ndr, "RandomPad", r->RandomPad);
2095 ndr_print_uint32(ndr, "Checksum", r->Checksum);
2096 ndr_print_uint32(ndr, "SeqNum", r->SeqNum);
2097 ndr->depth--;
2100 _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)
2103 uint32_t _flags_save_STRUCT = ndr->flags;
2104 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2105 if (ndr_flags & NDR_SCALARS) {
2106 NDR_CHECK(ndr_push_align(ndr, 4));
2107 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, NTLMSSP_SIGN_VERSION));
2108 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->Checksum, 8));
2109 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SeqNum));
2110 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
2112 if (ndr_flags & NDR_BUFFERS) {
2114 ndr->flags = _flags_save_STRUCT;
2116 return NDR_ERR_SUCCESS;
2119 _PUBLIC_ enum ndr_err_code ndr_pull_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_pull *ndr, int ndr_flags, struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2 *r)
2121 uint32_t size_Checksum_0 = 0;
2123 uint32_t _flags_save_STRUCT = ndr->flags;
2124 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2125 if (ndr_flags & NDR_SCALARS) {
2126 NDR_CHECK(ndr_pull_align(ndr, 4));
2127 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->Version));
2128 size_Checksum_0 = 8;
2129 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->Checksum, size_Checksum_0));
2130 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SeqNum));
2131 NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
2133 if (ndr_flags & NDR_BUFFERS) {
2135 ndr->flags = _flags_save_STRUCT;
2137 return NDR_ERR_SUCCESS;
2140 _PUBLIC_ void ndr_print_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_print *ndr, const char *name, const struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2 *r)
2142 ndr_print_struct(ndr, name, "NTLMSSP_MESSAGE_SIGNATURE_NTLMv2");
2144 uint32_t _flags_save_STRUCT = ndr->flags;
2145 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2146 ndr->depth++;
2147 ndr_print_uint32(ndr, "Version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NTLMSSP_SIGN_VERSION:r->Version);
2148 ndr_print_array_uint8(ndr, "Checksum", r->Checksum, 8);
2149 ndr_print_uint32(ndr, "SeqNum", r->SeqNum);
2150 ndr->depth--;
2151 ndr->flags = _flags_save_STRUCT;
2155 static enum ndr_err_code ndr_push_decode_NEGOTIATE_MESSAGE(struct ndr_push *ndr, int flags, const struct decode_NEGOTIATE_MESSAGE *r)
2157 if (flags & NDR_IN) {
2158 NDR_CHECK(ndr_push_NEGOTIATE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.negotiate));
2160 if (flags & NDR_OUT) {
2162 return NDR_ERR_SUCCESS;
2165 static enum ndr_err_code ndr_pull_decode_NEGOTIATE_MESSAGE(struct ndr_pull *ndr, int flags, struct decode_NEGOTIATE_MESSAGE *r)
2167 if (flags & NDR_IN) {
2168 NDR_CHECK(ndr_pull_NEGOTIATE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.negotiate));
2170 if (flags & NDR_OUT) {
2172 return NDR_ERR_SUCCESS;
2175 _PUBLIC_ void ndr_print_decode_NEGOTIATE_MESSAGE(struct ndr_print *ndr, const char *name, int flags, const struct decode_NEGOTIATE_MESSAGE *r)
2177 ndr_print_struct(ndr, name, "decode_NEGOTIATE_MESSAGE");
2178 ndr->depth++;
2179 if (flags & NDR_SET_VALUES) {
2180 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2182 if (flags & NDR_IN) {
2183 ndr_print_struct(ndr, "in", "decode_NEGOTIATE_MESSAGE");
2184 ndr->depth++;
2185 ndr_print_NEGOTIATE_MESSAGE(ndr, "negotiate", &r->in.negotiate);
2186 ndr->depth--;
2188 if (flags & NDR_OUT) {
2189 ndr_print_struct(ndr, "out", "decode_NEGOTIATE_MESSAGE");
2190 ndr->depth++;
2191 ndr->depth--;
2193 ndr->depth--;
2196 static enum ndr_err_code ndr_push_decode_CHALLENGE_MESSAGE(struct ndr_push *ndr, int flags, const struct decode_CHALLENGE_MESSAGE *r)
2198 if (flags & NDR_IN) {
2199 NDR_CHECK(ndr_push_CHALLENGE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.challenge));
2201 if (flags & NDR_OUT) {
2203 return NDR_ERR_SUCCESS;
2206 static enum ndr_err_code ndr_pull_decode_CHALLENGE_MESSAGE(struct ndr_pull *ndr, int flags, struct decode_CHALLENGE_MESSAGE *r)
2208 if (flags & NDR_IN) {
2209 NDR_CHECK(ndr_pull_CHALLENGE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.challenge));
2211 if (flags & NDR_OUT) {
2213 return NDR_ERR_SUCCESS;
2216 _PUBLIC_ void ndr_print_decode_CHALLENGE_MESSAGE(struct ndr_print *ndr, const char *name, int flags, const struct decode_CHALLENGE_MESSAGE *r)
2218 ndr_print_struct(ndr, name, "decode_CHALLENGE_MESSAGE");
2219 ndr->depth++;
2220 if (flags & NDR_SET_VALUES) {
2221 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2223 if (flags & NDR_IN) {
2224 ndr_print_struct(ndr, "in", "decode_CHALLENGE_MESSAGE");
2225 ndr->depth++;
2226 ndr_print_CHALLENGE_MESSAGE(ndr, "challenge", &r->in.challenge);
2227 ndr->depth--;
2229 if (flags & NDR_OUT) {
2230 ndr_print_struct(ndr, "out", "decode_CHALLENGE_MESSAGE");
2231 ndr->depth++;
2232 ndr->depth--;
2234 ndr->depth--;
2237 static enum ndr_err_code ndr_push_decode_AUTHENTICATE_MESSAGE(struct ndr_push *ndr, int flags, const struct decode_AUTHENTICATE_MESSAGE *r)
2239 if (flags & NDR_IN) {
2240 NDR_CHECK(ndr_push_AUTHENTICATE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.authenticate));
2242 if (flags & NDR_OUT) {
2244 return NDR_ERR_SUCCESS;
2247 static enum ndr_err_code ndr_pull_decode_AUTHENTICATE_MESSAGE(struct ndr_pull *ndr, int flags, struct decode_AUTHENTICATE_MESSAGE *r)
2249 if (flags & NDR_IN) {
2250 NDR_CHECK(ndr_pull_AUTHENTICATE_MESSAGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.authenticate));
2252 if (flags & NDR_OUT) {
2254 return NDR_ERR_SUCCESS;
2257 _PUBLIC_ void ndr_print_decode_AUTHENTICATE_MESSAGE(struct ndr_print *ndr, const char *name, int flags, const struct decode_AUTHENTICATE_MESSAGE *r)
2259 ndr_print_struct(ndr, name, "decode_AUTHENTICATE_MESSAGE");
2260 ndr->depth++;
2261 if (flags & NDR_SET_VALUES) {
2262 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2264 if (flags & NDR_IN) {
2265 ndr_print_struct(ndr, "in", "decode_AUTHENTICATE_MESSAGE");
2266 ndr->depth++;
2267 ndr_print_AUTHENTICATE_MESSAGE(ndr, "authenticate", &r->in.authenticate);
2268 ndr->depth--;
2270 if (flags & NDR_OUT) {
2271 ndr_print_struct(ndr, "out", "decode_AUTHENTICATE_MESSAGE");
2272 ndr->depth++;
2273 ndr->depth--;
2275 ndr->depth--;
2278 static enum ndr_err_code ndr_push_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_push *ndr, int flags, const struct decode_NTLMv2_CLIENT_CHALLENGE *r)
2280 if (flags & NDR_IN) {
2281 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.challenge));
2283 if (flags & NDR_OUT) {
2285 return NDR_ERR_SUCCESS;
2288 static enum ndr_err_code ndr_pull_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_pull *ndr, int flags, struct decode_NTLMv2_CLIENT_CHALLENGE *r)
2290 if (flags & NDR_IN) {
2291 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.challenge));
2293 if (flags & NDR_OUT) {
2295 return NDR_ERR_SUCCESS;
2298 _PUBLIC_ void ndr_print_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_print *ndr, const char *name, int flags, const struct decode_NTLMv2_CLIENT_CHALLENGE *r)
2300 ndr_print_struct(ndr, name, "decode_NTLMv2_CLIENT_CHALLENGE");
2301 ndr->depth++;
2302 if (flags & NDR_SET_VALUES) {
2303 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2305 if (flags & NDR_IN) {
2306 ndr_print_struct(ndr, "in", "decode_NTLMv2_CLIENT_CHALLENGE");
2307 ndr->depth++;
2308 ndr_print_NTLMv2_CLIENT_CHALLENGE(ndr, "challenge", &r->in.challenge);
2309 ndr->depth--;
2311 if (flags & NDR_OUT) {
2312 ndr_print_struct(ndr, "out", "decode_NTLMv2_CLIENT_CHALLENGE");
2313 ndr->depth++;
2314 ndr->depth--;
2316 ndr->depth--;
2319 static const struct ndr_interface_call ntlmssp_calls[] = {
2321 "decode_NEGOTIATE_MESSAGE",
2322 sizeof(struct decode_NEGOTIATE_MESSAGE),
2323 (ndr_push_flags_fn_t) ndr_push_decode_NEGOTIATE_MESSAGE,
2324 (ndr_pull_flags_fn_t) ndr_pull_decode_NEGOTIATE_MESSAGE,
2325 (ndr_print_function_t) ndr_print_decode_NEGOTIATE_MESSAGE,
2326 false,
2329 "decode_CHALLENGE_MESSAGE",
2330 sizeof(struct decode_CHALLENGE_MESSAGE),
2331 (ndr_push_flags_fn_t) ndr_push_decode_CHALLENGE_MESSAGE,
2332 (ndr_pull_flags_fn_t) ndr_pull_decode_CHALLENGE_MESSAGE,
2333 (ndr_print_function_t) ndr_print_decode_CHALLENGE_MESSAGE,
2334 false,
2337 "decode_AUTHENTICATE_MESSAGE",
2338 sizeof(struct decode_AUTHENTICATE_MESSAGE),
2339 (ndr_push_flags_fn_t) ndr_push_decode_AUTHENTICATE_MESSAGE,
2340 (ndr_pull_flags_fn_t) ndr_pull_decode_AUTHENTICATE_MESSAGE,
2341 (ndr_print_function_t) ndr_print_decode_AUTHENTICATE_MESSAGE,
2342 false,
2345 "decode_NTLMv2_CLIENT_CHALLENGE",
2346 sizeof(struct decode_NTLMv2_CLIENT_CHALLENGE),
2347 (ndr_push_flags_fn_t) ndr_push_decode_NTLMv2_CLIENT_CHALLENGE,
2348 (ndr_pull_flags_fn_t) ndr_pull_decode_NTLMv2_CLIENT_CHALLENGE,
2349 (ndr_print_function_t) ndr_print_decode_NTLMv2_CLIENT_CHALLENGE,
2350 false,
2352 { NULL, 0, NULL, NULL, NULL, false }
2355 static const char * const ntlmssp_endpoint_strings[] = {
2356 "ncacn_np:[\\pipe\\ntlmssp]",
2359 static const struct ndr_interface_string_array ntlmssp_endpoints = {
2360 .count = 1,
2361 .names = ntlmssp_endpoint_strings
2364 static const char * const ntlmssp_authservice_strings[] = {
2365 "host",
2368 static const struct ndr_interface_string_array ntlmssp_authservices = {
2369 .count = 1,
2370 .names = ntlmssp_authservice_strings
2374 const struct ndr_interface_table ndr_table_ntlmssp = {
2375 .name = "ntlmssp",
2376 .syntax_id = {
2377 {0x6e746c6d,0x7373,0x700a,{0x00,0x00},{0x00,0x00,0x00,0x00}},
2378 NDR_NTLMSSP_VERSION
2380 .helpstring = NDR_NTLMSSP_HELPSTRING,
2381 .num_calls = 4,
2382 .calls = ntlmssp_calls,
2383 .endpoints = &ntlmssp_endpoints,
2384 .authservices = &ntlmssp_authservices