FusionDirectory
class_passwordMethodSsha512.inc
Go to the documentation of this file.
1 <?php
2 /*
3  This code is part of FusionDirectory (http://www.fusiondirectory.org/)
4 
5  Copyright (C) 2003-2010 Cajus Pollmeier
6  Copyright (C) 2011-2019 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  public function is_available (): bool
47  {
48  return function_exists('hash');
49  }
50 
59  public function generate_hash (string $pwd, bool $locked = FALSE): string
60  {
61  if (function_exists('hash')) {
62  $salt = substr(pack('h*', md5("".random_int(0, PHP_INT_MAX))), 0, 8);
63  $salt = substr(pack('H*', sha1($salt.$pwd)), 0, 4);
64  $pwd = '{SSHA512}'.($locked ? '!' : '').base64_encode(hash('sha512', $pwd.$salt, TRUE).$salt);
65  } else {
67  }
68  return $pwd;
69  }
70 
71  function checkPassword ($pwd, $hash): bool
72  {
73  $hash = base64_decode(substr($hash, 9));
74  $salt = substr($hash, 64);
75  $hash = substr($hash, 0, 64);
76  if (function_exists('hash')) {
77  $nhash = hash('sha512', $pwd.$salt, TRUE);
78  } else {
79  $error = new FusionDirectoryError(msgPool::missingext('hash'));
80  $error->display();
81  return FALSE;
82  }
83  return ($nhash == $hash);
84  }
85 
89  static function get_hash_name ()
90  {
91  return 'ssha512';
92  }
93 }
__construct()
passwordMethodSsha512 Constructor
This class contains all the functions for ssha password method.
Parent class for all exceptions thrown in FusionDirectory.
static missingext($name)
Display about missing PHP extension.
generate_hash(string $pwd, bool $locked=FALSE)
Generate template hash.
This class contains all the basic function for password methods.
Parent class for all errors in FusionDirectory.
static get_hash_name()
Get the hash name.