PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` modx= & $modx; if (is_array($options)) { $this->options = $options; } } /** * Get an option for the MODX hashing service. * * Searches for local options and then prefixes keys with encrypt_ to look for * MODX System Settings. * * @param string $key The option key to get a value for. * @param array|null $options An optional array of options to look in first. * @param mixed $default An optional default value to return if no value is set. * @return mixed The option value or the specified default if not found. */ public function getOption($key, $options = null, $default = null) { if (is_array($options) && array_key_exists($key, $options)) { $option = $options[$key]; } elseif (array_key_exists($key, $this->options)) { $option = $this->options[$key]; } else { $option = $this->modx->getOption('hashing_' . $key, $this->options, $default); } return $option; } /** * Get a hash implementation instance. * * The implementation is made available as a member variable of the modHashing service. * * @param string $key A key string identifying the instance; must be a valid PHP variable name. * @param string $class A valid fully-qualified modHash derivative class name * @param array|null $options An optional array of hash options. * @return modHash|null A reference to a modHash instance or null if could not be instantiated. */ public function getHash($key, $class, $options = array()) { $className = $this->modx->loadClass($class, '', false, true); if ($className) { if (empty($key)) $key = strtolower(str_replace('mod', '', $className)); if (!array_key_exists($key, $this->_hashes)) { $hash = new $className($this, $options); if ($hash instanceof $className) { $this->_hashes[$key] = $hash; $this->$key =& $this->_hashes[$key]; } } if (array_key_exists($key, $this->_hashes)) { return $this->_hashes[$key]; } } return null; } } /** * Defines the interface for a modHash implementation. * * @abstract Implement a derivative of this class to define an actual hash algorithm implementation. * @package modx * @subpackage hashing */ abstract class modHash { /** * A reference to the modHashing service hosting this modHash instance. * @var modHashing */ public $host= null; /** * An array of options for the modHash implementation. * @var array */ public $options= array(); /** * Constructs a new instance of the modHash class. * * @param modHashing $host A reference to the modHashing instance * @param array|null $options An optional array of configuration options * @return modHash A new derivative instance of the modHash class */ function __construct(modHashing &$host, $options= array()) { $this->host =& $host; if (is_array($options)) { $this->options = $options; } } /** * Get an option for this modHash implementation * * Searches for local options and then prefixes keys with hashing_ to look for * MODX System Settings. * * @param string $key The option key to get a value for. * @param array|null $options An optional array of options to look in first. * @param mixed $default An optional default value to return if no value is set. * @return mixed The option value or the specified default if not found. */ public function getOption($key, $options = null, $default = null) { if (is_array($options) && array_key_exists($key, $options)) { $option = $options[$key]; } else { $option = $this->host->getOption($key, $this->options, $default); } return $option; } /** * Generate a hash of the given string using the provided options. * * @abstract * @param string $string A string to generate a secure hash from. * @param array $options An array of options to be passed to the hash implementation. * @return mixed The hash result or false on failure. */ public abstract function hash($string, array $options = array()); }