#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, unsigned char mach_pwd[16])
+uint32 cli_nt_setup_creds(struct cli_state *cli, uint16 fnum,
+ const char* trust_acct,
+ const char* srv_name,
+ unsigned char trust_pwd[16],
+ uint16 sec_chan)
{
DOM_CHAL clnt_chal;
DOM_CHAL srv_chal;
-
+ uint32 ret;
UTIME zerotime;
/******************* Request Challenge ********************/
generate_random_buffer( clnt_chal.data, 8, False);
/* send a client challenge; receive a server challenge */
- if (!cli_net_req_chal(cli, &clnt_chal, &srv_chal))
+ ret = cli_net_req_chal(cli, fnum, srv_name, &clnt_chal, &srv_chal);
+ if (ret != 0)
{
DEBUG(0,("cli_nt_setup_creds: request challenge failed\n"));
- return False;
+ return ret;
}
/**************** Long-term Session key **************/
/* calculate the session key */
- cred_session_key(&clnt_chal, &srv_chal, mach_pwd, cli->sess_key);
+ cred_session_key(&clnt_chal, &srv_chal, (char *)trust_pwd, cli->sess_key);
bzero(cli->sess_key+8, 8);
/******************* Authenticate 2 ********************/
* Receive an auth-2 challenge response and check it.
*/
- if (!cli_net_auth2(cli, SEC_CHAN_WKSTA, 0x000001ff, &srv_chal))
+ ret = cli_net_auth2(cli, fnum, trust_acct, srv_name,
+ sec_chan, 0x000001ff, &srv_chal);
+ if (ret != 0x0)
{
DEBUG(0,("cli_nt_setup_creds: auth2 challenge failed\n"));
- return False;
}
- return True;
+ return ret;
}
/****************************************************************************
Set machine password.
****************************************************************************/
-BOOL cli_nt_srv_pwset(struct cli_state *cli, unsigned char *new_hashof_mach_pwd)
+BOOL cli_nt_srv_pwset(struct cli_state *cli, uint16 fnum,
+ unsigned char *new_hashof_trust_pwd, uint16 sec_chan)
{
unsigned char processed_new_pwd[16];
- DEBUG(5,("cli_nt_login_interactive: %d\n", __LINE__));
+ DEBUG(5,("cli_nt_srv_pwset: %d\n", __LINE__));
#ifdef DEBUG_PASSWORD
- dump_data(6, new_hashof_mach_pwd, 16);
+ dump_data(6, new_hashof_trust_pwd, 16);
#endif
/* Process the new password. */
- cred_hash3( processed_new_pwd, new_hashof_mach_pwd, cli->sess_key, 1);
+ cred_hash3( processed_new_pwd, new_hashof_trust_pwd, cli->sess_key, 1);
/* send client srv_pwset challenge */
- return cli_net_srv_pwset(cli, processed_new_pwd);
+ return cli_net_srv_pwset(cli, fnum, processed_new_pwd, sec_chan);
}
/****************************************************************************
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, char *domain, char *username,
- uint32 smb_userid_low, char *password,
+BOOL cli_nt_login_interactive(struct cli_state *cli, uint16 fnum, char *domain, char *username,
+ uint32 luid_low, char *password,
NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3)
{
- unsigned char lm_owf_user_pwd[16];
- unsigned char nt_owf_user_pwd[16];
+ uchar lm_owf_user_pwd[16];
+ uchar nt_owf_user_pwd[16];
BOOL ret;
DEBUG(5,("cli_nt_login_interactive: %d\n", __LINE__));
#endif
- DEBUG(5,("cli_nt_login_network: %d\n", __LINE__));
+ DEBUG(5,("cli_nt_login_interactive: %d\n", __LINE__));
/* indicate an "interactive" login */
ctr->switch_value = INTERACTIVE_LOGON_TYPE;
/* Create the structure needed for SAM logon. */
make_id_info1(&ctr->auth.id1, domain, 0,
- smb_userid_low, 0,
+ luid_low, 0,
username, cli->clnt_name_slash,
- cli->sess_key, lm_owf_user_pwd, nt_owf_user_pwd);
+ (char *)cli->sess_key, lm_owf_user_pwd, nt_owf_user_pwd);
/* Ensure we overwrite all the plaintext password
equivalents. */
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, ctr, user_info3);
+ ret = cli_net_sam_logon(cli, fnum, 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));
password equivalents over the network. JRA.
****************************************************************************/
-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],
+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],
char nt_chal_resp[24],
NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3)
{
/* Create the structure needed for SAM logon. */
make_id_info2(&ctr->auth.id2, domain, 0,
- smb_userid_low, 0,
+ luid_low, 0,
username, cli->clnt_name_slash,
- lm_chal, lm_chal_resp, nt_chal_resp);
+ (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, ctr, user_info3);
+ return cli_net_sam_logon(cli, fnum, ctr, user_info3);
}
/****************************************************************************
NT Logoff.
****************************************************************************/
-
-BOOL cli_nt_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr)
+BOOL cli_nt_logoff(struct cli_state *cli, uint16 fnum, 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, ctr);
+ return cli_net_sam_logoff(cli, fnum, ctr);
}