sub CreateCryptSalt {
# this can create either a DES type salt or a MD5 salt
- my $md5 = shift; # do we want a MD5 salt?
+ # 0 for DES, 1 for MD5 salt and 2 for apache MD5 salt
+ my $type = shift;
my $validstr = './0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
my @valid = split(//,$validstr);
my ($in, $out);
- my $cryptsaltlen = ($md5 ? 8 : 2);
-
- open (F, "</dev/urandom") || die &HTMLError("No /dev/urandom found!");
- foreach (1..$cryptsaltlen) {
- read(F, $in, 1);
- $out .= $valid[ord($in) % ($#valid + 1)];
+ my $cryptsaltlen = 2;
+ if (($type == 1)||($type == 2)) {
+ $cryptsaltlen = 8;
}
- close F;
- return ($md5 ? "\$1\$$out\$" : $out);
-}
-
-sub CreateMD5Salt {
- my $validstr = './0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
- my @valid = split(//,$validstr);
- my ($in, $out);
-
- my $cryptsaltlen = 8;
open (F, "</dev/urandom") || die &HTMLError("No /dev/urandom found!");
foreach (1..$cryptsaltlen) {
$out .= $valid[ord($in) % ($#valid + 1)];
}
close F;
- return $out;
+ my $md5 = $out;
+ if ($type == 1) { $md5 = "\$1\$$out\$"; }
+ return $md5
}
sub Encrypt {
}
# create a md5 crypted password
- $newwebpassword = apache_md5_crypt($query->param('newwebpass'), &Util::CreateMD5Salt());
+ $newwebpassword = apache_md5_crypt($query->param('newwebpass'), &Util::CreateCryptSalt(2));
&Util::LDAPUpdate($ldap, $editdn, 'webPassword', $newwebpassword);
}