| 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 | 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 | }
|
|---|