diff --git a/src/Util/Crypto.php b/src/Util/Crypto.php index 4c0e9b72dc..588be8f932 100644 --- a/src/Util/Crypto.php +++ b/src/Util/Crypto.php @@ -305,6 +305,13 @@ class Crypto */ public static function randomDigits($digits) { - return random_int(0, 10 ** $digits - 1); + $rn = ''; + + // generating cryptographically secure pseudo-random integers + for ($i = 0; $i < $digits; $i++) { + $rn .= random_int(0, 9); + } + + return (int) $rn; } } diff --git a/tests/Unit/Util/CryptoTest.php b/tests/Unit/Util/CryptoTest.php index 41fb1e2826..55d24562a9 100644 --- a/tests/Unit/Util/CryptoTest.php +++ b/tests/Unit/Util/CryptoTest.php @@ -21,10 +21,11 @@ class CryptoTest extends TestCase { $random_int = $this->getFunctionMock('Friendica\Util', 'random_int'); $random_int->expects($this->any())->willReturnCallback(function ($min, $max) { - return 12345678; + return 1; }); - self::assertSame(12345678, Crypto::randomDigits(8)); + self::assertSame(1, Crypto::randomDigits(1)); + self::assertSame(11111111, Crypto::randomDigits(8)); } public function testDiasporaPubRsaToMe()