first pass at updating head branch to be to be the same as the SAMBA_2_0 branch
[kai/samba.git] / source3 / rpc_client / cli_login.c
index 858327a1b216695a31ad8990cf920c9420cb90c5..5fe392f2148415136ff6c6c1acc05bdf08e3d12b 100644 (file)
@@ -4,6 +4,7 @@
    NT Domain Authentication SMB / MSRPC client
    Copyright (C) Andrew Tridgell 1994-1997
    Copyright (C) Luke Kenneth Casson Leighton 1996-1997
+   Copyright (C) Jeremy Allison  1999.
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 #include "nterr.h"
 
 extern int DEBUGLEVEL;
+extern fstring global_myworkgroup;
+extern pstring global_myname;
 
 /****************************************************************************
 Initialize domain session credentials.
 ****************************************************************************/
 
-BOOL cli_nt_setup_creds(struct cli_state *cli, uint16 fnum,
-                               const char* trust_acct,
-                               unsigned char trust_pwd[16],
-                               uint16 sec_chan)
+BOOL cli_nt_setup_creds(struct cli_state *cli, unsigned char mach_pwd[16])
 {
   DOM_CHAL clnt_chal;
   DOM_CHAL srv_chal;
@@ -44,7 +44,7 @@ BOOL cli_nt_setup_creds(struct cli_state *cli, uint16 fnum,
   generate_random_buffer( clnt_chal.data, 8, False);
        
   /* send a client challenge; receive a server challenge */
-  if (!cli_net_req_chal(cli, fnum, &clnt_chal, &srv_chal))
+  if (!cli_net_req_chal(cli, &clnt_chal, &srv_chal))
   {
     DEBUG(0,("cli_nt_setup_creds: request challenge failed\n"));
     return False;
@@ -53,8 +53,8 @@ BOOL cli_nt_setup_creds(struct cli_state *cli, uint16 fnum,
   /**************** Long-term Session key **************/
 
   /* calculate the session key */
-  cred_session_key(&clnt_chal, &srv_chal, (char *)trust_pwd, cli->sess_key);
-  bzero(cli->sess_key+8, 8);
+  cred_session_key(&clnt_chal, &srv_chal, (char *)mach_pwd, cli->sess_key);
+  memset((char *)cli->sess_key+8, '\0', 8);
 
   /******************* Authenticate 2 ********************/
 
@@ -67,7 +67,7 @@ BOOL cli_nt_setup_creds(struct cli_state *cli, uint16 fnum,
    * Receive an auth-2 challenge response and check it.
    */
 
-  if (!cli_net_auth2(cli, fnum, trust_acct, sec_chan, 0x000001ff, &srv_chal))
+  if (!cli_net_auth2(cli, SEC_CHAN_WKSTA, 0x000001ff, &srv_chal))
   {
     DEBUG(0,("cli_nt_setup_creds: auth2 challenge failed\n"));
     return False;
@@ -80,22 +80,21 @@ BOOL cli_nt_setup_creds(struct cli_state *cli, uint16 fnum,
  Set machine password.
  ****************************************************************************/
 
-BOOL cli_nt_srv_pwset(struct cli_state *cli, uint16 fnum,
-                     unsigned char *new_hashof_trust_pwd, uint16 sec_chan)
+BOOL cli_nt_srv_pwset(struct cli_state *cli, unsigned char *new_hashof_mach_pwd)
 {
   unsigned char processed_new_pwd[16];
 
   DEBUG(5,("cli_nt_srv_pwset: %d\n", __LINE__));
 
 #ifdef DEBUG_PASSWORD
-  dump_data(6, new_hashof_trust_pwd, 16);
+  dump_data(6, (char *)new_hashof_mach_pwd, 16);
 #endif
 
   /* Process the new password. */
-  cred_hash3( processed_new_pwd, new_hashof_trust_pwd, cli->sess_key, 1);
+  cred_hash3( processed_new_pwd, new_hashof_mach_pwd, cli->sess_key, 1);
 
   /* send client srv_pwset challenge */
-  return cli_net_srv_pwset(cli, fnum, processed_new_pwd, sec_chan);
+  return cli_net_srv_pwset(cli, processed_new_pwd);
 }
 
 /****************************************************************************
@@ -104,8 +103,8 @@ NT login - interactive.
 password equivalents, protected by the session key) is inherently insecure
 given the current design of the NT Domain system. JRA.
  ****************************************************************************/
-BOOL cli_nt_login_interactive(struct cli_state *cli, uint16 fnum, char *domain, char *username, 
-                              uint32 luid_low, char *password,
+BOOL cli_nt_login_interactive(struct cli_state *cli, char *domain, char *username, 
+                              uint32 smb_userid_low, char *password,
                               NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3)
 {
   uchar lm_owf_user_pwd[16];
@@ -119,10 +118,10 @@ BOOL cli_nt_login_interactive(struct cli_state *cli, uint16 fnum, char *domain,
 #ifdef DEBUG_PASSWORD
 
   DEBUG(100,("nt owf of user password: "));
-  dump_data(100, lm_owf_user_pwd, 16);
+  dump_data(100, (char *)lm_owf_user_pwd, 16);
 
   DEBUG(100,("nt owf of user password: "));
-  dump_data(100, nt_owf_user_pwd, 16);
+  dump_data(100, (char *)nt_owf_user_pwd, 16);
 
 #endif
 
@@ -132,8 +131,8 @@ BOOL cli_nt_login_interactive(struct cli_state *cli, uint16 fnum, char *domain,
   ctr->switch_value = INTERACTIVE_LOGON_TYPE;
 
   /* Create the structure needed for SAM logon. */
-  make_id_info1(&ctr->auth.id1, domain, 0, 
-                luid_low, 0,
+  init_id_info1(&ctr->auth.id1, domain, 0, 
+                smb_userid_low, 0,
                 username, cli->clnt_name_slash,
                 (char *)cli->sess_key, lm_owf_user_pwd, nt_owf_user_pwd);
 
@@ -143,7 +142,7 @@ BOOL cli_nt_login_interactive(struct cli_state *cli, uint16 fnum, char *domain,
   memset(nt_owf_user_pwd, '\0', sizeof(nt_owf_user_pwd));
 
   /* Send client sam-logon request - update credentials on success. */
-  ret = cli_net_sam_logon(cli, fnum, ctr, user_info3);
+  ret = cli_net_sam_logon(cli, ctr, user_info3);
 
   memset(ctr->auth.id1.lm_owf.data, '\0', sizeof(lm_owf_user_pwd));
   memset(ctr->auth.id1.nt_owf.data, '\0', sizeof(nt_owf_user_pwd));
@@ -157,8 +156,8 @@ NT login - network.
 password equivalents over the network. JRA.
 ****************************************************************************/
 
-BOOL cli_nt_login_network(struct cli_state *cli, uint16 fnum, char *domain, char *username, 
-                          uint32 luid_low, char lm_chal[8], char lm_chal_resp[24],
+BOOL cli_nt_login_network(struct cli_state *cli, char *domain, char *username, 
+                          uint32 smb_userid_low, char lm_chal[8], char lm_chal_resp[24],
                           char nt_chal_resp[24],
                           NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3)
 {
@@ -168,22 +167,22 @@ BOOL cli_nt_login_network(struct cli_state *cli, uint16 fnum, char *domain, char
   ctr->switch_value = NET_LOGON_TYPE;
 
   /* Create the structure needed for SAM logon. */
-  make_id_info2(&ctr->auth.id2, domain, 0, 
-                luid_low, 0,
+  init_id_info2(&ctr->auth.id2, domain, 0, 
+                smb_userid_low, 0,
                 username, cli->clnt_name_slash,
                 (uchar *)lm_chal, (uchar *)lm_chal_resp, (uchar *)nt_chal_resp);
 
   /* Send client sam-logon request - update credentials on success. */
-  return cli_net_sam_logon(cli, fnum, ctr, user_info3);
+  return cli_net_sam_logon(cli, ctr, user_info3);
 }
 
 /****************************************************************************
 NT Logoff.
 ****************************************************************************/
-BOOL cli_nt_logoff(struct cli_state *cli, uint16 fnum, NET_ID_INFO_CTR *ctr)
+BOOL cli_nt_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr)
 {
   DEBUG(5,("cli_nt_logoff: %d\n", __LINE__));
 
   /* Send client sam-logoff request - update credentials on success. */
-  return cli_net_sam_logoff(cli, fnum, ctr);
+  return cli_net_sam_logoff(cli, ctr);
 }