/* header auto-generated by pidl */

#ifndef _PIDL_HEADER_negoex
#define _PIDL_HEADER_negoex

#include <stdint.h>

#include "libcli/util/ntstatus.h"

#include "librpc/gen_ndr/misc.h"
#ifndef _HEADER_negoex
#define _HEADER_negoex

#define NEGOEX_PROTOCOL_VERSION_0	( 0 )
struct negoex_BYTE_VECTOR {
	DATA_BLOB blob;
	uint32_t _length;
	uint8_t *_dummy;/* [relative] */
}/* [noprint,nopull,nopush] */;

struct negoex_AUTH_SCHEME {
	struct GUID guid;
}/* [public] */;

struct negoex_AUTH_SCHEME_VECTOR {
	struct negoex_AUTH_SCHEME *array;/* [relative,size_is(count)] */
	uint32_t count;
}/* [nopull,nopush] */;

enum negoex_ExtensionTypes
#ifndef USE_UINT_ENUMS
 {
	NEGOEX_EXTENSION_TYPE_TODO=(int)(0)
}
#else
 { __do_not_use_enum_negoex_ExtensionTypes=INT_MAX}
#define NEGOEX_EXTENSION_TYPE_TODO ( 0 )
#endif
;

struct negoex_EXTENSION {
	enum negoex_ExtensionTypes type;
	struct negoex_BYTE_VECTOR value;
}/* [public] */;

struct negoex_EXTENSION_VECTOR {
	struct negoex_EXTENSION *array;/* [relative,size_is(count)] */
	uint32_t count;
}/* [nopull,nopush] */;

enum negoex_ChecksumSchemes
#ifndef USE_UINT_ENUMS
 {
	NEGOEX_CHECKSUM_SCHEME_RFC3961=(int)(1)
}
#else
 { __do_not_use_enum_negoex_ChecksumSchemes=INT_MAX}
#define NEGOEX_CHECKSUM_SCHEME_RFC3961 ( 1 )
#endif
;

struct negoex_CHECKSUM {
	uint32_t header_length;/* [value(20)] */
	enum negoex_ChecksumSchemes scheme;
	uint32_t type;
	struct negoex_BYTE_VECTOR value;
};

enum negoex_AlertReason
#ifndef USE_UINT_ENUMS
 {
	NEGOEX_ALERT_VERIFY_NO_KEY=(int)(1)
}
#else
 { __do_not_use_enum_negoex_AlertReason=INT_MAX}
#define NEGOEX_ALERT_VERIFY_NO_KEY ( 1 )
#endif
;

struct negoex_ALERT_PULSE {
	uint32_t header_length;/* [value(4)] */
	enum negoex_AlertReason reason;
}/* [public] */;

enum negoex_AlertTypes
#ifndef USE_UINT_ENUMS
 {
	NEGOEX_ALERT_TYPE_PULSE=(int)(1)
}
#else
 { __do_not_use_enum_negoex_AlertTypes=INT_MAX}
#define NEGOEX_ALERT_TYPE_PULSE ( 1 )
#endif
;

struct negoex_ALERT {
	enum negoex_AlertTypes type;
	struct negoex_BYTE_VECTOR value;
}/* [public] */;

struct negoex_ALERT_VECTOR {
	struct negoex_ALERT *array;/* [relative,size_is(count)] */
	uint32_t count;
}/* [nopull,nopush] */;

enum negoex_MESSAGE_TYPE
#ifndef USE_UINT_ENUMS
 {
	NEGOEX_MESSAGE_TYPE_INITIATOR_NEGO=(int)(0),
	NEGOEX_MESSAGE_TYPE_ACCEPTOR_NEGO=(int)(1),
	NEGOEX_MESSAGE_TYPE_INITIATOR_META_DATA=(int)(2),
	NEGOEX_MESSAGE_TYPE_ACCEPTOR_META_DATA=(int)(3),
	NEGOEX_MESSAGE_TYPE_CHALLENGE=(int)(4),
	NEGOEX_MESSAGE_TYPE_AP_REQUEST=(int)(5),
	NEGOEX_MESSAGE_TYPE_VERIFY=(int)(6),
	NEGOEX_MESSAGE_TYPE_ALERT=(int)(7)
}
#else
 { __do_not_use_enum_negoex_MESSAGE_TYPE=INT_MAX}
#define NEGOEX_MESSAGE_TYPE_INITIATOR_NEGO ( 0 )
#define NEGOEX_MESSAGE_TYPE_ACCEPTOR_NEGO ( 1 )
#define NEGOEX_MESSAGE_TYPE_INITIATOR_META_DATA ( 2 )
#define NEGOEX_MESSAGE_TYPE_ACCEPTOR_META_DATA ( 3 )
#define NEGOEX_MESSAGE_TYPE_CHALLENGE ( 4 )
#define NEGOEX_MESSAGE_TYPE_AP_REQUEST ( 5 )
#define NEGOEX_MESSAGE_TYPE_VERIFY ( 6 )
#define NEGOEX_MESSAGE_TYPE_ALERT ( 7 )
#endif
;

struct negoex_NEGO_PAYLOAD {
	uint8_t random[32];/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */
	uint64_t protocol_version;/* [value(NEGOEX_PROTOCOL_VERSION_0)] */
	struct negoex_AUTH_SCHEME_VECTOR auth_schemes;
	struct negoex_EXTENSION_VECTOR extensions;
}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;

struct negoex_EXCHANGE_PAYLOAD {
	struct negoex_AUTH_SCHEME auth_scheme;
	struct negoex_BYTE_VECTOR exchange;
};

struct negoex_VERIFY_PAYLOAD {
	struct negoex_AUTH_SCHEME auth_scheme;
	struct negoex_CHECKSUM checksum;
};

struct negoex_ALERT_PAYLOAD {
	struct negoex_AUTH_SCHEME auth_scheme;
	NTSTATUS status;
	struct negoex_ALERT_VECTOR alerts;
};

union negoex_PAYLOAD {
	struct negoex_NEGO_PAYLOAD nego;/* [case(NEGOEX_MESSAGE_TYPE_INITIATOR_NEGO)] */
	struct negoex_EXCHANGE_PAYLOAD exchange;/* [case(NEGOEX_MESSAGE_TYPE_INITIATOR_META_DATA)] */
	struct negoex_VERIFY_PAYLOAD verify;/* [case(NEGOEX_MESSAGE_TYPE_VERIFY)] */
	struct negoex_ALERT_PAYLOAD alert;/* [case(NEGOEX_MESSAGE_TYPE_ALERT)] */
}/* [nodiscriminant,public] */;

struct negoex_MESSAGE {
	const char *signature;/* [charset(DOS),value("NEGOEXTS")] */
	enum negoex_MESSAGE_TYPE type;
	uint32_t sequence_number;
	uint32_t header_length;/* [value(ndr_negoex_MESSAGE_header_length(r))] */
	uint32_t message_length;/* [value(ndr_size_negoex_MESSAGE(r,ndr->flags))] */
	struct GUID conversation_id;
	union negoex_PAYLOAD p;/* [switch_is(type)] */
}/* [gensize,nopull,public,relative_base] */;

struct negoex_MESSAGE_ARRAY {
	uint32_t count;
	struct negoex_MESSAGE *messages;
}/* [flag(LIBNDR_FLAG_NOALIGN),nopull,nopush,public] */;

#endif /* _HEADER_negoex */
#endif /* _PIDL_HEADER_negoex */
