4 ntlmssp interface definition
8 pointer_default(unique),
9 helper
("../librpc/ndr/ndr_ntlmssp.h")
13 typedef [v1_enum] enum {
14 NtLmNegotiate
= 0x00000001,
15 NtLmChallenge
= 0x00000002,
16 NtLmAuthenticate
= 0x00000003
17 } ntlmssp_MessageType
;
19 typedef [bitmap32bit
] bitmap
{
20 NTLMSSP_NEGOTIATE_UNICODE
= 0x00000001,
21 NTLMSSP_NEGOTIATE_OEM
= 0x00000002, /* NTLM_NEGOTIATE_OEM in MS-NLMP */
22 NTLMSSP_REQUEST_TARGET
= 0x00000004,
23 NTLMSSP_NEGOTIATE_SIGN
= 0x00000010, /* Message integrity */
24 NTLMSSP_NEGOTIATE_SEAL
= 0x00000020, /* Message confidentiality */
25 NTLMSSP_NEGOTIATE_DATAGRAM
= 0x00000040,
26 NTLMSSP_NEGOTIATE_LM_KEY
= 0x00000080,
27 NTLMSSP_NEGOTIATE_NETWARE
= 0x00000100, /* not mentioned in MS-NLMP */
28 NTLMSSP_NEGOTIATE_NTLM
= 0x00000200,
29 NTLMSSP_NEGOTIATE_NT_ONLY
= 0x00000400,
30 NTLMSSP_ANONYMOUS
= 0x00000800, /* no symbol name in MS-NLMP */
31 NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED
= 0x00001000,
32 NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED
= 0x00002000,
33 NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL
= 0x00004000, /* not mentioned in MS-NLMP */
34 NTLMSSP_NEGOTIATE_ALWAYS_SIGN
= 0x00008000,
35 NTLMSSP_TARGET_TYPE_DOMAIN
= 0x00010000,
36 NTLMSSP_TARGET_TYPE_SERVER
= 0x00020000,
37 NTLMSSP_TARGET_TYPE_SHARE
= 0x00040000,
38 NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
= 0x00080000,
39 NTLMSSP_NEGOTIATE_IDENTIFY
= 0x00100000,
40 NTLMSSP_REQUEST_NON_NT_SESSION_KEY
= 0x00400000,
41 NTLMSSP_NEGOTIATE_TARGET_INFO
= 0x00800000,
42 NTLMSSP_NEGOTIATE_VERSION
= 0x02000000,
43 NTLMSSP_NEGOTIATE_128
= 0x20000000, /* 128-bit encryption */
44 NTLMSSP_NEGOTIATE_KEY_EXCH
= 0x40000000,
45 NTLMSSP_NEGOTIATE_56
= 0x80000000
48 /* convenience mapping */
49 const int NTLMSSP_NEGOTIATE_NTLM2
= NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
;
52 NTLMSSP_WINDOWS_MAJOR_VERSION_5: Windows XP SP2 and Server 2003
53 NTLMSSP_WINDOWS_MAJOR_VERSION_6: Windows Vista, Server 2008, 7 and Server 2008 R2
56 typedef [enum8bit
] enum {
57 NTLMSSP_WINDOWS_MAJOR_VERSION_5
= 0x05,
58 NTLMSSP_WINDOWS_MAJOR_VERSION_6
= 0x06
59 } ntlmssp_WindowsMajorVersion
;
62 NTLMSSP_WINDOWS_MINOR_VERSION_0: Windows Vista, Server 2008, 7, Server 2008 R2
63 NTLMSSP_WINDOWS_MINOR_VERSION_1: Windows XP SP2
64 NTLMSSP_WINDOWS_MINOR_VERSION_2: Windows Server 2003
67 typedef [enum8bit
] enum {
68 NTLMSSP_WINDOWS_MINOR_VERSION_0
= 0x00,
69 NTLMSSP_WINDOWS_MINOR_VERSION_1
= 0x01,
70 NTLMSSP_WINDOWS_MINOR_VERSION_2
= 0x02
71 } ntlmssp_WindowsMinorVersion
;
74 NTLMSSP_REVISION_W2K3_RC1:
75 NTLMSSP_REVISION_W2K3: Windows XP SP2, Server 2003, Vista, Server 2008, 7, Server 2008 R2
78 typedef [enum8bit
] enum {
79 NTLMSSP_REVISION_W2K3_RC1
= 0x0A,
80 NTLMSSP_REVISION_W2K3
= 0x0F
81 } ntlmssp_NTLMRevisionCurrent
;
84 ntlmssp_WindowsMajorVersion ProductMajorVersion
;
85 ntlmssp_WindowsMinorVersion ProductMinorVersion
;
88 ntlmssp_NTLMRevisionCurrent NTLMRevisionCurrent
;
91 typedef [nodiscriminant
] union {
92 [case(NTLMSSP_NEGOTIATE_VERSION
)] VERSION version;
96 /* NTLMSSP negotiate message */
98 typedef [public] struct {
99 [charset
(DOS
),value
("NTLMSSP")] uint8 Signature
[8];
100 [value
(NtLmNegotiate
)] ntlmssp_MessageType MessageType
;
101 NEGOTIATE NegotiateFlags
;
102 [value
(strlen
(DomainName
))] uint16 DomainNameLen
;
103 [value
(DomainNameLen
)] uint16 DomainNameMaxLen
;
104 [relative
] [subcontext
(0),subcontext_size
(DomainNameLen
)] [flag
(ndr_ntlmssp_negotiated_string_flags
(NTLMSSP_NEGOTIATE_OEM
))] string *DomainName
;
105 [value
(strlen
(Workstation
))] uint16 WorkstationLen
;
106 [value
(WorkstationLen
)] uint16 WorkstationMaxLen
;
107 [relative
] [subcontext
(0),subcontext_size
(WorkstationLen
)] [flag
(ndr_ntlmssp_negotiated_string_flags
(NTLMSSP_NEGOTIATE_OEM
))] string *Workstation
;
108 [switch_is(NegotiateFlags
& NTLMSSP_NEGOTIATE_VERSION
)] ntlmssp_Version
Version;