<?php

namespace RobThree\Auth\Providers\Rng;

class MCryptRNGProvider implements IRNGProvider
{
    private $source;

    function __construct($source = MCRYPT_DEV_URANDOM)
    {
        $this->source = $source;
    }

    public function getRandomBytes($bytecount)
    {
        $result = @mcrypt_create_iv($bytecount, $this->source);
        if ($result === false) {
            throw new \RNGException('mcrypt_create_iv returned an invalid value');
        }
        return $result;
    }

    public function isCryptographicallySecure()
    {
        return true;
    }
}
