1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00
samba-mirror/librpc/idl/negoex.idl
Stefan Metzmacher bf1fa9e080 negoex.idl: use DATA_BLOB for negoex_BYTE_VECTOR
That's much easier for the callers.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>

Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Fri Dec 18 04:07:56 CET 2015 on sn-devel-144
2015-12-18 04:07:56 +01:00

157 lines
4.1 KiB
Plaintext

#include "idl_types.h"
/*
NEGOEX interface definition
See http://ietfreport.isoc.org/all-ids/draft-zhu-negoex-04.txt
*/
import "misc.idl";
[
uuid("fcc30ddc-98d0-11e5-8a56-83e9a6706f2f"),
helper("../librpc/ndr/ndr_negoex.h"),
helpstring("NEGOEX messages")
]
interface negoex
{
typedef [nopush,nopull,noprint] struct {
#if 0
[relative,size_is(length)] uint8 *data;
uint32 length;
#else
DATA_BLOB blob;
/*
* internal helper variable */
uint32 _length;
/*
* the dummy pointer is needed in order to let the
* callers use NDR_BUFFERS
*/
[relative] uint8 *_dummy;
#endif
} negoex_BYTE_VECTOR;
typedef [public] struct {
GUID guid;
} negoex_AUTH_SCHEME;
typedef [nopush,nopull] struct {
[relative,size_is(count)] negoex_AUTH_SCHEME *array;
uint32 count;
} negoex_AUTH_SCHEME_VECTOR;
typedef [v1_enum] enum {
NEGOEX_EXTENSION_TYPE_TODO = 0 /* TODO */
} negoex_ExtensionTypes;
typedef [public] struct {
negoex_ExtensionTypes type;
negoex_BYTE_VECTOR value;
} negoex_EXTENSION;
typedef [nopush,nopull] struct {
[relative,size_is(count)] negoex_EXTENSION *array;
uint32 count;
} negoex_EXTENSION_VECTOR;
typedef [v1_enum] enum {
NEGOEX_CHECKSUM_SCHEME_RFC3961 = 1
} negoex_ChecksumSchemes;
typedef struct {
[value(20)] uint32 header_length;
negoex_ChecksumSchemes scheme;
uint32 type;
negoex_BYTE_VECTOR value;
} negoex_CHECKSUM;
typedef [v1_enum] enum {
NEGOEX_ALERT_VERIFY_NO_KEY = 1
} negoex_AlertReason;
typedef [public] struct {
[value(4)] uint32 header_length; /* TODO: is 4 correct? */
negoex_AlertReason reason;
} negoex_ALERT_PULSE;
typedef [v1_enum] enum {
NEGOEX_ALERT_TYPE_PULSE = 1
} negoex_AlertTypes;
typedef [public] struct {
negoex_AlertTypes type;
negoex_BYTE_VECTOR value;
} negoex_ALERT;
typedef [nopush,nopull] struct {
[relative,size_is(count)] negoex_ALERT *array;
uint32 count;
} negoex_ALERT_VECTOR;
typedef [public,v1_enum] enum {
NEGOEX_MESSAGE_TYPE_INITIATOR_NEGO = 0,
NEGOEX_MESSAGE_TYPE_ACCEPTOR_NEGO = 1,
NEGOEX_MESSAGE_TYPE_INITIATOR_META_DATA = 2,
NEGOEX_MESSAGE_TYPE_ACCEPTOR_META_DATA = 3,
NEGOEX_MESSAGE_TYPE_CHALLENGE = 4,
NEGOEX_MESSAGE_TYPE_AP_REQUEST = 5,
NEGOEX_MESSAGE_TYPE_VERIFY = 6,
NEGOEX_MESSAGE_TYPE_ALERT = 7
} negoex_MESSAGE_TYPE;
const uint32 NEGOEX_PROTOCOL_VERSION_0 = 0;
typedef [flag(NDR_PAHEX)] struct {
[flag(NDR_PAHEX)] uint8 random[32];
[value(NEGOEX_PROTOCOL_VERSION_0)] udlong protocol_version;
negoex_AUTH_SCHEME_VECTOR auth_schemes;
negoex_EXTENSION_VECTOR extensions;
} negoex_NEGO_PAYLOAD;
typedef struct {
negoex_AUTH_SCHEME auth_scheme;
negoex_BYTE_VECTOR exchange;
} negoex_EXCHANGE_PAYLOAD;
typedef struct {
negoex_AUTH_SCHEME auth_scheme;
negoex_CHECKSUM checksum;
} negoex_VERIFY_PAYLOAD;
typedef struct {
negoex_AUTH_SCHEME auth_scheme;
NTSTATUS status;
negoex_ALERT_VECTOR alerts;
} negoex_ALERT_PAYLOAD;
typedef [public,nodiscriminant] union {
[case(NEGOEX_MESSAGE_TYPE_INITIATOR_NEGO)] negoex_NEGO_PAYLOAD nego;
[case(NEGOEX_MESSAGE_TYPE_ACCEPTOR_NEGO)] negoex_NEGO_PAYLOAD nego;
[case(NEGOEX_MESSAGE_TYPE_INITIATOR_META_DATA)] negoex_EXCHANGE_PAYLOAD exchange;
[case(NEGOEX_MESSAGE_TYPE_ACCEPTOR_META_DATA)] negoex_EXCHANGE_PAYLOAD exchange;
[case(NEGOEX_MESSAGE_TYPE_CHALLENGE)] negoex_EXCHANGE_PAYLOAD exchange;
[case(NEGOEX_MESSAGE_TYPE_AP_REQUEST)] negoex_EXCHANGE_PAYLOAD exchange;
[case(NEGOEX_MESSAGE_TYPE_VERIFY)] negoex_VERIFY_PAYLOAD verify;
[case(NEGOEX_MESSAGE_TYPE_ALERT)] negoex_ALERT_PAYLOAD alert;
} negoex_PAYLOAD;
typedef [public,relative_base,gensize,nopull] struct {
[charset(DOS),value("NEGOEXTS")] uint8 signature[8];
negoex_MESSAGE_TYPE type;
uint32 sequence_number;
[value(ndr_negoex_MESSAGE_header_length(r))] uint32 header_length;
[value(ndr_size_negoex_MESSAGE(r, ndr->flags))] uint32 message_length;
GUID conversation_id;
[switch_is(type)] negoex_PAYLOAD p;
} negoex_MESSAGE;
typedef [public,nopush,nopull,flag(NDR_NOALIGN)] struct {
uint32 count;
negoex_MESSAGE messages[count];
} negoex_MESSAGE_ARRAY;
void decode_negoex_MESSAGE(
[in] negoex_MESSAGE_ARRAY array
);
}