trait TfaRandomTrait in Two-factor Authentication (TFA) 8
Trait TfaRandomTrait for generating cryptographically secure random data.
@package Drupal\tfa
Hierarchy
- trait \Drupal\tfa\TfaRandomTrait
1 file declares its use of TfaRandomTrait
- TfaRecoveryCode.php in src/Plugin/ TfaValidation/ TfaRecoveryCode.php 
File
- src/TfaRandomTrait.php, line 10 
Namespace
Drupal\tfaView source
trait TfaRandomTrait {
  /**
   * Numbers allowed during random string generation.
   *
   * Note that the numbers '0' and '1' have been remove to avoid confusion with
   * the letters 'O' and 'l'.
   *
   * @var string
   */
  protected $allowedRandomNumbers = '23456789';
  /**
   * Letters allowed during random string generation.
   *
   * Note that the letters 'O' and 'l' have been removed to avoid confusion with
   * the numbers '0' and '1'.
   *
   * @var string
   */
  protected $allowedRandomLetters = 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
  /**
   * Generate a random integer of the given character length.
   *
   * @param int $length
   *   Length of returned value.
   *
   * @return int
   *   Random integer of given length.
   *
   * @throws \Exception
   */
  public function randomInteger($length) {
    return $this
      ->randomCharacters($length, $this->allowedRandomNumbers);
  }
  /**
   * Generate a random string of the given character length.
   *
   * @param int $length
   *   Length of returned value.
   *
   * @return string
   *   Random integer of given length.
   *
   * @throws \Exception
   */
  public function randomString($length) {
    return $this
      ->randomCharacters($length, $this->allowedRandomLetters);
  }
  /**
   * Generate random characters of the given length and allowable characters.
   *
   * @param int $length
   *   The desired length of the returned string.
   * @param string $allowable_characters
   *   Characters that are allowed to be return in the generated string.
   *
   * @return string
   *   Random string of given length and allowed characters.
   *
   * @throws \Exception
   */
  protected function randomCharacters($length, $allowable_characters) {
    // Zero-based count of characters in the allowable list:
    $len = strlen($allowable_characters) - 1;
    // Start with a blank string.
    $characters = '';
    // Loop the number of times specified by $length.
    for ($i = 0; $i < $length; $i++) {
      do {
        // Find a secure random number within the range needed.
        $index = ord(random_bytes(1));
      } while ($index > $len);
      // Each iteration, pick a random character from the
      // allowable string and append it to the string we're building.
      $characters .= $allowable_characters[$index];
    }
    return $characters;
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| TfaRandomTrait:: | protected | property | Letters allowed during random string generation. | |
| TfaRandomTrait:: | protected | property | Numbers allowed during random string generation. | |
| TfaRandomTrait:: | protected | function | Generate random characters of the given length and allowable characters. | |
| TfaRandomTrait:: | public | function | Generate a random integer of the given character length. | |
| TfaRandomTrait:: | public | function | Generate a random string of the given character length. | 
