Merge pull request #14789 from Art4/fix-randomdigits

Fix Crypto::randomDigits()
This commit is contained in:
Hypolite Petovan 2025-02-06 11:03:08 -05:00 committed by GitHub
commit 87e3d8c790
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 5 deletions

View file

@ -299,12 +299,19 @@ class Crypto
* Creates cryptographic secure random digits * Creates cryptographic secure random digits
* *
* @param string $digits The count of digits * @param string $digits The count of digits
* @return int The random Digits * @return string The random Digits
* *
* @throws \Exception In case 'random_int' isn't usable * @throws \Exception In case 'random_int' isn't usable
*/ */
public static function randomDigits($digits) public static function randomDigits($digits): string
{ {
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 $rn;
} }
} }

View file

@ -21,10 +21,11 @@ class CryptoTest extends TestCase
{ {
$random_int = $this->getFunctionMock('Friendica\Util', 'random_int'); $random_int = $this->getFunctionMock('Friendica\Util', 'random_int');
$random_int->expects($this->any())->willReturnCallback(function ($min, $max) { $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() public function testDiasporaPubRsaToMe()