/** * Generate a medium-strength random string of the given length. * * @param int $length length of the generated string * @param string $characters characters to use to generate the string * @return string */ public function generateString($length, $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') { if (is_null($this->_factory)) { $this->_factory = new \RandomLib\Factory(); $this->_generator = $this->_factory->getMediumStrengthGenerator(); } return $this->_generator->generateString($length, $characters); }
public function getGenerator($strength) { switch ($strength) { case 'low': return $this->factory->getLowStrengthGenerator(); case 'medium': return $this->factory->getMediumStrengthGenerator(); case 'high': throw new \InvalidArgumentException('"high" strength is currently unavailable'); default: throw new \InvalidArgumentException('Could not find a generator for the specified strength'); } }
/** * Create a medium strength key * * Generates a medium strength random number of size $bytes and hash with the * algorithm specified in $hash. * * @param string $hash hash function to use * @param integer $bytes the number of random bytes to generate * * @return string hashed token */ public static function generateKey($hash = 'sha512', $bytes = 128) { $factory = new Factory(); $generator = $factory->getMediumStrengthGenerator(); $token = hash($hash, $generator->generate($bytes)); return $token; }
/** * @param Request $request * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function saveTokenAction(Request $request) { $apiToken = new ApiToken(); $apiToken->setUser($this->getUser()); $formBuilder = $this->createFormBuilder($apiToken, array('action' => $this->generateUrl('api_key_create'), 'data_class' => 'CSBill\\UserBundle\\Entity\\ApiToken')); $formBuilder->add('name'); $form = $formBuilder->getForm(); $form->handleRequest($request); $response = array(); if ($form->isValid()) { $factory = new Factory(); $generator = $factory->getMediumStrengthGenerator(); $token = $generator->generateString(64, Generator::CHAR_ALNUM); $apiToken->setToken($token); $this->save($apiToken); $response['status'] = 0; $response['token'] = array('token' => $apiToken->getToken(), 'name' => $apiToken->getName(), 'id' => $apiToken->getId()); return $this->json($response); } else { $response['status'] = 1; } $content = $this->renderView('CSBillUserBundle:Api:create.html.twig', array('form' => $form->createView())); $response['content'] = $content; return $this->json($response); }
function let(Factory $factory, Generator $low, Generator $medium) { $factory->getMediumStrengthGenerator()->willReturn($medium); $factory->getLowStrengthGenerator()->willReturn($low); $this->beConstructedWith($factory); $defaults = ['length' => 32, 'chars' => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'strength' => 'medium']; $this->setOptions($defaults); }
public function testGetSetKeyGenerator() { $this->assertInstanceOf('QueryAuth\\KeyGenerator', $this->requestSigner->getKeyGenerator()); $randomFactory = new RandomFactory(); $keyGenerator = new KeyGenerator($randomFactory->getMediumStrengthGenerator()); $this->requestSigner->setKeyGenerator($keyGenerator); $this->assertSame($keyGenerator, $this->requestSigner->getKeyGenerator()); }
public function __construct(Generator $generator = null) { $this->generator = $generator; if ($this->generator == null) { $factory = new Factory(); $this->generator = $factory->getMediumStrengthGenerator(); } }
/** * Generates a random number in the provided range, where all possible values are equally likely. (Even distribution.) * * NOTE: If $max is more than PHP_INT_MAX or $min is less than PHP_INT_MIN, no additional entropy will be gained for * the random number, and the distribution will become less evenly distributed across all possible values due to * rounding. * * @param $min * @param $max * @return NumberInterface */ public function random($min = 0, $max = PHP_INT_MAX) { $min = Numbers::makeOrDont(Numbers::IMMUTABLE, $min); $max = Numbers::makeOrDont(Numbers::IMMUTABLE, $max); $difference = new ImmutableNumber(BCProvider::add($max->absValue(), $min->absValue())); $randFactory = new Factory(); if ($max->compare(PHP_INT_MAX) != 1 && $min->compare(PHP_INT_MIN) != -1 && $difference->compare(PHP_INT_MAX) != 1) { $x = $randFactory->getMediumStrengthGenerator()->generateInt($min, $max); return Numbers::makeFromBase10($this->numberType, $x, null, $this->contextBase); } else { $x = $randFactory->getMediumStrengthGenerator()->generateInt(); $fraction = BCProvider::divide($x, PHP_INT_MAX); $addedValue = BCProvider::multiply($fraction, $difference->getValue()); $randVal = Numbers::makeFromBase10($this->numberType, BCProvider::add($min->getValue(), $addedValue), null, $this->contextBase); return $randVal->round(); } }
function __construct() { parent::__construct(); $factory = new RandomLib(); $this->RandomLib = $factory->getMediumStrengthGenerator(); $this->load->module('template'); $this->load->module('categories'); }
public static function generateLink($event) { $model = $event->getModel(); if (!$model->link) { $factory = new Factory(); $generator = $factory->getMediumStrengthGenerator(); $model->link = $generator->generateString(32, Generator::CHAR_ALNUM); } }
public function getAlternativeGenerator() { if (isset($this->generator)) { return $this->generator; } $factory = new RandomLib\Factory(); $this->generator = $factory->getMediumStrengthGenerator(); return $this->generator; }
public function getAlternativeGenerator() { if (isset($this->generator)) { return $this->generator; } $factory = new RandomLib\Factory(); $factory->registerSource('HashTiming', '\\SecurityMultiTool\\Random\\Source\\HashTiming'); $this->generator = $factory->getMediumStrengthGenerator(); return $this->generator; }
/** * @covers RandomLib\Factory::getMediumStrengthGenerator * @covers RandomLib\Factory::getGenerator * @covers RandomLib\Factory::findMixer * @covers RandomLib\Factory::findSources */ public function testGetMediumStrengthGenerator() { $factory = new Factory(); $generator = $factory->getMediumStrengthGenerator(); $this->assertTrue($generator instanceof Generator); $mixer = call_user_func(array(get_class($generator->getMixer()), 'getStrength')); $this->assertTrue($mixer->compare(new Strength(Strength::MEDIUM)) <= 0); foreach ($generator->getSources() as $source) { $strength = call_user_func(array(get_class($source), 'getStrength')); $this->assertTrue($strength->compare(new Strength(Strength::MEDIUM)) >= 0); } }
/** * Retrieve a fallback/alternative RNG generator * * @return RandomLib\Generator */ public static function getAlternativeGenerator() { if (null !== static::$generator) { return static::$generator; } if (!class_exists('RandomLib\\Factory')) { throw new Exception\RuntimeException('The RandomLib fallback pseudorandom number generator (PRNG) ' . ' must be installed in the absence of the OpenSSL and ' . 'Mcrypt extensions'); } $factory = new RandomLib\Factory(); $factory->registerSource('HashTiming', 'Zend\\Math\\Source\\HashTiming'); static::$generator = $factory->getMediumStrengthGenerator(); return static::$generator; }
public function login(Request $request, Response $response, array $arguments) { $body = $request->getParsedBody(); $user = User::where('email', $body['email'])->first(); if (!$user) { return $response->withJson(['message' => 'no_such_email'], 400); } if (!password_verify($body['password'], $user->password)) { return $response->withJson(['message' => 'incorrect_password'], 400); } $factory = new Factory(); $generator = $factory->getMediumStrengthGenerator(); $tokenValue = $generator->generateString(128, Generator::CHAR_ALNUM); $token = new UserToken(); $token->value = $tokenValue; $user->user_tokens()->save($token); $output = ['user' => $user, 'token' => $token->value]; return $response->withJson($output, 200); }
/** * Convenience method to get a medium strength random number generator. * * Medium Strength should be used for most needs of a cryptographic nature. * They are strong enough to be used as keys and salts. However, they do * take some time and resources to generate, so they should not be over-used * * @return $this */ public function getMediumStrengthGenerator() { $this->generator = $this->factory->getMediumStrengthGenerator(); return $this; }
$app->add(new CsrfMiddleware()); $app->configureMode($app->config('mode'), function () use($app) { $app->config = Config::load(INC_ROOT . "/app/config/{$app->mode}.php"); }); require INC_ROOT . '/app/database.php'; require INC_ROOT . '/app/filters.php'; require INC_ROOT . '/app/routes/routes.php'; $app->auth = false; $app->container->set('user', function () { return new User(); }); $app->container->set('bbcode', function () use($app) { return new Parser(); }); $app->container->singleton('hash', function () use($app) { return new Hash($app->config); }); $app->container->singleton('validation', function () use($app) { return new Validator($app->user, $app->hash, $app->auth); }); $app->container->singleton('mail', function () use($app) { $mailer = new Mailgun($app->config->get('mail.secret')); return new Mailer($app->view, $app->config, $mailer); }); $app->container->singleton('randomlib', function () { $factory = new RandomLib(); return $factory->getMediumStrengthGenerator(); }); $view = $app->view(); $view->parserOptions = ['debug' => $app->config->get('twig.debug')]; $view->parserExtensions = [new TwigExtension(), new Twig_Extension_Debug(), new \Twig_Extensions_Extension_Date()];
protected function createGenerator() { $ircmaxellFactory = new Factory(); $ircmaxellGenerator = $ircmaxellFactory->getMediumStrengthGenerator(); return new \Akamon\OAuth2\Server\Infrastructure\IrcmaxellRandom\IrcmaxellRandomGenerator($ircmaxellGenerator); }
/** * @param InputInterface $input * * @return $this */ private function saveConfig(InputInterface $input) { $factory = new Factory(); // Don't update installed here, in case something goes wrong with the rest of the installation process $config = array('database_driver' => $input->getOption('database-driver'), 'database_host' => $input->getOption('database-host'), 'database_port' => $input->getOption('database-port'), 'database_name' => $input->getOption('database-name'), 'database_user' => $input->getOption('database-user'), 'database_password' => $input->getOption('database-password'), 'mailer_transport' => $input->getOption('mailer-transport'), 'mailer_host' => $input->getOption('mailer-host'), 'mailer_user' => $input->getOption('mailer-user'), 'mailer_password' => $input->getOption('mailer-password'), 'mailer_port' => $input->getOption('mailer-port'), 'mailer_encryption' => $input->getOption('mailer-encryption'), 'locale' => $input->getOption('locale'), 'currency' => $input->getOption('currency'), 'secret' => $factory->getMediumStrengthGenerator()->generateString(32)); $this->getContainer()->get('csbill.core.config_writer')->dump($config); return $this; }
/** * @param array $data * * @throws \RuntimeException */ protected function saveConfig(array $data) { $factory = new Factory(); $time = new \DateTime('NOW'); $config = array('locale' => $data['locale'], 'currency' => $data['currency'], 'base_url' => $data['base_url'], 'installed' => $time->format(\DateTime::ISO8601), 'secret' => $factory->getMediumStrengthGenerator()->generateString(32)); $this->get('csbill.core.config_writer')->dump($config); }
public function __construct(Factory $factory) { $this->generator = $factory->getMediumStrengthGenerator(); }
/** * Generates the user password * * @return string */ public static function generateUserPassword() { $factory = new Factory(); $generator = $factory->getMediumStrengthGenerator(); return $generator->generateString(20, Generator::CHAR_ALNUM); }
/** * Generate a random 32character key * **/ public static function makeKey() { $factory = new Factory(); $generator = $factory->getMediumStrengthGenerator(); return $generator->generateString(32); }
public function getDice() { $factory = new Factory(); $generator = $factory->getMediumStrengthGenerator(); return new RandomLibDice($generator); }
/** * Generates the app secret * * @return string */ public static function generateAppSecret() { $factory = new Factory(); $generator = $factory->getMediumStrengthGenerator(); return $generator->generateString(64); }
/** * Generates a random token. * * @param int $len * * @return string */ private function generateToken($len = 32) { if (!$this->random) { $factory = new Factory(); $this->random = $factory->getMediumStrengthGenerator(); } return $this->random->generateString($len, Generator::CHAR_ALNUM); }