public function ParagonIE_Sodium_Core32_Int64::rotateLeft in Automatic Updates 7
Same name and namespace in other branches
- 8 vendor/paragonie/sodium_compat/src/Core32/Int64.php \ParagonIE_Sodium_Core32_Int64::rotateLeft()
@psalm-suppress MixedArrayAccess
Parameters
int $c:
Return value
Throws
SodiumException
TypeError
File
- vendor/
paragonie/ sodium_compat/ src/ Core32/ Int64.php, line 581
Class
- ParagonIE_Sodium_Core32_Int64
- Class ParagonIE_Sodium_Core32_Int64
Code
public function rotateLeft($c = 0) {
ParagonIE_Sodium_Core32_Util::declareScalarType($c, 'int', 1);
/** @var int $c */
$c = (int) $c;
$return = new ParagonIE_Sodium_Core32_Int64();
$return->unsignedInt = $this->unsignedInt;
$c &= 63;
if ($c === 0) {
// NOP, but we want a copy.
$return->limbs = $this->limbs;
}
else {
/** @var array<int, int> $limbs */
$limbs =& $return->limbs;
/** @var array<int, int> $myLimbs */
$myLimbs =& $this->limbs;
/** @var int $idx_shift */
$idx_shift = $c >> 4 & 3;
/** @var int $sub_shift */
$sub_shift = $c & 15;
for ($i = 3; $i >= 0; --$i) {
/** @var int $j */
$j = $i + $idx_shift & 3;
/** @var int $k */
$k = $i + $idx_shift + 1 & 3;
$limbs[$i] = (int) (((int) $myLimbs[$j] << $sub_shift | (int) $myLimbs[$k] >> 16 - $sub_shift) & 0xffff);
}
}
return $return;
}