FusionDirectory
 All Data Structures Files Functions Variables
class_password-methods-ssha.inc
Go to the documentation of this file.
1 <?php
2 
3 /*
4  This code is part of FusionDirectory (http://www.fusiondirectory.org/)
5  Copyright (C) 2003-2010 Cajus Pollmeier
6  Copyright (C) 2011-2016 FusionDirectory
7 
8  This program is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 2 of the License, or
11  (at your option) any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
21 */
22 
33 {
37  function __construct()
38  {
39  }
40 
46  function is_available()
47  {
48  return (function_exists('sha1') || function_exists('mhash'));
49  }
50 
56  function generate_hash($pwd)
57  {
58  if (function_exists('sha1')) {
59  $salt = substr(pack('h*', md5(mt_rand())), 0, 8);
60  $salt = substr(pack('H*', sha1($salt.$pwd)), 0, 4);
61  $pwd = '{SSHA}'.base64_encode(pack('H*', sha1($pwd.$salt)).$salt);
62  return $pwd;
63  } elseif (function_exists('mhash')) {
64  $salt = mhash_keygen_s2k(MHASH_SHA1, $pwd, substr(pack('h*', md5(mt_rand())), 0, 8), 4);
65  $pwd = '{SSHA}'.base64_encode(mhash(MHASH_SHA1, $pwd.$salt).$salt);
66  } else {
67  msg_dialog::display(_('Configuration error'), msgPool::missingext('mhash'), ERROR_DIALOG);
68  return FALSE;
69  }
70  return $pwd;
71  }
72 
73  function checkPassword($pwd, $hash)
74  {
75  $hash = base64_decode(substr($hash, 6));
76  $salt = substr($hash, 20);
77  $hash = substr($hash, 0, 20);
78  if (function_exists('sha1')) {
79  $nhash = pack('H*', sha1($pwd . $salt));
80  } elseif (function_exists('mhash')) {
81  $nhash = mhash(MHASH_SHA1, $pwd.$salt);
82  } else {
83  msg_dialog::display(_('Configuration error'), msgPool::missingext('mhash'), ERROR_DIALOG);
84  return FALSE;
85  }
86  return ($nhash == $hash);
87  }
88 
92  static function get_hash_name()
93  {
94  return 'ssha';
95  }
96 }
97 ?>
generate_hash($pwd)
Generate template hash.
This class contains all the functions for ssha password methods.
static get_hash_name()
Get the hash name.
__construct()
passwordMethodssha Constructor
static missingext($name)
Display about missing PHP extension.
This class contains all the basic function for password methods.
static display($s_title, $s_message, $i_type=INFO_DIALOG)
Display a message dialog.