diff options
author | Stefan Metzmacher <metze@samba.org> | 2007-02-14 15:21:41 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:48:16 -0500 |
commit | 57b22d9df223aad2aefb353cd3963e418de2b44e (patch) | |
tree | db00880bc9c4848303f500ad2193ed2974a24eb3 | |
parent | 600c167e3be008db5515e8ff6259a5d630c4bf32 (diff) | |
download | samba-57b22d9df223aad2aefb353cd3963e418de2b44e.tar.gz samba-57b22d9df223aad2aefb353cd3963e418de2b44e.tar.bz2 samba-57b22d9df223aad2aefb353cd3963e418de2b44e.zip |
r21342: add parsing code for the trustAuthIncoming/trustAuthOutgoing attributes
not everything has a meaning yet, but it's a start and we know how to get
to the password in cleartext
metze
(This used to be commit 65641181f782349f1f0192d1c95254e80e2b3887)
-rw-r--r-- | source4/librpc/idl/drsblobs.idl | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl index 1847efacee..177ad5bc2d 100644 --- a/source4/librpc/idl/drsblobs.idl +++ b/source4/librpc/idl/drsblobs.idl @@ -254,6 +254,72 @@ interface drsblobs { [in] supplementalCredentialsBlob 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; |