Modified md5_cryptpasswd() function to create {md5}xxx style password;

Add actual function to deal with sha passwords, and added ability for use of ssha;
This commit is contained in:
Miles Lott 2003-12-28 17:27:34 +00:00
parent 9382d27026
commit 0f85f3763f
2 changed files with 57 additions and 16 deletions

View File

@ -1303,7 +1303,7 @@
@param $userpass user password @param $userpass user password
@param $random random seed @param $random random seed
*/ */
function md5_cryptpasswd($userpass, $random) function old_md5_cryptpasswd($userpass, $random)
{ {
$bsalt = '$1$'; $bsalt = '$1$';
$esalt = '$'; $esalt = '$';
@ -1315,6 +1315,38 @@
return $ldappassword; return $ldappassword;
} }
/* New method taken from the openldap-software list as recommended by
* Kervin L. Pierre" <kervin@blueprint-tech.com>
*/
function md5_cryptpasswd($userpass, $random)
{
$ldappassword = '{md5}' . base64_encode(pack("H*",md5($userpass)));
return $ldappassword;
}
/* http://www.thomas-alfeld.de/frank/index.php?file=CodeSnippets%2FPHP%2Fldap_passwd.php */
function sha_cryptpasswd($userpass, $random)
{
if(!function_exists('mhash'))
{
return False;
}
$ldappassword = '{SHA}' . base64_encode(mhash(MHASH_SHA1, $userpass));
return $ldappassword;
}
/* http://www.thomas-alfeld.de/frank/index.php?file=CodeSnippets%2FPHP%2Fldap_passwd.php */
function ssha_cryptpasswd($userpass,$random)
{
if(!function_exists('mhash'))
{
return False;
}
$hash = mhash(MHASH_SHA1, $password . $random);
$ldappassword = '{SSHA}' . base64_encode($hash . $random);
return $ldappassword;
}
/*! /*!
@function encrypt_password @function encrypt_password
@abstract encrypt password @abstract encrypt password
@ -1323,22 +1355,28 @@
*/ */
function encrypt_password($password) function encrypt_password($password)
{ {
if (strtolower($GLOBALS['phpgw_info']['server']['ldap_encryption_type']) == 'des') $type = strtolower($GLOBALS['phpgw_info']['server']['ldap_encryption_type']);
$salt = '';
switch($type)
{ {
case 'des':
$salt = $this->randomstring(2); $salt = $this->randomstring(2);
$e_password = $this->des_cryptpasswd($password, $salt); $e_password = $this->des_cryptpasswd($password, $salt);
break;
return $e_password; case 'md5':
}
elseif (strtolower($GLOBALS['phpgw_info']['server']['ldap_encryption_type']) == 'md5')
{
$salt = $this->randomstring(8);
$e_password = $this->md5_cryptpasswd($password,$salt); $e_password = $this->md5_cryptpasswd($password,$salt);
break;
return $e_password; case 'sha':
$e_password = $this->sha_cryptpasswd($password,$salt);
break;
case 'ssha':
$salt = $this->randomstring(8);
$e_password = $this->ssha_cryptpasswd($password, $salt);
break;
default:
return False;
} }
return $e_password;
return false;
} }
/*! /*!

View File

@ -112,7 +112,10 @@
); );
if(@function_exists('mhash')) if(@function_exists('mhash'))
{ {
$hashes += array('sha' => 'sha'); $hashes += array(
'sha' => 'sha',
'ssha' => 'ssha'
);
} }
while(list($key, $value) = each($hashes)) while(list($key, $value) = each($hashes))