You are here

XChaCha20.php in Automatic Updates 7

File

vendor/paragonie/sodium_compat/src/Core32/XChaCha20.php
View source
<?php

if (class_exists('ParagonIE_Sodium_Core32_XChaCha20', false)) {
  return;
}

/**
 * Class ParagonIE_Sodium_Core32_XChaCha20
 */
class ParagonIE_Sodium_Core32_XChaCha20 extends ParagonIE_Sodium_Core32_HChaCha20 {

  /**
   * @internal You should not use this directly from another application
   *
   * @param int $len
   * @param string $nonce
   * @param string $key
   * @return string
   * @throws SodiumException
   * @throws TypeError
   */
  public static function stream($len = 64, $nonce = '', $key = '') {
    if (self::strlen($nonce) !== 24) {
      throw new SodiumException('Nonce must be 24 bytes long');
    }
    return self::encryptBytes(new ParagonIE_Sodium_Core32_ChaCha20_Ctx(self::hChaCha20(self::substr($nonce, 0, 16), $key), self::substr($nonce, 16, 8)), str_repeat("\0", $len));
  }

  /**
   * @internal You should not use this directly from another application
   *
   * @param string $message
   * @param string $nonce
   * @param string $key
   * @param string $ic
   * @return string
   * @throws SodiumException
   * @throws TypeError
   */
  public static function streamXorIc($message, $nonce = '', $key = '', $ic = '') {
    if (self::strlen($nonce) !== 24) {
      throw new SodiumException('Nonce must be 24 bytes long');
    }
    return self::encryptBytes(new ParagonIE_Sodium_Core32_ChaCha20_Ctx(self::hChaCha20(self::substr($nonce, 0, 16), $key), self::substr($nonce, 16, 8), $ic), $message);
  }

}

Classes

Namesort descending Description
ParagonIE_Sodium_Core32_XChaCha20 Class ParagonIE_Sodium_Core32_XChaCha20