summaryrefslogtreecommitdiffstats
path: root/librpc/idl/schannel.idl
diff options
context:
space:
mode:
Diffstat (limited to 'librpc/idl/schannel.idl')
-rw-r--r--librpc/idl/schannel.idl113
1 files changed, 113 insertions, 0 deletions
diff --git a/librpc/idl/schannel.idl b/librpc/idl/schannel.idl
new file mode 100644
index 0000000..3bc8a92
--- /dev/null
+++ b/librpc/idl/schannel.idl
@@ -0,0 +1,113 @@
+#include "idl_types.h"
+
+/*
+ schannel structures
+*/
+
+import "netlogon.idl", "nbt.idl", "misc.idl", "security.idl";
+
+[
+ pointer_default(unique),
+ helper("../librpc/ndr/ndr_schannel.h", "../librpc/ndr/ndr_nbt.h")
+]
+interface schannel
+{
+ /* this structure is used internally in the NETLOGON server */
+
+ typedef [public,flag(NDR_PAHEX)] struct {
+ netr_NegotiateFlags negotiate_flags;
+ uint8 session_key[16];
+ uint32 sequence;
+ netr_Credential seed;
+ netr_Credential client;
+ netr_Credential server;
+ netr_SchannelType secure_channel_type;
+ [string,charset(UTF8)] uint8 computer_name[];
+ [string,charset(UTF8)] uint8 account_name[];
+ dom_sid *sid;
+ } netlogon_creds_CredentialState;
+
+ /* This is used in the schannel_store.tdb */
+ typedef [public] struct {
+ [string,charset(UTF16)] uint16 *computer_name;
+ netr_Credential server_challenge;
+ netr_Credential client_challenge;
+ } netlogon_cache_entry;
+
+ /* MS-NRPC 2.2.1.3.1 NL_AUTH_MESSAGE */
+
+ typedef [v1_enum] enum {
+ NL_NEGOTIATE_REQUEST = 0x00000000,
+ NL_NEGOTIATE_RESPONSE = 0x00000001
+ } NL_AUTH_MESSAGE_TYPE;
+
+ typedef [bitmap32bit] bitmap {
+ NL_FLAG_OEM_NETBIOS_DOMAIN_NAME = 0x00000001,
+ NL_FLAG_OEM_NETBIOS_COMPUTER_NAME = 0x00000002,
+ NL_FLAG_UTF8_DNS_DOMAIN_NAME = 0x00000004,
+ NL_FLAG_UTF8_DNS_HOST_NAME = 0x00000008,
+ NL_FLAG_UTF8_NETBIOS_COMPUTER_NAME = 0x00000010
+ } NL_AUTH_MESSAGE_FLAGS;
+
+ typedef [public,nodiscriminant,noprint] union {
+ [case (NL_FLAG_OEM_NETBIOS_DOMAIN_NAME)] astring a;
+ [case (NL_FLAG_OEM_NETBIOS_COMPUTER_NAME)] astring a;
+ [case (NL_FLAG_UTF8_DNS_DOMAIN_NAME)] nbt_string u;
+ [case (NL_FLAG_UTF8_DNS_HOST_NAME)] nbt_string u;
+ [case (NL_FLAG_UTF8_NETBIOS_COMPUTER_NAME)] nbt_string u;
+ [default] ;
+ } NL_AUTH_MESSAGE_BUFFER;
+
+ typedef [public,nodiscriminant,noprint] union {
+ [case (NL_NEGOTIATE_RESPONSE)] uint32 dummy;
+ [default] ;
+ } NL_AUTH_MESSAGE_BUFFER_REPLY;
+
+ typedef [public,flag(NDR_PAHEX)] struct {
+ NL_AUTH_MESSAGE_TYPE MessageType;
+ NL_AUTH_MESSAGE_FLAGS Flags;
+ [switch_is(Flags & NL_FLAG_OEM_NETBIOS_DOMAIN_NAME)] NL_AUTH_MESSAGE_BUFFER oem_netbios_domain;
+ [switch_is(Flags & NL_FLAG_OEM_NETBIOS_COMPUTER_NAME)] NL_AUTH_MESSAGE_BUFFER oem_netbios_computer;
+ [switch_is(Flags & NL_FLAG_UTF8_DNS_DOMAIN_NAME)] NL_AUTH_MESSAGE_BUFFER utf8_dns_domain;
+ [switch_is(Flags & NL_FLAG_UTF8_DNS_HOST_NAME)] NL_AUTH_MESSAGE_BUFFER utf8_dns_host;
+ [switch_is(Flags & NL_FLAG_UTF8_NETBIOS_COMPUTER_NAME)] NL_AUTH_MESSAGE_BUFFER utf8_netbios_computer;
+ [switch_is(MessageType & NL_NEGOTIATE_RESPONSE)] NL_AUTH_MESSAGE_BUFFER_REPLY Buffer;
+ } NL_AUTH_MESSAGE;
+
+ /* MS-NRPC 2.2.1.3.2 NL_AUTH_SIGNATURE */
+
+ typedef enum {
+ NL_SIGN_HMAC_SHA256 = 0x0013,
+ NL_SIGN_HMAC_MD5 = 0x0077
+ } NL_SIGNATURE_ALGORITHM;
+
+ typedef enum {
+ NL_SEAL_AES128 = 0x001A,
+ NL_SEAL_RC4 = 0x007A,
+ NL_SEAL_NONE = 0xFFFF
+ } NL_SEAL_ALGORITHM;
+
+ typedef [public,flag(NDR_PAHEX)] struct {
+ [value(NL_SIGN_HMAC_MD5)] NL_SIGNATURE_ALGORITHM SignatureAlgorithm;
+ NL_SEAL_ALGORITHM SealAlgorithm;
+ uint16 Pad;
+ uint16 Flags;
+ uint8 SequenceNumber[8];
+ uint8 Checksum[8];
+ uint8 Confounder[8];
+ } NL_AUTH_SIGNATURE;
+
+ const int NL_AUTH_SIGNATURE_SIZE = 0x20;
+
+ /* MS-NRPC 2.2.1.3.3 NL_AUTH_SHA2_SIGNATURE */
+
+ typedef [public,flag(NDR_PAHEX)] struct {
+ [value(NL_SIGN_HMAC_SHA256)] NL_SIGNATURE_ALGORITHM SignatureAlgorithm;
+ NL_SEAL_ALGORITHM SealAlgorithm;
+ uint16 Pad;
+ uint16 Flags;
+ uint8 SequenceNumber[8];
+ uint8 Checksum[32];
+ uint8 Confounder[8];
+ } NL_AUTH_SHA2_SIGNATURE;
+}