You are here

public function ParagonIE_Sodium_Core_ChaCha20_IetfCtx::__construct in Automatic Updates 7

Same name and namespace in other branches
  1. 8 vendor/paragonie/sodium_compat/src/Core/ChaCha20/IetfCtx.php \ParagonIE_Sodium_Core_ChaCha20_IetfCtx::__construct()

ParagonIE_Sodium_Core_ChaCha20_IetfCtx constructor.

@internal You should not use this directly from another application

Parameters

string $key ChaCha20 key.:

string $iv Initialization Vector (a.k.a. nonce).:

string $counter The initial counter value.: Defaults to 4 0x00 bytes.

Throws

InvalidArgumentException

TypeError

Overrides ParagonIE_Sodium_Core_ChaCha20_Ctx::__construct

File

vendor/paragonie/sodium_compat/src/Core/ChaCha20/IetfCtx.php, line 24

Class

ParagonIE_Sodium_Core_ChaCha20_IetfCtx
Class ParagonIE_Sodium_Core_ChaCha20_IetfCtx

Code

public function __construct($key = '', $iv = '', $counter = '') {
  if (self::strlen($iv) !== 12) {
    throw new InvalidArgumentException('ChaCha20 expects a 96-bit nonce in IETF mode.');
  }
  parent::__construct($key, self::substr($iv, 0, 8), $counter);
  if (!empty($counter)) {
    $this->container[12] = self::load_4(self::substr($counter, 0, 4));
  }
  $this->container[13] = self::load_4(self::substr($iv, 0, 4));
  $this->container[14] = self::load_4(self::substr($iv, 4, 4));
  $this->container[15] = self::load_4(self::substr($iv, 8, 4));
}