/** * Setter for the hash method. Supports md5() and sha1() functions, and if * available the hashing algorithms supported by the hash() PHP5 function. * * @param string $hash * @return Zend_Crypt_Hmac */ protected static function _setHashAlgorithm($hash) { if (!isset($hash) || empty($hash)) { require_once 'Zend/Crypt/Hmac/Exception.php'; throw new Zend_Crypt_Hmac_Exception('provided hash string is null or empty'); } $hash = strtolower($hash); if (isset(self::$_hashPackFormats[$hash])) { self::$_packFormat = self::$_hashPackFormats[$hash]; } $hashSupported = false; if (function_exists('hash_algos') && in_array($hash, hash_algos())) { $hashSupported = true; } if ($hashSupported === false && function_exists('mhash') && in_array($hash, self::$_supportedAlgosMhash)) { $hashSupported = true; } if ($hashSupported === false && function_exists($hash)) { $hashSupported = true; } if ($hashSupported === false) { require_once 'Zend/Crypt/Hmac/Exception.php'; throw new Zend_Crypt_Hmac_Exception('hash algorithm provided is not supported on this PHP installation; please enable the hash or mhash extensions'); } self::$_hashAlgorithm = $hash; }