PHPIndex

This page lists files in the current directory. You can view content, get download/execute commands for Wget, Curl, or PowerShell, or filter the list using wildcards (e.g., `*.sh`).

CSRNGProvider.php
wget 'https://lists2.roe3.org/hesk/vendor/robthree/twofactorauth/lib/Providers/Rng/CSRNGProvider.php'
View Content
<?php

namespace RobThree\Auth\Providers\Rng;

class CSRNGProvider implements IRNGProvider
{
    /**
     * {@inheritdoc}
     */
    public function getRandomBytes($bytecount)
    {
        return random_bytes($bytecount);    // PHP7+
    }

    /**
     * {@inheritdoc}
     */
    public function isCryptographicallySecure()
    {
        return true;
    }
}
HashRNGProvider.php
wget 'https://lists2.roe3.org/hesk/vendor/robthree/twofactorauth/lib/Providers/Rng/HashRNGProvider.php'
View Content
<?php

namespace RobThree\Auth\Providers\Rng;

class HashRNGProvider implements IRNGProvider
{
    /** @var string */
    private $algorithm;

    /**
     * @param string $algorithm
     */
    public function __construct($algorithm = 'sha256')
    {
        $algos = array_values(hash_algos());
        if (!in_array($algorithm, $algos, true)) {
            throw new RNGException('Unsupported algorithm specified');
        }
        $this->algorithm = $algorithm;
    }

    /**
     * {@inheritdoc}
     */
    public function getRandomBytes($bytecount)
    {
        $result = '';
        $hash = mt_rand();
        for ($i = 0; $i < $bytecount; $i++) {
            $hash = hash($this->algorithm, $hash . mt_rand(), true);
            $result .= $hash[mt_rand(0, strlen($hash) - 1)];
        }
        return $result;
    }

    /**
     * {@inheritdoc}
     */
    public function isCryptographicallySecure()
    {
        return false;
    }
}
IRNGProvider.php
wget 'https://lists2.roe3.org/hesk/vendor/robthree/twofactorauth/lib/Providers/Rng/IRNGProvider.php'
View Content
<?php

namespace RobThree\Auth\Providers\Rng;

interface IRNGProvider
{
    /**
     * @param int $bytecount the number of bytes of randomness to return
     *
     * @return string the random bytes
     */
    public function getRandomBytes($bytecount);

    /**
     * @return bool whether this provider is cryptographically secure
     */
    public function isCryptographicallySecure();
}
MCryptRNGProvider.php
wget 'https://lists2.roe3.org/hesk/vendor/robthree/twofactorauth/lib/Providers/Rng/MCryptRNGProvider.php'
View Content
<?php

namespace RobThree\Auth\Providers\Rng;

class MCryptRNGProvider implements IRNGProvider
{
    /** @var int */
    private $source;

    /**
     * @param int $source
     */
    public function __construct($source = MCRYPT_DEV_URANDOM)
    {
        $this->source = $source;
    }

    /**
     * {@inheritdoc}
     */
    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;
    }

    /**
     * {@inheritdoc}
     */
    public function isCryptographicallySecure()
    {
        return true;
    }
}
OpenSSLRNGProvider.php
wget 'https://lists2.roe3.org/hesk/vendor/robthree/twofactorauth/lib/Providers/Rng/OpenSSLRNGProvider.php'
View Content
<?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;
    }
}
RNGException.php
wget 'https://lists2.roe3.org/hesk/vendor/robthree/twofactorauth/lib/Providers/Rng/RNGException.php'
View Content
<?php

namespace RobThree\Auth\Providers\Rng;

use RobThree\Auth\TwoFactorAuthException;

class RNGException extends TwoFactorAuthException {}