r13576: This is the beginnings of moving the SAM_ACCOUNT data structure
[bbaumbach/samba-autobuild/.git] / source / include / auth.h
index e37f181082e2d152b85085b52c58c7e9cfb2c546..465892905a65e1f4068f9746f1d60eba59f6c098 100644 (file)
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-/* AUTH_STR - string */
-typedef struct normal_string
-{
-       int len;
-       char *str;
-} AUTH_STR;
-
-/* AUTH_UNISTR - unicode string or buffer */
-typedef struct unicode_string
-{
-       int len;
-       uchar *unistr;
-} AUTH_UNISTR;
-
-typedef struct interactive_password
-{
-       OWF_INFO          lm_owf;              /* LM OWF Password */
-       OWF_INFO          nt_owf;              /* NT OWF Password */
-} auth_interactive_password;
-
-#define AUTH_FLAG_NONE        0x000000
-#define AUTH_FLAG_PLAINTEXT   0x000001
-#define AUTH_FLAG_LM_RESP     0x000002
-#define AUTH_FLAG_NTLM_RESP   0x000004
-#define AUTH_FLAG_NTLMv2_RESP 0x000008
-
-typedef struct auth_usersupplied_info
-{
-       
+typedef struct auth_usersupplied_info {
        DATA_BLOB lm_resp;
        DATA_BLOB nt_resp;
-       auth_interactive_password * interactive_password;
+       DATA_BLOB lm_interactive_pwd;
+       DATA_BLOB nt_interactive_pwd;
        DATA_BLOB plaintext_password;
        
        BOOL encrypted;
        
-       uint32 auth_flags;
-
-       AUTH_STR           client_domain;          /* domain name string */
-       AUTH_STR           domain;               /* domain name after mapping */
-       AUTH_STR           internal_username;    /* username after mapping */
-       AUTH_STR           smb_name;        /* username before mapping */
-       AUTH_STR           wksta_name;           /* workstation name (netbios calling name) unicode string */
+       char *client_domain;          /* domain name string */
+       char *domain;                 /* domain name after mapping */
+       char *internal_username;      /* username after mapping */
+       char *smb_name;               /* username before mapping */
+       char *wksta_name;             /* workstation name (netbios calling
+                                      * name) unicode string */
        
-} auth_usersupplied_info;
+       uint32 logon_parameters;
 
-#define SAM_FILL_NAME  0x01
-#define SAM_FILL_INFO3 0x02
-#define SAM_FILL_SAM   0x04
-#define SAM_FILL_UNIX  0x08
-#define SAM_FILL_ALL (SAM_FILL_NAME | SAM_FILL_INFO3 | SAM_FILL_SAM | SAM_FILL_UNIX)
+} auth_usersupplied_info;
 
-typedef struct auth_serversupplied_info 
-{
+typedef struct auth_serversupplied_info {
        BOOL guest;
+
+       DOM_SID *sids;  /* These SIDs are preliminary between
+                          check_ntlm_password and the token creation. */
+       size_t num_sids;
+
+       uid_t uid;
+       gid_t gid;
        
        /* This groups info is needed for when we become_user() for this uid */
-       int n_groups;
+       size_t n_groups;
        gid_t *groups;
        
        /* NT group information taken from the info3 structure */
        
        NT_USER_TOKEN *ptok;
        
-       uint8 session_key[16];
-       
-       uint8 first_8_lm_hash[8];
+       DATA_BLOB user_session_key;
+       DATA_BLOB lm_session_key;
 
-       uint32 sam_fill_level;  /* How far is this structure filled? */
+        char *login_server; /* which server authorized the login? */
        
-       SAM_ACCOUNT *sam_account;
+       struct samu *sam_account;
        
        void *pam_handle;
+
+       char *unix_name;
        
 } auth_serversupplied_info;
 
@@ -102,6 +77,8 @@ struct auth_context {
        /* Who set this up in the first place? */ 
        const char *challenge_set_by; 
 
+       BOOL challenge_may_be_modified;
+
        struct auth_methods *challenge_set_method; 
        /* What order are the various methods in?   Try to stop it changing under us */ 
        struct auth_methods *auth_method_list;  
@@ -126,6 +103,10 @@ typedef struct auth_methods
                         const struct auth_usersupplied_info *user_info, 
                         auth_serversupplied_info **server_info);
 
+       /* If you are using this interface, then you are probably
+        * getting something wrong.  This interface is only for
+        * security=server, and makes a number of compromises to allow
+        * that.  It is not compatible with being a PDC.  */
        DATA_BLOB (*get_chal)(const struct auth_context *auth_context,
                              void **my_private_data, 
                              TALLOC_CTX *mem_ctx);
@@ -148,14 +129,18 @@ struct auth_init_function_entry {
        /* Function to create a member of the authmethods list */
 
        auth_init_function init;
+
+       struct auth_init_function_entry *prev, *next;
 };
 
-typedef struct auth_ntlmssp_state
-{
+typedef struct auth_ntlmssp_state {
        TALLOC_CTX *mem_ctx;
        struct auth_context *auth_context;
        struct auth_serversupplied_info *server_info;
        struct ntlmssp_state *ntlmssp_state;
 } AUTH_NTLMSSP_STATE;
 
+/* Changed from 1 -> 2 to add the logon_parameters field. */
+#define AUTH_INTERFACE_VERSION 2
+
 #endif /* _SMBAUTH_H_ */