wppaste
WordPress

ParagonIE_Sodium_Core_ChaCha20_Ctx

Source
wp-includes/sodium_compat/src/Core/ChaCha20/Ctx.php:10
Class ParagonIE_Sodium_Core_ChaCha20_Ctx

Compatibility

WordPress
core
  • 6.7.7
  • 6.8.8
  • 6.9.7
  • 7.0.4
  • 7.1.0

Present in every tracked release (6.7.7 to 7.1.0).

Properties · 1

$containerSplFixedArrayprotected

Methods · 6

Source code

class ParagonIE_Sodium_Core_ChaCha20_Ctx extends ParagonIE_Sodium_Core_Util implements ArrayAccess{    /**     * @var SplFixedArray internally, <int, int>     */    protected $container;     /**     * ParagonIE_Sodium_Core_ChaCha20_Ctx constructor.     *     * @internal You should not use this directly from another application     *     * @param string $key     ChaCha20 key.     * @param string $iv      Initialization Vector (a.k.a. nonce).     * @param string $counter The initial counter value.     *                        Defaults to 8 0x00 bytes.     * @throws InvalidArgumentException     * @throws TypeError     */    public function __construct($key = '', $iv = '', $counter = '')    {        if (self::strlen($key) !== 32) {            throw new InvalidArgumentException('ChaCha20 expects a 256-bit key.');        }        if (self::strlen($iv) !== 8) {            throw new InvalidArgumentException('ChaCha20 expects a 64-bit nonce.');        }        $this->container = new SplFixedArray(16);         /* "expand 32-byte k" as per ChaCha20 spec */        $this->container[0]  = 0x61707865;        $this->container[1]  = 0x3320646e;        $this->container[2]  = 0x79622d32;        $this->container[3]  = 0x6b206574;        $this->container[4]  = self::load_4(self::substr($key, 0, 4));        $this->container[5]  = self::load_4(self::substr($key, 4, 4));        $this->container[6]  = self::load_4(self::substr($key, 8, 4));        $this->container[7]  = self::load_4(self::substr($key, 12, 4));        $this->container[8]  = self::load_4(self::substr($key, 16, 4));        $this->container[9]  = self::load_4(self::substr($key, 20, 4));        $this->container[10] = self::load_4(self::substr($key, 24, 4));        $this->container[11] = self::load_4(self::substr($key, 28, 4));         $counter = $this->initCounter($counter);        $this->container[12] = self::load_4(self::substr($counter, 0, 4));        $this->container[13] = self::load_4(self::substr($counter, 4, 4));        $this->container[14] = self::load_4(self::substr($iv, 0, 4));        $this->container[15] = self::load_4(self::substr($iv, 4, 4));    }     /**     * @internal You should not use this directly from another application     *     * @param int $offset     * @param int $value     * @return void     * @psalm-suppress MixedArrayOffset     */    #[ReturnTypeWillChange]    public function offsetSet($offset, $value)    {        if (!is_int($offset)) {            throw new InvalidArgumentException('Expected an integer');        }        if (!is_int($value)) {            throw new InvalidArgumentException('Expected an integer');        }        $this->container[$offset] = $value;    }     /**     * @internal You should not use this directly from another application     *     * @param int $offset     * @return bool     */    #[ReturnTypeWillChange]    public function offsetExists($offset)    {        return isset($this->container[$offset]);

Changelog

One change between 6.7.7 and 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

6.9.7
Method initCounter() added.verified against source

About this page

Parsed data
Generated from the wordpress-develop 7.1.0 tag, from src/wp-includes/sodium_compat/src/Core/ChaCha20/Ctx.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.