summaryrefslogtreecommitdiff
path: root/source4/librpc/idl/drsblobs.idl
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2007-02-14 11:28:20 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:48:13 -0500
commit9c21efd9d624a443cee9eeec1aef3cb52f1e370f (patch)
tree18bfdfef5c6b96f4667d37b44a825b065325c88d /source4/librpc/idl/drsblobs.idl
parentbe8a93a1d8efd6766729f0800721b756b050aa13 (diff)
downloadsamba-9c21efd9d624a443cee9eeec1aef3cb52f1e370f.tar.gz
samba-9c21efd9d624a443cee9eeec1aef3cb52f1e370f.tar.bz2
samba-9c21efd9d624a443cee9eeec1aef3cb52f1e370f.zip
r21329: complete support for parsing the supplementalCredentials value
the package specific data is present as hex string, we'll need to add parsers for each package later. metze (This used to be commit 6a725ae2610ba3d8f95782f90745593d436a4786)
Diffstat (limited to 'source4/librpc/idl/drsblobs.idl')
-rw-r--r--source4/librpc/idl/drsblobs.idl39
1 files changed, 30 insertions, 9 deletions
diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl
index 216506be5c..9ee1b467f6 100644
--- a/source4/librpc/idl/drsblobs.idl
+++ b/source4/librpc/idl/drsblobs.idl
@@ -201,25 +201,46 @@ interface drsblobs {
[in] ldapControlDirSyncCookie cookie
);
- typedef [public] struct {
+ typedef struct {
uint16 name_len;
uint16 data_len;
- uint16 id;
+ uint16 unknown1; /* 2 for name = 'Packages', 1 for name = 'Primary:*' */
[charset(UTF16)] uint8 name[name_len];
- uint8 data[data_len];
+ /*
+ * the data field contains data as HEX strings
+ *
+ * 'Packages':
+ * it seems to contains HEX strings
+ * of GUID's concatenated together.
+ * w2k only has 'Primary:Kerberos'
+ * and there's a 32 byte hex string.
+ * w2k3 also has 'Primary:WDigest'
+ * and there's a 64 byte hex string.
+ *
+ * 'Primary:Kerberos':
+ * ...
+ *
+ * 'Primary:WDigest':
+ * ...
+ */
+ [charset(DOS)] uint8 data[data_len];
} supplementalCredentialsPackage;
- typedef [public] struct {
- uint32 unknown1;
- [charset(UTF16)] uint16 unknown2[0x30];
- uint16 unknown3;
+ /* this are 0x30 (48) whitespaces (0x20) followed by 'P' (0x50) */
+ const string SUPPLEMENTAL_CREDENTIALS_PREFIX = " P";
+
+ typedef struct {
+ [value(SUPPLEMENTAL_CREDENTIALS_PREFIX),charset(UTF16)] uint16 prefix[0x31];
uint16 num_packages;
supplementalCredentialsPackage packages[num_packages];
} supplementalCredentialsSubBlob;
typedef [public] struct {
- [value(0)] uint32 version;
- [subcontext(4)] supplementalCredentialsSubBlob sub;
+ [value(0)] uint32 unknown1;
+ uint32 __ndr_size;
+ [value(0)] uint32 unknown2;
+ [subcontext(0),subcontext_size(__ndr_size)] supplementalCredentialsSubBlob sub;
+ [value(0)] uint8 unknown3;
} supplementalCredentialsBlob;
void decode_supplementalCredentials(