From 90925fbd3a313820c65f2e748527b3c32ce54e95 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 26 Jun 2008 11:57:37 +0200 Subject: drsuapi: add drsblobs.idl from samba4. Guenther (This used to be commit 58dc161ac91d018dfb02acac2aa2a45841478412) --- source3/librpc/idl/drsblobs.idl | 401 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 401 insertions(+) create mode 100644 source3/librpc/idl/drsblobs.idl (limited to 'source3/librpc/idl/drsblobs.idl') diff --git a/source3/librpc/idl/drsblobs.idl b/source3/librpc/idl/drsblobs.idl new file mode 100644 index 0000000000..03cd190580 --- /dev/null +++ b/source3/librpc/idl/drsblobs.idl @@ -0,0 +1,401 @@ +#include "idl_types.h" + +import "drsuapi.idl", "misc.idl"; + +[ + uuid("12345778-1234-abcd-0001-00000001"), + version(0.0), + pointer_default(unique), + helpstring("Active Directory Replication LDAP Blobs") +] +interface drsblobs { + typedef bitmap drsuapi_DsReplicaSyncOptions drsuapi_DsReplicaSyncOptions; + typedef bitmap drsuapi_DsReplicaNeighbourFlags drsuapi_DsReplicaNeighbourFlags; + typedef [v1_enum] enum drsuapi_DsAttributeId drsuapi_DsAttributeId; + + /* + * replPropertyMetaData + * w2k uses version 1 + * w2k3 uses version 1 + */ + typedef struct { + drsuapi_DsAttributeId attid; + uint32 version; + NTTIME_1sec originating_change_time; + GUID originating_invocation_id; + hyper originating_usn; + hyper local_usn; + } replPropertyMetaData1; + + typedef struct { + uint32 count; + uint32 reserved; + replPropertyMetaData1 array[count]; + } replPropertyMetaDataCtr1; + + typedef [nodiscriminant] union { + [case(1)] replPropertyMetaDataCtr1 ctr1; + } replPropertyMetaDataCtr; + + typedef [public] struct { + uint32 version; + uint32 reserved; + [switch_is(version)] replPropertyMetaDataCtr ctr; + } replPropertyMetaDataBlob; + + void decode_replPropertyMetaData( + [in] replPropertyMetaDataBlob blob + ); + + /* + * replUpToDateVector + * w2k uses version 1 + * w2k3 uses version 2 + */ + typedef struct { + uint32 count; + uint32 reserved; + drsuapi_DsReplicaCursor cursors[count]; + } replUpToDateVectorCtr1; + + typedef struct { + uint32 count; + uint32 reserved; + drsuapi_DsReplicaCursor2 cursors[count]; + } replUpToDateVectorCtr2; + + typedef [nodiscriminant] union { + [case(1)] replUpToDateVectorCtr1 ctr1; + [case(2)] replUpToDateVectorCtr2 ctr2; + } replUpToDateVectorCtr; + + typedef [public] struct { + uint32 version; + uint32 reserved; + [switch_is(version)] replUpToDateVectorCtr ctr; + } replUpToDateVectorBlob; + + void decode_replUpToDateVector( + [in] replUpToDateVectorBlob blob + ); + + /* + * repsFrom/repsTo + * w2k uses version 1 + * w2k3 uses version 1 + */ + typedef [public,gensize] struct { + [value(strlen(dns_name)+1)] uint32 __dns_name_size; + [charset(DOS)] uint8 dns_name[__dns_name_size]; + } repsFromTo1OtherInfo; + + typedef [public,gensize,flag(NDR_PAHEX)] struct { + /* this includes the 8 bytes of the repsFromToBlob header */ + [value(ndr_size_repsFromTo1(this, ndr->flags)+8)] uint32 blobsize; + uint32 consecutive_sync_failures; + NTTIME_1sec last_success; + NTTIME_1sec last_attempt; + WERROR result_last_attempt; + [relative] repsFromTo1OtherInfo *other_info; + [value(ndr_size_repsFromTo1OtherInfo(other_info, ndr->flags))] uint32 other_info_length; + drsuapi_DsReplicaNeighbourFlags replica_flags; + uint8 schedule[84]; + uint32 reserved; + drsuapi_DsReplicaHighWaterMark highwatermark; + GUID source_dsa_obj_guid; /* the 'objectGuid' field of the CN=NTDS Settings object */ + GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */ + GUID transport_guid; + } repsFromTo1; + + typedef [nodiscriminant] union { + [case(1)] repsFromTo1 ctr1; + } repsFromTo; + + typedef [public] struct { + uint32 version; + uint32 reserved; + [switch_is(version)] repsFromTo ctr; + } repsFromToBlob; + + void decode_repsFromTo( + [in] repsFromToBlob blob + ); + + /* + * partialAttributeSet + * w2k uses version 1 + * w2k3 uses version 1 + */ + typedef struct { + uint32 count; + drsuapi_DsAttributeId array[count]; + } partialAttributeSetCtr1; + + typedef [nodiscriminant] union { + [case(1)] partialAttributeSetCtr1 ctr1; + } partialAttributeSetCtr; + + typedef [public] struct { + uint32 version; + uint32 reserved; + [switch_is(version)] partialAttributeSetCtr ctr; + } partialAttributeSetBlob; + + void decode_partialAttributeSet( + [in] partialAttributeSetBlob blob + ); + + /* + * prefixMap + * w2k unknown + * w2k3 unknown + * samba4 uses 0x44534442 'DSDB' + * + * as we windows don't return the prefixMap attribute when you ask for + * we don't know the format, but the attribute is not replicated + * so that we can choose our own format... + */ + typedef [v1_enum] enum { + PREFIX_MAP_VERSION_DSDB = 0x44534442 + } prefixMapVersion; + + typedef [nodiscriminant] union { + [case(PREFIX_MAP_VERSION_DSDB)] drsuapi_DsReplicaOIDMapping_Ctr dsdb; + } prefixMapCtr; + + typedef [public] struct { + prefixMapVersion version; + uint32 reserved; + [switch_is(version)] prefixMapCtr ctr; + } prefixMapBlob; + + void decode_prefixMap( + [in] prefixMapBlob blob + ); + + /* + * the cookie for the LDAP dirsync control + */ + typedef [nodiscriminant,gensize] union { + [case(0)]; + [default] replUpToDateVectorBlob uptodateness_vector; + } ldapControlDirSyncExtra; + + typedef struct { + [value(3)] uint32 u1; + NTTIME time; + uint32 u2; + uint32 u3; + [value(ndr_size_ldapControlDirSyncExtra(&extra, extra.uptodateness_vector.version, 0))] + uint32 extra_length; + drsuapi_DsReplicaHighWaterMark highwatermark; + GUID guid1; + [switch_is(extra_length)] ldapControlDirSyncExtra extra; + } ldapControlDirSyncBlob; + + typedef [public,relative_base] struct { + [charset(DOS),value("MSDS")] uint8 msds[4]; + [subcontext(0)] ldapControlDirSyncBlob blob; + } ldapControlDirSyncCookie; + + void decode_ldapControlDirSync( + [in] ldapControlDirSyncCookie cookie + ); + + typedef struct { + [value(2*strlen_m(name))] uint16 name_len; + [value(strlen(data))] uint16 data_len; + uint16 unknown1; /* 2 for name = 'Packages', 1 for name = 'Primary:*' */ + [charset(UTF16)] uint8 name[name_len]; + /* + * the data field contains data as HEX strings + * + * 'Packages': + * data contains the list of packages + * as non termiated UTF16 strings with + * a UTF16 NULL byte as separator + * + * 'Primary:Kerberos': + * ... + * + * 'Primary:WDigest': + * ... + * + * 'Primary:CLEARTEXT': + * data contains the cleartext password + * as UTF16 string encoded as HEX string + */ + [charset(DOS)] uint8 data[data_len]; + } supplementalCredentialsPackage; + + /* this are 0x30 (48) whitespaces (0x20) followed by 'P' (0x50) */ + const string SUPPLEMENTAL_CREDENTIALS_PREFIX = " P"; + + typedef [gensize] struct { + [value(SUPPLEMENTAL_CREDENTIALS_PREFIX),charset(UTF16)] uint16 prefix[0x31]; + uint16 num_packages; + supplementalCredentialsPackage packages[num_packages]; + } supplementalCredentialsSubBlob; + + typedef [public] struct { + [value(0)] uint32 unknown1; + [value(ndr_size_supplementalCredentialsSubBlob(&sub, ndr->flags))] uint32 __ndr_size; + [value(0)] uint32 unknown2; + [subcontext(0),subcontext_size(__ndr_size)] supplementalCredentialsSubBlob sub; + [value(0)] uint8 unknown3; + } supplementalCredentialsBlob; + + void decode_supplementalCredentials( + [in] supplementalCredentialsBlob blob + ); + + typedef [public] struct { + [flag(STR_NOTERM|NDR_REMAINING)] string_array names; + } package_PackagesBlob; + + void decode_Packages( + [in] package_PackagesBlob blob + ); + + typedef struct { + [value(2*strlen_m(string))] uint16 length; + [value(2*strlen_m(string))] uint16 size; + [relative,subcontext(0),subcontext_size(size),flag(STR_NOTERM|NDR_REMAINING)] string *string; + } package_PrimaryKerberosString; + + typedef struct { + uint32 keytype; + [value((value?value->length:0))] uint32 value_len; + [relative,subcontext(0),subcontext_size(value_len),flag(NDR_REMAINING)] DATA_BLOB *value; + [value(0)] uint32 unknown1; + [value(0)] uint32 unknown2; + } package_PrimaryKerberosKey; + + typedef struct { + uint16 num_keys; + uint16 num_old_keys; + package_PrimaryKerberosString salt; + [value(0)] uint32 unknown1; + [value(0)] uint32 unknown2; + package_PrimaryKerberosKey keys[num_keys]; + package_PrimaryKerberosKey old_keys[num_old_keys]; + udlong unknown3[num_keys]; + udlong unknown3_old[num_old_keys]; + } package_PrimaryKerberosCtr3; + + typedef [nodiscriminant] union { + [case(3)] package_PrimaryKerberosCtr3 ctr3; + } package_PrimaryKerberosCtr; + + typedef [public] struct { + [value(3)] uint32 version; + [switch_is(version)] package_PrimaryKerberosCtr ctr; + } package_PrimaryKerberosBlob; + + void decode_PrimaryKerberos( + [in] package_PrimaryKerberosBlob blob + ); + + typedef [public] struct { + [flag(STR_NOTERM|NDR_REMAINING)] string cleartext; + } package_PrimaryCLEARTEXTBlob; + + void decode_PrimaryCLEARTEXT( + [in] package_PrimaryCLEARTEXTBlob blob + ); + + typedef [flag(NDR_PAHEX)] struct { + uint8 hash[16]; + } package_PrimaryWDigestHash; + + typedef [public] struct { + [value(0x31)] uint16 unknown1; + [value(0x01)] uint8 unknown2; + uint8 num_hashes; + [value(0)] uint32 unknown3; + [value(0)] udlong uuknown4; + package_PrimaryWDigestHash hashes[num_hashes]; + } package_PrimaryWDigestBlob; + + void decode_PrimaryWDigest( + [in] package_PrimaryWDigestBlob blob + ); + + typedef struct { + NTTIME time1; + uint32 unknown1; + /* + * the secret value is encoded as UTF16 if it's a string + * but krb5 trusts have random bytes here, so converting to UTF16 + * mayfail... + * + * TODO: We should try handle the case of a random buffer in all places + * we deal with cleartext passwords from windows + * + * so we don't use this: + * + * uint32 value_len; + * [charset(UTF16)] uint8 value[value_len]; + */ + DATA_BLOB value; + [flag(NDR_ALIGN4)] DATA_BLOB _pad; + } trustAuthInOutSecret1; + + typedef struct { + [relative] trustAuthInOutSecret1 *value1; + [relative] trustAuthInOutSecret1 *value2; + } trustAuthInOutCtr1; + + typedef struct { + NTTIME time1; + uint32 unknown1; + DATA_BLOB value; + NTTIME time2; + uint32 unknown2; + uint32 unknown3; + uint32 unknown4; + [flag(NDR_ALIGN4)] DATA_BLOB _pad; + } trustAuthInOutSecret2V1; + + typedef struct { + NTTIME time1; + uint32 unknown1; + DATA_BLOB value; + NTTIME time2; + uint32 unknown2; + uint32 unknown3; + [flag(NDR_ALIGN4)] DATA_BLOB _pad; + } trustAuthInOutSecret2V2; + + typedef struct { + [relative] trustAuthInOutSecret2V1 *value1; + [relative] trustAuthInOutSecret2V2 *value2; + } trustAuthInOutCtr2; + + typedef [nodiscriminant] union { + [case(1)] trustAuthInOutCtr1 ctr1; + [case(2)] trustAuthInOutCtr2 ctr2; + } trustAuthInOutCtr; + + typedef [public] struct { + uint32 version; + [switch_is(version)] trustAuthInOutCtr ctr; + } trustAuthInOutBlob; + + void decode_trustAuthInOut( + [in] trustAuthInOutBlob blob + ); + + typedef [public] struct { + uint32 marker; + DATA_BLOB data; + } DsCompressedChunk; + + typedef [public] struct { + DsCompressedChunk chunks[5]; + } DsCompressedBlob; + + void decode_DsCompressed( + [in] DsCompressedBlob blob + ); +} -- cgit From 813048630ed05d15479b6b5c7eecaaa212dbeedf Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 23 Jul 2008 13:53:03 +0200 Subject: drsblobs.idl: rename unknown1 -> reserved metze (This used to be commit fb0379aede4665987679c2e1b5ae943f124804b6) --- source3/librpc/idl/drsblobs.idl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3/librpc/idl/drsblobs.idl') diff --git a/source3/librpc/idl/drsblobs.idl b/source3/librpc/idl/drsblobs.idl index 03cd190580..7962ef977c 100644 --- a/source3/librpc/idl/drsblobs.idl +++ b/source3/librpc/idl/drsblobs.idl @@ -205,7 +205,7 @@ interface drsblobs { typedef struct { [value(2*strlen_m(name))] uint16 name_len; [value(strlen(data))] uint16 data_len; - uint16 unknown1; /* 2 for name = 'Packages', 1 for name = 'Primary:*' */ + uint16 reserved; /* 2 for 'Packages', 1 for 'Primary:*', but should be ignored */ [charset(UTF16)] uint8 name[name_len]; /* * the data field contains data as HEX strings -- cgit From 904d6528dc6854297981d3bd9a5ea0dba2dab55b Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 23 Jul 2008 13:06:32 +0200 Subject: drsblobs.idl: fix idl for supplementalCredentialsSubBlob metze (cherry picked from commit 24c5b10136f6e640832193aaf9e6d7e865c288bc) (This used to be commit 38aca9c11783daf30e19b4951451ec9a6b85cd30) --- source3/librpc/idl/drsblobs.idl | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'source3/librpc/idl/drsblobs.idl') diff --git a/source3/librpc/idl/drsblobs.idl b/source3/librpc/idl/drsblobs.idl index 7962ef977c..e8df071bef 100644 --- a/source3/librpc/idl/drsblobs.idl +++ b/source3/librpc/idl/drsblobs.idl @@ -228,11 +228,16 @@ interface drsblobs { [charset(DOS)] uint8 data[data_len]; } supplementalCredentialsPackage; - /* this are 0x30 (48) whitespaces (0x20) followed by 'P' (0x50) */ - const string SUPPLEMENTAL_CREDENTIALS_PREFIX = " P"; + /* this are 0x30 (48) whitespaces (0x20) */ + const string SUPPLEMENTAL_CREDENTIALS_PREFIX = " "; + + typedef [flag(NDR_PAHEX)] enum { + SUPPLEMENTAL_CREDENTIALS_SIGNATURE = 0x0050 + } supplementalCredentialsSignature; typedef [gensize] struct { - [value(SUPPLEMENTAL_CREDENTIALS_PREFIX),charset(UTF16)] uint16 prefix[0x31]; + [value(SUPPLEMENTAL_CREDENTIALS_PREFIX),charset(UTF16)] uint16 prefix[0x30]; + [value(SUPPLEMENTAL_CREDENTIALS_SIGNATURE)] supplementalCredentialsSignature signature; uint16 num_packages; supplementalCredentialsPackage packages[num_packages]; } supplementalCredentialsSubBlob; -- cgit From 2951590a6873eea366353308b17ca6992c7b7e0a Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 23 Jul 2008 08:53:34 +0200 Subject: drsblobs.idl: fix unknowns in package_PrimaryKerberos idl metze (cherry picked from commit da9ceb2bf17f964334d9317829d40483e2c04b10) (This used to be commit 5459745369092a4d48fee18fb1be53f195405370) --- source3/librpc/idl/drsblobs.idl | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'source3/librpc/idl/drsblobs.idl') diff --git a/source3/librpc/idl/drsblobs.idl b/source3/librpc/idl/drsblobs.idl index e8df071bef..b6d444ff0d 100644 --- a/source3/librpc/idl/drsblobs.idl +++ b/source3/librpc/idl/drsblobs.idl @@ -269,23 +269,25 @@ interface drsblobs { } package_PrimaryKerberosString; typedef struct { + [value(0)] uint16 reserved1; + [value(0)] uint16 reserved2; + [value(0)] uint32 reserved3; uint32 keytype; [value((value?value->length:0))] uint32 value_len; [relative,subcontext(0),subcontext_size(value_len),flag(NDR_REMAINING)] DATA_BLOB *value; - [value(0)] uint32 unknown1; - [value(0)] uint32 unknown2; } package_PrimaryKerberosKey; typedef struct { uint16 num_keys; uint16 num_old_keys; package_PrimaryKerberosString salt; - [value(0)] uint32 unknown1; - [value(0)] uint32 unknown2; package_PrimaryKerberosKey keys[num_keys]; package_PrimaryKerberosKey old_keys[num_old_keys]; - udlong unknown3[num_keys]; - udlong unknown3_old[num_old_keys]; + [value(0)] uint32 padding1; + [value(0)] uint32 padding2; + [value(0)] uint32 padding3; + [value(0)] uint32 padding4; + [value(0)] uint32 padding5; } package_PrimaryKerberosCtr3; typedef [nodiscriminant] union { -- cgit From ae7bae6147c3fa49c9e600e67177944b3eb37797 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 22 Jul 2008 12:28:07 +0200 Subject: drsblobs.idl: add idl for Primary:Kerberos-Newer-Keys blob in supplementalCredentials metze (cherry picked from commit 97b7901afbccc9647ad2958d4cf12300de2655d1) (This used to be commit 5db983d1538453f0ba35d67a099396a18c7ab736) --- source3/librpc/idl/drsblobs.idl | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'source3/librpc/idl/drsblobs.idl') diff --git a/source3/librpc/idl/drsblobs.idl b/source3/librpc/idl/drsblobs.idl index b6d444ff0d..2d82976f4d 100644 --- a/source3/librpc/idl/drsblobs.idl +++ b/source3/librpc/idl/drsblobs.idl @@ -215,6 +215,9 @@ interface drsblobs { * as non termiated UTF16 strings with * a UTF16 NULL byte as separator * + * 'Primary:Kerberos-Newer-Keys': + * ... + * * 'Primary:Kerberos': * ... * @@ -303,6 +306,40 @@ interface drsblobs { [in] package_PrimaryKerberosBlob blob ); + typedef struct { + [value(0)] uint32 unknown1; + [value(0)] uint32 unknown2; + [value(0x00001000)] uint32 unknown3; /* could the the iterator for the AES key creation */ + uint32 keytype; + [value((value?value->length:0))] uint32 value_len; + [relative,subcontext(0),subcontext_size(value_len),flag(NDR_REMAINING)] DATA_BLOB *value; + } package_PrimaryKerberosNewerKey; + + typedef struct { + uint16 num_keys; + [value(0)] uint16 unknown1; + uint16 num_old_keys1; + uint16 num_old_keys2; + package_PrimaryKerberosString salt; + [value(0x00001000)] uint32 unknown2; /* could the the iterator for the AES key creation */ + package_PrimaryKerberosNewerKey keys[num_keys]; + package_PrimaryKerberosNewerKey old_keys1[num_old_keys1]; + package_PrimaryKerberosNewerKey old_keys2[num_old_keys2]; + } package_PrimaryKerberosNewerCtr4; + + typedef [nodiscriminant] union { + [case(4)] package_PrimaryKerberosNewerCtr4 ctr4; + } package_PrimaryKerberosNewerCtr; + + typedef [public] struct { + [value(4)] uint32 version; + [switch_is(version)] package_PrimaryKerberosNewerCtr ctr; + } package_PrimaryKerberosNewerBlob; + + void decode_PrimaryKerberosNewer( + [in] package_PrimaryKerberosNewerBlob blob + ); + typedef [public] struct { [flag(STR_NOTERM|NDR_REMAINING)] string cleartext; } package_PrimaryCLEARTEXTBlob; -- cgit From ced176a0ad3eb472ac4fb2483d2e48a73b878e12 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 24 Jul 2008 07:53:55 +0200 Subject: drsblobs.idl: give some unknowns a meaning metze (cherry picked from commit 231e6f5ab2dc8a3e991a9872be252cffff6f14c6) (This used to be commit 67de7455b66b6c6c959e5e4ca1b8d97e2f4cf71d) --- source3/librpc/idl/drsblobs.idl | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'source3/librpc/idl/drsblobs.idl') diff --git a/source3/librpc/idl/drsblobs.idl b/source3/librpc/idl/drsblobs.idl index 2d82976f4d..ed49c757c4 100644 --- a/source3/librpc/idl/drsblobs.idl +++ b/source3/librpc/idl/drsblobs.idl @@ -307,9 +307,10 @@ interface drsblobs { ); typedef struct { - [value(0)] uint32 unknown1; - [value(0)] uint32 unknown2; - [value(0x00001000)] uint32 unknown3; /* could the the iterator for the AES key creation */ + [value(0)] uint16 reserved1; + [value(0)] uint16 reserved2; + [value(0)] uint32 reserved3; + uint32 iteration_count; uint32 keytype; [value((value?value->length:0))] uint32 value_len; [relative,subcontext(0),subcontext_size(value_len),flag(NDR_REMAINING)] DATA_BLOB *value; @@ -317,14 +318,15 @@ interface drsblobs { typedef struct { uint16 num_keys; - [value(0)] uint16 unknown1; - uint16 num_old_keys1; - uint16 num_old_keys2; + [value(0)] uint16 num_service_keys; + uint16 num_old_keys; + uint16 num_older_keys; package_PrimaryKerberosString salt; - [value(0x00001000)] uint32 unknown2; /* could the the iterator for the AES key creation */ + uint32 default_iteration_count; package_PrimaryKerberosNewerKey keys[num_keys]; - package_PrimaryKerberosNewerKey old_keys1[num_old_keys1]; - package_PrimaryKerberosNewerKey old_keys2[num_old_keys2]; + package_PrimaryKerberosNewerKey service_keys[num_service_keys]; + package_PrimaryKerberosNewerKey old_keys[num_old_keys]; + package_PrimaryKerberosNewerKey older_keys[num_older_keys]; } package_PrimaryKerberosNewerCtr4; typedef [nodiscriminant] union { -- cgit From ace141e4880cae2541e25ee16fc8088deb826886 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 24 Jul 2008 08:20:06 +0200 Subject: drsblobs.idl: unify the Primary:Kerberos and Primary:Kerberos-Newer-Keys structs metze (cherry picked from commit 4b79a7678571ac2f7d5f827913fdcb419f5d2e20) (This used to be commit e8ae49fc2aadfeee696ad7fde1fee643e167537c) --- source3/librpc/idl/drsblobs.idl | 47 ++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 29 deletions(-) (limited to 'source3/librpc/idl/drsblobs.idl') diff --git a/source3/librpc/idl/drsblobs.idl b/source3/librpc/idl/drsblobs.idl index ed49c757c4..6fdca0ec43 100644 --- a/source3/librpc/idl/drsblobs.idl +++ b/source3/librpc/idl/drsblobs.idl @@ -278,14 +278,14 @@ interface drsblobs { uint32 keytype; [value((value?value->length:0))] uint32 value_len; [relative,subcontext(0),subcontext_size(value_len),flag(NDR_REMAINING)] DATA_BLOB *value; - } package_PrimaryKerberosKey; + } package_PrimaryKerberosKey3; typedef struct { uint16 num_keys; uint16 num_old_keys; package_PrimaryKerberosString salt; - package_PrimaryKerberosKey keys[num_keys]; - package_PrimaryKerberosKey old_keys[num_old_keys]; + package_PrimaryKerberosKey3 keys[num_keys]; + package_PrimaryKerberosKey3 old_keys[num_old_keys]; [value(0)] uint32 padding1; [value(0)] uint32 padding2; [value(0)] uint32 padding3; @@ -293,19 +293,6 @@ interface drsblobs { [value(0)] uint32 padding5; } package_PrimaryKerberosCtr3; - typedef [nodiscriminant] union { - [case(3)] package_PrimaryKerberosCtr3 ctr3; - } package_PrimaryKerberosCtr; - - typedef [public] struct { - [value(3)] uint32 version; - [switch_is(version)] package_PrimaryKerberosCtr ctr; - } package_PrimaryKerberosBlob; - - void decode_PrimaryKerberos( - [in] package_PrimaryKerberosBlob blob - ); - typedef struct { [value(0)] uint16 reserved1; [value(0)] uint16 reserved2; @@ -314,7 +301,7 @@ interface drsblobs { uint32 keytype; [value((value?value->length:0))] uint32 value_len; [relative,subcontext(0),subcontext_size(value_len),flag(NDR_REMAINING)] DATA_BLOB *value; - } package_PrimaryKerberosNewerKey; + } package_PrimaryKerberosKey4; typedef struct { uint16 num_keys; @@ -323,23 +310,25 @@ interface drsblobs { uint16 num_older_keys; package_PrimaryKerberosString salt; uint32 default_iteration_count; - package_PrimaryKerberosNewerKey keys[num_keys]; - package_PrimaryKerberosNewerKey service_keys[num_service_keys]; - package_PrimaryKerberosNewerKey old_keys[num_old_keys]; - package_PrimaryKerberosNewerKey older_keys[num_older_keys]; - } package_PrimaryKerberosNewerCtr4; + package_PrimaryKerberosKey4 keys[num_keys]; + package_PrimaryKerberosKey4 service_keys[num_service_keys]; + package_PrimaryKerberosKey4 old_keys[num_old_keys]; + package_PrimaryKerberosKey4 older_keys[num_older_keys]; + } package_PrimaryKerberosCtr4; typedef [nodiscriminant] union { - [case(4)] package_PrimaryKerberosNewerCtr4 ctr4; - } package_PrimaryKerberosNewerCtr; + [case(3)] package_PrimaryKerberosCtr3 ctr3; + [case(4)] package_PrimaryKerberosCtr4 ctr4; + } package_PrimaryKerberosCtr; typedef [public] struct { - [value(4)] uint32 version; - [switch_is(version)] package_PrimaryKerberosNewerCtr ctr; - } package_PrimaryKerberosNewerBlob; + uint16 version; + [value(0)] uint16 flags; + [switch_is(version)] package_PrimaryKerberosCtr ctr; + } package_PrimaryKerberosBlob; - void decode_PrimaryKerberosNewer( - [in] package_PrimaryKerberosNewerBlob blob + void decode_PrimaryKerberos( + [in] package_PrimaryKerberosBlob blob ); typedef [public] struct { -- cgit