Chris@0: 2147483647) { Chris@0: $buf = ''; Chris@0: for ($i = 0; $i < $bytes; $i += 1073741824) { Chris@0: $n = ($bytes - $i) > 1073741824 Chris@0: ? 1073741824 Chris@0: : $bytes - $i; Chris@0: $buf .= \Sodium\randombytes_buf($n); Chris@0: } Chris@0: } else { Chris@16: /** @var string|bool $buf */ Chris@0: $buf = \Sodium\randombytes_buf($bytes); Chris@0: } Chris@0: Chris@16: if (is_string($buf)) { Chris@0: if (RandomCompat_strlen($buf) === $bytes) { Chris@0: return $buf; Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * If we reach here, PHP has failed us. Chris@0: */ Chris@0: throw new Exception( Chris@0: 'Could not gather sufficient random data' Chris@0: ); Chris@0: } Chris@0: }