* @version 0.0.0 * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Hub Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.ship-simu.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ class HubcoinRewardFeature extends BaseFeature implements Feature { /** * Protected constructor * * @return void */ protected function __construct () { // Call parent constructor parent::__construct(__CLASS__); } /** * Creates an instance of this Feature class and prepares it for usage * * @return $featureInstance An instance of this Feature class */ public final static function createHubcoinRewardFeature () { // Get a new instance $featureInstance = new HubcoinRewardFeature(); // Return the prepared instance return $featureInstance; } /** * Checks whether this feature can be made available to other classes. * * @return $isAvailable Whether this feature is available */ public function isFeatureAvailable () { // Debug message //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: CALLED!', __METHOD__, __LINE__)); // Testing this feature is pretty simple: $isAvailable = (($this->getConfigInstance()->getConfigEntry('extension_scrypt_loaded') === TRUE) && (extension_loaded('scrypt')) && (is_callable('scrypt'))); // Debug message //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: isAvailable=%d - EXIT!', __METHOD__, __LINE__, intval($isAvailable))); // Return status return $isAvailable; } /////////////////////////////////////////////////////////////////////////// // Feature methods /////////////////////////////////////////////////////////////////////////// /** * Feature method 'generateHash' * * @param $data Data to hash * @return $hash Finished hash */ public function featureMethodGenerateHash ($data) { // Debug message //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: data()=%d - CALLED!', __METHOD__, __LINE__, strlen($data))); // Make sure the feature is available assert(FrameworkFeature::isFeatureAvailable('hubcoin_reward')); // Call inner class $hash = Scrypt::hashScrypt($data); // Debug message //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: hash=%s - EXIT!', __METHOD__, __LINE__, $hash)); // Return generated hash return $hash; } /** * Feature method 'checkHash' * * @param $data Data to check hash for * @param $hash Previously generated hash for valdiation * @return $isValid Whether the given hash matches a new one from given data */ public function featureMethodCheckHash ($data, $hash) { // Debug message //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: data()=%d,hash=%s - CALLED!', __METHOD__, __LINE__, strlen($data), $hash)); // Make sure the feature is available assert(FrameworkFeature::isFeatureAvailable('hubcoin_reward')); // Determine it $isValid = Scrypt::checkScrypt($data, $hash); // Debug message //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: isValid=%d - EXIT!', __METHOD__, __LINE__, intval($isValid))); // Return status return $isValid; } } // [EOF] ?>