class ParagonIE_Sodium_Core32_ChaCha20_Ctx in Automatic Updates 7
Same name and namespace in other branches
- 8 vendor/paragonie/sodium_compat/src/Core32/ChaCha20/Ctx.php \ParagonIE_Sodium_Core32_ChaCha20_Ctx
Class ParagonIE_Sodium_Core32_ChaCha20_Ctx
Hierarchy
- class \ParagonIE_Sodium_Core_Util
- class \ParagonIE_Sodium_Core32_Util
- class \ParagonIE_Sodium_Core32_ChaCha20_Ctx implements \ArrayAccess
- class \ParagonIE_Sodium_Core32_Util
Expanded class hierarchy of ParagonIE_Sodium_Core32_ChaCha20_Ctx
File
- vendor/
paragonie/ sodium_compat/ src/ Core32/ ChaCha20/ Ctx.php, line 10
View source
class ParagonIE_Sodium_Core32_ChaCha20_Ctx extends ParagonIE_Sodium_Core32_Util implements ArrayAccess {
/**
* @var SplFixedArray internally, <int, ParagonIE_Sodium_Core32_Int32>
*/
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 SodiumException
* @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] = new ParagonIE_Sodium_Core32_Int32(array(
0x6170,
0x7865,
));
$this->container[1] = new ParagonIE_Sodium_Core32_Int32(array(
0x3320,
0x646e,
));
$this->container[2] = new ParagonIE_Sodium_Core32_Int32(array(
0x7962,
0x2d32,
));
$this->container[3] = new ParagonIE_Sodium_Core32_Int32(array(
0x6b20,
0x6574,
));
$this->container[4] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 0, 4));
$this->container[5] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 4, 4));
$this->container[6] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 8, 4));
$this->container[7] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 12, 4));
$this->container[8] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 16, 4));
$this->container[9] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 20, 4));
$this->container[10] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 24, 4));
$this->container[11] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 28, 4));
if (empty($counter)) {
$this->container[12] = new ParagonIE_Sodium_Core32_Int32();
$this->container[13] = new ParagonIE_Sodium_Core32_Int32();
}
else {
$this->container[12] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($counter, 0, 4));
$this->container[13] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($counter, 4, 4));
}
$this->container[14] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 0, 4));
$this->container[15] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 4, 4));
}
/**
* @internal You should not use this directly from another application
*
* @param int $offset
* @param int|ParagonIE_Sodium_Core32_Int32 $value
* @return void
*/
public function offsetSet($offset, $value) {
if (!is_int($offset)) {
throw new InvalidArgumentException('Expected an integer');
}
if ($value instanceof ParagonIE_Sodium_Core32_Int32) {
/*
} elseif (is_int($value)) {
$value = ParagonIE_Sodium_Core32_Int32::fromInt($value);
*/
}
else {
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
* @psalm-suppress MixedArrayOffset
*/
public function offsetExists($offset) {
return isset($this->container[$offset]);
}
/**
* @internal You should not use this directly from another application
*
* @param int $offset
* @return void
* @psalm-suppress MixedArrayOffset
*/
public function offsetUnset($offset) {
unset($this->container[$offset]);
}
/**
* @internal You should not use this directly from another application
*
* @param int $offset
* @return mixed|null
* @psalm-suppress MixedArrayOffset
*/
public function offsetGet($offset) {
return isset($this->container[$offset]) ? $this->container[$offset] : null;
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ParagonIE_Sodium_Core32_ChaCha20_Ctx:: |
protected | property | ||
ParagonIE_Sodium_Core32_ChaCha20_Ctx:: |
public | function | @internal You should not use this directly from another application | |
ParagonIE_Sodium_Core32_ChaCha20_Ctx:: |
public | function | @internal You should not use this directly from another application | |
ParagonIE_Sodium_Core32_ChaCha20_Ctx:: |
public | function | @internal You should not use this directly from another application | |
ParagonIE_Sodium_Core32_ChaCha20_Ctx:: |
public | function | @internal You should not use this directly from another application | |
ParagonIE_Sodium_Core32_ChaCha20_Ctx:: |
public | function | ParagonIE_Sodium_Core_ChaCha20_Ctx constructor. | 1 |
ParagonIE_Sodium_Core_Util:: |
public static | function | ||
ParagonIE_Sodium_Core_Util:: |
public static | function | Convert a binary string into a hexadecimal string without cache-timing leaks | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Convert a binary string into a hexadecimal string without cache-timing leaks, returning uppercase letters (as per RFC 4648) | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Cache-timing-safe variant of ord() | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Compares two strings. | |
ParagonIE_Sodium_Core_Util:: |
public static | function | If a variable does not match a given type, throw a TypeError. | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Evaluate whether or not two strings are equal (in constant-time) | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Convert a hexadecimal string into a binary string without cache-timing leaks | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Turn an array of integers into a string | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Cache-timing-safe variant of ord() | |
ParagonIE_Sodium_Core_Util:: |
protected static | function | Returns whether or not mbstring.func_overload is in effect. | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Load a 8 character substring into an integer | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Load a 3 character substring into an integer | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Load a 4 character substring into an integer | |
ParagonIE_Sodium_Core_Util:: |
public static | function | @internal You should not use this directly from another application | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Multiply two integers in constant-time | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Convert any arbitrary numbers into two 32-bit integers that represent a 64-bit integer. | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Store a 32-bit integer into a string, treating it as little-endian. | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Stores a 64-bit integer as an string, treating it as little-endian. | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Store a 24-bit integer into a string, treating it as big-endian. | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Store a 32-bit integer into a string, treating it as big-endian. | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Turn a string into an array of integers | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Safe string length | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Safe substring | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Compare a 16-character byte string in constant time. | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Compare a 32-character byte string in constant time. | |
ParagonIE_Sodium_Core_Util:: |
public static | function | Calculate $a ^ $b for two strings. |