s4: add some missing header dependencies.
[samba.git] / librpc / idl / schannel.idl
1 #include "idl_types.h"
2
3 /*
4   schannel structures
5 */
6
7 import "netlogon.idl", "nbt.idl", "misc.idl", "security.idl";
8
9 [
10         pointer_default(unique),
11         helper("../librpc/ndr/ndr_schannel.h", "../librpc/ndr/ndr_nbt.h")
12 ]
13 interface schannel
14 {
15         /* this structure is used internally in the NETLOGON server */
16
17         typedef [public,flag(NDR_PAHEX)] struct {
18                 netr_NegotiateFlags negotiate_flags;
19                 uint8 session_key[16];
20                 uint32 sequence;
21                 netr_Credential seed;
22                 netr_Credential client;
23                 netr_Credential server;
24                 netr_SchannelType secure_channel_type;
25                 [string,charset(UTF8)] uint8 computer_name[];
26                 [string,charset(UTF8)] uint8 account_name[];
27                 dom_sid *sid;
28         } netlogon_creds_CredentialState;
29
30         /* MS-NRPC 2.2.1.3.1 NL_AUTH_MESSAGE */
31
32         typedef [v1_enum] enum {
33                 NL_NEGOTIATE_REQUEST    = 0x00000000,
34                 NL_NEGOTIATE_RESPONSE   = 0x00000001
35         } NL_AUTH_MESSAGE_TYPE;
36
37         typedef [bitmap32bit] bitmap {
38                 NL_FLAG_OEM_NETBIOS_DOMAIN_NAME         = 0x00000001,
39                 NL_FLAG_OEM_NETBIOS_COMPUTER_NAME       = 0x00000002,
40                 NL_FLAG_UTF8_DNS_DOMAIN_NAME            = 0x00000004,
41                 NL_FLAG_UTF8_DNS_HOST_NAME              = 0x00000008,
42                 NL_FLAG_UTF8_NETBIOS_COMPUTER_NAME      = 0x00000010
43         } NL_AUTH_MESSAGE_FLAGS;
44
45         typedef [public,nodiscriminant,noprint] union {
46                 [case (NL_FLAG_OEM_NETBIOS_DOMAIN_NAME)]        astring  a;
47                 [case (NL_FLAG_OEM_NETBIOS_COMPUTER_NAME)]      astring  a;
48                 [case (NL_FLAG_UTF8_DNS_DOMAIN_NAME)]           nbt_string u;
49                 [case (NL_FLAG_UTF8_DNS_HOST_NAME)]             nbt_string u;
50                 [case (NL_FLAG_UTF8_NETBIOS_COMPUTER_NAME)]     nbt_string u;
51                 [default]                                       ;
52         } NL_AUTH_MESSAGE_BUFFER;
53
54         typedef [public,nodiscriminant,noprint] union {
55                 [case (NL_NEGOTIATE_RESPONSE)]                  uint32 dummy;
56                 [default]                                       ;
57         } NL_AUTH_MESSAGE_BUFFER_REPLY;
58
59         typedef [public,flag(NDR_PAHEX)] struct {
60                 NL_AUTH_MESSAGE_TYPE MessageType;
61                 NL_AUTH_MESSAGE_FLAGS Flags;
62                 [switch_is(Flags & NL_FLAG_OEM_NETBIOS_DOMAIN_NAME)]    NL_AUTH_MESSAGE_BUFFER oem_netbios_domain;
63                 [switch_is(Flags & NL_FLAG_OEM_NETBIOS_COMPUTER_NAME)]  NL_AUTH_MESSAGE_BUFFER oem_netbios_computer;
64                 [switch_is(Flags & NL_FLAG_UTF8_DNS_DOMAIN_NAME)]       NL_AUTH_MESSAGE_BUFFER utf8_dns_domain;
65                 [switch_is(Flags & NL_FLAG_UTF8_DNS_HOST_NAME)]         NL_AUTH_MESSAGE_BUFFER utf8_dns_host;
66                 [switch_is(Flags & NL_FLAG_UTF8_NETBIOS_COMPUTER_NAME)] NL_AUTH_MESSAGE_BUFFER utf8_netbios_computer;
67                 [switch_is(MessageType & NL_NEGOTIATE_RESPONSE)]        NL_AUTH_MESSAGE_BUFFER_REPLY Buffer;
68         } NL_AUTH_MESSAGE;
69
70         /* MS-NRPC 2.2.1.3.2 NL_AUTH_SIGNATURE */
71
72         typedef enum {
73                 NL_SIGN_HMAC_SHA256     = 0x0013,
74                 NL_SIGN_HMAC_MD5        = 0x0077
75         } NL_SIGNATURE_ALGORITHM;
76
77         typedef enum {
78                 NL_SEAL_AES128          = 0x001A,
79                 NL_SEAL_RC4             = 0x007A,
80                 NL_SEAL_NONE            = 0xFFFF
81         } NL_SEAL_ALGORITHM;
82
83         typedef [public,flag(NDR_PAHEX)] struct {
84                 [value(NL_SIGN_HMAC_MD5)] NL_SIGNATURE_ALGORITHM SignatureAlgorithm;
85                 NL_SEAL_ALGORITHM SealAlgorithm;
86                 uint16 Pad;
87                 uint16 Flags;
88                 uint8 SequenceNumber[8];
89                 uint8 Checksum[8];
90                 uint8 Confounder[8];
91         } NL_AUTH_SIGNATURE;
92
93         const int NL_AUTH_SIGNATURE_SIZE = 0x20;
94
95         /* MS-NRPC 2.2.1.3.3 NL_AUTH_SHA2_SIGNATURE */
96
97         typedef [public,flag(NDR_PAHEX)] struct {
98                 [value(NL_SIGN_HMAC_SHA256)] NL_SIGNATURE_ALGORITHM SignatureAlgorithm;
99                 NL_SEAL_ALGORITHM SealAlgorithm;
100                 uint16 Pad;
101                 uint16 Flags;
102                 uint8 SequenceNumber[8];
103                 uint8 Checksum[32];
104                 uint8 Confounder[8];
105         } NL_AUTH_SHA2_SIGNATURE;
106 }