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_
enum ndr_err_code
ndr_push_NEGOTIATE_MESSAGE(struct ndr_push
*ndr
, int ndr_flags
, const struct NEGOTIATE_MESSAGE
*r
)
255 if (ndr_flags
& NDR_SCALARS
) {
256 NDR_CHECK(ndr_push_align(ndr
, 4));
257 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS
));
258 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr
, NDR_SCALARS
, NtLmNegotiate
));
259 NDR_CHECK(ndr_push_NEGOTIATE(ndr
, NDR_SCALARS
, r
->NegotiateFlags
));
260 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->DomainName
)));
261 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->DomainName
)));
263 uint32_t _flags_save_string
= ndr
->flags
;
264 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
265 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->DomainName
));
266 ndr
->flags
= _flags_save_string
;
268 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->Workstation
)));
269 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->Workstation
)));
271 uint32_t _flags_save_string
= ndr
->flags
;
272 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
273 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->Workstation
));
274 ndr
->flags
= _flags_save_string
;
276 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
277 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
279 if (ndr_flags
& NDR_BUFFERS
) {
281 uint32_t _flags_save_string
= ndr
->flags
;
282 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
284 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->DomainName
));
286 struct ndr_push
*_ndr_DomainName
;
287 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_DomainName
, 0, strlen(r
->DomainName
)));
288 NDR_CHECK(ndr_push_string(_ndr_DomainName
, NDR_SCALARS
, r
->DomainName
));
289 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_DomainName
, 0, strlen(r
->DomainName
)));
292 ndr
->flags
= _flags_save_string
;
295 uint32_t _flags_save_string
= ndr
->flags
;
296 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
297 if (r
->Workstation
) {
298 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->Workstation
));
300 struct ndr_push
*_ndr_Workstation
;
301 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_Workstation
, 0, strlen(r
->Workstation
)));
302 NDR_CHECK(ndr_push_string(_ndr_Workstation
, NDR_SCALARS
, r
->Workstation
));
303 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_Workstation
, 0, strlen(r
->Workstation
)));
306 ndr
->flags
= _flags_save_string
;
308 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
310 return NDR_ERR_SUCCESS
;
313 _PUBLIC_
enum ndr_err_code
ndr_pull_NEGOTIATE_MESSAGE(struct ndr_pull
*ndr
, int ndr_flags
, struct NEGOTIATE_MESSAGE
*r
)
315 uint32_t _ptr_DomainName
;
316 TALLOC_CTX
*_mem_save_DomainName_0
;
317 uint32_t _ptr_Workstation
;
318 TALLOC_CTX
*_mem_save_Workstation_0
;
319 if (ndr_flags
& NDR_SCALARS
) {
320 NDR_CHECK(ndr_pull_align(ndr
, 4));
321 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->Signature
, 8, sizeof(uint8_t), CH_DOS
));
322 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr
, NDR_SCALARS
, &r
->MessageType
));
323 NDR_CHECK(ndr_pull_NEGOTIATE(ndr
, NDR_SCALARS
, &r
->NegotiateFlags
));
324 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameLen
));
325 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameMaxLen
));
327 uint32_t _flags_save_string
= ndr
->flags
;
328 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
329 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DomainName
));
330 if (_ptr_DomainName
) {
331 NDR_PULL_ALLOC(ndr
, r
->DomainName
);
332 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->DomainName
, _ptr_DomainName
));
334 r
->DomainName
= NULL
;
336 ndr
->flags
= _flags_save_string
;
338 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationLen
));
339 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationMaxLen
));
341 uint32_t _flags_save_string
= ndr
->flags
;
342 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
343 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Workstation
));
344 if (_ptr_Workstation
) {
345 NDR_PULL_ALLOC(ndr
, r
->Workstation
);
346 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->Workstation
, _ptr_Workstation
));
348 r
->Workstation
= NULL
;
350 ndr
->flags
= _flags_save_string
;
352 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
353 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
355 if (ndr_flags
& NDR_BUFFERS
) {
357 uint32_t _flags_save_string
= ndr
->flags
;
358 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
360 uint32_t _relative_save_offset
;
361 _relative_save_offset
= ndr
->offset
;
362 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->DomainName
));
363 _mem_save_DomainName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
364 NDR_PULL_SET_MEM_CTX(ndr
, r
->DomainName
, 0);
366 struct ndr_pull
*_ndr_DomainName
;
367 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_DomainName
, 0, r
->DomainNameLen
));
368 NDR_CHECK(ndr_pull_string(_ndr_DomainName
, NDR_SCALARS
, &r
->DomainName
));
369 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_DomainName
, 0, r
->DomainNameLen
));
371 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DomainName_0
, 0);
372 ndr
->offset
= _relative_save_offset
;
374 ndr
->flags
= _flags_save_string
;
377 uint32_t _flags_save_string
= ndr
->flags
;
378 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
379 if (r
->Workstation
) {
380 uint32_t _relative_save_offset
;
381 _relative_save_offset
= ndr
->offset
;
382 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->Workstation
));
383 _mem_save_Workstation_0
= NDR_PULL_GET_MEM_CTX(ndr
);
384 NDR_PULL_SET_MEM_CTX(ndr
, r
->Workstation
, 0);
386 struct ndr_pull
*_ndr_Workstation
;
387 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_Workstation
, 0, r
->WorkstationLen
));
388 NDR_CHECK(ndr_pull_string(_ndr_Workstation
, NDR_SCALARS
, &r
->Workstation
));
389 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_Workstation
, 0, r
->WorkstationLen
));
391 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Workstation_0
, 0);
392 ndr
->offset
= _relative_save_offset
;
394 ndr
->flags
= _flags_save_string
;
396 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
398 return NDR_ERR_SUCCESS
;
401 _PUBLIC_
void ndr_print_NEGOTIATE_MESSAGE(struct ndr_print
*ndr
, const char *name
, const struct NEGOTIATE_MESSAGE
*r
)
403 ndr_print_struct(ndr
, name
, "NEGOTIATE_MESSAGE");
405 ndr_print_string(ndr
, "Signature", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?"NTLMSSP":r
->Signature
);
406 ndr_print_ntlmssp_MessageType(ndr
, "MessageType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NtLmNegotiate
:r
->MessageType
);
407 ndr_print_NEGOTIATE(ndr
, "NegotiateFlags", r
->NegotiateFlags
);
408 ndr_print_uint16(ndr
, "DomainNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?strlen(r
->DomainName
):r
->DomainNameLen
);
409 ndr_print_uint16(ndr
, "DomainNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->DomainNameLen
:r
->DomainNameMaxLen
);
410 ndr_print_ptr(ndr
, "DomainName", r
->DomainName
);
413 ndr_print_string(ndr
, "DomainName", r
->DomainName
);
416 ndr_print_uint16(ndr
, "WorkstationLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?strlen(r
->Workstation
):r
->WorkstationLen
);
417 ndr_print_uint16(ndr
, "WorkstationMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->WorkstationLen
:r
->WorkstationMaxLen
);
418 ndr_print_ptr(ndr
, "Workstation", r
->Workstation
);
420 if (r
->Workstation
) {
421 ndr_print_string(ndr
, "Workstation", r
->Workstation
);
424 ndr_print_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
);
425 ndr_print_ntlmssp_Version(ndr
, "Version", &r
->Version
);
429 static enum ndr_err_code
ndr_push_ntlmssp_AvId(struct ndr_push
*ndr
, int ndr_flags
, enum ntlmssp_AvId r
)
431 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
));
432 return NDR_ERR_SUCCESS
;
435 static enum ndr_err_code
ndr_pull_ntlmssp_AvId(struct ndr_pull
*ndr
, int ndr_flags
, enum ntlmssp_AvId
*r
)
438 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &v
));
440 return NDR_ERR_SUCCESS
;
443 _PUBLIC_
void ndr_print_ntlmssp_AvId(struct ndr_print
*ndr
, const char *name
, enum ntlmssp_AvId r
)
445 const char *val
= NULL
;
448 case MsvAvEOL
: val
= "MsvAvEOL"; break;
449 case MsvAvNbComputerName
: val
= "MsvAvNbComputerName"; break;
450 case MsvAvNbDomainName
: val
= "MsvAvNbDomainName"; break;
451 case MsvAvDnsComputerName
: val
= "MsvAvDnsComputerName"; break;
452 case MsvAvDnsDomainName
: val
= "MsvAvDnsDomainName"; break;
453 case MsvAvDnsTreeName
: val
= "MsvAvDnsTreeName"; break;
454 case MsvAvFlags
: val
= "MsvAvFlags"; break;
455 case MsvAvTimestamp
: val
= "MsvAvTimestamp"; break;
456 case MsAvRestrictions
: val
= "MsAvRestrictions"; break;
457 case MsvAvTargetName
: val
= "MsvAvTargetName"; break;
458 case MsvChannelBindings
: val
= "MsvChannelBindings"; break;
460 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
463 static enum ndr_err_code
ndr_push_Restriction_Encoding(struct ndr_push
*ndr
, int ndr_flags
, const struct Restriction_Encoding
*r
)
465 if (ndr_flags
& NDR_SCALARS
) {
466 NDR_CHECK(ndr_push_align(ndr
, 4));
467 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Size
));
468 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
469 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->IntegrityLevel
));
470 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->SubjectIntegrityLevel
));
471 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->MachineId
, 32));
473 if (ndr_flags
& NDR_BUFFERS
) {
475 return NDR_ERR_SUCCESS
;
478 static enum ndr_err_code
ndr_pull_Restriction_Encoding(struct ndr_pull
*ndr
, int ndr_flags
, struct Restriction_Encoding
*r
)
480 if (ndr_flags
& NDR_SCALARS
) {
481 NDR_CHECK(ndr_pull_align(ndr
, 4));
482 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Size
));
483 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Z4
));
484 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->IntegrityLevel
));
485 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->SubjectIntegrityLevel
));
486 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->MachineId
, 32));
488 if (ndr_flags
& NDR_BUFFERS
) {
490 return NDR_ERR_SUCCESS
;
493 _PUBLIC_
void ndr_print_Restriction_Encoding(struct ndr_print
*ndr
, const char *name
, const struct Restriction_Encoding
*r
)
495 ndr_print_struct(ndr
, name
, "Restriction_Encoding");
497 ndr_print_uint32(ndr
, "Size", r
->Size
);
498 ndr_print_uint32(ndr
, "Z4", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?0:r
->Z4
);
499 ndr_print_uint32(ndr
, "IntegrityLevel", r
->IntegrityLevel
);
500 ndr_print_uint32(ndr
, "SubjectIntegrityLevel", r
->SubjectIntegrityLevel
);
501 ndr_print_array_uint8(ndr
, "MachineId", r
->MachineId
, 32);
505 static enum ndr_err_code
ndr_push_ntlmssp_AvFlags(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
507 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
508 return NDR_ERR_SUCCESS
;
511 static enum ndr_err_code
ndr_pull_ntlmssp_AvFlags(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
514 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
516 return NDR_ERR_SUCCESS
;
519 _PUBLIC_
void ndr_print_ntlmssp_AvFlags(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
521 ndr_print_uint32(ndr
, name
, r
);
523 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_AVFLAG_CONSTRAINTED_ACCOUNT", NTLMSSP_AVFLAG_CONSTRAINTED_ACCOUNT
, r
);
524 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_AVFLAG_MIC_IN_AUTHENTICATE_MESSAGE", NTLMSSP_AVFLAG_MIC_IN_AUTHENTICATE_MESSAGE
, r
);
528 static enum ndr_err_code
ndr_push_ntlmssp_AvValue(struct ndr_push
*ndr
, int ndr_flags
, const union ntlmssp_AvValue
*r
)
531 uint32_t _flags_save_UNION
= ndr
->flags
;
532 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
533 if (ndr_flags
& NDR_SCALARS
) {
534 int level
= ndr_push_get_switch_value(ndr
, r
);
539 case MsvAvNbComputerName
: {
541 uint32_t _flags_save_string
= ndr
->flags
;
542 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
543 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvNbComputerName
));
544 ndr
->flags
= _flags_save_string
;
548 case MsvAvNbDomainName
: {
550 uint32_t _flags_save_string
= ndr
->flags
;
551 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
552 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvNbDomainName
));
553 ndr
->flags
= _flags_save_string
;
557 case MsvAvDnsComputerName
: {
559 uint32_t _flags_save_string
= ndr
->flags
;
560 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
561 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvDnsComputerName
));
562 ndr
->flags
= _flags_save_string
;
566 case MsvAvDnsDomainName
: {
568 uint32_t _flags_save_string
= ndr
->flags
;
569 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
570 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvDnsDomainName
));
571 ndr
->flags
= _flags_save_string
;
575 case MsvAvDnsTreeName
: {
577 uint32_t _flags_save_string
= ndr
->flags
;
578 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
579 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvDnsTreeName
));
580 ndr
->flags
= _flags_save_string
;
585 NDR_CHECK(ndr_push_ntlmssp_AvFlags(ndr
, NDR_SCALARS
, r
->AvFlags
));
588 case MsvAvTimestamp
: {
589 NDR_CHECK(ndr_push_NTTIME(ndr
, NDR_SCALARS
, r
->AvTimestamp
));
592 case MsAvRestrictions
: {
593 NDR_CHECK(ndr_push_Restriction_Encoding(ndr
, NDR_SCALARS
, &r
->AvRestrictions
));
596 case MsvAvTargetName
: {
598 uint32_t _flags_save_string
= ndr
->flags
;
599 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
600 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvTargetName
));
601 ndr
->flags
= _flags_save_string
;
605 case MsvChannelBindings
: {
606 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ChannelBindings
, 16));
611 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
612 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
613 NDR_CHECK(ndr_push_DATA_BLOB(ndr
, NDR_SCALARS
, r
->blob
));
614 ndr
->flags
= _flags_save_DATA_BLOB
;
620 if (ndr_flags
& NDR_BUFFERS
) {
621 int level
= ndr_push_get_switch_value(ndr
, r
);
626 case MsvAvNbComputerName
:
629 case MsvAvNbDomainName
:
632 case MsvAvDnsComputerName
:
635 case MsvAvDnsDomainName
:
638 case MsvAvDnsTreeName
:
647 case MsAvRestrictions
:
650 case MsvAvTargetName
:
653 case MsvChannelBindings
:
661 ndr
->flags
= _flags_save_UNION
;
663 return NDR_ERR_SUCCESS
;
666 static enum ndr_err_code
ndr_pull_ntlmssp_AvValue(struct ndr_pull
*ndr
, int ndr_flags
, union ntlmssp_AvValue
*r
)
670 uint32_t _flags_save_UNION
= ndr
->flags
;
671 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
672 level
= ndr_pull_get_switch_value(ndr
, r
);
673 if (ndr_flags
& NDR_SCALARS
) {
678 case MsvAvNbComputerName
: {
680 uint32_t _flags_save_string
= ndr
->flags
;
681 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
682 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvNbComputerName
));
683 ndr
->flags
= _flags_save_string
;
687 case MsvAvNbDomainName
: {
689 uint32_t _flags_save_string
= ndr
->flags
;
690 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
691 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvNbDomainName
));
692 ndr
->flags
= _flags_save_string
;
696 case MsvAvDnsComputerName
: {
698 uint32_t _flags_save_string
= ndr
->flags
;
699 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
700 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvDnsComputerName
));
701 ndr
->flags
= _flags_save_string
;
705 case MsvAvDnsDomainName
: {
707 uint32_t _flags_save_string
= ndr
->flags
;
708 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
709 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvDnsDomainName
));
710 ndr
->flags
= _flags_save_string
;
714 case MsvAvDnsTreeName
: {
716 uint32_t _flags_save_string
= ndr
->flags
;
717 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
718 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvDnsTreeName
));
719 ndr
->flags
= _flags_save_string
;
724 NDR_CHECK(ndr_pull_ntlmssp_AvFlags(ndr
, NDR_SCALARS
, &r
->AvFlags
));
727 case MsvAvTimestamp
: {
728 NDR_CHECK(ndr_pull_NTTIME(ndr
, NDR_SCALARS
, &r
->AvTimestamp
));
731 case MsAvRestrictions
: {
732 NDR_CHECK(ndr_pull_Restriction_Encoding(ndr
, NDR_SCALARS
, &r
->AvRestrictions
));
735 case MsvAvTargetName
: {
737 uint32_t _flags_save_string
= ndr
->flags
;
738 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
739 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvTargetName
));
740 ndr
->flags
= _flags_save_string
;
744 case MsvChannelBindings
: {
745 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ChannelBindings
, 16));
750 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
751 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
752 NDR_CHECK(ndr_pull_DATA_BLOB(ndr
, NDR_SCALARS
, &r
->blob
));
753 ndr
->flags
= _flags_save_DATA_BLOB
;
759 if (ndr_flags
& NDR_BUFFERS
) {
764 case MsvAvNbComputerName
:
767 case MsvAvNbDomainName
:
770 case MsvAvDnsComputerName
:
773 case MsvAvDnsDomainName
:
776 case MsvAvDnsTreeName
:
785 case MsAvRestrictions
:
788 case MsvAvTargetName
:
791 case MsvChannelBindings
:
799 ndr
->flags
= _flags_save_UNION
;
801 return NDR_ERR_SUCCESS
;
804 _PUBLIC_
void ndr_print_ntlmssp_AvValue(struct ndr_print
*ndr
, const char *name
, const union ntlmssp_AvValue
*r
)
808 uint32_t _flags_save_UNION
= ndr
->flags
;
809 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
810 level
= ndr_print_get_switch_value(ndr
, r
);
811 ndr_print_union(ndr
, name
, level
, "ntlmssp_AvValue");
816 case MsvAvNbComputerName
:
817 ndr_print_string(ndr
, "AvNbComputerName", r
->AvNbComputerName
);
820 case MsvAvNbDomainName
:
821 ndr_print_string(ndr
, "AvNbDomainName", r
->AvNbDomainName
);
824 case MsvAvDnsComputerName
:
825 ndr_print_string(ndr
, "AvDnsComputerName", r
->AvDnsComputerName
);
828 case MsvAvDnsDomainName
:
829 ndr_print_string(ndr
, "AvDnsDomainName", r
->AvDnsDomainName
);
832 case MsvAvDnsTreeName
:
833 ndr_print_string(ndr
, "AvDnsTreeName", r
->AvDnsTreeName
);
837 ndr_print_ntlmssp_AvFlags(ndr
, "AvFlags", r
->AvFlags
);
841 ndr_print_NTTIME(ndr
, "AvTimestamp", r
->AvTimestamp
);
844 case MsAvRestrictions
:
845 ndr_print_Restriction_Encoding(ndr
, "AvRestrictions", &r
->AvRestrictions
);
848 case MsvAvTargetName
:
849 ndr_print_string(ndr
, "AvTargetName", r
->AvTargetName
);
852 case MsvChannelBindings
:
853 ndr_print_array_uint8(ndr
, "ChannelBindings", r
->ChannelBindings
, 16);
857 ndr_print_DATA_BLOB(ndr
, "blob", r
->blob
);
861 ndr
->flags
= _flags_save_UNION
;
865 static size_t ndr_size_ntlmssp_AvValue(const union ntlmssp_AvValue
*r
, uint32_t level
, struct smb_iconv_convenience
*ic
, int flags
)
867 flags
|= LIBNDR_FLAG_NOALIGN
;
868 return ndr_size_union(r
, flags
, level
, (ndr_push_flags_fn_t
)ndr_push_ntlmssp_AvValue
, ic
);
871 _PUBLIC_
enum ndr_err_code
ndr_push_AV_PAIR(struct ndr_push
*ndr
, int ndr_flags
, const struct AV_PAIR
*r
)
874 uint32_t _flags_save_STRUCT
= ndr
->flags
;
875 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
876 if (ndr_flags
& NDR_SCALARS
) {
877 NDR_CHECK(ndr_push_align(ndr
, 4));
878 NDR_CHECK(ndr_push_ntlmssp_AvId(ndr
, NDR_SCALARS
, r
->AvId
));
879 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_size_ntlmssp_AvValue(&r
->Value
, r
->AvId
, ndr
->iconv_convenience
, 0)));
881 struct ndr_push
*_ndr_Value
;
882 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_Value
, 0, ndr_size_ntlmssp_AvValue(&r
->Value
, r
->AvId
, ndr
->iconv_convenience
, 0)));
883 NDR_CHECK(ndr_push_set_switch_value(_ndr_Value
, &r
->Value
, r
->AvId
));
884 NDR_CHECK(ndr_push_ntlmssp_AvValue(_ndr_Value
, NDR_SCALARS
|NDR_BUFFERS
, &r
->Value
));
885 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_Value
, 0, ndr_size_ntlmssp_AvValue(&r
->Value
, r
->AvId
, ndr
->iconv_convenience
, 0)));
888 if (ndr_flags
& NDR_BUFFERS
) {
890 ndr
->flags
= _flags_save_STRUCT
;
892 return NDR_ERR_SUCCESS
;
895 _PUBLIC_
enum ndr_err_code
ndr_pull_AV_PAIR(struct ndr_pull
*ndr
, int ndr_flags
, struct AV_PAIR
*r
)
898 uint32_t _flags_save_STRUCT
= ndr
->flags
;
899 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
900 if (ndr_flags
& NDR_SCALARS
) {
901 NDR_CHECK(ndr_pull_align(ndr
, 4));
902 NDR_CHECK(ndr_pull_ntlmssp_AvId(ndr
, NDR_SCALARS
, &r
->AvId
));
903 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->AvLen
));
905 struct ndr_pull
*_ndr_Value
;
906 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_Value
, 0, r
->AvLen
));
907 NDR_CHECK(ndr_pull_set_switch_value(_ndr_Value
, &r
->Value
, r
->AvId
));
908 NDR_CHECK(ndr_pull_ntlmssp_AvValue(_ndr_Value
, NDR_SCALARS
|NDR_BUFFERS
, &r
->Value
));
909 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_Value
, 0, r
->AvLen
));
912 if (ndr_flags
& NDR_BUFFERS
) {
914 ndr
->flags
= _flags_save_STRUCT
;
916 return NDR_ERR_SUCCESS
;
919 _PUBLIC_
void ndr_print_AV_PAIR(struct ndr_print
*ndr
, const char *name
, const struct AV_PAIR
*r
)
921 ndr_print_struct(ndr
, name
, "AV_PAIR");
923 uint32_t _flags_save_STRUCT
= ndr
->flags
;
924 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
926 ndr_print_ntlmssp_AvId(ndr
, "AvId", r
->AvId
);
927 ndr_print_uint16(ndr
, "AvLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_size_ntlmssp_AvValue(&r
->Value
, r
->AvId
, ndr
->iconv_convenience
, 0):r
->AvLen
);
928 ndr_print_set_switch_value(ndr
, &r
->Value
, r
->AvId
);
929 ndr_print_ntlmssp_AvValue(ndr
, "Value", &r
->Value
);
931 ndr
->flags
= _flags_save_STRUCT
;
935 _PUBLIC_
void ndr_print_AV_PAIR_LIST(struct ndr_print
*ndr
, const char *name
, const struct AV_PAIR_LIST
*r
)
937 uint32_t cntr_pair_0
;
938 ndr_print_struct(ndr
, name
, "AV_PAIR_LIST");
940 uint32_t _flags_save_STRUCT
= ndr
->flags
;
941 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
943 ndr_print_uint32(ndr
, "count", r
->count
);
944 ndr
->print(ndr
, "%s: ARRAY(%d)", "pair", (int)r
->count
);
946 for (cntr_pair_0
=0;cntr_pair_0
<r
->count
;cntr_pair_0
++) {
948 if (asprintf(&idx_0
, "[%d]", cntr_pair_0
) != -1) {
949 ndr_print_AV_PAIR(ndr
, "pair", &r
->pair
[cntr_pair_0
]);
955 ndr
->flags
= _flags_save_STRUCT
;
959 static size_t ndr_size_AV_PAIR_LIST(const struct AV_PAIR_LIST
*r
, struct smb_iconv_convenience
*ic
, int flags
)
961 flags
|= LIBNDR_FLAG_NOALIGN
;
962 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_AV_PAIR_LIST
, ic
);
965 _PUBLIC_
enum ndr_err_code
ndr_push_CHALLENGE_MESSAGE(struct ndr_push
*ndr
, int ndr_flags
, const struct CHALLENGE_MESSAGE
*r
)
968 uint32_t _flags_save_STRUCT
= ndr
->flags
;
969 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
970 if (ndr_flags
& NDR_SCALARS
) {
971 NDR_CHECK(ndr_push_align(ndr
, 4));
972 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS
));
973 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr
, NDR_SCALARS
, NtLmChallenge
));
974 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
975 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
977 uint32_t _flags_save_string
= ndr
->flags
;
978 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
979 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->TargetName
));
980 ndr
->flags
= _flags_save_string
;
982 NDR_CHECK(ndr_push_NEGOTIATE(ndr
, NDR_SCALARS
, r
->NegotiateFlags
));
983 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ServerChallenge
, 8));
984 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Reserved
, 8));
985 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
986 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
987 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->TargetInfo
));
988 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
989 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
991 if (ndr_flags
& NDR_BUFFERS
) {
993 uint32_t _flags_save_string
= ndr
->flags
;
994 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
996 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->TargetName
));
998 struct ndr_push
*_ndr_TargetName
;
999 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_TargetName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
1000 NDR_CHECK(ndr_push_string(_ndr_TargetName
, NDR_SCALARS
, r
->TargetName
));
1001 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_TargetName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
1004 ndr
->flags
= _flags_save_string
;
1006 if (r
->TargetInfo
) {
1007 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->TargetInfo
));
1009 struct ndr_push
*_ndr_TargetInfo
;
1010 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_TargetInfo
, 0, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
1011 NDR_CHECK(ndr_push_AV_PAIR_LIST(_ndr_TargetInfo
, NDR_SCALARS
|NDR_BUFFERS
, r
->TargetInfo
));
1012 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_TargetInfo
, 0, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
1015 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1017 ndr
->flags
= _flags_save_STRUCT
;
1019 return NDR_ERR_SUCCESS
;
1022 _PUBLIC_
enum ndr_err_code
ndr_pull_CHALLENGE_MESSAGE(struct ndr_pull
*ndr
, int ndr_flags
, struct CHALLENGE_MESSAGE
*r
)
1024 uint32_t _ptr_TargetName
;
1025 TALLOC_CTX
*_mem_save_TargetName_0
;
1026 uint32_t _ptr_TargetInfo
;
1027 TALLOC_CTX
*_mem_save_TargetInfo_0
;
1029 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1030 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1031 if (ndr_flags
& NDR_SCALARS
) {
1032 NDR_CHECK(ndr_pull_align(ndr
, 4));
1033 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->Signature
, 8, sizeof(uint8_t), CH_DOS
));
1034 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr
, NDR_SCALARS
, &r
->MessageType
));
1035 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetNameLen
));
1036 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetNameMaxLen
));
1038 uint32_t _flags_save_string
= ndr
->flags
;
1039 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1040 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TargetName
));
1041 if (_ptr_TargetName
) {
1042 NDR_PULL_ALLOC(ndr
, r
->TargetName
);
1043 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->TargetName
, _ptr_TargetName
));
1045 r
->TargetName
= NULL
;
1047 ndr
->flags
= _flags_save_string
;
1049 NDR_CHECK(ndr_pull_NEGOTIATE(ndr
, NDR_SCALARS
, &r
->NegotiateFlags
));
1050 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ServerChallenge
, 8));
1051 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Reserved
, 8));
1052 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetInfoLen
));
1053 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetNameInfoMaxLen
));
1054 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TargetInfo
));
1055 if (_ptr_TargetInfo
) {
1056 NDR_PULL_ALLOC(ndr
, r
->TargetInfo
);
1057 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->TargetInfo
, _ptr_TargetInfo
));
1059 r
->TargetInfo
= NULL
;
1061 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
1062 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
1064 if (ndr_flags
& NDR_BUFFERS
) {
1066 uint32_t _flags_save_string
= ndr
->flags
;
1067 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1068 if (r
->TargetName
) {
1069 uint32_t _relative_save_offset
;
1070 _relative_save_offset
= ndr
->offset
;
1071 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->TargetName
));
1072 _mem_save_TargetName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1073 NDR_PULL_SET_MEM_CTX(ndr
, r
->TargetName
, 0);
1075 struct ndr_pull
*_ndr_TargetName
;
1076 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_TargetName
, 0, r
->TargetNameLen
));
1077 NDR_CHECK(ndr_pull_string(_ndr_TargetName
, NDR_SCALARS
, &r
->TargetName
));
1078 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_TargetName
, 0, r
->TargetNameLen
));
1080 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TargetName_0
, 0);
1081 ndr
->offset
= _relative_save_offset
;
1083 ndr
->flags
= _flags_save_string
;
1085 if (r
->TargetInfo
) {
1086 uint32_t _relative_save_offset
;
1087 _relative_save_offset
= ndr
->offset
;
1088 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->TargetInfo
));
1089 _mem_save_TargetInfo_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1090 NDR_PULL_SET_MEM_CTX(ndr
, r
->TargetInfo
, 0);
1092 struct ndr_pull
*_ndr_TargetInfo
;
1093 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_TargetInfo
, 0, r
->TargetInfoLen
));
1094 NDR_CHECK(ndr_pull_AV_PAIR_LIST(_ndr_TargetInfo
, NDR_SCALARS
|NDR_BUFFERS
, r
->TargetInfo
));
1095 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_TargetInfo
, 0, r
->TargetInfoLen
));
1097 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TargetInfo_0
, 0);
1098 ndr
->offset
= _relative_save_offset
;
1100 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1102 ndr
->flags
= _flags_save_STRUCT
;
1104 return NDR_ERR_SUCCESS
;
1107 _PUBLIC_
void ndr_print_CHALLENGE_MESSAGE(struct ndr_print
*ndr
, const char *name
, const struct CHALLENGE_MESSAGE
*r
)
1109 ndr_print_struct(ndr
, name
, "CHALLENGE_MESSAGE");
1111 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1112 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1114 ndr_print_string(ndr
, "Signature", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?"NTLMSSP":r
->Signature
);
1115 ndr_print_ntlmssp_MessageType(ndr
, "MessageType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NtLmChallenge
:r
->MessageType
);
1116 ndr_print_uint16(ndr
, "TargetNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
):r
->TargetNameLen
);
1117 ndr_print_uint16(ndr
, "TargetNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->TargetNameLen
:r
->TargetNameMaxLen
);
1118 ndr_print_ptr(ndr
, "TargetName", r
->TargetName
);
1120 if (r
->TargetName
) {
1121 ndr_print_string(ndr
, "TargetName", r
->TargetName
);
1124 ndr_print_NEGOTIATE(ndr
, "NegotiateFlags", r
->NegotiateFlags
);
1125 ndr_print_array_uint8(ndr
, "ServerChallenge", r
->ServerChallenge
, 8);
1126 ndr_print_array_uint8(ndr
, "Reserved", r
->Reserved
, 8);
1127 ndr_print_uint16(ndr
, "TargetInfoLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
):r
->TargetInfoLen
);
1128 ndr_print_uint16(ndr
, "TargetNameInfoMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->TargetInfoLen
:r
->TargetNameInfoMaxLen
);
1129 ndr_print_ptr(ndr
, "TargetInfo", r
->TargetInfo
);
1131 if (r
->TargetInfo
) {
1132 ndr_print_AV_PAIR_LIST(ndr
, "TargetInfo", r
->TargetInfo
);
1135 ndr_print_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
);
1136 ndr_print_ntlmssp_Version(ndr
, "Version", &r
->Version
);
1138 ndr
->flags
= _flags_save_STRUCT
;
1142 _PUBLIC_
enum ndr_err_code
ndr_push_LM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct LM_RESPONSE
*r
)
1145 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1146 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1147 if (ndr_flags
& NDR_SCALARS
) {
1148 NDR_CHECK(ndr_push_align(ndr
, 1));
1149 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1151 if (ndr_flags
& NDR_BUFFERS
) {
1153 ndr
->flags
= _flags_save_STRUCT
;
1155 return NDR_ERR_SUCCESS
;
1158 _PUBLIC_
enum ndr_err_code
ndr_pull_LM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct LM_RESPONSE
*r
)
1161 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1162 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1163 if (ndr_flags
& NDR_SCALARS
) {
1164 NDR_CHECK(ndr_pull_align(ndr
, 1));
1165 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1167 if (ndr_flags
& NDR_BUFFERS
) {
1169 ndr
->flags
= _flags_save_STRUCT
;
1171 return NDR_ERR_SUCCESS
;
1174 _PUBLIC_
void ndr_print_LM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct LM_RESPONSE
*r
)
1176 ndr_print_struct(ndr
, name
, "LM_RESPONSE");
1178 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1179 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1181 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 24);
1183 ndr
->flags
= _flags_save_STRUCT
;
1187 _PUBLIC_
enum ndr_err_code
ndr_push_LMv2_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct LMv2_RESPONSE
*r
)
1190 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1191 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1192 if (ndr_flags
& NDR_SCALARS
) {
1193 NDR_CHECK(ndr_push_align(ndr
, 1));
1194 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1195 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1197 if (ndr_flags
& NDR_BUFFERS
) {
1199 ndr
->flags
= _flags_save_STRUCT
;
1201 return NDR_ERR_SUCCESS
;
1204 _PUBLIC_
enum ndr_err_code
ndr_pull_LMv2_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct LMv2_RESPONSE
*r
)
1207 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1208 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1209 if (ndr_flags
& NDR_SCALARS
) {
1210 NDR_CHECK(ndr_pull_align(ndr
, 1));
1211 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1212 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1214 if (ndr_flags
& NDR_BUFFERS
) {
1216 ndr
->flags
= _flags_save_STRUCT
;
1218 return NDR_ERR_SUCCESS
;
1221 _PUBLIC_
void ndr_print_LMv2_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct LMv2_RESPONSE
*r
)
1223 ndr_print_struct(ndr
, name
, "LMv2_RESPONSE");
1225 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1226 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1228 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 16);
1229 ndr_print_array_uint8(ndr
, "ChallengeFromClient", r
->ChallengeFromClient
, 8);
1231 ndr
->flags
= _flags_save_STRUCT
;
1235 static enum ndr_err_code
ndr_push_ntlmssp_LM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const union ntlmssp_LM_RESPONSE
*r
)
1237 if (ndr_flags
& NDR_SCALARS
) {
1238 int level
= ndr_push_get_switch_value(ndr
, r
);
1241 NDR_CHECK(ndr_push_LM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1249 if (ndr_flags
& NDR_BUFFERS
) {
1250 int level
= ndr_push_get_switch_value(ndr
, r
);
1260 return NDR_ERR_SUCCESS
;
1263 static enum ndr_err_code
ndr_pull_ntlmssp_LM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, union ntlmssp_LM_RESPONSE
*r
)
1266 level
= ndr_pull_get_switch_value(ndr
, r
);
1267 if (ndr_flags
& NDR_SCALARS
) {
1270 NDR_CHECK(ndr_pull_LM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1278 if (ndr_flags
& NDR_BUFFERS
) {
1288 return NDR_ERR_SUCCESS
;
1291 _PUBLIC_
void ndr_print_ntlmssp_LM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const union ntlmssp_LM_RESPONSE
*r
)
1294 level
= ndr_print_get_switch_value(ndr
, r
);
1295 ndr_print_union(ndr
, name
, level
, "ntlmssp_LM_RESPONSE");
1298 ndr_print_LM_RESPONSE(ndr
, "v1", &r
->v1
);
1307 _PUBLIC_
enum ndr_err_code
ndr_push_NTLM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLM_RESPONSE
*r
)
1310 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1311 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1312 if (ndr_flags
& NDR_SCALARS
) {
1313 NDR_CHECK(ndr_push_align(ndr
, 1));
1314 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1316 if (ndr_flags
& NDR_BUFFERS
) {
1318 ndr
->flags
= _flags_save_STRUCT
;
1320 return NDR_ERR_SUCCESS
;
1323 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLM_RESPONSE
*r
)
1326 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1327 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1328 if (ndr_flags
& NDR_SCALARS
) {
1329 NDR_CHECK(ndr_pull_align(ndr
, 1));
1330 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1332 if (ndr_flags
& NDR_BUFFERS
) {
1334 ndr
->flags
= _flags_save_STRUCT
;
1336 return NDR_ERR_SUCCESS
;
1339 _PUBLIC_
void ndr_print_NTLM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct NTLM_RESPONSE
*r
)
1341 ndr_print_struct(ndr
, name
, "NTLM_RESPONSE");
1343 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1344 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1346 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 24);
1348 ndr
->flags
= _flags_save_STRUCT
;
1352 static enum ndr_err_code
ndr_push_NTLMv2_CLIENT_CHALLENGE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLMv2_CLIENT_CHALLENGE
*r
)
1355 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1356 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1357 if (ndr_flags
& NDR_SCALARS
) {
1358 NDR_CHECK(ndr_push_align(ndr
, 4));
1359 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, 1));
1360 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, 1));
1361 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->Reserved1
));
1362 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Reserved2
));
1363 NDR_CHECK(ndr_push_NTTIME(ndr
, NDR_SCALARS
, r
->TimeStamp
));
1364 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1365 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Reserved3
));
1367 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1368 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1370 struct ndr_push
*_ndr_AvPairs
;
1371 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_AvPairs
, 0, -1));
1372 NDR_CHECK(ndr_push_AV_PAIR_LIST(_ndr_AvPairs
, NDR_SCALARS
|NDR_BUFFERS
, &r
->AvPairs
));
1373 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_AvPairs
, 0, -1));
1375 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1378 if (ndr_flags
& NDR_BUFFERS
) {
1380 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1381 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1382 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1385 ndr
->flags
= _flags_save_STRUCT
;
1387 return NDR_ERR_SUCCESS
;
1390 static enum ndr_err_code
ndr_pull_NTLMv2_CLIENT_CHALLENGE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMv2_CLIENT_CHALLENGE
*r
)
1393 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1394 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1395 if (ndr_flags
& NDR_SCALARS
) {
1396 NDR_CHECK(ndr_pull_align(ndr
, 4));
1397 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->RespType
));
1398 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->HiRespType
));
1399 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->Reserved1
));
1400 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Reserved2
));
1401 NDR_CHECK(ndr_pull_NTTIME(ndr
, NDR_SCALARS
, &r
->TimeStamp
));
1402 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1403 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Reserved3
));
1405 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1406 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1408 struct ndr_pull
*_ndr_AvPairs
;
1409 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_AvPairs
, 0, -1));
1410 NDR_CHECK(ndr_pull_AV_PAIR_LIST(_ndr_AvPairs
, NDR_SCALARS
|NDR_BUFFERS
, &r
->AvPairs
));
1411 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_AvPairs
, 0, -1));
1413 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1416 if (ndr_flags
& NDR_BUFFERS
) {
1418 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1419 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1420 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1423 ndr
->flags
= _flags_save_STRUCT
;
1425 return NDR_ERR_SUCCESS
;
1428 _PUBLIC_
void ndr_print_NTLMv2_CLIENT_CHALLENGE(struct ndr_print
*ndr
, const char *name
, const struct NTLMv2_CLIENT_CHALLENGE
*r
)
1430 ndr_print_struct(ndr
, name
, "NTLMv2_CLIENT_CHALLENGE");
1432 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1433 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1435 ndr_print_uint8(ndr
, "RespType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?1:r
->RespType
);
1436 ndr_print_uint8(ndr
, "HiRespType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?1:r
->HiRespType
);
1437 ndr_print_uint16(ndr
, "Reserved1", r
->Reserved1
);
1438 ndr_print_uint32(ndr
, "Reserved2", r
->Reserved2
);
1439 ndr_print_NTTIME(ndr
, "TimeStamp", r
->TimeStamp
);
1440 ndr_print_array_uint8(ndr
, "ChallengeFromClient", r
->ChallengeFromClient
, 8);
1441 ndr_print_uint32(ndr
, "Reserved3", r
->Reserved3
);
1442 ndr_print_AV_PAIR_LIST(ndr
, "AvPairs", &r
->AvPairs
);
1444 ndr
->flags
= _flags_save_STRUCT
;
1448 _PUBLIC_
enum ndr_err_code
ndr_push_NTLMv2_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLMv2_RESPONSE
*r
)
1451 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1452 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1453 if (ndr_flags
& NDR_SCALARS
) {
1454 NDR_CHECK(ndr_push_align(ndr
, 4));
1455 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1456 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_SCALARS
, &r
->Challenge
));
1458 if (ndr_flags
& NDR_BUFFERS
) {
1459 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_BUFFERS
, &r
->Challenge
));
1461 ndr
->flags
= _flags_save_STRUCT
;
1463 return NDR_ERR_SUCCESS
;
1466 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLMv2_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMv2_RESPONSE
*r
)
1469 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1470 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1471 if (ndr_flags
& NDR_SCALARS
) {
1472 NDR_CHECK(ndr_pull_align(ndr
, 4));
1473 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1474 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_SCALARS
, &r
->Challenge
));
1476 if (ndr_flags
& NDR_BUFFERS
) {
1477 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_BUFFERS
, &r
->Challenge
));
1479 ndr
->flags
= _flags_save_STRUCT
;
1481 return NDR_ERR_SUCCESS
;
1484 _PUBLIC_
void ndr_print_NTLMv2_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct NTLMv2_RESPONSE
*r
)
1486 ndr_print_struct(ndr
, name
, "NTLMv2_RESPONSE");
1488 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1489 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1491 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 16);
1492 ndr_print_NTLMv2_CLIENT_CHALLENGE(ndr
, "Challenge", &r
->Challenge
);
1494 ndr
->flags
= _flags_save_STRUCT
;
1498 _PUBLIC_
enum ndr_err_code
ndr_push_ntlmssp_NTLM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const union ntlmssp_NTLM_RESPONSE
*r
)
1500 if (ndr_flags
& NDR_SCALARS
) {
1501 int level
= ndr_push_get_switch_value(ndr
, r
);
1507 NDR_CHECK(ndr_push_NTLM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1511 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr
, NDR_SCALARS
, &r
->v2
));
1516 if (ndr_flags
& NDR_BUFFERS
) {
1517 int level
= ndr_push_get_switch_value(ndr
, r
);
1526 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr
, NDR_BUFFERS
, &r
->v2
));
1531 return NDR_ERR_SUCCESS
;
1534 _PUBLIC_
enum ndr_err_code
ndr_pull_ntlmssp_NTLM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, union ntlmssp_NTLM_RESPONSE
*r
)
1537 level
= ndr_pull_get_switch_value(ndr
, r
);
1538 if (ndr_flags
& NDR_SCALARS
) {
1544 NDR_CHECK(ndr_pull_NTLM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1548 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr
, NDR_SCALARS
, &r
->v2
));
1553 if (ndr_flags
& NDR_BUFFERS
) {
1562 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr
, NDR_BUFFERS
, &r
->v2
));
1567 return NDR_ERR_SUCCESS
;
1570 _PUBLIC_
void ndr_print_ntlmssp_NTLM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const union ntlmssp_NTLM_RESPONSE
*r
)
1573 level
= ndr_print_get_switch_value(ndr
, r
);
1574 ndr_print_union(ndr
, name
, level
, "ntlmssp_NTLM_RESPONSE");
1580 ndr_print_NTLM_RESPONSE(ndr
, "v1", &r
->v1
);
1584 ndr_print_NTLMv2_RESPONSE(ndr
, "v2", &r
->v2
);
1590 _PUBLIC_
enum ndr_err_code
ndr_push_AUTHENTICATE_MESSAGE(struct ndr_push
*ndr
, int ndr_flags
, const struct AUTHENTICATE_MESSAGE
*r
)
1593 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1594 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1595 if (ndr_flags
& NDR_SCALARS
) {
1596 NDR_CHECK(ndr_push_align(ndr
, 4));
1597 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS
));
1598 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr
, NDR_SCALARS
, NtLmAuthenticate
));
1599 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->LmChallengeResponseLen
));
1600 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->LmChallengeResponseLen
));
1601 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->LmChallengeResponse
));
1602 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->NtChallengeResponseLen
));
1603 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->NtChallengeResponseLen
));
1604 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->NtChallengeResponse
));
1605 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
1606 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
1608 uint32_t _flags_save_string
= ndr
->flags
;
1609 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1610 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->DomainName
));
1611 ndr
->flags
= _flags_save_string
;
1613 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
1614 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
1616 uint32_t _flags_save_string
= ndr
->flags
;
1617 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1618 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->UserName
));
1619 ndr
->flags
= _flags_save_string
;
1621 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
1622 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
1624 uint32_t _flags_save_string
= ndr
->flags
;
1625 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1626 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->Workstation
));
1627 ndr
->flags
= _flags_save_string
;
1629 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->EncryptedRandomSessionKey
->length
));
1630 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->EncryptedRandomSessionKey
->length
));
1631 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->EncryptedRandomSessionKey
));
1632 NDR_CHECK(ndr_push_NEGOTIATE(ndr
, NDR_SCALARS
, r
->NegotiateFlags
));
1633 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
1634 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
1636 if (ndr_flags
& NDR_BUFFERS
) {
1637 if (r
->LmChallengeResponse
) {
1638 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->LmChallengeResponse
));
1640 struct ndr_push
*_ndr_LmChallengeResponse
;
1641 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1642 NDR_CHECK(ndr_push_set_switch_value(_ndr_LmChallengeResponse
, r
->LmChallengeResponse
, r
->LmChallengeResponseLen
));
1643 NDR_CHECK(ndr_push_ntlmssp_LM_RESPONSE(_ndr_LmChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->LmChallengeResponse
));
1644 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1647 if (r
->NtChallengeResponse
) {
1648 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->NtChallengeResponse
));
1650 struct ndr_push
*_ndr_NtChallengeResponse
;
1651 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseLen
));
1652 NDR_CHECK(ndr_push_set_switch_value(_ndr_NtChallengeResponse
, r
->NtChallengeResponse
, r
->NtChallengeResponseLen
));
1653 NDR_CHECK(ndr_push_ntlmssp_NTLM_RESPONSE(_ndr_NtChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->NtChallengeResponse
));
1654 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseLen
));
1658 uint32_t _flags_save_string
= ndr
->flags
;
1659 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1660 if (r
->DomainName
) {
1661 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->DomainName
));
1663 struct ndr_push
*_ndr_DomainName
;
1664 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_DomainName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
1665 NDR_CHECK(ndr_push_string(_ndr_DomainName
, NDR_SCALARS
, r
->DomainName
));
1666 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_DomainName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
1669 ndr
->flags
= _flags_save_string
;
1672 uint32_t _flags_save_string
= ndr
->flags
;
1673 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1675 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->UserName
));
1677 struct ndr_push
*_ndr_UserName
;
1678 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_UserName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
1679 NDR_CHECK(ndr_push_string(_ndr_UserName
, NDR_SCALARS
, r
->UserName
));
1680 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_UserName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
1683 ndr
->flags
= _flags_save_string
;
1686 uint32_t _flags_save_string
= ndr
->flags
;
1687 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1688 if (r
->Workstation
) {
1689 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->Workstation
));
1691 struct ndr_push
*_ndr_Workstation
;
1692 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_Workstation
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
1693 NDR_CHECK(ndr_push_string(_ndr_Workstation
, NDR_SCALARS
, r
->Workstation
));
1694 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_Workstation
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
1697 ndr
->flags
= _flags_save_string
;
1699 if (r
->EncryptedRandomSessionKey
) {
1700 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->EncryptedRandomSessionKey
));
1702 struct ndr_push
*_ndr_EncryptedRandomSessionKey
;
1703 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKey
->length
));
1704 NDR_CHECK(ndr_push_DATA_BLOB(_ndr_EncryptedRandomSessionKey
, NDR_SCALARS
, *r
->EncryptedRandomSessionKey
));
1705 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKey
->length
));
1708 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1710 ndr
->flags
= _flags_save_STRUCT
;
1712 return NDR_ERR_SUCCESS
;
1715 _PUBLIC_
enum ndr_err_code
ndr_pull_AUTHENTICATE_MESSAGE(struct ndr_pull
*ndr
, int ndr_flags
, struct AUTHENTICATE_MESSAGE
*r
)
1717 uint32_t _ptr_LmChallengeResponse
;
1718 TALLOC_CTX
*_mem_save_LmChallengeResponse_0
;
1719 uint32_t _ptr_NtChallengeResponse
;
1720 TALLOC_CTX
*_mem_save_NtChallengeResponse_0
;
1721 uint32_t _ptr_DomainName
;
1722 TALLOC_CTX
*_mem_save_DomainName_0
;
1723 uint32_t _ptr_UserName
;
1724 TALLOC_CTX
*_mem_save_UserName_0
;
1725 uint32_t _ptr_Workstation
;
1726 TALLOC_CTX
*_mem_save_Workstation_0
;
1727 uint32_t _ptr_EncryptedRandomSessionKey
;
1728 TALLOC_CTX
*_mem_save_EncryptedRandomSessionKey_0
;
1730 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1731 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1732 if (ndr_flags
& NDR_SCALARS
) {
1733 NDR_CHECK(ndr_pull_align(ndr
, 4));
1734 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->Signature
, 8, sizeof(uint8_t), CH_DOS
));
1735 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr
, NDR_SCALARS
, &r
->MessageType
));
1736 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->LmChallengeResponseLen
));
1737 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->LmChallengeResponseMaxLen
));
1738 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LmChallengeResponse
));
1739 if (_ptr_LmChallengeResponse
) {
1740 NDR_PULL_ALLOC(ndr
, r
->LmChallengeResponse
);
1741 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->LmChallengeResponse
, _ptr_LmChallengeResponse
));
1743 r
->LmChallengeResponse
= NULL
;
1745 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->NtChallengeResponseLen
));
1746 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->NtChallengeResponseMaxLen
));
1747 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_NtChallengeResponse
));
1748 if (_ptr_NtChallengeResponse
) {
1749 NDR_PULL_ALLOC(ndr
, r
->NtChallengeResponse
);
1750 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->NtChallengeResponse
, _ptr_NtChallengeResponse
));
1752 r
->NtChallengeResponse
= NULL
;
1754 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameLen
));
1755 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameMaxLen
));
1757 uint32_t _flags_save_string
= ndr
->flags
;
1758 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1759 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DomainName
));
1760 if (_ptr_DomainName
) {
1761 NDR_PULL_ALLOC(ndr
, r
->DomainName
);
1762 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->DomainName
, _ptr_DomainName
));
1764 r
->DomainName
= NULL
;
1766 ndr
->flags
= _flags_save_string
;
1768 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->UserNameLen
));
1769 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->UserNameMaxLen
));
1771 uint32_t _flags_save_string
= ndr
->flags
;
1772 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1773 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_UserName
));
1774 if (_ptr_UserName
) {
1775 NDR_PULL_ALLOC(ndr
, r
->UserName
);
1776 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->UserName
, _ptr_UserName
));
1780 ndr
->flags
= _flags_save_string
;
1782 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationLen
));
1783 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationMaxLen
));
1785 uint32_t _flags_save_string
= ndr
->flags
;
1786 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1787 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Workstation
));
1788 if (_ptr_Workstation
) {
1789 NDR_PULL_ALLOC(ndr
, r
->Workstation
);
1790 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->Workstation
, _ptr_Workstation
));
1792 r
->Workstation
= NULL
;
1794 ndr
->flags
= _flags_save_string
;
1796 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->EncryptedRandomSessionKeyLen
));
1797 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->EncryptedRandomSessionKeyMaxLen
));
1798 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_EncryptedRandomSessionKey
));
1799 if (_ptr_EncryptedRandomSessionKey
) {
1800 NDR_PULL_ALLOC(ndr
, r
->EncryptedRandomSessionKey
);
1801 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->EncryptedRandomSessionKey
, _ptr_EncryptedRandomSessionKey
));
1803 r
->EncryptedRandomSessionKey
= NULL
;
1805 NDR_CHECK(ndr_pull_NEGOTIATE(ndr
, NDR_SCALARS
, &r
->NegotiateFlags
));
1806 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
1807 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
1809 if (ndr_flags
& NDR_BUFFERS
) {
1810 if (r
->LmChallengeResponse
) {
1811 uint32_t _relative_save_offset
;
1812 _relative_save_offset
= ndr
->offset
;
1813 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->LmChallengeResponse
));
1814 _mem_save_LmChallengeResponse_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1815 NDR_PULL_SET_MEM_CTX(ndr
, r
->LmChallengeResponse
, 0);
1817 struct ndr_pull
*_ndr_LmChallengeResponse
;
1818 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1819 NDR_CHECK(ndr_pull_set_switch_value(_ndr_LmChallengeResponse
, r
->LmChallengeResponse
, r
->LmChallengeResponseLen
));
1820 NDR_CHECK(ndr_pull_ntlmssp_LM_RESPONSE(_ndr_LmChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->LmChallengeResponse
));
1821 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1823 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LmChallengeResponse_0
, 0);
1824 ndr
->offset
= _relative_save_offset
;
1826 if (r
->NtChallengeResponse
) {
1827 uint32_t _relative_save_offset
;
1828 _relative_save_offset
= ndr
->offset
;
1829 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->NtChallengeResponse
));
1830 _mem_save_NtChallengeResponse_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1831 NDR_PULL_SET_MEM_CTX(ndr
, r
->NtChallengeResponse
, 0);
1833 struct ndr_pull
*_ndr_NtChallengeResponse
;
1834 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseMaxLen
));
1835 NDR_CHECK(ndr_pull_set_switch_value(_ndr_NtChallengeResponse
, r
->NtChallengeResponse
, r
->NtChallengeResponseLen
));
1836 NDR_CHECK(ndr_pull_ntlmssp_NTLM_RESPONSE(_ndr_NtChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->NtChallengeResponse
));
1837 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseMaxLen
));
1839 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_NtChallengeResponse_0
, 0);
1840 ndr
->offset
= _relative_save_offset
;
1843 uint32_t _flags_save_string
= ndr
->flags
;
1844 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1845 if (r
->DomainName
) {
1846 uint32_t _relative_save_offset
;
1847 _relative_save_offset
= ndr
->offset
;
1848 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->DomainName
));
1849 _mem_save_DomainName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1850 NDR_PULL_SET_MEM_CTX(ndr
, r
->DomainName
, 0);
1852 struct ndr_pull
*_ndr_DomainName
;
1853 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_DomainName
, 0, r
->DomainNameLen
));
1854 NDR_CHECK(ndr_pull_string(_ndr_DomainName
, NDR_SCALARS
, &r
->DomainName
));
1855 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_DomainName
, 0, r
->DomainNameLen
));
1857 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DomainName_0
, 0);
1858 ndr
->offset
= _relative_save_offset
;
1860 ndr
->flags
= _flags_save_string
;
1863 uint32_t _flags_save_string
= ndr
->flags
;
1864 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1866 uint32_t _relative_save_offset
;
1867 _relative_save_offset
= ndr
->offset
;
1868 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->UserName
));
1869 _mem_save_UserName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1870 NDR_PULL_SET_MEM_CTX(ndr
, r
->UserName
, 0);
1872 struct ndr_pull
*_ndr_UserName
;
1873 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_UserName
, 0, r
->UserNameLen
));
1874 NDR_CHECK(ndr_pull_string(_ndr_UserName
, NDR_SCALARS
, &r
->UserName
));
1875 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_UserName
, 0, r
->UserNameLen
));
1877 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_UserName_0
, 0);
1878 ndr
->offset
= _relative_save_offset
;
1880 ndr
->flags
= _flags_save_string
;
1883 uint32_t _flags_save_string
= ndr
->flags
;
1884 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1885 if (r
->Workstation
) {
1886 uint32_t _relative_save_offset
;
1887 _relative_save_offset
= ndr
->offset
;
1888 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->Workstation
));
1889 _mem_save_Workstation_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1890 NDR_PULL_SET_MEM_CTX(ndr
, r
->Workstation
, 0);
1892 struct ndr_pull
*_ndr_Workstation
;
1893 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_Workstation
, 0, r
->WorkstationLen
));
1894 NDR_CHECK(ndr_pull_string(_ndr_Workstation
, NDR_SCALARS
, &r
->Workstation
));
1895 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_Workstation
, 0, r
->WorkstationLen
));
1897 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Workstation_0
, 0);
1898 ndr
->offset
= _relative_save_offset
;
1900 ndr
->flags
= _flags_save_string
;
1902 if (r
->EncryptedRandomSessionKey
) {
1903 uint32_t _relative_save_offset
;
1904 _relative_save_offset
= ndr
->offset
;
1905 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->EncryptedRandomSessionKey
));
1906 _mem_save_EncryptedRandomSessionKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1907 NDR_PULL_SET_MEM_CTX(ndr
, r
->EncryptedRandomSessionKey
, 0);
1909 struct ndr_pull
*_ndr_EncryptedRandomSessionKey
;
1910 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKeyLen
));
1911 NDR_CHECK(ndr_pull_DATA_BLOB(_ndr_EncryptedRandomSessionKey
, NDR_SCALARS
, r
->EncryptedRandomSessionKey
));
1912 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKeyLen
));
1914 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_EncryptedRandomSessionKey_0
, 0);
1915 ndr
->offset
= _relative_save_offset
;
1917 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1919 ndr
->flags
= _flags_save_STRUCT
;
1921 return NDR_ERR_SUCCESS
;
1924 _PUBLIC_
void ndr_print_AUTHENTICATE_MESSAGE(struct ndr_print
*ndr
, const char *name
, const struct AUTHENTICATE_MESSAGE
*r
)
1926 ndr_print_struct(ndr
, name
, "AUTHENTICATE_MESSAGE");
1928 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1929 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1931 ndr_print_string(ndr
, "Signature", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?"NTLMSSP":r
->Signature
);
1932 ndr_print_ntlmssp_MessageType(ndr
, "MessageType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NtLmAuthenticate
:r
->MessageType
);
1933 ndr_print_uint16(ndr
, "LmChallengeResponseLen", r
->LmChallengeResponseLen
);
1934 ndr_print_uint16(ndr
, "LmChallengeResponseMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->LmChallengeResponseLen
:r
->LmChallengeResponseMaxLen
);
1935 ndr_print_ptr(ndr
, "LmChallengeResponse", r
->LmChallengeResponse
);
1937 if (r
->LmChallengeResponse
) {
1938 ndr_print_set_switch_value(ndr
, r
->LmChallengeResponse
, r
->LmChallengeResponseLen
);
1939 ndr_print_ntlmssp_LM_RESPONSE(ndr
, "LmChallengeResponse", r
->LmChallengeResponse
);
1942 ndr_print_uint16(ndr
, "NtChallengeResponseLen", r
->NtChallengeResponseLen
);
1943 ndr_print_uint16(ndr
, "NtChallengeResponseMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->NtChallengeResponseLen
:r
->NtChallengeResponseMaxLen
);
1944 ndr_print_ptr(ndr
, "NtChallengeResponse", r
->NtChallengeResponse
);
1946 if (r
->NtChallengeResponse
) {
1947 ndr_print_set_switch_value(ndr
, r
->NtChallengeResponse
, r
->NtChallengeResponseLen
);
1948 ndr_print_ntlmssp_NTLM_RESPONSE(ndr
, "NtChallengeResponse", r
->NtChallengeResponse
);
1951 ndr_print_uint16(ndr
, "DomainNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
):r
->DomainNameLen
);
1952 ndr_print_uint16(ndr
, "DomainNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->DomainNameLen
:r
->DomainNameMaxLen
);
1953 ndr_print_ptr(ndr
, "DomainName", r
->DomainName
);
1955 if (r
->DomainName
) {
1956 ndr_print_string(ndr
, "DomainName", r
->DomainName
);
1959 ndr_print_uint16(ndr
, "UserNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
):r
->UserNameLen
);
1960 ndr_print_uint16(ndr
, "UserNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->UserNameLen
:r
->UserNameMaxLen
);
1961 ndr_print_ptr(ndr
, "UserName", r
->UserName
);
1964 ndr_print_string(ndr
, "UserName", r
->UserName
);
1967 ndr_print_uint16(ndr
, "WorkstationLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
):r
->WorkstationLen
);
1968 ndr_print_uint16(ndr
, "WorkstationMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->WorkstationLen
:r
->WorkstationMaxLen
);
1969 ndr_print_ptr(ndr
, "Workstation", r
->Workstation
);
1971 if (r
->Workstation
) {
1972 ndr_print_string(ndr
, "Workstation", r
->Workstation
);
1975 ndr_print_uint16(ndr
, "EncryptedRandomSessionKeyLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->EncryptedRandomSessionKey
->length
:r
->EncryptedRandomSessionKeyLen
);
1976 ndr_print_uint16(ndr
, "EncryptedRandomSessionKeyMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->EncryptedRandomSessionKeyLen
:r
->EncryptedRandomSessionKeyMaxLen
);
1977 ndr_print_ptr(ndr
, "EncryptedRandomSessionKey", r
->EncryptedRandomSessionKey
);
1979 if (r
->EncryptedRandomSessionKey
) {
1980 ndr_print_DATA_BLOB(ndr
, "EncryptedRandomSessionKey", *r
->EncryptedRandomSessionKey
);
1983 ndr_print_NEGOTIATE(ndr
, "NegotiateFlags", r
->NegotiateFlags
);
1984 ndr_print_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
);
1985 ndr_print_ntlmssp_Version(ndr
, "Version", &r
->Version
);
1987 ndr
->flags
= _flags_save_STRUCT
;
1991 _PUBLIC_
enum ndr_err_code
ndr_push_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLMSSP_MESSAGE_SIGNATURE
*r
)
1993 if (ndr_flags
& NDR_SCALARS
) {
1994 NDR_CHECK(ndr_push_align(ndr
, 4));
1995 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, NTLMSSP_SIGN_VERSION
));
1996 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->RandomPad
));
1997 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Checksum
));
1998 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->SeqNum
));
2000 if (ndr_flags
& NDR_BUFFERS
) {
2002 return NDR_ERR_SUCCESS
;
2005 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMSSP_MESSAGE_SIGNATURE
*r
)
2007 if (ndr_flags
& NDR_SCALARS
) {
2008 NDR_CHECK(ndr_pull_align(ndr
, 4));
2009 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Version
));
2010 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->RandomPad
));
2011 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Checksum
));
2012 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->SeqNum
));
2014 if (ndr_flags
& NDR_BUFFERS
) {
2016 return NDR_ERR_SUCCESS
;
2019 _PUBLIC_
void ndr_print_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_print
*ndr
, const char *name
, const struct NTLMSSP_MESSAGE_SIGNATURE
*r
)
2021 ndr_print_struct(ndr
, name
, "NTLMSSP_MESSAGE_SIGNATURE");
2023 ndr_print_uint32(ndr
, "Version", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NTLMSSP_SIGN_VERSION
:r
->Version
);
2024 ndr_print_uint32(ndr
, "RandomPad", r
->RandomPad
);
2025 ndr_print_uint32(ndr
, "Checksum", r
->Checksum
);
2026 ndr_print_uint32(ndr
, "SeqNum", r
->SeqNum
);
2030 _PUBLIC_
enum ndr_err_code
ndr_push_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2
*r
)
2033 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2034 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
2035 if (ndr_flags
& NDR_SCALARS
) {
2036 NDR_CHECK(ndr_push_align(ndr
, 4));
2037 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, NTLMSSP_SIGN_VERSION
));
2038 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Checksum
, 8));
2039 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->SeqNum
));
2041 if (ndr_flags
& NDR_BUFFERS
) {
2043 ndr
->flags
= _flags_save_STRUCT
;
2045 return NDR_ERR_SUCCESS
;
2048 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2
*r
)
2051 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2052 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
2053 if (ndr_flags
& NDR_SCALARS
) {
2054 NDR_CHECK(ndr_pull_align(ndr
, 4));
2055 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Version
));
2056 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Checksum
, 8));
2057 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->SeqNum
));
2059 if (ndr_flags
& NDR_BUFFERS
) {
2061 ndr
->flags
= _flags_save_STRUCT
;
2063 return NDR_ERR_SUCCESS
;
2066 _PUBLIC_
void ndr_print_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_print
*ndr
, const char *name
, const struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2
*r
)
2068 ndr_print_struct(ndr
, name
, "NTLMSSP_MESSAGE_SIGNATURE_NTLMv2");
2070 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2071 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
2073 ndr_print_uint32(ndr
, "Version", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NTLMSSP_SIGN_VERSION
:r
->Version
);
2074 ndr_print_array_uint8(ndr
, "Checksum", r
->Checksum
, 8);
2075 ndr_print_uint32(ndr
, "SeqNum", r
->SeqNum
);
2077 ndr
->flags
= _flags_save_STRUCT
;
2081 static enum ndr_err_code
ndr_push_decode_NEGOTIATE_MESSAGE(struct ndr_push
*ndr
, int flags
, const struct decode_NEGOTIATE_MESSAGE
*r
)
2083 if (flags
& NDR_IN
) {
2084 NDR_CHECK(ndr_push_NEGOTIATE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.negotiate
));
2086 if (flags
& NDR_OUT
) {
2088 return NDR_ERR_SUCCESS
;
2091 static enum ndr_err_code
ndr_pull_decode_NEGOTIATE_MESSAGE(struct ndr_pull
*ndr
, int flags
, struct decode_NEGOTIATE_MESSAGE
*r
)
2093 if (flags
& NDR_IN
) {
2094 NDR_CHECK(ndr_pull_NEGOTIATE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.negotiate
));
2096 if (flags
& NDR_OUT
) {
2098 return NDR_ERR_SUCCESS
;
2101 _PUBLIC_
void ndr_print_decode_NEGOTIATE_MESSAGE(struct ndr_print
*ndr
, const char *name
, int flags
, const struct decode_NEGOTIATE_MESSAGE
*r
)
2103 ndr_print_struct(ndr
, name
, "decode_NEGOTIATE_MESSAGE");
2105 if (flags
& NDR_SET_VALUES
) {
2106 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2108 if (flags
& NDR_IN
) {
2109 ndr_print_struct(ndr
, "in", "decode_NEGOTIATE_MESSAGE");
2111 ndr_print_NEGOTIATE_MESSAGE(ndr
, "negotiate", &r
->in
.negotiate
);
2114 if (flags
& NDR_OUT
) {
2115 ndr_print_struct(ndr
, "out", "decode_NEGOTIATE_MESSAGE");
2122 static enum ndr_err_code
ndr_push_decode_CHALLENGE_MESSAGE(struct ndr_push
*ndr
, int flags
, const struct decode_CHALLENGE_MESSAGE
*r
)
2124 if (flags
& NDR_IN
) {
2125 NDR_CHECK(ndr_push_CHALLENGE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.challenge
));
2127 if (flags
& NDR_OUT
) {
2129 return NDR_ERR_SUCCESS
;
2132 static enum ndr_err_code
ndr_pull_decode_CHALLENGE_MESSAGE(struct ndr_pull
*ndr
, int flags
, struct decode_CHALLENGE_MESSAGE
*r
)
2134 if (flags
& NDR_IN
) {
2135 NDR_CHECK(ndr_pull_CHALLENGE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.challenge
));
2137 if (flags
& NDR_OUT
) {
2139 return NDR_ERR_SUCCESS
;
2142 _PUBLIC_
void ndr_print_decode_CHALLENGE_MESSAGE(struct ndr_print
*ndr
, const char *name
, int flags
, const struct decode_CHALLENGE_MESSAGE
*r
)
2144 ndr_print_struct(ndr
, name
, "decode_CHALLENGE_MESSAGE");
2146 if (flags
& NDR_SET_VALUES
) {
2147 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2149 if (flags
& NDR_IN
) {
2150 ndr_print_struct(ndr
, "in", "decode_CHALLENGE_MESSAGE");
2152 ndr_print_CHALLENGE_MESSAGE(ndr
, "challenge", &r
->in
.challenge
);
2155 if (flags
& NDR_OUT
) {
2156 ndr_print_struct(ndr
, "out", "decode_CHALLENGE_MESSAGE");
2163 static enum ndr_err_code
ndr_push_decode_AUTHENTICATE_MESSAGE(struct ndr_push
*ndr
, int flags
, const struct decode_AUTHENTICATE_MESSAGE
*r
)
2165 if (flags
& NDR_IN
) {
2166 NDR_CHECK(ndr_push_AUTHENTICATE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.authenticate
));
2168 if (flags
& NDR_OUT
) {
2170 return NDR_ERR_SUCCESS
;
2173 static enum ndr_err_code
ndr_pull_decode_AUTHENTICATE_MESSAGE(struct ndr_pull
*ndr
, int flags
, struct decode_AUTHENTICATE_MESSAGE
*r
)
2175 if (flags
& NDR_IN
) {
2176 NDR_CHECK(ndr_pull_AUTHENTICATE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.authenticate
));
2178 if (flags
& NDR_OUT
) {
2180 return NDR_ERR_SUCCESS
;
2183 _PUBLIC_
void ndr_print_decode_AUTHENTICATE_MESSAGE(struct ndr_print
*ndr
, const char *name
, int flags
, const struct decode_AUTHENTICATE_MESSAGE
*r
)
2185 ndr_print_struct(ndr
, name
, "decode_AUTHENTICATE_MESSAGE");
2187 if (flags
& NDR_SET_VALUES
) {
2188 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2190 if (flags
& NDR_IN
) {
2191 ndr_print_struct(ndr
, "in", "decode_AUTHENTICATE_MESSAGE");
2193 ndr_print_AUTHENTICATE_MESSAGE(ndr
, "authenticate", &r
->in
.authenticate
);
2196 if (flags
& NDR_OUT
) {
2197 ndr_print_struct(ndr
, "out", "decode_AUTHENTICATE_MESSAGE");
2204 static enum ndr_err_code
ndr_push_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_push
*ndr
, int flags
, const struct decode_NTLMv2_CLIENT_CHALLENGE
*r
)
2206 if (flags
& NDR_IN
) {
2207 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.challenge
));
2209 if (flags
& NDR_OUT
) {
2211 return NDR_ERR_SUCCESS
;
2214 static enum ndr_err_code
ndr_pull_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_pull
*ndr
, int flags
, struct decode_NTLMv2_CLIENT_CHALLENGE
*r
)
2216 if (flags
& NDR_IN
) {
2217 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.challenge
));
2219 if (flags
& NDR_OUT
) {
2221 return NDR_ERR_SUCCESS
;
2224 _PUBLIC_
void ndr_print_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_print
*ndr
, const char *name
, int flags
, const struct decode_NTLMv2_CLIENT_CHALLENGE
*r
)
2226 ndr_print_struct(ndr
, name
, "decode_NTLMv2_CLIENT_CHALLENGE");
2228 if (flags
& NDR_SET_VALUES
) {
2229 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2231 if (flags
& NDR_IN
) {
2232 ndr_print_struct(ndr
, "in", "decode_NTLMv2_CLIENT_CHALLENGE");
2234 ndr_print_NTLMv2_CLIENT_CHALLENGE(ndr
, "challenge", &r
->in
.challenge
);
2237 if (flags
& NDR_OUT
) {
2238 ndr_print_struct(ndr
, "out", "decode_NTLMv2_CLIENT_CHALLENGE");
2245 static const struct ndr_interface_call ntlmssp_calls
[] = {
2247 "decode_NEGOTIATE_MESSAGE",
2248 sizeof(struct decode_NEGOTIATE_MESSAGE
),
2249 (ndr_push_flags_fn_t
) ndr_push_decode_NEGOTIATE_MESSAGE
,
2250 (ndr_pull_flags_fn_t
) ndr_pull_decode_NEGOTIATE_MESSAGE
,
2251 (ndr_print_function_t
) ndr_print_decode_NEGOTIATE_MESSAGE
,
2255 "decode_CHALLENGE_MESSAGE",
2256 sizeof(struct decode_CHALLENGE_MESSAGE
),
2257 (ndr_push_flags_fn_t
) ndr_push_decode_CHALLENGE_MESSAGE
,
2258 (ndr_pull_flags_fn_t
) ndr_pull_decode_CHALLENGE_MESSAGE
,
2259 (ndr_print_function_t
) ndr_print_decode_CHALLENGE_MESSAGE
,
2263 "decode_AUTHENTICATE_MESSAGE",
2264 sizeof(struct decode_AUTHENTICATE_MESSAGE
),
2265 (ndr_push_flags_fn_t
) ndr_push_decode_AUTHENTICATE_MESSAGE
,
2266 (ndr_pull_flags_fn_t
) ndr_pull_decode_AUTHENTICATE_MESSAGE
,
2267 (ndr_print_function_t
) ndr_print_decode_AUTHENTICATE_MESSAGE
,
2271 "decode_NTLMv2_CLIENT_CHALLENGE",
2272 sizeof(struct decode_NTLMv2_CLIENT_CHALLENGE
),
2273 (ndr_push_flags_fn_t
) ndr_push_decode_NTLMv2_CLIENT_CHALLENGE
,
2274 (ndr_pull_flags_fn_t
) ndr_pull_decode_NTLMv2_CLIENT_CHALLENGE
,
2275 (ndr_print_function_t
) ndr_print_decode_NTLMv2_CLIENT_CHALLENGE
,
2278 { NULL
, 0, NULL
, NULL
, NULL
, false }
2281 static const char * const ntlmssp_endpoint_strings
[] = {
2282 "ncacn_np:[\\pipe\\ntlmssp]",
2285 static const struct ndr_interface_string_array ntlmssp_endpoints
= {
2287 .names
= ntlmssp_endpoint_strings
2290 static const char * const ntlmssp_authservice_strings
[] = {
2294 static const struct ndr_interface_string_array ntlmssp_authservices
= {
2296 .names
= ntlmssp_authservice_strings
2300 const struct ndr_interface_table ndr_table_ntlmssp
= {
2303 {0x6e746c6d,0x7373,0x700a,{0x00,0x00},{0x00,0x00,0x00,0x00}},
2306 .helpstring
= NDR_NTLMSSP_HELPSTRING
,
2308 .calls
= ntlmssp_calls
,
2309 .endpoints
= &ntlmssp_endpoints
,
2310 .authservices
= &ntlmssp_authservices