| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- <?php
- namespace RobThree\Auth\Providers\Rng;
- class OpenSSLRNGProvider implements IRNGProvider
- {
- /** @var bool */
- private $requirestrong;
- /**
- * @param bool $requirestrong
- */
- public function __construct($requirestrong = true)
- {
- $this->requirestrong = $requirestrong;
- }
- /**
- * {@inheritdoc}
- */
- public function getRandomBytes($bytecount)
- {
- $result = openssl_random_pseudo_bytes($bytecount, $crypto_strong);
- if ($this->requirestrong && ($crypto_strong === false)) {
- throw new RNGException('openssl_random_pseudo_bytes returned non-cryptographically strong value');
- }
- if ($result === false) {
- throw new RNGException('openssl_random_pseudo_bytes returned an invalid value');
- }
- return $result;
- }
- /**
- * {@inheritdoc}
- */
- public function isCryptographicallySecure()
- {
- return $this->requirestrong;
- }
- }
|