Example #1
0
 public function testBias()
 {
     $this->markTestSkipped('This test can fail randomly; only enable it when needed.');
     // Populate:
     $buffer = array_fill(0, 10, 0);
     // Perform the experiment:
     for ($i = 0; $i < 5000; ++$i) {
         // Increase a random index by 1
         $j = \Resonantcore\Lib\Secure::random(0, 9);
         ++$buffer[$j];
     }
     var_dump($buffer);
     // Analyze the results:
     for ($i = 0; $i < 10; ++$i) {
         // If any of these are 0, then our RNG is failing us
         $this->assertNotEquals($buffer[$i], 0);
     }
 }
Example #2
0
 /**
  * Generate, store, and return the index and token
  * 
  * @return array [string, string]
  */
 protected static function generateToken()
 {
     $index = \base64_encode(Resonant\Secure::random_bytes(18));
     $token = \base64_encode(Resonant\Secure::random_bytes(32));
     $_SESSION[self::SESSION_INDEX][$index] = ['created' => \intval(\date('YmdHis')), 'uri' => isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $_SERVER['SCRIPT_NAME'], 'token' => $token];
     self::recycleTokens();
     return [$index, $token];
 }
Example #3
0
echo "\n## random(\$min, \$max)\n";
$charset = array_merge(range('a', 'z'), range('2', '7'));
$buffer = '';
for ($i = 0; $i < 16; ++$i) {
    // Get a random index
    $n = \Resonantcore\Lib\Secure::random(0, 31);
    // Append a random character from $charset to buffer
    $buffer .= $charset[$n];
}
echo $buffer . "\n";
unset($buffer);
/* Secure::random_bytes($num) */
echo "\n## random_bytes(\$num)\n";
echo base64_encode(\Resonantcore\Lib\Secure::random_bytes(32)) . "\n";
/* Secure::noHTML($str) */
echo "\n## noHTML(\$str)\n";
$buffer = \Resonantcore\Lib\Secure::noHTML('<br />');
if ($buffer === '&lt;br /&gt') {
    echo "No HTML succeeded!\n";
}
unset($buffer);
/* Secure::file_valid($file, $jail_dir) */
echo "\n## file_valid(\$file, \$jail_dir)\n";
$buffer = \Resonantcore\Lib\Secure::file_valid($_SERVER['PHP_SELF'], BASE);
var_dump($buffer);
unset($buffer);
/* Secure::random_positive_int() */
echo "\n## random_positive_int()\n";
$buffer = \Resonantcore\Lib\Secure::random_positive_int();
var_dump($buffer);
unset($buffer);