ntlmssp: add NEGOTIATE_MESSAGE to IDL.
[Samba/bb.git] / librpc / idl / ntlmssp.idl
blob6106617b959f016518b610b3ded2b513f9ddcdba
1 #include "idl_types.h"
3 /*
4 ntlmssp interface definition
5 */
8 pointer_default(unique),
9 helper("../librpc/ndr/ndr_ntlmssp.h")
11 interface ntlmssp
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
46 } NEGOTIATE;
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;
83 typedef struct {
84 ntlmssp_WindowsMajorVersion ProductMajorVersion;
85 ntlmssp_WindowsMinorVersion ProductMinorVersion;
86 uint16 ProductBuild;
87 uint8 Reserved[3];
88 ntlmssp_NTLMRevisionCurrent NTLMRevisionCurrent;
89 } VERSION;
91 typedef [nodiscriminant] union {
92 [case(NTLMSSP_NEGOTIATE_VERSION)] VERSION version;
93 [default];
94 } ntlmssp_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;
109 } NEGOTIATE_MESSAGE;