wb-ndr: add idl for WINBIND_AUTH_LEVEL_COMPAT_AUTH_PLAIN
authorStefan Metzmacher <metze@sernet.de>
Thu, 13 Mar 2008 13:21:09 +0000 (14:21 +0100)
committerStefan Metzmacher <metze@sernet.de>
Fri, 2 May 2008 14:13:41 +0000 (16:13 +0200)
metze

source/librpc/idl/winbind_protocol.idl

index 8c66cfa75b150788e6915e77c07f596aa52766e5..50f1cdacf4b1a50f6aa210b40cdbafa6bb096ac3 100644 (file)
@@ -2,7 +2,7 @@
  * Winbind (NDR-based) Protocol
  */
 
-import "security.idl",  "lsa.idl";
+import "security.idl",  "lsa.idl", "samr.idl", "netlogon.idl";
 
 [ uuid("b6608c99-0407-401b-96d3-7bcda67232af"),
   version(1.0),
@@ -10,6 +10,8 @@ import "security.idl",  "lsa.idl";
 ] interface winbind_protocol
 {
        typedef enum lsa_SidType lsa_SidType;
+       typedef struct netr_SamInfo3 netr_SamInfo3;
+       typedef struct samr_DomInfo1 samr_DomInfo1;
 
        const uint32 WINBIND_MAX_LENGTH_PRIVILEGED      = 0x0FFFFFFF;
        const uint32 WINBIND_MAX_LENGTH_UNPRIVILEGED    = 0x00020000;
@@ -82,8 +84,49 @@ import "security.idl",  "lsa.idl";
        /*
         * PAM authenticate and password change
         */
-       winbind_status winbind_pam_auth(/*TODO*/);
-       winbind_status winbind_pam_auth_crap(/*TODO*/);
+
+       typedef [v1_enum] enum {
+               WINBIND_AUTH_LEVEL_COMPAT_AUTH_PLAIN    = 1
+       } winbind_auth_level;
+
+       struct winbind_auth_compat_auth_plain_req {
+               uint32 flags;
+               [string,charset(UTF8)] uint8    account_name[];
+               [string,charset(UTF8)] uint8    *domain_name;
+               [string,charset(UTF8)] uint8    password[];
+               uint32 num_require_membership_of_sids;
+               [size_is(num_require_membership_of_sids)]
+                       dom_sid *require_membership_of_sids;
+               [string,charset(UTF8)] uint8    *krb5_cc_type;
+               hyper *uid;
+       };
+
+       struct winbind_auth_compat_auth_rep {
+               [string,charset(UTF8)] uint8 *unix_username;
+               [string,charset(UTF8)] uint8 *krb5_cc_name;
+               netr_SamInfo3 *info3;
+               samr_DomInfo1 *password_policy;
+               DATA_BLOB *afs_token;
+       };
+
+       typedef [switch_type(winbind_auth_level)] union {
+       [case(WINBIND_AUTH_LEVEL_COMPAT_AUTH_PLAIN)]
+               struct winbind_auth_compat_auth_plain_req compat_auth_plain;
+       [default];
+       } winbind_auth_req;
+
+       typedef [switch_type(winbind_auth_level)] union {
+       [case(WINBIND_AUTH_LEVEL_COMPAT_AUTH_PLAIN)]
+               struct winbind_auth_compat_auth_rep compat_auth;
+       [default];
+       } winbind_auth_rep;
+
+       winbind_status winbind_auth(
+               [in] winbind_auth_level *level,
+               [in,switch_is(*level)] winbind_auth_req req,
+               [out,switch_is(*level)] winbind_auth_rep *rep
+       );
+
        winbind_status winbind_pam_chauthtok(/*TODO*/);
        winbind_status winbind_pam_logoff(/*TODO*/);
        winbind_status winbind_pam_chng_paswd_auth_crap(/*TODO*/);