|
TYPO3 API
SVNRelease
|
00001 <?php 00002 /*************************************************************** 00003 * Copyright notice 00004 * 00005 * (c) 2009 Sebastian Kurfürst <sebastian@typo3.org> 00006 * All rights reserved 00007 * 00008 * This class is a backport of the corresponding class of FLOW3. 00009 * All credits go to the v5 team. 00010 * 00011 * This script is part of the TYPO3 project. The TYPO3 project is 00012 * free software; you can redistribute it and/or modify 00013 * it under the terms of the GNU General Public License as published by 00014 * the Free Software Foundation; either version 2 of the License, or 00015 * (at your option) any later version. 00016 * 00017 * The GNU General Public License can be found at 00018 * http://www.gnu.org/copyleft/gpl.html. 00019 * 00020 * This script is distributed in the hope that it will be useful, 00021 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 * GNU General Public License for more details. 00024 * 00025 * This copyright notice MUST APPEAR in all copies of the script! 00026 ***************************************************************/ 00027 00028 /** 00029 * A hash service which should be used to generate and validate hashes. 00030 * 00031 * It will use some salt / encryption key in the future. 00032 * 00033 * @version $Id: HashService.php 1729 2009-11-25 21:37:20Z stucki $ 00034 * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser Public License, version 3 or later 00035 */ 00036 class Tx_Extbase_Security_Cryptography_HashService implements t3lib_singleton { 00037 /** 00038 * Generate a hash for a given string 00039 * 00040 * @param string $string The string for which a hash should be generated 00041 * @return string The hash of the string 00042 * @throws F3\FLOW3\Security\Exception\InvalidArgumentForHashGeneration if something else than a string was given as parameter 00043 * @todo Mark as API once it is more stable 00044 */ 00045 public function generateHash($string) { 00046 if (!is_string($string)) throw new Tx_Extbase_Security_Exception_InvalidArgumentForHashGeneration('A hash can only be generated for a string, but "' . gettype($string) . '" was given.', 1255069587); 00047 $encryptionKey = $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']; 00048 if (!$encryptionKey) throw new Tx_Extbase_Security_Exception_InvalidArgumentForHashGeneration('Encryption Key was empty!', 1255069597); 00049 return hash_hmac('sha1', $string, $encryptionKey); 00050 } 00051 00052 /** 00053 * Test if a string $string has the hash given by $hash. 00054 * 00055 * @param string $string The string which should be validated 00056 * @param string $hash The hash of the string 00057 * @return boolean TRUE if string and hash fit together, FALSE otherwise. 00058 * @todo Mark as API once it is more stable 00059 */ 00060 public function validateHash($string, $hash) { 00061 return ($this->generateHash($string) === $hash); 00062 } 00063 } 00064 ?>
1.8.0