mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
5f70396e62
575d39048e
has marked
several structures as recursive, they contain typically a
backpointer named '* next'. secrets_domain_info1 is not self
recursive, it only contains a pointer named '*next_change'.
Signed-off-by: Pavel Filipenský <pfilipen@redhat.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Tue Jun 29 03:07:17 UTC 2021 on sn-devel-184
132 lines
3.2 KiB
Plaintext
132 lines
3.2 KiB
Plaintext
#include "idl_types.h"
|
|
|
|
import "misc.idl", "samr.idl", "lsa.idl", "netlogon.idl", "security.idl";
|
|
|
|
/*
|
|
IDL structures for secrets code
|
|
*/
|
|
|
|
[
|
|
pointer_default(unique)
|
|
]
|
|
interface secrets
|
|
{
|
|
|
|
/*
|
|
* s3 on-disc storage structure for trusted domains, do not change !
|
|
*/
|
|
|
|
typedef [flag(NDR_NOALIGN),public] struct {
|
|
[value(strlen_m_term(uni_name))] uint32 uni_name_len;
|
|
[charset(UTF16)] uint16 uni_name[32]; /* unicode domain name */
|
|
[value(strlen(pass))] uint32 pass_len;
|
|
astring pass; /* trust relationship's password */
|
|
time_t mod_time;
|
|
dom_sid domain_sid; /* remote domain's sid */
|
|
} TRUSTED_DOM_PASS;
|
|
|
|
/*
|
|
* s3 on-disc storage structure for lsa secrets, do not change !
|
|
*/
|
|
|
|
typedef [public] struct {
|
|
DATA_BLOB *secret_current;
|
|
NTTIME secret_current_lastchange;
|
|
DATA_BLOB *secret_old;
|
|
NTTIME secret_old_lastchange;
|
|
security_descriptor *sd;
|
|
} lsa_secret;
|
|
|
|
/*
|
|
* This is the on-disc format the workstation trust.
|
|
*
|
|
* DO NOT CHANGE
|
|
* without changing secrets_domain_info_version
|
|
* and adding glue code. Discuss on samba-technical
|
|
* first!
|
|
*/
|
|
typedef struct {
|
|
uint32 keytype;
|
|
uint32 iteration_count;
|
|
[flag(NDR_SECRET)] DATA_BLOB value;
|
|
} secrets_domain_info1_kerberos_key;
|
|
|
|
typedef struct {
|
|
NTTIME change_time;
|
|
[string,charset(UTF16)] uint16 change_server[];
|
|
|
|
[flag(NDR_SECRET)] DATA_BLOB cleartext_blob;
|
|
[flag(NDR_SECRET)] samr_Password nt_hash;
|
|
|
|
[string,charset(UTF16)] uint16 *salt_data;
|
|
uint32 default_iteration_count;
|
|
uint16 num_keys;
|
|
secrets_domain_info1_kerberos_key keys[num_keys];
|
|
} secrets_domain_info1_password;
|
|
|
|
typedef struct {
|
|
NTSTATUS local_status;
|
|
NTSTATUS remote_status;
|
|
NTTIME change_time;
|
|
[string,charset(UTF16)] uint16 change_server[];
|
|
[ref] secrets_domain_info1_password *password;
|
|
} secrets_domain_info1_change;
|
|
|
|
typedef [public] struct {
|
|
[value(0)] hyper reserved_flags;
|
|
|
|
NTTIME join_time;
|
|
|
|
[string,charset(UTF16)] uint16 computer_name[];
|
|
[string,charset(UTF16)] uint16 account_name[];
|
|
netr_SchannelType secure_channel_type;
|
|
|
|
lsa_DnsDomainInfo domain_info;
|
|
netr_TrustFlags trust_flags;
|
|
lsa_TrustType trust_type;
|
|
lsa_TrustAttributes trust_attributes;
|
|
|
|
/*
|
|
* This is unused currently, it might
|
|
* be useful to implement multi-tenancy (joining multiple domains)
|
|
* in future.
|
|
*
|
|
* Or we could use it to do other filtering of domains.
|
|
*/
|
|
[value(NULL)] lsa_ForestTrustInformation *reserved_routing;
|
|
|
|
kerb_EncTypes supported_enc_types;
|
|
[string,charset(UTF16)] uint16 *salt_principal;
|
|
|
|
NTTIME password_last_change;
|
|
hyper password_changes;
|
|
secrets_domain_info1_change *next_change;
|
|
|
|
[ref] secrets_domain_info1_password *password;
|
|
secrets_domain_info1_password *old_password;
|
|
secrets_domain_info1_password *older_password;
|
|
} secrets_domain_info1;
|
|
|
|
typedef [v1_enum] enum {
|
|
SECRETS_DOMAIN_INFO_VERSION_1 = 0x00000001
|
|
} secrets_domain_info_version;
|
|
|
|
/*
|
|
* If we ever need to change this we need to
|
|
* change secrets_domain_info into
|
|
* secrets_domain_info_v1
|
|
*/
|
|
typedef union {
|
|
[case(SECRETS_DOMAIN_INFO_VERSION_1)]
|
|
secrets_domain_info1 *info1;
|
|
[default];
|
|
} secrets_domain_infoU;
|
|
|
|
typedef [public] struct {
|
|
secrets_domain_info_version version;
|
|
[value(0)] uint32 reserved;
|
|
[switch_is(version)] secrets_domain_infoU info;
|
|
} secrets_domain_infoB;
|
|
}
|
|
|