From 0ac68f6b86a912fe5509e6b889eeff7138dd8454 Mon Sep 17 00:00:00 2001 From: RobThree Date: Wed, 6 Jun 2018 01:47:03 +0200 Subject: [PATCH] * Fix PHP7.2 issue with HashRNGProvider * Fix PHP7.1+ issue with MCryptRNGProvider --- lib/Providers/Rng/HashRNGProvider.php | 2 +- tests/TwoFactorAuthTest.php | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/Providers/Rng/HashRNGProvider.php b/lib/Providers/Rng/HashRNGProvider.php index ca6e859..eb42577 100644 --- a/lib/Providers/Rng/HashRNGProvider.php +++ b/lib/Providers/Rng/HashRNGProvider.php @@ -17,7 +17,7 @@ class HashRNGProvider implements IRNGProvider $hash = mt_rand(); for ($i = 0; $i < $bytecount; $i++) { $hash = hash($this->algorithm, $hash.mt_rand(), true); - $result .= $hash[mt_rand(0, sizeof($hash))]; + $result .= $hash[mt_rand(0, strlen($hash)-1)]; } return $result; } diff --git a/tests/TwoFactorAuthTest.php b/tests/TwoFactorAuthTest.php index b409d62..36ca176 100644 --- a/tests/TwoFactorAuthTest.php +++ b/tests/TwoFactorAuthTest.php @@ -317,10 +317,12 @@ class TwoFactorAuthTest extends PHPUnit_Framework_TestCase * @requires function mcrypt_create_iv */ public function testMCryptRNGProvidersReturnExpectedNumberOfBytes() { - $rng = new \RobThree\Auth\Providers\Rng\MCryptRNGProvider(); - foreach ($this->getRngTestLengths() as $l) - $this->assertEquals($l, strlen($rng->getRandomBytes($l))); - $this->assertEquals(true, $rng->isCryptographicallySecure()); + if (function_exists('mcrypt_create_iv')) { + $rng = new \RobThree\Auth\Providers\Rng\MCryptRNGProvider(); + foreach ($this->getRngTestLengths() as $l) + $this->assertEquals($l, strlen($rng->getRandomBytes($l))); + $this->assertEquals(true, $rng->isCryptographicallySecure()); + } } /**