--- /dev/null
+/*
+ * 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;
+}
source='gen_ndr/ndr_claims.c ndr/ndr_claims.c',
deps='ndr NDR_COMPRESSION LZXPRESS')
+bld.SAMBA_SUBSYSTEM('NDR_GMSA',
+ source='gen_ndr/ndr_gmsa.c',
+ deps='ndr')
+
bld.SAMBA_LIBRARY('ndr-standard',
source='',
vnum='0.0.1',
NDR_DNSSERVER NDR_EPMAPPER NDR_XATTR NDR_UNIXINFO NDR_NAMED_PIPE_AUTH
NDR_NTPRINTING NDR_FSRVP NDR_WITNESS NDR_MDSSVC NDR_OPEN_FILES NDR_SMBXSRV
NDR_SMB3POSIX
- NDR_KRB5CCACHE NDR_WSP''',
+ NDR_KRB5CCACHE NDR_WSP NDR_GMSA''',
private_library=True,
grouping_library=True
)
cflags_end=gen_cflags
)
+bld.SAMBA_PYTHON('python_gmsa',
+ source='../../librpc/gen_ndr/py_gmsa.c',
+ deps='NDR_GMSA %s %s' % (pytalloc_util, pyrpc_util),
+ realname='samba/dcerpc/gmsa.so',
+ cflags_end=gen_cflags
+ )
+
bld.SAMBA_PYTHON('python_netlogon',
source='../../librpc/gen_ndr/py_netlogon.c',
deps='RPC_NDR_NETLOGON %s %s' % (pytalloc_util, pyrpc_util),