/* * Type definitions for Group Managed Service Accounts * * Derived from [MS-ADTS] 2.2.19 MSDS-MANAGEDPASSWORD_BLOB. */ #include "idl_types.h" [ uuid("e43b8cf6-1ead-11ee-aed1-e3597136ce70"), version(0.0), pointer_default(unique), helpstring("Active Directory Group Managed Service Accounts") ] interface gmsa { /* Public structures. */ typedef [gensize] struct { [relative_short] secret_u16string *current; [relative_short] secret_u16string *previous; /* * MS-ADTS states that these fields must be placed on a 64‐bit * boundary, but samples obtained from Windows are found not to * be so. In practice, they’re offset by two bytes. That’s why * we need NOALIGN. */ [relative_short, flag(NDR_NOALIGN)] hyper *query_interval; [relative_short, flag(NDR_NOALIGN)] hyper *unchanged_interval; } MANAGEDPASSWORD_BLOB_PASSWORDS; typedef [public] struct { [value(1)] uint16 version; [value(0)] uint16 reserved; /* * The size of the entire blob. 8 bytes account for the * ‘version’ field, the ‘reserved’ field, and the ‘length’ field * itself. */ [value(8 + ndr_size_MANAGEDPASSWORD_BLOB_PASSWORDS(&passwords, ndr->flags))] uint32 length; MANAGEDPASSWORD_BLOB_PASSWORDS passwords; } MANAGEDPASSWORD_BLOB; }