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_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_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_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_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_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_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_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_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
));
165 if (ndr_flags
& NDR_BUFFERS
) {
167 return NDR_ERR_SUCCESS
;
170 static enum ndr_err_code
ndr_pull_VERSION(struct ndr_pull
*ndr
, int ndr_flags
, struct VERSION
*r
)
172 if (ndr_flags
& NDR_SCALARS
) {
173 NDR_CHECK(ndr_pull_align(ndr
, 2));
174 NDR_CHECK(ndr_pull_ntlmssp_WindowsMajorVersion(ndr
, NDR_SCALARS
, &r
->ProductMajorVersion
));
175 NDR_CHECK(ndr_pull_ntlmssp_WindowsMinorVersion(ndr
, NDR_SCALARS
, &r
->ProductMinorVersion
));
176 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->ProductBuild
));
177 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Reserved
, 3));
178 NDR_CHECK(ndr_pull_ntlmssp_NTLMRevisionCurrent(ndr
, NDR_SCALARS
, &r
->NTLMRevisionCurrent
));
180 if (ndr_flags
& NDR_BUFFERS
) {
182 return NDR_ERR_SUCCESS
;
185 _PUBLIC_
void ndr_print_VERSION(struct ndr_print
*ndr
, const char *name
, const struct VERSION
*r
)
187 ndr_print_struct(ndr
, name
, "VERSION");
189 ndr_print_ntlmssp_WindowsMajorVersion(ndr
, "ProductMajorVersion", r
->ProductMajorVersion
);
190 ndr_print_ntlmssp_WindowsMinorVersion(ndr
, "ProductMinorVersion", r
->ProductMinorVersion
);
191 ndr_print_uint16(ndr
, "ProductBuild", r
->ProductBuild
);
192 ndr_print_array_uint8(ndr
, "Reserved", r
->Reserved
, 3);
193 ndr_print_ntlmssp_NTLMRevisionCurrent(ndr
, "NTLMRevisionCurrent", r
->NTLMRevisionCurrent
);
197 static enum ndr_err_code
ndr_push_ntlmssp_Version(struct ndr_push
*ndr
, int ndr_flags
, const union ntlmssp_Version
*r
)
199 if (ndr_flags
& NDR_SCALARS
) {
200 int level
= ndr_push_get_switch_value(ndr
, r
);
202 case NTLMSSP_NEGOTIATE_VERSION
: {
203 NDR_CHECK(ndr_push_VERSION(ndr
, NDR_SCALARS
, &r
->version
));
211 if (ndr_flags
& NDR_BUFFERS
) {
212 int level
= ndr_push_get_switch_value(ndr
, r
);
214 case NTLMSSP_NEGOTIATE_VERSION
:
222 return NDR_ERR_SUCCESS
;
225 static enum ndr_err_code
ndr_pull_ntlmssp_Version(struct ndr_pull
*ndr
, int ndr_flags
, union ntlmssp_Version
*r
)
228 level
= ndr_pull_get_switch_value(ndr
, r
);
229 if (ndr_flags
& NDR_SCALARS
) {
231 case NTLMSSP_NEGOTIATE_VERSION
: {
232 NDR_CHECK(ndr_pull_VERSION(ndr
, NDR_SCALARS
, &r
->version
));
240 if (ndr_flags
& NDR_BUFFERS
) {
242 case NTLMSSP_NEGOTIATE_VERSION
:
250 return NDR_ERR_SUCCESS
;
253 _PUBLIC_
void ndr_print_ntlmssp_Version(struct ndr_print
*ndr
, const char *name
, const union ntlmssp_Version
*r
)
256 level
= ndr_print_get_switch_value(ndr
, r
);
257 ndr_print_union(ndr
, name
, level
, "ntlmssp_Version");
259 case NTLMSSP_NEGOTIATE_VERSION
:
260 ndr_print_VERSION(ndr
, "version", &r
->version
);
269 _PUBLIC_
enum ndr_err_code
ndr_push_NEGOTIATE_MESSAGE(struct ndr_push
*ndr
, int ndr_flags
, const struct NEGOTIATE_MESSAGE
*r
)
271 if (ndr_flags
& NDR_SCALARS
) {
272 NDR_CHECK(ndr_push_align(ndr
, 4));
273 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS
));
274 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr
, NDR_SCALARS
, NtLmNegotiate
));
275 NDR_CHECK(ndr_push_NEGOTIATE(ndr
, NDR_SCALARS
, r
->NegotiateFlags
));
276 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->DomainName
)));
277 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->DomainName
)));
279 uint32_t _flags_save_string
= ndr
->flags
;
280 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
281 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->DomainName
));
282 ndr
->flags
= _flags_save_string
;
284 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->Workstation
)));
285 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->Workstation
)));
287 uint32_t _flags_save_string
= ndr
->flags
;
288 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
289 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->Workstation
));
290 ndr
->flags
= _flags_save_string
;
292 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
293 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
295 if (ndr_flags
& NDR_BUFFERS
) {
297 uint32_t _flags_save_string
= ndr
->flags
;
298 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
300 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->DomainName
));
302 struct ndr_push
*_ndr_DomainName
;
303 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_DomainName
, 0, strlen(r
->DomainName
)));
304 NDR_CHECK(ndr_push_string(_ndr_DomainName
, NDR_SCALARS
, r
->DomainName
));
305 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_DomainName
, 0, strlen(r
->DomainName
)));
308 ndr
->flags
= _flags_save_string
;
311 uint32_t _flags_save_string
= ndr
->flags
;
312 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
313 if (r
->Workstation
) {
314 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->Workstation
));
316 struct ndr_push
*_ndr_Workstation
;
317 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_Workstation
, 0, strlen(r
->Workstation
)));
318 NDR_CHECK(ndr_push_string(_ndr_Workstation
, NDR_SCALARS
, r
->Workstation
));
319 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_Workstation
, 0, strlen(r
->Workstation
)));
322 ndr
->flags
= _flags_save_string
;
324 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
326 return NDR_ERR_SUCCESS
;
329 _PUBLIC_
enum ndr_err_code
ndr_pull_NEGOTIATE_MESSAGE(struct ndr_pull
*ndr
, int ndr_flags
, struct NEGOTIATE_MESSAGE
*r
)
331 uint32_t _ptr_DomainName
;
332 TALLOC_CTX
*_mem_save_DomainName_0
;
333 uint32_t _ptr_Workstation
;
334 TALLOC_CTX
*_mem_save_Workstation_0
;
335 if (ndr_flags
& NDR_SCALARS
) {
336 NDR_CHECK(ndr_pull_align(ndr
, 4));
337 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->Signature
, 8, sizeof(uint8_t), CH_DOS
));
338 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr
, NDR_SCALARS
, &r
->MessageType
));
339 NDR_CHECK(ndr_pull_NEGOTIATE(ndr
, NDR_SCALARS
, &r
->NegotiateFlags
));
340 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameLen
));
341 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameMaxLen
));
343 uint32_t _flags_save_string
= ndr
->flags
;
344 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
345 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DomainName
));
346 if (_ptr_DomainName
) {
347 NDR_PULL_ALLOC(ndr
, r
->DomainName
);
348 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->DomainName
, _ptr_DomainName
));
350 r
->DomainName
= NULL
;
352 ndr
->flags
= _flags_save_string
;
354 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationLen
));
355 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationMaxLen
));
357 uint32_t _flags_save_string
= ndr
->flags
;
358 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
359 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Workstation
));
360 if (_ptr_Workstation
) {
361 NDR_PULL_ALLOC(ndr
, r
->Workstation
);
362 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->Workstation
, _ptr_Workstation
));
364 r
->Workstation
= NULL
;
366 ndr
->flags
= _flags_save_string
;
368 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
369 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
371 if (ndr_flags
& NDR_BUFFERS
) {
373 uint32_t _flags_save_string
= ndr
->flags
;
374 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
376 uint32_t _relative_save_offset
;
377 _relative_save_offset
= ndr
->offset
;
378 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->DomainName
));
379 _mem_save_DomainName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
380 NDR_PULL_SET_MEM_CTX(ndr
, r
->DomainName
, 0);
382 struct ndr_pull
*_ndr_DomainName
;
383 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_DomainName
, 0, r
->DomainNameLen
));
384 NDR_CHECK(ndr_pull_string(_ndr_DomainName
, NDR_SCALARS
, &r
->DomainName
));
385 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_DomainName
, 0, r
->DomainNameLen
));
387 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DomainName_0
, 0);
388 ndr
->offset
= _relative_save_offset
;
390 ndr
->flags
= _flags_save_string
;
393 uint32_t _flags_save_string
= ndr
->flags
;
394 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
395 if (r
->Workstation
) {
396 uint32_t _relative_save_offset
;
397 _relative_save_offset
= ndr
->offset
;
398 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->Workstation
));
399 _mem_save_Workstation_0
= NDR_PULL_GET_MEM_CTX(ndr
);
400 NDR_PULL_SET_MEM_CTX(ndr
, r
->Workstation
, 0);
402 struct ndr_pull
*_ndr_Workstation
;
403 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_Workstation
, 0, r
->WorkstationLen
));
404 NDR_CHECK(ndr_pull_string(_ndr_Workstation
, NDR_SCALARS
, &r
->Workstation
));
405 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_Workstation
, 0, r
->WorkstationLen
));
407 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Workstation_0
, 0);
408 ndr
->offset
= _relative_save_offset
;
410 ndr
->flags
= _flags_save_string
;
412 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
414 return NDR_ERR_SUCCESS
;
417 _PUBLIC_
void ndr_print_NEGOTIATE_MESSAGE(struct ndr_print
*ndr
, const char *name
, const struct NEGOTIATE_MESSAGE
*r
)
419 ndr_print_struct(ndr
, name
, "NEGOTIATE_MESSAGE");
421 ndr_print_string(ndr
, "Signature", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?"NTLMSSP":r
->Signature
);
422 ndr_print_ntlmssp_MessageType(ndr
, "MessageType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NtLmNegotiate
:r
->MessageType
);
423 ndr_print_NEGOTIATE(ndr
, "NegotiateFlags", r
->NegotiateFlags
);
424 ndr_print_uint16(ndr
, "DomainNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?strlen(r
->DomainName
):r
->DomainNameLen
);
425 ndr_print_uint16(ndr
, "DomainNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->DomainNameLen
:r
->DomainNameMaxLen
);
426 ndr_print_ptr(ndr
, "DomainName", r
->DomainName
);
429 ndr_print_string(ndr
, "DomainName", r
->DomainName
);
432 ndr_print_uint16(ndr
, "WorkstationLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?strlen(r
->Workstation
):r
->WorkstationLen
);
433 ndr_print_uint16(ndr
, "WorkstationMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->WorkstationLen
:r
->WorkstationMaxLen
);
434 ndr_print_ptr(ndr
, "Workstation", r
->Workstation
);
436 if (r
->Workstation
) {
437 ndr_print_string(ndr
, "Workstation", r
->Workstation
);
440 ndr_print_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
);
441 ndr_print_ntlmssp_Version(ndr
, "Version", &r
->Version
);
445 static enum ndr_err_code
ndr_push_ntlmssp_AvId(struct ndr_push
*ndr
, int ndr_flags
, enum ntlmssp_AvId r
)
447 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
));
448 return NDR_ERR_SUCCESS
;
451 static enum ndr_err_code
ndr_pull_ntlmssp_AvId(struct ndr_pull
*ndr
, int ndr_flags
, enum ntlmssp_AvId
*r
)
454 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &v
));
456 return NDR_ERR_SUCCESS
;
459 _PUBLIC_
void ndr_print_ntlmssp_AvId(struct ndr_print
*ndr
, const char *name
, enum ntlmssp_AvId r
)
461 const char *val
= NULL
;
464 case MsvAvEOL
: val
= "MsvAvEOL"; break;
465 case MsvAvNbComputerName
: val
= "MsvAvNbComputerName"; break;
466 case MsvAvNbDomainName
: val
= "MsvAvNbDomainName"; break;
467 case MsvAvDnsComputerName
: val
= "MsvAvDnsComputerName"; break;
468 case MsvAvDnsDomainName
: val
= "MsvAvDnsDomainName"; break;
469 case MsvAvDnsTreeName
: val
= "MsvAvDnsTreeName"; break;
470 case MsvAvFlags
: val
= "MsvAvFlags"; break;
471 case MsvAvTimestamp
: val
= "MsvAvTimestamp"; break;
472 case MsAvRestrictions
: val
= "MsAvRestrictions"; break;
473 case MsvAvTargetName
: val
= "MsvAvTargetName"; break;
474 case MsvChannelBindings
: val
= "MsvChannelBindings"; break;
476 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
479 static enum ndr_err_code
ndr_push_Restriction_Encoding(struct ndr_push
*ndr
, int ndr_flags
, const struct Restriction_Encoding
*r
)
481 if (ndr_flags
& NDR_SCALARS
) {
482 NDR_CHECK(ndr_push_align(ndr
, 4));
483 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Size
));
484 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
485 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->IntegrityLevel
));
486 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->SubjectIntegrityLevel
));
487 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->MachineId
, 32));
489 if (ndr_flags
& NDR_BUFFERS
) {
491 return NDR_ERR_SUCCESS
;
494 static enum ndr_err_code
ndr_pull_Restriction_Encoding(struct ndr_pull
*ndr
, int ndr_flags
, struct Restriction_Encoding
*r
)
496 if (ndr_flags
& NDR_SCALARS
) {
497 NDR_CHECK(ndr_pull_align(ndr
, 4));
498 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Size
));
499 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Z4
));
500 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->IntegrityLevel
));
501 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->SubjectIntegrityLevel
));
502 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->MachineId
, 32));
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
);
555 case MsvAvNbComputerName
: {
557 uint32_t _flags_save_string
= ndr
->flags
;
558 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
559 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvNbComputerName
));
560 ndr
->flags
= _flags_save_string
;
564 case MsvAvNbDomainName
: {
566 uint32_t _flags_save_string
= ndr
->flags
;
567 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
568 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvNbDomainName
));
569 ndr
->flags
= _flags_save_string
;
573 case MsvAvDnsComputerName
: {
575 uint32_t _flags_save_string
= ndr
->flags
;
576 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
577 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvDnsComputerName
));
578 ndr
->flags
= _flags_save_string
;
582 case MsvAvDnsDomainName
: {
584 uint32_t _flags_save_string
= ndr
->flags
;
585 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
586 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvDnsDomainName
));
587 ndr
->flags
= _flags_save_string
;
591 case MsvAvDnsTreeName
: {
593 uint32_t _flags_save_string
= ndr
->flags
;
594 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
595 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvDnsTreeName
));
596 ndr
->flags
= _flags_save_string
;
601 NDR_CHECK(ndr_push_ntlmssp_AvFlags(ndr
, NDR_SCALARS
, r
->AvFlags
));
604 case MsvAvTimestamp
: {
605 NDR_CHECK(ndr_push_NTTIME(ndr
, NDR_SCALARS
, r
->AvTimestamp
));
608 case MsAvRestrictions
: {
609 NDR_CHECK(ndr_push_Restriction_Encoding(ndr
, NDR_SCALARS
, &r
->AvRestrictions
));
612 case MsvAvTargetName
: {
614 uint32_t _flags_save_string
= ndr
->flags
;
615 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
616 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvTargetName
));
617 ndr
->flags
= _flags_save_string
;
621 case MsvChannelBindings
: {
622 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ChannelBindings
, 16));
627 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
628 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
629 NDR_CHECK(ndr_push_DATA_BLOB(ndr
, NDR_SCALARS
, r
->blob
));
630 ndr
->flags
= _flags_save_DATA_BLOB
;
636 if (ndr_flags
& NDR_BUFFERS
) {
637 int level
= ndr_push_get_switch_value(ndr
, r
);
642 case MsvAvNbComputerName
:
645 case MsvAvNbDomainName
:
648 case MsvAvDnsComputerName
:
651 case MsvAvDnsDomainName
:
654 case MsvAvDnsTreeName
:
663 case MsAvRestrictions
:
666 case MsvAvTargetName
:
669 case MsvChannelBindings
:
677 ndr
->flags
= _flags_save_UNION
;
679 return NDR_ERR_SUCCESS
;
682 static enum ndr_err_code
ndr_pull_ntlmssp_AvValue(struct ndr_pull
*ndr
, int ndr_flags
, union ntlmssp_AvValue
*r
)
686 uint32_t _flags_save_UNION
= ndr
->flags
;
687 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
688 level
= ndr_pull_get_switch_value(ndr
, r
);
689 if (ndr_flags
& NDR_SCALARS
) {
694 case MsvAvNbComputerName
: {
696 uint32_t _flags_save_string
= ndr
->flags
;
697 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
698 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvNbComputerName
));
699 ndr
->flags
= _flags_save_string
;
703 case MsvAvNbDomainName
: {
705 uint32_t _flags_save_string
= ndr
->flags
;
706 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
707 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvNbDomainName
));
708 ndr
->flags
= _flags_save_string
;
712 case MsvAvDnsComputerName
: {
714 uint32_t _flags_save_string
= ndr
->flags
;
715 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
716 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvDnsComputerName
));
717 ndr
->flags
= _flags_save_string
;
721 case MsvAvDnsDomainName
: {
723 uint32_t _flags_save_string
= ndr
->flags
;
724 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
725 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvDnsDomainName
));
726 ndr
->flags
= _flags_save_string
;
730 case MsvAvDnsTreeName
: {
732 uint32_t _flags_save_string
= ndr
->flags
;
733 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
734 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvDnsTreeName
));
735 ndr
->flags
= _flags_save_string
;
740 NDR_CHECK(ndr_pull_ntlmssp_AvFlags(ndr
, NDR_SCALARS
, &r
->AvFlags
));
743 case MsvAvTimestamp
: {
744 NDR_CHECK(ndr_pull_NTTIME(ndr
, NDR_SCALARS
, &r
->AvTimestamp
));
747 case MsAvRestrictions
: {
748 NDR_CHECK(ndr_pull_Restriction_Encoding(ndr
, NDR_SCALARS
, &r
->AvRestrictions
));
751 case MsvAvTargetName
: {
753 uint32_t _flags_save_string
= ndr
->flags
;
754 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
755 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvTargetName
));
756 ndr
->flags
= _flags_save_string
;
760 case MsvChannelBindings
: {
761 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ChannelBindings
, 16));
766 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
767 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
768 NDR_CHECK(ndr_pull_DATA_BLOB(ndr
, NDR_SCALARS
, &r
->blob
));
769 ndr
->flags
= _flags_save_DATA_BLOB
;
775 if (ndr_flags
& NDR_BUFFERS
) {
780 case MsvAvNbComputerName
:
783 case MsvAvNbDomainName
:
786 case MsvAvDnsComputerName
:
789 case MsvAvDnsDomainName
:
792 case MsvAvDnsTreeName
:
801 case MsAvRestrictions
:
804 case MsvAvTargetName
:
807 case MsvChannelBindings
:
815 ndr
->flags
= _flags_save_UNION
;
817 return NDR_ERR_SUCCESS
;
820 _PUBLIC_
void ndr_print_ntlmssp_AvValue(struct ndr_print
*ndr
, const char *name
, const union ntlmssp_AvValue
*r
)
824 uint32_t _flags_save_UNION
= ndr
->flags
;
825 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
826 level
= ndr_print_get_switch_value(ndr
, r
);
827 ndr_print_union(ndr
, name
, level
, "ntlmssp_AvValue");
832 case MsvAvNbComputerName
:
833 ndr_print_string(ndr
, "AvNbComputerName", r
->AvNbComputerName
);
836 case MsvAvNbDomainName
:
837 ndr_print_string(ndr
, "AvNbDomainName", r
->AvNbDomainName
);
840 case MsvAvDnsComputerName
:
841 ndr_print_string(ndr
, "AvDnsComputerName", r
->AvDnsComputerName
);
844 case MsvAvDnsDomainName
:
845 ndr_print_string(ndr
, "AvDnsDomainName", r
->AvDnsDomainName
);
848 case MsvAvDnsTreeName
:
849 ndr_print_string(ndr
, "AvDnsTreeName", r
->AvDnsTreeName
);
853 ndr_print_ntlmssp_AvFlags(ndr
, "AvFlags", r
->AvFlags
);
857 ndr_print_NTTIME(ndr
, "AvTimestamp", r
->AvTimestamp
);
860 case MsAvRestrictions
:
861 ndr_print_Restriction_Encoding(ndr
, "AvRestrictions", &r
->AvRestrictions
);
864 case MsvAvTargetName
:
865 ndr_print_string(ndr
, "AvTargetName", r
->AvTargetName
);
868 case MsvChannelBindings
:
869 ndr_print_array_uint8(ndr
, "ChannelBindings", r
->ChannelBindings
, 16);
873 ndr_print_DATA_BLOB(ndr
, "blob", r
->blob
);
877 ndr
->flags
= _flags_save_UNION
;
881 static size_t ndr_size_ntlmssp_AvValue(const union ntlmssp_AvValue
*r
, uint32_t level
, struct smb_iconv_convenience
*ic
, int flags
)
883 flags
|= LIBNDR_FLAG_NOALIGN
;
884 return ndr_size_union(r
, flags
, level
, (ndr_push_flags_fn_t
)ndr_push_ntlmssp_AvValue
, ic
);
887 _PUBLIC_
enum ndr_err_code
ndr_push_AV_PAIR(struct ndr_push
*ndr
, int ndr_flags
, const struct AV_PAIR
*r
)
890 uint32_t _flags_save_STRUCT
= ndr
->flags
;
891 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
892 if (ndr_flags
& NDR_SCALARS
) {
893 NDR_CHECK(ndr_push_align(ndr
, 4));
894 NDR_CHECK(ndr_push_ntlmssp_AvId(ndr
, NDR_SCALARS
, r
->AvId
));
895 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_size_ntlmssp_AvValue(&r
->Value
, r
->AvId
, ndr
->iconv_convenience
, 0)));
897 struct ndr_push
*_ndr_Value
;
898 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_Value
, 0, ndr_size_ntlmssp_AvValue(&r
->Value
, r
->AvId
, ndr
->iconv_convenience
, 0)));
899 NDR_CHECK(ndr_push_set_switch_value(_ndr_Value
, &r
->Value
, r
->AvId
));
900 NDR_CHECK(ndr_push_ntlmssp_AvValue(_ndr_Value
, NDR_SCALARS
|NDR_BUFFERS
, &r
->Value
));
901 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_Value
, 0, ndr_size_ntlmssp_AvValue(&r
->Value
, r
->AvId
, ndr
->iconv_convenience
, 0)));
904 if (ndr_flags
& NDR_BUFFERS
) {
906 ndr
->flags
= _flags_save_STRUCT
;
908 return NDR_ERR_SUCCESS
;
911 _PUBLIC_
enum ndr_err_code
ndr_pull_AV_PAIR(struct ndr_pull
*ndr
, int ndr_flags
, struct AV_PAIR
*r
)
914 uint32_t _flags_save_STRUCT
= ndr
->flags
;
915 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
916 if (ndr_flags
& NDR_SCALARS
) {
917 NDR_CHECK(ndr_pull_align(ndr
, 4));
918 NDR_CHECK(ndr_pull_ntlmssp_AvId(ndr
, NDR_SCALARS
, &r
->AvId
));
919 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->AvLen
));
921 struct ndr_pull
*_ndr_Value
;
922 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_Value
, 0, r
->AvLen
));
923 NDR_CHECK(ndr_pull_set_switch_value(_ndr_Value
, &r
->Value
, r
->AvId
));
924 NDR_CHECK(ndr_pull_ntlmssp_AvValue(_ndr_Value
, NDR_SCALARS
|NDR_BUFFERS
, &r
->Value
));
925 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_Value
, 0, r
->AvLen
));
928 if (ndr_flags
& NDR_BUFFERS
) {
930 ndr
->flags
= _flags_save_STRUCT
;
932 return NDR_ERR_SUCCESS
;
935 _PUBLIC_
void ndr_print_AV_PAIR(struct ndr_print
*ndr
, const char *name
, const struct AV_PAIR
*r
)
937 ndr_print_struct(ndr
, name
, "AV_PAIR");
939 uint32_t _flags_save_STRUCT
= ndr
->flags
;
940 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
942 ndr_print_ntlmssp_AvId(ndr
, "AvId", r
->AvId
);
943 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
);
944 ndr_print_set_switch_value(ndr
, &r
->Value
, r
->AvId
);
945 ndr_print_ntlmssp_AvValue(ndr
, "Value", &r
->Value
);
947 ndr
->flags
= _flags_save_STRUCT
;
951 _PUBLIC_
void ndr_print_AV_PAIR_LIST(struct ndr_print
*ndr
, const char *name
, const struct AV_PAIR_LIST
*r
)
953 uint32_t cntr_pair_0
;
954 ndr_print_struct(ndr
, name
, "AV_PAIR_LIST");
956 uint32_t _flags_save_STRUCT
= ndr
->flags
;
957 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
959 ndr_print_uint32(ndr
, "count", r
->count
);
960 ndr
->print(ndr
, "%s: ARRAY(%d)", "pair", (int)r
->count
);
962 for (cntr_pair_0
=0;cntr_pair_0
<r
->count
;cntr_pair_0
++) {
964 if (asprintf(&idx_0
, "[%d]", cntr_pair_0
) != -1) {
965 ndr_print_AV_PAIR(ndr
, "pair", &r
->pair
[cntr_pair_0
]);
971 ndr
->flags
= _flags_save_STRUCT
;
975 static size_t ndr_size_AV_PAIR_LIST(const struct AV_PAIR_LIST
*r
, struct smb_iconv_convenience
*ic
, int flags
)
977 flags
|= LIBNDR_FLAG_NOALIGN
;
978 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_AV_PAIR_LIST
, ic
);
981 _PUBLIC_
enum ndr_err_code
ndr_push_CHALLENGE_MESSAGE(struct ndr_push
*ndr
, int ndr_flags
, const struct CHALLENGE_MESSAGE
*r
)
984 uint32_t _flags_save_STRUCT
= ndr
->flags
;
985 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
986 if (ndr_flags
& NDR_SCALARS
) {
987 NDR_CHECK(ndr_push_align(ndr
, 4));
988 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS
));
989 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr
, NDR_SCALARS
, NtLmChallenge
));
990 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
991 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
993 uint32_t _flags_save_string
= ndr
->flags
;
994 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
995 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->TargetName
));
996 ndr
->flags
= _flags_save_string
;
998 NDR_CHECK(ndr_push_NEGOTIATE(ndr
, NDR_SCALARS
, r
->NegotiateFlags
));
999 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ServerChallenge
, 8));
1000 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Reserved
, 8));
1001 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
1002 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
1003 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->TargetInfo
));
1004 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
1005 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
1007 if (ndr_flags
& NDR_BUFFERS
) {
1009 uint32_t _flags_save_string
= ndr
->flags
;
1010 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1011 if (r
->TargetName
) {
1012 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->TargetName
));
1014 struct ndr_push
*_ndr_TargetName
;
1015 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_TargetName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
1016 NDR_CHECK(ndr_push_string(_ndr_TargetName
, NDR_SCALARS
, r
->TargetName
));
1017 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_TargetName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
1020 ndr
->flags
= _flags_save_string
;
1022 if (r
->TargetInfo
) {
1023 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->TargetInfo
));
1025 struct ndr_push
*_ndr_TargetInfo
;
1026 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_TargetInfo
, 0, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
1027 NDR_CHECK(ndr_push_AV_PAIR_LIST(_ndr_TargetInfo
, NDR_SCALARS
|NDR_BUFFERS
, r
->TargetInfo
));
1028 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_TargetInfo
, 0, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
1031 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1033 ndr
->flags
= _flags_save_STRUCT
;
1035 return NDR_ERR_SUCCESS
;
1038 _PUBLIC_
enum ndr_err_code
ndr_pull_CHALLENGE_MESSAGE(struct ndr_pull
*ndr
, int ndr_flags
, struct CHALLENGE_MESSAGE
*r
)
1040 uint32_t _ptr_TargetName
;
1041 TALLOC_CTX
*_mem_save_TargetName_0
;
1042 uint32_t _ptr_TargetInfo
;
1043 TALLOC_CTX
*_mem_save_TargetInfo_0
;
1045 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1046 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1047 if (ndr_flags
& NDR_SCALARS
) {
1048 NDR_CHECK(ndr_pull_align(ndr
, 4));
1049 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->Signature
, 8, sizeof(uint8_t), CH_DOS
));
1050 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr
, NDR_SCALARS
, &r
->MessageType
));
1051 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetNameLen
));
1052 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetNameMaxLen
));
1054 uint32_t _flags_save_string
= ndr
->flags
;
1055 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1056 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TargetName
));
1057 if (_ptr_TargetName
) {
1058 NDR_PULL_ALLOC(ndr
, r
->TargetName
);
1059 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->TargetName
, _ptr_TargetName
));
1061 r
->TargetName
= NULL
;
1063 ndr
->flags
= _flags_save_string
;
1065 NDR_CHECK(ndr_pull_NEGOTIATE(ndr
, NDR_SCALARS
, &r
->NegotiateFlags
));
1066 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ServerChallenge
, 8));
1067 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Reserved
, 8));
1068 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetInfoLen
));
1069 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetNameInfoMaxLen
));
1070 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TargetInfo
));
1071 if (_ptr_TargetInfo
) {
1072 NDR_PULL_ALLOC(ndr
, r
->TargetInfo
);
1073 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->TargetInfo
, _ptr_TargetInfo
));
1075 r
->TargetInfo
= NULL
;
1077 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
1078 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
1080 if (ndr_flags
& NDR_BUFFERS
) {
1082 uint32_t _flags_save_string
= ndr
->flags
;
1083 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1084 if (r
->TargetName
) {
1085 uint32_t _relative_save_offset
;
1086 _relative_save_offset
= ndr
->offset
;
1087 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->TargetName
));
1088 _mem_save_TargetName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1089 NDR_PULL_SET_MEM_CTX(ndr
, r
->TargetName
, 0);
1091 struct ndr_pull
*_ndr_TargetName
;
1092 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_TargetName
, 0, r
->TargetNameLen
));
1093 NDR_CHECK(ndr_pull_string(_ndr_TargetName
, NDR_SCALARS
, &r
->TargetName
));
1094 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_TargetName
, 0, r
->TargetNameLen
));
1096 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TargetName_0
, 0);
1097 ndr
->offset
= _relative_save_offset
;
1099 ndr
->flags
= _flags_save_string
;
1101 if (r
->TargetInfo
) {
1102 uint32_t _relative_save_offset
;
1103 _relative_save_offset
= ndr
->offset
;
1104 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->TargetInfo
));
1105 _mem_save_TargetInfo_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1106 NDR_PULL_SET_MEM_CTX(ndr
, r
->TargetInfo
, 0);
1108 struct ndr_pull
*_ndr_TargetInfo
;
1109 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_TargetInfo
, 0, r
->TargetInfoLen
));
1110 NDR_CHECK(ndr_pull_AV_PAIR_LIST(_ndr_TargetInfo
, NDR_SCALARS
|NDR_BUFFERS
, r
->TargetInfo
));
1111 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_TargetInfo
, 0, r
->TargetInfoLen
));
1113 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TargetInfo_0
, 0);
1114 ndr
->offset
= _relative_save_offset
;
1116 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1118 ndr
->flags
= _flags_save_STRUCT
;
1120 return NDR_ERR_SUCCESS
;
1123 _PUBLIC_
void ndr_print_CHALLENGE_MESSAGE(struct ndr_print
*ndr
, const char *name
, const struct CHALLENGE_MESSAGE
*r
)
1125 ndr_print_struct(ndr
, name
, "CHALLENGE_MESSAGE");
1127 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1128 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1130 ndr_print_string(ndr
, "Signature", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?"NTLMSSP":r
->Signature
);
1131 ndr_print_ntlmssp_MessageType(ndr
, "MessageType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NtLmChallenge
:r
->MessageType
);
1132 ndr_print_uint16(ndr
, "TargetNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
):r
->TargetNameLen
);
1133 ndr_print_uint16(ndr
, "TargetNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->TargetNameLen
:r
->TargetNameMaxLen
);
1134 ndr_print_ptr(ndr
, "TargetName", r
->TargetName
);
1136 if (r
->TargetName
) {
1137 ndr_print_string(ndr
, "TargetName", r
->TargetName
);
1140 ndr_print_NEGOTIATE(ndr
, "NegotiateFlags", r
->NegotiateFlags
);
1141 ndr_print_array_uint8(ndr
, "ServerChallenge", r
->ServerChallenge
, 8);
1142 ndr_print_array_uint8(ndr
, "Reserved", r
->Reserved
, 8);
1143 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
);
1144 ndr_print_uint16(ndr
, "TargetNameInfoMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->TargetInfoLen
:r
->TargetNameInfoMaxLen
);
1145 ndr_print_ptr(ndr
, "TargetInfo", r
->TargetInfo
);
1147 if (r
->TargetInfo
) {
1148 ndr_print_AV_PAIR_LIST(ndr
, "TargetInfo", r
->TargetInfo
);
1151 ndr_print_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
);
1152 ndr_print_ntlmssp_Version(ndr
, "Version", &r
->Version
);
1154 ndr
->flags
= _flags_save_STRUCT
;
1158 _PUBLIC_
enum ndr_err_code
ndr_push_LM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct LM_RESPONSE
*r
)
1161 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1162 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1163 if (ndr_flags
& NDR_SCALARS
) {
1164 NDR_CHECK(ndr_push_align(ndr
, 1));
1165 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1167 if (ndr_flags
& NDR_BUFFERS
) {
1169 ndr
->flags
= _flags_save_STRUCT
;
1171 return NDR_ERR_SUCCESS
;
1174 _PUBLIC_
enum ndr_err_code
ndr_pull_LM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, 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_pull_align(ndr
, 1));
1181 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1183 if (ndr_flags
& NDR_BUFFERS
) {
1185 ndr
->flags
= _flags_save_STRUCT
;
1187 return NDR_ERR_SUCCESS
;
1190 _PUBLIC_
void ndr_print_LM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct LM_RESPONSE
*r
)
1192 ndr_print_struct(ndr
, name
, "LM_RESPONSE");
1194 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1195 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1197 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 24);
1199 ndr
->flags
= _flags_save_STRUCT
;
1203 _PUBLIC_
enum ndr_err_code
ndr_push_LMv2_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct LMv2_RESPONSE
*r
)
1206 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1207 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1208 if (ndr_flags
& NDR_SCALARS
) {
1209 NDR_CHECK(ndr_push_align(ndr
, 1));
1210 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1211 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1213 if (ndr_flags
& NDR_BUFFERS
) {
1215 ndr
->flags
= _flags_save_STRUCT
;
1217 return NDR_ERR_SUCCESS
;
1220 _PUBLIC_
enum ndr_err_code
ndr_pull_LMv2_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct LMv2_RESPONSE
*r
)
1223 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1224 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1225 if (ndr_flags
& NDR_SCALARS
) {
1226 NDR_CHECK(ndr_pull_align(ndr
, 1));
1227 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1228 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1230 if (ndr_flags
& NDR_BUFFERS
) {
1232 ndr
->flags
= _flags_save_STRUCT
;
1234 return NDR_ERR_SUCCESS
;
1237 _PUBLIC_
void ndr_print_LMv2_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct LMv2_RESPONSE
*r
)
1239 ndr_print_struct(ndr
, name
, "LMv2_RESPONSE");
1241 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1242 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1244 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 16);
1245 ndr_print_array_uint8(ndr
, "ChallengeFromClient", r
->ChallengeFromClient
, 8);
1247 ndr
->flags
= _flags_save_STRUCT
;
1251 static enum ndr_err_code
ndr_push_ntlmssp_LM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const union ntlmssp_LM_RESPONSE
*r
)
1253 if (ndr_flags
& NDR_SCALARS
) {
1254 int level
= ndr_push_get_switch_value(ndr
, r
);
1257 NDR_CHECK(ndr_push_LM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1265 if (ndr_flags
& NDR_BUFFERS
) {
1266 int level
= ndr_push_get_switch_value(ndr
, r
);
1276 return NDR_ERR_SUCCESS
;
1279 static enum ndr_err_code
ndr_pull_ntlmssp_LM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, union ntlmssp_LM_RESPONSE
*r
)
1282 level
= ndr_pull_get_switch_value(ndr
, r
);
1283 if (ndr_flags
& NDR_SCALARS
) {
1286 NDR_CHECK(ndr_pull_LM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1294 if (ndr_flags
& NDR_BUFFERS
) {
1304 return NDR_ERR_SUCCESS
;
1307 _PUBLIC_
void ndr_print_ntlmssp_LM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const union ntlmssp_LM_RESPONSE
*r
)
1310 level
= ndr_print_get_switch_value(ndr
, r
);
1311 ndr_print_union(ndr
, name
, level
, "ntlmssp_LM_RESPONSE");
1314 ndr_print_LM_RESPONSE(ndr
, "v1", &r
->v1
);
1323 _PUBLIC_
enum ndr_err_code
ndr_push_NTLM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLM_RESPONSE
*r
)
1326 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1327 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1328 if (ndr_flags
& NDR_SCALARS
) {
1329 NDR_CHECK(ndr_push_align(ndr
, 1));
1330 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1332 if (ndr_flags
& NDR_BUFFERS
) {
1334 ndr
->flags
= _flags_save_STRUCT
;
1336 return NDR_ERR_SUCCESS
;
1339 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLM_RESPONSE
*r
)
1342 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1343 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1344 if (ndr_flags
& NDR_SCALARS
) {
1345 NDR_CHECK(ndr_pull_align(ndr
, 1));
1346 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1348 if (ndr_flags
& NDR_BUFFERS
) {
1350 ndr
->flags
= _flags_save_STRUCT
;
1352 return NDR_ERR_SUCCESS
;
1355 _PUBLIC_
void ndr_print_NTLM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct NTLM_RESPONSE
*r
)
1357 ndr_print_struct(ndr
, name
, "NTLM_RESPONSE");
1359 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1360 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1362 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 24);
1364 ndr
->flags
= _flags_save_STRUCT
;
1368 static enum ndr_err_code
ndr_push_NTLMv2_CLIENT_CHALLENGE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLMv2_CLIENT_CHALLENGE
*r
)
1371 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1372 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1373 if (ndr_flags
& NDR_SCALARS
) {
1374 NDR_CHECK(ndr_push_align(ndr
, 4));
1375 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, 1));
1376 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, 1));
1377 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->Reserved1
));
1378 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Reserved2
));
1379 NDR_CHECK(ndr_push_NTTIME(ndr
, NDR_SCALARS
, r
->TimeStamp
));
1380 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1381 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Reserved3
));
1383 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1384 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1386 struct ndr_push
*_ndr_AvPairs
;
1387 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_AvPairs
, 0, -1));
1388 NDR_CHECK(ndr_push_AV_PAIR_LIST(_ndr_AvPairs
, NDR_SCALARS
|NDR_BUFFERS
, &r
->AvPairs
));
1389 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_AvPairs
, 0, -1));
1391 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1394 if (ndr_flags
& NDR_BUFFERS
) {
1396 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1397 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1398 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1401 ndr
->flags
= _flags_save_STRUCT
;
1403 return NDR_ERR_SUCCESS
;
1406 static enum ndr_err_code
ndr_pull_NTLMv2_CLIENT_CHALLENGE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMv2_CLIENT_CHALLENGE
*r
)
1409 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1410 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1411 if (ndr_flags
& NDR_SCALARS
) {
1412 NDR_CHECK(ndr_pull_align(ndr
, 4));
1413 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->RespType
));
1414 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->HiRespType
));
1415 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->Reserved1
));
1416 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Reserved2
));
1417 NDR_CHECK(ndr_pull_NTTIME(ndr
, NDR_SCALARS
, &r
->TimeStamp
));
1418 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1419 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Reserved3
));
1421 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1422 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1424 struct ndr_pull
*_ndr_AvPairs
;
1425 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_AvPairs
, 0, -1));
1426 NDR_CHECK(ndr_pull_AV_PAIR_LIST(_ndr_AvPairs
, NDR_SCALARS
|NDR_BUFFERS
, &r
->AvPairs
));
1427 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_AvPairs
, 0, -1));
1429 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1432 if (ndr_flags
& NDR_BUFFERS
) {
1434 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1435 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1436 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1439 ndr
->flags
= _flags_save_STRUCT
;
1441 return NDR_ERR_SUCCESS
;
1444 _PUBLIC_
void ndr_print_NTLMv2_CLIENT_CHALLENGE(struct ndr_print
*ndr
, const char *name
, const struct NTLMv2_CLIENT_CHALLENGE
*r
)
1446 ndr_print_struct(ndr
, name
, "NTLMv2_CLIENT_CHALLENGE");
1448 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1449 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1451 ndr_print_uint8(ndr
, "RespType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?1:r
->RespType
);
1452 ndr_print_uint8(ndr
, "HiRespType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?1:r
->HiRespType
);
1453 ndr_print_uint16(ndr
, "Reserved1", r
->Reserved1
);
1454 ndr_print_uint32(ndr
, "Reserved2", r
->Reserved2
);
1455 ndr_print_NTTIME(ndr
, "TimeStamp", r
->TimeStamp
);
1456 ndr_print_array_uint8(ndr
, "ChallengeFromClient", r
->ChallengeFromClient
, 8);
1457 ndr_print_uint32(ndr
, "Reserved3", r
->Reserved3
);
1458 ndr_print_AV_PAIR_LIST(ndr
, "AvPairs", &r
->AvPairs
);
1460 ndr
->flags
= _flags_save_STRUCT
;
1464 _PUBLIC_
enum ndr_err_code
ndr_push_NTLMv2_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLMv2_RESPONSE
*r
)
1467 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1468 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1469 if (ndr_flags
& NDR_SCALARS
) {
1470 NDR_CHECK(ndr_push_align(ndr
, 4));
1471 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1472 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_SCALARS
, &r
->Challenge
));
1474 if (ndr_flags
& NDR_BUFFERS
) {
1475 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_BUFFERS
, &r
->Challenge
));
1477 ndr
->flags
= _flags_save_STRUCT
;
1479 return NDR_ERR_SUCCESS
;
1482 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLMv2_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMv2_RESPONSE
*r
)
1485 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1486 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1487 if (ndr_flags
& NDR_SCALARS
) {
1488 NDR_CHECK(ndr_pull_align(ndr
, 4));
1489 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1490 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_SCALARS
, &r
->Challenge
));
1492 if (ndr_flags
& NDR_BUFFERS
) {
1493 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_BUFFERS
, &r
->Challenge
));
1495 ndr
->flags
= _flags_save_STRUCT
;
1497 return NDR_ERR_SUCCESS
;
1500 _PUBLIC_
void ndr_print_NTLMv2_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct NTLMv2_RESPONSE
*r
)
1502 ndr_print_struct(ndr
, name
, "NTLMv2_RESPONSE");
1504 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1505 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1507 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 16);
1508 ndr_print_NTLMv2_CLIENT_CHALLENGE(ndr
, "Challenge", &r
->Challenge
);
1510 ndr
->flags
= _flags_save_STRUCT
;
1514 _PUBLIC_
enum ndr_err_code
ndr_push_ntlmssp_NTLM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const union ntlmssp_NTLM_RESPONSE
*r
)
1516 if (ndr_flags
& NDR_SCALARS
) {
1517 int level
= ndr_push_get_switch_value(ndr
, r
);
1523 NDR_CHECK(ndr_push_NTLM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1527 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr
, NDR_SCALARS
, &r
->v2
));
1532 if (ndr_flags
& NDR_BUFFERS
) {
1533 int level
= ndr_push_get_switch_value(ndr
, r
);
1542 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr
, NDR_BUFFERS
, &r
->v2
));
1547 return NDR_ERR_SUCCESS
;
1550 _PUBLIC_
enum ndr_err_code
ndr_pull_ntlmssp_NTLM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, union ntlmssp_NTLM_RESPONSE
*r
)
1553 level
= ndr_pull_get_switch_value(ndr
, r
);
1554 if (ndr_flags
& NDR_SCALARS
) {
1560 NDR_CHECK(ndr_pull_NTLM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1564 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr
, NDR_SCALARS
, &r
->v2
));
1569 if (ndr_flags
& NDR_BUFFERS
) {
1578 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr
, NDR_BUFFERS
, &r
->v2
));
1583 return NDR_ERR_SUCCESS
;
1586 _PUBLIC_
void ndr_print_ntlmssp_NTLM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const union ntlmssp_NTLM_RESPONSE
*r
)
1589 level
= ndr_print_get_switch_value(ndr
, r
);
1590 ndr_print_union(ndr
, name
, level
, "ntlmssp_NTLM_RESPONSE");
1596 ndr_print_NTLM_RESPONSE(ndr
, "v1", &r
->v1
);
1600 ndr_print_NTLMv2_RESPONSE(ndr
, "v2", &r
->v2
);
1606 _PUBLIC_
enum ndr_err_code
ndr_push_AUTHENTICATE_MESSAGE(struct ndr_push
*ndr
, int ndr_flags
, const struct AUTHENTICATE_MESSAGE
*r
)
1609 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1610 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1611 if (ndr_flags
& NDR_SCALARS
) {
1612 NDR_CHECK(ndr_push_align(ndr
, 4));
1613 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS
));
1614 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr
, NDR_SCALARS
, NtLmAuthenticate
));
1615 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->LmChallengeResponseLen
));
1616 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->LmChallengeResponseLen
));
1617 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->LmChallengeResponse
));
1618 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->NtChallengeResponseLen
));
1619 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->NtChallengeResponseLen
));
1620 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->NtChallengeResponse
));
1621 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
1622 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
1624 uint32_t _flags_save_string
= ndr
->flags
;
1625 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1626 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->DomainName
));
1627 ndr
->flags
= _flags_save_string
;
1629 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
1630 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
1632 uint32_t _flags_save_string
= ndr
->flags
;
1633 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1634 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->UserName
));
1635 ndr
->flags
= _flags_save_string
;
1637 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
1638 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
1640 uint32_t _flags_save_string
= ndr
->flags
;
1641 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1642 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->Workstation
));
1643 ndr
->flags
= _flags_save_string
;
1645 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->EncryptedRandomSessionKey
->length
));
1646 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->EncryptedRandomSessionKey
->length
));
1647 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->EncryptedRandomSessionKey
));
1648 NDR_CHECK(ndr_push_NEGOTIATE(ndr
, NDR_SCALARS
, r
->NegotiateFlags
));
1649 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
1650 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
1652 if (ndr_flags
& NDR_BUFFERS
) {
1653 if (r
->LmChallengeResponse
) {
1654 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->LmChallengeResponse
));
1656 struct ndr_push
*_ndr_LmChallengeResponse
;
1657 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1658 NDR_CHECK(ndr_push_set_switch_value(_ndr_LmChallengeResponse
, r
->LmChallengeResponse
, r
->LmChallengeResponseLen
));
1659 NDR_CHECK(ndr_push_ntlmssp_LM_RESPONSE(_ndr_LmChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->LmChallengeResponse
));
1660 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1663 if (r
->NtChallengeResponse
) {
1664 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->NtChallengeResponse
));
1666 struct ndr_push
*_ndr_NtChallengeResponse
;
1667 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseLen
));
1668 NDR_CHECK(ndr_push_set_switch_value(_ndr_NtChallengeResponse
, r
->NtChallengeResponse
, r
->NtChallengeResponseLen
));
1669 NDR_CHECK(ndr_push_ntlmssp_NTLM_RESPONSE(_ndr_NtChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->NtChallengeResponse
));
1670 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseLen
));
1674 uint32_t _flags_save_string
= ndr
->flags
;
1675 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1676 if (r
->DomainName
) {
1677 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->DomainName
));
1679 struct ndr_push
*_ndr_DomainName
;
1680 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_DomainName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
1681 NDR_CHECK(ndr_push_string(_ndr_DomainName
, NDR_SCALARS
, r
->DomainName
));
1682 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_DomainName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
1685 ndr
->flags
= _flags_save_string
;
1688 uint32_t _flags_save_string
= ndr
->flags
;
1689 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1691 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->UserName
));
1693 struct ndr_push
*_ndr_UserName
;
1694 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_UserName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
1695 NDR_CHECK(ndr_push_string(_ndr_UserName
, NDR_SCALARS
, r
->UserName
));
1696 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_UserName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
1699 ndr
->flags
= _flags_save_string
;
1702 uint32_t _flags_save_string
= ndr
->flags
;
1703 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1704 if (r
->Workstation
) {
1705 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->Workstation
));
1707 struct ndr_push
*_ndr_Workstation
;
1708 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_Workstation
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
1709 NDR_CHECK(ndr_push_string(_ndr_Workstation
, NDR_SCALARS
, r
->Workstation
));
1710 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_Workstation
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
1713 ndr
->flags
= _flags_save_string
;
1715 if (r
->EncryptedRandomSessionKey
) {
1716 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->EncryptedRandomSessionKey
));
1718 struct ndr_push
*_ndr_EncryptedRandomSessionKey
;
1719 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKey
->length
));
1720 NDR_CHECK(ndr_push_DATA_BLOB(_ndr_EncryptedRandomSessionKey
, NDR_SCALARS
, *r
->EncryptedRandomSessionKey
));
1721 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKey
->length
));
1724 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1726 ndr
->flags
= _flags_save_STRUCT
;
1728 return NDR_ERR_SUCCESS
;
1731 _PUBLIC_
enum ndr_err_code
ndr_pull_AUTHENTICATE_MESSAGE(struct ndr_pull
*ndr
, int ndr_flags
, struct AUTHENTICATE_MESSAGE
*r
)
1733 uint32_t _ptr_LmChallengeResponse
;
1734 TALLOC_CTX
*_mem_save_LmChallengeResponse_0
;
1735 uint32_t _ptr_NtChallengeResponse
;
1736 TALLOC_CTX
*_mem_save_NtChallengeResponse_0
;
1737 uint32_t _ptr_DomainName
;
1738 TALLOC_CTX
*_mem_save_DomainName_0
;
1739 uint32_t _ptr_UserName
;
1740 TALLOC_CTX
*_mem_save_UserName_0
;
1741 uint32_t _ptr_Workstation
;
1742 TALLOC_CTX
*_mem_save_Workstation_0
;
1743 uint32_t _ptr_EncryptedRandomSessionKey
;
1744 TALLOC_CTX
*_mem_save_EncryptedRandomSessionKey_0
;
1746 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1747 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1748 if (ndr_flags
& NDR_SCALARS
) {
1749 NDR_CHECK(ndr_pull_align(ndr
, 4));
1750 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->Signature
, 8, sizeof(uint8_t), CH_DOS
));
1751 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr
, NDR_SCALARS
, &r
->MessageType
));
1752 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->LmChallengeResponseLen
));
1753 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->LmChallengeResponseMaxLen
));
1754 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LmChallengeResponse
));
1755 if (_ptr_LmChallengeResponse
) {
1756 NDR_PULL_ALLOC(ndr
, r
->LmChallengeResponse
);
1757 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->LmChallengeResponse
, _ptr_LmChallengeResponse
));
1759 r
->LmChallengeResponse
= NULL
;
1761 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->NtChallengeResponseLen
));
1762 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->NtChallengeResponseMaxLen
));
1763 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_NtChallengeResponse
));
1764 if (_ptr_NtChallengeResponse
) {
1765 NDR_PULL_ALLOC(ndr
, r
->NtChallengeResponse
);
1766 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->NtChallengeResponse
, _ptr_NtChallengeResponse
));
1768 r
->NtChallengeResponse
= NULL
;
1770 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameLen
));
1771 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameMaxLen
));
1773 uint32_t _flags_save_string
= ndr
->flags
;
1774 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1775 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DomainName
));
1776 if (_ptr_DomainName
) {
1777 NDR_PULL_ALLOC(ndr
, r
->DomainName
);
1778 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->DomainName
, _ptr_DomainName
));
1780 r
->DomainName
= NULL
;
1782 ndr
->flags
= _flags_save_string
;
1784 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->UserNameLen
));
1785 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->UserNameMaxLen
));
1787 uint32_t _flags_save_string
= ndr
->flags
;
1788 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1789 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_UserName
));
1790 if (_ptr_UserName
) {
1791 NDR_PULL_ALLOC(ndr
, r
->UserName
);
1792 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->UserName
, _ptr_UserName
));
1796 ndr
->flags
= _flags_save_string
;
1798 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationLen
));
1799 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationMaxLen
));
1801 uint32_t _flags_save_string
= ndr
->flags
;
1802 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1803 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Workstation
));
1804 if (_ptr_Workstation
) {
1805 NDR_PULL_ALLOC(ndr
, r
->Workstation
);
1806 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->Workstation
, _ptr_Workstation
));
1808 r
->Workstation
= NULL
;
1810 ndr
->flags
= _flags_save_string
;
1812 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->EncryptedRandomSessionKeyLen
));
1813 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->EncryptedRandomSessionKeyMaxLen
));
1814 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_EncryptedRandomSessionKey
));
1815 if (_ptr_EncryptedRandomSessionKey
) {
1816 NDR_PULL_ALLOC(ndr
, r
->EncryptedRandomSessionKey
);
1817 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->EncryptedRandomSessionKey
, _ptr_EncryptedRandomSessionKey
));
1819 r
->EncryptedRandomSessionKey
= NULL
;
1821 NDR_CHECK(ndr_pull_NEGOTIATE(ndr
, NDR_SCALARS
, &r
->NegotiateFlags
));
1822 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
1823 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
1825 if (ndr_flags
& NDR_BUFFERS
) {
1826 if (r
->LmChallengeResponse
) {
1827 uint32_t _relative_save_offset
;
1828 _relative_save_offset
= ndr
->offset
;
1829 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->LmChallengeResponse
));
1830 _mem_save_LmChallengeResponse_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1831 NDR_PULL_SET_MEM_CTX(ndr
, r
->LmChallengeResponse
, 0);
1833 struct ndr_pull
*_ndr_LmChallengeResponse
;
1834 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1835 NDR_CHECK(ndr_pull_set_switch_value(_ndr_LmChallengeResponse
, r
->LmChallengeResponse
, r
->LmChallengeResponseLen
));
1836 NDR_CHECK(ndr_pull_ntlmssp_LM_RESPONSE(_ndr_LmChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->LmChallengeResponse
));
1837 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1839 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LmChallengeResponse_0
, 0);
1840 ndr
->offset
= _relative_save_offset
;
1842 if (r
->NtChallengeResponse
) {
1843 uint32_t _relative_save_offset
;
1844 _relative_save_offset
= ndr
->offset
;
1845 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->NtChallengeResponse
));
1846 _mem_save_NtChallengeResponse_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1847 NDR_PULL_SET_MEM_CTX(ndr
, r
->NtChallengeResponse
, 0);
1849 struct ndr_pull
*_ndr_NtChallengeResponse
;
1850 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseMaxLen
));
1851 NDR_CHECK(ndr_pull_set_switch_value(_ndr_NtChallengeResponse
, r
->NtChallengeResponse
, r
->NtChallengeResponseLen
));
1852 NDR_CHECK(ndr_pull_ntlmssp_NTLM_RESPONSE(_ndr_NtChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->NtChallengeResponse
));
1853 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseMaxLen
));
1855 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_NtChallengeResponse_0
, 0);
1856 ndr
->offset
= _relative_save_offset
;
1859 uint32_t _flags_save_string
= ndr
->flags
;
1860 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1861 if (r
->DomainName
) {
1862 uint32_t _relative_save_offset
;
1863 _relative_save_offset
= ndr
->offset
;
1864 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->DomainName
));
1865 _mem_save_DomainName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1866 NDR_PULL_SET_MEM_CTX(ndr
, r
->DomainName
, 0);
1868 struct ndr_pull
*_ndr_DomainName
;
1869 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_DomainName
, 0, r
->DomainNameLen
));
1870 NDR_CHECK(ndr_pull_string(_ndr_DomainName
, NDR_SCALARS
, &r
->DomainName
));
1871 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_DomainName
, 0, r
->DomainNameLen
));
1873 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DomainName_0
, 0);
1874 ndr
->offset
= _relative_save_offset
;
1876 ndr
->flags
= _flags_save_string
;
1879 uint32_t _flags_save_string
= ndr
->flags
;
1880 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1882 uint32_t _relative_save_offset
;
1883 _relative_save_offset
= ndr
->offset
;
1884 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->UserName
));
1885 _mem_save_UserName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1886 NDR_PULL_SET_MEM_CTX(ndr
, r
->UserName
, 0);
1888 struct ndr_pull
*_ndr_UserName
;
1889 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_UserName
, 0, r
->UserNameLen
));
1890 NDR_CHECK(ndr_pull_string(_ndr_UserName
, NDR_SCALARS
, &r
->UserName
));
1891 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_UserName
, 0, r
->UserNameLen
));
1893 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_UserName_0
, 0);
1894 ndr
->offset
= _relative_save_offset
;
1896 ndr
->flags
= _flags_save_string
;
1899 uint32_t _flags_save_string
= ndr
->flags
;
1900 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1901 if (r
->Workstation
) {
1902 uint32_t _relative_save_offset
;
1903 _relative_save_offset
= ndr
->offset
;
1904 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->Workstation
));
1905 _mem_save_Workstation_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1906 NDR_PULL_SET_MEM_CTX(ndr
, r
->Workstation
, 0);
1908 struct ndr_pull
*_ndr_Workstation
;
1909 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_Workstation
, 0, r
->WorkstationLen
));
1910 NDR_CHECK(ndr_pull_string(_ndr_Workstation
, NDR_SCALARS
, &r
->Workstation
));
1911 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_Workstation
, 0, r
->WorkstationLen
));
1913 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Workstation_0
, 0);
1914 ndr
->offset
= _relative_save_offset
;
1916 ndr
->flags
= _flags_save_string
;
1918 if (r
->EncryptedRandomSessionKey
) {
1919 uint32_t _relative_save_offset
;
1920 _relative_save_offset
= ndr
->offset
;
1921 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->EncryptedRandomSessionKey
));
1922 _mem_save_EncryptedRandomSessionKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1923 NDR_PULL_SET_MEM_CTX(ndr
, r
->EncryptedRandomSessionKey
, 0);
1925 struct ndr_pull
*_ndr_EncryptedRandomSessionKey
;
1926 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKeyLen
));
1927 NDR_CHECK(ndr_pull_DATA_BLOB(_ndr_EncryptedRandomSessionKey
, NDR_SCALARS
, r
->EncryptedRandomSessionKey
));
1928 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKeyLen
));
1930 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_EncryptedRandomSessionKey_0
, 0);
1931 ndr
->offset
= _relative_save_offset
;
1933 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1935 ndr
->flags
= _flags_save_STRUCT
;
1937 return NDR_ERR_SUCCESS
;
1940 _PUBLIC_
void ndr_print_AUTHENTICATE_MESSAGE(struct ndr_print
*ndr
, const char *name
, const struct AUTHENTICATE_MESSAGE
*r
)
1942 ndr_print_struct(ndr
, name
, "AUTHENTICATE_MESSAGE");
1944 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1945 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1947 ndr_print_string(ndr
, "Signature", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?"NTLMSSP":r
->Signature
);
1948 ndr_print_ntlmssp_MessageType(ndr
, "MessageType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NtLmAuthenticate
:r
->MessageType
);
1949 ndr_print_uint16(ndr
, "LmChallengeResponseLen", r
->LmChallengeResponseLen
);
1950 ndr_print_uint16(ndr
, "LmChallengeResponseMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->LmChallengeResponseLen
:r
->LmChallengeResponseMaxLen
);
1951 ndr_print_ptr(ndr
, "LmChallengeResponse", r
->LmChallengeResponse
);
1953 if (r
->LmChallengeResponse
) {
1954 ndr_print_set_switch_value(ndr
, r
->LmChallengeResponse
, r
->LmChallengeResponseLen
);
1955 ndr_print_ntlmssp_LM_RESPONSE(ndr
, "LmChallengeResponse", r
->LmChallengeResponse
);
1958 ndr_print_uint16(ndr
, "NtChallengeResponseLen", r
->NtChallengeResponseLen
);
1959 ndr_print_uint16(ndr
, "NtChallengeResponseMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->NtChallengeResponseLen
:r
->NtChallengeResponseMaxLen
);
1960 ndr_print_ptr(ndr
, "NtChallengeResponse", r
->NtChallengeResponse
);
1962 if (r
->NtChallengeResponse
) {
1963 ndr_print_set_switch_value(ndr
, r
->NtChallengeResponse
, r
->NtChallengeResponseLen
);
1964 ndr_print_ntlmssp_NTLM_RESPONSE(ndr
, "NtChallengeResponse", r
->NtChallengeResponse
);
1967 ndr_print_uint16(ndr
, "DomainNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
):r
->DomainNameLen
);
1968 ndr_print_uint16(ndr
, "DomainNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->DomainNameLen
:r
->DomainNameMaxLen
);
1969 ndr_print_ptr(ndr
, "DomainName", r
->DomainName
);
1971 if (r
->DomainName
) {
1972 ndr_print_string(ndr
, "DomainName", r
->DomainName
);
1975 ndr_print_uint16(ndr
, "UserNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
):r
->UserNameLen
);
1976 ndr_print_uint16(ndr
, "UserNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->UserNameLen
:r
->UserNameMaxLen
);
1977 ndr_print_ptr(ndr
, "UserName", r
->UserName
);
1980 ndr_print_string(ndr
, "UserName", r
->UserName
);
1983 ndr_print_uint16(ndr
, "WorkstationLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
):r
->WorkstationLen
);
1984 ndr_print_uint16(ndr
, "WorkstationMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->WorkstationLen
:r
->WorkstationMaxLen
);
1985 ndr_print_ptr(ndr
, "Workstation", r
->Workstation
);
1987 if (r
->Workstation
) {
1988 ndr_print_string(ndr
, "Workstation", r
->Workstation
);
1991 ndr_print_uint16(ndr
, "EncryptedRandomSessionKeyLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->EncryptedRandomSessionKey
->length
:r
->EncryptedRandomSessionKeyLen
);
1992 ndr_print_uint16(ndr
, "EncryptedRandomSessionKeyMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->EncryptedRandomSessionKeyLen
:r
->EncryptedRandomSessionKeyMaxLen
);
1993 ndr_print_ptr(ndr
, "EncryptedRandomSessionKey", r
->EncryptedRandomSessionKey
);
1995 if (r
->EncryptedRandomSessionKey
) {
1996 ndr_print_DATA_BLOB(ndr
, "EncryptedRandomSessionKey", *r
->EncryptedRandomSessionKey
);
1999 ndr_print_NEGOTIATE(ndr
, "NegotiateFlags", r
->NegotiateFlags
);
2000 ndr_print_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
);
2001 ndr_print_ntlmssp_Version(ndr
, "Version", &r
->Version
);
2003 ndr
->flags
= _flags_save_STRUCT
;
2007 _PUBLIC_
enum ndr_err_code
ndr_push_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLMSSP_MESSAGE_SIGNATURE
*r
)
2009 if (ndr_flags
& NDR_SCALARS
) {
2010 NDR_CHECK(ndr_push_align(ndr
, 4));
2011 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, NTLMSSP_SIGN_VERSION
));
2012 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->RandomPad
));
2013 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Checksum
));
2014 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->SeqNum
));
2016 if (ndr_flags
& NDR_BUFFERS
) {
2018 return NDR_ERR_SUCCESS
;
2021 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMSSP_MESSAGE_SIGNATURE
*r
)
2023 if (ndr_flags
& NDR_SCALARS
) {
2024 NDR_CHECK(ndr_pull_align(ndr
, 4));
2025 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Version
));
2026 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->RandomPad
));
2027 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Checksum
));
2028 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->SeqNum
));
2030 if (ndr_flags
& NDR_BUFFERS
) {
2032 return NDR_ERR_SUCCESS
;
2035 _PUBLIC_
void ndr_print_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_print
*ndr
, const char *name
, const struct NTLMSSP_MESSAGE_SIGNATURE
*r
)
2037 ndr_print_struct(ndr
, name
, "NTLMSSP_MESSAGE_SIGNATURE");
2039 ndr_print_uint32(ndr
, "Version", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NTLMSSP_SIGN_VERSION
:r
->Version
);
2040 ndr_print_uint32(ndr
, "RandomPad", r
->RandomPad
);
2041 ndr_print_uint32(ndr
, "Checksum", r
->Checksum
);
2042 ndr_print_uint32(ndr
, "SeqNum", r
->SeqNum
);
2046 _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
)
2049 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2050 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
2051 if (ndr_flags
& NDR_SCALARS
) {
2052 NDR_CHECK(ndr_push_align(ndr
, 4));
2053 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, NTLMSSP_SIGN_VERSION
));
2054 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Checksum
, 8));
2055 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->SeqNum
));
2057 if (ndr_flags
& NDR_BUFFERS
) {
2059 ndr
->flags
= _flags_save_STRUCT
;
2061 return NDR_ERR_SUCCESS
;
2064 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2
*r
)
2067 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2068 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
2069 if (ndr_flags
& NDR_SCALARS
) {
2070 NDR_CHECK(ndr_pull_align(ndr
, 4));
2071 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Version
));
2072 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Checksum
, 8));
2073 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->SeqNum
));
2075 if (ndr_flags
& NDR_BUFFERS
) {
2077 ndr
->flags
= _flags_save_STRUCT
;
2079 return NDR_ERR_SUCCESS
;
2082 _PUBLIC_
void ndr_print_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_print
*ndr
, const char *name
, const struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2
*r
)
2084 ndr_print_struct(ndr
, name
, "NTLMSSP_MESSAGE_SIGNATURE_NTLMv2");
2086 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2087 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
2089 ndr_print_uint32(ndr
, "Version", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NTLMSSP_SIGN_VERSION
:r
->Version
);
2090 ndr_print_array_uint8(ndr
, "Checksum", r
->Checksum
, 8);
2091 ndr_print_uint32(ndr
, "SeqNum", r
->SeqNum
);
2093 ndr
->flags
= _flags_save_STRUCT
;