summaryrefslogtreecommitdiff
path: root/source3/libsmb/pwd_cache.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2002-05-23 14:02:17 +0000
committerAndrew Bartlett <abartlet@samba.org>2002-05-23 14:02:17 +0000
commite46a6ecc697418ad7eb9aedb1610d1fbbe419029 (patch)
tree8164626af06d1f7d788f26eb8e93f3f4d17051d7 /source3/libsmb/pwd_cache.c
parent4f46de7972eaab44b492f2cfe8a9d9c2a728766c (diff)
downloadsamba-e46a6ecc697418ad7eb9aedb1610d1fbbe419029.tar.gz
samba-e46a6ecc697418ad7eb9aedb1610d1fbbe419029.tar.bz2
samba-e46a6ecc697418ad7eb9aedb1610d1fbbe419029.zip
Given Jeremy's positive response, and a lack of one from tpot, I'll commit
this: More code cleanup - this lot a bit more dodgy than the last: The aim is to trim pwd_cache down to size. Its overly complex, and a pain to deal with. With a header comment like this: 'obfusticaion is planned' I think it deserved to die (at least partly). This was being done to allow 'cli_establish_connection' to die - its functionality has been replaced by cli_full_connection(), which does not duplicate code everywhere for creating names etc. This also removes the little 'init' fucntions for the various pipes, becouse they were only used in one place, and even then it was dodgy. (I've reworked smbcacls not to use anonymous connections any more, as this will (should) fail with a 'restrict anonymous' PDC). This allowed me to remove cli_pipe_util.c, which was calling cli_establish_connection. tpot: I'm not sure what direction you were going with the client stuff, and you may well have been wanting the init functions. If thats the case, give me a yell and I'll reimplement them against cli_full_connection. Andrew Bartlett (This used to be commit fa67e4626bed623333c571e76e06ccd52cba5cc5)
Diffstat (limited to 'source3/libsmb/pwd_cache.c')
-rw-r--r--source3/libsmb/pwd_cache.c135
1 files changed, 18 insertions, 117 deletions
diff --git a/source3/libsmb/pwd_cache.c b/source3/libsmb/pwd_cache.c
index 7d1185d9a7..8b79788fed 100644
--- a/source3/libsmb/pwd_cache.c
+++ b/source3/libsmb/pwd_cache.c
@@ -24,7 +24,7 @@
Initialises a password structure.
****************************************************************************/
-void pwd_init(struct pwd_info *pwd)
+static void pwd_init(struct pwd_info *pwd)
{
memset((char *)pwd->password , '\0', sizeof(pwd->password ));
memset((char *)pwd->smb_lm_pwd, '\0', sizeof(pwd->smb_lm_pwd));
@@ -38,89 +38,21 @@ void pwd_init(struct pwd_info *pwd)
}
/****************************************************************************
- Returns NULL password flag.
-****************************************************************************/
-
-BOOL pwd_is_nullpwd(const struct pwd_info *pwd)
-{
- return pwd->null_pwd;
-}
-
-/****************************************************************************
- Compares two passwords. hmm, not as trivial as expected. hmm.
-****************************************************************************/
-
-BOOL pwd_compare(const struct pwd_info *pwd1, const struct pwd_info *pwd2)
-{
- if (pwd1->cleartext && pwd2->cleartext) {
- if (strequal(pwd1->password, pwd2->password))
- return True;
- }
- if (pwd1->null_pwd && pwd2->null_pwd)
- return True;
-
- if (!pwd1->null_pwd && !pwd2->null_pwd &&
- !pwd1->cleartext && !pwd2->cleartext) {
-#ifdef DEBUG_PASSWORD
- DEBUG(100,("pwd compare: nt#\n"));
- dump_data(100, pwd1->smb_nt_pwd, 16);
- dump_data(100, pwd2->smb_nt_pwd, 16);
-#endif
- if (memcmp(pwd1->smb_nt_pwd, pwd2->smb_nt_pwd, 16) == 0)
- return True;
-#ifdef DEBUG_PASSWORD
- DEBUG(100,("pwd compare: lm#\n"));
- dump_data(100, pwd1->smb_lm_pwd, 16);
- dump_data(100, pwd2->smb_lm_pwd, 16);
-#endif
- if (memcmp(pwd1->smb_lm_pwd, pwd2->smb_lm_pwd, 16) == 0)
- return True;
- }
- return False;
-}
-
-/****************************************************************************
- Reads a password.
+ Makes lm and nt hashed passwords.
****************************************************************************/
-void pwd_read(struct pwd_info *pwd, char *passwd_report, BOOL do_encrypt)
+static void pwd_make_lm_nt_16(struct pwd_info *pwd, char *clr)
{
- /* grab a password */
- char *user_pass;
+ pstring dos_passwd;
pwd_init(pwd);
- user_pass = (char*)getpass(passwd_report);
-
- /*
- * Do not assume that an empty string is a NULL password.
- * If you do this will break the session key generation for
- * and account with an emtpy password. If you wish to use
- * a NULL password, use the -N option to smbclient and rpcclient
- * --jerry
- */
-#if 0
- if (user_pass == NULL || user_pass[0] == 0)
- pwd_set_nullpwd(pwd);
- else if (do_encrypt)
-#endif
- if (do_encrypt)
- pwd_make_lm_nt_16(pwd, user_pass);
- else
- pwd_set_cleartext(pwd, user_pass);
-}
-
-/****************************************************************************
- Stores a cleartext password.
-****************************************************************************/
-
-void pwd_set_nullpwd(struct pwd_info *pwd)
-{
- pwd_init(pwd);
+ push_ascii_pstring(dos_passwd, clr);
+ nt_lm_owf_gen(dos_passwd, pwd->smb_nt_pwd, pwd->smb_lm_pwd);
+ pwd->null_pwd = False;
pwd->cleartext = False;
- pwd->null_pwd = True;
- pwd->crypted = False;
+ pwd->crypted = False;
}
/****************************************************************************
@@ -151,29 +83,6 @@ void pwd_get_cleartext(struct pwd_info *pwd, char *clr)
}
/****************************************************************************
- Stores lm and nt hashed passwords.
-****************************************************************************/
-
-void pwd_set_lm_nt_16(struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16])
-{
- pwd_init(pwd);
-
- if (lm_pwd)
- memcpy(pwd->smb_lm_pwd, lm_pwd, 16);
- else
- memset((char *)pwd->smb_lm_pwd, '\0', 16);
-
- if (nt_pwd)
- memcpy(pwd->smb_nt_pwd, nt_pwd, 16);
- else
- memset((char *)pwd->smb_nt_pwd, '\0', 16);
-
- pwd->null_pwd = False;
- pwd->cleartext = False;
- pwd->crypted = False;
-}
-
-/****************************************************************************
Gets lm and nt hashed passwords.
****************************************************************************/
@@ -186,24 +95,6 @@ void pwd_get_lm_nt_16(struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16])
}
/****************************************************************************
- Makes lm and nt hashed passwords.
-****************************************************************************/
-
-void pwd_make_lm_nt_16(struct pwd_info *pwd, char *clr)
-{
- pstring dos_passwd;
-
- pwd_init(pwd);
-
- push_ascii_pstring(dos_passwd, clr);
-
- nt_lm_owf_gen(dos_passwd, pwd->smb_nt_pwd, pwd->smb_lm_pwd);
- pwd->null_pwd = False;
- pwd->cleartext = False;
- pwd->crypted = False;
-}
-
-/****************************************************************************
Makes lm and nt OWF crypts.
****************************************************************************/
@@ -247,3 +138,13 @@ void pwd_get_lm_nt_owf(struct pwd_info *pwd, uchar lm_owf[24], uchar nt_owf[24])
if (nt_owf != NULL)
memcpy(nt_owf, pwd->smb_nt_owf, 24);
}
+
+
+
+
+
+
+
+
+
+