summaryrefslogtreecommitdiff
path: root/source3/librpc/idl
diff options
context:
space:
mode:
authorSteve French <stevef@smf-t60p.smfdom>2008-07-24 09:35:20 -0500
committerSteve French <stevef@smf-t60p.smfdom>2008-07-24 09:35:20 -0500
commit890361db59ec293860fe2af7aaf7bdac0b7c03cb (patch)
tree58c11abc756ef22df05cac63022362f2837988e0 /source3/librpc/idl
parent0732750497dabb441e4657093c329f829d91d58c (diff)
parent8ea3ce5342f7ddcc0e36ff0b17d75ed74bdb6ce4 (diff)
downloadsamba-890361db59ec293860fe2af7aaf7bdac0b7c03cb.tar.gz
samba-890361db59ec293860fe2af7aaf7bdac0b7c03cb.tar.bz2
samba-890361db59ec293860fe2af7aaf7bdac0b7c03cb.zip
Merge branch 'v3-3-test' of git+ssh://sfrench@git.samba.org/data/git/samba into v33
(This used to be commit 22afe367fef35d4262d960973933023a0a5ce77d)
Diffstat (limited to 'source3/librpc/idl')
-rw-r--r--source3/librpc/idl/drsblobs.idl64
1 files changed, 54 insertions, 10 deletions
diff --git a/source3/librpc/idl/drsblobs.idl b/source3/librpc/idl/drsblobs.idl
index 03cd190580..2d82976f4d 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
@@ -215,6 +215,9 @@ interface drsblobs {
* as non termiated UTF16 strings with
* a UTF16 NULL byte as separator
*
+ * 'Primary:Kerberos-Newer-Keys':
+ * ...
+ *
* 'Primary:Kerberos':
* ...
*
@@ -228,11 +231,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;
@@ -264,23 +272,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 {
@@ -296,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;