Update to a working trustAuthIncoming and trustAuthOutgoing parser.
authorAndrew Bartlett <abartlet@samba.org>
Thu, 31 Jul 2008 13:17:20 +0000 (23:17 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 31 Jul 2008 13:17:20 +0000 (23:17 +1000)
This is based on the docs, as well as testing against a domain trust
in windows.

Clearly it needs to be more general - perhaps a non IDL parser?

Andrew Bartlett
(This used to be commit 816bb64a56a75d1eb5e879b4abf211af27243686)

source4/librpc/idl/drsblobs.idl

index 401f5e40bb062e9277df6233b64ebccc282ee70d..b0cddfcdf9c877df941d3f9072f7131c4c1c77fc 100644 (file)
@@ -386,7 +386,7 @@ interface drsblobs {
 
        typedef struct {
                uint32 size;
-               [charset(UTF16)] uint8 password[size];
+               uint8 password[size];
        } AuthInfoClear;
 
        typedef struct {
@@ -422,11 +422,32 @@ interface drsblobs {
                [flag(NDR_ALIGN4)] DATA_BLOB _pad;
        } AuthenticationInformation;
 
+       typedef struct {
+               AuthenticationInformation info[1];
+       } AuthenticationInformation1;
+
+       typedef struct {
+               AuthenticationInformation info[2];
+       } AuthenticationInformation2;
+
+       typedef struct {
+               [relative] AuthenticationInformation1 *current;
+               [relative] AuthenticationInformation1 *previous;
+       } AuthenticationInformationCtr1;
+
+       typedef struct {
+               [relative] AuthenticationInformation2 *current;
+               [relative] AuthenticationInformation2 *previous;
+       } AuthenticationInformationCtr2;
+
+       typedef [nodiscriminant] union {
+               [case(1)] AuthenticationInformationCtr1 info1;
+               [case(2)] AuthenticationInformationCtr2 info2;
+       } AuthenticationInformationCtr;
+
        typedef [public] struct {
                uint32 count;
-               [relative] AuthenticationInformation *authinfo[count];
-               [relative] AuthenticationInformation *previous_authinfo[count];
-               
+               [switch_is(count)] AuthenticationInformationCtr auth;
        } trustAuthInOutBlob;
 
        void decode_trustAuthInOut(