s4: security.idl: split of dom_sid stuff into dom_sid.idl
[kai/samba.git] / source4 / librpc / idl / security.idl
index 9a18189993b41839f9a14df18738801a4f7052b8..964e0b9e42d4b1c5e693721870dc9efcd73eb1c0 100644 (file)
@@ -4,7 +4,11 @@
   security IDL structures
 */
 
+import "misc.idl";
+import "dom_sid.idl";
+
 [
+       helper("librpc/gen_ndr/ndr_dom_sid.h"),
        pointer_default(unique)
 ]
 interface security
@@ -20,9 +24,9 @@ interface security
                   
           common combinations of bits are prefixed with SEC_RIGHTS_
        */
-        const int SEC_MASK_GENERIC         = 0xF0000000;
-        const int SEC_MASK_FLAGS           = 0x0F000000;
-        const int SEC_MASK_STANDARD        = 0x00FF0000;
+       const int SEC_MASK_GENERIC         = 0xF0000000;
+       const int SEC_MASK_FLAGS           = 0x0F000000;
+       const int SEC_MASK_STANDARD        = 0x00FF0000;
        const int SEC_MASK_SPECIFIC        = 0x0000FFFF;
 
        /* generic bits */
@@ -74,6 +78,20 @@ interface security
        const int SEC_REG_NOTIFY           = 0x00000010;
        const int SEC_REG_CREATE_LINK      = 0x00000020;
 
+       /* ldap specific access bits */
+       const int SEC_ADS_CREATE_CHILD     = 0x00000001;
+       const int SEC_ADS_DELETE_CHILD     = 0x00000002;
+       const int SEC_ADS_LIST             = 0x00000004;
+       const int SEC_ADS_SELF_WRITE       = 0x00000008;
+       const int SEC_ADS_READ_PROP        = 0x00000010;
+       const int SEC_ADS_WRITE_PROP       = 0x00000020;
+       const int SEC_ADS_DELETE_TREE      = 0x00000040;
+       const int SEC_ADS_LIST_OBJECT      = 0x00000080;
+       const int SEC_ADS_CONTROL_ACCESS   = 0x00000100;
+
+       /* invalid bits */
+       const int SEC_MASK_INVALID         = 0x0ce0fe00;
+
        /* generic->specific mappings for files */
        const int SEC_RIGHTS_FILE_READ    = SEC_STD_READ_CONTROL | 
                                            SEC_STD_SYNCHRONIZE | 
@@ -109,6 +127,8 @@ interface security
        const string SID_NULL = "S-1-0-0";
 
        /* the world domain */
+       const string NAME_WORLD       = "WORLD";
+
        const string SID_WORLD_DOMAIN = "S-1-1";
        const string SID_WORLD        = "S-1-1-0";
 
@@ -116,8 +136,11 @@ interface security
        const string SID_CREATOR_OWNER_DOMAIN = "S-1-3";
        const string SID_CREATOR_OWNER        = "S-1-3-0";
        const string SID_CREATOR_GROUP        = "S-1-3-1";
+       const string SID_OWNER_RIGHTS         = "S-1-3-4";
 
        /* SECURITY_NT_AUTHORITY */
+       const string NAME_NT_AUTHORITY            = "NT AUTHORITY";
+
        const string SID_NT_AUTHORITY             = "S-1-5";
        const string SID_NT_DIALUP                = "S-1-5-1";
        const string SID_NT_NETWORK               = "S-1-5-2";
@@ -133,11 +156,18 @@ interface security
        const string SID_NT_TERMINAL_SERVER_USERS = "S-1-5-13";
        const string SID_NT_REMOTE_INTERACTIVE    = "S-1-5-14";
        const string SID_NT_THIS_ORGANISATION     = "S-1-5-15";
+       const string SID_NT_IUSR                  = "S-1-5-17";
        const string SID_NT_SYSTEM                = "S-1-5-18";
        const string SID_NT_LOCAL_SERVICE         = "S-1-5-19";
        const string SID_NT_NETWORK_SERVICE       = "S-1-5-20";
+       const string SID_NT_DIGEST_AUTHENTICATION = "S-1-5-64-21";
+       const string SID_NT_NTLM_AUTHENTICATION   = "S-1-5-64-10";
+       const string SID_NT_SCHANNEL_AUTHENTICATION = "S-1-5-64-14";
+       const string SID_NT_OTHER_ORGANISATION    = "S-1-5-1000";
 
        /* SECURITY_BUILTIN_DOMAIN_RID */
+       const string NAME_BUILTIN                  = "BUILTIN";
+
        const string SID_BUILTIN                   = "S-1-5-32";
        const string SID_BUILTIN_ADMINISTRATORS    = "S-1-5-32-544";
        const string SID_BUILTIN_USERS             = "S-1-5-32-545";
@@ -148,6 +178,20 @@ interface security
        const string SID_BUILTIN_PRINT_OPERATORS   = "S-1-5-32-550";
        const string SID_BUILTIN_BACKUP_OPERATORS  = "S-1-5-32-551";
        const string SID_BUILTIN_REPLICATOR        = "S-1-5-32-552";
+       const string SID_BUILTIN_RAS_SERVERS       = "S-1-5-32-553";
+       const string SID_BUILTIN_PREW2K            = "S-1-5-32-554";
+
+       /* well-known domain RIDs */
+       const int DOMAIN_RID_LOGON                 = 9;
+       const int DOMAIN_RID_ADMINISTRATOR         = 500;
+       const int DOMAIN_RID_GUEST                 = 501;
+       const int DOMAIN_RID_ADMINS                = 512;
+       const int DOMAIN_RID_USERS                 = 513;
+       const int DOMAIN_RID_DOMAIN_MEMBERS        = 515;
+       const int DOMAIN_RID_DCS                   = 516;
+       const int DOMAIN_RID_CERT_ADMINS           = 517;
+       const int DOMAIN_RID_SCHEMA_ADMINS         = 518;
+       const int DOMAIN_RID_ENTERPRISE_ADMINS     = 519;
 
 
        /*
@@ -181,15 +225,12 @@ interface security
                SEC_PRIV_REMOTE_INTERACTIVE_LOGON  = 24
        } sec_privilege;
 
-
-       /* a domain SID. Note that unlike Samba3 this contains a pointer,
-          so you can't copy them using assignment */
-       typedef [public,noprint] struct {
-               uint8  sid_rev_num;             /**< SID revision number */
-               [range(0,15)] int8  num_auths;  /**< Number of sub-authorities */
-               uint8  id_auth[6];              /**< Identifier Authority */
-               uint32 sub_auths[num_auths];
-       } dom_sid;
+       /* id used to identify a endpoint, possibly in a cluster */
+       typedef [public] struct {
+               hyper id;
+               uint32 id2;
+               uint32 node;
+       } server_id;
 
        typedef [bitmap8bit] bitmap {
                SEC_ACE_FLAG_OBJECT_INHERIT             = 0x01,
@@ -214,7 +255,7 @@ interface security
                SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT        = 8
        } security_ace_type;
 
-       typedef bitmap {
+       typedef [bitmap32bit] bitmap {
                SEC_ACE_OBJECT_TYPE_PRESENT             = 0x00000001,
                SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT   = 0x00000002
        } security_ace_object_flags;
@@ -247,10 +288,10 @@ interface security
                [default];
        } security_ace_object_ctr;
 
-       typedef [public] struct {
+       typedef [public,gensize,nosize] struct {
                security_ace_type type;  /* SEC_ACE_TYPE_* */
                security_ace_flags flags; /* SEC_ACE_FLAG_* */
-               [value(ndr_size_security_ace(r))] uint16 size;
+               [value(ndr_size_security_ace(r,ndr->flags))] uint16 size;
                uint32 access_mask;
                [switch_is(type)] security_ace_object_ctr object;
                dom_sid trustee;
@@ -263,9 +304,9 @@ interface security
 
        const uint NT4_ACL_REVISION     = SECURITY_ACL_REVISION_NT4;
 
-       typedef [public] struct {
+       typedef [public,gensize,nosize] struct {
                security_acl_revision revision;
-               [value(ndr_size_security_acl(r))] uint16 size;
+               [value(ndr_size_security_acl(r,ndr->flags))] uint16 size;
                [range(0,1000)] uint32 num_aces;
                security_ace aces[num_aces];
        } security_acl;
@@ -297,14 +338,7 @@ interface security
                SEC_DESC_SELF_RELATIVE          = 0x8000
        } security_descriptor_type;
 
-       /* bits that determine which parts of a security descriptor
-          are being queried/set */
-       const int SECINFO_OWNER                = 0x00000001;
-       const int SECINFO_GROUP                = 0x00000002;
-       const int SECINFO_DACL                 = 0x00000004;
-       const int SECINFO_SACL                 = 0x00000008;
-
-       typedef [public,flag(NDR_LITTLE_ENDIAN)] struct {
+       typedef [gensize,nosize,public,flag(NDR_LITTLE_ENDIAN)] struct {
                security_descriptor_revision revision;
                security_descriptor_type type;     /* SEC_DESC_xxxx flags */
                [relative] dom_sid *owner_sid; 
@@ -314,7 +348,36 @@ interface security
        } security_descriptor;
 
        typedef [public] struct {
-               [range(0,0x40000),value(ndr_size_security_descriptor(sd))] uint32 sd_size;
+               [range(0,0x40000),value(ndr_size_security_descriptor(sd,ndr->flags))] uint32 sd_size;
                [subcontext(4)] security_descriptor *sd;
        } sec_desc_buf;
+
+       typedef [public] struct {
+               dom_sid *user_sid;
+               dom_sid *group_sid;
+               uint32 num_sids;
+               [size_is(num_sids)] dom_sid *sids[*];
+               udlong privilege_mask;
+       } security_token;
+
+       /* bits that determine which parts of a security descriptor
+          are being queried/set */
+       typedef [public,bitmap32bit] bitmap {
+               SECINFO_OWNER                = 0x00000001,
+               SECINFO_GROUP                = 0x00000002,
+               SECINFO_DACL                 = 0x00000004,
+               SECINFO_SACL                 = 0x00000008,
+               SECINFO_UNPROTECTED_SACL     = 0x10000000,
+               SECINFO_UNPROTECTED_DACL     = 0x20000000,
+               SECINFO_PROTECTED_SACL       = 0x40000000,
+               SECINFO_PROTECTED_DACL       = 0x80000000
+       } security_secinfo;
+
+       typedef [public,bitmap32bit] bitmap {
+               KERB_ENCTYPE_DES_CBC_CRC             = 0x00000001,
+               KERB_ENCTYPE_DES_CBC_MD5             = 0x00000002,
+               KERB_ENCTYPE_RC4_HMAC_MD5            = 0x00000004,
+               KERB_ENCTYPE_AES128_CTS_HMAC_SHA1_96 = 0x00000008,
+               KERB_ENCTYPE_AES256_CTS_HMAC_SHA1_96 = 0x00000010
+       } kerb_EncTypes;
 }