1 /* parser auto-generated by pidl */
4 #include "../librpc/gen_ndr/ndr_ntlmssp.h"
6 static enum ndr_err_code
ndr_push_ntlmssp_MessageType(struct ndr_push
*ndr
, int ndr_flags
, enum ntlmssp_MessageType r
)
8 NDR_CHECK(ndr_push_enum_uint32(ndr
, NDR_SCALARS
, r
));
9 return NDR_ERR_SUCCESS
;
12 static enum ndr_err_code
ndr_pull_ntlmssp_MessageType(struct ndr_pull
*ndr
, int ndr_flags
, enum ntlmssp_MessageType
*r
)
15 NDR_CHECK(ndr_pull_enum_uint32(ndr
, NDR_SCALARS
, &v
));
17 return NDR_ERR_SUCCESS
;
20 _PUBLIC_
void ndr_print_ntlmssp_MessageType(struct ndr_print
*ndr
, const char *name
, enum ntlmssp_MessageType r
)
22 const char *val
= NULL
;
25 case NtLmNegotiate
: val
= "NtLmNegotiate"; break;
26 case NtLmChallenge
: val
= "NtLmChallenge"; break;
27 case NtLmAuthenticate
: val
= "NtLmAuthenticate"; break;
29 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
32 static enum ndr_err_code
ndr_push_NEGOTIATE(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
34 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
35 return NDR_ERR_SUCCESS
;
38 static enum ndr_err_code
ndr_pull_NEGOTIATE(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
41 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
43 return NDR_ERR_SUCCESS
;
46 _PUBLIC_
void ndr_print_NEGOTIATE(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
48 ndr_print_uint32(ndr
, name
, r
);
50 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_UNICODE", NTLMSSP_NEGOTIATE_UNICODE
, r
);
51 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_OEM", NTLMSSP_NEGOTIATE_OEM
, r
);
52 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_REQUEST_TARGET", NTLMSSP_REQUEST_TARGET
, r
);
53 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_SIGN", NTLMSSP_NEGOTIATE_SIGN
, r
);
54 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_SEAL", NTLMSSP_NEGOTIATE_SEAL
, r
);
55 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_DATAGRAM", NTLMSSP_NEGOTIATE_DATAGRAM
, r
);
56 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_LM_KEY", NTLMSSP_NEGOTIATE_LM_KEY
, r
);
57 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_NETWARE", NTLMSSP_NEGOTIATE_NETWARE
, r
);
58 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_NTLM", NTLMSSP_NEGOTIATE_NTLM
, r
);
59 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_NT_ONLY", NTLMSSP_NEGOTIATE_NT_ONLY
, r
);
60 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_ANONYMOUS", NTLMSSP_ANONYMOUS
, r
);
61 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED", NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED
, r
);
62 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED", NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED
, r
);
63 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL", NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL
, r
);
64 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_ALWAYS_SIGN", NTLMSSP_NEGOTIATE_ALWAYS_SIGN
, r
);
65 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_TARGET_TYPE_DOMAIN", NTLMSSP_TARGET_TYPE_DOMAIN
, r
);
66 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_TARGET_TYPE_SERVER", NTLMSSP_TARGET_TYPE_SERVER
, r
);
67 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_TARGET_TYPE_SHARE", NTLMSSP_TARGET_TYPE_SHARE
, r
);
68 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY", NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
, r
);
69 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_IDENTIFY", NTLMSSP_NEGOTIATE_IDENTIFY
, r
);
70 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_REQUEST_NON_NT_SESSION_KEY", NTLMSSP_REQUEST_NON_NT_SESSION_KEY
, r
);
71 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_TARGET_INFO", NTLMSSP_NEGOTIATE_TARGET_INFO
, r
);
72 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_VERSION", NTLMSSP_NEGOTIATE_VERSION
, r
);
73 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_128", NTLMSSP_NEGOTIATE_128
, r
);
74 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_KEY_EXCH", NTLMSSP_NEGOTIATE_KEY_EXCH
, r
);
75 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_NEGOTIATE_56", NTLMSSP_NEGOTIATE_56
, r
);
79 static enum ndr_err_code
ndr_push_ntlmssp_WindowsMajorVersion(struct ndr_push
*ndr
, int ndr_flags
, enum ntlmssp_WindowsMajorVersion r
)
81 NDR_CHECK(ndr_push_enum_uint8(ndr
, NDR_SCALARS
, r
));
82 return NDR_ERR_SUCCESS
;
85 static enum ndr_err_code
ndr_pull_ntlmssp_WindowsMajorVersion(struct ndr_pull
*ndr
, int ndr_flags
, enum ntlmssp_WindowsMajorVersion
*r
)
88 NDR_CHECK(ndr_pull_enum_uint8(ndr
, NDR_SCALARS
, &v
));
90 return NDR_ERR_SUCCESS
;
93 _PUBLIC_
void ndr_print_ntlmssp_WindowsMajorVersion(struct ndr_print
*ndr
, const char *name
, enum ntlmssp_WindowsMajorVersion r
)
95 const char *val
= NULL
;
98 case NTLMSSP_WINDOWS_MAJOR_VERSION_5
: val
= "NTLMSSP_WINDOWS_MAJOR_VERSION_5"; break;
99 case NTLMSSP_WINDOWS_MAJOR_VERSION_6
: val
= "NTLMSSP_WINDOWS_MAJOR_VERSION_6"; break;
101 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
104 static enum ndr_err_code
ndr_push_ntlmssp_WindowsMinorVersion(struct ndr_push
*ndr
, int ndr_flags
, enum ntlmssp_WindowsMinorVersion r
)
106 NDR_CHECK(ndr_push_enum_uint8(ndr
, NDR_SCALARS
, r
));
107 return NDR_ERR_SUCCESS
;
110 static enum ndr_err_code
ndr_pull_ntlmssp_WindowsMinorVersion(struct ndr_pull
*ndr
, int ndr_flags
, enum ntlmssp_WindowsMinorVersion
*r
)
113 NDR_CHECK(ndr_pull_enum_uint8(ndr
, NDR_SCALARS
, &v
));
115 return NDR_ERR_SUCCESS
;
118 _PUBLIC_
void ndr_print_ntlmssp_WindowsMinorVersion(struct ndr_print
*ndr
, const char *name
, enum ntlmssp_WindowsMinorVersion r
)
120 const char *val
= NULL
;
123 case NTLMSSP_WINDOWS_MINOR_VERSION_0
: val
= "NTLMSSP_WINDOWS_MINOR_VERSION_0"; break;
124 case NTLMSSP_WINDOWS_MINOR_VERSION_1
: val
= "NTLMSSP_WINDOWS_MINOR_VERSION_1"; break;
125 case NTLMSSP_WINDOWS_MINOR_VERSION_2
: val
= "NTLMSSP_WINDOWS_MINOR_VERSION_2"; break;
127 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
130 static enum ndr_err_code
ndr_push_ntlmssp_NTLMRevisionCurrent(struct ndr_push
*ndr
, int ndr_flags
, enum ntlmssp_NTLMRevisionCurrent r
)
132 NDR_CHECK(ndr_push_enum_uint8(ndr
, NDR_SCALARS
, r
));
133 return NDR_ERR_SUCCESS
;
136 static enum ndr_err_code
ndr_pull_ntlmssp_NTLMRevisionCurrent(struct ndr_pull
*ndr
, int ndr_flags
, enum ntlmssp_NTLMRevisionCurrent
*r
)
139 NDR_CHECK(ndr_pull_enum_uint8(ndr
, NDR_SCALARS
, &v
));
141 return NDR_ERR_SUCCESS
;
144 _PUBLIC_
void ndr_print_ntlmssp_NTLMRevisionCurrent(struct ndr_print
*ndr
, const char *name
, enum ntlmssp_NTLMRevisionCurrent r
)
146 const char *val
= NULL
;
149 case NTLMSSP_REVISION_W2K3_RC1
: val
= "NTLMSSP_REVISION_W2K3_RC1"; break;
150 case NTLMSSP_REVISION_W2K3
: val
= "NTLMSSP_REVISION_W2K3"; break;
152 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
155 static enum ndr_err_code
ndr_push_VERSION(struct ndr_push
*ndr
, int ndr_flags
, const struct VERSION
*r
)
157 if (ndr_flags
& NDR_SCALARS
) {
158 NDR_CHECK(ndr_push_align(ndr
, 2));
159 NDR_CHECK(ndr_push_ntlmssp_WindowsMajorVersion(ndr
, NDR_SCALARS
, r
->ProductMajorVersion
));
160 NDR_CHECK(ndr_push_ntlmssp_WindowsMinorVersion(ndr
, NDR_SCALARS
, r
->ProductMinorVersion
));
161 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->ProductBuild
));
162 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Reserved
, 3));
163 NDR_CHECK(ndr_push_ntlmssp_NTLMRevisionCurrent(ndr
, NDR_SCALARS
, r
->NTLMRevisionCurrent
));
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
);
201 NDR_CHECK(ndr_push_union_align(ndr
, 2));
203 case NTLMSSP_NEGOTIATE_VERSION
: {
204 NDR_CHECK(ndr_push_VERSION(ndr
, NDR_SCALARS
, &r
->version
));
212 if (ndr_flags
& NDR_BUFFERS
) {
213 int level
= ndr_push_get_switch_value(ndr
, r
);
215 case NTLMSSP_NEGOTIATE_VERSION
:
223 return NDR_ERR_SUCCESS
;
226 static enum ndr_err_code
ndr_pull_ntlmssp_Version(struct ndr_pull
*ndr
, int ndr_flags
, union ntlmssp_Version
*r
)
229 level
= ndr_pull_get_switch_value(ndr
, r
);
230 if (ndr_flags
& NDR_SCALARS
) {
231 NDR_CHECK(ndr_pull_union_align(ndr
, 2));
233 case NTLMSSP_NEGOTIATE_VERSION
: {
234 NDR_CHECK(ndr_pull_VERSION(ndr
, NDR_SCALARS
, &r
->version
));
242 if (ndr_flags
& NDR_BUFFERS
) {
244 case NTLMSSP_NEGOTIATE_VERSION
:
252 return NDR_ERR_SUCCESS
;
255 _PUBLIC_
enum ndr_err_code
ndr_push_NEGOTIATE_MESSAGE(struct ndr_push
*ndr
, int ndr_flags
, const struct NEGOTIATE_MESSAGE
*r
)
257 if (ndr_flags
& NDR_SCALARS
) {
258 NDR_CHECK(ndr_push_align(ndr
, 5));
259 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS
));
260 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr
, NDR_SCALARS
, NtLmNegotiate
));
261 NDR_CHECK(ndr_push_NEGOTIATE(ndr
, NDR_SCALARS
, r
->NegotiateFlags
));
262 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->DomainName
)));
263 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->DomainName
)));
265 uint32_t _flags_save_string
= ndr
->flags
;
266 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
267 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->DomainName
));
268 ndr
->flags
= _flags_save_string
;
270 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->Workstation
)));
271 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->Workstation
)));
273 uint32_t _flags_save_string
= ndr
->flags
;
274 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
275 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->Workstation
));
276 ndr
->flags
= _flags_save_string
;
278 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
279 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
281 if (ndr_flags
& NDR_BUFFERS
) {
283 uint32_t _flags_save_string
= ndr
->flags
;
284 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
286 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->DomainName
));
288 struct ndr_push
*_ndr_DomainName
;
289 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_DomainName
, 0, strlen(r
->DomainName
)));
290 NDR_CHECK(ndr_push_string(_ndr_DomainName
, NDR_SCALARS
, r
->DomainName
));
291 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_DomainName
, 0, strlen(r
->DomainName
)));
294 ndr
->flags
= _flags_save_string
;
297 uint32_t _flags_save_string
= ndr
->flags
;
298 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
299 if (r
->Workstation
) {
300 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->Workstation
));
302 struct ndr_push
*_ndr_Workstation
;
303 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_Workstation
, 0, strlen(r
->Workstation
)));
304 NDR_CHECK(ndr_push_string(_ndr_Workstation
, NDR_SCALARS
, r
->Workstation
));
305 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_Workstation
, 0, strlen(r
->Workstation
)));
308 ndr
->flags
= _flags_save_string
;
310 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
312 return NDR_ERR_SUCCESS
;
315 _PUBLIC_
enum ndr_err_code
ndr_pull_NEGOTIATE_MESSAGE(struct ndr_pull
*ndr
, int ndr_flags
, struct NEGOTIATE_MESSAGE
*r
)
317 uint32_t _ptr_DomainName
;
318 TALLOC_CTX
*_mem_save_DomainName_0
;
319 uint32_t _ptr_Workstation
;
320 TALLOC_CTX
*_mem_save_Workstation_0
;
321 if (ndr_flags
& NDR_SCALARS
) {
322 NDR_CHECK(ndr_pull_align(ndr
, 5));
323 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->Signature
, 8, sizeof(uint8_t), CH_DOS
));
324 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr
, NDR_SCALARS
, &r
->MessageType
));
325 NDR_CHECK(ndr_pull_NEGOTIATE(ndr
, NDR_SCALARS
, &r
->NegotiateFlags
));
326 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameLen
));
327 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameMaxLen
));
329 uint32_t _flags_save_string
= ndr
->flags
;
330 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
331 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DomainName
));
332 if (_ptr_DomainName
) {
333 NDR_PULL_ALLOC(ndr
, r
->DomainName
);
334 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->DomainName
, _ptr_DomainName
));
336 r
->DomainName
= NULL
;
338 ndr
->flags
= _flags_save_string
;
340 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationLen
));
341 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationMaxLen
));
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_Workstation
));
346 if (_ptr_Workstation
) {
347 NDR_PULL_ALLOC(ndr
, r
->Workstation
);
348 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->Workstation
, _ptr_Workstation
));
350 r
->Workstation
= NULL
;
352 ndr
->flags
= _flags_save_string
;
354 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
355 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
357 if (ndr_flags
& NDR_BUFFERS
) {
359 uint32_t _flags_save_string
= ndr
->flags
;
360 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
362 uint32_t _relative_save_offset
;
363 _relative_save_offset
= ndr
->offset
;
364 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->DomainName
));
365 _mem_save_DomainName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
366 NDR_PULL_SET_MEM_CTX(ndr
, r
->DomainName
, 0);
368 struct ndr_pull
*_ndr_DomainName
;
369 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_DomainName
, 0, r
->DomainNameLen
));
370 NDR_CHECK(ndr_pull_string(_ndr_DomainName
, NDR_SCALARS
, &r
->DomainName
));
371 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_DomainName
, 0, r
->DomainNameLen
));
373 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DomainName_0
, 0);
374 ndr
->offset
= _relative_save_offset
;
376 ndr
->flags
= _flags_save_string
;
379 uint32_t _flags_save_string
= ndr
->flags
;
380 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM
));
381 if (r
->Workstation
) {
382 uint32_t _relative_save_offset
;
383 _relative_save_offset
= ndr
->offset
;
384 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->Workstation
));
385 _mem_save_Workstation_0
= NDR_PULL_GET_MEM_CTX(ndr
);
386 NDR_PULL_SET_MEM_CTX(ndr
, r
->Workstation
, 0);
388 struct ndr_pull
*_ndr_Workstation
;
389 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_Workstation
, 0, r
->WorkstationLen
));
390 NDR_CHECK(ndr_pull_string(_ndr_Workstation
, NDR_SCALARS
, &r
->Workstation
));
391 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_Workstation
, 0, r
->WorkstationLen
));
393 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Workstation_0
, 0);
394 ndr
->offset
= _relative_save_offset
;
396 ndr
->flags
= _flags_save_string
;
398 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
400 return NDR_ERR_SUCCESS
;
403 _PUBLIC_
void ndr_print_NEGOTIATE_MESSAGE(struct ndr_print
*ndr
, const char *name
, const struct NEGOTIATE_MESSAGE
*r
)
405 ndr_print_struct(ndr
, name
, "NEGOTIATE_MESSAGE");
407 ndr_print_string(ndr
, "Signature", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?"NTLMSSP":r
->Signature
);
408 ndr_print_ntlmssp_MessageType(ndr
, "MessageType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NtLmNegotiate
:r
->MessageType
);
409 ndr_print_NEGOTIATE(ndr
, "NegotiateFlags", r
->NegotiateFlags
);
410 ndr_print_uint16(ndr
, "DomainNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?strlen(r
->DomainName
):r
->DomainNameLen
);
411 ndr_print_uint16(ndr
, "DomainNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->DomainNameLen
:r
->DomainNameMaxLen
);
412 ndr_print_ptr(ndr
, "DomainName", r
->DomainName
);
415 ndr_print_string(ndr
, "DomainName", r
->DomainName
);
418 ndr_print_uint16(ndr
, "WorkstationLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?strlen(r
->Workstation
):r
->WorkstationLen
);
419 ndr_print_uint16(ndr
, "WorkstationMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->WorkstationLen
:r
->WorkstationMaxLen
);
420 ndr_print_ptr(ndr
, "Workstation", r
->Workstation
);
422 if (r
->Workstation
) {
423 ndr_print_string(ndr
, "Workstation", r
->Workstation
);
426 ndr_print_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
);
427 ndr_print_ntlmssp_Version(ndr
, "Version", &r
->Version
);
431 static enum ndr_err_code
ndr_push_ntlmssp_AvId(struct ndr_push
*ndr
, int ndr_flags
, enum ntlmssp_AvId r
)
433 NDR_CHECK(ndr_push_enum_uint16(ndr
, NDR_SCALARS
, r
));
434 return NDR_ERR_SUCCESS
;
437 static enum ndr_err_code
ndr_pull_ntlmssp_AvId(struct ndr_pull
*ndr
, int ndr_flags
, enum ntlmssp_AvId
*r
)
440 NDR_CHECK(ndr_pull_enum_uint16(ndr
, NDR_SCALARS
, &v
));
442 return NDR_ERR_SUCCESS
;
445 _PUBLIC_
void ndr_print_ntlmssp_AvId(struct ndr_print
*ndr
, const char *name
, enum ntlmssp_AvId r
)
447 const char *val
= NULL
;
450 case MsvAvEOL
: val
= "MsvAvEOL"; break;
451 case MsvAvNbComputerName
: val
= "MsvAvNbComputerName"; break;
452 case MsvAvNbDomainName
: val
= "MsvAvNbDomainName"; break;
453 case MsvAvDnsComputerName
: val
= "MsvAvDnsComputerName"; break;
454 case MsvAvDnsDomainName
: val
= "MsvAvDnsDomainName"; break;
455 case MsvAvDnsTreeName
: val
= "MsvAvDnsTreeName"; break;
456 case MsvAvFlags
: val
= "MsvAvFlags"; break;
457 case MsvAvTimestamp
: val
= "MsvAvTimestamp"; break;
458 case MsAvRestrictions
: val
= "MsAvRestrictions"; break;
459 case MsvAvTargetName
: val
= "MsvAvTargetName"; break;
460 case MsvChannelBindings
: val
= "MsvChannelBindings"; break;
462 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
465 static enum ndr_err_code
ndr_push_Restriction_Encoding(struct ndr_push
*ndr
, int ndr_flags
, const struct Restriction_Encoding
*r
)
467 if (ndr_flags
& NDR_SCALARS
) {
468 NDR_CHECK(ndr_push_align(ndr
, 4));
469 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Size
));
470 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
471 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->IntegrityLevel
));
472 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->SubjectIntegrityLevel
));
473 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->MachineId
, 32));
475 if (ndr_flags
& NDR_BUFFERS
) {
477 return NDR_ERR_SUCCESS
;
480 static enum ndr_err_code
ndr_pull_Restriction_Encoding(struct ndr_pull
*ndr
, int ndr_flags
, struct Restriction_Encoding
*r
)
482 if (ndr_flags
& NDR_SCALARS
) {
483 NDR_CHECK(ndr_pull_align(ndr
, 4));
484 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Size
));
485 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Z4
));
486 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->IntegrityLevel
));
487 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->SubjectIntegrityLevel
));
488 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->MachineId
, 32));
490 if (ndr_flags
& NDR_BUFFERS
) {
492 return NDR_ERR_SUCCESS
;
495 _PUBLIC_
void ndr_print_Restriction_Encoding(struct ndr_print
*ndr
, const char *name
, const struct Restriction_Encoding
*r
)
497 ndr_print_struct(ndr
, name
, "Restriction_Encoding");
499 ndr_print_uint32(ndr
, "Size", r
->Size
);
500 ndr_print_uint32(ndr
, "Z4", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?0:r
->Z4
);
501 ndr_print_uint32(ndr
, "IntegrityLevel", r
->IntegrityLevel
);
502 ndr_print_uint32(ndr
, "SubjectIntegrityLevel", r
->SubjectIntegrityLevel
);
503 ndr_print_array_uint8(ndr
, "MachineId", r
->MachineId
, 32);
507 static enum ndr_err_code
ndr_push_ntlmssp_AvFlags(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
509 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
510 return NDR_ERR_SUCCESS
;
513 static enum ndr_err_code
ndr_pull_ntlmssp_AvFlags(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
516 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
518 return NDR_ERR_SUCCESS
;
521 _PUBLIC_
void ndr_print_ntlmssp_AvFlags(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
523 ndr_print_uint32(ndr
, name
, r
);
525 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_AVFLAG_CONSTRAINTED_ACCOUNT", NTLMSSP_AVFLAG_CONSTRAINTED_ACCOUNT
, r
);
526 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NTLMSSP_AVFLAG_MIC_IN_AUTHENTICATE_MESSAGE", NTLMSSP_AVFLAG_MIC_IN_AUTHENTICATE_MESSAGE
, r
);
530 static enum ndr_err_code
ndr_push_ntlmssp_AvValue(struct ndr_push
*ndr
, int ndr_flags
, const union ntlmssp_AvValue
*r
)
533 uint32_t _flags_save_UNION
= ndr
->flags
;
534 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
535 if (ndr_flags
& NDR_SCALARS
) {
536 int level
= ndr_push_get_switch_value(ndr
, r
);
537 NDR_CHECK(ndr_push_union_align(ndr
, 4));
542 case MsvAvNbComputerName
: {
544 uint32_t _flags_save_string
= ndr
->flags
;
545 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
546 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvNbComputerName
));
547 ndr
->flags
= _flags_save_string
;
551 case MsvAvNbDomainName
: {
553 uint32_t _flags_save_string
= ndr
->flags
;
554 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
555 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvNbDomainName
));
556 ndr
->flags
= _flags_save_string
;
560 case MsvAvDnsComputerName
: {
562 uint32_t _flags_save_string
= ndr
->flags
;
563 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
564 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvDnsComputerName
));
565 ndr
->flags
= _flags_save_string
;
569 case MsvAvDnsDomainName
: {
571 uint32_t _flags_save_string
= ndr
->flags
;
572 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
573 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvDnsDomainName
));
574 ndr
->flags
= _flags_save_string
;
578 case MsvAvDnsTreeName
: {
580 uint32_t _flags_save_string
= ndr
->flags
;
581 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
582 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvDnsTreeName
));
583 ndr
->flags
= _flags_save_string
;
588 NDR_CHECK(ndr_push_ntlmssp_AvFlags(ndr
, NDR_SCALARS
, r
->AvFlags
));
591 case MsvAvTimestamp
: {
592 NDR_CHECK(ndr_push_NTTIME(ndr
, NDR_SCALARS
, r
->AvTimestamp
));
595 case MsAvRestrictions
: {
596 NDR_CHECK(ndr_push_Restriction_Encoding(ndr
, NDR_SCALARS
, &r
->AvRestrictions
));
599 case MsvAvTargetName
: {
601 uint32_t _flags_save_string
= ndr
->flags
;
602 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
603 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->AvTargetName
));
604 ndr
->flags
= _flags_save_string
;
608 case MsvChannelBindings
: {
609 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ChannelBindings
, 16));
614 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
615 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
616 NDR_CHECK(ndr_push_DATA_BLOB(ndr
, NDR_SCALARS
, r
->blob
));
617 ndr
->flags
= _flags_save_DATA_BLOB
;
623 if (ndr_flags
& NDR_BUFFERS
) {
624 int level
= ndr_push_get_switch_value(ndr
, r
);
629 case MsvAvNbComputerName
:
632 case MsvAvNbDomainName
:
635 case MsvAvDnsComputerName
:
638 case MsvAvDnsDomainName
:
641 case MsvAvDnsTreeName
:
650 case MsAvRestrictions
:
653 case MsvAvTargetName
:
656 case MsvChannelBindings
:
664 ndr
->flags
= _flags_save_UNION
;
666 return NDR_ERR_SUCCESS
;
669 static enum ndr_err_code
ndr_pull_ntlmssp_AvValue(struct ndr_pull
*ndr
, int ndr_flags
, union ntlmssp_AvValue
*r
)
673 uint32_t _flags_save_UNION
= ndr
->flags
;
674 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
675 level
= ndr_pull_get_switch_value(ndr
, r
);
676 if (ndr_flags
& NDR_SCALARS
) {
677 NDR_CHECK(ndr_pull_union_align(ndr
, 4));
682 case MsvAvNbComputerName
: {
684 uint32_t _flags_save_string
= ndr
->flags
;
685 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
686 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvNbComputerName
));
687 ndr
->flags
= _flags_save_string
;
691 case MsvAvNbDomainName
: {
693 uint32_t _flags_save_string
= ndr
->flags
;
694 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
695 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvNbDomainName
));
696 ndr
->flags
= _flags_save_string
;
700 case MsvAvDnsComputerName
: {
702 uint32_t _flags_save_string
= ndr
->flags
;
703 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
704 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvDnsComputerName
));
705 ndr
->flags
= _flags_save_string
;
709 case MsvAvDnsDomainName
: {
711 uint32_t _flags_save_string
= ndr
->flags
;
712 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
713 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvDnsDomainName
));
714 ndr
->flags
= _flags_save_string
;
718 case MsvAvDnsTreeName
: {
720 uint32_t _flags_save_string
= ndr
->flags
;
721 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
722 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvDnsTreeName
));
723 ndr
->flags
= _flags_save_string
;
728 NDR_CHECK(ndr_pull_ntlmssp_AvFlags(ndr
, NDR_SCALARS
, &r
->AvFlags
));
731 case MsvAvTimestamp
: {
732 NDR_CHECK(ndr_pull_NTTIME(ndr
, NDR_SCALARS
, &r
->AvTimestamp
));
735 case MsAvRestrictions
: {
736 NDR_CHECK(ndr_pull_Restriction_Encoding(ndr
, NDR_SCALARS
, &r
->AvRestrictions
));
739 case MsvAvTargetName
: {
741 uint32_t _flags_save_string
= ndr
->flags
;
742 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE
));
743 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->AvTargetName
));
744 ndr
->flags
= _flags_save_string
;
748 case MsvChannelBindings
: {
749 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ChannelBindings
, 16));
754 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
755 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
756 NDR_CHECK(ndr_pull_DATA_BLOB(ndr
, NDR_SCALARS
, &r
->blob
));
757 ndr
->flags
= _flags_save_DATA_BLOB
;
763 if (ndr_flags
& NDR_BUFFERS
) {
768 case MsvAvNbComputerName
:
771 case MsvAvNbDomainName
:
774 case MsvAvDnsComputerName
:
777 case MsvAvDnsDomainName
:
780 case MsvAvDnsTreeName
:
789 case MsAvRestrictions
:
792 case MsvAvTargetName
:
795 case MsvChannelBindings
:
803 ndr
->flags
= _flags_save_UNION
;
805 return NDR_ERR_SUCCESS
;
808 _PUBLIC_
void ndr_print_ntlmssp_AvValue(struct ndr_print
*ndr
, const char *name
, const union ntlmssp_AvValue
*r
)
812 uint32_t _flags_save_UNION
= ndr
->flags
;
813 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
814 level
= ndr_print_get_switch_value(ndr
, r
);
815 ndr_print_union(ndr
, name
, level
, "ntlmssp_AvValue");
820 case MsvAvNbComputerName
:
821 ndr_print_string(ndr
, "AvNbComputerName", r
->AvNbComputerName
);
824 case MsvAvNbDomainName
:
825 ndr_print_string(ndr
, "AvNbDomainName", r
->AvNbDomainName
);
828 case MsvAvDnsComputerName
:
829 ndr_print_string(ndr
, "AvDnsComputerName", r
->AvDnsComputerName
);
832 case MsvAvDnsDomainName
:
833 ndr_print_string(ndr
, "AvDnsDomainName", r
->AvDnsDomainName
);
836 case MsvAvDnsTreeName
:
837 ndr_print_string(ndr
, "AvDnsTreeName", r
->AvDnsTreeName
);
841 ndr_print_ntlmssp_AvFlags(ndr
, "AvFlags", r
->AvFlags
);
845 ndr_print_NTTIME(ndr
, "AvTimestamp", r
->AvTimestamp
);
848 case MsAvRestrictions
:
849 ndr_print_Restriction_Encoding(ndr
, "AvRestrictions", &r
->AvRestrictions
);
852 case MsvAvTargetName
:
853 ndr_print_string(ndr
, "AvTargetName", r
->AvTargetName
);
856 case MsvChannelBindings
:
857 ndr_print_array_uint8(ndr
, "ChannelBindings", r
->ChannelBindings
, 16);
861 ndr_print_DATA_BLOB(ndr
, "blob", r
->blob
);
865 ndr
->flags
= _flags_save_UNION
;
869 static size_t ndr_size_ntlmssp_AvValue(const union ntlmssp_AvValue
*r
, uint32_t level
, struct smb_iconv_convenience
*ic
, int flags
)
871 flags
|= LIBNDR_FLAG_NOALIGN
;
872 return ndr_size_union(r
, flags
, level
, (ndr_push_flags_fn_t
)ndr_push_ntlmssp_AvValue
, ic
);
875 _PUBLIC_
enum ndr_err_code
ndr_push_AV_PAIR(struct ndr_push
*ndr
, int ndr_flags
, const struct AV_PAIR
*r
)
878 uint32_t _flags_save_STRUCT
= ndr
->flags
;
879 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
880 if (ndr_flags
& NDR_SCALARS
) {
881 NDR_CHECK(ndr_push_align(ndr
, 4));
882 NDR_CHECK(ndr_push_ntlmssp_AvId(ndr
, NDR_SCALARS
, r
->AvId
));
883 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_size_ntlmssp_AvValue(&r
->Value
, r
->AvId
, ndr
->iconv_convenience
, 0)));
885 struct ndr_push
*_ndr_Value
;
886 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_Value
, 0, ndr_size_ntlmssp_AvValue(&r
->Value
, r
->AvId
, ndr
->iconv_convenience
, 0)));
887 NDR_CHECK(ndr_push_set_switch_value(_ndr_Value
, &r
->Value
, r
->AvId
));
888 NDR_CHECK(ndr_push_ntlmssp_AvValue(_ndr_Value
, NDR_SCALARS
|NDR_BUFFERS
, &r
->Value
));
889 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_Value
, 0, ndr_size_ntlmssp_AvValue(&r
->Value
, r
->AvId
, ndr
->iconv_convenience
, 0)));
892 if (ndr_flags
& NDR_BUFFERS
) {
894 ndr
->flags
= _flags_save_STRUCT
;
896 return NDR_ERR_SUCCESS
;
899 _PUBLIC_
enum ndr_err_code
ndr_pull_AV_PAIR(struct ndr_pull
*ndr
, int ndr_flags
, struct AV_PAIR
*r
)
902 uint32_t _flags_save_STRUCT
= ndr
->flags
;
903 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
904 if (ndr_flags
& NDR_SCALARS
) {
905 NDR_CHECK(ndr_pull_align(ndr
, 4));
906 NDR_CHECK(ndr_pull_ntlmssp_AvId(ndr
, NDR_SCALARS
, &r
->AvId
));
907 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->AvLen
));
909 struct ndr_pull
*_ndr_Value
;
910 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_Value
, 0, r
->AvLen
));
911 NDR_CHECK(ndr_pull_set_switch_value(_ndr_Value
, &r
->Value
, r
->AvId
));
912 NDR_CHECK(ndr_pull_ntlmssp_AvValue(_ndr_Value
, NDR_SCALARS
|NDR_BUFFERS
, &r
->Value
));
913 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_Value
, 0, r
->AvLen
));
916 if (ndr_flags
& NDR_BUFFERS
) {
918 ndr
->flags
= _flags_save_STRUCT
;
920 return NDR_ERR_SUCCESS
;
923 _PUBLIC_
void ndr_print_AV_PAIR(struct ndr_print
*ndr
, const char *name
, const struct AV_PAIR
*r
)
925 ndr_print_struct(ndr
, name
, "AV_PAIR");
927 uint32_t _flags_save_STRUCT
= ndr
->flags
;
928 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
930 ndr_print_ntlmssp_AvId(ndr
, "AvId", r
->AvId
);
931 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
);
932 ndr_print_set_switch_value(ndr
, &r
->Value
, r
->AvId
);
933 ndr_print_ntlmssp_AvValue(ndr
, "Value", &r
->Value
);
935 ndr
->flags
= _flags_save_STRUCT
;
939 _PUBLIC_
void ndr_print_AV_PAIR_LIST(struct ndr_print
*ndr
, const char *name
, const struct AV_PAIR_LIST
*r
)
941 uint32_t cntr_pair_0
;
942 ndr_print_struct(ndr
, name
, "AV_PAIR_LIST");
944 uint32_t _flags_save_STRUCT
= ndr
->flags
;
945 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
947 ndr_print_uint32(ndr
, "count", r
->count
);
948 ndr
->print(ndr
, "%s: ARRAY(%d)", "pair", (int)r
->count
);
950 for (cntr_pair_0
=0;cntr_pair_0
<r
->count
;cntr_pair_0
++) {
952 if (asprintf(&idx_0
, "[%d]", cntr_pair_0
) != -1) {
953 ndr_print_AV_PAIR(ndr
, "pair", &r
->pair
[cntr_pair_0
]);
959 ndr
->flags
= _flags_save_STRUCT
;
963 static size_t ndr_size_AV_PAIR_LIST(const struct AV_PAIR_LIST
*r
, struct smb_iconv_convenience
*ic
, int flags
)
965 flags
|= LIBNDR_FLAG_NOALIGN
;
966 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_AV_PAIR_LIST
, ic
);
969 _PUBLIC_
enum ndr_err_code
ndr_push_CHALLENGE_MESSAGE(struct ndr_push
*ndr
, int ndr_flags
, const struct CHALLENGE_MESSAGE
*r
)
972 uint32_t _flags_save_STRUCT
= ndr
->flags
;
973 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
974 if (ndr_flags
& NDR_SCALARS
) {
975 NDR_CHECK(ndr_push_align(ndr
, 5));
976 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS
));
977 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr
, NDR_SCALARS
, NtLmChallenge
));
978 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
979 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
981 uint32_t _flags_save_string
= ndr
->flags
;
982 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
983 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->TargetName
));
984 ndr
->flags
= _flags_save_string
;
986 NDR_CHECK(ndr_push_NEGOTIATE(ndr
, NDR_SCALARS
, r
->NegotiateFlags
));
987 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ServerChallenge
, 8));
988 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Reserved
, 8));
989 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
990 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
991 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->TargetInfo
));
992 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
993 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
995 if (ndr_flags
& NDR_BUFFERS
) {
997 uint32_t _flags_save_string
= ndr
->flags
;
998 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1000 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->TargetName
));
1002 struct ndr_push
*_ndr_TargetName
;
1003 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_TargetName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
1004 NDR_CHECK(ndr_push_string(_ndr_TargetName
, NDR_SCALARS
, r
->TargetName
));
1005 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_TargetName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
)));
1008 ndr
->flags
= _flags_save_string
;
1010 if (r
->TargetInfo
) {
1011 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->TargetInfo
));
1013 struct ndr_push
*_ndr_TargetInfo
;
1014 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_TargetInfo
, 0, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
1015 NDR_CHECK(ndr_push_AV_PAIR_LIST(_ndr_TargetInfo
, NDR_SCALARS
|NDR_BUFFERS
, r
->TargetInfo
));
1016 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_TargetInfo
, 0, ndr_size_AV_PAIR_LIST(r
->TargetInfo
, ndr
->iconv_convenience
, ndr
->flags
)));
1019 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1021 ndr
->flags
= _flags_save_STRUCT
;
1023 return NDR_ERR_SUCCESS
;
1026 _PUBLIC_
enum ndr_err_code
ndr_pull_CHALLENGE_MESSAGE(struct ndr_pull
*ndr
, int ndr_flags
, struct CHALLENGE_MESSAGE
*r
)
1028 uint32_t _ptr_TargetName
;
1029 TALLOC_CTX
*_mem_save_TargetName_0
;
1030 uint32_t _ptr_TargetInfo
;
1031 TALLOC_CTX
*_mem_save_TargetInfo_0
;
1033 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1034 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1035 if (ndr_flags
& NDR_SCALARS
) {
1036 NDR_CHECK(ndr_pull_align(ndr
, 5));
1037 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->Signature
, 8, sizeof(uint8_t), CH_DOS
));
1038 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr
, NDR_SCALARS
, &r
->MessageType
));
1039 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetNameLen
));
1040 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetNameMaxLen
));
1042 uint32_t _flags_save_string
= ndr
->flags
;
1043 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1044 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TargetName
));
1045 if (_ptr_TargetName
) {
1046 NDR_PULL_ALLOC(ndr
, r
->TargetName
);
1047 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->TargetName
, _ptr_TargetName
));
1049 r
->TargetName
= NULL
;
1051 ndr
->flags
= _flags_save_string
;
1053 NDR_CHECK(ndr_pull_NEGOTIATE(ndr
, NDR_SCALARS
, &r
->NegotiateFlags
));
1054 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ServerChallenge
, 8));
1055 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Reserved
, 8));
1056 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetInfoLen
));
1057 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->TargetNameInfoMaxLen
));
1058 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_TargetInfo
));
1059 if (_ptr_TargetInfo
) {
1060 NDR_PULL_ALLOC(ndr
, r
->TargetInfo
);
1061 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->TargetInfo
, _ptr_TargetInfo
));
1063 r
->TargetInfo
= NULL
;
1065 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
1066 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
1068 if (ndr_flags
& NDR_BUFFERS
) {
1070 uint32_t _flags_save_string
= ndr
->flags
;
1071 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1072 if (r
->TargetName
) {
1073 uint32_t _relative_save_offset
;
1074 _relative_save_offset
= ndr
->offset
;
1075 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->TargetName
));
1076 _mem_save_TargetName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1077 NDR_PULL_SET_MEM_CTX(ndr
, r
->TargetName
, 0);
1079 struct ndr_pull
*_ndr_TargetName
;
1080 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_TargetName
, 0, r
->TargetNameLen
));
1081 NDR_CHECK(ndr_pull_string(_ndr_TargetName
, NDR_SCALARS
, &r
->TargetName
));
1082 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_TargetName
, 0, r
->TargetNameLen
));
1084 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TargetName_0
, 0);
1085 ndr
->offset
= _relative_save_offset
;
1087 ndr
->flags
= _flags_save_string
;
1089 if (r
->TargetInfo
) {
1090 uint32_t _relative_save_offset
;
1091 _relative_save_offset
= ndr
->offset
;
1092 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->TargetInfo
));
1093 _mem_save_TargetInfo_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1094 NDR_PULL_SET_MEM_CTX(ndr
, r
->TargetInfo
, 0);
1096 struct ndr_pull
*_ndr_TargetInfo
;
1097 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_TargetInfo
, 0, r
->TargetInfoLen
));
1098 NDR_CHECK(ndr_pull_AV_PAIR_LIST(_ndr_TargetInfo
, NDR_SCALARS
|NDR_BUFFERS
, r
->TargetInfo
));
1099 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_TargetInfo
, 0, r
->TargetInfoLen
));
1101 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_TargetInfo_0
, 0);
1102 ndr
->offset
= _relative_save_offset
;
1104 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1106 ndr
->flags
= _flags_save_STRUCT
;
1108 return NDR_ERR_SUCCESS
;
1111 _PUBLIC_
void ndr_print_CHALLENGE_MESSAGE(struct ndr_print
*ndr
, const char *name
, const struct CHALLENGE_MESSAGE
*r
)
1113 ndr_print_struct(ndr
, name
, "CHALLENGE_MESSAGE");
1115 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1116 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1118 ndr_print_string(ndr
, "Signature", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?"NTLMSSP":r
->Signature
);
1119 ndr_print_ntlmssp_MessageType(ndr
, "MessageType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NtLmChallenge
:r
->MessageType
);
1120 ndr_print_uint16(ndr
, "TargetNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->TargetName
):r
->TargetNameLen
);
1121 ndr_print_uint16(ndr
, "TargetNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->TargetNameLen
:r
->TargetNameMaxLen
);
1122 ndr_print_ptr(ndr
, "TargetName", r
->TargetName
);
1124 if (r
->TargetName
) {
1125 ndr_print_string(ndr
, "TargetName", r
->TargetName
);
1128 ndr_print_NEGOTIATE(ndr
, "NegotiateFlags", r
->NegotiateFlags
);
1129 ndr_print_array_uint8(ndr
, "ServerChallenge", r
->ServerChallenge
, 8);
1130 ndr_print_array_uint8(ndr
, "Reserved", r
->Reserved
, 8);
1131 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
);
1132 ndr_print_uint16(ndr
, "TargetNameInfoMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->TargetInfoLen
:r
->TargetNameInfoMaxLen
);
1133 ndr_print_ptr(ndr
, "TargetInfo", r
->TargetInfo
);
1135 if (r
->TargetInfo
) {
1136 ndr_print_AV_PAIR_LIST(ndr
, "TargetInfo", r
->TargetInfo
);
1139 ndr_print_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
);
1140 ndr_print_ntlmssp_Version(ndr
, "Version", &r
->Version
);
1142 ndr
->flags
= _flags_save_STRUCT
;
1146 _PUBLIC_
enum ndr_err_code
ndr_push_LM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct LM_RESPONSE
*r
)
1149 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1150 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1151 if (ndr_flags
& NDR_SCALARS
) {
1152 NDR_CHECK(ndr_push_align(ndr
, 1));
1153 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1155 if (ndr_flags
& NDR_BUFFERS
) {
1157 ndr
->flags
= _flags_save_STRUCT
;
1159 return NDR_ERR_SUCCESS
;
1162 _PUBLIC_
enum ndr_err_code
ndr_pull_LM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct LM_RESPONSE
*r
)
1165 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1166 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1167 if (ndr_flags
& NDR_SCALARS
) {
1168 NDR_CHECK(ndr_pull_align(ndr
, 1));
1169 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1171 if (ndr_flags
& NDR_BUFFERS
) {
1173 ndr
->flags
= _flags_save_STRUCT
;
1175 return NDR_ERR_SUCCESS
;
1178 _PUBLIC_
void ndr_print_LM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct LM_RESPONSE
*r
)
1180 ndr_print_struct(ndr
, name
, "LM_RESPONSE");
1182 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1183 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1185 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 24);
1187 ndr
->flags
= _flags_save_STRUCT
;
1191 _PUBLIC_
enum ndr_err_code
ndr_push_LMv2_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct LMv2_RESPONSE
*r
)
1194 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1195 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1196 if (ndr_flags
& NDR_SCALARS
) {
1197 NDR_CHECK(ndr_push_align(ndr
, 1));
1198 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1199 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1201 if (ndr_flags
& NDR_BUFFERS
) {
1203 ndr
->flags
= _flags_save_STRUCT
;
1205 return NDR_ERR_SUCCESS
;
1208 _PUBLIC_
enum ndr_err_code
ndr_pull_LMv2_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct LMv2_RESPONSE
*r
)
1211 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1212 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1213 if (ndr_flags
& NDR_SCALARS
) {
1214 NDR_CHECK(ndr_pull_align(ndr
, 1));
1215 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1216 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1218 if (ndr_flags
& NDR_BUFFERS
) {
1220 ndr
->flags
= _flags_save_STRUCT
;
1222 return NDR_ERR_SUCCESS
;
1225 _PUBLIC_
void ndr_print_LMv2_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct LMv2_RESPONSE
*r
)
1227 ndr_print_struct(ndr
, name
, "LMv2_RESPONSE");
1229 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1230 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1232 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 16);
1233 ndr_print_array_uint8(ndr
, "ChallengeFromClient", r
->ChallengeFromClient
, 8);
1235 ndr
->flags
= _flags_save_STRUCT
;
1239 static enum ndr_err_code
ndr_push_ntlmssp_LM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const union ntlmssp_LM_RESPONSE
*r
)
1241 if (ndr_flags
& NDR_SCALARS
) {
1242 int level
= ndr_push_get_switch_value(ndr
, r
);
1243 NDR_CHECK(ndr_push_union_align(ndr
, 1));
1246 NDR_CHECK(ndr_push_LM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1254 if (ndr_flags
& NDR_BUFFERS
) {
1255 int level
= ndr_push_get_switch_value(ndr
, r
);
1265 return NDR_ERR_SUCCESS
;
1268 static enum ndr_err_code
ndr_pull_ntlmssp_LM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, union ntlmssp_LM_RESPONSE
*r
)
1271 level
= ndr_pull_get_switch_value(ndr
, r
);
1272 if (ndr_flags
& NDR_SCALARS
) {
1273 NDR_CHECK(ndr_pull_union_align(ndr
, 1));
1276 NDR_CHECK(ndr_pull_LM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1284 if (ndr_flags
& NDR_BUFFERS
) {
1294 return NDR_ERR_SUCCESS
;
1297 _PUBLIC_
void ndr_print_ntlmssp_LM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const union ntlmssp_LM_RESPONSE
*r
)
1300 level
= ndr_print_get_switch_value(ndr
, r
);
1301 ndr_print_union(ndr
, name
, level
, "ntlmssp_LM_RESPONSE");
1304 ndr_print_LM_RESPONSE(ndr
, "v1", &r
->v1
);
1313 _PUBLIC_
enum ndr_err_code
ndr_push_NTLM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLM_RESPONSE
*r
)
1316 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1317 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1318 if (ndr_flags
& NDR_SCALARS
) {
1319 NDR_CHECK(ndr_push_align(ndr
, 1));
1320 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1322 if (ndr_flags
& NDR_BUFFERS
) {
1324 ndr
->flags
= _flags_save_STRUCT
;
1326 return NDR_ERR_SUCCESS
;
1329 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLM_RESPONSE
*r
)
1332 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1333 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1334 if (ndr_flags
& NDR_SCALARS
) {
1335 NDR_CHECK(ndr_pull_align(ndr
, 1));
1336 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 24));
1338 if (ndr_flags
& NDR_BUFFERS
) {
1340 ndr
->flags
= _flags_save_STRUCT
;
1342 return NDR_ERR_SUCCESS
;
1345 _PUBLIC_
void ndr_print_NTLM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct NTLM_RESPONSE
*r
)
1347 ndr_print_struct(ndr
, name
, "NTLM_RESPONSE");
1349 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1350 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1352 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 24);
1354 ndr
->flags
= _flags_save_STRUCT
;
1358 static enum ndr_err_code
ndr_push_NTLMv2_CLIENT_CHALLENGE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLMv2_CLIENT_CHALLENGE
*r
)
1361 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1362 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1363 if (ndr_flags
& NDR_SCALARS
) {
1364 NDR_CHECK(ndr_push_align(ndr
, 4));
1365 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, 1));
1366 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, 1));
1367 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->Reserved1
));
1368 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Reserved2
));
1369 NDR_CHECK(ndr_push_NTTIME(ndr
, NDR_SCALARS
, r
->TimeStamp
));
1370 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1371 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Reserved3
));
1373 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1374 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1376 struct ndr_push
*_ndr_AvPairs
;
1377 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_AvPairs
, 0, -1));
1378 NDR_CHECK(ndr_push_AV_PAIR_LIST(_ndr_AvPairs
, NDR_SCALARS
|NDR_BUFFERS
, &r
->AvPairs
));
1379 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_AvPairs
, 0, -1));
1381 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1384 if (ndr_flags
& NDR_BUFFERS
) {
1386 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1387 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1388 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1391 ndr
->flags
= _flags_save_STRUCT
;
1393 return NDR_ERR_SUCCESS
;
1396 static enum ndr_err_code
ndr_pull_NTLMv2_CLIENT_CHALLENGE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMv2_CLIENT_CHALLENGE
*r
)
1399 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1400 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1401 if (ndr_flags
& NDR_SCALARS
) {
1402 NDR_CHECK(ndr_pull_align(ndr
, 4));
1403 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->RespType
));
1404 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->HiRespType
));
1405 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->Reserved1
));
1406 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Reserved2
));
1407 NDR_CHECK(ndr_pull_NTTIME(ndr
, NDR_SCALARS
, &r
->TimeStamp
));
1408 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->ChallengeFromClient
, 8));
1409 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Reserved3
));
1411 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1412 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1414 struct ndr_pull
*_ndr_AvPairs
;
1415 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_AvPairs
, 0, -1));
1416 NDR_CHECK(ndr_pull_AV_PAIR_LIST(_ndr_AvPairs
, NDR_SCALARS
|NDR_BUFFERS
, &r
->AvPairs
));
1417 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_AvPairs
, 0, -1));
1419 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1422 if (ndr_flags
& NDR_BUFFERS
) {
1424 uint32_t _flags_save_AV_PAIR_LIST
= ndr
->flags
;
1425 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1426 ndr
->flags
= _flags_save_AV_PAIR_LIST
;
1429 ndr
->flags
= _flags_save_STRUCT
;
1431 return NDR_ERR_SUCCESS
;
1434 _PUBLIC_
void ndr_print_NTLMv2_CLIENT_CHALLENGE(struct ndr_print
*ndr
, const char *name
, const struct NTLMv2_CLIENT_CHALLENGE
*r
)
1436 ndr_print_struct(ndr
, name
, "NTLMv2_CLIENT_CHALLENGE");
1438 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1439 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1441 ndr_print_uint8(ndr
, "RespType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?1:r
->RespType
);
1442 ndr_print_uint8(ndr
, "HiRespType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?1:r
->HiRespType
);
1443 ndr_print_uint16(ndr
, "Reserved1", r
->Reserved1
);
1444 ndr_print_uint32(ndr
, "Reserved2", r
->Reserved2
);
1445 ndr_print_NTTIME(ndr
, "TimeStamp", r
->TimeStamp
);
1446 ndr_print_array_uint8(ndr
, "ChallengeFromClient", r
->ChallengeFromClient
, 8);
1447 ndr_print_uint32(ndr
, "Reserved3", r
->Reserved3
);
1448 ndr_print_AV_PAIR_LIST(ndr
, "AvPairs", &r
->AvPairs
);
1450 ndr
->flags
= _flags_save_STRUCT
;
1454 _PUBLIC_
enum ndr_err_code
ndr_push_NTLMv2_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLMv2_RESPONSE
*r
)
1457 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1458 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1459 if (ndr_flags
& NDR_SCALARS
) {
1460 NDR_CHECK(ndr_push_align(ndr
, 4));
1461 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1462 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_SCALARS
, &r
->Challenge
));
1464 if (ndr_flags
& NDR_BUFFERS
) {
1465 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_BUFFERS
, &r
->Challenge
));
1467 ndr
->flags
= _flags_save_STRUCT
;
1469 return NDR_ERR_SUCCESS
;
1472 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLMv2_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMv2_RESPONSE
*r
)
1475 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1476 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1477 if (ndr_flags
& NDR_SCALARS
) {
1478 NDR_CHECK(ndr_pull_align(ndr
, 4));
1479 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Response
, 16));
1480 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_SCALARS
, &r
->Challenge
));
1482 if (ndr_flags
& NDR_BUFFERS
) {
1483 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_BUFFERS
, &r
->Challenge
));
1485 ndr
->flags
= _flags_save_STRUCT
;
1487 return NDR_ERR_SUCCESS
;
1490 _PUBLIC_
void ndr_print_NTLMv2_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct NTLMv2_RESPONSE
*r
)
1492 ndr_print_struct(ndr
, name
, "NTLMv2_RESPONSE");
1494 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1495 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
1497 ndr_print_array_uint8(ndr
, "Response", r
->Response
, 16);
1498 ndr_print_NTLMv2_CLIENT_CHALLENGE(ndr
, "Challenge", &r
->Challenge
);
1500 ndr
->flags
= _flags_save_STRUCT
;
1504 _PUBLIC_
enum ndr_err_code
ndr_push_ntlmssp_NTLM_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const union ntlmssp_NTLM_RESPONSE
*r
)
1506 if (ndr_flags
& NDR_SCALARS
) {
1507 int level
= ndr_push_get_switch_value(ndr
, r
);
1508 NDR_CHECK(ndr_push_union_align(ndr
, 4));
1514 NDR_CHECK(ndr_push_NTLM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1518 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr
, NDR_SCALARS
, &r
->v2
));
1523 if (ndr_flags
& NDR_BUFFERS
) {
1524 int level
= ndr_push_get_switch_value(ndr
, r
);
1533 NDR_CHECK(ndr_push_NTLMv2_RESPONSE(ndr
, NDR_BUFFERS
, &r
->v2
));
1538 return NDR_ERR_SUCCESS
;
1541 _PUBLIC_
enum ndr_err_code
ndr_pull_ntlmssp_NTLM_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, union ntlmssp_NTLM_RESPONSE
*r
)
1544 level
= ndr_pull_get_switch_value(ndr
, r
);
1545 if (ndr_flags
& NDR_SCALARS
) {
1546 NDR_CHECK(ndr_pull_union_align(ndr
, 4));
1552 NDR_CHECK(ndr_pull_NTLM_RESPONSE(ndr
, NDR_SCALARS
, &r
->v1
));
1556 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr
, NDR_SCALARS
, &r
->v2
));
1561 if (ndr_flags
& NDR_BUFFERS
) {
1570 NDR_CHECK(ndr_pull_NTLMv2_RESPONSE(ndr
, NDR_BUFFERS
, &r
->v2
));
1575 return NDR_ERR_SUCCESS
;
1578 _PUBLIC_
void ndr_print_ntlmssp_NTLM_RESPONSE(struct ndr_print
*ndr
, const char *name
, const union ntlmssp_NTLM_RESPONSE
*r
)
1581 level
= ndr_print_get_switch_value(ndr
, r
);
1582 ndr_print_union(ndr
, name
, level
, "ntlmssp_NTLM_RESPONSE");
1588 ndr_print_NTLM_RESPONSE(ndr
, "v1", &r
->v1
);
1592 ndr_print_NTLMv2_RESPONSE(ndr
, "v2", &r
->v2
);
1598 _PUBLIC_
enum ndr_err_code
ndr_push_AUTHENTICATE_MESSAGE(struct ndr_push
*ndr
, int ndr_flags
, const struct AUTHENTICATE_MESSAGE
*r
)
1601 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1602 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1603 if (ndr_flags
& NDR_SCALARS
) {
1604 NDR_CHECK(ndr_push_align(ndr
, 5));
1605 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, "NTLMSSP", 8, sizeof(uint8_t), CH_DOS
));
1606 NDR_CHECK(ndr_push_ntlmssp_MessageType(ndr
, NDR_SCALARS
, NtLmAuthenticate
));
1607 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->LmChallengeResponseLen
));
1608 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->LmChallengeResponseLen
));
1609 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->LmChallengeResponse
));
1610 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->NtChallengeResponseLen
));
1611 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->NtChallengeResponseLen
));
1612 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->NtChallengeResponse
));
1613 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
1614 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
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
->DomainName
));
1619 ndr
->flags
= _flags_save_string
;
1621 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
1622 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
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
->UserName
));
1627 ndr
->flags
= _flags_save_string
;
1629 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
1630 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
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
->Workstation
));
1635 ndr
->flags
= _flags_save_string
;
1637 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->EncryptedRandomSessionKey
->length
));
1638 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->EncryptedRandomSessionKey
->length
));
1639 NDR_CHECK(ndr_push_relative_ptr1(ndr
, r
->EncryptedRandomSessionKey
));
1640 NDR_CHECK(ndr_push_NEGOTIATE(ndr
, NDR_SCALARS
, r
->NegotiateFlags
));
1641 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
1642 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
1644 if (ndr_flags
& NDR_BUFFERS
) {
1645 if (r
->LmChallengeResponse
) {
1646 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->LmChallengeResponse
));
1648 struct ndr_push
*_ndr_LmChallengeResponse
;
1649 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1650 NDR_CHECK(ndr_push_set_switch_value(_ndr_LmChallengeResponse
, r
->LmChallengeResponse
, r
->LmChallengeResponseLen
));
1651 NDR_CHECK(ndr_push_ntlmssp_LM_RESPONSE(_ndr_LmChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->LmChallengeResponse
));
1652 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1655 if (r
->NtChallengeResponse
) {
1656 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->NtChallengeResponse
));
1658 struct ndr_push
*_ndr_NtChallengeResponse
;
1659 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseLen
));
1660 NDR_CHECK(ndr_push_set_switch_value(_ndr_NtChallengeResponse
, r
->NtChallengeResponse
, r
->NtChallengeResponseLen
));
1661 NDR_CHECK(ndr_push_ntlmssp_NTLM_RESPONSE(_ndr_NtChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->NtChallengeResponse
));
1662 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseLen
));
1666 uint32_t _flags_save_string
= ndr
->flags
;
1667 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1668 if (r
->DomainName
) {
1669 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->DomainName
));
1671 struct ndr_push
*_ndr_DomainName
;
1672 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_DomainName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
1673 NDR_CHECK(ndr_push_string(_ndr_DomainName
, NDR_SCALARS
, r
->DomainName
));
1674 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_DomainName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
)));
1677 ndr
->flags
= _flags_save_string
;
1680 uint32_t _flags_save_string
= ndr
->flags
;
1681 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1683 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->UserName
));
1685 struct ndr_push
*_ndr_UserName
;
1686 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_UserName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
1687 NDR_CHECK(ndr_push_string(_ndr_UserName
, NDR_SCALARS
, r
->UserName
));
1688 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_UserName
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
)));
1691 ndr
->flags
= _flags_save_string
;
1694 uint32_t _flags_save_string
= ndr
->flags
;
1695 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1696 if (r
->Workstation
) {
1697 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->Workstation
));
1699 struct ndr_push
*_ndr_Workstation
;
1700 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_Workstation
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
1701 NDR_CHECK(ndr_push_string(_ndr_Workstation
, NDR_SCALARS
, r
->Workstation
));
1702 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_Workstation
, 0, ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
)));
1705 ndr
->flags
= _flags_save_string
;
1707 if (r
->EncryptedRandomSessionKey
) {
1708 NDR_CHECK(ndr_push_relative_ptr2(ndr
, r
->EncryptedRandomSessionKey
));
1710 struct ndr_push
*_ndr_EncryptedRandomSessionKey
;
1711 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKey
->length
));
1712 NDR_CHECK(ndr_push_DATA_BLOB(_ndr_EncryptedRandomSessionKey
, NDR_SCALARS
, *r
->EncryptedRandomSessionKey
));
1713 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKey
->length
));
1716 NDR_CHECK(ndr_push_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1718 ndr
->flags
= _flags_save_STRUCT
;
1720 return NDR_ERR_SUCCESS
;
1723 _PUBLIC_
enum ndr_err_code
ndr_pull_AUTHENTICATE_MESSAGE(struct ndr_pull
*ndr
, int ndr_flags
, struct AUTHENTICATE_MESSAGE
*r
)
1725 uint32_t _ptr_LmChallengeResponse
;
1726 TALLOC_CTX
*_mem_save_LmChallengeResponse_0
;
1727 uint32_t _ptr_NtChallengeResponse
;
1728 TALLOC_CTX
*_mem_save_NtChallengeResponse_0
;
1729 uint32_t _ptr_DomainName
;
1730 TALLOC_CTX
*_mem_save_DomainName_0
;
1731 uint32_t _ptr_UserName
;
1732 TALLOC_CTX
*_mem_save_UserName_0
;
1733 uint32_t _ptr_Workstation
;
1734 TALLOC_CTX
*_mem_save_Workstation_0
;
1735 uint32_t _ptr_EncryptedRandomSessionKey
;
1736 TALLOC_CTX
*_mem_save_EncryptedRandomSessionKey_0
;
1738 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1739 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1740 if (ndr_flags
& NDR_SCALARS
) {
1741 NDR_CHECK(ndr_pull_align(ndr
, 5));
1742 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->Signature
, 8, sizeof(uint8_t), CH_DOS
));
1743 NDR_CHECK(ndr_pull_ntlmssp_MessageType(ndr
, NDR_SCALARS
, &r
->MessageType
));
1744 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->LmChallengeResponseLen
));
1745 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->LmChallengeResponseMaxLen
));
1746 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_LmChallengeResponse
));
1747 if (_ptr_LmChallengeResponse
) {
1748 NDR_PULL_ALLOC(ndr
, r
->LmChallengeResponse
);
1749 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->LmChallengeResponse
, _ptr_LmChallengeResponse
));
1751 r
->LmChallengeResponse
= NULL
;
1753 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->NtChallengeResponseLen
));
1754 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->NtChallengeResponseMaxLen
));
1755 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_NtChallengeResponse
));
1756 if (_ptr_NtChallengeResponse
) {
1757 NDR_PULL_ALLOC(ndr
, r
->NtChallengeResponse
);
1758 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->NtChallengeResponse
, _ptr_NtChallengeResponse
));
1760 r
->NtChallengeResponse
= NULL
;
1762 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameLen
));
1763 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->DomainNameMaxLen
));
1765 uint32_t _flags_save_string
= ndr
->flags
;
1766 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1767 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_DomainName
));
1768 if (_ptr_DomainName
) {
1769 NDR_PULL_ALLOC(ndr
, r
->DomainName
);
1770 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->DomainName
, _ptr_DomainName
));
1772 r
->DomainName
= NULL
;
1774 ndr
->flags
= _flags_save_string
;
1776 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->UserNameLen
));
1777 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->UserNameMaxLen
));
1779 uint32_t _flags_save_string
= ndr
->flags
;
1780 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1781 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_UserName
));
1782 if (_ptr_UserName
) {
1783 NDR_PULL_ALLOC(ndr
, r
->UserName
);
1784 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->UserName
, _ptr_UserName
));
1788 ndr
->flags
= _flags_save_string
;
1790 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationLen
));
1791 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->WorkstationMaxLen
));
1793 uint32_t _flags_save_string
= ndr
->flags
;
1794 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1795 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_Workstation
));
1796 if (_ptr_Workstation
) {
1797 NDR_PULL_ALLOC(ndr
, r
->Workstation
);
1798 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->Workstation
, _ptr_Workstation
));
1800 r
->Workstation
= NULL
;
1802 ndr
->flags
= _flags_save_string
;
1804 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->EncryptedRandomSessionKeyLen
));
1805 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->EncryptedRandomSessionKeyMaxLen
));
1806 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_EncryptedRandomSessionKey
));
1807 if (_ptr_EncryptedRandomSessionKey
) {
1808 NDR_PULL_ALLOC(ndr
, r
->EncryptedRandomSessionKey
);
1809 NDR_CHECK(ndr_pull_relative_ptr1(ndr
, r
->EncryptedRandomSessionKey
, _ptr_EncryptedRandomSessionKey
));
1811 r
->EncryptedRandomSessionKey
= NULL
;
1813 NDR_CHECK(ndr_pull_NEGOTIATE(ndr
, NDR_SCALARS
, &r
->NegotiateFlags
));
1814 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
));
1815 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_SCALARS
, &r
->Version
));
1817 if (ndr_flags
& NDR_BUFFERS
) {
1818 if (r
->LmChallengeResponse
) {
1819 uint32_t _relative_save_offset
;
1820 _relative_save_offset
= ndr
->offset
;
1821 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->LmChallengeResponse
));
1822 _mem_save_LmChallengeResponse_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1823 NDR_PULL_SET_MEM_CTX(ndr
, r
->LmChallengeResponse
, 0);
1825 struct ndr_pull
*_ndr_LmChallengeResponse
;
1826 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1827 NDR_CHECK(ndr_pull_set_switch_value(_ndr_LmChallengeResponse
, r
->LmChallengeResponse
, r
->LmChallengeResponseLen
));
1828 NDR_CHECK(ndr_pull_ntlmssp_LM_RESPONSE(_ndr_LmChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->LmChallengeResponse
));
1829 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_LmChallengeResponse
, 0, r
->LmChallengeResponseLen
));
1831 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_LmChallengeResponse_0
, 0);
1832 ndr
->offset
= _relative_save_offset
;
1834 if (r
->NtChallengeResponse
) {
1835 uint32_t _relative_save_offset
;
1836 _relative_save_offset
= ndr
->offset
;
1837 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->NtChallengeResponse
));
1838 _mem_save_NtChallengeResponse_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1839 NDR_PULL_SET_MEM_CTX(ndr
, r
->NtChallengeResponse
, 0);
1841 struct ndr_pull
*_ndr_NtChallengeResponse
;
1842 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseMaxLen
));
1843 NDR_CHECK(ndr_pull_set_switch_value(_ndr_NtChallengeResponse
, r
->NtChallengeResponse
, r
->NtChallengeResponseLen
));
1844 NDR_CHECK(ndr_pull_ntlmssp_NTLM_RESPONSE(_ndr_NtChallengeResponse
, NDR_SCALARS
|NDR_BUFFERS
, r
->NtChallengeResponse
));
1845 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_NtChallengeResponse
, 0, r
->NtChallengeResponseMaxLen
));
1847 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_NtChallengeResponse_0
, 0);
1848 ndr
->offset
= _relative_save_offset
;
1851 uint32_t _flags_save_string
= ndr
->flags
;
1852 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1853 if (r
->DomainName
) {
1854 uint32_t _relative_save_offset
;
1855 _relative_save_offset
= ndr
->offset
;
1856 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->DomainName
));
1857 _mem_save_DomainName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1858 NDR_PULL_SET_MEM_CTX(ndr
, r
->DomainName
, 0);
1860 struct ndr_pull
*_ndr_DomainName
;
1861 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_DomainName
, 0, r
->DomainNameLen
));
1862 NDR_CHECK(ndr_pull_string(_ndr_DomainName
, NDR_SCALARS
, &r
->DomainName
));
1863 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_DomainName
, 0, r
->DomainNameLen
));
1865 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_DomainName_0
, 0);
1866 ndr
->offset
= _relative_save_offset
;
1868 ndr
->flags
= _flags_save_string
;
1871 uint32_t _flags_save_string
= ndr
->flags
;
1872 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1874 uint32_t _relative_save_offset
;
1875 _relative_save_offset
= ndr
->offset
;
1876 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->UserName
));
1877 _mem_save_UserName_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1878 NDR_PULL_SET_MEM_CTX(ndr
, r
->UserName
, 0);
1880 struct ndr_pull
*_ndr_UserName
;
1881 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_UserName
, 0, r
->UserNameLen
));
1882 NDR_CHECK(ndr_pull_string(_ndr_UserName
, NDR_SCALARS
, &r
->UserName
));
1883 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_UserName
, 0, r
->UserNameLen
));
1885 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_UserName_0
, 0);
1886 ndr
->offset
= _relative_save_offset
;
1888 ndr
->flags
= _flags_save_string
;
1891 uint32_t _flags_save_string
= ndr
->flags
;
1892 ndr_set_flags(&ndr
->flags
, ndr_ntlmssp_negotiated_string_flags(r
->NegotiateFlags
));
1893 if (r
->Workstation
) {
1894 uint32_t _relative_save_offset
;
1895 _relative_save_offset
= ndr
->offset
;
1896 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->Workstation
));
1897 _mem_save_Workstation_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1898 NDR_PULL_SET_MEM_CTX(ndr
, r
->Workstation
, 0);
1900 struct ndr_pull
*_ndr_Workstation
;
1901 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_Workstation
, 0, r
->WorkstationLen
));
1902 NDR_CHECK(ndr_pull_string(_ndr_Workstation
, NDR_SCALARS
, &r
->Workstation
));
1903 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_Workstation
, 0, r
->WorkstationLen
));
1905 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_Workstation_0
, 0);
1906 ndr
->offset
= _relative_save_offset
;
1908 ndr
->flags
= _flags_save_string
;
1910 if (r
->EncryptedRandomSessionKey
) {
1911 uint32_t _relative_save_offset
;
1912 _relative_save_offset
= ndr
->offset
;
1913 NDR_CHECK(ndr_pull_relative_ptr2(ndr
, r
->EncryptedRandomSessionKey
));
1914 _mem_save_EncryptedRandomSessionKey_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1915 NDR_PULL_SET_MEM_CTX(ndr
, r
->EncryptedRandomSessionKey
, 0);
1917 struct ndr_pull
*_ndr_EncryptedRandomSessionKey
;
1918 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKeyLen
));
1919 NDR_CHECK(ndr_pull_DATA_BLOB(_ndr_EncryptedRandomSessionKey
, NDR_SCALARS
, r
->EncryptedRandomSessionKey
));
1920 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_EncryptedRandomSessionKey
, 0, r
->EncryptedRandomSessionKeyLen
));
1922 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_EncryptedRandomSessionKey_0
, 0);
1923 ndr
->offset
= _relative_save_offset
;
1925 NDR_CHECK(ndr_pull_ntlmssp_Version(ndr
, NDR_BUFFERS
, &r
->Version
));
1927 ndr
->flags
= _flags_save_STRUCT
;
1929 return NDR_ERR_SUCCESS
;
1932 _PUBLIC_
void ndr_print_AUTHENTICATE_MESSAGE(struct ndr_print
*ndr
, const char *name
, const struct AUTHENTICATE_MESSAGE
*r
)
1934 ndr_print_struct(ndr
, name
, "AUTHENTICATE_MESSAGE");
1936 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1937 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1939 ndr_print_string(ndr
, "Signature", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?"NTLMSSP":r
->Signature
);
1940 ndr_print_ntlmssp_MessageType(ndr
, "MessageType", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NtLmAuthenticate
:r
->MessageType
);
1941 ndr_print_uint16(ndr
, "LmChallengeResponseLen", r
->LmChallengeResponseLen
);
1942 ndr_print_uint16(ndr
, "LmChallengeResponseMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->LmChallengeResponseLen
:r
->LmChallengeResponseMaxLen
);
1943 ndr_print_ptr(ndr
, "LmChallengeResponse", r
->LmChallengeResponse
);
1945 if (r
->LmChallengeResponse
) {
1946 ndr_print_set_switch_value(ndr
, r
->LmChallengeResponse
, r
->LmChallengeResponseLen
);
1947 ndr_print_ntlmssp_LM_RESPONSE(ndr
, "LmChallengeResponse", r
->LmChallengeResponse
);
1950 ndr_print_uint16(ndr
, "NtChallengeResponseLen", r
->NtChallengeResponseLen
);
1951 ndr_print_uint16(ndr
, "NtChallengeResponseMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->NtChallengeResponseLen
:r
->NtChallengeResponseMaxLen
);
1952 ndr_print_ptr(ndr
, "NtChallengeResponse", r
->NtChallengeResponse
);
1954 if (r
->NtChallengeResponse
) {
1955 ndr_print_set_switch_value(ndr
, r
->NtChallengeResponse
, r
->NtChallengeResponseLen
);
1956 ndr_print_ntlmssp_NTLM_RESPONSE(ndr
, "NtChallengeResponse", r
->NtChallengeResponse
);
1959 ndr_print_uint16(ndr
, "DomainNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->DomainName
):r
->DomainNameLen
);
1960 ndr_print_uint16(ndr
, "DomainNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->DomainNameLen
:r
->DomainNameMaxLen
);
1961 ndr_print_ptr(ndr
, "DomainName", r
->DomainName
);
1963 if (r
->DomainName
) {
1964 ndr_print_string(ndr
, "DomainName", r
->DomainName
);
1967 ndr_print_uint16(ndr
, "UserNameLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->UserName
):r
->UserNameLen
);
1968 ndr_print_uint16(ndr
, "UserNameMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->UserNameLen
:r
->UserNameMaxLen
);
1969 ndr_print_ptr(ndr
, "UserName", r
->UserName
);
1972 ndr_print_string(ndr
, "UserName", r
->UserName
);
1975 ndr_print_uint16(ndr
, "WorkstationLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_ntlmssp_string_length(r
->NegotiateFlags
, r
->Workstation
):r
->WorkstationLen
);
1976 ndr_print_uint16(ndr
, "WorkstationMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->WorkstationLen
:r
->WorkstationMaxLen
);
1977 ndr_print_ptr(ndr
, "Workstation", r
->Workstation
);
1979 if (r
->Workstation
) {
1980 ndr_print_string(ndr
, "Workstation", r
->Workstation
);
1983 ndr_print_uint16(ndr
, "EncryptedRandomSessionKeyLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->EncryptedRandomSessionKey
->length
:r
->EncryptedRandomSessionKeyLen
);
1984 ndr_print_uint16(ndr
, "EncryptedRandomSessionKeyMaxLen", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->EncryptedRandomSessionKeyLen
:r
->EncryptedRandomSessionKeyMaxLen
);
1985 ndr_print_ptr(ndr
, "EncryptedRandomSessionKey", r
->EncryptedRandomSessionKey
);
1987 if (r
->EncryptedRandomSessionKey
) {
1988 ndr_print_DATA_BLOB(ndr
, "EncryptedRandomSessionKey", *r
->EncryptedRandomSessionKey
);
1991 ndr_print_NEGOTIATE(ndr
, "NegotiateFlags", r
->NegotiateFlags
);
1992 ndr_print_set_switch_value(ndr
, &r
->Version
, r
->NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
);
1993 ndr_print_ntlmssp_Version(ndr
, "Version", &r
->Version
);
1995 ndr
->flags
= _flags_save_STRUCT
;
1999 _PUBLIC_
enum ndr_err_code
ndr_push_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_push
*ndr
, int ndr_flags
, const struct NTLMSSP_MESSAGE_SIGNATURE
*r
)
2001 if (ndr_flags
& NDR_SCALARS
) {
2002 NDR_CHECK(ndr_push_align(ndr
, 4));
2003 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, NTLMSSP_SIGN_VERSION
));
2004 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->RandomPad
));
2005 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Checksum
));
2006 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->SeqNum
));
2008 if (ndr_flags
& NDR_BUFFERS
) {
2010 return NDR_ERR_SUCCESS
;
2013 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMSSP_MESSAGE_SIGNATURE
*r
)
2015 if (ndr_flags
& NDR_SCALARS
) {
2016 NDR_CHECK(ndr_pull_align(ndr
, 4));
2017 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Version
));
2018 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->RandomPad
));
2019 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Checksum
));
2020 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->SeqNum
));
2022 if (ndr_flags
& NDR_BUFFERS
) {
2024 return NDR_ERR_SUCCESS
;
2027 _PUBLIC_
void ndr_print_NTLMSSP_MESSAGE_SIGNATURE(struct ndr_print
*ndr
, const char *name
, const struct NTLMSSP_MESSAGE_SIGNATURE
*r
)
2029 ndr_print_struct(ndr
, name
, "NTLMSSP_MESSAGE_SIGNATURE");
2031 ndr_print_uint32(ndr
, "Version", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NTLMSSP_SIGN_VERSION
:r
->Version
);
2032 ndr_print_uint32(ndr
, "RandomPad", r
->RandomPad
);
2033 ndr_print_uint32(ndr
, "Checksum", r
->Checksum
);
2034 ndr_print_uint32(ndr
, "SeqNum", r
->SeqNum
);
2038 _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
)
2041 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2042 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
2043 if (ndr_flags
& NDR_SCALARS
) {
2044 NDR_CHECK(ndr_push_align(ndr
, 4));
2045 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, NTLMSSP_SIGN_VERSION
));
2046 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->Checksum
, 8));
2047 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->SeqNum
));
2049 if (ndr_flags
& NDR_BUFFERS
) {
2051 ndr
->flags
= _flags_save_STRUCT
;
2053 return NDR_ERR_SUCCESS
;
2056 _PUBLIC_
enum ndr_err_code
ndr_pull_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_pull
*ndr
, int ndr_flags
, struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2
*r
)
2059 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2060 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
2061 if (ndr_flags
& NDR_SCALARS
) {
2062 NDR_CHECK(ndr_pull_align(ndr
, 4));
2063 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Version
));
2064 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->Checksum
, 8));
2065 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->SeqNum
));
2067 if (ndr_flags
& NDR_BUFFERS
) {
2069 ndr
->flags
= _flags_save_STRUCT
;
2071 return NDR_ERR_SUCCESS
;
2074 _PUBLIC_
void ndr_print_NTLMSSP_MESSAGE_SIGNATURE_NTLMv2(struct ndr_print
*ndr
, const char *name
, const struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2
*r
)
2076 ndr_print_struct(ndr
, name
, "NTLMSSP_MESSAGE_SIGNATURE_NTLMv2");
2078 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2079 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
2081 ndr_print_uint32(ndr
, "Version", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NTLMSSP_SIGN_VERSION
:r
->Version
);
2082 ndr_print_array_uint8(ndr
, "Checksum", r
->Checksum
, 8);
2083 ndr_print_uint32(ndr
, "SeqNum", r
->SeqNum
);
2085 ndr
->flags
= _flags_save_STRUCT
;
2089 static enum ndr_err_code
ndr_push_decode_NEGOTIATE_MESSAGE(struct ndr_push
*ndr
, int flags
, const struct decode_NEGOTIATE_MESSAGE
*r
)
2091 if (flags
& NDR_IN
) {
2092 NDR_CHECK(ndr_push_NEGOTIATE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.negotiate
));
2094 if (flags
& NDR_OUT
) {
2096 return NDR_ERR_SUCCESS
;
2099 static enum ndr_err_code
ndr_pull_decode_NEGOTIATE_MESSAGE(struct ndr_pull
*ndr
, int flags
, struct decode_NEGOTIATE_MESSAGE
*r
)
2101 if (flags
& NDR_IN
) {
2102 NDR_CHECK(ndr_pull_NEGOTIATE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.negotiate
));
2104 if (flags
& NDR_OUT
) {
2106 return NDR_ERR_SUCCESS
;
2109 _PUBLIC_
void ndr_print_decode_NEGOTIATE_MESSAGE(struct ndr_print
*ndr
, const char *name
, int flags
, const struct decode_NEGOTIATE_MESSAGE
*r
)
2111 ndr_print_struct(ndr
, name
, "decode_NEGOTIATE_MESSAGE");
2113 if (flags
& NDR_SET_VALUES
) {
2114 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2116 if (flags
& NDR_IN
) {
2117 ndr_print_struct(ndr
, "in", "decode_NEGOTIATE_MESSAGE");
2119 ndr_print_NEGOTIATE_MESSAGE(ndr
, "negotiate", &r
->in
.negotiate
);
2122 if (flags
& NDR_OUT
) {
2123 ndr_print_struct(ndr
, "out", "decode_NEGOTIATE_MESSAGE");
2130 static enum ndr_err_code
ndr_push_decode_CHALLENGE_MESSAGE(struct ndr_push
*ndr
, int flags
, const struct decode_CHALLENGE_MESSAGE
*r
)
2132 if (flags
& NDR_IN
) {
2133 NDR_CHECK(ndr_push_CHALLENGE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.challenge
));
2135 if (flags
& NDR_OUT
) {
2137 return NDR_ERR_SUCCESS
;
2140 static enum ndr_err_code
ndr_pull_decode_CHALLENGE_MESSAGE(struct ndr_pull
*ndr
, int flags
, struct decode_CHALLENGE_MESSAGE
*r
)
2142 if (flags
& NDR_IN
) {
2143 NDR_CHECK(ndr_pull_CHALLENGE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.challenge
));
2145 if (flags
& NDR_OUT
) {
2147 return NDR_ERR_SUCCESS
;
2150 _PUBLIC_
void ndr_print_decode_CHALLENGE_MESSAGE(struct ndr_print
*ndr
, const char *name
, int flags
, const struct decode_CHALLENGE_MESSAGE
*r
)
2152 ndr_print_struct(ndr
, name
, "decode_CHALLENGE_MESSAGE");
2154 if (flags
& NDR_SET_VALUES
) {
2155 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2157 if (flags
& NDR_IN
) {
2158 ndr_print_struct(ndr
, "in", "decode_CHALLENGE_MESSAGE");
2160 ndr_print_CHALLENGE_MESSAGE(ndr
, "challenge", &r
->in
.challenge
);
2163 if (flags
& NDR_OUT
) {
2164 ndr_print_struct(ndr
, "out", "decode_CHALLENGE_MESSAGE");
2171 static enum ndr_err_code
ndr_push_decode_AUTHENTICATE_MESSAGE(struct ndr_push
*ndr
, int flags
, const struct decode_AUTHENTICATE_MESSAGE
*r
)
2173 if (flags
& NDR_IN
) {
2174 NDR_CHECK(ndr_push_AUTHENTICATE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.authenticate
));
2176 if (flags
& NDR_OUT
) {
2178 return NDR_ERR_SUCCESS
;
2181 static enum ndr_err_code
ndr_pull_decode_AUTHENTICATE_MESSAGE(struct ndr_pull
*ndr
, int flags
, struct decode_AUTHENTICATE_MESSAGE
*r
)
2183 if (flags
& NDR_IN
) {
2184 NDR_CHECK(ndr_pull_AUTHENTICATE_MESSAGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.authenticate
));
2186 if (flags
& NDR_OUT
) {
2188 return NDR_ERR_SUCCESS
;
2191 _PUBLIC_
void ndr_print_decode_AUTHENTICATE_MESSAGE(struct ndr_print
*ndr
, const char *name
, int flags
, const struct decode_AUTHENTICATE_MESSAGE
*r
)
2193 ndr_print_struct(ndr
, name
, "decode_AUTHENTICATE_MESSAGE");
2195 if (flags
& NDR_SET_VALUES
) {
2196 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2198 if (flags
& NDR_IN
) {
2199 ndr_print_struct(ndr
, "in", "decode_AUTHENTICATE_MESSAGE");
2201 ndr_print_AUTHENTICATE_MESSAGE(ndr
, "authenticate", &r
->in
.authenticate
);
2204 if (flags
& NDR_OUT
) {
2205 ndr_print_struct(ndr
, "out", "decode_AUTHENTICATE_MESSAGE");
2212 static enum ndr_err_code
ndr_push_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_push
*ndr
, int flags
, const struct decode_NTLMv2_CLIENT_CHALLENGE
*r
)
2214 if (flags
& NDR_IN
) {
2215 NDR_CHECK(ndr_push_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.challenge
));
2217 if (flags
& NDR_OUT
) {
2219 return NDR_ERR_SUCCESS
;
2222 static enum ndr_err_code
ndr_pull_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_pull
*ndr
, int flags
, struct decode_NTLMv2_CLIENT_CHALLENGE
*r
)
2224 if (flags
& NDR_IN
) {
2225 NDR_CHECK(ndr_pull_NTLMv2_CLIENT_CHALLENGE(ndr
, NDR_SCALARS
|NDR_BUFFERS
, &r
->in
.challenge
));
2227 if (flags
& NDR_OUT
) {
2229 return NDR_ERR_SUCCESS
;
2232 _PUBLIC_
void ndr_print_decode_NTLMv2_CLIENT_CHALLENGE(struct ndr_print
*ndr
, const char *name
, int flags
, const struct decode_NTLMv2_CLIENT_CHALLENGE
*r
)
2234 ndr_print_struct(ndr
, name
, "decode_NTLMv2_CLIENT_CHALLENGE");
2236 if (flags
& NDR_SET_VALUES
) {
2237 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
2239 if (flags
& NDR_IN
) {
2240 ndr_print_struct(ndr
, "in", "decode_NTLMv2_CLIENT_CHALLENGE");
2242 ndr_print_NTLMv2_CLIENT_CHALLENGE(ndr
, "challenge", &r
->in
.challenge
);
2245 if (flags
& NDR_OUT
) {
2246 ndr_print_struct(ndr
, "out", "decode_NTLMv2_CLIENT_CHALLENGE");
2253 static const struct ndr_interface_call ntlmssp_calls
[] = {
2255 "decode_NEGOTIATE_MESSAGE",
2256 sizeof(struct decode_NEGOTIATE_MESSAGE
),
2257 (ndr_push_flags_fn_t
) ndr_push_decode_NEGOTIATE_MESSAGE
,
2258 (ndr_pull_flags_fn_t
) ndr_pull_decode_NEGOTIATE_MESSAGE
,
2259 (ndr_print_function_t
) ndr_print_decode_NEGOTIATE_MESSAGE
,
2263 "decode_CHALLENGE_MESSAGE",
2264 sizeof(struct decode_CHALLENGE_MESSAGE
),
2265 (ndr_push_flags_fn_t
) ndr_push_decode_CHALLENGE_MESSAGE
,
2266 (ndr_pull_flags_fn_t
) ndr_pull_decode_CHALLENGE_MESSAGE
,
2267 (ndr_print_function_t
) ndr_print_decode_CHALLENGE_MESSAGE
,
2271 "decode_AUTHENTICATE_MESSAGE",
2272 sizeof(struct decode_AUTHENTICATE_MESSAGE
),
2273 (ndr_push_flags_fn_t
) ndr_push_decode_AUTHENTICATE_MESSAGE
,
2274 (ndr_pull_flags_fn_t
) ndr_pull_decode_AUTHENTICATE_MESSAGE
,
2275 (ndr_print_function_t
) ndr_print_decode_AUTHENTICATE_MESSAGE
,
2279 "decode_NTLMv2_CLIENT_CHALLENGE",
2280 sizeof(struct decode_NTLMv2_CLIENT_CHALLENGE
),
2281 (ndr_push_flags_fn_t
) ndr_push_decode_NTLMv2_CLIENT_CHALLENGE
,
2282 (ndr_pull_flags_fn_t
) ndr_pull_decode_NTLMv2_CLIENT_CHALLENGE
,
2283 (ndr_print_function_t
) ndr_print_decode_NTLMv2_CLIENT_CHALLENGE
,
2286 { NULL
, 0, NULL
, NULL
, NULL
, false }
2289 static const char * const ntlmssp_endpoint_strings
[] = {
2290 "ncacn_np:[\\pipe\\ntlmssp]",
2293 static const struct ndr_interface_string_array ntlmssp_endpoints
= {
2295 .names
= ntlmssp_endpoint_strings
2298 static const char * const ntlmssp_authservice_strings
[] = {
2302 static const struct ndr_interface_string_array ntlmssp_authservices
= {
2304 .names
= ntlmssp_authservice_strings
2308 const struct ndr_interface_table ndr_table_ntlmssp
= {
2311 {0x6e746c6d,0x7373,0x700a,{0x00,0x00},{0x00,0x00,0x00,0x00}},
2314 .helpstring
= NDR_NTLMSSP_HELPSTRING
,
2316 .calls
= ntlmssp_calls
,
2317 .endpoints
= &ntlmssp_endpoints
,
2318 .authservices
= &ntlmssp_authservices