2009-08-12 22:19:47 +04:00
/* header auto-generated by pidl */
# include <stdint.h>
# include "libcli/util/ntstatus.h"
# ifndef _HEADER_ntlmssp
# define _HEADER_ntlmssp
# define NTLMSSP_NEGOTIATE_NTLM2 ( NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY )
# define NTLMSSP_SIGN_VERSION ( 0x01 )
# define NTLMSSP_SIG_SIZE ( 16 )
enum ntlmssp_MessageType
# ifndef USE_UINT_ENUMS
{
2009-09-17 22:28:37 +04:00
NtLmNegotiate = ( int ) ( 0x00000001 ) ,
NtLmChallenge = ( int ) ( 0x00000002 ) ,
NtLmAuthenticate = ( int ) ( 0x00000003 )
2009-08-12 22:19:47 +04:00
}
# else
{ __donnot_use_enum_ntlmssp_MessageType = 0x7FFFFFFF }
# define NtLmNegotiate ( 0x00000001 )
# define NtLmChallenge ( 0x00000002 )
# define NtLmAuthenticate ( 0x00000003 )
# endif
;
/* bitmap NEGOTIATE */
# define NTLMSSP_NEGOTIATE_UNICODE ( 0x00000001 )
# define NTLMSSP_NEGOTIATE_OEM ( 0x00000002 )
# define NTLMSSP_REQUEST_TARGET ( 0x00000004 )
# define NTLMSSP_NEGOTIATE_SIGN ( 0x00000010 )
# define NTLMSSP_NEGOTIATE_SEAL ( 0x00000020 )
# define NTLMSSP_NEGOTIATE_DATAGRAM ( 0x00000040 )
# define NTLMSSP_NEGOTIATE_LM_KEY ( 0x00000080 )
# define NTLMSSP_NEGOTIATE_NETWARE ( 0x00000100 )
# define NTLMSSP_NEGOTIATE_NTLM ( 0x00000200 )
# define NTLMSSP_NEGOTIATE_NT_ONLY ( 0x00000400 )
# define NTLMSSP_ANONYMOUS ( 0x00000800 )
# define NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED ( 0x00001000 )
# define NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED ( 0x00002000 )
# define NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL ( 0x00004000 )
# define NTLMSSP_NEGOTIATE_ALWAYS_SIGN ( 0x00008000 )
# define NTLMSSP_TARGET_TYPE_DOMAIN ( 0x00010000 )
# define NTLMSSP_TARGET_TYPE_SERVER ( 0x00020000 )
# define NTLMSSP_TARGET_TYPE_SHARE ( 0x00040000 )
# define NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY ( 0x00080000 )
# define NTLMSSP_NEGOTIATE_IDENTIFY ( 0x00100000 )
# define NTLMSSP_REQUEST_NON_NT_SESSION_KEY ( 0x00400000 )
# define NTLMSSP_NEGOTIATE_TARGET_INFO ( 0x00800000 )
# define NTLMSSP_NEGOTIATE_VERSION ( 0x02000000 )
# define NTLMSSP_NEGOTIATE_128 ( 0x20000000 )
# define NTLMSSP_NEGOTIATE_KEY_EXCH ( 0x40000000 )
# define NTLMSSP_NEGOTIATE_56 ( 0x80000000 )
enum ntlmssp_WindowsMajorVersion
# ifndef USE_UINT_ENUMS
{
2009-09-17 22:28:37 +04:00
NTLMSSP_WINDOWS_MAJOR_VERSION_5 = ( int ) ( 0x05 ) ,
NTLMSSP_WINDOWS_MAJOR_VERSION_6 = ( int ) ( 0x06 )
2009-08-12 22:19:47 +04:00
}
# else
{ __donnot_use_enum_ntlmssp_WindowsMajorVersion = 0x7FFFFFFF }
# define NTLMSSP_WINDOWS_MAJOR_VERSION_5 ( 0x05 )
# define NTLMSSP_WINDOWS_MAJOR_VERSION_6 ( 0x06 )
# endif
;
enum ntlmssp_WindowsMinorVersion
# ifndef USE_UINT_ENUMS
{
2009-09-17 22:28:37 +04:00
NTLMSSP_WINDOWS_MINOR_VERSION_0 = ( int ) ( 0x00 ) ,
NTLMSSP_WINDOWS_MINOR_VERSION_1 = ( int ) ( 0x01 ) ,
NTLMSSP_WINDOWS_MINOR_VERSION_2 = ( int ) ( 0x02 )
2009-08-12 22:19:47 +04:00
}
# else
{ __donnot_use_enum_ntlmssp_WindowsMinorVersion = 0x7FFFFFFF }
# define NTLMSSP_WINDOWS_MINOR_VERSION_0 ( 0x00 )
# define NTLMSSP_WINDOWS_MINOR_VERSION_1 ( 0x01 )
# define NTLMSSP_WINDOWS_MINOR_VERSION_2 ( 0x02 )
# endif
;
enum ntlmssp_NTLMRevisionCurrent
# ifndef USE_UINT_ENUMS
{
2009-09-17 22:28:37 +04:00
NTLMSSP_REVISION_W2K3_RC1 = ( int ) ( 0x0A ) ,
NTLMSSP_REVISION_W2K3 = ( int ) ( 0x0F )
2009-08-12 22:19:47 +04:00
}
# else
{ __donnot_use_enum_ntlmssp_NTLMRevisionCurrent = 0x7FFFFFFF }
# define NTLMSSP_REVISION_W2K3_RC1 ( 0x0A )
# define NTLMSSP_REVISION_W2K3 ( 0x0F )
# endif
;
struct VERSION {
enum ntlmssp_WindowsMajorVersion ProductMajorVersion ;
enum ntlmssp_WindowsMinorVersion ProductMinorVersion ;
uint16_t ProductBuild ;
uint8_t Reserved [ 3 ] ;
enum ntlmssp_NTLMRevisionCurrent NTLMRevisionCurrent ;
} ;
union ntlmssp_Version {
struct VERSION version ; /* [case(NTLMSSP_NEGOTIATE_VERSION)] */
2009-09-15 02:26:31 +04:00
} /* [noprint,nodiscriminant] */ ;
2009-08-12 22:19:47 +04:00
struct NEGOTIATE_MESSAGE {
const char * Signature ; /* [value("NTLMSSP"),charset(DOS)] */
enum ntlmssp_MessageType MessageType ; /* [value(NtLmNegotiate)] */
uint32_t NegotiateFlags ;
uint16_t DomainNameLen ; /* [value(strlen(DomainName))] */
uint16_t DomainNameMaxLen ; /* [value(DomainNameLen)] */
const char * DomainName ; /* [relative,subcontext_size(DomainNameLen),subcontext(0),flag(ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM))] */
uint16_t WorkstationLen ; /* [value(strlen(Workstation))] */
uint16_t WorkstationMaxLen ; /* [value(WorkstationLen)] */
const char * Workstation ; /* [relative,subcontext_size(WorkstationLen),subcontext(0),flag(ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_OEM))] */
union ntlmssp_Version Version ; /* [switch_is(NegotiateFlags&NTLMSSP_NEGOTIATE_VERSION)] */
} /* [public] */ ;
enum ntlmssp_AvId
# ifndef USE_UINT_ENUMS
{
2009-09-17 22:28:37 +04:00
MsvAvEOL = ( int ) ( 0 ) ,
MsvAvNbComputerName = ( int ) ( 1 ) ,
MsvAvNbDomainName = ( int ) ( 2 ) ,
MsvAvDnsComputerName = ( int ) ( 3 ) ,
MsvAvDnsDomainName = ( int ) ( 4 ) ,
MsvAvDnsTreeName = ( int ) ( 5 ) ,
MsvAvFlags = ( int ) ( 6 ) ,
MsvAvTimestamp = ( int ) ( 7 ) ,
MsAvRestrictions = ( int ) ( 8 ) ,
MsvAvTargetName = ( int ) ( 9 ) ,
MsvChannelBindings = ( int ) ( 10 )
2009-08-12 22:19:47 +04:00
}
# else
{ __donnot_use_enum_ntlmssp_AvId = 0x7FFFFFFF }
# define MsvAvEOL ( 0 )
# define MsvAvNbComputerName ( 1 )
# define MsvAvNbDomainName ( 2 )
# define MsvAvDnsComputerName ( 3 )
# define MsvAvDnsDomainName ( 4 )
# define MsvAvDnsTreeName ( 5 )
# define MsvAvFlags ( 6 )
# define MsvAvTimestamp ( 7 )
# define MsAvRestrictions ( 8 )
# define MsvAvTargetName ( 9 )
# define MsvChannelBindings ( 10 )
# endif
;
struct Restriction_Encoding {
uint32_t Size ;
uint32_t Z4 ; /* [value(0)] */
uint32_t IntegrityLevel ;
uint32_t SubjectIntegrityLevel ;
uint8_t MachineId [ 32 ] ;
} ;
/* bitmap ntlmssp_AvFlags */
# define NTLMSSP_AVFLAG_CONSTRAINTED_ACCOUNT ( 0x00000001 )
# define NTLMSSP_AVFLAG_MIC_IN_AUTHENTICATE_MESSAGE ( 0x00000002 )
union ntlmssp_AvValue {
const char * AvNbComputerName ; /* [flag(ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE)),case(MsvAvNbComputerName)] */
const char * AvNbDomainName ; /* [flag(ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE)),case(MsvAvNbDomainName)] */
const char * AvDnsComputerName ; /* [flag(ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE)),case(MsvAvDnsComputerName)] */
const char * AvDnsDomainName ; /* [flag(ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE)),case(MsvAvDnsDomainName)] */
const char * AvDnsTreeName ; /* [flag(ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE)),case(MsvAvDnsTreeName)] */
uint32_t AvFlags ; /* [case(MsvAvFlags)] */
NTTIME AvTimestamp ; /* [case(MsvAvTimestamp)] */
struct Restriction_Encoding AvRestrictions ; /* [case(MsAvRestrictions)] */
const char * AvTargetName ; /* [flag(ndr_ntlmssp_negotiated_string_flags(NTLMSSP_NEGOTIATE_UNICODE)),case(MsvAvTargetName)] */
uint8_t ChannelBindings [ 16 ] ; /* [case(MsvChannelBindings)] */
DATA_BLOB blob ; /* [default,flag(LIBNDR_FLAG_REMAINING)] */
} /* [gensize,nodiscriminant,flag(LIBNDR_FLAG_NOALIGN)] */ ;
struct AV_PAIR {
enum ntlmssp_AvId AvId ;
uint16_t AvLen ; /* [value(ndr_size_ntlmssp_AvValue(&r->Value,r->AvId,ndr->iconv_convenience,0))] */
union ntlmssp_AvValue Value ; /* [subcontext_size(AvLen),subcontext(0),switch_is(AvId)] */
} /* [public,flag(LIBNDR_FLAG_NOALIGN)] */ ;
struct AV_PAIR_LIST {
uint32_t count ;
struct AV_PAIR * pair ;
} /* [gensize,nopull,nopush,flag(LIBNDR_FLAG_NOALIGN)] */ ;
struct CHALLENGE_MESSAGE {
const char * Signature ; /* [value("NTLMSSP"),charset(DOS)] */
enum ntlmssp_MessageType MessageType ; /* [value(NtLmChallenge)] */
uint16_t TargetNameLen ; /* [value(ndr_ntlmssp_string_length(NegotiateFlags,TargetName))] */
uint16_t TargetNameMaxLen ; /* [value(TargetNameLen)] */
const char * TargetName ; /* [relative,subcontext_size(TargetNameLen),subcontext(0),flag(ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags))] */
uint32_t NegotiateFlags ;
uint8_t ServerChallenge [ 8 ] ;
uint8_t Reserved [ 8 ] ;
uint16_t TargetInfoLen ; /* [value(ndr_size_AV_PAIR_LIST(TargetInfo,ndr->iconv_convenience,ndr->flags))] */
uint16_t TargetNameInfoMaxLen ; /* [value(TargetInfoLen)] */
struct AV_PAIR_LIST * TargetInfo ; /* [relative,subcontext_size(TargetInfoLen),subcontext(0)] */
union ntlmssp_Version Version ; /* [switch_is(NegotiateFlags&NTLMSSP_NEGOTIATE_VERSION)] */
} /* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */ ;
struct LM_RESPONSE {
uint8_t Response [ 24 ] ;
} /* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */ ;
struct LMv2_RESPONSE {
uint8_t Response [ 16 ] ;
uint8_t ChallengeFromClient [ 8 ] ;
} /* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */ ;
union ntlmssp_LM_RESPONSE {
struct LM_RESPONSE v1 ; /* [case(24)] */
} /* [nodiscriminant] */ ;
struct NTLM_RESPONSE {
uint8_t Response [ 24 ] ;
} /* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */ ;
struct NTLMv2_CLIENT_CHALLENGE {
uint8_t RespType ; /* [value] */
uint8_t HiRespType ; /* [value] */
uint16_t Reserved1 ;
uint32_t Reserved2 ;
NTTIME TimeStamp ;
uint8_t ChallengeFromClient [ 8 ] ;
uint32_t Reserved3 ;
struct AV_PAIR_LIST AvPairs ; /* [subcontext(0),flag(LIBNDR_FLAG_REMAINING)] */
} /* [flag(LIBNDR_PRINT_ARRAY_HEX)] */ ;
struct NTLMv2_RESPONSE {
uint8_t Response [ 16 ] ;
struct NTLMv2_CLIENT_CHALLENGE Challenge ;
} /* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */ ;
union ntlmssp_NTLM_RESPONSE {
struct NTLM_RESPONSE v1 ; /* [case(0x18)] */
struct NTLMv2_RESPONSE v2 ; /* [default] */
} /* [public,nodiscriminant] */ ;
struct MIC {
uint8_t MIC [ 16 ] ;
} /* [flag(LIBNDR_PRINT_ARRAY_HEX)] */ ;
struct AUTHENTICATE_MESSAGE {
const char * Signature ; /* [value("NTLMSSP"),charset(DOS)] */
enum ntlmssp_MessageType MessageType ; /* [value(NtLmAuthenticate)] */
uint16_t LmChallengeResponseLen ;
uint16_t LmChallengeResponseMaxLen ; /* [value(LmChallengeResponseLen)] */
union ntlmssp_LM_RESPONSE * LmChallengeResponse ; /* [relative,subcontext_size(LmChallengeResponseLen),subcontext(0),switch_is(LmChallengeResponseLen)] */
uint16_t NtChallengeResponseLen ;
uint16_t NtChallengeResponseMaxLen ; /* [value(NtChallengeResponseLen)] */
union ntlmssp_NTLM_RESPONSE * NtChallengeResponse ; /* [relative,subcontext_size(NtChallengeResponseMaxLen),subcontext(0),switch_is(NtChallengeResponseLen)] */
uint16_t DomainNameLen ; /* [value(ndr_ntlmssp_string_length(NegotiateFlags,DomainName))] */
uint16_t DomainNameMaxLen ; /* [value(DomainNameLen)] */
const char * DomainName ; /* [relative,subcontext_size(DomainNameLen),subcontext(0),flag(ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags))] */
uint16_t UserNameLen ; /* [value(ndr_ntlmssp_string_length(NegotiateFlags,UserName))] */
uint16_t UserNameMaxLen ; /* [value(UserNameLen)] */
const char * UserName ; /* [relative,subcontext_size(UserNameLen),subcontext(0),flag(ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags))] */
uint16_t WorkstationLen ; /* [value(ndr_ntlmssp_string_length(NegotiateFlags,Workstation))] */
uint16_t WorkstationMaxLen ; /* [value(WorkstationLen)] */
const char * Workstation ; /* [relative,subcontext_size(WorkstationLen),subcontext(0),flag(ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags))] */
uint16_t EncryptedRandomSessionKeyLen ; /* [value(EncryptedRandomSessionKey->length)] */
uint16_t EncryptedRandomSessionKeyMaxLen ; /* [value(EncryptedRandomSessionKeyLen)] */
DATA_BLOB * EncryptedRandomSessionKey ; /* [relative,subcontext_size(EncryptedRandomSessionKeyLen),subcontext(0)] */
uint32_t NegotiateFlags ;
union ntlmssp_Version Version ; /* [switch_is(NegotiateFlags&NTLMSSP_NEGOTIATE_VERSION)] */
} /* [public,flag(LIBNDR_FLAG_REMAINING)] */ ;
struct NTLMSSP_MESSAGE_SIGNATURE {
uint32_t Version ; /* [value(NTLMSSP_SIGN_VERSION)] */
uint32_t RandomPad ;
uint32_t Checksum ;
uint32_t SeqNum ;
} /* [public] */ ;
struct NTLMSSP_MESSAGE_SIGNATURE_NTLMv2 {
uint32_t Version ; /* [value(NTLMSSP_SIGN_VERSION)] */
uint8_t Checksum [ 8 ] ;
uint32_t SeqNum ;
} /* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */ ;
2009-09-03 04:06:34 +04:00
struct decode_NEGOTIATE_MESSAGE {
struct {
struct NEGOTIATE_MESSAGE negotiate ;
} in ;
} ;
struct decode_CHALLENGE_MESSAGE {
struct {
struct CHALLENGE_MESSAGE challenge ;
} in ;
} ;
struct decode_AUTHENTICATE_MESSAGE {
struct {
struct AUTHENTICATE_MESSAGE authenticate ;
} in ;
} ;
struct decode_NTLMv2_CLIENT_CHALLENGE {
struct {
struct NTLMv2_CLIENT_CHALLENGE challenge ;
} in ;
} ;
2009-08-12 22:19:47 +04:00
# endif /* _HEADER_ntlmssp */