public function setGenerator($secure = true, Generator $generator = null) { if ($secure === true && $generator === null) { if ($this->hasMCrypt()) { $this->generator = new MCrypt(); } elseif ($this->hasOpenSSL()) { $this->generator = new OpenSSL(); } else { throw new errors\Insecure('MCrypt or OpenSSL extension not found'); } } elseif ($generator !== null) { $this->generator = $generator; } else { $this->generator = new Basic(); } if ($secure === true) { if ($generator->isSecure() === false) { throw new errors\Insecure('The provided generator is not a CSPRNG'); } } return true; }