From 2abe5e9240af3970f0f06a492bb520a569cd77b0 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Tue, 22 Jul 2008 11:37:32 +0200 Subject: drsuapi.idl: add drsuapi_DsBindInfo48. This is necessary to make DsGetNcChanges work with win2008. Michael (This used to be commit dd278b069b8683a0e3721ebb7d0de06d2bc1c86f) --- source4/librpc/idl/drsuapi.idl | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/drsuapi.idl b/source4/librpc/idl/drsuapi.idl index b9cff5d11d..c0d82babc4 100644 --- a/source4/librpc/idl/drsuapi.idl +++ b/source4/librpc/idl/drsuapi.idl @@ -73,6 +73,15 @@ interface drsuapi uint32 repl_epoch; } drsuapi_DsBindInfo28; + /* this is used by w2k8 */ + typedef struct { + drsuapi_SupportedExtensions supported_extensions; + GUID site_guid; + uint32 u1; + uint32 repl_epoch; + uint32 unknown[5]; + } drsuapi_DsBindInfo48; + typedef struct { [flag(NDR_REMAINING)] DATA_BLOB info; } drsuapi_DsBindInfoFallBack; @@ -80,6 +89,7 @@ interface drsuapi typedef [nodiscriminant] union { [case(24)][subcontext(4)] drsuapi_DsBindInfo24 info24; [case(28)][subcontext(4)] drsuapi_DsBindInfo28 info28; + [case(48)][subcontext(4)] drsuapi_DsBindInfo48 info48; [default][subcontext(4)] drsuapi_DsBindInfoFallBack FallBack; } drsuapi_DsBindInfo; -- cgit From e7785a371a1881eb1ad5ee6cf8d2de2b4537fa39 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Tue, 22 Jul 2008 12:46:04 +0200 Subject: drsuapi.idl: the last 16 bytes in DsBindInfo48 ar the GUID of the config dn. This bit seems not to be documented in the WSPP docs. Michael (This used to be commit 705f79bd0a5e93daa0cb11b5dcca36e75c75df93) --- source4/librpc/idl/drsuapi.idl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/drsuapi.idl b/source4/librpc/idl/drsuapi.idl index c0d82babc4..96cb56ba3d 100644 --- a/source4/librpc/idl/drsuapi.idl +++ b/source4/librpc/idl/drsuapi.idl @@ -79,7 +79,8 @@ interface drsuapi GUID site_guid; uint32 u1; uint32 repl_epoch; - uint32 unknown[5]; + uint32 unknown; + GUID config_dn_guid; } drsuapi_DsBindInfo48; typedef struct { -- cgit From 901e764fa75030c22e4bda37e384dc074bcceb08 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Tue, 22 Jul 2008 13:07:55 +0200 Subject: drsuapi.idl: add drsuapi_SupportedExtensionsExt bitfield. This knowledge is obtained from the wspp-docs (section 5.35). Michael (This used to be commit f5afb695045b1a2f3b8c00a4d82d40e8e50726c9) --- source4/librpc/idl/drsuapi.idl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/drsuapi.idl b/source4/librpc/idl/drsuapi.idl index 96cb56ba3d..ee1f5c8139 100644 --- a/source4/librpc/idl/drsuapi.idl +++ b/source4/librpc/idl/drsuapi.idl @@ -58,6 +58,11 @@ interface drsuapi DRSUAPI_SUPPORTED_EXTENSION_80000000 = 0x80000000 } drsuapi_SupportedExtensions; + typedef [bitmap32bit] bitmap { + DRSUAPI_SUPPORTED_EXTENSION_ADAM = 0x00000001, + DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2 = 0x00000002 + } drsuapi_SupportedExtensionsExt; + /* this is used by w2k */ typedef struct { drsuapi_SupportedExtensions supported_extensions; @@ -79,7 +84,7 @@ interface drsuapi GUID site_guid; uint32 u1; uint32 repl_epoch; - uint32 unknown; + drsuapi_SupportedExtensionsExt supported_extensions_ext; GUID config_dn_guid; } drsuapi_DsBindInfo48; -- cgit From e184b70768881ed9a4e957de630047ca292bc96e Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Tue, 22 Jul 2008 15:33:26 +0200 Subject: drsuapi.idl: change the u1 field in DsBindInfo* to "pid". According to the WSPP docs, section 5.35, this is the "process identifyer" of the client. It is meant for informational and debugging purposes only and its assignment is implementation specific. Michael (This used to be commit 579306eb5b58b6c1142b3c489e4bcf6da50810d6) --- source4/librpc/idl/drsuapi.idl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/drsuapi.idl b/source4/librpc/idl/drsuapi.idl index ee1f5c8139..c19da4fa19 100644 --- a/source4/librpc/idl/drsuapi.idl +++ b/source4/librpc/idl/drsuapi.idl @@ -67,14 +67,14 @@ interface drsuapi typedef struct { drsuapi_SupportedExtensions supported_extensions; GUID site_guid; - uint32 u1; + uint32 pid; } drsuapi_DsBindInfo24; /* this is used by w2k3 */ typedef struct { drsuapi_SupportedExtensions supported_extensions; GUID site_guid; - uint32 u1; + uint32 pid; uint32 repl_epoch; } drsuapi_DsBindInfo28; @@ -82,7 +82,7 @@ interface drsuapi typedef struct { drsuapi_SupportedExtensions supported_extensions; GUID site_guid; - uint32 u1; + uint32 pid; uint32 repl_epoch; drsuapi_SupportedExtensionsExt supported_extensions_ext; GUID config_dn_guid; @@ -1425,7 +1425,7 @@ interface drsuapi GUID bind_guid; NTTIME_1sec bind_time; [flag(NDR_BIG_ENDIAN)] ipv4address client_ip_address; - uint32 u5; /* this is the same value the client used as u1 in the DsBindInfoX struct */ + uint32 u5; /* this is the same value the client used as pid in the DsBindInfoX struct */ } drsuapi_DsReplicaConnection04; typedef struct { -- cgit From bb12c78d44f005bad9524af86ce9a1b2b98f16ad 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 9a70b2237d4fdd523edfbca0329ad35e71faf998) --- source4/librpc/idl/drsblobs.idl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl index f8cbdac8c5..2f9819a10c 100644 --- a/source4/librpc/idl/drsblobs.idl +++ b/source4/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 ecdd13389fd1b262024fe663a57da11f8a84e239 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 (This used to be commit 24c5b10136f6e640832193aaf9e6d7e865c288bc) --- source4/librpc/idl/drsblobs.idl | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl index 2f9819a10c..4829952cf8 100644 --- a/source4/librpc/idl/drsblobs.idl +++ b/source4/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 e3434f8995ef834a1b8f452060544862b2a9642b 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 (This used to be commit da9ceb2bf17f964334d9317829d40483e2c04b10) --- source4/librpc/idl/drsblobs.idl | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl index 4829952cf8..ec29c2732d 100644 --- a/source4/librpc/idl/drsblobs.idl +++ b/source4/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 28a7e6f125070f288a9ca191ed7110f81891dc09 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 (This used to be commit 97b7901afbccc9647ad2958d4cf12300de2655d1) --- source4/librpc/idl/drsblobs.idl | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl index ec29c2732d..c876ae7fed 100644 --- a/source4/librpc/idl/drsblobs.idl +++ b/source4/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 aaa29d2fa534f992aadbddad4232422a8ac28d74 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 (This used to be commit 231e6f5ab2dc8a3e991a9872be252cffff6f14c6) --- source4/librpc/idl/drsblobs.idl | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl index c876ae7fed..b0c93712b6 100644 --- a/source4/librpc/idl/drsblobs.idl +++ b/source4/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 8a86e3cb4515ffe66bf833aea2b05f2d2b603800 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 (This used to be commit 4b79a7678571ac2f7d5f827913fdcb419f5d2e20) --- source4/librpc/idl/drsblobs.idl | 47 ++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 29 deletions(-) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl index b0c93712b6..adfc010237 100644 --- a/source4/librpc/idl/drsblobs.idl +++ b/source4/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 From 7a633ed96b610d0d2d4e019a098c3a5da6784c23 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 25 Jul 2008 21:26:28 +0200 Subject: dcerpc.idl: add DCERPC_PFC_FLAG_SUPPORT_HEADER_SIGN flag metze (This used to be commit 131a1cfdc9a1228d9263c77bcd31b05d2946fd50) --- source4/librpc/idl/dcerpc.idl | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/dcerpc.idl b/source4/librpc/idl/dcerpc.idl index 57028ffcbf..e54bc2c29f 100644 --- a/source4/librpc/idl/dcerpc.idl +++ b/source4/librpc/idl/dcerpc.idl @@ -253,6 +253,7 @@ interface dcerpc const uint8 DCERPC_PFC_FLAG_FIRST = 0x01; /* First fragment */ const uint8 DCERPC_PFC_FLAG_LAST = 0x02; /* Last fragment */ const uint8 DCERPC_PFC_FLAG_PENDING_CANCEL = 0x04; /* Cancel was pending at sender */ + const uint8 DCERPC_PFC_FLAG_SUPPORT_HEADER_SIGN = DCERPC_PFC_FLAG_PENDING_CANCEL; /* depends on the pdu type */ const uint8 DCERPC_PFC_FLAG_CONC_MPX = 0x10; /* supports concurrent multiplexing of a single connection. */ const uint8 DCERPC_PFC_FLAG_DID_NOT_EXECUTE = 0x20; /* on a fault it means the server hasn't done anything */ const uint8 DCERPC_PFC_FLAG_MAYBE = 0x40; /* `maybe' call semantics requested */ -- cgit