| 1 | #include "idl_types.h"
 | 
|---|
| 2 | 
 | 
|---|
| 3 | /*
 | 
|---|
| 4 |   schannel structures
 | 
|---|
| 5 | */
 | 
|---|
| 6 | 
 | 
|---|
| 7 | import "netlogon.idl", "nbt.idl";
 | 
|---|
| 8 | 
 | 
|---|
| 9 | [
 | 
|---|
| 10 |         pointer_default(unique),
 | 
|---|
| 11 |         helper("../librpc/ndr/ndr_schannel.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 |         /* MS-NRPC 2.2.1.3.3 NL_AUTH_SHA2_SIGNATURE */
 | 
|---|
| 94 | 
 | 
|---|
| 95 |         typedef [public,flag(NDR_PAHEX)] struct {
 | 
|---|
| 96 |                 [value(NL_SIGN_HMAC_SHA256)] NL_SIGNATURE_ALGORITHM SignatureAlgorithm;
 | 
|---|
| 97 |                 NL_SEAL_ALGORITHM SealAlgorithm;
 | 
|---|
| 98 |                 uint16 Pad;
 | 
|---|
| 99 |                 uint16 Flags;
 | 
|---|
| 100 |                 uint8 SequenceNumber[8];
 | 
|---|
| 101 |                 uint8 Checksum[32];
 | 
|---|
| 102 |                 uint8 Confounder[8];
 | 
|---|
| 103 |         } NL_AUTH_SHA2_SIGNATURE;
 | 
|---|
| 104 | }
 | 
|---|