1 /* parser auto-generated by pidl */
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
)
15 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &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
;
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
)
41 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &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
);
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
);
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
)
88 NDR_CHECK(ndr_pull_enum_uint8(ndr
, NDR_SCALARS
, &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
;
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
)
113 NDR_CHECK(ndr_pull_enum_uint8(ndr
, NDR_SCALARS
, &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
;
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
)
139 NDR_CHECK(ndr_pull_enum_uint8(ndr
, NDR_SCALARS
, &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
;
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
));
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");
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
);
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));
207 case NTLMSSP_NEGOTIATE_VERSION
: {
208 NDR_CHECK(ndr_push_VERSION(ndr
, NDR_SCALARS
, &r
->version
));
216 if (ndr_flags
& NDR_BUFFERS
) {
217 int level
= ndr_push_get_switch_value(ndr
, r
);
219 case NTLMSSP_NEGOTIATE_VERSION
:
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
)
233 level
= ndr_pull_get_switch_value(ndr
, r
);
234 if (ndr_flags
& NDR_SCALARS
) {
235 NDR_CHECK(ndr_pull_union_align(ndr
, 2));
237 case NTLMSSP_NEGOTIATE_VERSION
: {
238 NDR_CHECK(ndr_pull_VERSION(ndr
, NDR_SCALARS
, &r
->version
));
246 if (ndr_flags
& NDR_BUFFERS
) {
248 case NTLMSSP_NEGOTIATE_VERSION
:
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
));
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
));
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
));
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
));
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");
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
);
425 ndr_print_string(ndr
, "DomainName", r
->DomainName
);
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
);
432 if (r
->Workstation
) {
433 ndr_print_string(ndr
, "Workstation", r
->Workstation
);
436 ndr_print_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
);
437 ndr_print_ntlmssp_Version(ndr
, "Version", &r
->Version
);
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
)
450 NDR_CHECK(ndr_pull_enum_uint1632(ndr
, NDR_SCALARS
, &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
;
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");
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);
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
)
530 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &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
);
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
);
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));
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
;
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
;
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
;
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
;
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
;
602 NDR_CHECK(ndr_push_ntlmssp_AvFlags(ndr
, NDR_SCALARS
, r
->AvFlags
));
605 case MsvAvTimestamp
: {
606 NDR_CHECK(ndr_push_NTTIME(ndr
, NDR_SCALARS
, r
->AvTimestamp
));
609 case MsAvRestrictions
: {
610 NDR_CHECK(ndr_push_Restriction_Encoding(ndr
, NDR_SCALARS
, &r
->AvRestrictions
));
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
;
622 case MsvChannelBindings
: {
623 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ChannelBindings
, 16));
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
;
637 if (ndr_flags
& NDR_BUFFERS
) {
638 int level
= ndr_push_get_switch_value(ndr
, r
);
643 case MsvAvNbComputerName
:
646 case MsvAvNbDomainName
:
649 case MsvAvDnsComputerName
:
652 case MsvAvDnsDomainName
:
655 case MsvAvDnsTreeName
:
664 case MsAvRestrictions
:
667 case MsvAvTargetName
:
670 case MsvChannelBindings
:
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
)
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));
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
;
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
;
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
;
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
;
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
;
743 NDR_CHECK(ndr_pull_ntlmssp_AvFlags(ndr
, NDR_SCALARS
, &r
->AvFlags
));
746 case MsvAvTimestamp
: {
747 NDR_CHECK(ndr_pull_NTTIME(ndr
, NDR_SCALARS
, &r
->AvTimestamp
));
750 case MsAvRestrictions
: {
751 NDR_CHECK(ndr_pull_Restriction_Encoding(ndr
, NDR_SCALARS
, &r
->AvRestrictions
));
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
;
763 case MsvChannelBindings
: {
764 size_ChannelBindings_0
= 16;
765 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ChannelBindings
, size_ChannelBindings_0
));
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
;
779 if (ndr_flags
& NDR_BUFFERS
) {
784 case MsvAvNbComputerName
:
787 case MsvAvNbDomainName
:
790 case MsvAvDnsComputerName
:
793 case MsvAvDnsDomainName
:
796 case MsvAvDnsTreeName
:
805 case MsAvRestrictions
:
808 case MsvAvTargetName
:
811 case MsvChannelBindings
:
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
)
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");
836 case MsvAvNbComputerName
:
837 ndr_print_string(ndr
, "AvNbComputerName", r
->AvNbComputerName
);
840 case MsvAvNbDomainName
:
841 ndr_print_string(ndr
, "AvNbDomainName", r
->AvNbDomainName
);
844 case MsvAvDnsComputerName
:
845 ndr_print_string(ndr
, "AvDnsComputerName", r
->AvDnsComputerName
);
848 case MsvAvDnsDomainName
:
849 ndr_print_string(ndr
, "AvDnsDomainName", r
->AvDnsDomainName
);
852 case MsvAvDnsTreeName
:
853 ndr_print_string(ndr
, "AvDnsTreeName", r
->AvDnsTreeName
);
857 ndr_print_ntlmssp_AvFlags(ndr
, "AvFlags", r
->AvFlags
);
861 ndr_print_NTTIME(ndr
, "AvTimestamp", r
->AvTimestamp
);
864 case MsAvRestrictions
:
865 ndr_print_Restriction_Encoding(ndr
, "AvRestrictions", &r
->AvRestrictions
);
868 case MsvAvTargetName
:
869 ndr_print_string(ndr
, "AvTargetName", r
->AvTargetName
);
872 case MsvChannelBindings
:
873 ndr_print_array_uint8(ndr
, "ChannelBindings", r
->ChannelBindings
, 16);
877 ndr_print_DATA_BLOB(ndr
, "blob", r
->blob
);
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
);
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
);
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
);
965 ndr_print_uint32(ndr
, "count", r
->count
);
966 ndr
->print(ndr
, "%s: ARRAY(%d)", "pair", (int)r
->count
);
968 for (cntr_pair_0
=0;cntr_pair_0
<r
->count
;cntr_pair_0
++) {
970 if (asprintf(&idx_0
, "[%d]", cntr_pair_0
) != -1) {
971 ndr_print_AV_PAIR(ndr
, "pair", &r
->pair
[cntr_pair_0
]);
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
));
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
));
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
);
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
);
1152 if (r
->TargetName
) {
1153 ndr_print_string(ndr
, "TargetName", r
->TargetName
);
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
);
1163 if (r
->TargetInfo
) {
1164 ndr_print_AV_PAIR_LIST(ndr
, "TargetInfo", r
->TargetInfo
);
1167 ndr_print_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
);
1168 ndr_print_ntlmssp_Version(ndr
, "Version", &r
->Version
);
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
);
1217 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 24);
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
);
1270 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 16);
1271 ndr_print_array_uint8(ndr
, "ChallengeFromClient", r
->ChallengeFromClient
, 8);
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));
1284 NDR_CHECK(ndr_push_LM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1292 if (ndr_flags
& NDR_BUFFERS
) {
1293 int level
= ndr_push_get_switch_value(ndr
, r
);
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
)
1309 level
= ndr_pull_get_switch_value(ndr
, r
);
1310 if (ndr_flags
& NDR_SCALARS
) {
1311 NDR_CHECK(ndr_pull_union_align(ndr
, 1));
1314 NDR_CHECK(ndr_pull_LM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1322 if (ndr_flags
& NDR_BUFFERS
) {
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
)
1338 level
= ndr_print_get_switch_value(ndr
, r
);
1339 ndr_print_union(ndr
, name
, level
, "ntlmssp_LM_RESPONSE");
1342 ndr_print_LM_RESPONSE(ndr
, "v1", &r
->v1
);
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
);
1394 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 24);
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
);
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
);
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
);
1547 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 16);
1548 ndr_print_NTLMv2_CLIENT_CHALLENGE(ndr
, "Challenge", &r
->Challenge
);
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));
1564 NDR_CHECK(ndr_push_NTLM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1568 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr
, NDR_SCALARS
, &r
->v2
));
1573 if (ndr_flags
& NDR_BUFFERS
) {
1574 int level
= ndr_push_get_switch_value(ndr
, r
);
1583 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr
, NDR_BUFFERS
, &r
->v2
));
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
)
1594 level
= ndr_pull_get_switch_value(ndr
, r
);
1595 if (ndr_flags
& NDR_SCALARS
) {
1596 NDR_CHECK(ndr_pull_union_align(ndr
, 4));
1602 NDR_CHECK(ndr_pull_NTLM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1606 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr
, NDR_SCALARS
, &r
->v2
));
1611 if (ndr_flags
& NDR_BUFFERS
) {
1620 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr
, NDR_BUFFERS
, &r
->v2
));
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
)
1631 level
= ndr_print_get_switch_value(ndr
, r
);
1632 ndr_print_union(ndr
, name
, level
, "ntlmssp_NTLM_RESPONSE");
1638 ndr_print_NTLM_RESPONSE(ndr
, "v1", &r
->v1
);
1642 ndr_print_NTLMv2_RESPONSE(ndr
, "v2", &r
->v2
);
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
));
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
));
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
));
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
));
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
));
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
));
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
));
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
));
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
);
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
);
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
);
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
);
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
);
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
);
2023 if (r
->DomainName
) {
2024 ndr_print_string(ndr
, "DomainName", r
->DomainName
);
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
);
2032 ndr_print_string(ndr
, "UserName", r
->UserName
);
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
);
2039 if (r
->Workstation
) {
2040 ndr_print_string(ndr
, "Workstation", r
->Workstation
);
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
);
2047 if (r
->EncryptedRandomSessionKey
) {
2048 ndr_print_DATA_BLOB(ndr
, "EncryptedRandomSessionKey", *r
->EncryptedRandomSessionKey
);
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
);
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");
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
);
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
);
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
);
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");
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");
2185 ndr_print_NEGOTIATE_MESSAGE(ndr
, "negotiate", &r
->in
.negotiate
);
2188 if (flags
& NDR_OUT
) {
2189 ndr_print_struct(ndr
, "out", "decode_NEGOTIATE_MESSAGE");
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");
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");
2226 ndr_print_CHALLENGE_MESSAGE(ndr
, "challenge", &r
->in
.challenge
);
2229 if (flags
& NDR_OUT
) {
2230 ndr_print_struct(ndr
, "out", "decode_CHALLENGE_MESSAGE");
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");
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");
2267 ndr_print_AUTHENTICATE_MESSAGE(ndr
, "authenticate", &r
->in
.authenticate
);
2270 if (flags
& NDR_OUT
) {
2271 ndr_print_struct(ndr
, "out", "decode_AUTHENTICATE_MESSAGE");
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");
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");
2308 ndr_print_NTLMv2_CLIENT_CHALLENGE(ndr
, "challenge", &r
->in
.challenge
);
2311 if (flags
& NDR_OUT
) {
2312 ndr_print_struct(ndr
, "out", "decode_NTLMv2_CLIENT_CHALLENGE");
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
,
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
,
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
,
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
,
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
= {
2361 .names
= ntlmssp_endpoint_strings
2364 static const char * const ntlmssp_authservice_strings
[] = {
2368 static const struct ndr_interface_string_array ntlmssp_authservices
= {
2370 .names
= ntlmssp_authservice_strings
2374 const struct ndr_interface_table ndr_table_ntlmssp
= {
2377 {0x6e746c6d,0x7373,0x700a,{0x00,0x00},{0x00,0x00,0x00,0x00}},
2380 .helpstring
= NDR_NTLMSSP_HELPSTRING
,
2382 .calls
= ntlmssp_calls
,
2383 .endpoints
= &ntlmssp_endpoints
,
2384 .authservices
= &ntlmssp_authservices